[
  {
    "path": ".antd-tools.config.js",
    "content": "const fs = require('fs');\nconst path = require('path');\n\nconst restCssPath = path.join(process.cwd(), 'components', 'style', 'reset.css');\nconst tokenStatisticPath = path.join(process.cwd(), 'components', 'version', 'token.json');\nconst tokenMetaPath = path.join(process.cwd(), 'components', 'version', 'token-meta.json');\n\nfunction finalizeCompile() {\n  if (fs.existsSync(path.join(__dirname, './es'))) {\n    fs.copyFileSync(restCssPath, path.join(process.cwd(), 'es', 'style', 'reset.css'));\n    fs.copyFileSync(tokenStatisticPath, path.join(process.cwd(), 'es', 'version', 'token.json'));\n    fs.copyFileSync(tokenMetaPath, path.join(process.cwd(), 'es', 'version', 'token-meta.json'));\n  }\n\n  if (fs.existsSync(path.join(__dirname, './lib'))) {\n    fs.copyFileSync(restCssPath, path.join(process.cwd(), 'lib', 'style', 'reset.css'));\n    fs.copyFileSync(tokenStatisticPath, path.join(process.cwd(), 'lib', 'version', 'token.json'));\n    fs.copyFileSync(tokenMetaPath, path.join(process.cwd(), 'lib', 'version', 'token-meta.json'));\n  }\n}\n\nfunction finalizeDist() {\n  if (fs.existsSync(path.join(__dirname, './dist'))) {\n    fs.copyFileSync(restCssPath, path.join(process.cwd(), 'dist', 'reset.css'));\n  }\n}\n\nmodule.exports = {\n  compile: {\n    finalize: finalizeCompile,\n  },\n  dist: {\n    finalize: finalizeDist,\n  },\n  bail: true,\n};\n"
  },
  {
    "path": ".codecov.yml",
    "content": "codecov:\n  branch: master\n"
  },
  {
    "path": ".editorconfig",
    "content": "# 🎨 editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_style = space\nindent_size = 2\ntrim_trailing_whitespace = true\ninsert_final_newline = true"
  },
  {
    "path": ".eslintignore",
    "content": "node_modules/\n**/*.spec.*\n**/style/\n*.html\n/components/test/*\nes/\nlib/\n_site/\ndist/\nsite/dist/\ncomponents/version/version.ts\nsite/src/router/demoRoutes.js\nlocale/"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    node: true,\n    jasmine: true,\n    jest: true,\n    es6: true,\n  },\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    parser: 'babel-eslint',\n  },\n  extends: [\n    'plugin:vue/vue3-recommended',\n    'plugin:import/recommended',\n    'plugin:import/typescript',\n    '@vue/typescript/recommended',\n    '@vue/prettier',\n    // 'prettier',\n  ],\n  // extends: [\n  //   'eslint:recommended',\n  //   'plugin:vue/vue3-recommended',\n  //   '@vue/typescript/recommended',\n  //   '@vue/prettier',\n  // ],\n  plugins: ['markdown', 'jest', '@typescript-eslint', 'import'],\n  globals: {\n    h: true,\n    defineProps: 'readonly',\n  },\n  overrides: [\n    {\n      files: ['*.md'],\n      processor: 'markdown/markdown',\n      rules: {\n        'no-console': 'off',\n      },\n    },\n    {\n      files: ['*.ts', '*.tsx'],\n      // extends: ['@vue/typescript/recommended', '@vue/prettier'],\n      parserOptions: {\n        project: './tsconfig.json',\n      },\n      rules: {\n        '@typescript-eslint/ban-types': 0,\n        '@typescript-eslint/consistent-type-imports': 'error',\n        '@typescript-eslint/explicit-module-boundary-types': 0,\n        '@typescript-eslint/no-empty-function': 0,\n        '@typescript-eslint/no-non-null-assertion': 0,\n        '@typescript-eslint/no-unused-vars': [\n          'error',\n          { vars: 'all', args: 'after-used', ignoreRestSiblings: true },\n        ],\n        '@typescript-eslint/ban-ts-comment': 0,\n      },\n    },\n    {\n      files: ['*.vue'],\n      parser: 'vue-eslint-parser',\n      parserOptions: {\n        parser: '@typescript-eslint/parser',\n        ecmaVersion: 2021,\n      },\n      rules: {\n        'no-console': 'off',\n        'vue/no-reserved-component-names': 'off',\n      },\n    },\n  ],\n  rules: {\n    '@typescript-eslint/no-explicit-any': 0,\n    '@typescript-eslint/no-empty-function': 0,\n    '@typescript-eslint/no-unused-vars': [\n      'error',\n      { vars: 'all', args: 'after-used', ignoreRestSiblings: true, argsIgnorePattern: '^_' },\n    ],\n    'import/no-named-as-default': 'off',\n    'import/namespace': [2, { allowComputed: true }],\n    'import/no-named-as-default-member': 'off',\n    'import/no-unresolved': [2, { ignore: ['ant-design-vue'] }],\n    'comma-dangle': [2, 'always-multiline'],\n    'no-var': 'error',\n    'no-console': [2, { allow: ['warn', 'error'] }],\n    'object-shorthand': 2,\n    'no-unused-vars': [2, { ignoreRestSiblings: true, argsIgnorePattern: '^_' }],\n    'no-undef': 2,\n    camelcase: 'off',\n    'no-extra-boolean-cast': 'off',\n    semi: ['error', 'always'],\n    'vue/no-v-html': 'off',\n    'vue/require-explicit-emits': 'off',\n    'vue/require-prop-types': 'off',\n    'vue/require-default-prop': 'off',\n    'vue/no-reserved-keys': 'off',\n    'vue/comment-directive': 'off',\n    'vue/prop-name-casing': 'off',\n    'vue/one-component-per-file': 'off',\n    'vue/custom-event-name-casing': 'off',\n    'vue/v-on-event-hyphenation': 'off',\n    'vue/max-attributes-per-line': [\n      2,\n      {\n        singleline: 20,\n        multiline: 1,\n      },\n    ],\n    'vue/multi-word-component-names': 'off',\n  },\n};\n"
  },
  {
    "path": ".gitattributes",
    "content": "*.jsx linguist-language=Vue\n*.tsx linguist-language=Vue\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # [tangjinzhou]\nopen_collective: ant-design-vue\npatreon: tangjinzhou\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: true\ncontact_links:\n  - name: Create new issue\n    url: https://vuecomponent.github.io/issue-helper/\n    about: Please use the following link to create a new issue.\n  - name: Patreon\n    url: https://www.patreon.com/tangjinzhou\n    about: Love Ant Design Vue? Please consider supporting us via Patreon.\n  - name: Open Collective\n    url: https://opencollective.com/ant-design-vue/donate\n    about: Love Ant Design Vue? Please consider supporting us via Open Collective.\n  - name: Paypal\n    url: https://www.paypal.me/tangjinzhou\n    about: Love Ant Design Vue? Please consider supporting us via Paypal.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE/pr_cn.md",
    "content": "首先，感谢你的贡献！ 😄\n\n新特性请提交至 feature 分支，其余可提交至 main 分支。在一个维护者审核通过后合并。请确保填写以下 pull request 的信息，谢谢！~\n\n[[English Template / 英文模板](./pr_en.md)]\n\n### 这个变动的性质是\n\n- [ ] 新特性提交\n- [ ] 日常 bug 修复\n- [ ] 站点、文档改进\n- [ ] 组件样式改进\n- [ ] TypeScript 定义更新\n- [ ] 重构\n- [ ] 代码风格优化\n- [ ] 分支合并\n- [ ] 其他改动（是关于什么的改动？）\n\n### 需求背景\n\n> 1. 描述相关需求的来源。\n> 2. 要解决的问题。\n> 3. 相关的 issue 讨论链接。\n\n### 实现方案和 API（非新功能可选）\n\n> 1. 基本的解决思路和其他可选方案。\n> 2. 列出最终的 API 实现和用法。\n> 3. 涉及 UI/交互变动需要有截图或 GIF。\n\n### 对用户的影响和可能的风险（非新功能可选）\n\n> 1. 这个改动对用户端是否有影响？影响的方面有哪些？\n> 2. 是否有可能隐含的 break change 和其他风险？\n\n### Changelog 描述（非新功能可选）\n\n> 1. 英文描述\n> 2. 中文描述（可选）\n\n### 请求合并前的自查清单\n\n- [ ] 文档已补充或无须补充\n- [ ] 代码演示已提供或无须提供\n- [ ] TypeScript 定义已补充或无须补充\n- [ ] Changelog 已提供或无须提供\n\n### 后续计划（非新功能可选）\n\n> 如果这个提交后面还有相关的其他提交和跟进信息，可以写在这里。\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE/pr_en.md",
    "content": "First of all, thank you for your contribution! 😄\n\nNew feature please send pull request to feature branch, and rest to main branch. Pull request will be merged after one of collaborators approve. Please makes sure that these form are filled before submitting your pull request, thank you!\n\n[[中文版模板 / Chinese template](./pr_cn.md)]\n\n### This is a ...\n\n- [ ] New feature\n- [ ] Bug fix\n- [ ] Site / document update\n- [ ] Component style update\n- [ ] TypeScript definition update\n- [ ] Refactoring\n- [ ] Code style optimization\n- [ ] Branch merge\n- [ ] Other (about what?)\n\n### What's the background?\n\n> 1. Describe the source of requirement.\n> 2. Resolve what problem.\n> 3. Related issue link.\n\n### API Realization (Optional if not new feature)\n\n> 1. Basic thought of solution and other optional proposal.\n> 2. List final API realization and usage sample.\n> 3. GIF or snapshot should be provided if includes UI/interactive modification.\n\n### What's the effect? (Optional if not new feature)\n\n> 1. Does this PR affect user? Which part will be affected?\n> 2. What will say in changelog?\n> 3. Does this PR contains potential break change or other risk?\n\n### Changelog description (Optional if not new feature)\n\n> 1. English description\n> 2. Chinese description (optional)\n\n### Self Check before Merge\n\n- [ ] Doc is updated/provided or not needed\n- [ ] Demo is updated/provided or not needed\n- [ ] TypeScript definition is updated/provided or not needed\n- [ ] Changelog is provided or not needed\n\n### Additional Plan? (Optional if not new feature)\n\n> If this PR related with other PR or following info. You can type here.\n"
  },
  {
    "path": ".github/issue-close-app.yml",
    "content": "comment: \"Your issue has been closed because it does not conform to our issue requirements. Please use the [Issue Helper](https://vuecomponent.github.io/issue-helper/) to create an issue, thank you!  <br/><br/> 为了能够进行高效沟通，我们对 issue 有一定的格式要求，你的 issue 因为不符合要求而被自动关闭。你可以通过 [issue 助手](https://vuecomponent.github.io/issue-helper/) 来创建 issue 以方便我们定位错误。谢谢配合！\"\nissueConfigs:\n- content:\n  - \"<!-- generated by issue-helper. DO NOT REMOVE -->\"\n- content:\n  - \"Version\"\n  - \"Environment\"\n  - \"Reproduction link\"\n  - \"Steps to reproduce\"\n  - \"What is expected\"\n  - \"What is actually happening\"\n- content:\n  - \"What problem does this feature solve\"\n  - \"What does the proposed API look like\"\n"
  },
  {
    "path": ".github/workflows/cloudflare.yml",
    "content": "name: Build and Deploy to Cloudflare\non:\n  push:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    name: Build Application\n    permissions:\n      contents: read\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v5\n        with:\n          fetch-depth: 0\n\n      - name: Setup Node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: Install dependencies\n        run: npm install --force\n\n      - name: Build application\n        run: npm run build\n\n      - name: Upload build artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: build-files\n          path: site/dist/\n          retention-days: 1\n\n  deploy:\n    runs-on: ubuntu-latest\n    name: Deploy to Cloudflare\n    needs: build\n    permissions:\n      contents: read\n      deployments: write\n    steps:\n      - name: Checkout (for config files)\n        uses: actions/checkout@v5\n        with:\n          sparse-checkout: |\n            wrangler.jsonc\n          sparse-checkout-cone-mode: false\n\n      - name: Download build artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: build-files\n          path: site/dist/\n\n      - name: Deploy (Workers + Static Assets)\n        uses: cloudflare/wrangler-action@v3.14.1\n        with:\n          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} \n          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}\n          command: deploy --config wrangler.jsonc\n          gitHubToken: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/codecov.yml",
    "content": "name: codecov\n\non: [push]\n\njobs:\n  setup:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: cache package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: create package-lock.json\n        run: npm i --package-lock-only --ignore-scripts\n\n      - name: hack for singe file\n        run: |\n          if [ ! -d \"package-temp-dir\" ]; then\n            mkdir package-temp-dir\n          fi\n          cp package-lock.json package-temp-dir\n\n      - name: cache node_modules\n        id: node_modules_cache_id\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: install\n        if: steps.node_modules_cache_id.outputs.cache-hit != 'true'\n        run: npm ci\n\n  node:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n        # with:\n        #   token: ${{ secrets.ACCESS_TOKEN }}\n      # - name: Checkout submodules\n      #   uses: actions/checkout@v2\n      #   with:\n      #     repository: tangjinzhou/antdv-demo\n      #     token: ${{ secrets.ACCESS_TOKEN }}\n      #     path: antdv-demo\n      #     submodules: true\n\n      - name: restore cache from package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: restore cache from node_modules\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: Generate coverage report\n        run: npm test\n        env:\n          COVERAGE: \"true\"\n\n      - name: Upload coverage to Codecov\n        uses: codecov/codecov-action@v1\n        with:\n          token: ${{ secrets.CODECOV_TOKEN }}\n\n    needs: setup\n"
  },
  {
    "path": ".github/workflows/emoji-helper.yml",
    "content": "name: Emoji Helper\n\non:\n  release:\n    types: [published]\n\njobs:\n  emoji:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions-cool/emoji-helper@v1.0.0\n        with:\n          type: 'release'\n          emoji: '+1, laugh, heart, hooray, rocket, eyes'\n"
  },
  {
    "path": ".github/workflows/issue-close-require.yml",
    "content": "name: Issue Close Require\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\npermissions:\n  contents: read\n  \njobs:\n  close-issues:\n    runs-on: ubuntu-latest\n    steps:\n      - name: need reproduce\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'close-issues'\n          labels: '🤔 Need Reproduce'\n          inactive-day: 7\n          body: |\n            Since the issue was labeled with `Need Reproduce`, but no response in 7 days. This issue will be closed. If you have any questions, you can comment and reply.\n\n            由于该 issue 被标记为需要复现信息，却 7 天未收到回应。现关闭 issue，若有任何问题，可评论回复。\n"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "content": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\npermissions:\n  contents: read\n\njobs:\n  issue-labeled:\n    permissions:\n      issues: write  # for actions-cool/issues-helper to update issues\n      pull-requests: write  # for actions-cool/issues-helper to update PRs\n    runs-on: ubuntu-latest\n    steps:\n      - name: Need Reproduce\n        if: github.event.label.name == '🤔 Need Reproduce'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hello @${{ github.event.issue.user.login }}. Please provide a online reproduction by forking this [link for vue2](https://codesandbox.io/s/2wpk21kzvr)、 [link for vue3](https://codesandbox.io/s/agitated-franklin-1w72v) or a minimal GitHub repository. Make sure to choose the correct version.\n\n            你好 @${{ github.event.issue.user.login }}, 我们需要你提供一个在线的重现实例以便于我们帮你排查问题。你可以通过点击 [此处 for vue2](https://codesandbox.io/s/2wpk21kzvr)、 [此处 for vue3](https://codesandbox.io/s/agitated-franklin-1w72v) 创建一个 codesandbox 或者提供一个最小化的 GitHub 仓库。请确保选择准确的版本。\n      \n      - name: help wanted\n        if: github.event.label.name == 'help wanted'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hello @${{ github.event.issue.user.login }}. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please send your Pull Request to proper branch, fill the Pull Request Template here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution!\n\n            你好 @${{ github.event.issue.user.login }}，我们完全同意你的提议/反馈，欢迎直接在此仓库创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支，务必填写 Pull Request 内的预设模板，提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等，并确保 CI 通过，我们会尽快进行 Review，提前感谢和期待您的贡献。\n\n      - name: Usage\n        if: github.event.label.name == 'Usage'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment, close-issue'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hello @${{ github.event.issue.user.login }}, we use GitHub issues to trace bugs or discuss plans of Ant Design Vue. So, please don't ask usage questions here. You can try to open a new discussion in [antdv discussions](https://github.com/vueComponent/ant-design-vue/discussions), select `Q&A` to ask questions, also can ask questions on [Stack Overflow](http://stackoverflow.com/questions/) or [Segment Fault](https://segmentfault.com).\n\n            你好 @${{ github.event.issue.user.login }}，Ant Design Vue Issue 板块是用于 bug 反馈与需求讨论的地方。请勿询问如何使用的问题，你可以试着在 [antdv discussions](https://github.com/vueComponent/ant-design-vue/discussions) 新开一个 discussion，选择 `Q&A` 类别进行提问，也可以在 [Stack Overflow](http://stackoverflow.com/questions/) 或者 [Segment Fault](https://segmentfault.com/) 中提问。\n\n      - name: 1.x\n        if: github.event.label.name == '1.x'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment,close-issue'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hi @${{ github.event.issue.user.login }}. Current version (1.x) is off the maintenance period. We may not accept pull request or fix bug with it anymore. This topic will be auto closed.\n\n            你好 @${{ github.event.issue.user.login }}，当前版本（1.x）已经过了维护期。我们不会再接受对其的相关 PR 与 issue。当前 topic 会被自动关闭。\n\n      - name: 2.x\n        if: github.event.label.name == '2.x'\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment,close-issue'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            Hi @${{ github.event.issue.user.login }}. Current version (2.x) is off the maintenance period. We may not accept pull request or fix bug with it anymore. This topic will be auto closed.\n\n            你好 @${{ github.event.issue.user.login }}，当前版本（2.x）已经过了维护期。我们不会再接受对其的相关 PR 与 issue。当前 topic 会被自动关闭。\n  \n"
  },
  {
    "path": ".github/workflows/issue-open-check.yml",
    "content": "name: Issue Open Check\n\non:\n  issues:\n    types: [opened]\n\n\npermissions:\n  contents: read\n\njobs:\n  issue-open-check:\n    permissions:\n      contents: read  # for visiky/dingtalk-release-notify to get latest release\n      issues: write  # for actions-cool/issues-helper to update issues\n      pull-requests: write  # for actions-cool/issues-helper to update PRs\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions-cool/check-user-permission@v1.0.0\n        id: checkUser\n        with:\n          require: 'write'\n\n      - name: check invalid\n        if: (contains(github.event.issue.body, 'issue-helper') == false) && (steps.checkUser.outputs.result == 'false') \n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'create-comment,add-labels,close-issue'\n          issue-number: ${{ github.event.issue.number }}\n          labels: 'Invalid'\n          body: |\n            Hello @${{ github.event.issue.user.login }}, your issue has been closed because it does not conform to our issue requirements. Please use the [Issue Helper](https://vuecomponent.github.io/issue-helper/) to create an issue, thank you!\n\n            你好 @${{ github.event.issue.user.login }}，为了能够进行高效沟通，我们对 issue 有一定的格式要求，你的 issue 因为不符合要求而被自动关闭。你可以通过 [issue 助手](https://vuecomponent.github.io/issue-helper/) 来创建 issue 以方便我们定位错误。谢谢配合！\n"
  },
  {
    "path": ".github/workflows/lock-issue.yml",
    "content": "name: 'Lock threads'\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  lock:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: dessant/lock-threads@v2\n        with:\n          github-token: ${{ github.token }}\n          issue-lock-inactive-days: '365'\n          issue-lock-labels: 'outdated'\n          issue-lock-comment: >\n            This issue has been automatically locked since there\n            has not been any recent activity after it was closed.\n            Please open a new issue for related bugs.\n          pr-lock-comment: >\n            This pull request has been automatically locked since there\n            has not been any recent activity after it was closed.\n            Please open a new issue for related bugs."
  },
  {
    "path": ".github/workflows/stale.yml",
    "content": "name: \"Close stale issues\"\n\non:\n  schedule:\n  - cron: \"30 1 * * *\"\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/stale@v3\n      with:\n        repo-token: ${{ secrets.GITHUB_TOKEN }}\n        stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days'\n        stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days'\n        exempt-issue-labels: 'bug,enhancement'\n        days-before-stale: 60\n        days-before-close: 7\n\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: test\n\non: [push, pull_request]\n\njobs:\n  setup:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: cache package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: create package-lock.json\n        run: npm i --package-lock-only --ignore-scripts\n\n      - name: hack for singe file\n        run: |\n          if [ ! -d \"package-temp-dir\" ]; then\n            mkdir package-temp-dir\n          fi\n          cp package-lock.json package-temp-dir\n\n      - name: cache node_modules\n        id: node_modules_cache_id\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: install\n        if: steps.node_modules_cache_id.outputs.cache-hit != 'true'\n        run: npm ci\n\n  compile:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: restore cache from package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: restore cache from node_modules\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: cache lib\n        uses: actions/cache@v4\n        with:\n          path: lib\n          key: lib-${{ github.sha }}\n\n      - name: cache es\n        uses: actions/cache@v4\n        with:\n          path: es\n          key: es-${{ github.sha }}\n\n      - name: compile\n        run: npm run compile\n    needs: setup\n\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: restore cache from package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: restore cache from node_modules\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: lint\n        run: npm run lint\n    needs: setup\n\n  node:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: restore cache from package-lock.json\n        uses: actions/cache@v4\n        with:\n          path: package-temp-dir\n          key: lock-${{ github.sha }}\n\n      - name: restore cache from node_modules\n        uses: actions/cache@v4\n        with:\n          path: node_modules\n          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}\n\n      - name: test\n        run: npm test\n    needs: setup\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.vscode\n.env\n.idea\n.DS_Store\ndist\nlib\nes\n/locale\n_site\nyarn.lock\npackage-lock.json\npnpm-lock.yaml\n/coverage\n\n# 备份文件\n/components/test/*\nlist.txt\n\nsite/dev.js\n\n# IDE 语法提示临时文件\nvetur/\n\nreport.html\n\nsite/src/router/demoRoutes.js\n\ncomponents/version/version.ts\ncomponents/version/version.tsx\ncomponents/version/token.json\ncomponents/version/token-meta.json\n~component-api.json\n"
  },
  {
    "path": ".husky/.gitignore",
    "content": "_\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx --no-install pretty-quick --staged\n"
  },
  {
    "path": ".huskyrc",
    "content": "{\n  \"hooks\": {\n    \"pre-commit\": \"pretty-quick --staged\",\n    \"pre-publish\": \"npm run lint\",\n    \"commit-msg\": \"commitlint -x @commitlint/config-conventional -e $GIT_PARAMS\"\n  }\n}\n"
  },
  {
    "path": ".jest.js",
    "content": "const libDir = process.env.LIB_DIR;\n\nconst transformIgnorePatterns = [\n  '/dist/',\n  // Ignore modules without es dir.\n  // Update: @babel/runtime should also be transformed\n  // 'node_modules/(?!.*(@babel|lodash-es))',\n  'node_modules/(?!@ant-design/icons-vue|@ant-design/icons-svg|lodash-es)/',\n];\nconst testPathIgnorePatterns = ['/node_modules/', 'node'];\n\nfunction getTestRegex(libDir) {\n  if (libDir === 'dist') {\n    return 'demo\\\\.test\\\\.js$';\n  }\n  return '.*\\\\.test\\\\.(j|t)sx?$';\n}\nmodule.exports = {\n  verbose: true,\n  setupFiles: ['./tests/setup.js'],\n  setupFilesAfterEnv: ['./tests/setupAfterEnv.ts'],\n  moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json', 'vue', 'md', 'jpg'],\n  modulePathIgnorePatterns: ['/_site/'],\n  testPathIgnorePatterns: testPathIgnorePatterns,\n  transform: {\n    '\\\\.(vue|md)$': '<rootDir>/node_modules/@vue/vue3-jest',\n    '\\\\.(js|jsx)$': '<rootDir>/node_modules/babel-jest',\n    '\\\\.(ts|tsx)$': '<rootDir>/node_modules/ts-jest',\n    '\\\\.svg$': '<rootDir>/node_modules/jest-transform-stub',\n  },\n  testRegex: getTestRegex(libDir),\n  moduleNameMapper: {\n    '^@/(.*)$/': '<rootDir>/$1',\n    '^ant-design-vue$': '<rootDir>/components/index',\n    '^ant-design-vue/es/(.*)$': '<rootDir>/components/$1',\n  },\n  snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],\n  collectCoverage: process.env.COVERAGE === 'true',\n  collectCoverageFrom: [\n    'components/**/*.{js,jsx,vue}',\n    '!components/*/__tests__/**/type.{js,jsx}',\n    '!components/vc-*/**/*',\n    '!components/*/demo/**/*',\n    '!components/_util/**/*',\n    '!components/align/**/*',\n    '!components/trigger/**/*',\n    '!**/node_modules/**',\n  ],\n  testEnvironment: 'jsdom',\n  testEnvironmentOptions: {\n    url: 'http://localhost',\n    customExportConditions: ['node', 'node-addons'],\n  },\n  transformIgnorePatterns,\n  globals: {\n    'ts-jest': {\n      babelConfig: true,\n    },\n  },\n};\n"
  },
  {
    "path": ".npmrc",
    "content": "enable-pre-post-scripts=true\n"
  },
  {
    "path": ".prettierignore",
    "content": "**/*.svg\nlib/\nes/\ndist/\n_site/\ncoverage/\nCNAME\nLICENSE\nyarn.lock\nnetlify.toml\nyarn-error.log\n*.sh\n*.snap\n.gitignore\n.npmignore\n.prettierignore\n.DS_Store\n.editorconfig\n.eslintignore\n**/*.yml\n**/assets\n.gitattributes\n.stylelintrc\n.vcmrc\n.png\n.npmrc.template\n.huskyrc\n.gitmodules\n*.png\nv2-doc/\n\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"singleQuote\": true,\n  \"trailingComma\": \"all\",\n  \"endOfLine\": \"lf\",\n  \"printWidth\": 100,\n  \"proseWrap\": \"never\",\n  \"arrowParens\": \"avoid\",\n  \"htmlWhitespaceSensitivity\": \"ignore\",\n  \"overrides\": [\n    {\n      \"files\": \".prettierrc\",\n      \"options\": {\n        \"parser\": \"json\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": ".stylelintrc",
    "content": "{\n  \"extends\": [\"stylelint-config-standard\", \"stylelint-config-prettier\"],\n  \"rules\": {\n    \"comment-empty-line-before\": null,\n    \"declaration-empty-line-before\": null,\n    \"function-comma-newline-after\": null,\n    \"function-name-case\": null,\n    \"function-parentheses-newline-inside\": null,\n    \"function-max-empty-lines\": null,\n    \"function-whitespace-after\": null,\n    \"indentation\": null,\n    \"number-leading-zero\": null,\n    \"number-no-trailing-zeros\": null,\n    \"rule-empty-line-before\": null,\n    \"selector-combinator-space-after\": null,\n    \"selector-list-comma-newline-after\": null,\n    \"selector-pseudo-element-colon-notation\": null,\n    \"unit-no-unknown\": null,\n    \"value-list-max-empty-lines\": null,\n    \"font-family-no-missing-generic-family-keyword\": null,\n    \"no-descending-specificity\": null\n  }\n}\n"
  },
  {
    "path": ".stylelintrc.json",
    "content": "{\n  \"extends\": [\n    \"stylelint-config-standard\",\n    \"stylelint-config-rational-order\",\n    \"stylelint-config-prettier\"\n  ],\n  \"customSyntax\": \"postcss-less\",\n  \"plugins\": [\"stylelint-declaration-block-no-ignored-properties\"],\n  \"rules\": {\n    \"function-name-case\": [\"lower\"],\n    \"function-no-unknown\": [\n      true,\n      {\n        \"ignoreFunctions\": [\n          \"fade\",\n          \"fadeout\",\n          \"tint\",\n          \"darken\",\n          \"ceil\",\n          \"fadein\",\n          \"floor\",\n          \"unit\",\n          \"shade\",\n          \"lighten\",\n          \"percentage\",\n          \"-\"\n        ]\n      }\n    ],\n    \"import-notation\": null,\n    \"no-descending-specificity\": null,\n    \"no-invalid-position-at-import-rule\": null,\n    \"declaration-empty-line-before\": null,\n    \"keyframes-name-pattern\": null,\n    \"custom-property-pattern\": null,\n    \"number-max-precision\": 8,\n    \"alpha-value-notation\": \"number\",\n    \"color-function-notation\": \"legacy\",\n    \"selector-class-pattern\": null,\n    \"selector-id-pattern\": null,\n    \"selector-not-notation\": null\n  }\n}\n"
  },
  {
    "path": ".vcmrc",
    "content": "{\n  \"helpMessage\": \"\\nPlease fix your commit message (and consider using https://www.npmjs.com/package/commitizen)\\n\",\n  \"types\": [\n    \"feat\",\n    \"fix\",\n    \"docs\",\n    \"style\",\n    \"refactor\",\n    \"perf\",\n    \"test\",\n    \"chore\",\n    \"revert\",\n    \"ci\"\n  ],\n  \"warnOnFail\": false,\n  \"autoFix\": false\n}\n"
  },
  {
    "path": "BACKERS.md",
    "content": "<h1 align=\"center\">Sponsors &amp; Backers</h1>\n\n<br><br>\n\n<h2 align=\"center\">企业赞助</h2>\n<p align=\"center\">\n  <a href=\"http://www.powerproject.com.cn/\" target=\"_blank\"><img  width=\"193\" src=\"http://www.powerproject.com.cn/wp-content/uploads/2019/08/2019080215041192.png\" title=\"donation by wechat\"></a>\n</p>\n\n<h2 align=\"center\">Sponsors</h2>\n<p align=\"center\">\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/0/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/1/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/2/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/3/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/4/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/5/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/6/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/7/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/8/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/9/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/10/avatar.svg\"></a>\n</p>\n\n<h2 align=\"center\">Backers</h2>\n<p align=\"center\">\n  <a href=\"https://github.com/chuzhixin/vue-admin-beautiful\" target=\"_blank\"><img width=\"64\" style=\"border-radius: 50%;\" src=\"https://gitee.com/chu1204505056/image/raw/master/vue-admin-beautiful.png\" title=\"vue-admin-beautiful\"></a>\n  <a href=\"https://github.com/limichange\" target=\"_blank\"><img width=\"64\" style=\"border-radius: 50%;\" src=\"https://avatars0.githubusercontent.com/u/1947344?s=400&v=4\" title=\"limichange donation total 24$ by qq from 2018.9\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/0/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/1/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/2/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/3/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/4/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/5/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/6/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/7/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/8/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/9/avatar.svg\"></a>\n  <a href=\"https://opencollective.com/ant-design-vue/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/10/avatar.svg\"></a>\n</p>\n\n<h2 align=\"center\">Patreon</h2>\n\n<p align=\"center\">\n<a href=\"https://www.mokeyjay.com\" target=\"_blank\"><img  width=\"64\" style=\"border-radius: 50%;\" src=\"https://www.mokeyjay.com/headimg.png\" title=\"donation by Patreon\"></a>\n</p>\n\n<h2 align=\"center\">支付宝/微信</h2>\n\n### 使用支付宝/微信的赞助的用户，如需要添加名单，赞助后可发 github 账号到邮箱(antdv@foxmail.com)\n\n- [fastgoo](https://github.com/fastgoo)\n- [sendya](https://github.com/sendya)\n- [limichange](https://github.com/limichange)\n- [LvHang](https://github.com/184005306)\n"
  },
  {
    "path": "CHANGELOG.en-US.md",
    "content": "# Change Log (The following content is translated by Google)\n\n`ant-design-vue` strictly follows [Semantic Versioning 2.0.0](http://semver.org/).\n\n#### Release Schedule\n\n- Weekly release: patch version at the end of every week for routine bugfix (anytime for urgent bugfix).\n- Monthly release: minor version at the end of every month for new features.\n- Major version release is not included in this schedule for breaking change and new features.\n\n---\n\n## 4.2.6\n\n- 🐞 Fix Modal component aria-hidden error problem under chrome [#7823](https://github.com/vueComponent/ant-design-vue/issues/7823)\n- 🐞 Fix the problem that the built-in input method of Safari automatically fills in the decimal point when inputting Chinese [#7918](https://github.com/vueComponent/ant-design-vue/issues/7918)\n- 🐞 Fix InputNumber component disabled style problem [#7776](https://github.com/vueComponent/ant-design-vue/issues/7776)\n- 🐞 Fix Select cannot lose focus problem [#7819](https://github.com/vueComponent/ant-design-vue/issues/7819)\n\n## 4.2.5\n\n- 🐞 Fix Empty component memory leak problem\n- 🐞 Fix Image width & height property not working problem\n\n## 4.2.4\n\n- 🐞 Fix Wave memory leak problem\n\n## 4.2.3\n\n- 🌟 TourStep custom Button, support function children [#7628](https://github.com/vueComponent/ant-design-vue/pull/7628)\n- 🐞 Fix the problem that the input value is hidden in Select and Cascader search multi-select mode [#7640](https://github.com/vueComponent/ant-design-vue/issues/7640)\n\n## 4.2.2\n\n- 🐞 Fix TreeSelect placeholder slot invalid [#7545](https://github.com/vueComponent/ant-design-vue/issues/7545)\n- 🐞 Fix Tree slot responsive invalid issue [40ad45](https://github.com/vueComponent/ant-design-vue/commit/40ad45bc05b2bf9d0a2445d9f6ff365468ba90b7)\n- 🐞 Fix FloatButton target type error issue [#7576](https://github.com/vueComponent/ant-design-vue/issues/7576)\n- 🐞 Fix FormItem className error issue [#7582](https://github.com/vueComponent/ant-design-vue/issues/7582)\n- 🐞 Fix Input Cannot input problem under lazy [#7543](https://github.com/vueComponent/ant-design-vue/issues/7543)\n- 🐞 Fix the problem that placeholder is not hidden when inputting Chinese in Select [#7611](https://github.com/vueComponent/ant-design-vue/issues/7611)\n- 🐞 Fix the problem that the pop-up window flashes when clicking the preset option in DatePicker [#7550](https://github.com/vueComponent/ant-design-vue/issues/7550)\n\n## 4.2.1\n\n- 🐞 fix Input clear action error [#7523](https://github.com/vueComponent/ant-design-vue/issues/7523)\n\n## 4.2.0\n\n- 🌟 Optimize the textColor change when the layout component switches to dark mode [#7498](https://github.com/vueComponent/ant-design-vue/issues/7498)\n- 🌟 Tooltip added arrow hidden configuration [#7459](https://github.com/vueComponent/ant-design-vue/issues/7459)\n- 🌟 Optimize Table hover performance [#7451](https://github.com/vueComponent/ant-design-vue/issues/7451)\n- 🐞 Fixed the problem of changing the model during useForm verification, resulting in verification errors [#ffd4d8](https://github.com/vueComponent/ant-design-vue/commit/ffd4d8fe927f9ea40cbb6358ad997c447bd9a74e)\n- 🐞 Fix Tabs folding calculation error issue [#7491](https://github.com/vueComponent/ant-design-vue/issues/7491)\n- 🐞 Fix Qrcode missing type hint issue [#7502](https://github.com/vueComponent/ant-design-vue/issues/7502)\n- 🐞 Fix Menu rendering error under SSR [#7349](https://github.com/vueComponent/ant-design-vue/issues/7349)\n- 🐞 Fix Select and Cascader rendering errors under SSR [#7377](https://github.com/vueComponent/ant-design-vue/issues/7377)\n- 🐞 Fix AutoComplete missing option slot declaration issue [#7396](https://github.com/vueComponent/ant-design-vue/issues/7396)\n- 🐞 Fix Textarea autoSize not taking effect [#7478](https://github.com/vueComponent/ant-design-vue/issues/7478)\n- 🐞 Fix Pagination’s Enter key triggering two page turns [#7368](https://github.com/vueComponent/ant-design-vue/issues/7368)\n- 🐞 Fix the problem of Chinese input in the input box [#7391](https://github.com/vueComponent/ant-design-vue/issues/7391)[#7516](https://github.com/vueComponent/ant- design-vue/issues/7516)\n- 🐞 Fix Carousel beforeChange current parameter error issue [#7419](https://github.com/vueComponent/ant-design-vue/issues/7419)\n\n## 4.1.2\n\n- 🐞 Fix table resize error reporting under vue 3.4 [#7291](https://github.com/vueComponent/ant-design-vue/issues/7291)\n- 🐞 Fix the problem that the Segmented title attribute is not displayed [#7302](https://github.com/vueComponent/ant-design-vue/issues/7302)\n\n## 4.1.1\n\n- 🌟 QRcode adds scanned status [#7242](https://github.com/vueComponent/ant-design-vue/issues/7242)\n- 🐞 Fix css prefix issue in nuxt [#7256](https://github.com/vueComponent/ant-design-vue/issues/7256)\n- 🐞 Fix dropdown closing issue [#7246](https://github.com/vueComponent/ant-design-vue/issues/7246)\n- 🐞 Fix divider vertical dashed not display issue [#7218](https://github.com/vueComponent/ant-design-vue/issues/7218)\n- 🐞 Fix hook mode message console warning issue [#7281](https://github.com/vueComponent/ant-design-vue/issues/7281)\n- 🐞 Fix table expansion error reporting under vue 3.4 [#7265](https://github.com/vueComponent/ant-design-vue/issues/7265)\n- 🐞 Fix table group filter status error issue [#7233](https://github.com/vueComponent/ant-design-vue/issues/7233)\n\n## 4.1.0\n\n- 🐞 support vue 3.4 [#7239](https://github.com/vueComponent/ant-design-vue/issues/7239)\n\n## 4.0.8\n\n- 🐞 Fix theme responsiveness failure issue under Nuxt [#7180](https://github.com/vueComponent/ant-design-vue/issues/7180)\n- 🐞 Fix error reporting caused by Wave [#7108](https://github.com/vueComponent/ant-design-vue/issues/7108)\n- 🐞 Fix Upload disabled inheritance issue [#7110](https://github.com/vueComponent/ant-design-vue/issues/7110)\n- 🐞 Fix Tooltip popupAlign not taking effect [#7112](https://github.com/vueComponent/ant-design-vue/issues/7112)\n- 🐞 Fix Typography flashing problem [#7146](https://github.com/vueComponent/ant-design-vue/issues/7146)\n- 🐞 Fix the issue that RangePicker prevIcon nextIcon does not take effect [#7127](https://github.com/vueComponent/ant-design-vue/issues/7127)\n- 🐞 Fixed the issue of watermark not monitoring child element changes [#7149](https://github.com/vueComponent/ant-design-vue/issues/7149)\n- 🐞 Fix Menu animation missing issue [#7130](https://github.com/vueComponent/ant-design-vue/issues/7130)\n- 🐞 Fix the cursor change issue when TextArea autosize [#7121](https://github.com/vueComponent/ant-design-vue/issues/7121)\n\n## 4.0.7\n\n- 🌟 Added Flex component [#7052](https://github.com/vueComponent/ant-design-vue/issues/7052)\n- 🌟 ConfigProvider adds wave configuration [#7036](https://github.com/vueComponent/ant-design-vue/issues/7036)\n- 🌟 Watermark supports dark mode [#7067](https://github.com/vueComponent/ant-design-vue/issues/7067)\n- 🐞 Fix Space duplicate Key problem [#7048](https://github.com/vueComponent/ant-design-vue/issues/7048)\n- 🐞 Fix Upload disabled priority error issue [#7047](https://github.com/vueComponent/ant-design-vue/issues/7047)\n- 🐞 Fix Carousel rendering error in jsx [#7077](https://github.com/vueComponent/ant-design-vue/issues/7077)\n- 🐞 Fix Message offset position problem [#7093](https://github.com/vueComponent/ant-design-vue/issues/7093)\n- 🐞 Fix the problem of animation failure when using Collapse custom prefix [#7074](https://github.com/vueComponent/ant-design-vue/issues/7074)\n\n## 4.0.6\n\n- 🐞 Fix the Dropdown onVisibleChange failure issue introduced in 4.0.4 [#7031](https://github.com/vueComponent/ant-design-vue/issues/7031)\n\n## 4.0.5\n\n- 🐞 Fix cssinjs performance issue [#7023](https://github.com/vueComponent/ant-design-vue/issues/7023)\n\n## 4.0.4\n\n- 🌟 Added esm target file\n- 🌟 Added tooltip attribute to FormItem [#7014](https://github.com/vueComponent/ant-design-vue/issues/7014)\n- 🐞 Fix useMessage getContainer not taking effect [#6942](https://github.com/vueComponent/ant-design-vue/issues/6942)\n- 🐞 Fix the problem of Image triggering onPreviewVisibleChange event multiple times [#6945](https://github.com/vueComponent/ant-design-vue/issues/6945)\n- 🐞 Fix the problem that Checkbox global disabled does not take effect [#6970](https://github.com/vueComponent/ant-design-vue/issues/6970)\n- 🐞 Fix Drawer contentWrapperStyle not taking effect [#6983](https://github.com/vueComponent/ant-design-vue/issues/6983)\n- 🐞 Optimize Select Dropdown and other drop-down list scroll bar display hidden logic [#6987](https://github.com/vueComponent/ant-design-vue/issues/6987)\n- 🐞 Fix the problem of hiding when there are components such as input in the drop-down list such as Select Dropdown [#7020](https://github.com/vueComponent/ant-design-vue/issues/7020)\n\n## 4.0.3\n\n- 🐞 Fix the problem of style loss under shadow Dom [#6912](https://github.com/vueComponent/ant-design-vue/issues/6912)\n- 🐞 Upgrade Icon dependency and fix icon css missing problem under shadow Dom [#6914](https://github.com/vueComponent/ant-design-vue/issues/6914)\n\n## 4.0.2\n\n- 🐞 Fix useMessage causing body to be removed [#6880](https://github.com/vueComponent/ant-design-vue/issues/6880)\n- 🐞 Fix the problem that the water ripple effect does not disappear after Button loading is switched [#6895](https://github.com/vueComponent/ant-design-vue/issues/6895)\n- 🐞 Fixed the problem that flip does not reset after Image is closed [#6913](https://github.com/vueComponent/ant-design-vue/issues/6913)\n- 🐞 Fix ImageGroup animation effect loss problem [#6898](https://github.com/vueComponent/ant-design-vue/issues/6898)\n- 🐞 Fix Modal missing onUpdate:open attribute declaration [#6876](https://github.com/vueComponent/ant-design-vue/issues/6876)\n- 🐞 Fixed the issue of multiple clicks being triggered at the edge of Transfer's Checkbox [#6902](https://github.com/vueComponent/ant-design-vue/issues/6902)\n\n## 4.0.1\n\n- 🌟 FloatButton add Badge support [#6738](https://github.com/vueComponent/ant-design-vue/issues/6738)\n- 🌟 Image preview zoom in and out sensitivity adjustment [#6784](https://github.com/vueComponent/ant-design-vue/issues/6784)\n- 🌟 Add flip feature to Image [#6785](https://github.com/vueComponent/ant-design-vue/issues/6785)\n- 🌟 Add App component to provide context [#6735](https://github.com/vueComponent/ant-design-vue/issues/6735)\n- 🌟 Style extraction feature for SSR [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757)\n- 🌟 Support px2rem [#6817](https://github.com/vueComponent/ant-design-vue/issues/6817)\n- 🌟 Tag supports borderless mode [#6819](https://github.com/vueComponent/ant-design-vue/issues/6819)\n- 🌟 Avatar group mode supports shape [#6822](https://github.com/vueComponent/ant-design-vue/issues/6822)\n- 🌟 AutoComplete supports borderless and custom clearIcon [#6829](https://github.com/vueComponent/ant-design-vue/issues/6829)\n- 🌟 InputPassword supports controlled visible [#6863](https://github.com/vueComponent/ant-design-vue/issues/6863)\n- 🐞 Fix the style misalignment problem when InputGroup is large [#6866](https://github.com/vueComponent/ant-design-vue/issues/6866)\n- 🐞 Fix the problem that Checkable Tag cannot customize class [#6854](https://github.com/vueComponent/ant-design-vue/issues/6854)\n- 🐞 Fix the rendering problem in Tabs animation mode [#6855](https://github.com/vueComponent/ant-design-vue/issues/6855)\n- 🐞 Fix the problem that the Image height attribute does not take effect [#6840](https://github.com/vueComponent/ant-design-vue/issues/6840)\n- 🐞 Fix InputNumber trigger mouseup event [#6772](https://github.com/vueComponent/ant-design-vue/issues/6772)\n- 🐞 Fix the Dropdown style problem when Tabs are collapsed [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757)\n- 🐞 Fix Table expandedRowRender property does not take effect [#6783](https://github.com/vueComponent/ant-design-vue/issues/6783)\n- 🐞 Fix dayjs not packaged into dist [#6767](https://github.com/vueComponent/ant-design-vue/issues/6767)\n- 🐞 Fix clipPath browser compatibility issue [#6770](https://github.com/vueComponent/ant-design-vue/issues/6770)\n- 🐞 Fix Carousel autoplay responsive problem [#6768](https://github.com/vueComponent/ant-design-vue/issues/6768)\n- 🐞 Fix PageHeader ghost style problem [#6761](https://github.com/vueComponent/ant-design-vue/issues/6761)\n- 🐞 Fix Checkbox not triggering Form validation [#6741](https://github.com/vueComponent/ant-design-vue/issues/6741)\n- 🐞 Fix the problem that the Input prefix attribute does not take effect [#6810](https://github.com/vueComponent/ant-design-vue/issues/6810)\n- 🐞 Fix Badge style problem in Avatar [#6874](https://github.com/vueComponent/ant-design-vue/issues/6874)\n\n## 4.0\n\n### 🔥🔥🔥 4.0 official version released 🔥🔥🔥\n\n### Design specification adjustment\n\n- Basic rounded corner adjustment, changed from unified `2px` to four-level rounded corners, which are `2px` `4px` `6px` `8px` respectively, which are applied to different scenarios, for example, the rounded corners of the default size Button are adjusted to `6px`.\n- Main color adjustment, changed from `#1890ff` to `#1677ff`.\n- Overall shadow adjustment, from the original three-level shadow adjustment to two levels, which are used for resident page components (such as Card) and interactive feedback (such as Dropdown).\n- Adjust the internal spacing of some components.\n- Overall de-wireframing.\n\n### Add 5 new components\n\n- Segmented segment controller\n- WaterMark watermark\n- QrCode QR code\n- FloatButton floating button\n- Tour roaming guide\n\n### Technical adjustments\n\n- Deprecated less and adopted CSS-in-JS to better support dynamic themes.\n  - All less files are removed, and less variables no longer support leaking.\n  - css files are no longer included in the product. Since CSS-in-JS supports importing on demand, the original `ant-design-vue/dist/antd.css` has also been removed. If you need to reset some basic styles, please import `ant-design-vue/dist/reset .css`.\n  - If you need to reset the style of the component and don't want to introduce `ant-design-vue/dist/reset.css` to pollute the global style, you can try to use [App component](/components/app), to solve the problem that native elements do not have ant-design-vue specification style.\n- Removed css variables and dynamic theme schemes built on top of it.\n- LocaleProvider has been deprecated in 3.x (use `<ConfigProvider locale />` instead), we have completely removed the related directories `ant-design-vue/es/locale-provider`, `ant- design-vue/lib/locale-provider`.\n- `babel-plugin-import` is no longer supported, CSS-in-JS itself has the ability to load on demand, no longer need plug-in support.\n\n#### Component API adjustments\n\n- The classname API of the component popup is unified to `popupClassName`, and similar APIs such as `dropdownClassName` will be replaced.\n\n  - AutoComplete component\n  - Cascader component\n  - Select component\n  - TreeSelect component\n  - TimePicker component\n  - DatePicker component\n  - Mentions component\n\n- The controlled visibility API of the component popup is unified as `open`, and `visible` and other similar APIs will be replaced.\n  - Drawer component `visible` becomes `open`.\n  - Modal component `visible` becomes `open`.\n  - Dropdown component `visible` becomes `open`.\n  - Tooltip component `visible` becomes `open`.\n  - Tag component `visible` has been removed.\n  - Slider component `tooltip` related API converges to `tooltip` property.\n  - Table component `filterDropdownVisible` changed to `filterDropdownOpen`.\n- `getPopupContainer`: All `getPopupContainer` needs to ensure that the returned div is unique.\n- Drawer `style` and `class` are migrated to the Drawer popup area, and the original attributes are replaced by `rootClassName` and `rootStyle`.\n\n#### Component refactoring and removal\n\n- Remove the `locale-provider` directory. `LocaleProvider` has been removed in v4, please use `ConfigProvider` instead.\n\n- Remove `xxxl` breakpoint attribute in grid layout. `xxxl` attribute has been removed in v4, you can use [theme customization](/docs/vue/customize-theme) to modify `screen[XS|SM|MD|LG|XL|XXL]` to modify the break Point value achieved.\n\n- The BackTop component was deprecated in `4.0.0` and moved to the FloatButton floating button. If needed, it can be imported from FloatButton.\n\n### [Upgrade Guide](/docs/vue/migration-v4)\n\n## 3.x\n\nVisit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/3.x/CHANGELOG.zh-CN.md) `3.x` Change Log。\n\n## 2.x\n\nVisit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/2.x/CHANGELOG.zh-CN.md) `2.x` Change Log。\n\n## 1.x\n\nVisit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/1.x/CHANGELOG.en-US.md) to read change logs from `0.x` to `1.x`.\n"
  },
  {
    "path": "CHANGELOG.zh-CN.md",
    "content": "# 更新日志\n\n`ant-design-vue` 严格遵循 [Semantic Versioning 2.0.0](http://semver.org/lang/zh-CN/) 语义化版本规范。\n\n#### 发布周期\n\n- 修订版本号：每周末会进行日常 bugfix 更新。（如果有紧急的 bugfix，则任何时候都可发布）\n- 次版本号：每月发布一个带有新特性的向下兼容的版本。\n- 主版本号：含有破坏性更新和新特性，不在发布周期内。\n\n---\n\n## 4.2.6\n\n- 🐞 修复 Modal 组件在 chrome 下，aria-hidden 报错问题 [#7823](https://github.com/vueComponent/ant-design-vue/issues/7823)\n- 🐞 修复 Safari 下自带输入法 input 组件输入中文时，自动填写小数点问题 [#7918](https://github.com/vueComponent/ant-design-vue/issues/7918)\n- 🐞 修复 InputNumber 组件 disabled 样式问题 [#7776](https://github.com/vueComponent/ant-design-vue/issues/7776)\n- 🐞 修复 Select 无法失焦问题 [#7819](https://github.com/vueComponent/ant-design-vue/issues/7819)\n\n## 4.2.5\n\n- 🐞 修复 Empty 组件内存泄漏问题\n- 🐞 修复 Image width & height 属性不生效问题\n\n## 4.2.4\n\n- 🐞 修复 Wave 内存泄漏问题\n\n## 4.2.3\n\n- 🌟 TourStep 自定义 Button，支持函数 children [#7628](https://github.com/vueComponent/ant-design-vue/pull/7628)\n- 🐞 修复 Select 和 Cascader 搜索多选模式下，输入值被隐藏问题 [#7640](https://github.com/vueComponent/ant-design-vue/issues/7640)\n\n## 4.2.2\n\n- 🐞 修复 TreeSelect placeholder 插槽无效 [#7545](https://github.com/vueComponent/ant-design-vue/issues/7545)\n- 🐞 修复 Tree 插槽响应式无效问题 [40ad45](https://github.com/vueComponent/ant-design-vue/commit/40ad45bc05b2bf9d0a2445d9f6ff365468ba90b7)\n- 🐞 修复 FloatButton target 类型错误问题 [#7576](https://github.com/vueComponent/ant-design-vue/issues/7576)\n- 🐞 修复 FormItem className 错误问题 [#7582](https://github.com/vueComponent/ant-design-vue/issues/7582)\n- 🐞 修复 Input lazy 下无法输入问题 [#7543](https://github.com/vueComponent/ant-design-vue/issues/7543)\n- 🐞 修复 Select 输入中文时，placeholder 未隐藏问题 [#7611](https://github.com/vueComponent/ant-design-vue/issues/7611)\n- 🐞 修复 DatePicker 点击预设选项时，弹窗闪动问题 [#7550](https://github.com/vueComponent/ant-design-vue/issues/7550)\n\n## 4.2.1\n\n- 🐞 修复 Input 清空操作才报错问题 [#7523](https://github.com/vueComponent/ant-design-vue/issues/7523)\n\n## 4.2.0\n\n- 🌟 优化 layout 组件切换 dark 模式时 textColor 变化 [#7498](https://github.com/vueComponent/ant-design-vue/issues/7498)\n- 🌟 Tooltip 新增 arrow 隐藏配置 [#7459](https://github.com/vueComponent/ant-design-vue/issues/7459)\n- 🌟 优化 Table hover 性能 [#7451](https://github.com/vueComponent/ant-design-vue/issues/7451)\n- 🐞 修复 useForm 校验时更改 model，导致校验错误问题 [#ffd4d8](https://github.com/vueComponent/ant-design-vue/commit/ffd4d8fe927f9ea40cbb6358ad997c447bd9a74e)\n- 🐞 修复 Tabs 折叠计算错误问题 [#7491](https://github.com/vueComponent/ant-design-vue/issues/7491)\n- 🐞 修复 Qrcode 缺少类型提示问题 [#7502](https://github.com/vueComponent/ant-design-vue/issues/7502)\n- 🐞 修复 Menu 在 SSR 下渲染错误问题 [#7349](https://github.com/vueComponent/ant-design-vue/issues/7349)\n- 🐞 修复 Select、Cascader 在 SSR 下渲染错误问题 [#7377](https://github.com/vueComponent/ant-design-vue/issues/7377)\n- 🐞 修复 AutoComplete 缺少 option slot 声明问题 [#7396](https://github.com/vueComponent/ant-design-vue/issues/7396)\n- 🐞 修复 Textarea autoSize 不生效问题 [#7478](https://github.com/vueComponent/ant-design-vue/issues/7478)\n- 🐞 修复 Pagination 回车键触发两次翻页问题 [#7368](https://github.com/vueComponent/ant-design-vue/issues/7368)\n- 🐞 修复输入框输入中文问题 [#7391](https://github.com/vueComponent/ant-design-vue/issues/7391)[#7516](https://github.com/vueComponent/ant-design-vue/issues/7516)\n- 🐞 修复 Carousel beforeChange current 参数错误问题 [#7419](https://github.com/vueComponent/ant-design-vue/issues/7419)\n\n## 4.1.2\n\n- 🐞 修复 table resize 在 vue 3.4 下报错问题 [#7291](https://github.com/vueComponent/ant-design-vue/issues/7291)\n- 🐞 修复 Segmented title 属性不显示问题 [#7302](https://github.com/vueComponent/ant-design-vue/issues/7302)\n\n## 4.1.1\n\n- 🌟 QRcode 新增 scanned 状态 [#7242](https://github.com/vueComponent/ant-design-vue/issues/7242)\n- 🐞 修复 css prefix 在 nuxt 问题 [#7256](https://github.com/vueComponent/ant-design-vue/issues/7256)\n- 🐞 修复 dropdown 关闭问题 [#7246](https://github.com/vueComponent/ant-design-vue/issues/7246)\n- 🐞 修复 divider vertical dashed 不显示问题 [#7218](https://github.com/vueComponent/ant-design-vue/issues/7218)\n- 🐞 修复 hook 模式 message 控制台 warning 问题 [#7281](https://github.com/vueComponent/ant-design-vue/issues/7281)\n- 🐞 修复 table 展开在 vue 3.4 下报错问题 [#7265](https://github.com/vueComponent/ant-design-vue/issues/7265)\n- 🐞 修复 table group 过滤状态错误问题 [#7233](https://github.com/vueComponent/ant-design-vue/issues/7233)\n\n## 4.1.0\n\n- 🐞 适配 vue 3.4 [#7239](https://github.com/vueComponent/ant-design-vue/issues/7239)\n\n## 4.0.8\n\n- 🐞 修复在 Nuxt 下 theme 响应式失效问题 [#7180](https://github.com/vueComponent/ant-design-vue/issues/7180)\n- 🐞 修复 Wave 引起的报错问题 [#7108](https://github.com/vueComponent/ant-design-vue/issues/7108)\n- 🐞 修复 Upload disabled 继承问题 [#7110](https://github.com/vueComponent/ant-design-vue/issues/7110)\n- 🐞 修复 Tooltip popupAlign 未生效问题 [#7112](https://github.com/vueComponent/ant-design-vue/issues/7112)\n- 🐞 修复 Typography 闪动问题 [#7146](https://github.com/vueComponent/ant-design-vue/issues/7146)\n- 🐞 修复 RangePicker prevIcon nextIcon 未生效问题 [#7127](https://github.com/vueComponent/ant-design-vue/issues/7127)\n- 🐞 修复 watermark 未监听子元素变动问题 [#7149](https://github.com/vueComponent/ant-design-vue/issues/7149)\n- 🐞 修复 Menu 动画丢失问题 [#7130](https://github.com/vueComponent/ant-design-vue/issues/7130)\n- 🐞 修复 TextArea autosize 时光标变化问题 [#7121](https://github.com/vueComponent/ant-design-vue/issues/7121)\n\n## 4.0.7\n\n- 🌟 新增 Flex 组件 [#7052](https://github.com/vueComponent/ant-design-vue/issues/7052)\n- 🌟 ConfigProvider 新增 wave 配置 [#7036](https://github.com/vueComponent/ant-design-vue/issues/7036)\n- 🌟 Watermark 支持暗黑模式 [#7067](https://github.com/vueComponent/ant-design-vue/issues/7067)\n- 🐞 修复 Space 重复 Key 问题 [#7048](https://github.com/vueComponent/ant-design-vue/issues/7048)\n- 🐞 修复 Upload disabled 优先级错误问题 [#7047](https://github.com/vueComponent/ant-design-vue/issues/7047)\n- 🐞 修复 Carousel 在 jsx 中渲染错误问题 [#7077](https://github.com/vueComponent/ant-design-vue/issues/7077)\n- 🐞 修复 Message 偏移位置问题 [#7093](https://github.com/vueComponent/ant-design-vue/issues/7093)\n- 🐞 修复 Collapse 自定义 prefix 时动画失效问题 [#7074](https://github.com/vueComponent/ant-design-vue/issues/7074)\n\n## 4.0.6\n\n- 🐞 修复 4.0.4 引入的 Dropdown onVisibleChange 失效问题 [#7031](https://github.com/vueComponent/ant-design-vue/issues/7031)\n\n## 4.0.5\n\n- 🐞 修复 cssinjs 性能问题 [#7023](https://github.com/vueComponent/ant-design-vue/issues/7023)\n\n## 4.0.4\n\n- 🌟 新增 esm 目标文件\n- 🌟 FormItem 新增 tooltip 属性 [#7014](https://github.com/vueComponent/ant-design-vue/issues/7014)\n- 🐞 修复 useMessage getContainer 不生效问题 [#6942](https://github.com/vueComponent/ant-design-vue/issues/6942)\n- 🐞 修复 Image 多次触发 onPreviewVisibleChange 事件问题 [#6945](https://github.com/vueComponent/ant-design-vue/issues/6945)\n- 🐞 修复 Checkbox 全局 disabled 不生效问题 [#6970](https://github.com/vueComponent/ant-design-vue/issues/6970)\n- 🐞 修复 Drawer contentWrapperStyle 不生效问题 [#6983](https://github.com/vueComponent/ant-design-vue/issues/6983)\n- 🐞 优化 Select Dropdown 等下拉列表滚动条显示隐藏逻辑 [#6987](https://github.com/vueComponent/ant-design-vue/issues/6987)\n- 🐞 修复 Select Dropdown 等下拉列表中有 input 等组件时，隐藏问题 [#7020](https://github.com/vueComponent/ant-design-vue/issues/7020)\n\n## 4.0.3\n\n- 🐞 修复 shadow Dom 下样式丢失问题 [#6912](https://github.com/vueComponent/ant-design-vue/issues/6912)\n- 🐞 升级 Icon 依赖，修复 shadow Dom 下 icon css 丢失问题 [#6914](https://github.com/vueComponent/ant-design-vue/issues/6914)\n\n## 4.0.2\n\n- 🐞 修复 useMessage 导致 body 被移除问题 [#6880](https://github.com/vueComponent/ant-design-vue/issues/6880)\n- 🐞 修复 Button loading 切换后，水波纹效果不消失问题 [#6895](https://github.com/vueComponent/ant-design-vue/issues/6895)\n- 🐞 修复 Image 关闭后 flip 没有重置问题 [#6913](https://github.com/vueComponent/ant-design-vue/issues/6913)\n- 🐞 修复 ImageGroup 动画效果丢失问题 [#6898](https://github.com/vueComponent/ant-design-vue/issues/6898)\n- 🐞 修复 Modal 缺少 onUpdate:open 属性声明 [#6876](https://github.com/vueComponent/ant-design-vue/issues/6876)\n- 🐞 修复 Transfer 的 Checkbox 边缘处会触发多次 click 问题 [#6902](https://github.com/vueComponent/ant-design-vue/issues/6902)\n\n## 4.0.1\n\n- 🌟 FloatButton 添加 Badge 支持 [#6738](https://github.com/vueComponent/ant-design-vue/issues/6738)\n- 🌟 Image 预览放大缩小灵敏度调整 [#6784](https://github.com/vueComponent/ant-design-vue/issues/6784)\n- 🌟 Image 新增翻转特性 [#6785](https://github.com/vueComponent/ant-design-vue/issues/6785)\n- 🌟 新增 App 组件，用于提供上下文 [#6735](https://github.com/vueComponent/ant-design-vue/issues/6735)\n- 🌟 样式抽离特性用于 SSR [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757)\n- 🌟 支持 px2rem [#6817](https://github.com/vueComponent/ant-design-vue/issues/6817)\n- 🌟 Tag 支持无边框模式 [#6819](https://github.com/vueComponent/ant-design-vue/issues/6819)\n- 🌟 Avatar group 模式支持 shape [#6822](https://github.com/vueComponent/ant-design-vue/issues/6822)\n- 🌟 AutoComplete 支持无边框和自定义 clearIcon [#6829](https://github.com/vueComponent/ant-design-vue/issues/6829)\n- 🌟 InputPassword 支持受控 visible [#6863](https://github.com/vueComponent/ant-design-vue/issues/6863)\n- 🐞 修复 InputGroup 在 large 时样式错位问题 [#6866](https://github.com/vueComponent/ant-design-vue/issues/6866)\n- 🐞 修复 Checkable Tag 无法自定义 class 问题 [#6854](https://github.com/vueComponent/ant-design-vue/issues/6854)\n- 🐞 修复 Tabs 动画模式下渲染问题 [#6855](https://github.com/vueComponent/ant-design-vue/issues/6855)\n- 🐞 修复 Image height 属性不生效问题 [#6840](https://github.com/vueComponent/ant-design-vue/issues/6840)\n- 🐞 修复 InputNumber 触发 mouseup 事件问题 [#6772](https://github.com/vueComponent/ant-design-vue/issues/6772)\n- 🐞 修复 Tabs 折叠时 Dropdown 样式问题 [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757)\n- 🐞 修复 Table expandedRowRender 属性不生效 [#6783](https://github.com/vueComponent/ant-design-vue/issues/6783)\n- 🐞 修复 dayjs 未打包进 dist 问题 [#6767](https://github.com/vueComponent/ant-design-vue/issues/6767)\n- 🐞 解决 clipPath 浏览器兼容问题 [#6770](https://github.com/vueComponent/ant-design-vue/issues/6770)\n- 🐞 修复 Carousel autoplay 响应式问题 [#6768](https://github.com/vueComponent/ant-design-vue/issues/6768)\n- 🐞 修复 PageHeader ghost 样式问题 [#6761](https://github.com/vueComponent/ant-design-vue/issues/6761)\n- 🐞 修复 Checkbox 没有触发 Form 校验问题 [#6741](https://github.com/vueComponent/ant-design-vue/issues/6741)\n- 🐞 修复 Input prefix 属性未生效问题 [#6810](https://github.com/vueComponent/ant-design-vue/issues/6810)\n- 🐞 修复 Badge 在 Avatar 中样式问题 [#6874](https://github.com/vueComponent/ant-design-vue/issues/6874)\n\n## 4.0\n\n### 🔥🔥🔥 4.0 正式版发布 🔥🔥🔥\n\n### 设计规范调整\n\n- 基础圆角调整，由统一的 `2px` 改为四级圆角，分别为 `2px` `4px` `6px` `8px`，分别应用于不同场景，比如默认尺寸的 Button 的圆角调整为了 `6px`。\n- 主色调整，由 `#1890ff` 改为 `#1677ff`。\n- 整体阴影调整，由原本的三级阴影调整为两级，分别用于常驻页面的组件（如 Card）和交互反馈（如 Dropdown）。\n- 部分组件内间距调整。\n- 整体去线框化。\n\n### 新增 5 个组件\n\n- Segmented 分段控制器\n- WaterMark 水印\n- QrCode 二维码\n- FloatButton 悬浮按钮\n- Tour 漫游式引导\n\n### 技术调整\n\n- 弃用 less，采用 CSS-in-JS，更好地支持动态主题。\n  - 所有 less 文件全部移除，less 变量不再支持透出。\n  - 产物中不再包含 css 文件。由于 CSS-in-JS 支持按需引入，原本的 `ant-design-vue/dist/antd.css` 也已经移除，如果需要重置一些基本样式请引入 `ant-design-vue/dist/reset.css`。\n  - 如果需要组件重置样式，又不想引入 `ant-design-vue/dist/reset.css` 从而导致污染全局样式的话，可以尝试在应用最外层使用[App 组件](/components/app-cn)，解决原生元素没有 ant-design-vue 规范样式的问题。\n- 移除 css variables 以及在此之上构筑的动态主题方案。\n- LocaleProvider 在 3.x 中已经废弃（使用 `<ConfigProvider locale />` 替代），我们在 4.x 里彻底移除了相关目录 `ant-design-vue/es/locale-provider`、`ant-design-vue/lib/locale-provider`。\n- 不再支持 `babel-plugin-import`，CSS-in-JS 本身具有按需加载的能力，不再需要插件支持。\n\n#### 组件 API 调整\n\n- 组件弹框的 classname API 统一为 `popupClassName`，`dropdownClassName` 等类似 API 都会被替换。\n\n  - AutoComplete 组件\n  - Cascader 组件\n  - Select 组件\n  - TreeSelect 组件\n  - TimePicker 组件\n  - DatePicker 组件\n  - Mentions 组件\n\n- 组件弹框的受控可见 API 统一为 `open`，`visible` 等类似 API 都会被替换。\n  - Drawer 组件 `visible` 变为 `open`。\n  - Modal 组件 `visible` 变为 `open`。\n  - Dropdown 组件 `visible` 变为 `open`。\n  - Tooltip 组件 `visible` 变为 `open`。\n  - Tag 组件 `visible` 已移除。\n  - Slider 组件 `tooltip` 相关 API 收敛到 `tooltip` 属性中。\n  - Table 组件 `filterDropdownVisible` 变为 `filterDropdownOpen`。\n- `getPopupContainer`: 所有的 `getPopupContainer` 都需要保证返回的是唯一的 div。\n- Drawer `style` 和 `class` 迁移至 Drawer 弹层区域上，原属性替换为 `rootClassName` 和 `rootStyle`。\n\n#### 组件重构与移除\n\n- 移除 `locale-provider` 目录。`LocaleProvider` 在 v4 中已移除，请使用 `ConfigProvider` 替代。\n\n- 移除栅格布局中的`xxxl`断点属性。 `xxxl`属性已经在 v4 被移除，您可以使用 [主题定制](/docs/vue/customize-theme-cn) 修改 `screen[XS|SM|MD|LG|XL|XXL]` 来修改断点值实现。\n\n- BackTop 组件在 `4.0.0` 中废弃，移至 FloatButton 悬浮按钮中。如需使用，可以从 FloatButton 中引入。\n\n### [升级指南](/docs/vue/migration-v4-cn)\n\n## 3.x\n\n去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/3.x/CHANGELOG.zh-CN.md) 查看 `3.x` 的 Change Log。\n\n## 2.x\n\n去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/2.x/CHANGELOG.zh-CN.md) 查看 `2.x` 的 Change Log。\n\n## 1.x\n\n去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/1.x/CHANGELOG.zh-CN.md) 查看 `0.x` 到 `1.x` 的 Change Log。\n"
  },
  {
    "path": "LICENSE",
    "content": "\nMIT License\n\nCopyright (c) 2017-present ant-design-vue\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nMIT LICENSE\n\nCopyright (c) 2015-present Alipay.com, https://www.alipay.com/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nMIT License\n\nCopyright (c) 2019-PRESENT Anthony Fu<https://github.com/antfu>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README-zh_CN.md",
    "content": "<h1 align=\"center\">\n  <a href=\"https://www.antdv.com/\" target=\"_blank\">Ant Design Vue</a>\n</h1>\n\n<div align=\"center\">\n\n基于 Ant Design 和 Vue 3 的企业级 UI 组件库。\n\n![test](https://github.com/vueComponent/ant-design-vue/workflows/test/badge.svg) [![codecov](https://img.shields.io/codecov/c/github/vueComponent/ant-design-vue/master.svg?style=flat-square)](https://codecov.io/gh/vueComponent/ant-design-vue) [![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue) [![NPM downloads](http://img.shields.io/npm/dm/ant-design-vue.svg?style=flat-square)](http://www.npmtrends.com/ant-design-vue) [![backers](https://opencollective.com/ant-design-vue/backers/badge.svg)](#backers) [![sponsors](https://opencollective.com/ant-design-vue/sponsors/badge.svg)](#sponsors) [![extension-for-VSCode](https://img.shields.io/badge/extension%20for-VSCode-blue.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) [![issues-helper](https://img.shields.io/badge/Issues%20Manage%20By-issues--helper-orange?style=flat-square)](https://github.com/actions-cool/issues-helper)\n\n</div>\n\n[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](https://www.antdv.com/)\n\n<div align=\"center\">\n  <sup><strong>赞助商</strong></sup>\n  <br>\n  <a href=\"https://mentorbook.ai/\" target=\"_blank\">\n    <img src=\"/site/public/mentorbook_banner_zh.svg\" alt=\"Mentorbook.AI - 你的 AI 导师，你的学习之旅\" />\n  </a>\n</div>\n\n[English](./README.md) | 简体中文\n\n## 特性\n\n- 提炼自企业级中后台产品的交互语言和视觉风格。\n- 开箱即用的高质量 Vue 组件。\n- 共享 [Ant Design of React](http://ant-design.gitee.io/docs/spec/introduce-cn) 设计工具体系。\n\n## 关注我们\n\n收藏加关注，第一时间获取更新动态！\n\n![star us](https://user-images.githubusercontent.com/6937879/261937060-e0501ab3-9388-4712-a25d-3f2ba2271865.gif)\n\n## 支持环境\n\n- 现代浏览器。1.x 版本支持 IE 9+（需要 [polyfills](https://www.antdv.com/docs/vue/getting-started-cn/#兼容性)）\n- 支持服务端渲染。\n- [Electron](https://electronjs.org/)\n- 支持 Vue 2 和 Vue 3\n\n| [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Safari | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Opera | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/electron/electron_48x48.png\" alt=\"Electron\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Electron |\n| --- | --- | --- | --- | --- | --- |\n| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## 安装\n\n### 使用 npm 或 yarn 安装\n\n```bash\n$ npm install ant-design-vue --save\n```\n\n```bash\n$ yarn add ant-design-vue\n```\n\n如果你的网络环境不佳，推荐使用 [cnpm](https://github.com/cnpm/cnpm)。\n\n## 链接\n\n- [首页](https://www.antdv.com/)\n- [Vue 官方文档](https://cn.vuejs.org/)\n- [Ant Design Of React](http://ant.design/)\n\n## 生态\n\n| Project | Description |\n| --- | --- |\n| [vue-ref](https://github.com/vueComponent/vue-ref) | 您可以使用回调来获取组件的引用，类似 react |\n| [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) | ant-design-vue 的 vscode 扩展 |\n| [vue-cli-plugin-ant-design](https://github.com/vueComponent/vue-cli-plugin-ant-design) | 使用 vue-cli3 快速使用 ant-design-vue 组件库 |\n| [vue-dash-event](https://github.com/vueComponent/vue-dash-event) | 在 DOM 模板中，您可以使用 ant-design-vue 组件的自定义事件（camelCase） |\n| [@formily/antdv](https://github.com/formilyjs/antdv) | 这是一个结合了 Formily 和 ant-design-vue 的组件库 |\n| [@ant-design-vue/nuxt](https://github.com/vueComponent/ant-design-vue-nuxt) | ant-design-vue 的 nuxt 模块扩展 |\n| [ant-design-x-vue](https://github.com/wzc520pyfm/ant-design-x-vue) | 基于 Ant Design X 设计规范的 Vue AI 界面解决方案 |\n\n## 问答\n\n> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393)，更好的问题更容易获得帮助。\n\n[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/104172832)\n\n## 赞助\n\nant-design-vue 是 MIT 协议的开源项目。为了项目能够更好的持续的发展，我们期望获得更多的[支持者](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md)，你可以通过如下任何一种方式支持我们：\n\n- [Patreon](https://www.patreon.com/tangjinzhou)\n- [opencollective](https://opencollective.com/ant-design-vue)\n- [paypal](https://www.paypal.me/tangjinzhou)\n- ETH: 0x30cc48515d8ae9fefa20ab87226ad7e8ab9c3bc2\n\n## 赞助商\n\n成为赞助商，并在 Github 上的自述文件上获得您的徽标，并链接到您的网站。 [[成为赞助商](https://opencollective.com/ant-design-vue#sponsor)]\n\n<a href=\"http://www.jeecg.com/\" target=\"_blank\"><img src=\"https://www.antdv.com/jeecg-logo.png\" height=\"64\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/0/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/1/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/2/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/3/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/4/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/5/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/6/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/7/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/8/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/9/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/10/avatar.svg\"></a>\n\n## 支持者\n\n每月捐款支持我们，帮助我们继续我们的活动。 [[成为支持者](https://opencollective.com/ant-design-vue#backer)]\n\n<a href=\"https://github.com/chuzhixin/vue-admin-beautiful\" target=\"_blank\"><img width=\"64\" style=\"border-radius: 50%;\" src=\"https://gitee.com/chu1204505056/image/raw/master/vue-admin-beautiful.png\" title=\"vue-admin-beautiful\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/0/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/1/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/2/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/3/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/4/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/5/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/6/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/7/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/8/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/9/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/10/avatar.svg\"></a>\n\n## Patreon\n\n每月捐款支持我们，帮助我们继续我们的活动。 [[成为支持者](https://www.patreon.com/tangjinzhou)]\n\n<a href=\"https://www.mokeyjay.com\" target=\"_blank\"><img  width=\"64\" style=\"border-radius: 50%;\" src=\"https://www.mokeyjay.com/headimg.png\" title=\"donation by Patreon\"></a>\n\n## [更多赞助者 (通过 Patreon、支付宝、微信、paypal 等等)](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md)\n\n## 贡献者\n\n感谢所有为 ant-design-vue 做出贡献的人!\n\n<a href=\"https://github.com/vueComponent/ant-design-vue/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=vueComponent/ant-design-vue&max=100&columns=15\" />\n</a>\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <a href=\"https://www.antdv.com/\">\n    <img width=\"200\" src=\"https://www.antdv.com/logo.png\">\n  </a>\n</p>\n\n<h1 align=\"center\">\n  <a href=\"https://www.antdv.com/\" target=\"_blank\">Ant Design Vue</a>\n</h1>\n\n<div align=\"center\">\n\nAn enterprise-class UI components based on Ant Design and Vue.\n\n![test](https://github.com/vueComponent/ant-design-vue/workflows/test/badge.svg) [![codecov](https://img.shields.io/codecov/c/github/vueComponent/ant-design-vue/master.svg?style=flat-square)](https://codecov.io/gh/vueComponent/ant-design-vue) [![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue) [![NPM downloads](http://img.shields.io/npm/dm/ant-design-vue.svg?style=flat-square)](http://www.npmtrends.com/ant-design-vue) [![backers](https://opencollective.com/ant-design-vue/backers/badge.svg)](#backers) [![sponsors](https://opencollective.com/ant-design-vue/sponsors/badge.svg)](#sponsors) [![extension-for-VSCode](https://img.shields.io/badge/extension%20for-VSCode-blue.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) [![issues-helper](https://img.shields.io/badge/Issues%20Manage%20By-issues--helper-orange?style=flat-square)](https://github.com/actions-cool/issues-helper)\n\n</div>\n\n[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](https://www.antdv.com/)\n\n<div align=\"center\">\n  <sup><strong>Sponsored by</strong></sup>\n  <br>\n  <a href=\"https://mentorbook.ai/\" target=\"_blank\">\n    <img src=\"/site/public/mentorbook_banner_en.svg\" alt=\"Mentorbook.AI - Your AI Mentor, Your Learning Journey\" />\n  </a>\n</div>\n\nEnglish | [简体中文](./README-zh_CN.md)\n\n## Features\n\n- An enterprise-class UI design system for desktop applications.\n- A set of high-quality Vue components out of the box.\n- Shared [Ant Design of React](https://ant.design/docs/spec/introduce) design resources.\n\n## Getting started & staying tuned with us.\n\nStar us, and you will receive all releases notifications from GitHub without any delay!\n\n![star us](https://user-images.githubusercontent.com/6937879/261937060-e0501ab3-9388-4712-a25d-3f2ba2271865.gif)\n\n## Environment Support\n\n- Modern browsers. v1.x support Internet Explorer 9+ (with [polyfills](https://www.antdv.com/docs/vue/getting-started/#compatibility))\n- Server-side Rendering\n- Support Vue 2 & Vue 3\n- [Electron](https://electronjs.org/)\n\n| [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Safari | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Opera | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/electron/electron_48x48.png\" alt=\"Electron\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)</br>Electron |\n| --- | --- | --- | --- | --- | --- |\n| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## Using npm or yarn\n\n**We recommend using npm or yarn to install**, it not only makes development easier, but also allow you to take advantage of the rich ecosystem of Javascript packages and tooling.\n\n```bash\n$ npm install ant-design-vue --save\n```\n\n```bash\n$ yarn add ant-design-vue\n```\n\nIf you are in a bad network environment, you can try other registries and tools like [cnpm](https://github.com/cnpm/cnpm).\n\n## Links\n\n- [Home page](https://www.antdv.com/)\n- [Vue](https://vuejs.org/)\n- [Ant Design Of React](http://ant.design/)\n\n## Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [vue-ref](https://github.com/vueComponent/vue-ref) | You can use the callback to get a reference like react |\n| [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) | A vscode extension for ant-design-vue |\n| [vue-cli-plugin-ant-design](https://github.com/vueComponent/vue-cli-plugin-ant-design) | Vue-cli 3 plugin to add ant-design-vue |\n| [vue-dash-event](https://github.com/vueComponent/vue-dash-event) | The library function, implemented in the DOM template, can use the custom event of the ant-design-vue component (camelCase) |\n| [@formily/antdv](https://github.com/formilyjs/antdv) | The Library with Formily and ant-design-vue |\n| [@ant-design-vue/nuxt](https://github.com/vueComponent/ant-design-vue-nuxt) | A nuxt module for ant-design-vue |\n| [ant-design-x-vue](https://github.com/wzc520pyfm/ant-design-x-vue) | A Vue AI interface solutions base on the Ant Design X design specification |\n\n## Donation\n\nant-design-vue is an MIT-licensed open source project. In order to achieve better and sustainable development of the project, we expect to gain more [backers](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md). You can support us in any of the following ways:\n\n- [Patreon](https://www.patreon.com/tangjinzhou)\n- [opencollective](https://opencollective.com/ant-design-vue)\n- [paypal](https://www.paypal.me/tangjinzhou)\n- ETH: 0x30cc48515d8ae9fefa20ab87226ad7e8ab9c3bc2\n\n## Sponsors\n\nBecome a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/ant-design-vue#sponsor)]\n\n<a href=\"http://www.jeecg.com/\" target=\"_blank\"><img src=\"https://www.antdv.com/jeecg-logo.png\" height=\"64\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/0/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/1/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/2/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/3/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/4/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/5/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/6/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/7/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/8/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/9/avatar.svg\"></a> <a href=\"https://opencollective.com/ant-design-vue/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/10/avatar.svg\"></a>\n\n## [More Sponsor (From Patreon、alipay、wechat、paypal...)](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md)\n\n## Contributors\n\nThank you to all the people who already contributed to ant-design-vue!\n\n<a href=\"https://github.com/vueComponent/ant-design-vue/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=vueComponent/ant-design-vue&max=100&columns=15\" />\n</a>\n\n[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/104172832)\n\nThis project is tested with BrowserStack.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nUse this section to tell people about which versions of your project are currently being supported with security updates.\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 1.x     | :white_check_mark: |\n| 2.x     | :x:                |\n| 3.x     | :white_check_mark: |\n\n## Reporting a Vulnerability\n\nUse this section to tell people how to report a vulnerability.\n\nTell them where to go, how often they can expect to get an update on a reported vulnerability, what to expect if the vulnerability is accepted or declined, etc.\n"
  },
  {
    "path": "antd-tools/apiCollection.js",
    "content": "// Read all the api from current documents\n\nconst glob = require('glob');\nconst fs = require('fs');\n\nconst COMPONENT_NAME = /components\\/([^/]*)/;\nconst PROP_NAME = /^\\s*\\|\\s*([^\\s|]*)/;\n\nconst components = {};\n\nfunction mappingPropLine(component, line) {\n  const propMatch = line.match(PROP_NAME);\n  if (!propMatch) return;\n\n  const propName = propMatch[1];\n  if (!/^[a-z]/.test(propName)) return;\n\n  components[component] = Array.from(new Set([...(components[component] || []), propName]));\n}\n\nfunction apiReport(entities) {\n  const apis = {};\n  Object.keys(entities).forEach(component => {\n    const apiList = entities[component];\n    apiList.forEach(api => {\n      if (typeof apis[api] === 'function') {\n        apis[api] = [];\n      }\n      apis[api] = [...(apis[api] || []), component];\n    });\n  });\n\n  return apis;\n}\n\nfunction printReport(apis) {\n  const apiList = Object.keys(apis).map(api => ({\n    name: api,\n    componentList: apis[api],\n  }));\n  apiList.sort((a, b) => b.componentList.length - a.componentList.length);\n  // eslint-disable-next-line no-console\n  console.log('| name | components | comments |');\n  // eslint-disable-next-line no-console\n  console.log('| ---- | ---------- | -------- |');\n  apiList.forEach(({ name, componentList }) => {\n    // eslint-disable-next-line no-console\n    console.log('|', name, '|', componentList.join(', '), '| |');\n  });\n}\n\nmodule.exports = () => {\n  glob('components/*/*.md', (error, files) => {\n    files.forEach(filePath => {\n      // Read md file to parse content\n      const content = fs.readFileSync(filePath, 'utf8');\n      const component = filePath.match(COMPONENT_NAME)[1];\n\n      // Parse lines to get API\n      const lines = content.split(/[\\r\\n]+/);\n      lines.forEach(line => {\n        mappingPropLine(component, line);\n      });\n    });\n\n    printReport(apiReport(components));\n  });\n};\n"
  },
  {
    "path": "antd-tools/cli/index.js",
    "content": "#!/usr/bin/env node\n\n'use strict';\n\nrequire('colorful').colorful();\n\nconst program = require('commander');\nconst packageInfo = require('../../package.json');\n\nprogram\n  .version(packageInfo.version)\n  .command('run [name]', 'run specified task')\n  .parse(process.argv);\n\n// https://github.com/tj/commander.js/pull/260\nconst proc = program.runningCommand;\nif (proc) {\n  proc.on('close', process.exit.bind(process));\n  proc.on('error', () => {\n    process.exit(1);\n  });\n}\n\nconst subCmd = program.args[0];\nif (!subCmd || subCmd !== 'run') {\n  program.help();\n}\n"
  },
  {
    "path": "antd-tools/cli/run.js",
    "content": "#!/usr/bin/env node\n/* eslint-disable no-console */\n\n'use strict';\n\nrequire('colorful').colorful();\nconst gulp = require('gulp');\nconst program = require('commander');\n\nprogram.option('-c --npm-tag <type>', 'add --npm-tag=xxx');\n\nprogram.on('--help', () => {\n  console.log('  Usage:'.to.bold.blue.color);\n  console.log();\n});\n\nprogram.parse(process.argv);\n\nfunction runTask(toRun) {\n  const metadata = { task: toRun };\n  // Gulp >= 4.0.0 (doesn't support events)\n  const taskInstance = gulp.task(toRun);\n  if (taskInstance === undefined) {\n    gulp.emit('task_not_found', metadata);\n    return;\n  }\n  const start = process.hrtime();\n  gulp.emit('task_start', metadata);\n  try {\n    taskInstance.apply(gulp);\n    metadata.hrDuration = process.hrtime(start);\n    gulp.emit('task_stop', metadata);\n    gulp.emit('stop');\n  } catch (err) {\n    err.hrDuration = process.hrtime(start);\n    err.task = metadata.task;\n    gulp.emit('task_err', err);\n  }\n}\n\nconst task = program.args[0];\n\nif (!task) {\n  program.help();\n} else {\n  console.log('antd-tools run', task);\n\n  require('../gulpfile');\n\n  runTask(task);\n}\n"
  },
  {
    "path": "antd-tools/generator-types/README.md",
    "content": "fork github.com/youzan/vant packages/generator-types\n"
  },
  {
    "path": "antd-tools/generator-types/index.js",
    "content": "const path = require('path');\nconst pkg = require('../../package.json');\nconst { parseAndWrite } = require('./lib/index.js');\nconst rootPath = path.resolve(__dirname, '../../');\n\nparseAndWrite({\n  version: pkg.version,\n  name: 'ant-design-vue',\n  path: path.resolve(rootPath, './components'),\n  typingsPath: path.resolve(rootPath, './typings/global.d.ts'),\n  // default match lang\n  test: /en-US\\.md/,\n  outputDir: path.resolve(rootPath, './vetur'),\n  tagPrefix: 'a-',\n})\n  .then(result => {\n    // eslint-disable-next-line no-console\n    console.log(`generator types success: ${result} tags generated`);\n  })\n  .catch(error => {\n    console.error('generator types error', error);\n    return Promise.reject(error);\n  });\n"
  },
  {
    "path": "antd-tools/generator-types/src/formatter.ts",
    "content": "import type { Articals } from './parser';\nimport { formatType, removeVersion, toKebabCase } from './utils';\nimport type { VueTag } from './type';\n\nfunction getComponentName(name: string, tagPrefix: string) {\n  if (name) {\n    return tagPrefix + toKebabCase(name.split(' ')[0]);\n  }\n  return '';\n}\n\nfunction parserProps(tag: VueTag, line: any) {\n  const [name, desc, type, defaultVal] = line;\n  if (\n    type &&\n    (type.includes('v-slot') ||\n      type.includes('slot') ||\n      type.includes('slots') ||\n      type.includes('slot-scoped'))\n  ) {\n    tag.slots!.push({\n      name: removeVersion(name),\n      description: desc,\n    });\n  }\n  tag.attributes!.push({\n    name: removeVersion(name),\n    default: defaultVal,\n    description: desc,\n    value: {\n      type: formatType(type || ''),\n      kind: 'expression',\n    },\n  });\n}\n\nexport function formatter(\n  articals: Articals,\n  componentName: string,\n  kebabComponentName: string,\n  tagPrefix = '',\n) {\n  if (!articals.length) {\n    return;\n  }\n\n  const tags: VueTag[] = [];\n  const tag: VueTag = {\n    name: kebabComponentName,\n    slots: [],\n    events: [],\n    attributes: [],\n  };\n  tags.push(tag);\n\n  const tables = articals.filter(artical => artical.type === 'table');\n\n  tables.forEach(item => {\n    const { table } = item;\n    const prevIndex = articals.indexOf(item) - 1;\n    const prevArtical = articals[prevIndex];\n\n    if (!prevArtical || !prevArtical.content || !table || !table.body) {\n      return;\n    }\n\n    const tableTitle = prevArtical.content;\n\n    if (tableTitle.includes('API')) {\n      table.body.forEach(line => {\n        parserProps(tag, line);\n      });\n      return;\n    }\n\n    if (tableTitle.includes('events') && !tableTitle.includes(componentName)) {\n      table.body.forEach(line => {\n        const [name, desc] = line;\n        tag.events!.push({\n          name: removeVersion(name),\n          description: desc,\n        });\n      });\n      return;\n    }\n\n    // 额外的子组件\n    if (\n      tableTitle.includes(componentName) &&\n      !tableTitle.includes('events') &&\n      !tableTitle.includes('()')\n    ) {\n      const childTag: VueTag = {\n        name: getComponentName(tableTitle.replace(/\\.|\\//g, ''), tagPrefix),\n        slots: [],\n        events: [],\n        attributes: [],\n      };\n      table.body.forEach(line => {\n        parserProps(childTag, line);\n      });\n      tags.push(childTag);\n      return;\n    }\n\n    // 额外的子组件事件\n    if (tableTitle.includes(componentName) && tableTitle.includes('events')) {\n      const childTagName = getComponentName(\n        tableTitle.replace('.', '').replace('events', ''),\n        tagPrefix,\n      );\n      const childTag: VueTag | undefined = tags.find(item => item.name === childTagName.trim());\n      if (!childTag) {\n        return;\n      }\n      table.body.forEach(line => {\n        const [name, desc] = line;\n        childTag.events!.push({\n          name: removeVersion(name),\n          description: desc,\n        });\n      });\n      return;\n    }\n  });\n\n  return tags;\n}\n"
  },
  {
    "path": "antd-tools/generator-types/src/index.ts",
    "content": "import glob from 'fast-glob';\nimport { dirname, join } from 'path';\nimport { mdParser } from './parser';\nimport { formatter } from './formatter';\nimport { genWebTypes } from './web-types';\nimport { outputFileSync, readFileSync } from 'fs-extra';\nimport type { Options, VueTag } from './type';\nimport { getComponentName, normalizePath, toKebabCase } from './utils';\nimport { flatMap } from 'lodash';\n\nasync function readMarkdown(options: Options): Promise<Map<String, VueTag>> {\n  const mdPaths = await glob(normalizePath(`${options.path}/**/*.md`));\n  const data = mdPaths\n    .filter(md => options.test.test(md))\n    .map(path => {\n      const docPath = dirname(path);\n      const kebabComponentName =\n        options.tagPrefix + docPath.substring(docPath.lastIndexOf('/') + 1) || '';\n      const componentName = getComponentName(docPath.substring(docPath.lastIndexOf('/') + 1) || '');\n      const fileContent = readFileSync(path, 'utf-8');\n      return formatter(mdParser(fileContent), componentName, kebabComponentName, options.tagPrefix);\n    })\n    .filter(item => item) as VueTag[][];\n  const tags = new Map<String, VueTag>();\n  flatMap(data, item => item).forEach(mergedTag => mergeTag(tags, mergedTag));\n  return tags;\n}\n\nfunction readTypings(options: Options): Map<String, VueTag> {\n  const tags = new Map<String, VueTag>();\n  const fileContent = readFileSync(options.typingsPath, 'utf-8');\n  fileContent\n    .split('\\n')\n    .filter(line => line && line.includes('typeof'))\n    .map(line => {\n      const l = line.trim();\n      return toKebabCase(l.substring(0, l.indexOf(':')));\n    })\n    .forEach(tagName =>\n      tags.set(tagName, {\n        name: tagName,\n        slots: [],\n        events: [],\n        attributes: [],\n      }),\n    );\n  return tags;\n}\n\nfunction mergeTag(tags: Map<String, VueTag>, mergedTag: VueTag) {\n  const tagName = mergedTag.name;\n  const vueTag = tags.get(tagName);\n  if (vueTag) {\n    vueTag.slots = [...vueTag.slots, ...mergedTag.slots];\n    vueTag.events = [...vueTag.events, ...mergedTag.events];\n    vueTag.attributes = [...vueTag.attributes, ...mergedTag.attributes];\n  } else {\n    tags.set(tagName, mergedTag);\n  }\n}\n\nfunction mergeTags(mergedTagsArr: Map<String, VueTag>[]): VueTag[] {\n  if (mergedTagsArr.length === 1) return [...mergedTagsArr[0].values()];\n  const tags = new Map<String, VueTag>();\n  if (mergedTagsArr.length === 0) return [];\n  mergedTagsArr.forEach(mergedTags => {\n    mergedTags.forEach(mergedTag => mergeTag(tags, mergedTag));\n  });\n  return [...tags.values()];\n}\n\nexport async function parseAndWrite(options: Options): Promise<Number> {\n  if (!options.outputDir) {\n    throw new Error('outputDir can not be empty.');\n  }\n  const tagsFromMarkdown = await readMarkdown(options);\n  const tagsFromTypings = await readTypings(options);\n  const tags = mergeTags([tagsFromMarkdown, tagsFromTypings]);\n  const webTypes = genWebTypes(tags, options);\n  outputFileSync(join(options.outputDir, 'web-types.json'), JSON.stringify(webTypes, null, 2));\n  return tags.length;\n}\n\nexport default { parseAndWrite };\n"
  },
  {
    "path": "antd-tools/generator-types/src/parser.ts",
    "content": "/* eslint-disable no-cond-assign */\nconst TITLE_REG = /^(#+)\\s+([^\\n]*)/;\nconst TABLE_REG = /^\\|.+\\r?\\n\\|\\s*-+/;\nconst TD_REG = /\\s*`[^`]+`\\s*|([^|`]+)/g;\nconst TABLE_SPLIT_LINE_REG = /^\\|\\s*-/;\n\ntype TableContent = {\n  head: string[];\n  body: string[][];\n};\n\nexport type Artical = {\n  type: string;\n  content?: string;\n  table?: TableContent;\n  level?: number;\n};\n\nexport type Articals = Artical[];\n\nfunction readLine(input: string) {\n  const end = input.indexOf('\\n');\n\n  return input.substring(0, end !== -1 ? end : input.length);\n}\n\nfunction splitTableLine(line: string) {\n  line = line.replace(/\\\\\\|/g, 'JOIN');\n\n  const items = line.split('|').map(item => item.trim().replace(/JOIN/g, '|'));\n\n  // remove pipe character on both sides\n  items.pop();\n  items.shift();\n\n  return items;\n}\n\nfunction tableParse(input: string) {\n  let start = 0;\n  let isHead = true;\n\n  const end = input.length;\n  const table: TableContent = {\n    head: [],\n    body: [],\n  };\n\n  while (start < end) {\n    const target = input.substring(start);\n    const line = readLine(target);\n\n    if (!/^\\|/.test(target)) {\n      break;\n    }\n\n    if (TABLE_SPLIT_LINE_REG.test(target)) {\n      isHead = false;\n    } else if (!isHead && line.includes('|')) {\n      const matched = line.trim().match(TD_REG);\n\n      if (matched) {\n        table.body.push(splitTableLine(line));\n      }\n    }\n\n    start += line.length + 1;\n  }\n\n  return {\n    table,\n    usedLength: start,\n  };\n}\n\nexport function mdParser(input: string): Articals {\n  const artical = [];\n  let start = 0;\n  const end = input.length;\n\n  while (start < end) {\n    const target = input.substring(start);\n\n    let match;\n    if ((match = TITLE_REG.exec(target))) {\n      artical.push({\n        type: 'title',\n        content: match[2].replace('\\r', ''),\n        level: match[1].length,\n      });\n\n      start += match.index + match[0].length;\n    } else if ((match = TABLE_REG.exec(target))) {\n      const { table, usedLength } = tableParse(target.substring(match.index));\n      artical.push({\n        type: 'table',\n        table,\n      });\n\n      start += match.index + usedLength;\n    } else {\n      start += readLine(target).length + 1;\n    }\n  }\n\n  return artical;\n}\n"
  },
  {
    "path": "antd-tools/generator-types/src/type.ts",
    "content": "import type { PathLike } from 'fs';\n\nexport type VueSlot = {\n  name: string;\n  description: string;\n};\n\nexport type VueEventArgument = {\n  name: string;\n  type: string;\n};\n\nexport type VueEvent = {\n  name: string;\n  description?: string;\n  arguments?: VueEventArgument[];\n};\n\nexport type VueAttribute = {\n  name: string;\n  default: string;\n  description: string;\n  value: {\n    kind: 'expression';\n    type: string;\n  };\n};\n\nexport type VueTag = {\n  name: string;\n  slots: VueSlot[];\n  events: VueEvent[];\n  attributes: VueAttribute[];\n  description?: string;\n};\n\nexport type Options = {\n  name: string;\n  path: PathLike;\n  typingsPath: PathLike;\n  test: RegExp;\n  version: string;\n  outputDir?: string;\n  tagPrefix?: string;\n};\n"
  },
  {
    "path": "antd-tools/generator-types/src/utils.ts",
    "content": "// myName -> my-name\nexport function toKebabCase(camel: string): string {\n  return camel.replace(/((?<=[a-z\\d])[A-Z]|(?<=[A-Z\\d])[A-Z](?=[a-z]))/g, '-$1').toLowerCase();\n}\n\n// name `v2.0.0` -> name\nexport function removeVersion(str: string) {\n  return str.replace(/`(\\w|\\.)+`/g, '').trim();\n}\n\n// *boolean* -> boolean\n// _boolean_ -> boolean\nexport function formatType(type: string) {\n  return type\n    .replace(/(^(\\*|_))|((\\*|_)$)/g, '')\n    .replace('\\\\', '')\n    .replace('\\\\', '');\n}\n\nexport function getComponentName(name: string) {\n  const title = name\n    .split('-')\n    .map(it => it.substring(0, 1) + it.substring(1))\n    .join('');\n  return title.substring(0, 1).toUpperCase() + title.substring(1);\n}\n\nexport function normalizePath(path: string): string {\n  return path.replace(/\\\\/g, '/');\n}\n"
  },
  {
    "path": "antd-tools/generator-types/src/web-types.ts",
    "content": "import type { VueTag, Options } from './type';\n\n// create web-types.json to provide autocomplete in JetBrains IDEs\nexport function genWebTypes(tags: VueTag[], options: Options) {\n  return {\n    $schema: 'https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json',\n    framework: 'vue',\n    name: options.name,\n    version: options.version,\n    contributions: {\n      html: {\n        tags,\n        attributes: [],\n        'types-syntax': 'typescript',\n      },\n    },\n  };\n}\n"
  },
  {
    "path": "antd-tools/generator-types/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"outDir\": \"./lib\",\n    \"module\": \"commonjs\",\n    \"strict\": true,\n    \"declaration\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"esnext\"]\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "antd-tools/getBabelCommonConfig.js",
    "content": "const { resolve, isThereHaveBrowserslistConfig } = require('./utils/projectHelper');\n\nmodule.exports = function (modules) {\n  const plugins = [\n    [\n      resolve('@babel/plugin-transform-typescript'),\n      {\n        isTSX: true,\n      },\n    ],\n    [resolve('@vue/babel-plugin-jsx'), { mergeProps: false, enableObjectSlots: false }],\n    resolve('@babel/plugin-proposal-optional-chaining'),\n    resolve('@babel/plugin-transform-object-assign'),\n    resolve('@babel/plugin-proposal-object-rest-spread'),\n    resolve('@babel/plugin-proposal-export-default-from'),\n    resolve('@babel/plugin-proposal-export-namespace-from'),\n    resolve('@babel/plugin-proposal-class-properties'),\n    resolve('@babel/plugin-syntax-dynamic-import'),\n    [\n      resolve('@babel/plugin-transform-runtime'),\n      {\n        useESModules: modules === false,\n        version:\n          require(`${process.cwd()}/package.json`).dependencies['@babel/runtime'] || '^7.10.4',\n      },\n    ],\n    // resolve('babel-plugin-inline-import-data-uri'),\n    // resolve('@babel/plugin-transform-member-expression-literals'),\n    // resolve('@babel/plugin-transform-property-literals'),\n    // resolve('@babel/plugin-proposal-export-default-from'),\n    // resolve('@babel/plugin-transform-object-assign'),\n    // resolve('@babel/plugin-transform-template-literals'),\n    // resolve('@babel/plugin-proposal-object-rest-spread'),\n    // resolve('@babel/plugin-proposal-class-properties'),\n  ];\n  return {\n    presets: [\n      [\n        resolve('@babel/preset-env'),\n        {\n          modules,\n          targets: isThereHaveBrowserslistConfig()\n            ? undefined\n            : {\n                browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 11'],\n              },\n        },\n      ],\n    ],\n    plugins,\n    env: {\n      test: {\n        plugins: [resolve('babel-plugin-istanbul')],\n      },\n    },\n  };\n};\n"
  },
  {
    "path": "antd-tools/getNpm.js",
    "content": "'use strict';\n\nconst runCmd = require('./runCmd');\n\nmodule.exports = function (done) {\n  if (process.env.NPM_CLI) {\n    done(process.env.NPM_CLI);\n    return;\n  }\n  runCmd('which', ['tnpm'], code => {\n    let npm = 'npm';\n    if (!code) {\n      npm = 'tnpm';\n    }\n    done(npm);\n  });\n};\n"
  },
  {
    "path": "antd-tools/getTSCommonConfig.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst { getProjectPath } = require('./utils/projectHelper');\n\nmodule.exports = function () {\n  let my = {};\n  if (fs.existsSync(getProjectPath('tsconfig.json'))) {\n    my = require(getProjectPath('tsconfig.json'));\n  }\n  return Object.assign(\n    {\n      noUnusedParameters: true,\n      noUnusedLocals: true,\n      strictNullChecks: true,\n      target: 'es6',\n      jsx: 'preserve',\n      moduleResolution: 'node',\n      declaration: true,\n      allowSyntheticDefaultImports: true,\n    },\n    my.compilerOptions,\n  );\n};\n"
  },
  {
    "path": "antd-tools/getWebpackConfig.js",
    "content": "const { getProjectPath, resolve } = require('./utils/projectHelper');\nconst path = require('path');\nconst webpack = require('webpack');\nconst WebpackBar = require('webpackbar');\nconst { merge } = require('webpack-merge');\nconst TerserPlugin = require('terser-webpack-plugin');\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst CssMinimizerPlugin = require('css-minimizer-webpack-plugin');\nconst CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');\nconst CleanUpStatsPlugin = require('./utils/CleanUpStatsPlugin');\n// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;\n\nconst distFileBaseName = 'antd';\n\nconst svgRegex = /\\.svg(\\?v=\\d+\\.\\d+\\.\\d+)?$/;\nconst svgOptions = {\n  limit: 10000,\n  minetype: 'image/svg+xml',\n};\n\nconst imageOptions = {\n  limit: 10000,\n};\n\nfunction getWebpackConfig(modules, esm = false) {\n  const pkg = require(getProjectPath('package.json'));\n  const babelConfig = require('./getBabelCommonConfig')(modules || false);\n\n  const pluginImportOptions = {\n    style: true,\n    libraryName: distFileBaseName,\n    libraryDirectory: 'components',\n  };\n  babelConfig.plugins.push([resolve('babel-plugin-import'), pluginImportOptions]);\n\n  if (modules === false) {\n    babelConfig.plugins.push(require.resolve('./replaceLib'));\n  }\n\n  /** @type {import('webpack').Configuration} */\n  const config = {\n    devtool: 'source-map',\n\n    output: {\n      path: getProjectPath('./dist/'),\n      filename: '[name].js',\n    },\n\n    resolve: {\n      modules: ['node_modules', path.join(__dirname, '../node_modules')],\n      extensions: [\n        '.web.tsx',\n        '.web.ts',\n        '.web.jsx',\n        '.web.js',\n        '.ts',\n        '.tsx',\n        '.js',\n        '.jsx',\n        '.vue',\n        '.md',\n        '.json',\n      ],\n      alias: {\n        '@': process.cwd(),\n      },\n      fallback: [\n        'child_process',\n        'cluster',\n        'dgram',\n        'dns',\n        'fs',\n        'module',\n        'net',\n        'readline',\n        'repl',\n        'tls',\n      ].reduce((acc, name) => Object.assign({}, acc, { [name]: 'empty' }), {}),\n    },\n\n    module: {\n      rules: [\n        {\n          test: /\\.vue$/,\n          exclude: /node_modules/,\n          use: [\n            {\n              loader: 'vue-loader',\n              options: {\n                loaders: {\n                  js: [\n                    {\n                      loader: 'babel-loader',\n                      options: {\n                        presets: [resolve('@babel/preset-env')],\n                        plugins: [\n                          [\n                            resolve('@vue/babel-plugin-jsx'),\n                            { mergeProps: false, enableObjectSlots: false },\n                          ],\n                          resolve('@babel/plugin-proposal-object-rest-spread'),\n                        ],\n                      },\n                    },\n                  ],\n                },\n              },\n            },\n          ],\n        },\n        {\n          test: /\\.(js|jsx)$/,\n          loader: 'babel-loader',\n          exclude: /node_modules/,\n          options: babelConfig,\n        },\n        {\n          test: /\\.tsx?$/,\n          use: [\n            {\n              loader: 'babel-loader',\n              options: babelConfig,\n            },\n            {\n              loader: 'ts-loader',\n              options: {\n                transpileOnly: true,\n              },\n            },\n          ],\n        },\n        {\n          test: /\\.css$/,\n          use: [\n            MiniCssExtractPlugin.loader,\n            {\n              loader: 'css-loader',\n              options: {\n                sourceMap: true,\n              },\n            },\n            {\n              loader: 'postcss-loader',\n              options: {\n                postcssOptions: {\n                  plugins: ['autoprefixer'],\n                },\n                sourceMap: true,\n              },\n            },\n          ],\n        },\n        // Images\n        {\n          test: svgRegex,\n          loader: 'url-loader',\n          options: svgOptions,\n        },\n        {\n          test: /\\.(png|jpg|jpeg|gif)(\\?v=\\d+\\.\\d+\\.\\d+)?$/i,\n          loader: 'url-loader',\n          options: imageOptions,\n        },\n      ],\n    },\n\n    plugins: [\n      // new BundleAnalyzerPlugin(),\n      new CaseSensitivePathsPlugin(),\n      new webpack.BannerPlugin(`\n${pkg.name} v${pkg.version}\n\nCopyright 2017-present, Ant Design Vue.\nAll rights reserved.\n      `),\n      new WebpackBar({\n        name: '🚚  Ant Design Vue Tools',\n        color: '#2f54eb',\n      }),\n      new CleanUpStatsPlugin(),\n    ],\n    performance: {\n      hints: false,\n    },\n  };\n\n  if (process.env.RUN_ENV === 'PRODUCTION') {\n    let entry = ['./index'];\n    config.externals = [\n      {\n        vue: {\n          root: 'Vue',\n          commonjs2: 'vue',\n          commonjs: 'vue',\n          amd: 'vue',\n          module: 'vue',\n        },\n      },\n    ];\n    if (esm) {\n      entry = ['./index.esm'];\n      config.experiments = {\n        ...config.experiments,\n        outputModule: true,\n      };\n      config.output.chunkFormat = 'module';\n      config.output.library = {\n        type: 'module',\n      };\n      config.target = 'es2019';\n    } else {\n      config.output.libraryTarget = 'umd';\n      config.output.library = distFileBaseName;\n      config.output.globalObject = 'this';\n    }\n\n    const entryName = esm ? `${distFileBaseName}.esm` : distFileBaseName;\n\n    config.optimization = {\n      minimizer: [\n        new TerserPlugin({\n          parallel: true,\n          terserOptions: {\n            warnings: false,\n          },\n        }),\n      ],\n    };\n    // Development\n    const uncompressedConfig = merge({}, config, {\n      entry: {\n        [entryName]: entry,\n      },\n      mode: 'development',\n      plugins: [\n        new MiniCssExtractPlugin({\n          filename: '[name].css',\n        }),\n      ],\n    });\n\n    // Production\n    const prodConfig = merge({}, config, {\n      entry: {\n        [`${entryName}.min`]: entry,\n      },\n      mode: 'production',\n      plugins: [\n        new webpack.LoaderOptionsPlugin({\n          minimize: true,\n        }),\n        new MiniCssExtractPlugin({\n          filename: '[name].css',\n        }),\n      ],\n      optimization: {\n        minimize: true,\n        minimizer: [new CssMinimizerPlugin({})],\n      },\n    });\n\n    return [prodConfig, uncompressedConfig];\n  }\n\n  return [config];\n}\n\ngetWebpackConfig.webpack = webpack;\ngetWebpackConfig.svgRegex = svgRegex;\ngetWebpackConfig.svgOptions = svgOptions;\ngetWebpackConfig.imageOptions = imageOptions;\n\nmodule.exports = getWebpackConfig;\n"
  },
  {
    "path": "antd-tools/gulpfile.js",
    "content": "/* eslint-disable no-console */\nconst { getProjectPath, getConfig } = require('./utils/projectHelper');\nconst runCmd = require('./runCmd');\nconst getBabelCommonConfig = require('./getBabelCommonConfig');\nconst merge2 = require('merge2');\nconst { execSync } = require('child_process');\nconst through2 = require('through2');\nconst webpack = require('webpack');\nconst babel = require('gulp-babel');\nconst argv = require('minimist')(process.argv.slice(2));\nconst { Octokit } = require('@octokit/rest');\n\n// const getNpm = require('./getNpm')\n// const selfPackage = require('../package.json')\nconst chalk = require('chalk');\nconst getNpmArgs = require('./utils/get-npm-args');\nconst getChangelog = require('./utils/getChangelog');\nconst path = require('path');\n// const watch = require('gulp-watch')\nconst ts = require('gulp-typescript');\nconst gulp = require('gulp');\nconst fs = require('fs');\nconst rimraf = require('rimraf');\nconst stripCode = require('gulp-strip-code');\nconst compareVersions = require('compare-versions');\nconst getTSCommonConfig = require('./getTSCommonConfig');\nconst replaceLib = require('./replaceLib');\nconst sortApiTable = require('./sortApiTable');\nconst { glob } = require('glob');\n\nconst packageJson = require(getProjectPath('package.json'));\nconst tsDefaultReporter = ts.reporter.defaultReporter();\nconst cwd = process.cwd();\nconst libDir = getProjectPath('lib');\nconst esDir = getProjectPath('es');\nconst localeDir = getProjectPath('locale');\n\nconst tsConfig = getTSCommonConfig();\n\n// FIXME: hard code, not find typescript can modify the path resolution\nconst localeDts = `import type { Locale } from '../lib/locale-provider';\ndeclare const localeValues: Locale;\nexport default localeValues;`;\n\nfunction dist(done) {\n  rimraf.sync(path.join(cwd, 'dist'));\n  process.env.RUN_ENV = 'PRODUCTION';\n  const webpackConfig = require(getProjectPath('webpack.build.conf.js'));\n  webpack(webpackConfig, (err, stats) => {\n    if (err) {\n      console.error(err.stack || err);\n      if (err.details) {\n        console.error(err.details);\n      }\n      return;\n    }\n\n    const info = stats.toJson();\n    const { dist: { finalize } = {}, bail } = getConfig();\n\n    if (stats.hasErrors()) {\n      (info.errors || []).forEach(error => {\n        console.error(error);\n      });\n      // https://github.com/ant-design/ant-design/pull/31662\n      if (bail) {\n        process.exit(1);\n      }\n    }\n    if (stats.hasWarnings()) {\n      console.warn(info.warnings);\n    }\n\n    const buildInfo = stats.toString({\n      colors: true,\n      children: true,\n      chunks: false,\n      modules: false,\n      chunkModules: false,\n      hash: false,\n      version: false,\n    });\n    console.log(buildInfo);\n    // Additional process of dist finalize\n    if (finalize) {\n      console.log('[Dist] Finalization...');\n      finalize();\n    }\n    done(0);\n  });\n}\n\nconst tsFiles = ['**/*.ts', '**/*.tsx', '!node_modules/**/*.*', 'typings/**/*.d.ts'];\n\nfunction compileTs(stream) {\n  return stream\n    .pipe(ts(tsConfig))\n    .js.pipe(\n      through2.obj(function (file, encoding, next) {\n        // console.log(file.path, file.base);\n        file.path = file.path.replace(/\\.[jt]sx$/, '.js');\n        this.push(file);\n        next();\n      }),\n    )\n    .pipe(gulp.dest(process.cwd()));\n}\n\ngulp.task('tsc', () =>\n  compileTs(\n    gulp.src(tsFiles, {\n      base: cwd,\n    }),\n  ),\n);\n\ngulp.task('clean', () => {\n  rimraf.sync(getProjectPath('_site'));\n  rimraf.sync(getProjectPath('_data'));\n});\n\nfunction babelify(js, modules) {\n  const babelConfig = getBabelCommonConfig(modules);\n  babelConfig.babelrc = false;\n  delete babelConfig.cacheDirectory;\n  if (modules === false) {\n    babelConfig.plugins.push(replaceLib);\n  }\n  const stream = js.pipe(babel(babelConfig)).pipe(\n    through2.obj(function z(file, encoding, next) {\n      this.push(file.clone());\n      if (modules !== false) {\n        const content = file.contents.toString(encoding);\n        file.contents = Buffer.from(\n          content\n            .replace(/lodash-es/g, 'lodash')\n            .replace(/@ant-design\\/icons-vue/g, '@ant-design/icons-vue/lib/icons'),\n        );\n        this.push(file);\n      }\n      next();\n    }),\n  );\n  return stream.pipe(gulp.dest(modules === false ? esDir : libDir));\n}\n\nfunction compile(modules) {\n  const { compile: { transformTSFile, transformFile } = {} } = getConfig();\n  rimraf.sync(modules !== false ? libDir : esDir);\n\n  const assets = gulp\n    .src(['components/**/*.@(png|svg)'])\n    .pipe(gulp.dest(modules === false ? esDir : libDir));\n  let error = 0;\n\n  // =============================== FILE ===============================\n  let transformFileStream;\n\n  if (transformFile) {\n    transformFileStream = gulp\n      .src(['components/**/*.tsx'])\n      .pipe(\n        through2.obj(function (file, encoding, next) {\n          let nextFile = transformFile(file) || file;\n          nextFile = Array.isArray(nextFile) ? nextFile : [nextFile];\n          nextFile.forEach(f => this.push(f));\n          next();\n        }),\n      )\n      .pipe(gulp.dest(modules === false ? esDir : libDir));\n  }\n\n  // ================================ TS ================================\n  const source = [\n    'components/**/*.js',\n    'components/**/*.jsx',\n    'components/**/*.tsx',\n    'components/**/*.ts',\n    'typings/**/*.d.ts',\n    '!components/*/__tests__/*',\n  ];\n\n  // Strip content if needed\n  let sourceStream = gulp.src(source);\n  if (modules === false) {\n    sourceStream = sourceStream.pipe(\n      stripCode({\n        start_comment: '@remove-on-es-build-begin',\n        end_comment: '@remove-on-es-build-end',\n      }),\n    );\n  }\n\n  if (transformTSFile) {\n    sourceStream = sourceStream.pipe(\n      through2.obj(function (file, encoding, next) {\n        let nextFile = transformTSFile(file) || file;\n        nextFile = Array.isArray(nextFile) ? nextFile : [nextFile];\n        nextFile.forEach(f => this.push(f));\n        next();\n      }),\n    );\n  }\n\n  const tsResult = sourceStream.pipe(\n    ts(tsConfig, {\n      error(e) {\n        tsDefaultReporter.error(e);\n        error = 1;\n      },\n      finish: tsDefaultReporter.finish,\n    }),\n  );\n\n  function check() {\n    if (error && !argv['ignore-error']) {\n      process.exit(1);\n    }\n  }\n\n  tsResult.on('finish', check);\n  tsResult.on('end', check);\n  const tsFilesStream = babelify(tsResult.js, modules);\n  const tsd = tsResult.dts.pipe(gulp.dest(modules === false ? esDir : libDir));\n  return merge2([tsFilesStream, tsd, assets, transformFileStream].filter(s => s));\n}\n\nfunction generateLocale() {\n  if (!fs.existsSync(localeDir)) {\n    fs.mkdirSync(localeDir);\n  }\n\n  const localeFiles = glob.sync('components/locale/*.ts?(x)');\n  localeFiles.forEach(item => {\n    const match = item.match(/components\\/locale\\/(.*)\\.tsx?/);\n    if (match) {\n      const locale = match[1];\n      fs.writeFileSync(\n        path.join(localeDir, `${locale}.js`),\n        `module.exports = require('../lib/locale/${locale}');`,\n      );\n      fs.writeFileSync(path.join(localeDir, `${locale}.d.ts`), localeDts);\n    }\n  });\n}\n\nfunction tag() {\n  console.log('tagging');\n  const { version } = packageJson;\n  execSync(`git config --global user.email ${process.env.GITHUB_USER_EMAIL}`);\n  execSync(`git config --global user.name ${process.env.GITHUB_USER_NAME}`);\n  execSync(`git tag ${version}`);\n  execSync(\n    `git push https://${process.env.GITHUB_TOKEN}@github.com/vueComponent/ant-design-vue.git ${version}:${version}`,\n  );\n  execSync(\n    `git push https://${process.env.GITHUB_TOKEN}@github.com/vueComponent/ant-design-vue.git master:master`,\n  );\n  console.log('tagged');\n}\n\nfunction githubRelease(done) {\n  const changlogFiles = [\n    path.join(cwd, 'CHANGELOG.en-US.md'),\n    path.join(cwd, 'CHANGELOG.zh-CN.md'),\n  ];\n  console.log('creating release on GitHub');\n  if (!process.env.GITHUB_TOKEN) {\n    console.log('no GitHub token found, skip');\n    return;\n  }\n  if (!changlogFiles.every(file => fs.existsSync(file))) {\n    console.log('no changelog found, skip');\n    return;\n  }\n  const github = new Octokit({\n    auth: process.env.GITHUB_TOKEN,\n  });\n  const date = new Date();\n  const { version } = packageJson;\n  const enChangelog = getChangelog(changlogFiles[0], version);\n  const cnChangelog = getChangelog(changlogFiles[1], version);\n  const changelog = [\n    `\\`${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}\\``,\n    enChangelog,\n    '\\n',\n    '---',\n    '\\n',\n    cnChangelog,\n  ].join('\\n');\n  const [_, owner, repo] = execSync('git remote get-url origin') // eslint-disable-line\n    .toString()\n    .match(/github.com[:/](.+)\\/(.+)\\.git/);\n  github.repos\n    .createRelease({\n      owner,\n      repo,\n      tag_name: version,\n      name: version,\n      body: changelog,\n    })\n    .then(() => {\n      done();\n    })\n    .catch(err => {\n      console.log(err);\n    });\n}\n\ngulp.task(\n  'tag',\n  gulp.series(done => {\n    tag();\n    githubRelease(done);\n  }),\n);\n\ngulp.task(\n  'check-git',\n  gulp.series(done => {\n    runCmd('git', ['status', '--porcelain'], (code, result) => {\n      if (/^\\?\\?/m.test(result)) {\n        return done(`There are untracked files in the working tree.\\n${result}\n      `);\n      }\n      if (/^([ADRM]| [ADRM])/m.test(result)) {\n        return done(`There are uncommitted changes in the working tree.\\n${result}\n      `);\n      }\n      return done();\n    });\n  }),\n);\n\nfunction publish(tagString, done) {\n  let args = ['publish', '--with-antd-tools'];\n  if (tagString) {\n    args = args.concat(['--tag', tagString]);\n  }\n  const publishNpm = process.env.PUBLISH_NPM_CLI || 'npm';\n  runCmd(publishNpm, args, code => {\n    tag();\n    githubRelease(() => {\n      done(code);\n    });\n  });\n}\n\nfunction pub(done) {\n  const notOk = !packageJson.version.match(/^\\d+\\.\\d+\\.\\d+$/);\n  let tagString;\n  if (argv['npm-tag']) {\n    tagString = argv['npm-tag'];\n  }\n  if (!tagString && notOk) {\n    tagString = 'next';\n  }\n  if (packageJson.scripts['pre-publish']) {\n    runCmd('npm', ['run', 'pre-publish'], code2 => {\n      if (code2) {\n        done(code2);\n        return;\n      }\n      publish(tagString, done);\n    });\n  } else {\n    publish(tagString, done);\n  }\n}\n\nconst startTime = new Date();\ngulp.task('compile-with-es', done => {\n  console.log('start compile at ', startTime);\n  console.log('[Parallel] Compile to es...');\n  compile(false).on('finish', done);\n});\n\ngulp.task('compile-with-lib', done => {\n  console.log('[Parallel] Compile to js...');\n  compile().on('finish', () => {\n    generateLocale();\n    done();\n  });\n});\n\ngulp.task('compile-finalize', done => {\n  // Additional process of compile finalize\n  const { compile: { finalize } = {} } = getConfig();\n  if (finalize) {\n    console.log('[Compile] Finalization...');\n    finalize();\n  }\n  done();\n});\n\ngulp.task(\n  'compile',\n  gulp.series(gulp.parallel('compile-with-es', 'compile-with-lib'), 'compile-finalize', done => {\n    console.log('end compile at ', new Date());\n    console.log('compile time ', (new Date() - startTime) / 1000, 's');\n    done();\n  }),\n);\n\ngulp.task(\n  'dist',\n  gulp.series(done => {\n    dist(done);\n  }),\n);\n\ngulp.task(\n  'pub',\n  gulp.series('check-git', 'compile', 'dist', done => {\n    // if (!process.env.GITHUB_TOKEN) {\n    //   console.log('no GitHub token found, skip');\n    // } else {\n    //   pub(done);\n    // }\n    pub(done);\n  }),\n);\n\ngulp.task(\n  'pub-with-ci',\n  gulp.series(done => {\n    if (!process.env.NPM_TOKEN) {\n      console.log('no NPM token found, skip');\n    } else {\n      const github = new Octokit({\n        auth: process.env.GITHUB_TOKEN,\n      });\n      const [_, owner, repo] = execSync('git remote get-url origin') // eslint-disable-line\n        .toString()\n        .match(/github.com[:/](.+)\\/(.+)\\.git/);\n      const getLatestRelease = github.repos.getLatestRelease({\n        owner,\n        repo,\n      });\n      const listCommits = github.repos.listCommits({\n        owner,\n        repo,\n        per_page: 1,\n      });\n      Promise.all([getLatestRelease, listCommits]).then(([latestRelease, commits]) => {\n        const preVersion = latestRelease.data.tag_name;\n        const { version } = packageJson;\n        const [_, newVersion] = commits.data[0].commit.message.trim().match(/bump (.+)/) || []; // eslint-disable-line\n        if (\n          compareVersions(version, preVersion) === 1 &&\n          newVersion &&\n          newVersion.trim() === version\n        ) {\n          // eslint-disable-next-line no-unused-vars\n          runCmd('npm', ['run', 'pub'], _code => {\n            done();\n          });\n        } else {\n          console.log('donot need publish' + version);\n        }\n      });\n    }\n  }),\n);\n\ngulp.task(\n  'guard',\n  gulp.series(done => {\n    function reportError() {\n      console.log(chalk.bgRed('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'));\n      console.log(chalk.bgRed('!! `npm publish` is forbidden for this package. !!'));\n      console.log(chalk.bgRed('!! Use `npm run pub` instead.        !!'));\n      console.log(chalk.bgRed('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'));\n    }\n    const npmArgs = getNpmArgs();\n    if (npmArgs) {\n      for (let arg = npmArgs.shift(); arg; arg = npmArgs.shift()) {\n        if (\n          /^pu(b(l(i(sh?)?)?)?)?$/.test(arg) &&\n          npmArgs.indexOf('--with-antd-tools') < 0 &&\n          !process.env.npm_config_with_antd_tools\n        ) {\n          reportError();\n          done(1);\n          return;\n        }\n      }\n    }\n    done();\n  }),\n);\n\ngulp.task(\n  'sort-api-table',\n  gulp.series(done => {\n    sortApiTable();\n    done();\n  }),\n);\n"
  },
  {
    "path": "antd-tools/replaceLib.js",
    "content": "'use strict';\n\nconst { dirname } = require('path');\nconst fs = require('fs');\nconst { getProjectPath } = require('./utils/projectHelper');\n\nfunction replacePath(path) {\n  if (path.node.source && /\\/lib\\//.test(path.node.source.value)) {\n    const esModule = path.node.source.value.replace('/lib/', '/es/');\n    const esPath = dirname(getProjectPath('node_modules', esModule));\n    if (fs.existsSync(esPath)) {\n      path.node.source.value = esModule;\n    }\n  }\n\n  // @ant-design/icons-vue/xxx => @ant-design/icons-vue/es/icons/xxx\n  const antdIconMatcher = /@ant-design\\/icons-vue\\/([^/]*)$/;\n  if (path.node.source && antdIconMatcher.test(path.node.source.value)) {\n    const esModule = path.node.source.value.replace(\n      antdIconMatcher,\n      (_, iconName) => `@ant-design/icons-vue/es/icons/${iconName}`,\n    );\n    const esPath = dirname(getProjectPath('node_modules', esModule));\n    if (fs.existsSync(esPath)) {\n      path.node.source.value = esModule;\n    }\n  }\n}\n\nfunction replaceLib() {\n  return {\n    visitor: {\n      ImportDeclaration: replacePath,\n      ExportNamedDeclaration: replacePath,\n    },\n  };\n}\n\nmodule.exports = replaceLib;\n"
  },
  {
    "path": "antd-tools/runCmd.js",
    "content": "'use strict';\n\nconst isWindows = require('is-windows');\nconst getRunCmdEnv = require('./utils/getRunCmdEnv');\n\nfunction runCmd(cmd, _args, fn) {\n  const args = _args || [];\n\n  if (isWindows()) {\n    args.unshift(cmd);\n    args.unshift('/c');\n    cmd = process.env.ComSpec;\n  }\n\n  const runner = require('child_process').spawn(cmd, args, {\n    // keep color\n    stdio: 'inherit',\n    env: getRunCmdEnv(),\n  });\n\n  runner.on('close', code => {\n    if (fn) {\n      fn(code);\n    }\n  });\n}\n\nmodule.exports = runCmd;\n"
  },
  {
    "path": "antd-tools/sortApiTable.js",
    "content": "const program = require('commander');\nconst majo = require('majo');\nconst fs = require('fs');\nconst path = require('path');\nconst chalk = require('chalk');\n\nconst unified = require('unified');\nconst parse = require('remark-parse');\nconst stringify = require('remark-stringify');\n\nconst yamlConfig = require('remark-yaml-config');\nconst frontmatter = require('remark-frontmatter');\n\nlet fileAPIs = {};\nconst remarkWithYaml = unified()\n  .use(parse)\n  .use(stringify, {\n    paddedTable: false,\n    listItemIndent: 1,\n    stringLength: () => 3,\n  })\n  .use(frontmatter)\n  .use(yamlConfig);\n\nconst stream = majo.majo();\n\nfunction getCellValue(node) {\n  return node.children[0].children[0].value;\n}\n\n// from small to large\nconst sizeBreakPoints = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\n\nconst whiteMethodList = ['afterChange', 'beforeChange'];\n\nconst groups = {\n  isDynamic: val => /^on[A-Z]/.test(val) || whiteMethodList.indexOf(val) > -1,\n  isSize: val => sizeBreakPoints.indexOf(val) > -1,\n};\n\nfunction asciiSort(prev, next) {\n  if (prev > next) {\n    return 1;\n  }\n\n  if (prev < next) {\n    return -1;\n  }\n\n  return 0;\n}\n\n// follow the alphabet order\nfunction alphabetSort(nodes) {\n  // use toLowerCase to keep `case insensitive`\n  return nodes.sort((...comparison) =>\n    asciiSort(...comparison.map(val => getCellValue(val).toLowerCase())),\n  );\n}\n\nfunction sizeSort(nodes) {\n  return nodes.sort((...comparison) =>\n    asciiSort(...comparison.map(val => sizeBreakPoints.indexOf(getCellValue(val).toLowerCase()))),\n  );\n}\n\nfunction sort(ast, filename) {\n  const nameMatch = filename.match(/^components\\/([^/]*)\\//);\n  const componentName = nameMatch[1];\n  fileAPIs[componentName] = fileAPIs[componentName] || {\n    static: new Set(),\n    size: new Set(),\n    dynamic: new Set(),\n  };\n\n  ast.children.forEach(child => {\n    const staticProps = [];\n    // prefix with `on`\n    const dynamicProps = [];\n    // one of ['xs', 'sm', 'md', 'lg', 'xl']\n    const sizeProps = [];\n\n    // find table markdown type\n    if (child.type === 'table') {\n      // slice will create new array, so sort can affect the original array.\n      // slice(1) cut down the thead\n      child.children.slice(1).forEach(node => {\n        const value = getCellValue(node);\n        if (groups.isDynamic(value)) {\n          dynamicProps.push(node);\n          fileAPIs[componentName].dynamic.add(value);\n        } else if (groups.isSize(value)) {\n          sizeProps.push(node);\n          fileAPIs[componentName].size.add(value);\n        } else {\n          staticProps.push(node);\n          fileAPIs[componentName].static.add(value);\n        }\n      });\n\n      // eslint-disable-next-line\n      child.children = [\n        child.children[0],\n        ...alphabetSort(staticProps),\n        ...sizeSort(sizeProps),\n        ...alphabetSort(dynamicProps),\n      ];\n    }\n  });\n\n  return ast;\n}\n\nfunction sortAPI(md, filename) {\n  return remarkWithYaml.stringify(sort(remarkWithYaml.parse(md), filename));\n}\n\nfunction sortMiddleware(ctx) {\n  Object.keys(ctx.files).forEach(filename => {\n    const content = ctx.fileContents(filename);\n    ctx.writeContents(filename, sortAPI(content, filename));\n  });\n}\n\nmodule.exports = () => {\n  fileAPIs = {};\n\n  program\n    .version('0.1.0')\n    .option(\n      '-f, --file [file]',\n      'Specify which file to be transformed',\n      // default value\n      'components/**/index.+(zh-CN|en-US).md',\n    )\n    .option('-o, --output [output]', 'Specify component api output path', '~component-api.json')\n    .parse(process.argv);\n  // Get the markdown file all need to be transformed\n\n  /* eslint-disable no-console */\n  stream\n    .source(program.file)\n    .use(sortMiddleware)\n    .dest('.')\n    .then(() => {\n      if (program.output) {\n        const data = {};\n        Object.keys(fileAPIs).forEach(componentName => {\n          data[componentName] = {\n            static: [...fileAPIs[componentName].static],\n            size: [...fileAPIs[componentName].size],\n            dynamic: [...fileAPIs[componentName].dynamic],\n          };\n        });\n\n        const reportPath = path.resolve(program.output);\n        fs.writeFileSync(reportPath, JSON.stringify(data, null, 2), 'utf8');\n        console.log(chalk.cyan(`API list file: ${reportPath}`));\n      }\n    })\n    .then(() => {\n      console.log(chalk.green(`sort ant-design-vue api successfully!`));\n    });\n  /* eslint-enable no-console */\n};\n"
  },
  {
    "path": "antd-tools/utils/CleanUpStatsPlugin.js",
    "content": "// We should use `stats` props of webpack. But it not work in v4.\nclass CleanUpStatsPlugin {\n  constructor(option) {\n    this.option = {\n      MiniCSSExtractPlugin: true,\n      tsLoader: true,\n      ...option,\n    };\n  }\n\n  shouldPickStatChild(child) {\n    const { MiniCSSExtractPlugin } = this.option;\n    if (MiniCSSExtractPlugin && child.name.includes('mini-css-extract-plugin')) return false;\n    return true;\n  }\n\n  shouldPickWarning(message) {\n    const { tsLoader } = this.option;\n    if (tsLoader && /export .* was not found in .*/.test(message)) {\n      return false;\n    }\n    return true;\n  }\n\n  apply(compiler) {\n    compiler.hooks.done.tap('CleanUpStatsPlugin', stats => {\n      const { children, warnings } = stats.compilation;\n      if (Array.isArray(children)) {\n        stats.compilation.children = children.filter(child => this.shouldPickStatChild(child));\n      }\n      if (Array.isArray(warnings)) {\n        stats.compilation.warnings = warnings.filter(message => this.shouldPickWarning(message));\n      }\n    });\n  }\n}\n\nmodule.exports = CleanUpStatsPlugin;\n"
  },
  {
    "path": "antd-tools/utils/get-npm-args.js",
    "content": "'use strict';\n\n// NOTE: the following code was partially adopted from https://github.com/iarna/in-publish\nmodule.exports = function getNpmArgs() {\n  // https://github.com/iarna/in-publish/pull/14\n  if (process.env.npm_command) {\n    return [process.env.npm_command];\n  }\n\n  let npmArgv = null;\n\n  try {\n    npmArgv = JSON.parse(process.env.npm_config_argv);\n  } catch (err) {\n    return null;\n  }\n\n  if (typeof npmArgv !== 'object' || !npmArgv.cooked || !Array.isArray(npmArgv.cooked)) {\n    return null;\n  }\n\n  return npmArgv.cooked;\n};\n"
  },
  {
    "path": "antd-tools/utils/getChangelog.js",
    "content": "const fs = require('fs');\n\nmodule.exports = function getChangelog(file, version) {\n  const lines = fs.readFileSync(file).toString().split('\\n');\n  const changeLog = [];\n  const startPattern = new RegExp(`^## ${version}`);\n  const stopPattern = /^## /; // 前一个版本\n  const skipPattern = /^`/; // 日期\n  let begin = false;\n  for (let i = 0; i < lines.length; i += 1) {\n    const line = lines[i];\n    if (begin && stopPattern.test(line)) {\n      break;\n    }\n    if (begin && line && !skipPattern.test(line)) {\n      changeLog.push(line);\n    }\n    if (!begin) {\n      begin = startPattern.test(line);\n    }\n  }\n  return changeLog.join('\\n');\n};\n"
  },
  {
    "path": "antd-tools/utils/getRunCmdEnv.js",
    "content": "'use strict';\n\nconst path = require('path');\nconst isWindows = require('is-windows');\n\nmodule.exports = function getRunCmdEnv() {\n  const env = {};\n  Object.keys(process.env).forEach(key => {\n    env[key] = process.env[key];\n  });\n  // make sure `antd-tools/node_modules/.bin` in the PATH env\n  const nodeModulesBinDir = path.join(__dirname, '../../node_modules/.bin');\n\n  Object.entries(env)\n    .filter(v => v.slice(0, 1).pop().toLowerCase() === 'path')\n    .forEach(v => {\n      const key = v.slice(0, 1).pop();\n      env[key] = env[key]\n        ? `${nodeModulesBinDir}${isWindows() ? ';' : ':'}${env[key]}`\n        : nodeModulesBinDir;\n    });\n  return env;\n};\n"
  },
  {
    "path": "antd-tools/utils/projectHelper.js",
    "content": "const fs = require('fs');\nconst path = require('path');\n\nconst cwd = process.cwd();\n\nfunction getProjectPath(...filePath) {\n  return path.join(cwd, ...filePath);\n}\n\nfunction resolve(moduleName) {\n  return require.resolve(moduleName);\n}\n\n// We need hack the require to ensure use package module first\n// For example, `typescript` is required by `gulp-typescript` but provided by `antd`\n// we do not need for ant-design-vue\nlet injected = false;\nfunction injectRequire() {\n  if (injected) return;\n\n  const Module = require('module');\n\n  const oriRequire = Module.prototype.require;\n  Module.prototype.require = function (...args) {\n    const moduleName = args[0];\n    try {\n      return oriRequire.apply(this, args);\n    } catch (err) {\n      const newArgs = [...args];\n      if (moduleName[0] !== '/') {\n        newArgs[0] = getProjectPath('node_modules', moduleName);\n      }\n      return oriRequire.apply(this, newArgs);\n    }\n  };\n\n  injected = true;\n}\n\nfunction getConfig() {\n  const configPath = getProjectPath('.antd-tools.config.js');\n  if (fs.existsSync(configPath)) {\n    return require(configPath);\n  }\n\n  return {};\n}\n\n/**\n * 是否存在可用的browserslist config\n * https://github.com/browserslist/browserslist#queries\n * @returns\n */\nfunction isThereHaveBrowserslistConfig() {\n  try {\n    const packageJson = require(getProjectPath('package.json'));\n    if (packageJson.browserslist) {\n      return true;\n    }\n  } catch (e) {\n    //\n  }\n  if (fs.existsSync(getProjectPath('.browserslistrc'))) {\n    return true;\n  }\n  if (fs.existsSync(getProjectPath('browserslist'))) {\n    return true;\n  }\n  // parent项目的配置支持，需要再补充\n  // ROWSERSLIST ROWSERSLIST_ENV 变量的形式，需要再补充。\n  return false;\n}\n\nmodule.exports = {\n  getProjectPath,\n  resolve,\n  injectRequire,\n  getConfig,\n  isThereHaveBrowserslistConfig,\n};\n"
  },
  {
    "path": "babel.config.js",
    "content": "module.exports = {\n  env: {\n    test: {\n      presets: [['@babel/preset-env']],\n      plugins: [\n        ['@vue/babel-plugin-jsx', { mergeProps: false, enableObjectSlots: false }],\n        '@babel/plugin-proposal-optional-chaining',\n        '@babel/plugin-transform-object-assign',\n        '@babel/plugin-proposal-object-rest-spread',\n        '@babel/plugin-proposal-export-default-from',\n        '@babel/plugin-proposal-export-namespace-from',\n        '@babel/plugin-proposal-class-properties',\n        '@babel/plugin-syntax-dynamic-import',\n        '@babel/plugin-transform-runtime',\n        'transform-require-context',\n      ],\n    },\n  },\n};\n"
  },
  {
    "path": "build.sh",
    "content": "#!/usr/bin/env bash\nrm -rf dist\nmkdir dist\n./node_modules/.bin/webpack --config webpack.site.config.js\ncp dist/index.html index.html\n"
  },
  {
    "path": "components/__tests__/util/domHook.js",
    "content": "const __NULL__ = { notExist: true };\n\nexport function spyElementPrototypes(Element, properties) {\n  const propNames = Object.keys(properties);\n  const originDescriptors = {};\n\n  propNames.forEach(propName => {\n    const originDescriptor = Object.getOwnPropertyDescriptor(Element.prototype, propName);\n    originDescriptors[propName] = originDescriptor || __NULL__;\n\n    const spyProp = properties[propName];\n\n    if (typeof spyProp === 'function') {\n      // If is a function\n      Element.prototype[propName] = function spyFunc(...args) {\n        return spyProp.call(this, originDescriptor, ...args);\n      };\n    } else {\n      // Otherwise tread as a property\n      Object.defineProperty(Element.prototype, propName, {\n        ...spyProp,\n        set(value) {\n          if (spyProp.set) {\n            return spyProp.set.call(this, originDescriptor, value);\n          }\n          return originDescriptor.set(value);\n        },\n        get() {\n          if (spyProp.get) {\n            return spyProp.get.call(this, originDescriptor);\n          }\n          return originDescriptor.get();\n        },\n      });\n    }\n  });\n\n  return {\n    mockRestore() {\n      propNames.forEach(propName => {\n        const originDescriptor = originDescriptors[propName];\n        if (originDescriptor === __NULL__) {\n          delete Element.prototype[propName];\n        } else if (typeof originDescriptor === 'function') {\n          Element.prototype[propName] = originDescriptor;\n        } else {\n          Object.defineProperty(Element.prototype, propName, originDescriptor);\n        }\n      });\n    },\n  };\n}\n\nexport function spyElementPrototype(Element, propName, property) {\n  return spyElementPrototypes(Element, {\n    [propName]: property,\n  });\n}\n"
  },
  {
    "path": "components/_util/ActionButton.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { shallowRef, onMounted, defineComponent, onBeforeUnmount } from 'vue';\nimport Button from '../button';\nimport type { ButtonProps } from '../button';\nimport type { LegacyButtonType } from '../button/buttonTypes';\nimport { convertLegacyProps } from '../button/buttonTypes';\nimport useDestroyed from './hooks/useDestroyed';\nimport { objectType } from './type';\nimport { findDOMNode } from './props-util';\n\nconst actionButtonProps = {\n  type: {\n    type: String as PropType<LegacyButtonType>,\n  },\n  actionFn: Function as PropType<(...args: any[]) => any | PromiseLike<any>>,\n  close: Function,\n  autofocus: Boolean,\n  prefixCls: String,\n  buttonProps: objectType<ButtonProps>(),\n  emitEvent: Boolean,\n  quitOnNullishReturnValue: Boolean,\n};\n\nexport type ActionButtonProps = ExtractPropTypes<typeof actionButtonProps>;\n\nfunction isThenable<T>(thing?: PromiseLike<T>): boolean {\n  return !!(thing && thing.then);\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ActionButton',\n  props: actionButtonProps,\n  setup(props, { slots }) {\n    const clickedRef = shallowRef<boolean>(false);\n    const buttonRef = shallowRef();\n    const loading = shallowRef(false);\n    let timeoutId: any;\n    const isDestroyed = useDestroyed();\n    onMounted(() => {\n      if (props.autofocus) {\n        timeoutId = setTimeout(() => findDOMNode(buttonRef.value)?.focus?.());\n      }\n    });\n    onBeforeUnmount(() => {\n      clearTimeout(timeoutId);\n    });\n\n    const onInternalClose = (...args: any[]) => {\n      props.close?.(...args);\n    };\n\n    const handlePromiseOnOk = (returnValueOfOnOk?: PromiseLike<any>) => {\n      if (!isThenable(returnValueOfOnOk)) {\n        return;\n      }\n      loading.value = true;\n      returnValueOfOnOk!.then(\n        (...args: any[]) => {\n          if (!isDestroyed.value) {\n            loading.value = false;\n          }\n          onInternalClose(...args);\n          clickedRef.value = false;\n        },\n        (e: Error) => {\n          // See: https://github.com/ant-design/ant-design/issues/6183\n          if (!isDestroyed.value) {\n            loading.value = false;\n          }\n          clickedRef.value = false;\n          return Promise.reject(e);\n        },\n      );\n    };\n\n    const onClick = (e: MouseEvent) => {\n      const { actionFn } = props;\n      if (clickedRef.value) {\n        return;\n      }\n      clickedRef.value = true;\n      if (!actionFn) {\n        onInternalClose();\n        return;\n      }\n      let returnValueOfOnOk: PromiseLike<any>;\n      if (props.emitEvent) {\n        returnValueOfOnOk = actionFn(e);\n        if (props.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n          clickedRef.value = false;\n          onInternalClose(e);\n          return;\n        }\n      } else if (actionFn.length) {\n        returnValueOfOnOk = actionFn(props.close);\n        // https://github.com/ant-design/ant-design/issues/23358\n        clickedRef.value = false;\n      } else {\n        returnValueOfOnOk = actionFn();\n        if (!returnValueOfOnOk) {\n          onInternalClose();\n          return;\n        }\n      }\n      handlePromiseOnOk(returnValueOfOnOk);\n    };\n    return () => {\n      const { type, prefixCls, buttonProps } = props;\n      return (\n        <Button\n          {...convertLegacyProps(type)}\n          onClick={onClick}\n          loading={loading.value}\n          prefixCls={prefixCls}\n          {...buttonProps}\n          ref={buttonRef}\n          v-slots={slots}\n        ></Button>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/BaseInput.tsx",
    "content": "import type { PropType } from 'vue';\nimport { computed, defineComponent, shallowRef, ref, watch } from 'vue';\nimport PropTypes from './vue-types';\nimport type { BaseInputInnerExpose } from './BaseInputInner';\nimport BaseInputInner from './BaseInputInner';\nimport { styleObjectToString } from '../vc-util/Dom/css';\n\nexport interface BaseInputExpose {\n  focus: () => void;\n  blur: () => void;\n  input: HTMLInputElement | HTMLTextAreaElement | null;\n  setSelectionRange: (\n    start: number,\n    end: number,\n    direction?: 'forward' | 'backward' | 'none',\n  ) => void;\n  select: () => void;\n  getSelectionStart: () => number | null;\n  getSelectionEnd: () => number | null;\n  getScrollTop: () => number | null;\n  setScrollTop: (scrollTop: number) => void;\n}\nconst BaseInput = defineComponent({\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: {\n    disabled: PropTypes.looseBool,\n    type: PropTypes.string,\n    value: PropTypes.any,\n    lazy: PropTypes.bool.def(true),\n    tag: {\n      type: String as PropType<'input' | 'textarea'>,\n      default: 'input',\n    },\n    size: PropTypes.string,\n    style: PropTypes.oneOfType([String, Object]),\n    class: PropTypes.string,\n  },\n  emits: [\n    'change',\n    'input',\n    'blur',\n    'keydown',\n    'focus',\n    'compositionstart',\n    'compositionend',\n    'keyup',\n    'paste',\n    'mousedown',\n  ],\n  setup(props, { emit, attrs, expose }) {\n    const inputRef = shallowRef<BaseInputInnerExpose>(null);\n    const renderValue = ref();\n    const isComposing = ref(false);\n    watch(\n      [() => props.value, isComposing],\n      () => {\n        if (isComposing.value) return;\n        renderValue.value = props.value;\n      },\n      { immediate: true },\n    );\n    const handleChange = (e: Event) => {\n      emit('change', e);\n    };\n    const onCompositionstart = (e: CompositionEvent) => {\n      isComposing.value = true;\n      (e.target as any).composing = true;\n      emit('compositionstart', e);\n    };\n    const onCompositionend = (e: CompositionEvent) => {\n      isComposing.value = false;\n      (e.target as any).composing = false;\n      emit('compositionend', e);\n      const event = document.createEvent('HTMLEvents');\n      event.initEvent('input', true, true);\n      e.target.dispatchEvent(event);\n      handleChange(e);\n    };\n    const handleInput = (e: Event) => {\n      if (isComposing.value && props.lazy) {\n        renderValue.value = (e.target as HTMLInputElement).value;\n        return;\n      }\n      emit('input', e);\n    };\n\n    const handleBlur = (e: Event) => {\n      emit('blur', e);\n    };\n    const handleFocus = (e: Event) => {\n      emit('focus', e);\n    };\n\n    const focus = () => {\n      if (inputRef.value) {\n        inputRef.value.focus();\n      }\n    };\n    const blur = () => {\n      if (inputRef.value) {\n        inputRef.value.blur();\n      }\n    };\n    const handleKeyDown = (e: KeyboardEvent) => {\n      emit('keydown', e);\n    };\n    const handleKeyUp = (e: KeyboardEvent) => {\n      emit('keyup', e);\n    };\n    const setSelectionRange = (\n      start: number,\n      end: number,\n      direction?: 'forward' | 'backward' | 'none',\n    ) => {\n      inputRef.value?.setSelectionRange(start, end, direction);\n    };\n\n    const select = () => {\n      inputRef.value?.select();\n    };\n    expose({\n      focus,\n      blur,\n      input: computed(() => inputRef.value?.input),\n      setSelectionRange,\n      select,\n      getSelectionStart: () => inputRef.value?.getSelectionStart(),\n      getSelectionEnd: () => inputRef.value?.getSelectionEnd(),\n      getScrollTop: () => inputRef.value?.getScrollTop(),\n    });\n    const handleMousedown = (e: MouseEvent) => {\n      emit('mousedown', e);\n    };\n    const handlePaste = (e: ClipboardEvent) => {\n      emit('paste', e);\n    };\n    const styleString = computed(() => {\n      return props.style && typeof props.style !== 'string'\n        ? styleObjectToString(props.style)\n        : props.style;\n    });\n    return () => {\n      const { style, lazy, ...restProps } = props;\n      return (\n        <BaseInputInner\n          {...restProps}\n          {...attrs}\n          style={styleString.value}\n          onInput={handleInput}\n          onChange={handleChange}\n          onBlur={handleBlur}\n          onFocus={handleFocus}\n          ref={inputRef}\n          value={renderValue.value}\n          onCompositionstart={onCompositionstart}\n          onCompositionend={onCompositionend}\n          onKeyup={handleKeyUp}\n          onKeydown={handleKeyDown}\n          onPaste={handlePaste}\n          onMousedown={handleMousedown}\n        />\n      );\n    };\n  },\n});\n\nexport default BaseInput;\n"
  },
  {
    "path": "components/_util/BaseInputInner.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, shallowRef } from 'vue';\nimport PropTypes from './vue-types';\n\nexport interface BaseInputInnerExpose {\n  focus: () => void;\n  blur: () => void;\n  input: HTMLInputElement | HTMLTextAreaElement | null;\n  setSelectionRange: (\n    start: number,\n    end: number,\n    direction?: 'forward' | 'backward' | 'none',\n  ) => void;\n  select: () => void;\n  getSelectionStart: () => number | null;\n  getSelectionEnd: () => number | null;\n  getScrollTop: () => number | null;\n  setScrollTop: (scrollTop: number) => void;\n}\nconst BaseInputInner = defineComponent({\n  compatConfig: { MODE: 3 },\n  // inheritAttrs: false,\n  props: {\n    disabled: PropTypes.looseBool,\n    type: PropTypes.string,\n    value: PropTypes.any,\n    tag: {\n      type: String as PropType<'input' | 'textarea'>,\n      default: 'input',\n    },\n    size: PropTypes.string,\n    onChange: Function as PropType<(e: Event) => void>,\n    onInput: Function as PropType<(e: Event) => void>,\n    onBlur: Function as PropType<(e: Event) => void>,\n    onFocus: Function as PropType<(e: Event) => void>,\n    onKeydown: Function as PropType<(e: Event) => void>,\n    onCompositionstart: Function as PropType<(e: Event) => void>,\n    onCompositionend: Function as PropType<(e: Event) => void>,\n    onKeyup: Function as PropType<(e: Event) => void>,\n    onPaste: Function as PropType<(e: Event) => void>,\n    onMousedown: Function as PropType<(e: Event) => void>,\n  },\n  emits: [\n    'change',\n    'input',\n    'blur',\n    'keydown',\n    'focus',\n    'compositionstart',\n    'compositionend',\n    'keyup',\n    'paste',\n    'mousedown',\n  ],\n  setup(props, { expose }) {\n    const inputRef = shallowRef(null);\n\n    const focus = () => {\n      if (inputRef.value) {\n        inputRef.value.focus();\n      }\n    };\n    const blur = () => {\n      if (inputRef.value) {\n        inputRef.value.blur();\n      }\n    };\n    const setSelectionRange = (\n      start: number,\n      end: number,\n      direction?: 'forward' | 'backward' | 'none',\n    ) => {\n      inputRef.value?.setSelectionRange(start, end, direction);\n    };\n\n    const select = () => {\n      inputRef.value?.select();\n    };\n    expose({\n      focus,\n      blur,\n      input: inputRef,\n      setSelectionRange,\n      select,\n      getSelectionStart: () => inputRef.value?.selectionStart,\n      getSelectionEnd: () => inputRef.value?.selectionEnd,\n      getScrollTop: () => inputRef.value?.scrollTop,\n    });\n    return () => {\n      const { tag: Tag, value, ...restProps } = props;\n      return <Tag {...restProps} ref={inputRef} value={value} />;\n    };\n  },\n});\n\nexport default BaseInputInner;\n"
  },
  {
    "path": "components/_util/BaseMixin.ts",
    "content": "import { nextTick } from 'vue';\nimport { getOptionProps } from './props-util';\n\nexport default {\n  methods: {\n    setState(state = {}, callback: () => any) {\n      let newState = typeof state === 'function' ? state(this.$data, this.$props) : state;\n      if (this.getDerivedStateFromProps) {\n        const s = this.getDerivedStateFromProps(getOptionProps(this), {\n          ...this.$data,\n          ...newState,\n        });\n        if (s === null) {\n          return;\n        } else {\n          newState = { ...newState, ...(s || {}) };\n        }\n      }\n      Object.assign(this.$data, newState);\n      if (this._.isMounted) {\n        this.$forceUpdate();\n      }\n      nextTick(() => {\n        callback && callback();\n      });\n    },\n    __emit() {\n      // 直接调用事件，底层组件不需要vueTool记录events\n      // eslint-disable-next-line prefer-rest-params\n      const args = [].slice.call(arguments, 0);\n      let eventName = args[0];\n      eventName = `on${eventName[0].toUpperCase()}${eventName.substring(1)}`;\n      const event = this.$props[eventName] || this.$attrs[eventName];\n      if (args.length && event) {\n        if (Array.isArray(event)) {\n          for (let i = 0, l = event.length; i < l; i++) {\n            event[i](...args.slice(1));\n          }\n        } else {\n          event(...args.slice(1));\n        }\n      }\n    },\n  },\n};\n"
  },
  {
    "path": "components/_util/EventInterface.ts",
    "content": "export type FocusEventHandler = (e: FocusEvent) => void;\nexport type MouseEventHandler = (e: MouseEvent) => void;\nexport type KeyboardEventHandler = (e: KeyboardEvent) => void;\nexport type CompositionEventHandler = (e: CompositionEvent) => void;\nexport type ClipboardEventHandler = (e: ClipboardEvent) => void;\nexport type ChangeEventHandler = (e: ChangeEvent) => void;\nexport type WheelEventHandler = (e: WheelEvent) => void;\nexport type ChangeEvent = Event & {\n  target: {\n    value?: string | undefined;\n  };\n};\nexport type CheckboxChangeEvent = Event & {\n  target: {\n    checked?: boolean;\n  };\n};\n\nexport type EventHandler = (...args: any[]) => void;\n"
  },
  {
    "path": "components/_util/KeyCode.ts",
    "content": "/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nconst KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33, // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34, // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35, // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36, // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37, // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38, // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39, // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40, // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45, // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46, // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63, // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91, // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186, // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189, // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187, // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188, // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190, // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191, // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192, // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222, // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219, // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220, // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221, // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e: KeyboardEvent) {\n    const { keyCode } = e;\n    if (\n      (e.altKey && !e.ctrlKey) ||\n      e.metaKey ||\n      // Function keys don't generate text\n      (keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12)\n    ) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode: number) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  },\n};\n\nexport default KeyCode;\n"
  },
  {
    "path": "components/_util/Portal.tsx",
    "content": "import PropTypes from './vue-types';\nimport {\n  defineComponent,\n  nextTick,\n  onBeforeMount,\n  onMounted,\n  onUpdated,\n  Teleport,\n  watch,\n} from 'vue';\nimport { useInjectPortal } from '../vc-trigger/context';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Portal',\n  inheritAttrs: false,\n  props: {\n    getContainer: PropTypes.func.isRequired,\n    didUpdate: Function,\n  },\n  setup(props, { slots }) {\n    let isSSR = true;\n    // getContainer 不会改变，不用响应式\n    let container: HTMLElement;\n    const { shouldRender } = useInjectPortal();\n\n    function setContainer() {\n      if (shouldRender.value) {\n        container = props.getContainer();\n      }\n    }\n\n    onBeforeMount(() => {\n      isSSR = false;\n      // drawer\n      setContainer();\n    });\n    onMounted(() => {\n      if (container) return;\n      // https://github.com/vueComponent/ant-design-vue/issues/6937\n      setContainer();\n    });\n\n    const stopWatch = watch(shouldRender, () => {\n      if (shouldRender.value && !container) {\n        container = props.getContainer();\n      }\n      if (container) {\n        stopWatch();\n      }\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        if (shouldRender.value) {\n          props.didUpdate?.(props);\n        }\n      });\n    });\n    // onBeforeUnmount(() => {\n    //   if (container && container.parentNode) {\n    //     container.parentNode.removeChild(container);\n    //   }\n    // });\n    return () => {\n      if (!shouldRender.value) return null;\n      if (isSSR) {\n        return slots.default?.();\n      }\n      return container ? <Teleport to={container} v-slots={slots}></Teleport> : null;\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/PortalWrapper.tsx",
    "content": "import PropTypes from './vue-types';\nimport Portal from './Portal';\nimport {\n  defineComponent,\n  shallowRef,\n  watch,\n  onMounted,\n  onBeforeUnmount,\n  onUpdated,\n  nextTick,\n  computed,\n} from 'vue';\nimport canUseDom from './canUseDom';\nimport raf from './raf';\nimport { booleanType } from './type';\nimport useScrollLocker from './hooks/useScrollLocker';\n\nlet openCount = 0;\nconst supportDom = canUseDom();\n\n/** @private Test usage only */\nexport function getOpenCount() {\n  return process.env.NODE_ENV === 'test' ? openCount : 0;\n}\n\nconst getParent = (getContainer: GetContainer) => {\n  if (!supportDom) {\n    return null;\n  }\n  if (getContainer) {\n    if (typeof getContainer === 'string') {\n      return document.querySelectorAll(getContainer)[0] as HTMLElement;\n    }\n    if (typeof getContainer === 'function') {\n      return getContainer();\n    }\n    if (typeof getContainer === 'object' && getContainer instanceof window.HTMLElement) {\n      return getContainer;\n    }\n  }\n  return document.body;\n};\n\nexport type GetContainer = string | HTMLElement | (() => HTMLElement);\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PortalWrapper',\n  inheritAttrs: false,\n  props: {\n    wrapperClassName: String,\n    forceRender: { type: Boolean, default: undefined },\n    getContainer: PropTypes.any,\n    visible: { type: Boolean, default: undefined },\n    autoLock: booleanType(),\n    didUpdate: Function,\n  },\n\n  setup(props, { slots }) {\n    const container = shallowRef<HTMLElement>();\n    const componentRef = shallowRef();\n    const rafId = shallowRef<number>();\n    const triggerUpdate = shallowRef(1);\n    const defaultContainer = canUseDom() && document.createElement('div');\n    const removeCurrentContainer = () => {\n      // Portal will remove from `parentNode`.\n      // Let's handle this again to avoid refactor issue.\n      if (container.value === defaultContainer) {\n        container.value?.parentNode?.removeChild(container.value);\n      }\n      container.value = null;\n    };\n    let parent: HTMLElement = null;\n    const attachToParent = (force = false) => {\n      if (force || (container.value && !container.value.parentNode)) {\n        parent = getParent(props.getContainer);\n        if (parent) {\n          parent.appendChild(container.value);\n          return true;\n        }\n\n        return false;\n      }\n\n      return true;\n    };\n    const getContainer = () => {\n      if (!supportDom) {\n        return null;\n      }\n      if (!container.value) {\n        container.value = defaultContainer;\n        attachToParent(true);\n      }\n      setWrapperClassName();\n      return container.value;\n    };\n    const setWrapperClassName = () => {\n      const { wrapperClassName } = props;\n      if (container.value && wrapperClassName && wrapperClassName !== container.value.className) {\n        container.value.className = wrapperClassName;\n      }\n    };\n    onUpdated(() => {\n      setWrapperClassName();\n      attachToParent();\n    });\n\n    useScrollLocker(\n      computed(() => {\n        return (\n          props.autoLock &&\n          props.visible &&\n          canUseDom() &&\n          (container.value === document.body || container.value === defaultContainer)\n        );\n      }),\n    );\n    onMounted(() => {\n      let init = false;\n      watch(\n        [() => props.visible, () => props.getContainer],\n        ([visible, getContainer], [prevVisible, prevGetContainer]) => {\n          // Update count\n          if (supportDom) {\n            parent = getParent(props.getContainer);\n            if (parent === document.body) {\n              if (visible && !prevVisible) {\n                openCount += 1;\n              } else if (init) {\n                openCount -= 1;\n              }\n            }\n          }\n\n          if (init) {\n            // Clean up container if needed\n            const getContainerIsFunc =\n              typeof getContainer === 'function' && typeof prevGetContainer === 'function';\n            if (\n              getContainerIsFunc\n                ? getContainer.toString() !== prevGetContainer.toString()\n                : getContainer !== prevGetContainer\n            ) {\n              removeCurrentContainer();\n            }\n          }\n          init = true;\n        },\n        { immediate: true, flush: 'post' },\n      );\n\n      nextTick(() => {\n        if (!attachToParent()) {\n          rafId.value = raf(() => {\n            triggerUpdate.value += 1;\n          });\n        }\n      });\n    });\n\n    onBeforeUnmount(() => {\n      const { visible } = props;\n      if (supportDom && parent === document.body) {\n        // 离开时不会 render， 导到离开时数值不变，改用 func 。。\n        openCount = visible && openCount ? openCount - 1 : openCount;\n      }\n      removeCurrentContainer();\n      raf.cancel(rafId.value);\n    });\n    return () => {\n      const { forceRender, visible } = props;\n      let portal = null;\n      const childProps = {\n        getOpenCount: () => openCount,\n        getContainer,\n      };\n      if (triggerUpdate.value && (forceRender || visible || componentRef.value)) {\n        portal = (\n          <Portal\n            getContainer={getContainer}\n            ref={componentRef}\n            didUpdate={props.didUpdate}\n            v-slots={{ default: () => slots.default?.(childProps) }}\n          ></Portal>\n        );\n      }\n      return portal;\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/__mocks__/Portal.tsx",
    "content": "import { defineComponent } from 'vue';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Portal',\n  inheritAttrs: false,\n  props: ['getContainer'],\n  setup(_props, { slots }) {\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/__mocks__/RenderSlot.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { customRenderSlot } from '../vnode';\n\nexport default defineComponent({\n  name: 'RenderSlot',\n  setup(_props, { slots }) {\n    return () => {\n      return customRenderSlot(slots, 'default', {}, () => ['default value']);\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/__tests__/easings.test.js",
    "content": "import { easeInOutCubic } from '../easings';\n\ndescribe('Test easings', () => {\n  it('easeInOutCubic return value', () => {\n    const nums = [];\n    // eslint-disable-next-line no-plusplus\n    for (let index = 0; index < 5; index++) {\n      nums.push(easeInOutCubic(index, 1, 5, 4));\n    }\n\n    expect(nums).toEqual([1, 1.25, 3, 4.75, 5]);\n  });\n});\n"
  },
  {
    "path": "components/_util/__tests__/scrollTo.test.js",
    "content": "import scrollTo from '../scrollTo';\n\ndescribe('Test ScrollTo function', () => {\n  let dateNowMock;\n\n  beforeAll(() => {\n    jest.useFakeTimers();\n  });\n\n  afterAll(() => {\n    jest.useRealTimers();\n  });\n\n  beforeEach(() => {\n    dateNowMock = jest\n      .spyOn(Date, 'now')\n      .mockImplementationOnce(() => 0)\n      .mockImplementationOnce(() => 1000);\n  });\n\n  afterEach(() => {\n    dateNowMock.mockRestore();\n  });\n\n  it('test scrollTo', async () => {\n    const scrollToSpy = jest.spyOn(window, 'scrollTo').mockImplementation((x, y) => {\n      window.scrollY = y;\n      window.pageYOffset = y;\n    });\n\n    scrollTo(1000);\n\n    jest.runAllTimers();\n    expect(window.pageYOffset).toBe(1000);\n\n    scrollToSpy.mockRestore();\n  });\n\n  it('test callback - option', async () => {\n    const cbMock = jest.fn();\n    scrollTo(1000, {\n      callback: cbMock,\n    });\n    jest.runAllTimers();\n    expect(cbMock).toHaveBeenCalledTimes(1);\n  });\n\n  it('test getContainer - option', async () => {\n    const div = document.createElement('div');\n    scrollTo(1000, {\n      getContainer: () => div,\n    });\n    jest.runAllTimers();\n    expect(div.scrollTop).toBe(1000);\n  });\n});\n"
  },
  {
    "path": "components/_util/__tests__/unreachableException.test.js",
    "content": "import UnreachableException from '../unreachableException';\n\ndescribe('UnreachableException', () => {\n  it('error thrown matches snapshot', () => {\n    const exception = new UnreachableException('some value');\n    expect(exception.error.message).toMatchInlineSnapshot(`\"unreachable case: \\\\\"some value\\\\\"\"`);\n  });\n});\n"
  },
  {
    "path": "components/_util/__tests__/vNode.test.js",
    "content": "import RenderSlot from '../__mocks__/RenderSlot';\nimport { mount } from '@vue/test-utils';\nimport { nextTick } from 'vue';\n\ndescribe('render slot content', () => {\n  it('renders slot content', () => {\n    const wrapper = mount(RenderSlot, {\n      slots: {\n        default: () => 'This is slot content',\n      },\n    });\n\n    expect(wrapper.html()).toContain('This is slot content');\n  });\n\n  it('render default value when slot is fragment', async () => {\n    const wrapper = mount(RenderSlot, {\n      slots: {\n        default: () => <></>,\n      },\n    });\n\n    await nextTick();\n    expect(wrapper.html()).toContain('default value');\n  });\n});\n"
  },
  {
    "path": "components/_util/canUseDom.ts",
    "content": "function canUseDom() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n\nexport default canUseDom;\n"
  },
  {
    "path": "components/_util/classNames.ts",
    "content": "import { isArray, isString, isObject } from './util';\nfunction classNames(...args: any[]) {\n  const classes = [];\n  for (let i = 0; i < args.length; i++) {\n    const value = args[i];\n    if (!value) continue;\n    if (isString(value)) {\n      classes.push(value);\n    } else if (isArray(value)) {\n      for (let i = 0; i < value.length; i++) {\n        const inner = classNames(value[i]);\n        if (inner) {\n          classes.push(inner);\n        }\n      }\n    } else if (isObject(value)) {\n      for (const name in value) {\n        if (value[name]) {\n          classes.push(name);\n        }\n      }\n    }\n  }\n  return classes.join(' ');\n}\n\nexport default classNames;\n"
  },
  {
    "path": "components/_util/collapseMotion.tsx",
    "content": "import { nextTick } from 'vue';\nimport { addClass, removeClass } from '../vc-util/Dom/class';\nimport type { CSSMotionProps } from './transition';\n\nconst collapseMotion = (name = 'ant-motion-collapse', appear = true): CSSMotionProps => {\n  return {\n    name,\n    appear,\n    css: true,\n    onBeforeEnter: (node: HTMLDivElement) => {\n      node.style.height = '0px';\n      node.style.opacity = '0';\n      addClass(node, name);\n    },\n    onEnter: (node: HTMLDivElement) => {\n      nextTick(() => {\n        node.style.height = `${node.scrollHeight}px`;\n        node.style.opacity = '1';\n      });\n    },\n    onAfterEnter: (node: HTMLDivElement) => {\n      if (node) {\n        removeClass(node, name);\n        node.style.height = null;\n        node.style.opacity = null;\n      }\n    },\n    onBeforeLeave: (node: HTMLDivElement) => {\n      addClass(node, name);\n      node.style.height = `${node.offsetHeight}px`;\n      node.style.opacity = null;\n    },\n    onLeave: (node: HTMLDivElement) => {\n      setTimeout(() => {\n        node.style.height = '0px';\n        node.style.opacity = '0';\n      });\n    },\n    onAfterLeave: (node: HTMLDivElement) => {\n      if (node) {\n        removeClass(node, name);\n        if (node.style) {\n          node.style.height = null;\n          node.style.opacity = null;\n        }\n      }\n    },\n  };\n};\nexport default collapseMotion;\n"
  },
  {
    "path": "components/_util/colors.ts",
    "content": "import type { PresetColorKey } from '../theme/interface';\nimport { PresetColors } from '../theme/interface';\n\ntype InverseColor = `${PresetColorKey}-inverse`;\nconst inverseColors = PresetColors.map<InverseColor>(color => `${color}-inverse`);\n\nexport const PresetStatusColorTypes = [\n  'success',\n  'processing',\n  'error',\n  'default',\n  'warning',\n] as const;\n\nexport type PresetColorType = PresetColorKey | InverseColor;\n\nexport type PresetStatusColorType = (typeof PresetStatusColorTypes)[number];\n\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color?: any, includeInverse = true) {\n  if (includeInverse) {\n    return [...inverseColors, ...PresetColors].includes(color);\n  }\n\n  return PresetColors.includes(color);\n}\n\nexport function isPresetStatusColor(color?: any): color is PresetStatusColorType {\n  return PresetStatusColorTypes.includes(color);\n}\n"
  },
  {
    "path": "components/_util/component-classes.ts",
    "content": "/**\n * source by `component-classes`\n * https://github.com/component/classes.git\n */\n\nimport indexOf from 'lodash-es/indexOf';\n\n/**\n * Whitespace regexp.\n */\nconst re = /\\s+/;\n\nexport class ClassList {\n  el: Element;\n  list: DOMTokenList;\n\n  constructor(el: Element) {\n    if (!el || !el.nodeType) {\n      throw new Error('A DOM element reference is required');\n    }\n    this.el = el;\n    this.list = el.classList;\n  }\n\n  array() {\n    const className = this.el.getAttribute('class') || '';\n    const str = className.replace(/^\\s+|\\s+$/g, '');\n    const arr = str.split(re);\n    if ('' === arr[0]) arr.shift();\n    return arr;\n  }\n\n  /**\n   * Add class `name` if not already present.\n   *\n   * @param {String} name\n   * @return {ClassList}\n   * @api public\n   */\n  add(name: string): ClassList {\n    // classList\n    if (this.list) {\n      this.list.add(name);\n      return this;\n    }\n\n    // fallback\n    const arr = this.array();\n    const i = indexOf(arr, name);\n    if (!~i) arr.push(name);\n    this.el.className = arr.join(' ');\n    return this;\n  }\n  /**\n   * Remove class `name` when present, or\n   * pass a regular expression to remove\n   * any which match.\n   *\n   * @param {String|RegExp} name\n   * @return {ClassList}\n   * @api public\n   */\n  remove(name: string | RegExp): ClassList {\n    if ('[object RegExp]' === toString.call(name)) {\n      return this._removeMatching(name as RegExp);\n    }\n\n    // classList\n    if (this.list) {\n      this.list.remove(name as string);\n      return this;\n    }\n\n    // fallback\n    const arr = this.array();\n    const i = indexOf(arr, name);\n    if (~i) arr.splice(i, 1);\n    this.el.className = arr.join(' ');\n    return this;\n  }\n  /**\n   * Remove all classes matching `re`.\n   *\n   * @param {RegExp} re\n   * @return {ClassList}\n   * @api private\n   */\n  _removeMatching(re: RegExp): ClassList {\n    const arr = this.array();\n    for (let i = 0; i < arr.length; i++) {\n      if (re.test(arr[i])) {\n        this.remove(arr[i]);\n      }\n    }\n    return this;\n  }\n\n  /**\n   * Toggle class `name`, can force state via `force`.\n   *\n   * For browsers that support classList, but do not support `force` yet,\n   * the mistake will be detected and corrected.\n   *\n   * @param {String} name\n   * @param {Boolean} force\n   * @return {ClassList}\n   * @api public\n   */\n  toggle(name: string, force: boolean): ClassList {\n    // classList\n    if (this.list) {\n      if ('undefined' !== typeof force) {\n        if (force !== this.list.toggle(name, force)) {\n          this.list.toggle(name); // toggle again to correct\n        }\n      } else {\n        this.list.toggle(name);\n      }\n      return this;\n    }\n\n    // fallback\n    if ('undefined' !== typeof force) {\n      if (!force) {\n        this.remove(name);\n      } else {\n        this.add(name);\n      }\n    } else {\n      if (this.has(name)) {\n        this.remove(name);\n      } else {\n        this.add(name);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Check if class `name` is present.\n   *\n   * @param {String} name\n   * @api public\n   */\n  has(name: string) {\n    return this.list ? this.list.contains(name) : !!~indexOf(this.array(), name);\n  }\n  /**\n   * Check if class `name` is present.\n   *\n   * @param {String} name\n   * @api public\n   */\n  contains(name: string) {\n    return this.has(name);\n  }\n}\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\nexport default function (el: Element): ClassList {\n  return new ClassList(el);\n}\n"
  },
  {
    "path": "components/_util/copy-to-clipboard/index.ts",
    "content": "import deselectCurrent from './toggle-selection';\n\ninterface Options {\n  debug?: boolean;\n  message?: string;\n  format?: string; // MIME type\n  onCopy?: (clipboardData: object) => void;\n}\n\nconst clipboardToIE11Formatting = {\n  'text/plain': 'Text',\n  'text/html': 'Url',\n  default: 'Text',\n};\n\nconst defaultMessage = 'Copy to clipboard: #{key}, Enter';\n\nfunction format(message: string) {\n  const copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C';\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text: string, options?: Options): boolean {\n  let message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  const debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement('span');\n    mark.textContent = text;\n    // reset user styles for span element\n    mark.style.all = 'unset';\n    // prevents scrolling to the end of the page\n    mark.style.position = 'fixed';\n    mark.style.top = 0;\n    mark.style.clip = 'rect(0, 0, 0, 0)';\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = 'pre';\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = 'text';\n    mark.style.MozUserSelect = 'text';\n    mark.style.msUserSelect = 'text';\n    mark.style.userSelect = 'text';\n    mark.addEventListener('copy', function (e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === 'undefined') {\n          // IE 11\n          debug && console.warn('unable to use e.clipboardData');\n          debug && console.warn('trying IE specific stuff');\n          (window as any).clipboardData.clearData();\n          const format =\n            clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting['default'];\n          (window as any).clipboardData.setData(format, text);\n        } else {\n          // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    const successful = document.execCommand('copy');\n    if (!successful) {\n      throw new Error('copy command was unsuccessful');\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error('unable to copy using execCommand: ', err);\n    debug && console.warn('trying IE specific stuff');\n    try {\n      (window as any).clipboardData.setData(options.format || 'text', text);\n      options.onCopy && options.onCopy((window as any).clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error('unable to copy using clipboardData: ', err);\n      debug && console.error('falling back to prompt');\n      message = format('message' in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == 'function') {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nexport default copy;\n"
  },
  {
    "path": "components/_util/copy-to-clipboard/toggle-selection.ts",
    "content": "// copy from https://github.com/sudodoki/toggle-selection\n// refactor to esm\nconst deselectCurrent = (): (() => void) => {\n  const selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  let active = document.activeElement as any;\n\n  const ranges = [];\n  for (let i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (\n    active.tagName.toUpperCase() // .toUpperCase handles XHTML\n  ) {\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' && selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function (range) {\n        selection.addRange(range);\n      });\n    }\n\n    active && active.focus();\n  };\n};\nexport default deselectCurrent;\n"
  },
  {
    "path": "components/_util/createContext.ts",
    "content": "import { inject, provide, reactive, watchEffect } from 'vue';\n\nfunction createContext<T extends Record<string, any>>(defaultValue?: T) {\n  const contextKey = Symbol('contextKey');\n  const useProvide = (props: T, newProps?: T) => {\n    const mergedProps = reactive<T>({} as T);\n    provide(contextKey, mergedProps);\n    watchEffect(() => {\n      Object.assign(mergedProps, props, newProps || {});\n    });\n    return mergedProps;\n  };\n  const useInject = () => {\n    return inject(contextKey, defaultValue as T) || ({} as T);\n  };\n  return {\n    useProvide,\n    useInject,\n  };\n}\n\nexport default createContext;\n"
  },
  {
    "path": "components/_util/createRef.ts",
    "content": "export interface RefObject extends Function {\n  current?: any;\n}\n\nfunction createRef(): any {\n  const func: RefObject = (node: any) => {\n    func.current = node;\n  };\n  return func;\n}\n\nexport function fillRef<T>(ref, node: T) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else if (typeof ref === 'object' && ref && 'current' in ref) {\n    (ref as any).current = node;\n  }\n}\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef<T>(...refs: any[]) {\n  return (node: T) => {\n    refs.forEach(ref => {\n      fillRef(ref, node);\n    });\n  };\n}\n\nexport default createRef;\n"
  },
  {
    "path": "components/_util/cssinjs/Cache.ts",
    "content": "export type KeyType = string | number;\ntype ValueType = [number, any]; // [times, realValue]\nconst SPLIT = '%';\nclass Entity {\n  instanceId: string;\n  constructor(instanceId: string) {\n    this.instanceId = instanceId;\n  }\n  /** @private Internal cache map. Do not access this directly */\n  cache = new Map<string, ValueType>();\n\n  get(keys: KeyType[] | string): ValueType | null {\n    return this.cache.get(Array.isArray(keys) ? keys.join(SPLIT) : keys) || null;\n  }\n\n  update(keys: KeyType[] | string, valueFn: (origin: ValueType | null) => ValueType | null) {\n    const path = Array.isArray(keys) ? keys.join(SPLIT) : keys;\n    const prevValue = this.cache.get(path)!;\n    const nextValue = valueFn(prevValue);\n\n    if (nextValue === null) {\n      this.cache.delete(path);\n    } else {\n      this.cache.set(path, nextValue);\n    }\n  }\n}\n\nexport default Entity;\n"
  },
  {
    "path": "components/_util/cssinjs/Keyframes.ts",
    "content": "import type { CSSInterpolation } from './hooks/useStyleRegister';\n\nclass Keyframe {\n  private name: string;\n  style: CSSInterpolation;\n\n  constructor(name: string, style: CSSInterpolation) {\n    this.name = name;\n    this.style = style;\n  }\n\n  getName(hashId = ''): string {\n    return hashId ? `${hashId}-${this.name}` : this.name;\n  }\n\n  _keyframe = true;\n}\n\nexport default Keyframe;\n"
  },
  {
    "path": "components/_util/cssinjs/StyleContext.tsx",
    "content": "import type { ShallowRef, ExtractPropTypes, InjectionKey, Ref } from 'vue';\nimport {\n  provide,\n  defineComponent,\n  unref,\n  inject,\n  watch,\n  shallowRef,\n  getCurrentInstance,\n} from 'vue';\nimport CacheEntity from './Cache';\nimport type { Linter } from './linters/interface';\nimport type { Transformer } from './transformers/interface';\nimport { arrayType, booleanType, objectType, someType, stringType, withInstall } from '../type';\nexport const ATTR_TOKEN = 'data-token-hash';\nexport const ATTR_MARK = 'data-css-hash';\nexport const ATTR_CACHE_PATH = 'data-cache-path';\n\n// Mark css-in-js instance in style element\nexport const CSS_IN_JS_INSTANCE = '__cssinjs_instance__';\n\nexport function createCache() {\n  const cssinjsInstanceId = Math.random().toString(12).slice(2);\n\n  // Tricky SSR: Move all inline style to the head.\n  // PS: We do not recommend tricky mode.\n  if (typeof document !== 'undefined' && document.head && document.body) {\n    const styles = document.body.querySelectorAll(`style[${ATTR_MARK}]`) || [];\n    const { firstChild } = document.head;\n\n    Array.from(styles).forEach(style => {\n      (style as any)[CSS_IN_JS_INSTANCE] = (style as any)[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;\n\n      // Not force move if no head\n      // Not force move if no head\n      if ((style as any)[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n        document.head.insertBefore(style, firstChild);\n      }\n    });\n\n    // Deduplicate of moved styles\n    const styleHash: Record<string, boolean> = {};\n    Array.from(document.querySelectorAll(`style[${ATTR_MARK}]`)).forEach(style => {\n      const hash = style.getAttribute(ATTR_MARK)!;\n      if (styleHash[hash]) {\n        if ((style as any)[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n          style.parentNode?.removeChild(style);\n        }\n      } else {\n        styleHash[hash] = true;\n      }\n    });\n  }\n\n  return new CacheEntity(cssinjsInstanceId);\n}\n\nexport type HashPriority = 'low' | 'high';\n\nexport interface StyleContextProps {\n  autoClear?: boolean;\n  /** @private Test only. Not work in production. */\n  mock?: 'server' | 'client';\n  /**\n   * Only set when you need ssr to extract style on you own.\n   * If not provided, it will auto create <style /> on the end of Provider in server side.\n   */\n  cache: CacheEntity;\n  /** Tell children that this context is default generated context */\n  defaultCache: boolean;\n  /** Use `:where` selector to reduce hashId css selector priority */\n  hashPriority?: HashPriority;\n  /** Tell cssinjs where to inject style in */\n  container?: Element | ShadowRoot;\n  /** Component wil render inline  `<style />` for fallback in SSR. Not recommend. */\n  ssrInline?: boolean;\n  /** Transform css before inject in document. Please note that `transformers` do not support dynamic update */\n  transformers?: Transformer[];\n  /**\n   * Linters to lint css before inject in document.\n   * Styles will be linted after transforming.\n   * Please note that `linters` do not support dynamic update.\n   */\n  linters?: Linter[];\n}\n\nconst StyleContextKey: InjectionKey<ShallowRef<Partial<StyleContextProps>>> =\n  Symbol('StyleContextKey');\n\nexport type UseStyleProviderProps = Partial<StyleContextProps> | Ref<Partial<StyleContextProps>>;\n\n// fix: https://github.com/vueComponent/ant-design-vue/issues/7023\nconst getCache = () => {\n  const instance = getCurrentInstance();\n  let cache: CacheEntity;\n  if (instance && instance.appContext) {\n    const globalCache = instance.appContext?.config?.globalProperties?.__ANTDV_CSSINJS_CACHE__;\n    if (globalCache) {\n      cache = globalCache;\n    } else {\n      cache = createCache();\n      if (instance.appContext.config.globalProperties) {\n        instance.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__ = cache;\n      }\n    }\n  } else {\n    cache = createCache();\n  }\n  return cache;\n};\n\nconst defaultStyleContext: StyleContextProps = {\n  cache: createCache(),\n  defaultCache: true,\n  hashPriority: 'low',\n};\n// fix: https://github.com/vueComponent/ant-design-vue/issues/6912\nexport const useStyleInject = () => {\n  const cache = getCache();\n  return inject(StyleContextKey, shallowRef({ ...defaultStyleContext, cache }));\n};\nexport const useStyleProvider = (props: UseStyleProviderProps) => {\n  const parentContext = useStyleInject();\n  const context = shallowRef<Partial<StyleContextProps>>({\n    ...defaultStyleContext,\n    cache: createCache(),\n  });\n  watch(\n    [() => unref(props), parentContext],\n    () => {\n      const mergedContext: Partial<StyleContextProps> = {\n        ...parentContext.value,\n      };\n      const propsValue = unref(props);\n      Object.keys(propsValue).forEach(key => {\n        const value = propsValue[key];\n        if (propsValue[key] !== undefined) {\n          mergedContext[key] = value;\n        }\n      });\n\n      const { cache } = propsValue;\n      mergedContext.cache = mergedContext.cache || createCache();\n      mergedContext.defaultCache = !cache && parentContext.value.defaultCache;\n      context.value = mergedContext;\n    },\n    { immediate: true },\n  );\n  provide(StyleContextKey, context);\n  return context;\n};\nexport const styleProviderProps = () => ({\n  autoClear: booleanType(),\n  /** @private Test only. Not work in production. */\n  mock: stringType<'server' | 'client'>(),\n  /**\n   * Only set when you need ssr to extract style on you own.\n   * If not provided, it will auto create <style /> on the end of Provider in server side.\n   */\n  cache: objectType<CacheEntity>(),\n  /** Tell children that this context is default generated context */\n  defaultCache: booleanType(),\n  /** Use `:where` selector to reduce hashId css selector priority */\n  hashPriority: stringType<HashPriority>(),\n  /** Tell cssinjs where to inject style in */\n  container: someType<Element | ShadowRoot>(),\n  /** Component wil render inline  `<style />` for fallback in SSR. Not recommend. */\n  ssrInline: booleanType(),\n  /** Transform css before inject in document. Please note that `transformers` do not support dynamic update */\n  transformers: arrayType<Transformer[]>(),\n  /**\n   * Linters to lint css before inject in document.\n   * Styles will be linted after transforming.\n   * Please note that `linters` do not support dynamic update.\n   */\n  linters: arrayType<Linter[]>(),\n});\nexport type StyleProviderProps = Partial<ExtractPropTypes<ReturnType<typeof styleProviderProps>>>;\nexport const StyleProvider = withInstall(\n  defineComponent({\n    name: 'AStyleProvider',\n    inheritAttrs: false,\n    props: styleProviderProps(),\n    setup(props, { slots }) {\n      useStyleProvider(props);\n      return () => slots.default?.();\n    },\n  }),\n);\n\nexport default {\n  useStyleInject,\n  useStyleProvider,\n  StyleProvider,\n};\n"
  },
  {
    "path": "components/_util/cssinjs/hooks/useCacheToken.tsx",
    "content": "import hash from '@emotion/hash';\nimport { ATTR_TOKEN, CSS_IN_JS_INSTANCE, useStyleInject } from '../StyleContext';\nimport type Theme from '../theme/Theme';\nimport useGlobalCache from './useGlobalCache';\nimport { flattenToken, token2key } from '../util';\nimport type { Ref } from 'vue';\nimport { ref, computed } from 'vue';\n\nconst EMPTY_OVERRIDE = {};\n\nconst isProduction = process.env.NODE_ENV === 'production';\n// nuxt generate when NODE_ENV is prerender\nconst isPrerender = process.env.NODE_ENV === 'prerender';\n\n// Generate different prefix to make user selector break in production env.\n// This helps developer not to do style override directly on the hash id.\nconst hashPrefix = !isProduction && !isPrerender ? 'css-dev-only-do-not-override' : 'css';\n\nexport interface Option<DerivativeToken, DesignToken> {\n  /**\n   * Generate token with salt.\n   * This is used to generate different hashId even same derivative token for different version.\n   */\n  salt?: string;\n  override?: object;\n  /**\n   * Format token as you need. Such as:\n   *\n   * - rename token\n   * - merge token\n   * - delete token\n   *\n   * This should always be the same since it's one time process.\n   * It's ok to useMemo outside but this has better cache strategy.\n   */\n  formatToken?: (mergedToken: any) => DerivativeToken;\n  /**\n   * Get final token with origin token, override token and theme.\n   * The parameters do not contain formatToken since it's passed by user.\n   * @param origin The original token.\n   * @param override Extra tokens to override.\n   * @param theme Theme instance. Could get derivative token by `theme.getDerivativeToken`\n   */\n  getComputedToken?: (\n    origin: DesignToken,\n    override: object,\n    theme: Theme<any, any>,\n  ) => DerivativeToken;\n}\n\nconst tokenKeys = new Map<string, number>();\nfunction recordCleanToken(tokenKey: string) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) + 1);\n}\n\nfunction removeStyleTags(key: string, instanceId: string) {\n  if (typeof document !== 'undefined') {\n    const styles = document.querySelectorAll(`style[${ATTR_TOKEN}=\"${key}\"]`);\n\n    styles.forEach(style => {\n      if ((style as any)[CSS_IN_JS_INSTANCE] === instanceId) {\n        style.parentNode?.removeChild(style);\n      }\n    });\n  }\n}\n\nconst TOKEN_THRESHOLD = 0;\n\n// Remove will check current keys first\nfunction cleanTokenStyle(tokenKey: string, instanceId: string) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) - 1);\n\n  const tokenKeyList = Array.from(tokenKeys.keys());\n  const cleanableKeyList = tokenKeyList.filter(key => {\n    const count = tokenKeys.get(key) || 0;\n\n    return count <= 0;\n  });\n\n  // Should keep tokens under threshold for not to insert style too often\n  if (tokenKeyList.length - cleanableKeyList.length > TOKEN_THRESHOLD) {\n    cleanableKeyList.forEach(key => {\n      removeStyleTags(key, instanceId);\n      tokenKeys.delete(key);\n    });\n  }\n}\n\nexport const getComputedToken = <DerivativeToken = object, DesignToken = DerivativeToken>(\n  originToken: DesignToken,\n  overrideToken: object,\n  theme: Theme<any, any>,\n  format?: (token: DesignToken) => DerivativeToken,\n) => {\n  const derivativeToken = theme.getDerivativeToken(originToken);\n  // Merge with override\n  let mergedDerivativeToken = {\n    ...derivativeToken,\n    ...overrideToken,\n  };\n\n  // Format if needed\n  if (format) {\n    mergedDerivativeToken = format(mergedDerivativeToken);\n  }\n\n  return mergedDerivativeToken;\n};\n\n/**\n * Cache theme derivative token as global shared one\n * @param theme Theme entity\n * @param tokens List of tokens, used for cache. Please do not dynamic generate object directly\n * @param option Additional config\n * @returns Call Theme.getDerivativeToken(tokenObject) to get token\n */\nexport default function useCacheToken<DerivativeToken = object, DesignToken = DerivativeToken>(\n  theme: Ref<Theme<any, any>>,\n  tokens: Ref<Partial<DesignToken>[]>,\n  option: Ref<Option<DerivativeToken, DesignToken>> = ref({}),\n) {\n  const style = useStyleInject();\n\n  // Basic - We do basic cache here\n  const mergedToken = computed(() => Object.assign({}, ...tokens.value));\n  const tokenStr = computed(() => flattenToken(mergedToken.value));\n  const overrideTokenStr = computed(() => flattenToken(option.value.override || EMPTY_OVERRIDE));\n\n  const cachedToken = useGlobalCache<[DerivativeToken & { _tokenKey: string }, string]>(\n    'token',\n    computed(() => [\n      option.value.salt || '',\n      theme.value.id,\n      tokenStr.value,\n      overrideTokenStr.value,\n    ]),\n    () => {\n      const {\n        salt = '',\n        override = EMPTY_OVERRIDE,\n        formatToken,\n        getComputedToken: compute,\n      } = option.value;\n      const mergedDerivativeToken = compute\n        ? compute(mergedToken.value, override, theme.value)\n        : getComputedToken(mergedToken.value, override, theme.value, formatToken);\n\n      // Optimize for `useStyleRegister` performance\n      const tokenKey = token2key(mergedDerivativeToken, salt);\n      mergedDerivativeToken._tokenKey = tokenKey;\n      recordCleanToken(tokenKey);\n\n      const hashId = `${hashPrefix}-${hash(tokenKey)}`;\n      mergedDerivativeToken._hashId = hashId; // Not used\n      return [mergedDerivativeToken, hashId];\n    },\n    cache => {\n      // Remove token will remove all related style\n      cleanTokenStyle(cache[0]._tokenKey, style.value?.cache.instanceId);\n    },\n  );\n\n  return cachedToken;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/hooks/useGlobalCache.tsx",
    "content": "import { useStyleInject } from '../StyleContext';\nimport type { KeyType } from '../Cache';\nimport useHMR from './useHMR';\nimport type { ShallowRef, Ref } from 'vue';\nimport { onBeforeUnmount, watch, watchEffect, shallowRef } from 'vue';\nexport default function useClientCache<CacheType>(\n  prefix: string,\n  keyPath: Ref<KeyType[]>,\n  cacheFn: () => CacheType,\n  onCacheRemove?: (cache: CacheType, fromHMR: boolean) => void,\n): ShallowRef<CacheType> {\n  const styleContext = useStyleInject();\n  const fullPathStr = shallowRef('');\n  const res = shallowRef<CacheType>();\n  watchEffect(() => {\n    fullPathStr.value = [prefix, ...keyPath.value].join('%');\n  });\n  const HMRUpdate = useHMR();\n  const clearCache = (pathStr: string) => {\n    styleContext.value.cache.update(pathStr, prevCache => {\n      const [times = 0, cache] = prevCache || [];\n      const nextCount = times - 1;\n      if (nextCount === 0) {\n        onCacheRemove?.(cache, false);\n        return null;\n      }\n\n      return [times - 1, cache];\n    });\n  };\n\n  watch(\n    fullPathStr,\n    (newStr, oldStr) => {\n      if (oldStr) clearCache(oldStr);\n      // Create cache\n      styleContext.value.cache.update(newStr, prevCache => {\n        const [times = 0, cache] = prevCache || [];\n\n        // HMR should always ignore cache since developer may change it\n        let tmpCache = cache;\n        if (process.env.NODE_ENV !== 'production' && cache && HMRUpdate) {\n          onCacheRemove?.(tmpCache, HMRUpdate);\n          tmpCache = null;\n        }\n        const mergedCache = tmpCache || cacheFn();\n\n        return [times + 1, mergedCache];\n      });\n      res.value = styleContext.value.cache.get(fullPathStr.value)![1];\n    },\n    { immediate: true },\n  );\n  onBeforeUnmount(() => {\n    clearCache(fullPathStr.value);\n  });\n  return res;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/hooks/useHMR.ts",
    "content": "function useProdHMR() {\n  return false;\n}\n\nlet webpackHMR = false;\n\nfunction useDevHMR() {\n  return webpackHMR;\n}\n\nexport default process.env.NODE_ENV === 'production' ? useProdHMR : useDevHMR;\n\n// Webpack `module.hot.accept` do not support any deps update trigger\n// We have to hack handler to force mark as HRM\nif (\n  process.env.NODE_ENV !== 'production' &&\n  typeof module !== 'undefined' &&\n  module &&\n  (module as any).hot &&\n  typeof window !== 'undefined'\n) {\n  const win = window as any;\n  if (typeof win.webpackHotUpdate === 'function') {\n    const originWebpackHotUpdate = win.webpackHotUpdate;\n\n    win.webpackHotUpdate = (...args: any[]) => {\n      webpackHMR = true;\n      setTimeout(() => {\n        webpackHMR = false;\n      }, 0);\n      return originWebpackHotUpdate(...args);\n    };\n  }\n}\n"
  },
  {
    "path": "components/_util/cssinjs/hooks/useStyleRegister/cacheMapUtil.ts",
    "content": "import canUseDom from '../../../../_util/canUseDom';\nimport { ATTR_MARK } from '../../StyleContext';\n\nexport const ATTR_CACHE_MAP = 'data-ant-cssinjs-cache-path';\n\n/**\n * This marks style from the css file.\n * Which means not exist in `<style />` tag.\n */\nexport const CSS_FILE_STYLE = '_FILE_STYLE__';\n\nexport function serialize(cachePathMap: Record<string, string>) {\n  return Object.keys(cachePathMap)\n    .map(path => {\n      const hash = cachePathMap[path];\n      return `${path}:${hash}`;\n    })\n    .join(';');\n}\n\nlet cachePathMap: Record<string, string>;\nlet fromCSSFile = true;\n\n/**\n * @private Test usage only. Can save remove if no need.\n */\nexport function reset(mockCache?: Record<string, string>, fromFile = true) {\n  cachePathMap = mockCache!;\n  fromCSSFile = fromFile;\n}\n\nexport function prepare() {\n  if (!cachePathMap) {\n    cachePathMap = {};\n\n    if (canUseDom()) {\n      const div = document.createElement('div');\n      div.className = ATTR_CACHE_MAP;\n      div.style.position = 'fixed';\n      div.style.visibility = 'hidden';\n      div.style.top = '-9999px';\n      document.body.appendChild(div);\n\n      let content = getComputedStyle(div).content || '';\n      content = content.replace(/^\"/, '').replace(/\"$/, '');\n\n      // Fill data\n      content.split(';').forEach(item => {\n        const [path, hash] = item.split(':');\n        cachePathMap[path] = hash;\n      });\n\n      // Remove inline record style\n      const inlineMapStyle = document.querySelector(`style[${ATTR_CACHE_MAP}]`);\n      if (inlineMapStyle) {\n        fromCSSFile = false;\n        inlineMapStyle.parentNode?.removeChild(inlineMapStyle);\n      }\n\n      document.body.removeChild(div);\n    }\n  }\n}\n\nexport function existPath(path: string) {\n  prepare();\n\n  return !!cachePathMap[path];\n}\n\nexport function getStyleAndHash(path: string): [style: string | null, hash: string] {\n  const hash = cachePathMap[path];\n  let styleStr: string | null = null;\n\n  if (hash && canUseDom()) {\n    if (fromCSSFile) {\n      styleStr = CSS_FILE_STYLE;\n    } else {\n      const style = document.querySelector(`style[${ATTR_MARK}=\"${cachePathMap[path]}\"]`);\n\n      if (style) {\n        styleStr = style.innerHTML;\n      } else {\n        // Clean up since not exist anymore\n        delete cachePathMap[path];\n      }\n    }\n  }\n\n  return [styleStr, hash];\n}\n"
  },
  {
    "path": "components/_util/cssinjs/hooks/useStyleRegister/index.tsx",
    "content": "import hash from '@emotion/hash';\nimport type * as CSS from 'csstype';\n// @ts-ignore\nimport unitless from '@emotion/unitless';\nimport { compile, serialize, stringify } from 'stylis';\nimport type { Theme, Transformer } from '../..';\nimport type Cache from '../../Cache';\nimport type Keyframes from '../../Keyframes';\nimport type { Linter } from '../../linters';\nimport { contentQuotesLinter, hashedAnimationLinter } from '../../linters';\nimport type { HashPriority } from '../../StyleContext';\nimport {\n  useStyleInject,\n  ATTR_CACHE_PATH,\n  ATTR_MARK,\n  ATTR_TOKEN,\n  CSS_IN_JS_INSTANCE,\n} from '../../StyleContext';\nimport { supportLayer } from '../../util';\nimport useGlobalCache from '../useGlobalCache';\nimport { removeCSS, updateCSS } from '../../../../vc-util/Dom/dynamicCSS';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { VueNode } from '../../../type';\nimport canUseDom from '../../../../_util/canUseDom';\n\nimport {\n  ATTR_CACHE_MAP,\n  existPath,\n  getStyleAndHash,\n  serialize as serializeCacheMap,\n} from './cacheMapUtil';\n\nconst isClientSide = canUseDom();\n\nconst SKIP_CHECK = '_skip_check_';\nconst MULTI_VALUE = '_multi_value_';\nexport type CSSProperties = Omit<CSS.PropertiesFallback<number | string>, 'animationName'> & {\n  animationName?: CSS.PropertiesFallback<number | string>['animationName'] | Keyframes;\n};\n\nexport type CSSPropertiesWithMultiValues = {\n  [K in keyof CSSProperties]:\n    | CSSProperties[K]\n    | readonly Extract<CSSProperties[K], string>[]\n    | {\n        [SKIP_CHECK]?: boolean;\n        [MULTI_VALUE]?: boolean;\n        value: CSSProperties[K] | CSSProperties[K][];\n      };\n};\n\nexport type CSSPseudos = { [K in CSS.Pseudos]?: CSSObject };\n\ntype ArrayCSSInterpolation = readonly CSSInterpolation[];\n\nexport type InterpolationPrimitive = null | undefined | boolean | number | string | CSSObject;\n\nexport type CSSInterpolation = InterpolationPrimitive | ArrayCSSInterpolation | Keyframes;\n\nexport type CSSOthersObject = Record<string, CSSInterpolation>;\n\nexport interface CSSObject extends CSSPropertiesWithMultiValues, CSSPseudos, CSSOthersObject {}\n\n// ============================================================================\n// ==                                 Parser                                 ==\n// ============================================================================\n// Preprocessor style content to browser support one\nexport function normalizeStyle(styleStr: string): string {\n  const serialized = serialize(compile(styleStr), stringify);\n  return serialized.replace(/\\{%%%\\:[^;];}/g, ';');\n}\n\nfunction isCompoundCSSProperty(value: CSSObject[string]) {\n  return typeof value === 'object' && value && (SKIP_CHECK in value || MULTI_VALUE in value);\n}\n\n// 注入 hash 值\nfunction injectSelectorHash(key: string, hashId: string, hashPriority?: HashPriority) {\n  if (!hashId) {\n    return key;\n  }\n\n  const hashClassName = `.${hashId}`;\n  const hashSelector = hashPriority === 'low' ? `:where(${hashClassName})` : hashClassName;\n\n  // 注入 hashId\n  const keys = key.split(',').map(k => {\n    const fullPath = k.trim().split(/\\s+/);\n\n    // 如果 Selector 第一个是 HTML Element，那我们就插到它的后面。反之，就插到最前面。\n    let firstPath = fullPath[0] || '';\n    const htmlElement = firstPath.match(/^\\w+/)?.[0] || '';\n\n    firstPath = `${htmlElement}${hashSelector}${firstPath.slice(htmlElement.length)}`;\n\n    return [firstPath, ...fullPath.slice(1)].join(' ');\n  });\n  return keys.join(',');\n}\n\nexport interface ParseConfig {\n  hashId?: string;\n  hashPriority?: HashPriority;\n  layer?: string;\n  path?: string;\n  transformers?: Transformer[];\n  linters?: Linter[];\n}\n\nexport interface ParseInfo {\n  root?: boolean;\n  injectHash?: boolean;\n  parentSelectors: string[];\n}\n\n// Global effect style will mount once and not removed\n// The effect will not save in SSR cache (e.g. keyframes)\nconst globalEffectStyleKeys = new Set();\n\n/**\n * @private Test only. Clear the global effect style keys.\n */\nexport const _cf =\n  process.env.NODE_ENV !== 'production' ? () => globalEffectStyleKeys.clear() : undefined;\n\n// Parse CSSObject to style content\nexport const parseStyle = (\n  interpolation: CSSInterpolation,\n  config: ParseConfig = {},\n  { root, injectHash, parentSelectors }: ParseInfo = {\n    root: true,\n    parentSelectors: [],\n  },\n): [\n  parsedStr: string,\n  // Style content which should be unique on all of the style (e.g. Keyframes).\n  // Firefox will flick with same animation name when exist multiple same keyframes.\n  effectStyle: Record<string, string>,\n] => {\n  const { hashId, layer, path, hashPriority, transformers = [], linters = [] } = config;\n  let styleStr = '';\n  let effectStyle: Record<string, string> = {};\n\n  function parseKeyframes(keyframes: Keyframes) {\n    const animationName = keyframes.getName(hashId);\n    if (!effectStyle[animationName]) {\n      const [parsedStr] = parseStyle(keyframes.style, config, {\n        root: false,\n        parentSelectors,\n      });\n\n      effectStyle[animationName] = `@keyframes ${keyframes.getName(hashId)}${parsedStr}`;\n    }\n  }\n\n  function flattenList(list: ArrayCSSInterpolation, fullList: CSSObject[] = []) {\n    list.forEach(item => {\n      if (Array.isArray(item)) {\n        flattenList(item, fullList);\n      } else if (item) {\n        fullList.push(item as CSSObject);\n      }\n    });\n\n    return fullList;\n  }\n\n  const flattenStyleList = flattenList(\n    Array.isArray(interpolation) ? interpolation : [interpolation],\n  );\n\n  flattenStyleList.forEach(originStyle => {\n    // Only root level can use raw string\n    const style: CSSObject = typeof originStyle === 'string' && !root ? {} : originStyle;\n\n    if (typeof style === 'string') {\n      styleStr += `${style}\\n`;\n    } else if ((style as any)._keyframe) {\n      // Keyframe\n      parseKeyframes(style as unknown as Keyframes);\n    } else {\n      const mergedStyle = transformers.reduce((prev, trans) => trans?.visit?.(prev) || prev, style);\n\n      // Normal CSSObject\n      Object.keys(mergedStyle).forEach(key => {\n        const value = mergedStyle[key];\n\n        if (\n          typeof value === 'object' &&\n          value &&\n          (key !== 'animationName' || !(value as Keyframes)._keyframe) &&\n          !isCompoundCSSProperty(value)\n        ) {\n          let subInjectHash = false;\n\n          // 当成嵌套对象来处理\n          let mergedKey = key.trim();\n          // Whether treat child as root. In most case it is false.\n          let nextRoot = false;\n\n          // 拆分多个选择器\n          if ((root || injectHash) && hashId) {\n            if (mergedKey.startsWith('@')) {\n              // 略过媒体查询，交给子节点继续插入 hashId\n              subInjectHash = true;\n            } else {\n              // 注入 hashId\n              mergedKey = injectSelectorHash(key, hashId, hashPriority);\n            }\n          } else if (root && !hashId && (mergedKey === '&' || mergedKey === '')) {\n            // In case of `{ '&': { a: { color: 'red' } } }` or `{ '': { a: { color: 'red' } } }` without hashId,\n            // we will get `&{a:{color:red;}}` or `{a:{color:red;}}` string for stylis to compile.\n            // But it does not conform to stylis syntax,\n            // and finally we will get `{color:red;}` as css, which is wrong.\n            // So we need to remove key in root, and treat child `{ a: { color: 'red' } }` as root.\n            mergedKey = '';\n            nextRoot = true;\n          }\n\n          const [parsedStr, childEffectStyle] = parseStyle(value as any, config, {\n            root: nextRoot,\n            injectHash: subInjectHash,\n            parentSelectors: [...parentSelectors, mergedKey],\n          });\n\n          effectStyle = {\n            ...effectStyle,\n            ...childEffectStyle,\n          };\n\n          styleStr += `${mergedKey}${parsedStr}`;\n        } else {\n          function appendStyle(cssKey: string, cssValue: any) {\n            if (\n              process.env.NODE_ENV !== 'production' &&\n              (typeof value !== 'object' || !(value as any)?.[SKIP_CHECK])\n            ) {\n              [contentQuotesLinter, hashedAnimationLinter, ...linters].forEach(linter =>\n                linter(cssKey, cssValue, { path, hashId, parentSelectors }),\n              );\n            }\n\n            // 如果是样式则直接插入\n            const styleName = cssKey.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`);\n\n            // Auto suffix with px\n            let formatValue = cssValue;\n            if (!unitless[cssKey] && typeof formatValue === 'number' && formatValue !== 0) {\n              formatValue = `${formatValue}px`;\n            }\n\n            // handle animationName & Keyframe value\n            if (cssKey === 'animationName' && (cssValue as Keyframes)?._keyframe) {\n              parseKeyframes(cssValue as Keyframes);\n              formatValue = (cssValue as Keyframes).getName(hashId);\n            }\n\n            styleStr += `${styleName}:${formatValue};`;\n          }\n          const actualValue = (value as any)?.value ?? value;\n          if (\n            typeof value === 'object' &&\n            (value as any)?.[MULTI_VALUE] &&\n            Array.isArray(actualValue)\n          ) {\n            actualValue.forEach(item => {\n              appendStyle(key, item);\n            });\n          } else {\n            appendStyle(key, actualValue);\n          }\n        }\n      });\n    }\n  });\n\n  if (!root) {\n    styleStr = `{${styleStr}}`;\n  } else if (layer && supportLayer()) {\n    const layerCells = layer.split(',');\n    const layerName = layerCells[layerCells.length - 1].trim();\n    styleStr = `@layer ${layerName} {${styleStr}}`;\n\n    // Order of layer if needed\n    if (layerCells.length > 1) {\n      // zombieJ: stylis do not support layer order, so we need to handle it manually.\n      styleStr = `@layer ${layer}{%%%:%}${styleStr}`;\n    }\n  }\n\n  return [styleStr, effectStyle];\n};\n\n// ============================================================================\n// ==                                Register                                ==\n// ============================================================================\nfunction uniqueHash(path: (string | number)[], styleStr: string) {\n  return hash(`${path.join('%')}${styleStr}`);\n}\n\n// function Empty() {\n//   return null;\n// }\n\n/**\n * Register a style to the global style sheet.\n */\nexport default function useStyleRegister(\n  info: Ref<{\n    theme: Theme<any, any>;\n    token: any;\n    path: string[];\n    hashId?: string;\n    layer?: string;\n    nonce?: string | (() => string);\n    clientOnly?: boolean;\n    /**\n     * Tell cssinjs the insert order of style.\n     * It's useful when you need to insert style\n     * before other style to overwrite for the same selector priority.\n     */\n    order?: number;\n  }>,\n  styleFn: () => CSSInterpolation,\n) {\n  const styleContext = useStyleInject();\n\n  const tokenKey = computed(() => info.value.token._tokenKey as string);\n\n  const fullPath = computed(() => [tokenKey.value, ...info.value.path]);\n\n  // Check if need insert style\n  let isMergedClientSide = isClientSide;\n  if (process.env.NODE_ENV !== 'production' && styleContext.value.mock !== undefined) {\n    isMergedClientSide = styleContext.value.mock === 'client';\n  }\n\n  // const [cacheStyle[0], cacheStyle[1], cacheStyle[2]]\n  useGlobalCache<\n    [\n      styleStr: string,\n      tokenKey: string,\n      styleId: string,\n      effectStyle: Record<string, string>,\n      clientOnly: boolean | undefined,\n      order: number,\n    ]\n  >(\n    'style',\n    fullPath,\n    // Create cache if needed\n    () => {\n      const { path, hashId, layer, nonce, clientOnly, order = 0 } = info.value;\n      const cachePath = fullPath.value.join('|');\n      // Get style from SSR inline style directly\n      if (existPath(cachePath)) {\n        const [inlineCacheStyleStr, styleHash] = getStyleAndHash(cachePath);\n        if (inlineCacheStyleStr) {\n          return [inlineCacheStyleStr, tokenKey.value, styleHash, {}, clientOnly, order];\n        }\n      }\n      const styleObj = styleFn();\n      const { hashPriority, container, transformers, linters, cache } = styleContext.value;\n\n      const [parsedStyle, effectStyle] = parseStyle(styleObj, {\n        hashId,\n        hashPriority,\n        layer,\n        path: path.join('-'),\n        transformers,\n        linters,\n      });\n      const styleStr = normalizeStyle(parsedStyle);\n      const styleId = uniqueHash(fullPath.value, styleStr);\n\n      if (isMergedClientSide) {\n        const mergedCSSConfig: Parameters<typeof updateCSS>[2] = {\n          mark: ATTR_MARK,\n          prepend: 'queue',\n          attachTo: container,\n          priority: order,\n        };\n\n        const nonceStr = typeof nonce === 'function' ? nonce() : nonce;\n\n        if (nonceStr) {\n          mergedCSSConfig.csp = { nonce: nonceStr };\n        }\n\n        const style = updateCSS(styleStr, styleId, mergedCSSConfig);\n\n        (style as any)[CSS_IN_JS_INSTANCE] = cache.instanceId;\n\n        // Used for `useCacheToken` to remove on batch when token removed\n        style.setAttribute(ATTR_TOKEN, tokenKey.value);\n\n        // Dev usage to find which cache path made this easily\n        if (process.env.NODE_ENV !== 'production') {\n          style.setAttribute(ATTR_CACHE_PATH, fullPath.value.join('|'));\n        }\n\n        // Inject client side effect style\n        Object.keys(effectStyle).forEach(effectKey => {\n          if (!globalEffectStyleKeys.has(effectKey)) {\n            globalEffectStyleKeys.add(effectKey);\n\n            // Inject\n            updateCSS(normalizeStyle(effectStyle[effectKey]), `_effect-${effectKey}`, {\n              mark: ATTR_MARK,\n              prepend: 'queue',\n              attachTo: container,\n            });\n          }\n        });\n      }\n\n      return [styleStr, tokenKey.value, styleId, effectStyle, clientOnly, order];\n    },\n    // Remove cache if no need\n    ([, , styleId], fromHMR) => {\n      if ((fromHMR || styleContext.value.autoClear) && isClientSide) {\n        removeCSS(styleId, { mark: ATTR_MARK });\n      }\n    },\n  );\n\n  return (node: VueNode) => {\n    return node;\n    // let styleNode: VueNode;\n    // if (!styleContext.ssrInline || isMergedClientSide || !styleContext.defaultCache) {\n    //   styleNode = <Empty />;\n    // } else {\n    //   styleNode = (\n    //     <style\n    //       {...{\n    //         [ATTR_TOKEN]: cacheStyle.value[1],\n    //         [ATTR_MARK]: cacheStyle.value[2],\n    //       }}\n    //       innerHTML={cacheStyle.value[0]}\n    //     />\n    //   );\n    // }\n\n    // return (\n    //   <>\n    //     {styleNode}\n    //     {node}\n    //   </>\n    // );\n  };\n}\n\n// ============================================================================\n// ==                                  SSR                                   ==\n// ============================================================================\nexport function extractStyle(cache: Cache, plain = false) {\n  const matchPrefix = `style%`;\n\n  // prefix with `style` is used for `useStyleRegister` to cache style context\n  const styleKeys = Array.from(cache.cache.keys()).filter(key => key.startsWith(matchPrefix));\n\n  // Common effect styles like animation\n  const effectStyles: Record<string, boolean> = {};\n\n  // Mapping of cachePath to style hash\n  const cachePathMap: Record<string, string> = {};\n\n  let styleText = '';\n\n  function toStyleStr(\n    style: string,\n    tokenKey?: string,\n    styleId?: string,\n    customizeAttrs: Record<string, string> = {},\n  ) {\n    const attrs: Record<string, string | undefined> = {\n      ...customizeAttrs,\n      [ATTR_TOKEN]: tokenKey,\n      [ATTR_MARK]: styleId,\n    };\n\n    const attrStr = Object.keys(attrs)\n      .map(attr => {\n        const val = attrs[attr];\n        return val ? `${attr}=\"${val}\"` : null;\n      })\n      .filter(v => v)\n      .join(' ');\n\n    return plain ? style : `<style ${attrStr}>${style}</style>`;\n  }\n\n  // ====================== Fill Style ======================\n  type OrderStyle = [order: number, style: string];\n\n  const orderStyles: OrderStyle[] = styleKeys\n    .map(key => {\n      const cachePath = key.slice(matchPrefix.length).replace(/%/g, '|');\n\n      const [styleStr, tokenKey, styleId, effectStyle, clientOnly, order]: [\n        string,\n        string,\n        string,\n        Record<string, string>,\n        boolean,\n        number,\n      ] = cache.cache.get(key)![1];\n\n      // Skip client only style\n      if (clientOnly) {\n        return null! as OrderStyle;\n      }\n\n      // ====================== Style ======================\n      // Used for vc-util\n      const sharedAttrs = {\n        'data-vc-order': 'prependQueue',\n        'data-vc-priority': `${order}`,\n      };\n\n      let keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs);\n\n      // Save cache path with hash mapping\n      cachePathMap[cachePath] = styleId;\n\n      // =============== Create effect style ===============\n      if (effectStyle) {\n        Object.keys(effectStyle).forEach(effectKey => {\n          // Effect style can be reused\n          if (!effectStyles[effectKey]) {\n            effectStyles[effectKey] = true;\n            keyStyleText += toStyleStr(\n              normalizeStyle(effectStyle[effectKey]),\n              tokenKey,\n              `_effect-${effectKey}`,\n              sharedAttrs,\n            );\n          }\n        });\n      }\n\n      const ret: OrderStyle = [order, keyStyleText];\n\n      return ret;\n    })\n    .filter(o => o);\n\n  orderStyles\n    .sort((o1, o2) => o1[0] - o2[0])\n    .forEach(([, style]) => {\n      styleText += style;\n    });\n\n  // ==================== Fill Cache Path ====================\n  styleText += toStyleStr(\n    `.${ATTR_CACHE_MAP}{content:\"${serializeCacheMap(cachePathMap)}\";}`,\n    undefined,\n    undefined,\n    {\n      [ATTR_CACHE_MAP]: ATTR_CACHE_MAP,\n    },\n  );\n\n  return styleText;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/index.ts",
    "content": "import useCacheToken from './hooks/useCacheToken';\nimport type { CSSInterpolation, CSSObject } from './hooks/useStyleRegister';\nimport useStyleRegister, { extractStyle } from './hooks/useStyleRegister';\nimport Keyframes from './Keyframes';\nimport type { Linter } from './linters';\nimport { legacyNotSelectorLinter, logicalPropertiesLinter, parentSelectorLinter } from './linters';\nimport type { StyleContextProps, StyleProviderProps } from './StyleContext';\nimport { createCache, useStyleInject, useStyleProvider, StyleProvider } from './StyleContext';\nimport type { DerivativeFunc, TokenType } from './theme';\nimport { createTheme, Theme } from './theme';\nimport type { Transformer } from './transformers/interface';\nimport legacyLogicalPropertiesTransformer from './transformers/legacyLogicalProperties';\nimport px2remTransformer from './transformers/px2rem';\nimport { supportLogicProps, supportWhere } from './util';\n\nconst cssinjs = {\n  Theme,\n  createTheme,\n  useStyleRegister,\n  useCacheToken,\n  createCache,\n  useStyleInject,\n  useStyleProvider,\n  Keyframes,\n  extractStyle,\n\n  // Transformer\n  legacyLogicalPropertiesTransformer,\n  px2remTransformer,\n\n  // Linters\n  logicalPropertiesLinter,\n  legacyNotSelectorLinter,\n  parentSelectorLinter,\n\n  // cssinjs\n  StyleProvider,\n};\nexport {\n  Theme,\n  createTheme,\n  useStyleRegister,\n  useCacheToken,\n  createCache,\n  useStyleInject,\n  useStyleProvider,\n  Keyframes,\n  extractStyle,\n\n  // Transformer\n  legacyLogicalPropertiesTransformer,\n  px2remTransformer,\n\n  // Linters\n  logicalPropertiesLinter,\n  legacyNotSelectorLinter,\n  parentSelectorLinter,\n\n  // cssinjs\n  StyleProvider,\n};\nexport type {\n  TokenType,\n  CSSObject,\n  CSSInterpolation,\n  DerivativeFunc,\n  Transformer,\n  Linter,\n  StyleContextProps,\n  StyleProviderProps,\n};\n\nexport const _experimental = {\n  supportModernCSS: () => supportWhere() && supportLogicProps(),\n};\n\nexport default cssinjs;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/contentQuotesLinter.ts",
    "content": "import type { Linter } from './interface';\nimport { lintWarning } from './utils';\n\nconst linter: Linter = (key, value, info) => {\n  if (key === 'content') {\n    // From emotion: https://github.com/emotion-js/emotion/blob/main/packages/serialize/src/index.js#L63\n    const contentValuePattern =\n      /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n    const contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n    if (\n      typeof value !== 'string' ||\n      (contentValues.indexOf(value) === -1 &&\n        !contentValuePattern.test(value) &&\n        (value.charAt(0) !== value.charAt(value.length - 1) ||\n          (value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")))\n    ) {\n      lintWarning(\n        `You seem to be using a value for 'content' without quotes, try replacing it with \\`content: '\"${value}\"'\\`.`,\n        info,\n      );\n    }\n  }\n};\n\nexport default linter;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/hashedAnimationLinter.ts",
    "content": "import type { Linter } from './interface';\nimport { lintWarning } from './utils';\n\nconst linter: Linter = (key, value, info) => {\n  if (key === 'animation') {\n    if (info.hashId && value !== 'none') {\n      lintWarning(\n        `You seem to be using hashed animation '${value}', in which case 'animationName' with Keyframe as value is recommended.`,\n        info,\n      );\n    }\n  }\n};\n\nexport default linter;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/index.ts",
    "content": "export { default as contentQuotesLinter } from './contentQuotesLinter';\nexport { default as hashedAnimationLinter } from './hashedAnimationLinter';\nexport type { Linter } from './interface';\nexport { default as legacyNotSelectorLinter } from './legacyNotSelectorLinter';\nexport { default as logicalPropertiesLinter } from './logicalPropertiesLinter';\nexport { default as parentSelectorLinter } from './parentSelectorLinter';\n"
  },
  {
    "path": "components/_util/cssinjs/linters/interface.ts",
    "content": "export interface LinterInfo {\n  path?: string;\n  hashId?: string;\n  parentSelectors: string[];\n}\n\nexport interface Linter {\n  (key: string, value: string | number, info: LinterInfo): void;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/linters/legacyNotSelectorLinter.ts",
    "content": "import type { Linter, LinterInfo } from './interface';\nimport { lintWarning } from './utils';\n\nfunction isConcatSelector(selector: string) {\n  const notContent = selector.match(/:not\\(([^)]*)\\)/)?.[1] || '';\n\n  // split selector. e.g.\n  // `h1#a.b` => ['h1', #a', '.b']\n  const splitCells = notContent.split(/(\\[[^[]*])|(?=[.#])/).filter(str => str);\n\n  return splitCells.length > 1;\n}\n\nfunction parsePath(info: LinterInfo) {\n  return info.parentSelectors.reduce((prev, cur) => {\n    if (!prev) {\n      return cur;\n    }\n\n    return cur.includes('&') ? cur.replace(/&/g, prev) : `${prev} ${cur}`;\n  }, '');\n}\n\nconst linter: Linter = (_key, _value, info) => {\n  const parentSelectorPath = parsePath(info);\n  const notList = parentSelectorPath.match(/:not\\([^)]*\\)/g) || [];\n\n  if (notList.length > 0 && notList.some(isConcatSelector)) {\n    lintWarning(`Concat ':not' selector not support in legacy browsers.`, info);\n  }\n};\n\nexport default linter;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/logicalPropertiesLinter.ts",
    "content": "import type { Linter } from './interface';\nimport { lintWarning } from './utils';\n\nconst linter: Linter = (key, value, info) => {\n  switch (key) {\n    case 'marginLeft':\n    case 'marginRight':\n    case 'paddingLeft':\n    case 'paddingRight':\n    case 'left':\n    case 'right':\n    case 'borderLeft':\n    case 'borderLeftWidth':\n    case 'borderLeftStyle':\n    case 'borderLeftColor':\n    case 'borderRight':\n    case 'borderRightWidth':\n    case 'borderRightStyle':\n    case 'borderRightColor':\n    case 'borderTopLeftRadius':\n    case 'borderTopRightRadius':\n    case 'borderBottomLeftRadius':\n    case 'borderBottomRightRadius':\n      lintWarning(\n        `You seem to be using non-logical property '${key}' which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,\n        info,\n      );\n      return;\n    case 'margin':\n    case 'padding':\n    case 'borderWidth':\n    case 'borderStyle':\n      // case 'borderColor':\n      if (typeof value === 'string') {\n        const valueArr = value.split(' ').map(item => item.trim());\n        if (valueArr.length === 4 && valueArr[1] !== valueArr[3]) {\n          lintWarning(\n            `You seem to be using '${key}' property with different left ${key} and right ${key}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,\n            info,\n          );\n        }\n      }\n      return;\n    case 'clear':\n    case 'textAlign':\n      if (value === 'left' || value === 'right') {\n        lintWarning(\n          `You seem to be using non-logical value '${value}' of ${key}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,\n          info,\n        );\n      }\n      return;\n    case 'borderRadius':\n      if (typeof value === 'string') {\n        const radiusGroups = value.split('/').map(item => item.trim());\n        const invalid = radiusGroups.reduce((result, group) => {\n          if (result) {\n            return result;\n          }\n          const radiusArr = group.split(' ').map(item => item.trim());\n          // borderRadius: '2px 4px'\n          if (radiusArr.length >= 2 && radiusArr[0] !== radiusArr[1]) {\n            return true;\n          }\n          // borderRadius: '4px 4px 2px'\n          if (radiusArr.length === 3 && radiusArr[1] !== radiusArr[2]) {\n            return true;\n          }\n          // borderRadius: '4px 4px 2px 4px'\n          if (radiusArr.length === 4 && radiusArr[2] !== radiusArr[3]) {\n            return true;\n          }\n          return result;\n        }, false);\n\n        if (invalid) {\n          lintWarning(\n            `You seem to be using non-logical value '${value}' of ${key}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,\n            info,\n          );\n        }\n      }\n      return;\n    default:\n  }\n};\n\nexport default linter;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/parentSelectorLinter.ts",
    "content": "import type { Linter } from '..';\nimport { lintWarning } from './utils';\n\nconst linter: Linter = (_key, _value, info) => {\n  if (\n    info.parentSelectors.some(selector => {\n      const selectors = selector.split(',');\n      return selectors.some(item => item.split('&').length > 2);\n    })\n  ) {\n    lintWarning('Should not use more than one `&` in a selector.', info);\n  }\n};\n\nexport default linter;\n"
  },
  {
    "path": "components/_util/cssinjs/linters/utils.ts",
    "content": "import devWarning from '../../../vc-util/warning';\nimport type { LinterInfo } from './interface';\n\nexport function lintWarning(message: string, info: LinterInfo) {\n  const { path, parentSelectors } = info;\n\n  devWarning(\n    false,\n    `[Ant Design Vue CSS-in-JS] ${path ? `Error in '${path}': ` : ''}${message}${\n      parentSelectors.length ? ` Selector info: ${parentSelectors.join(' -> ')}` : ''\n    }`,\n  );\n}\n"
  },
  {
    "path": "components/_util/cssinjs/theme/Theme.ts",
    "content": "import warning from '../../warning';\nimport type { DerivativeFunc, TokenType } from './interface';\n\nlet uuid = 0;\n\n/**\n * Theme with algorithms to derive tokens from design tokens.\n * Use `createTheme` first which will help to manage the theme instance cache.\n */\nexport default class Theme<DesignToken extends TokenType, DerivativeToken extends TokenType> {\n  private derivatives: DerivativeFunc<DesignToken, DerivativeToken>[];\n  public readonly id: number;\n\n  constructor(\n    derivatives:\n      | DerivativeFunc<DesignToken, DerivativeToken>\n      | DerivativeFunc<DesignToken, DerivativeToken>[],\n  ) {\n    this.derivatives = Array.isArray(derivatives) ? derivatives : [derivatives];\n    this.id = uuid;\n\n    if (derivatives.length === 0) {\n      warning(\n        derivatives.length > 0,\n        '[Ant Design Vue CSS-in-JS] Theme should have at least one derivative function.',\n      );\n    }\n\n    uuid += 1;\n  }\n\n  getDerivativeToken(token: DesignToken): DerivativeToken {\n    return this.derivatives.reduce<DerivativeToken>(\n      (result, derivative) => derivative(token, result),\n      undefined as any,\n    );\n  }\n}\n"
  },
  {
    "path": "components/_util/cssinjs/theme/ThemeCache.ts",
    "content": "import type Theme from './Theme';\nimport type { DerivativeFunc } from './interface';\n\n// ================================== Cache ==================================\ntype ThemeCacheMap = Map<\n  DerivativeFunc<any, any>,\n  {\n    map?: ThemeCacheMap;\n    value?: [Theme<any, any>, number];\n  }\n>;\n\ntype DerivativeOptions = DerivativeFunc<any, any>[];\n\nexport function sameDerivativeOption(left: DerivativeOptions, right: DerivativeOptions) {\n  if (left.length !== right.length) {\n    return false;\n  }\n  for (let i = 0; i < left.length; i++) {\n    if (left[i] !== right[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default class ThemeCache {\n  public static MAX_CACHE_SIZE = 20;\n  public static MAX_CACHE_OFFSET = 5;\n\n  private readonly cache: ThemeCacheMap;\n  private keys: DerivativeOptions[];\n  private cacheCallTimes: number;\n\n  constructor() {\n    this.cache = new Map();\n    this.keys = [];\n    this.cacheCallTimes = 0;\n  }\n\n  public size(): number {\n    return this.keys.length;\n  }\n\n  private internalGet(\n    derivativeOption: DerivativeOptions,\n    updateCallTimes = false,\n  ): [Theme<any, any>, number] | undefined {\n    let cache: ReturnType<ThemeCacheMap['get']> = { map: this.cache };\n    derivativeOption.forEach(derivative => {\n      if (!cache) {\n        cache = undefined;\n      } else {\n        cache = cache?.map?.get(derivative);\n      }\n    });\n    if (cache?.value && updateCallTimes) {\n      cache.value[1] = this.cacheCallTimes++;\n    }\n    return cache?.value;\n  }\n\n  public get(derivativeOption: DerivativeOptions): Theme<any, any> | undefined {\n    return this.internalGet(derivativeOption, true)?.[0];\n  }\n\n  public has(derivativeOption: DerivativeOptions): boolean {\n    return !!this.internalGet(derivativeOption);\n  }\n\n  public set(derivativeOption: DerivativeOptions, value: Theme<any, any>): void {\n    // New cache\n    if (!this.has(derivativeOption)) {\n      if (this.size() + 1 > ThemeCache.MAX_CACHE_SIZE + ThemeCache.MAX_CACHE_OFFSET) {\n        const [targetKey] = this.keys.reduce<[DerivativeOptions, number]>(\n          (result, key) => {\n            const [, callTimes] = result;\n            if (this.internalGet(key)![1] < callTimes) {\n              return [key, this.internalGet(key)![1]];\n            }\n            return result;\n          },\n          [this.keys[0], this.cacheCallTimes],\n        );\n        this.delete(targetKey);\n      }\n\n      this.keys.push(derivativeOption);\n    }\n\n    let cache = this.cache;\n    derivativeOption.forEach((derivative, index) => {\n      if (index === derivativeOption.length - 1) {\n        cache.set(derivative, { value: [value, this.cacheCallTimes++] });\n      } else {\n        const cacheValue = cache.get(derivative);\n        if (!cacheValue) {\n          cache.set(derivative, { map: new Map() });\n        } else if (!cacheValue.map) {\n          cacheValue.map = new Map();\n        }\n        cache = cache.get(derivative)!.map!;\n      }\n    });\n  }\n\n  private deleteByPath(\n    currentCache: ThemeCacheMap,\n    derivatives: DerivativeFunc<any, any>[],\n  ): Theme<any, any> | undefined {\n    const cache = currentCache.get(derivatives[0])!;\n    if (derivatives.length === 1) {\n      if (!cache.map) {\n        currentCache.delete(derivatives[0]);\n      } else {\n        currentCache.set(derivatives[0], { map: cache.map });\n      }\n      return cache.value?.[0];\n    }\n    const result = this.deleteByPath(cache.map!, derivatives.slice(1));\n    if ((!cache.map || cache.map.size === 0) && !cache.value) {\n      currentCache.delete(derivatives[0]);\n    }\n    return result;\n  }\n\n  public delete(derivativeOption: DerivativeOptions): Theme<any, any> | undefined {\n    // If cache exists\n    if (this.has(derivativeOption)) {\n      this.keys = this.keys.filter(item => !sameDerivativeOption(item, derivativeOption));\n      return this.deleteByPath(this.cache, derivativeOption);\n    }\n    return undefined;\n  }\n}\n"
  },
  {
    "path": "components/_util/cssinjs/theme/createTheme.ts",
    "content": "import ThemeCache from './ThemeCache';\nimport Theme from './Theme';\nimport type { DerivativeFunc, TokenType } from './interface';\n\nconst cacheThemes = new ThemeCache();\n\n/**\n * Same as new Theme, but will always return same one if `derivative` not changed.\n */\nexport default function createTheme<\n  DesignToken extends TokenType,\n  DerivativeToken extends TokenType,\n>(\n  derivatives:\n    | DerivativeFunc<DesignToken, DerivativeToken>[]\n    | DerivativeFunc<DesignToken, DerivativeToken>,\n) {\n  const derivativeArr = Array.isArray(derivatives) ? derivatives : [derivatives];\n  // Create new theme if not exist\n  if (!cacheThemes.has(derivativeArr)) {\n    cacheThemes.set(derivativeArr, new Theme(derivativeArr));\n  }\n\n  // Get theme from cache and return\n  return cacheThemes.get(derivativeArr)!;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/theme/index.ts",
    "content": "export { default as createTheme } from './createTheme';\nexport { default as Theme } from './Theme';\nexport { default as ThemeCache } from './ThemeCache';\nexport type { TokenType, DerivativeFunc } from './interface';\n"
  },
  {
    "path": "components/_util/cssinjs/theme/interface.ts",
    "content": "export type TokenType = object;\nexport type DerivativeFunc<DesignToken extends TokenType, DerivativeToken extends TokenType> = (\n  designToken: DesignToken,\n  derivativeToken?: DerivativeToken,\n) => DerivativeToken;\n"
  },
  {
    "path": "components/_util/cssinjs/transformers/interface.ts",
    "content": "import type { CSSObject } from '..';\n\nexport interface Transformer {\n  visit?: (cssObj: CSSObject) => CSSObject;\n}\n"
  },
  {
    "path": "components/_util/cssinjs/transformers/legacyLogicalProperties.ts",
    "content": "import type { CSSObject } from '..';\nimport type { Transformer } from './interface';\n\nfunction splitValues(value: string | number) {\n  if (typeof value === 'number') {\n    return [value];\n  }\n\n  const splitStyle = String(value).split(/\\s+/);\n\n  // Combine styles split in brackets, like `calc(1px + 2px)`\n  let temp = '';\n  let brackets = 0;\n  return splitStyle.reduce<string[]>((list, item) => {\n    if (item.includes('(')) {\n      temp += item;\n      brackets += item.split('(').length - 1;\n    } else if (item.includes(')')) {\n      temp += ` ${item}`;\n      brackets -= item.split(')').length - 1;\n      if (brackets === 0) {\n        list.push(temp);\n        temp = '';\n      }\n    } else if (brackets > 0) {\n      temp += ` ${item}`;\n    } else {\n      list.push(item);\n    }\n    return list;\n  }, []);\n}\n\ntype MatchValue = string[] & {\n  notSplit?: boolean;\n};\n\nfunction noSplit(list: MatchValue): MatchValue {\n  list.notSplit = true;\n  return list;\n}\n\nconst keyMap: Record<string, MatchValue> = {\n  // Inset\n  inset: ['top', 'right', 'bottom', 'left'],\n  insetBlock: ['top', 'bottom'],\n  insetBlockStart: ['top'],\n  insetBlockEnd: ['bottom'],\n  insetInline: ['left', 'right'],\n  insetInlineStart: ['left'],\n  insetInlineEnd: ['right'],\n\n  // Margin\n  marginBlock: ['marginTop', 'marginBottom'],\n  marginBlockStart: ['marginTop'],\n  marginBlockEnd: ['marginBottom'],\n  marginInline: ['marginLeft', 'marginRight'],\n  marginInlineStart: ['marginLeft'],\n  marginInlineEnd: ['marginRight'],\n\n  // Padding\n  paddingBlock: ['paddingTop', 'paddingBottom'],\n  paddingBlockStart: ['paddingTop'],\n  paddingBlockEnd: ['paddingBottom'],\n  paddingInline: ['paddingLeft', 'paddingRight'],\n  paddingInlineStart: ['paddingLeft'],\n  paddingInlineEnd: ['paddingRight'],\n\n  // Border\n  borderBlock: noSplit(['borderTop', 'borderBottom']),\n  borderBlockStart: noSplit(['borderTop']),\n  borderBlockEnd: noSplit(['borderBottom']),\n  borderInline: noSplit(['borderLeft', 'borderRight']),\n  borderInlineStart: noSplit(['borderLeft']),\n  borderInlineEnd: noSplit(['borderRight']),\n\n  // Border width\n  borderBlockWidth: ['borderTopWidth', 'borderBottomWidth'],\n  borderBlockStartWidth: ['borderTopWidth'],\n  borderBlockEndWidth: ['borderBottomWidth'],\n  borderInlineWidth: ['borderLeftWidth', 'borderRightWidth'],\n  borderInlineStartWidth: ['borderLeftWidth'],\n  borderInlineEndWidth: ['borderRightWidth'],\n\n  // Border style\n  borderBlockStyle: ['borderTopStyle', 'borderBottomStyle'],\n  borderBlockStartStyle: ['borderTopStyle'],\n  borderBlockEndStyle: ['borderBottomStyle'],\n  borderInlineStyle: ['borderLeftStyle', 'borderRightStyle'],\n  borderInlineStartStyle: ['borderLeftStyle'],\n  borderInlineEndStyle: ['borderRightStyle'],\n\n  // Border color\n  borderBlockColor: ['borderTopColor', 'borderBottomColor'],\n  borderBlockStartColor: ['borderTopColor'],\n  borderBlockEndColor: ['borderBottomColor'],\n  borderInlineColor: ['borderLeftColor', 'borderRightColor'],\n  borderInlineStartColor: ['borderLeftColor'],\n  borderInlineEndColor: ['borderRightColor'],\n\n  // Border radius\n  borderStartStartRadius: ['borderTopLeftRadius'],\n  borderStartEndRadius: ['borderTopRightRadius'],\n  borderEndStartRadius: ['borderBottomLeftRadius'],\n  borderEndEndRadius: ['borderBottomRightRadius'],\n};\n\nfunction skipCheck(value: string | number) {\n  return { _skip_check_: true, value };\n}\n\n/**\n * Convert css logical properties to legacy properties.\n * Such as: `margin-block-start` to `margin-top`.\n * Transform list:\n * - inset\n * - margin\n * - padding\n * - border\n */\nconst transform: Transformer = {\n  visit: cssObj => {\n    const clone: CSSObject = {};\n\n    Object.keys(cssObj).forEach(key => {\n      const value = cssObj[key];\n      const matchValue = keyMap[key];\n\n      if (matchValue && (typeof value === 'number' || typeof value === 'string')) {\n        const values = splitValues(value);\n\n        if (matchValue.length && matchValue.notSplit) {\n          // not split means always give same value like border\n          matchValue.forEach(matchKey => {\n            clone[matchKey] = skipCheck(value);\n          });\n        } else if (matchValue.length === 1) {\n          // Handle like `marginBlockStart` => `marginTop`\n          clone[matchValue[0]] = skipCheck(value);\n        } else if (matchValue.length === 2) {\n          // Handle like `marginBlock` => `marginTop` & `marginBottom`\n          matchValue.forEach((matchKey, index) => {\n            clone[matchKey] = skipCheck(values[index] ?? values[0]);\n          });\n        } else if (matchValue.length === 4) {\n          // Handle like `inset` => `top` & `right` & `bottom` & `left`\n          matchValue.forEach((matchKey, index) => {\n            clone[matchKey] = skipCheck(values[index] ?? values[index - 2] ?? values[0]);\n          });\n        } else {\n          clone[key] = value;\n        }\n      } else {\n        clone[key] = value;\n      }\n    });\n\n    return clone;\n  },\n};\n\nexport default transform;\n"
  },
  {
    "path": "components/_util/cssinjs/transformers/px2rem.ts",
    "content": "/**\n * respect https://github.com/cuth/postcss-pxtorem\n */\nimport unitless from '@emotion/unitless';\nimport type { CSSObject } from '..';\nimport type { Transformer } from './interface';\n\nexport interface Options {\n  /**\n   * The root font size.\n   * @default 16\n   */\n  rootValue?: number;\n  /**\n   * The decimal numbers to allow the REM units to grow to.\n   * @default 5\n   */\n  precision?: number;\n  /**\n   * Whether to allow px to be converted in media queries.\n   * @default false\n   */\n  mediaQuery?: boolean;\n}\n\nconst pxRegex = /url\\([^)]+\\)|var\\([^)]+\\)|(\\d*\\.?\\d+)px/g;\n\nfunction toFixed(number: number, precision: number) {\n  const multiplier = Math.pow(10, precision + 1),\n    wholeNumber = Math.floor(number * multiplier);\n  return (Math.round(wholeNumber / 10) * 10) / multiplier;\n}\n\nconst transform = (options: Options = {}): Transformer => {\n  const { rootValue = 16, precision = 5, mediaQuery = false } = options;\n\n  const pxReplace = (m: string, $1: any) => {\n    if (!$1) return m;\n    const pixels = parseFloat($1);\n    // covenant: pixels <= 1, not transform to rem @zombieJ\n    if (pixels <= 1) return m;\n    const fixedVal = toFixed(pixels / rootValue, precision);\n    return `${fixedVal}rem`;\n  };\n\n  const visit = (cssObj: CSSObject): CSSObject => {\n    const clone: CSSObject = { ...cssObj };\n\n    Object.entries(cssObj).forEach(([key, value]) => {\n      if (typeof value === 'string' && value.includes('px')) {\n        const newValue = value.replace(pxRegex, pxReplace);\n        clone[key] = newValue;\n      }\n\n      // no unit\n      if (!unitless[key] && typeof value === 'number' && value !== 0) {\n        clone[key] = `${value}px`.replace(pxRegex, pxReplace);\n      }\n\n      // Media queries\n      const mergedKey = key.trim();\n      if (mergedKey.startsWith('@') && mergedKey.includes('px') && mediaQuery) {\n        const newKey = key.replace(pxRegex, pxReplace);\n\n        clone[newKey] = clone[key];\n        delete clone[key];\n      }\n    });\n\n    return clone;\n  };\n\n  return { visit };\n};\n\nexport default transform;\n"
  },
  {
    "path": "components/_util/cssinjs/util.ts",
    "content": "import hash from '@emotion/hash';\nimport { removeCSS, updateCSS } from '../../vc-util/Dom/dynamicCSS';\nimport canUseDom from '../canUseDom';\n\nimport { Theme } from './theme';\n\n// Create a cache here to avoid always loop generate\nconst flattenTokenCache = new WeakMap<any, string>();\n\nexport function flattenToken(token: any) {\n  let str = flattenTokenCache.get(token) || '';\n\n  if (!str) {\n    Object.keys(token).forEach(key => {\n      const value = token[key];\n      str += key;\n      if (value instanceof Theme) {\n        str += value.id;\n      } else if (value && typeof value === 'object') {\n        str += flattenToken(value);\n      } else {\n        str += value;\n      }\n    });\n\n    // Put in cache\n    flattenTokenCache.set(token, str);\n  }\n  return str;\n}\n\n/**\n * Convert derivative token to key string\n */\nexport function token2key(token: any, salt: string): string {\n  return hash(`${salt}_${flattenToken(token)}`);\n}\n\nconst randomSelectorKey = `random-${Date.now()}-${Math.random()}`.replace(/\\./g, '');\n\n// Magic `content` for detect selector support\nconst checkContent = '_bAmBoO_';\n\nfunction supportSelector(\n  styleStr: string,\n  handleElement: (ele: HTMLElement) => void,\n  supportCheck?: (ele: HTMLElement) => boolean,\n): boolean {\n  if (canUseDom()) {\n    updateCSS(styleStr, randomSelectorKey);\n\n    const ele = document.createElement('div');\n    ele.style.position = 'fixed';\n    ele.style.left = '0';\n    ele.style.top = '0';\n    handleElement?.(ele);\n    document.body.appendChild(ele);\n\n    if (process.env.NODE_ENV !== 'production') {\n      ele.innerHTML = 'Test';\n      ele.style.zIndex = '9999999';\n    }\n\n    const support = supportCheck\n      ? supportCheck(ele)\n      : getComputedStyle(ele).content?.includes(checkContent);\n\n    ele.parentNode?.removeChild(ele);\n    removeCSS(randomSelectorKey);\n\n    return support;\n  }\n\n  return false;\n}\n\nlet canLayer: boolean | undefined = undefined;\nexport function supportLayer(): boolean {\n  if (canLayer === undefined) {\n    canLayer = supportSelector(\n      `@layer ${randomSelectorKey} { .${randomSelectorKey} { content: \"${checkContent}\"!important; } }`,\n      ele => {\n        ele.className = randomSelectorKey;\n      },\n    );\n  }\n\n  return canLayer!;\n}\n\nlet canWhere: boolean | undefined = undefined;\nexport function supportWhere(): boolean {\n  if (canWhere === undefined) {\n    canWhere = supportSelector(\n      `:where(.${randomSelectorKey}) { content: \"${checkContent}\"!important; }`,\n      ele => {\n        ele.className = randomSelectorKey;\n      },\n    );\n  }\n\n  return canWhere!;\n}\n\nlet canLogic: boolean | undefined = undefined;\nexport function supportLogicProps(): boolean {\n  if (canLogic === undefined) {\n    canLogic = supportSelector(\n      `.${randomSelectorKey} { inset-block: 93px !important; }`,\n      ele => {\n        ele.className = randomSelectorKey;\n      },\n      ele => getComputedStyle(ele).bottom === '93px',\n    );\n  }\n\n  return canLogic!;\n}\n"
  },
  {
    "path": "components/_util/debouncedWatch.ts",
    "content": "// copy from https://github.dev/vueuse/vueuse\n\nimport type { Ref, WatchOptions, WatchStopHandle } from 'vue';\nimport { unref, watch } from 'vue';\n\ntype MaybeRef<T> = T | Ref<T>;\n\ntype Fn = () => void;\n\nexport type FunctionArgs<Args extends any[] = any[], Return = void> = (...args: Args) => Return;\n\nexport interface FunctionWrapperOptions<Args extends any[] = any[], This = any> {\n  fn: FunctionArgs<Args, This>;\n  args: Args;\n  thisArg: This;\n}\n\nexport type EventFilter<Args extends any[] = any[], This = any> = (\n  invoke: Fn,\n  options: FunctionWrapperOptions<Args, This>,\n) => void;\n\nconst bypassFilter: EventFilter = invoke => {\n  return invoke();\n};\n/**\n * Create an EventFilter that debounce the events\n *\n * @param ms\n */\nexport function debounceFilter(ms: MaybeRef<number>) {\n  let timer: ReturnType<typeof setTimeout> | undefined;\n\n  const filter: EventFilter = invoke => {\n    const duration = unref(ms);\n\n    if (timer) clearTimeout(timer);\n\n    if (duration <= 0) return invoke();\n\n    timer = setTimeout(invoke, duration);\n  };\n\n  return filter;\n}\nexport interface DebouncedWatchOptions<Immediate> extends WatchOptions<Immediate> {\n  debounce?: MaybeRef<number>;\n}\n\ninterface ConfigurableEventFilter {\n  eventFilter?: EventFilter;\n}\n/**\n * @internal\n */\nfunction createFilterWrapper<T extends FunctionArgs>(filter: EventFilter, fn: T) {\n  function wrapper(this: any, ...args: any[]) {\n    filter(() => fn.apply(this, args), { fn, thisArg: this, args });\n  }\n\n  return wrapper as any as T;\n}\nexport interface WatchWithFilterOptions<Immediate>\n  extends WatchOptions<Immediate>,\n    ConfigurableEventFilter {}\n// implementation\nexport function watchWithFilter<Immediate extends Readonly<boolean> = false>(\n  source: any,\n  cb: any,\n  options: WatchWithFilterOptions<Immediate> = {},\n): WatchStopHandle {\n  const { eventFilter = bypassFilter, ...watchOptions } = options;\n\n  return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\n// implementation\nexport default function debouncedWatch<Immediate extends Readonly<boolean> = false>(\n  source: any,\n  cb: any,\n  options: DebouncedWatchOptions<Immediate> = {},\n): WatchStopHandle {\n  const { debounce = 0, ...watchOptions } = options;\n\n  return watchWithFilter(source, cb, {\n    ...watchOptions,\n    eventFilter: debounceFilter(debounce),\n  });\n}\n"
  },
  {
    "path": "components/_util/eagerComputed.ts",
    "content": "import { watchEffect, shallowRef } from 'vue';\nimport type { ComputedRef } from 'vue';\nexport declare type ComputedGetter<T> = (...args: any[]) => T;\nexport default function eagerComputed<T>(fn: ComputedGetter<T>) {\n  const result = shallowRef<T>();\n  watchEffect(\n    () => {\n      result.value = fn();\n    },\n    {\n      flush: 'sync', // needed so updates are immediate.\n    },\n  );\n\n  return result as any as ComputedRef<T>;\n}\n"
  },
  {
    "path": "components/_util/easings.ts",
    "content": "export function easeInOutCubic(t: number, b: number, c: number, d: number) {\n  const cc = c - b;\n  t /= d / 2;\n  if (t < 1) {\n    return (cc / 2) * t * t * t + b;\n  }\n  return (cc / 2) * ((t -= 2) * t * t + 2) + b;\n}\n"
  },
  {
    "path": "components/_util/env.ts",
    "content": "/* eslint-disable no-undef */\n// Browser environment sniffing\nexport const inBrowser = typeof window !== 'undefined';\nexport const UA = inBrowser && window.navigator.userAgent.toLowerCase();\nexport const isIE = UA && /msie|trident/.test(UA);\nexport const isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nexport const isEdge = UA && UA.indexOf('edge/') > 0;\nexport const isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nexport const isPhantomJS = UA && /phantomjs/.test(UA);\nexport const isFF = UA && UA.match(/firefox\\/(\\d+)/);\n"
  },
  {
    "path": "components/_util/extendsObject.ts",
    "content": "type RecordType = Record<string, any>;\n\nfunction extendsObject<T extends RecordType>(...list: T[]) {\n  const result: RecordType = { ...list[0] };\n\n  for (let i = 1; i < list.length; i++) {\n    const obj = list[i];\n    if (obj) {\n      Object.keys(obj).forEach(key => {\n        const val = obj[key];\n        if (val !== undefined) {\n          result[key] = val;\n        }\n      });\n    }\n  }\n\n  return result;\n}\n\nexport default extendsObject;\n"
  },
  {
    "path": "components/_util/firstNotUndefined.ts",
    "content": "function firstNotUndefined<T>(arr: T[] = []): T {\n  for (let i = 0, len = arr.length; i < len; i++) {\n    if (arr[i] !== undefined) {\n      return arr[i];\n    }\n  }\n  return undefined;\n}\n\nexport default firstNotUndefined;\n"
  },
  {
    "path": "components/_util/gapSize.ts",
    "content": "import type { SizeType } from '../config-provider/SizeContext';\n\nexport function isPresetSize(size?: SizeType | string | number): size is SizeType {\n  return ['small', 'middle', 'large'].includes(size as string);\n}\n\nexport function isValidGapNumber(size?: SizeType | string | number): size is number {\n  if (!size) {\n    // The case of size = 0 is deliberately excluded here, because the default value of the gap attribute in CSS is 0, so if the user passes 0 in, we can directly ignore it.\n    return false;\n  }\n  return typeof size === 'number' && !Number.isNaN(size);\n}\n"
  },
  {
    "path": "components/_util/getRequestAnimationFrame.ts",
    "content": "const availablePrefixs = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill() {\n  let lastTime = 0;\n  return function (callback) {\n    const currTime = new Date().getTime();\n    const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n    const id = window.setTimeout(function () {\n      callback(currTime + timeToCall);\n    }, timeToCall);\n    lastTime = currTime + timeToCall;\n    return id;\n  };\n}\n\nexport default function getRequestAnimationFrame() {\n  if (typeof window === 'undefined') {\n    return () => {};\n  }\n  if (window.requestAnimationFrame) {\n    // https://github.com/vuejs/vue/issues/4465\n    return window.requestAnimationFrame.bind(window);\n  }\n\n  const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0];\n\n  return prefix ? window[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\nexport function cancelRequestAnimationFrame(id) {\n  if (typeof window === 'undefined') {\n    return null;\n  }\n  if (window.cancelAnimationFrame) {\n    return window.cancelAnimationFrame(id);\n  }\n  const prefix = availablePrefixs.filter(\n    key => `${key}CancelAnimationFrame` in window || `${key}CancelRequestAnimationFrame` in window,\n  )[0];\n\n  return prefix\n    ? (\n        window[`${prefix}CancelAnimationFrame`] || window[`${prefix}CancelRequestAnimationFrame`]\n      ).call(this, id)\n    : clearTimeout(id);\n}\n"
  },
  {
    "path": "components/_util/getScroll.ts",
    "content": "export function isWindow(obj: any): obj is Window {\n  return obj !== null && obj !== undefined && obj === obj.window;\n}\n\nexport default function getScroll(\n  target: HTMLElement | Window | Document | null,\n  top: boolean,\n): number {\n  if (typeof window === 'undefined') {\n    return 0;\n  }\n  const method = top ? 'scrollTop' : 'scrollLeft';\n  let result = 0;\n  if (isWindow(target)) {\n    result = target[top ? 'scrollY' : 'scrollX'];\n  } else if (target instanceof Document) {\n    result = target.documentElement[method];\n  } else if (target instanceof HTMLElement) {\n    result = target[method];\n  } else if (target) {\n    // According to the type inference, the `target` is `never` type.\n    // Since we configured the loose mode type checking, and supports mocking the target with such shape below::\n    //    `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`,\n    //    the program may falls into this branch.\n    // Check the corresponding tests for details. Don't sure what is the real scenario this happens.\n    result = target[method];\n  }\n\n  if (target && !isWindow(target) && typeof result !== 'number') {\n    result = ((target.ownerDocument ?? target) as any).documentElement?.[method];\n  }\n  return result;\n}\n"
  },
  {
    "path": "components/_util/getScrollBarSize.ts",
    "content": "/* eslint-disable no-param-reassign */\n\nlet cached: number;\n\nexport default function getScrollBarSize(fresh?: boolean) {\n  if (typeof document === 'undefined') {\n    return 0;\n  }\n\n  if (fresh || cached === undefined) {\n    const inner = document.createElement('div');\n    inner.style.width = '100%';\n    inner.style.height = '200px';\n\n    const outer = document.createElement('div');\n    const outerStyle = outer.style;\n\n    outerStyle.position = 'absolute';\n    outerStyle.top = '0';\n    outerStyle.left = '0';\n    outerStyle.pointerEvents = 'none';\n    outerStyle.visibility = 'hidden';\n    outerStyle.width = '200px';\n    outerStyle.height = '150px';\n    outerStyle.overflow = 'hidden';\n\n    outer.appendChild(inner);\n\n    document.body.appendChild(outer);\n\n    const widthContained = inner.offsetWidth;\n    outer.style.overflow = 'scroll';\n    let widthScroll = inner.offsetWidth;\n\n    if (widthContained === widthScroll) {\n      widthScroll = outer.clientWidth;\n    }\n\n    document.body.removeChild(outer);\n\n    cached = widthContained - widthScroll;\n  }\n  return cached;\n}\n\nfunction ensureSize(str: string) {\n  const match = str.match(/^(.*)px$/);\n  const value = Number(match?.[1]);\n  return Number.isNaN(value) ? getScrollBarSize() : value;\n}\n\nexport function getTargetScrollBarSize(target: HTMLElement) {\n  if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n    return { width: 0, height: 0 };\n  }\n\n  const { width, height } = getComputedStyle(target, '::-webkit-scrollbar');\n  return {\n    width: ensureSize(width),\n    height: ensureSize(height),\n  };\n}\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/_configurable.ts",
    "content": "import { isClient } from './is';\n\nexport interface ConfigurableWindow {\n  /*\n   * Specify a custom `window` instance, e.g. working with iframes or in testing environments.\n   */\n  window?: Window;\n}\n\nexport interface ConfigurableDocument {\n  /*\n   * Specify a custom `document` instance, e.g. working with iframes or in testing environments.\n   */\n  document?: Document;\n}\n\nexport interface ConfigurableNavigator {\n  /*\n   * Specify a custom `navigator` instance, e.g. working with iframes or in testing environments.\n   */\n  navigator?: Navigator;\n}\n\nexport interface ConfigurableLocation {\n  /*\n   * Specify a custom `location` instance, e.g. working with iframes or in testing environments.\n   */\n  location?: Location;\n}\n\nexport const defaultWindow = isClient ? window : undefined;\nexport const defaultDocument = isClient ? window.document : undefined;\nexport const defaultNavigator = isClient ? window.navigator : undefined;\nexport const defaultLocation = isClient ? window.location : undefined;\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/is.ts",
    "content": "export const isClient = typeof window !== 'undefined';\nexport const isDef = <T = any>(val?: T): val is T => typeof val !== 'undefined';\nexport const assert = (condition: boolean, ...infos: any[]) => {\n  if (!condition) console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nexport const isBoolean = (val: any): val is boolean => typeof val === 'boolean';\nexport const isFunction = <T extends Function>(val: any): val is T => typeof val === 'function';\nexport const isNumber = (val: any): val is number => typeof val === 'number';\nexport const isString = (val: unknown): val is string => typeof val === 'string';\nexport const isObject = (val: any): val is object => toString.call(val) === '[object Object]';\nexport const isWindow = (val: any): val is Window =>\n  typeof window !== 'undefined' && toString.call(val) === '[object Window]';\nexport const now = () => Date.now();\nexport const timestamp = () => +Date.now();\nexport const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n));\nexport const noop = () => {};\nexport const rand = (min: number, max: number) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nexport const isIOS =\n  isClient && window?.navigator?.userAgent && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nexport const hasOwn = <T extends object, K extends keyof T>(val: T, key: K): key is K =>\n  Object.prototype.hasOwnProperty.call(val, key);\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/resolveUnref.ts",
    "content": "import { unref } from 'vue';\nimport type { MaybeComputedRef } from './types';\n\n/**\n * Get the value of value/ref/getter.\n */\nexport function resolveUnref<T>(r: MaybeComputedRef<T>): T {\n  return typeof r === 'function' ? (r as any)() : unref(r);\n}\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/tryOnMounted.ts",
    "content": "// eslint-disable-next-line no-restricted-imports\nimport { getCurrentInstance, nextTick, onMounted } from 'vue';\nimport type { Fn } from './types';\n\n/**\n * Call onMounted() if it's inside a component lifecycle, if not, just call the function\n *\n * @param fn\n * @param sync if set to false, it will run in the nextTick() of Vue\n */\nexport function tryOnMounted(fn: Fn, sync = true) {\n  if (getCurrentInstance()) onMounted(fn);\n  else if (sync) fn();\n  else nextTick(fn);\n}\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/tryOnScopeDispose.ts",
    "content": "import { getCurrentScope, onScopeDispose } from 'vue';\nimport type { Fn } from './types';\n\n/**\n * Call onScopeDispose() if it's inside a effect scope lifecycle, if not, do nothing\n *\n * @param fn\n */\nexport function tryOnScopeDispose(fn: Fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/types.ts",
    "content": "import type { ComputedRef, Ref, WatchOptions, WatchSource } from 'vue';\n\n/**\n * Any function\n */\nexport type Fn = () => void;\n\n/**\n * A ref that allow to set null or undefined\n */\nexport type RemovableRef<T> = Omit<Ref<T>, 'value'> & {\n  get value(): T;\n  set value(value: T | null | undefined);\n};\n\n/**\n * @deprecated Use `RemovableRef`\n */\nexport type RemoveableRef<T> = RemovableRef<T>;\n\n/**\n * Maybe it's a ref, or a plain value\n *\n * ```ts\n * type MaybeRef<T> = T | Ref<T>\n * ```\n */\nexport type MaybeRef<T> = T | Ref<T>;\n\n/**\n * Maybe it's a ref, or a plain value, or a getter function\n *\n * ```ts\n * type MaybeComputedRef<T> = (() => T) | T | Ref<T> | ComputedRef<T>\n * ```\n */\nexport type MaybeComputedRef<T> = MaybeReadonlyRef<T> | MaybeRef<T>;\n\n/**\n * Maybe it's a computed ref, or a getter function\n *\n * ```ts\n * type MaybeReadonlyRef<T> = (() => T) | ComputedRef<T>\n * ```\n */\nexport type MaybeReadonlyRef<T> = (() => T) | ComputedRef<T>;\n\n/**\n * Make all the nested attributes of an object or array to MaybeRef<T>\n *\n * Good for accepting options that will be wrapped with `reactive` or `ref`\n *\n * ```ts\n * UnwrapRef<DeepMaybeRef<T>> === T\n * ```\n */\nexport type DeepMaybeRef<T> = T extends Ref<infer V>\n  ? MaybeRef<V>\n  : T extends Array<any> | object\n  ? { [K in keyof T]: DeepMaybeRef<T[K]> }\n  : MaybeRef<T>;\n\n/**\n * Infers the element type of an array\n */\nexport type ElementOf<T> = T extends (infer E)[] ? E : never;\n\nexport type ShallowUnwrapRef<T> = T extends Ref<infer P> ? P : T;\n\nexport type Awaitable<T> = Promise<T> | T;\n\nexport type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;\n\nexport interface Pausable {\n  /**\n   * A ref indicate whether a pausable instance is active\n   */\n  isActive: Ref<boolean>;\n\n  /**\n   * Temporary pause the effect from executing\n   */\n  pause: Fn;\n\n  /**\n   * Resume the effects\n   */\n  resume: Fn;\n}\n\nexport interface Stoppable {\n  /**\n   * A ref indicate whether a stoppable instance is executing\n   */\n  isPending: Ref<boolean>;\n\n  /**\n   * Stop the effect from executing\n   */\n  stop: Fn;\n\n  /**\n   * Start the effects\n   */\n  start: Fn;\n}\n\n/**\n * @deprecated Use `Stoppable`\n */\nexport type Stopable = Stoppable;\n\nexport interface ConfigurableFlush {\n  /**\n   * Timing for monitoring changes, refer to WatchOptions for more details\n   *\n   * @default 'pre'\n   */\n  flush?: WatchOptions['flush'];\n}\n\nexport interface ConfigurableFlushSync {\n  /**\n   * Timing for monitoring changes, refer to WatchOptions for more details.\n   * Unlike `watch()`, the default is set to `sync`\n   *\n   * @default 'sync'\n   */\n  flush?: WatchOptions['flush'];\n}\n\n// Internal Types\nexport type MapSources<T> = {\n  [K in keyof T]: T[K] extends WatchSource<infer V> ? V : never;\n};\nexport type MapOldSources<T, Immediate> = {\n  [K in keyof T]: T[K] extends WatchSource<infer V>\n    ? Immediate extends true\n      ? V | undefined\n      : V\n    : never;\n};\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/unrefElement.ts",
    "content": "import type { ComponentPublicInstance } from 'vue';\nimport type { MaybeComputedRef, MaybeRef } from './types';\nimport { resolveUnref } from './resolveUnref';\n\nexport type VueInstance = ComponentPublicInstance;\nexport type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRef<T>;\nexport type MaybeComputedElementRef<T extends MaybeElement = MaybeElement> = MaybeComputedRef<T>;\nexport type MaybeElement = HTMLElement | SVGElement | VueInstance | undefined | null;\n\nexport type UnRefElementReturn<T extends MaybeElement = MaybeElement> = T extends VueInstance\n  ? Exclude<MaybeElement, VueInstance>\n  : T | undefined;\n\n/**\n * Get the dom element of a ref of element or Vue component instance\n *\n * @param elRef\n */\nexport function unrefElement<T extends MaybeElement>(\n  elRef: MaybeComputedElementRef<T>,\n): UnRefElementReturn<T> {\n  const plain = resolveUnref(elRef);\n  return (plain as VueInstance)?.$el ?? plain;\n}\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/useElementSize.ts",
    "content": "import { shallowRef, watch } from 'vue';\nimport type { MaybeComputedElementRef } from './unrefElement';\nimport type { UseResizeObserverOptions } from './useResizeObserver';\nimport { useResizeObserver } from './useResizeObserver';\nimport { unrefElement } from './unrefElement';\n\nexport interface ElementSize {\n  width: number;\n  height: number;\n}\n\n/**\n * Reactive size of an HTML element.\n *\n * @see https://vueuse.org/useElementSize\n * @param target\n * @param callback\n * @param options\n */\nexport function useElementSize(\n  target: MaybeComputedElementRef,\n  initialSize: ElementSize = { width: 0, height: 0 },\n  options: UseResizeObserverOptions = {},\n) {\n  const { box = 'content-box' } = options;\n  const width = shallowRef(initialSize.width);\n  const height = shallowRef(initialSize.height);\n\n  useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize =\n        box === 'border-box'\n          ? entry.borderBoxSize\n          : box === 'content-box'\n          ? entry.contentBoxSize\n          : entry.devicePixelContentBoxSize;\n\n      if (boxSize) {\n        width.value = boxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n        height.value = boxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n      } else {\n        // fallback\n        width.value = entry.contentRect.width;\n        height.value = entry.contentRect.height;\n      }\n    },\n    options,\n  );\n\n  watch(\n    () => unrefElement(target),\n    ele => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    },\n  );\n\n  return {\n    width,\n    height,\n  };\n}\n\nexport type UseElementSizeReturn = ReturnType<typeof useElementSize>;\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/useMutationObserver.ts",
    "content": "import { tryOnScopeDispose } from './tryOnScopeDispose';\nimport { watch } from 'vue';\nimport type { MaybeElementRef } from './unrefElement';\nimport { unrefElement } from './unrefElement';\nimport { useSupported } from './useSupported';\nimport type { ConfigurableWindow } from './_configurable';\nimport { defaultWindow } from './_configurable';\n\nexport interface UseMutationObserverOptions extends MutationObserverInit, ConfigurableWindow {}\n\n/**\n * Watch for changes being made to the DOM tree.\n *\n * @see https://vueuse.org/useMutationObserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN\n * @param target\n * @param callback\n * @param options\n */\nexport function useMutationObserver(\n  target: MaybeElementRef,\n  callback: MutationCallback,\n  options: UseMutationObserverOptions = {},\n) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer: MutationObserver | undefined;\n  const isSupported = useSupported(() => window && 'MutationObserver' in window);\n\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = undefined;\n    }\n  };\n\n  const stopWatch = watch(\n    () => unrefElement(target),\n    el => {\n      cleanup();\n\n      if (isSupported.value && window && el) {\n        observer = new MutationObserver(callback);\n        observer!.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true },\n  );\n\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n\n  tryOnScopeDispose(stop);\n\n  return {\n    isSupported,\n    stop,\n  };\n}\n\nexport type UseMutationObserverReturn = ReturnType<typeof useMutationObserver>;\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/useResizeObserver.ts",
    "content": "import { tryOnScopeDispose } from './tryOnScopeDispose';\nimport { watch } from 'vue';\nimport type { MaybeComputedElementRef } from './unrefElement';\nimport { unrefElement } from './unrefElement';\nimport { useSupported } from './useSupported';\nimport type { ConfigurableWindow } from './_configurable';\nimport { defaultWindow } from './_configurable';\n\nexport interface ResizeObserverSize {\n  readonly inlineSize: number;\n  readonly blockSize: number;\n}\n\nexport interface ResizeObserverEntry {\n  readonly target: Element;\n  readonly contentRect: DOMRectReadOnly;\n  readonly borderBoxSize?: ReadonlyArray<ResizeObserverSize>;\n  readonly contentBoxSize?: ReadonlyArray<ResizeObserverSize>;\n  readonly devicePixelContentBoxSize?: ReadonlyArray<ResizeObserverSize>;\n}\n\nexport type ResizeObserverCallback = (\n  entries: ReadonlyArray<ResizeObserverEntry>,\n  observer: ResizeObserver,\n) => void;\n\nexport interface UseResizeObserverOptions extends ConfigurableWindow {\n  /**\n   * Sets which box model the observer will observe changes to. Possible values\n   * are `content-box` (the default), `border-box` and `device-pixel-content-box`.\n   *\n   * @default 'content-box'\n   */\n  box?: ResizeObserverBoxOptions;\n}\n\ndeclare class ResizeObserver {\n  constructor(callback: ResizeObserverCallback);\n  disconnect(): void;\n  observe(target: Element, options?: UseResizeObserverOptions): void;\n  unobserve(target: Element): void;\n}\n\n/**\n * Reports changes to the dimensions of an Element's content or the border-box\n *\n * @see https://vueuse.org/useResizeObserver\n * @param target\n * @param callback\n * @param options\n */\nexport function useResizeObserver(\n  target: MaybeComputedElementRef,\n  callback: ResizeObserverCallback,\n  options: UseResizeObserverOptions = {},\n) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer: ResizeObserver | undefined;\n  const isSupported = useSupported(() => window && 'ResizeObserver' in window);\n\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = undefined;\n    }\n  };\n\n  const stopWatch = watch(\n    () => unrefElement(target),\n    el => {\n      cleanup();\n\n      if (isSupported.value && window && el) {\n        observer = new ResizeObserver(callback);\n        observer!.observe(el, observerOptions);\n      }\n    },\n    { immediate: true, flush: 'post' },\n  );\n\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n\n  tryOnScopeDispose(stop);\n\n  return {\n    isSupported,\n    stop,\n  };\n}\n\nexport type UseResizeObserverReturn = ReturnType<typeof useResizeObserver>;\n"
  },
  {
    "path": "components/_util/hooks/_vueuse/useSupported.ts",
    "content": "import { tryOnMounted } from './tryOnMounted';\nimport { shallowRef } from 'vue';\n\nexport function useSupported(callback: () => unknown, sync = false) {\n  const isSupported = shallowRef<boolean>();\n\n  const update = () => (isSupported.value = Boolean(callback()));\n\n  update();\n\n  tryOnMounted(update, sync);\n  return isSupported;\n}\n"
  },
  {
    "path": "components/_util/hooks/useBreakpoint.ts",
    "content": "import type { Ref } from 'vue';\nimport { onMounted, onUnmounted, shallowRef } from 'vue';\nimport type { ScreenMap } from '../../_util/responsiveObserve';\nimport useResponsiveObserve from '../../_util/responsiveObserve';\n\nfunction useBreakpoint(): Ref<ScreenMap> {\n  const screens = shallowRef<ScreenMap>({});\n  let token = null;\n  const responsiveObserve = useResponsiveObserve();\n\n  onMounted(() => {\n    token = responsiveObserve.value.subscribe(supportScreens => {\n      screens.value = supportScreens;\n    });\n  });\n\n  onUnmounted(() => {\n    responsiveObserve.value.unsubscribe(token);\n  });\n\n  return screens;\n}\n\nexport default useBreakpoint;\n"
  },
  {
    "path": "components/_util/hooks/useDestroyed.ts",
    "content": "import { onBeforeUnmount, shallowRef } from 'vue';\n\nconst useDestroyed = () => {\n  const destroyed = shallowRef(false);\n  onBeforeUnmount(() => {\n    destroyed.value = true;\n  });\n\n  return destroyed;\n};\n\nexport default useDestroyed;\n"
  },
  {
    "path": "components/_util/hooks/useFlexGapSupport.ts",
    "content": "import { onMounted, shallowRef } from 'vue';\nimport { detectFlexGapSupported } from '../styleChecker';\n\nexport default () => {\n  const flexible = shallowRef(false);\n  onMounted(() => {\n    flexible.value = detectFlexGapSupported();\n  });\n\n  return flexible;\n};\n"
  },
  {
    "path": "components/_util/hooks/useId.ts",
    "content": "import { ref } from 'vue';\nimport canUseDom from '../../_util/canUseDom';\n\nlet uuid = 0;\n\n/** Is client side and not jsdom */\nexport const isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID(): number | string {\n  let retId: string | number;\n\n  // Test never reach\n  /* istanbul ignore if */\n  if (isBrowserClient) {\n    retId = uuid;\n    uuid += 1;\n  } else {\n    retId = 'TEST_OR_SSR';\n  }\n\n  return retId;\n}\n\nexport default function useId(id = ref('')) {\n  // Inner id for accessibility usage. Only work in client side\n  const innerId = `vc_unique_${getUUID()}`;\n\n  return id.value || innerId;\n}\n"
  },
  {
    "path": "components/_util/hooks/useLayoutState.ts",
    "content": "import type { Ref } from 'vue';\nimport { onBeforeUnmount, shallowRef } from 'vue';\nimport raf from '../raf';\n\nexport type Updater<State> = (prev: State) => State;\n/**\n * Execute code before next frame but async\n */\nexport function useLayoutState<State>(\n  defaultState: State,\n): [Ref<State>, (updater: Updater<State>) => void] {\n  const stateRef = shallowRef(defaultState);\n  let tempState = stateRef.value;\n\n  let updateBatchRef = [];\n  const rafRef = shallowRef();\n  function setFrameState(updater: Updater<State>) {\n    raf.cancel(rafRef.value);\n    updateBatchRef.push(updater);\n\n    rafRef.value = raf(() => {\n      const prevBatch = updateBatchRef;\n      // const prevState = stateRef.value;\n      updateBatchRef = [];\n\n      prevBatch.forEach(batchUpdater => {\n        tempState = batchUpdater(tempState);\n      });\n\n      // if (tempState !== stateRef.value) {\n      stateRef.value = tempState;\n      // }\n    });\n  }\n\n  onBeforeUnmount(() => {\n    raf.cancel(rafRef.value);\n  });\n\n  return [stateRef as Ref<State>, setFrameState];\n}\n"
  },
  {
    "path": "components/_util/hooks/useMemo.ts",
    "content": "import type { Ref, WatchSource } from 'vue';\nimport { ref, watch } from 'vue';\n\nexport default function useMemo<T>(\n  getValue: () => T,\n  condition: (WatchSource<unknown> | object)[],\n  shouldUpdate?: (prev: any[], next: any[]) => boolean,\n) {\n  const cacheRef: Ref<T> = ref(getValue() as any);\n  watch(condition, (next, pre) => {\n    if (shouldUpdate) {\n      if (shouldUpdate(next, pre)) {\n        cacheRef.value = getValue();\n      }\n    } else {\n      cacheRef.value = getValue();\n    }\n  });\n\n  return cacheRef;\n}\n"
  },
  {
    "path": "components/_util/hooks/useMergedState.ts",
    "content": "import type { Ref, UnwrapRef } from 'vue';\nimport { toRaw, watchEffect, unref, watch, ref } from 'vue';\n\nexport default function useMergedState<T, R = Ref<T>>(\n  defaultStateValue: T | (() => T),\n  option?: {\n    defaultValue?: T | (() => T);\n    value?: Ref<T> | Ref<UnwrapRef<T>>;\n    onChange?: (val: T, prevValue: T) => void;\n    postState?: (val: T) => T;\n  },\n): [R, (val: T) => void] {\n  const { defaultValue, value = ref() } = option || {};\n  let initValue: T =\n    typeof defaultStateValue === 'function' ? (defaultStateValue as any)() : defaultStateValue;\n  if (value.value !== undefined) {\n    initValue = unref(value as any) as T;\n  }\n  if (defaultValue !== undefined) {\n    initValue = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue;\n  }\n\n  const innerValue = ref(initValue) as Ref<T>;\n  const mergedValue = ref(initValue) as Ref<T>;\n  watchEffect(() => {\n    let val = value.value !== undefined ? value.value : innerValue.value;\n    if (option.postState) {\n      val = option.postState(val as T);\n    }\n    mergedValue.value = val as T;\n  });\n\n  function triggerChange(newValue: T) {\n    const preVal = mergedValue.value;\n    innerValue.value = newValue;\n    if (toRaw(mergedValue.value) !== newValue && option.onChange) {\n      option.onChange(newValue, preVal);\n    }\n  }\n\n  // Effect of reset value to `undefined`\n  watch(value, () => {\n    innerValue.value = value.value as T;\n  });\n\n  return [mergedValue as unknown as R, triggerChange];\n}\n"
  },
  {
    "path": "components/_util/hooks/useRefs.ts",
    "content": "import type { Ref, ComponentPublicInstance } from 'vue';\nimport { onBeforeUpdate, ref } from 'vue';\nimport type { Key } from '../type';\n\ntype RefType = HTMLElement | ComponentPublicInstance;\nexport type RefsValue = Map<Key, RefType>;\ntype UseRef = [(key: Key) => (el: RefType) => void, Ref<RefsValue>];\nconst useRefs = (): UseRef => {\n  const refs = ref<RefsValue>(new Map());\n\n  const setRef = (key: Key) => (el: RefType) => {\n    refs.value.set(key, el);\n  };\n  onBeforeUpdate(() => {\n    refs.value = new Map();\n  });\n  return [setRef, refs];\n};\n\nexport default useRefs;\n"
  },
  {
    "path": "components/_util/hooks/useScrollLocker.ts",
    "content": "import type { Ref } from 'vue';\nimport { computed, watchEffect } from 'vue';\nimport { updateCSS, removeCSS } from '../../vc-util/Dom/dynamicCSS';\nimport getScrollBarSize from '../../_util/getScrollBarSize';\nimport canUseDom from '../../_util/canUseDom';\n\nconst UNIQUE_ID = `vc-util-locker-${Date.now()}`;\n\nlet uuid = 0;\n\n/**../vc-util/Dom/dynam\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n  return (\n    document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) &&\n    window.innerWidth > document.body.offsetWidth\n  );\n}\n\nexport default function useScrollLocker(lock?: Ref<boolean>) {\n  const mergedLock = computed(() => !!lock && !!lock.value);\n  uuid += 1;\n  const id = `${UNIQUE_ID}_${uuid}`;\n\n  watchEffect(\n    onClear => {\n      if (!canUseDom()) {\n        return;\n      }\n      if (mergedLock.value) {\n        const scrollbarSize = getScrollBarSize();\n        const isOverflow = isBodyOverflowing();\n\n        updateCSS(\n          `\nhtml body {\n  overflow-y: hidden;\n  ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ''}\n}`,\n          id,\n        );\n      } else {\n        removeCSS(id);\n      }\n      onClear(() => {\n        removeCSS(id);\n      });\n    },\n    { flush: 'post' },\n  );\n}\n"
  },
  {
    "path": "components/_util/hooks/useState.ts",
    "content": "import type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport default function useState<T, R = Ref<T>>(\n  defaultStateValue?: T | (() => T),\n): [R, (val: T) => void] {\n  const initValue: T =\n    typeof defaultStateValue === 'function' ? (defaultStateValue as any)() : defaultStateValue;\n\n  const innerValue = ref(initValue) as Ref<T>;\n\n  function triggerChange(newValue: T) {\n    innerValue.value = newValue;\n  }\n\n  return [innerValue as unknown as R, triggerChange];\n}\n"
  },
  {
    "path": "components/_util/isNumeric.ts",
    "content": "const isNumeric = (value: any): boolean => {\n  return !isNaN(parseFloat(value)) && isFinite(value);\n};\n\nexport default isNumeric;\n"
  },
  {
    "path": "components/_util/isValid.ts",
    "content": "const isValid = (value: any): boolean => {\n  return value !== undefined && value !== null && value !== '';\n};\nexport default isValid;\n"
  },
  {
    "path": "components/_util/isValidValue.ts",
    "content": "export default function (val: any) {\n  return val !== undefined && val !== null;\n}\n"
  },
  {
    "path": "components/_util/json2mq.ts",
    "content": "/**\n * source by `json2mq`\n * https://github.com/akiran/json2mq.git\n */\n\nconst camel2hyphen = function (str: string) {\n  return str\n    .replace(/[A-Z]/g, function (match) {\n      return '-' + match.toLowerCase();\n    })\n    .toLowerCase();\n};\n\nconst isDimension = function (feature: string) {\n  const re = /[height|width]$/;\n  return re.test(feature);\n};\n\nconst obj2mq = function (obj: { [x: string]: any }) {\n  let mq = '';\n  const features = Object.keys(obj);\n  features.forEach(function (feature, index) {\n    let value = obj[feature];\n    feature = camel2hyphen(feature);\n    // Add px to dimension features\n    if (isDimension(feature) && typeof value === 'number') {\n      value = value + 'px';\n    }\n    if (value === true) {\n      mq += feature;\n    } else if (value === false) {\n      mq += 'not ' + feature;\n    } else {\n      mq += '(' + feature + ': ' + value + ')';\n    }\n    if (index < features.length - 1) {\n      mq += ' and ';\n    }\n  });\n  return mq;\n};\n\nexport default function (query: any[]) {\n  let mq = '';\n  if (typeof query === 'string') {\n    return query;\n  }\n  // Handling array of media queries\n  if (query instanceof Array) {\n    query.forEach(function (q, index) {\n      mq += obj2mq(q);\n      if (index < query.length - 1) {\n        mq += ', ';\n      }\n    });\n    return mq;\n  }\n  // Handling single media query\n  return obj2mq(query);\n}\n"
  },
  {
    "path": "components/_util/omit.ts",
    "content": "function omit<T extends object, K extends keyof T>(obj: T, fields: K[]): Omit<T, K> {\n  // eslint-disable-next-line prefer-object-spread\n  const shallowCopy = Object.assign({}, obj);\n  for (let i = 0; i < fields.length; i += 1) {\n    const key = fields[i];\n    delete shallowCopy[key];\n  }\n  return shallowCopy;\n}\nexport default omit;\n"
  },
  {
    "path": "components/_util/pickAttrs.ts",
    "content": "const attributes = `accept acceptcharset accesskey action allowfullscreen allowtransparency\nalt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge\ncharset checked classid classname colspan cols content contenteditable contextmenu\ncontrols coords crossorigin data datetime default defer dir disabled download draggable\nenctype form formaction formenctype formmethod formnovalidate formtarget frameborder\nheaders height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity\nis keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media\nmediagroup method min minlength multiple muted name novalidate nonce open\noptimum pattern placeholder poster preload radiogroup readonly rel required\nreversed role rowspan rows sandbox scope scoped scrolling seamless selected\nshape size sizes span spellcheck src srcdoc srclang srcset start step style\nsummary tabindex target title type usemap value width wmode wrap`;\n\nconst eventsName = `onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown\n    onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick\n    onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown\n    onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel\n    onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough\n    onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata\n    onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`;\n\nconst propList = `${attributes} ${eventsName}`.split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nconst ariaPrefix = 'aria-';\nconst dataPrefix = 'data-';\n\nfunction match(key: string, prefix: string) {\n  return key.indexOf(prefix) === 0;\n}\n\nexport interface PickConfig {\n  aria?: boolean;\n  data?: boolean;\n  attr?: boolean;\n}\n\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props: object, ariaOnly: boolean | PickConfig = false) {\n  let mergedConfig;\n  if (ariaOnly === false) {\n    mergedConfig = {\n      aria: true,\n      data: true,\n      attr: true,\n    };\n  } else if (ariaOnly === true) {\n    mergedConfig = {\n      aria: true,\n    };\n  } else {\n    mergedConfig = {\n      ...ariaOnly,\n    };\n  }\n\n  const attrs = {};\n  Object.keys(props).forEach(key => {\n    if (\n      // Aria\n      (mergedConfig.aria && (key === 'role' || match(key, ariaPrefix))) ||\n      // Data\n      (mergedConfig.data && match(key, dataPrefix)) ||\n      // Attr\n      (mergedConfig.attr && (propList.includes(key) || propList.includes(key.toLowerCase())))\n    ) {\n      attrs[key] = props[key];\n    }\n  });\n  return attrs;\n}\n"
  },
  {
    "path": "components/_util/placements.ts",
    "content": "import { placements } from '../vc-tooltip/src/placements';\n\nconst autoAdjustOverflowEnabled = {\n  adjustX: 1,\n  adjustY: 1,\n};\n\nconst autoAdjustOverflowDisabled = {\n  adjustX: 0,\n  adjustY: 0,\n};\n\nconst targetOffset = [0, 0];\n\nexport interface AdjustOverflow {\n  adjustX?: 0 | 1;\n  adjustY?: 0 | 1;\n}\n\nexport interface PlacementsConfig {\n  arrowWidth?: number;\n  horizontalArrowShift?: number;\n  verticalArrowShift?: number;\n  arrowPointAtCenter?: boolean;\n  autoAdjustOverflow?: boolean | AdjustOverflow;\n}\n\nexport function getOverflowOptions(autoAdjustOverflow?: boolean | AdjustOverflow) {\n  if (typeof autoAdjustOverflow === 'boolean') {\n    return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\n  }\n  return {\n    ...autoAdjustOverflowDisabled,\n    ...autoAdjustOverflow,\n  };\n}\n\nexport default function getPlacements(config: PlacementsConfig) {\n  const {\n    arrowWidth = 4,\n    horizontalArrowShift = 16,\n    verticalArrowShift = 8,\n    autoAdjustOverflow,\n    arrowPointAtCenter,\n  } = config;\n  const placementMap = {\n    left: {\n      points: ['cr', 'cl'],\n      offset: [-4, 0],\n    },\n    right: {\n      points: ['cl', 'cr'],\n      offset: [4, 0],\n    },\n    top: {\n      points: ['bc', 'tc'],\n      offset: [0, -4],\n    },\n    bottom: {\n      points: ['tc', 'bc'],\n      offset: [0, 4],\n    },\n    topLeft: {\n      points: ['bl', 'tc'],\n      offset: [-(horizontalArrowShift + arrowWidth), -4],\n    },\n    leftTop: {\n      points: ['tr', 'cl'],\n      offset: [-4, -(verticalArrowShift + arrowWidth)],\n    },\n    topRight: {\n      points: ['br', 'tc'],\n      offset: [horizontalArrowShift + arrowWidth, -4],\n    },\n    rightTop: {\n      points: ['tl', 'cr'],\n      offset: [4, -(verticalArrowShift + arrowWidth)],\n    },\n    bottomRight: {\n      points: ['tr', 'bc'],\n      offset: [horizontalArrowShift + arrowWidth, 4],\n    },\n    rightBottom: {\n      points: ['bl', 'cr'],\n      offset: [4, verticalArrowShift + arrowWidth],\n    },\n    bottomLeft: {\n      points: ['tl', 'bc'],\n      offset: [-(horizontalArrowShift + arrowWidth), 4],\n    },\n    leftBottom: {\n      points: ['br', 'cl'],\n      offset: [-4, verticalArrowShift + arrowWidth],\n    },\n  };\n  Object.keys(placementMap).forEach(key => {\n    placementMap[key] = arrowPointAtCenter\n      ? {\n          ...placementMap[key],\n          overflow: getOverflowOptions(autoAdjustOverflow),\n          targetOffset,\n        }\n      : {\n          ...placements[key],\n          overflow: getOverflowOptions(autoAdjustOverflow),\n        };\n\n    placementMap[key].ignoreShake = true;\n  });\n  return placementMap;\n}\n"
  },
  {
    "path": "components/_util/props-util/index.ts",
    "content": "import classNames from '../classNames';\nimport { isVNode, Fragment, Comment, Text } from 'vue';\nimport { camelize, hyphenate, isOn, resolvePropValue } from '../util';\nimport isValid from '../isValid';\nimport initDefaultProps from './initDefaultProps';\nimport type { VueInstance } from '../hooks/_vueuse/unrefElement';\n// function getType(fn) {\n//   const match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n//   return match ? match[1] : '';\n// }\n\nconst splitAttrs = (attrs: any) => {\n  const allAttrs = Object.keys(attrs);\n  const eventAttrs: Record<string, any> = {};\n  const onEvents: Record<string, any> = {};\n  const extraAttrs: Record<string, any> = {};\n  for (let i = 0, l = allAttrs.length; i < l; i++) {\n    const key = allAttrs[i];\n    if (isOn(key)) {\n      eventAttrs[key[2].toLowerCase() + key.slice(3)] = attrs[key];\n      onEvents[key] = attrs[key];\n    } else {\n      extraAttrs[key] = attrs[key];\n    }\n  }\n  return { onEvents, events: eventAttrs, extraAttrs };\n};\nconst parseStyleText = (cssText = '', camel = false) => {\n  const res = {};\n  const listDelimiter = /;(?![^(]*\\))/g;\n  const propertyDelimiter = /:(.+)/;\n  if (typeof cssText === 'object') return cssText;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      const tmp = item.split(propertyDelimiter);\n      if (tmp.length > 1) {\n        const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim();\n        res[k] = tmp[1].trim();\n      }\n    }\n  });\n  return res;\n};\n\nconst hasProp = (instance: any, prop: string) => {\n  return instance[prop] !== undefined;\n};\n\nexport const skipFlattenKey = Symbol('skipFlatten');\nconst flattenChildren = (children = [], filterEmpty = true) => {\n  const temp = Array.isArray(children) ? children : [children];\n  const res = [];\n  temp.forEach(child => {\n    if (Array.isArray(child)) {\n      res.push(...flattenChildren(child, filterEmpty));\n    } else if (child && child.type === Fragment) {\n      if (child.key === skipFlattenKey) {\n        res.push(child);\n      } else {\n        res.push(...flattenChildren(child.children, filterEmpty));\n      }\n    } else if (child && isVNode(child)) {\n      if (filterEmpty && !isEmptyElement(child)) {\n        res.push(child);\n      } else if (!filterEmpty) {\n        res.push(child);\n      }\n    } else if (isValid(child)) {\n      res.push(child);\n    }\n  });\n  return res;\n};\n\nconst getSlot = (self: any, name = 'default', options = {}) => {\n  if (isVNode(self)) {\n    if (self.type === Fragment) {\n      return name === 'default' ? flattenChildren(self.children as any[]) : [];\n    } else if (self.children && self.children[name]) {\n      return flattenChildren(self.children[name](options));\n    } else {\n      return [];\n    }\n  } else {\n    const res = self.$slots[name] && self.$slots[name](options);\n    return flattenChildren(res);\n  }\n};\n\nconst findDOMNode = (instance: any) => {\n  let node = instance?.vnode?.el || (instance && (instance.$el || instance));\n  while (node && !node.tagName) {\n    node = node.nextSibling;\n  }\n  return node;\n};\nconst getOptionProps = (instance: VueInstance) => {\n  const res = {};\n  if (instance.$ && instance.$.vnode) {\n    const props = instance.$.vnode.props || {};\n    Object.keys(instance.$props).forEach(k => {\n      const v = instance.$props[k];\n      const hyphenateKey = hyphenate(k);\n      if (v !== undefined || hyphenateKey in props) {\n        res[k] = v; // 直接取 $props[k]\n      }\n    });\n  } else if (isVNode(instance) && typeof instance.type === 'object') {\n    const originProps = instance.props || {};\n    const props = {};\n    Object.keys(originProps).forEach(key => {\n      props[camelize(key)] = originProps[key];\n    });\n    const options = (instance.type as any).props || {};\n    Object.keys(options).forEach(k => {\n      const v = resolvePropValue(options, props, k, props[k]);\n      if (v !== undefined || k in props) {\n        res[k] = v;\n      }\n    });\n  }\n  return res;\n};\nconst getComponent = (instance: any, prop = 'default', options = instance, execute = true) => {\n  let com = undefined;\n  if (instance.$) {\n    const temp = instance[prop];\n    if (temp !== undefined) {\n      return typeof temp === 'function' && execute ? temp(options) : temp;\n    } else {\n      com = instance.$slots[prop];\n      com = execute && com ? com(options) : com;\n    }\n  } else if (isVNode(instance)) {\n    const temp = instance.props && instance.props[prop];\n    if (temp !== undefined && instance.props !== null) {\n      return typeof temp === 'function' && execute ? temp(options) : temp;\n    } else if (instance.type === Fragment) {\n      com = instance.children;\n    } else if (instance.children && instance.children[prop]) {\n      com = instance.children[prop];\n      com = execute && com ? com(options) : com;\n    }\n  }\n  if (Array.isArray(com)) {\n    com = flattenChildren(com);\n    com = com.length === 1 ? com[0] : com;\n    com = com.length === 0 ? undefined : com;\n  }\n  return com;\n};\n\nconst getKey = (ele: any) => {\n  const key = ele.key;\n  return key;\n};\n\nexport function getEvents(ele: any = {}, on = true) {\n  let props = {};\n  if (ele.$) {\n    props = { ...props, ...ele.$attrs };\n  } else {\n    props = { ...props, ...ele.props };\n  }\n  return splitAttrs(props)[on ? 'onEvents' : 'events'];\n}\n\nexport function getClass(ele: any) {\n  const props = (isVNode(ele) ? ele.props : ele.$attrs) || {};\n  const tempCls = props.class || {};\n  let cls = {};\n  if (typeof tempCls === 'string') {\n    tempCls.split(' ').forEach(c => {\n      cls[c.trim()] = true;\n    });\n  } else if (Array.isArray(tempCls)) {\n    classNames(tempCls)\n      .split(' ')\n      .forEach(c => {\n        cls[c.trim()] = true;\n      });\n  } else {\n    cls = { ...cls, ...tempCls };\n  }\n  return cls;\n}\nexport function getStyle(ele: any, camel?: boolean) {\n  const props = (isVNode(ele) ? ele.props : ele.$attrs) || {};\n  let style = props.style || {};\n  if (typeof style === 'string') {\n    style = parseStyleText(style, camel);\n  } else if (camel && style) {\n    // 驼峰化\n    const res = {};\n    Object.keys(style).forEach(k => (res[camelize(k)] = style[k]));\n    return res;\n  }\n  return style;\n}\n\nexport function getComponentName(opts: any) {\n  return opts && (opts.Ctor.options.name || opts.tag);\n}\n\nexport function isFragment(c: any) {\n  return c.length === 1 && c[0].type === Fragment;\n}\n\nexport function isEmptyContent(c: any) {\n  return c === undefined || c === null || c === '' || (Array.isArray(c) && c.length === 0);\n}\n\nexport function isEmptyElement(c: any) {\n  return (\n    c &&\n    (c.type === Comment ||\n      (c.type === Fragment && c.children.length === 0) ||\n      (c.type === Text && c.children.trim() === ''))\n  );\n}\n\nexport function isEmptySlot(c: any) {\n  return !c || c().every(isEmptyElement);\n}\n\nexport function isStringElement(c: any) {\n  return c && c.type === Text;\n}\n\nexport function filterEmpty(children = []) {\n  const res = [];\n  children.forEach(child => {\n    if (Array.isArray(child)) {\n      res.push(...child);\n    } else if (child?.type === Fragment) {\n      res.push(...filterEmpty(child.children));\n    } else {\n      res.push(child);\n    }\n  });\n  return res.filter(c => !isEmptyElement(c));\n}\n\nexport function filterEmptyWithUndefined(children: any[]) {\n  if (children) {\n    const coms = filterEmpty(children);\n    return coms.length ? coms : undefined;\n  } else {\n    return children;\n  }\n}\n\nfunction isValidElement(element: any) {\n  if (Array.isArray(element) && element.length === 1) {\n    element = element[0];\n  }\n  return element && element.__v_isVNode && typeof element.type !== 'symbol'; // remove text node\n}\n\nfunction getPropsSlot(slots: any, props: any, prop = 'default') {\n  return props[prop] ?? slots[prop]?.();\n}\n\nexport const getTextFromElement = (ele: any) => {\n  if (isValidElement(ele) && isStringElement(ele[0])) {\n    return ele[0].children;\n  }\n  return ele;\n};\nexport {\n  splitAttrs,\n  hasProp,\n  getOptionProps,\n  getComponent,\n  getKey,\n  parseStyleText,\n  initDefaultProps,\n  isValidElement,\n  camelize,\n  getSlot,\n  findDOMNode,\n  flattenChildren,\n  getPropsSlot,\n};\nexport default hasProp;\n"
  },
  {
    "path": "components/_util/props-util/initDefaultProps.ts",
    "content": "import type { PropType } from 'vue';\nimport type { VueTypeValidableDef, VueTypeDef } from 'vue-types';\n\nconst initDefaultProps = <T>(\n  types: T,\n  defaultProps: {\n    [K in keyof T]?: T[K] extends VueTypeValidableDef<infer U>\n      ? U\n      : T[K] extends VueTypeDef<infer U>\n      ? U\n      : T[K] extends { type: PropType<infer U> }\n      ? U\n      : any;\n  },\n): T => {\n  const propTypes: T = { ...types };\n  Object.keys(defaultProps).forEach(k => {\n    const prop = propTypes[k] as VueTypeValidableDef;\n    if (prop) {\n      if (prop.type || prop.default) {\n        prop.default = defaultProps[k];\n      } else if (prop.def) {\n        prop.def(defaultProps[k]);\n      } else {\n        propTypes[k] = { type: prop, default: defaultProps[k] };\n      }\n    } else {\n      throw new Error(`not have ${k} prop`);\n    }\n  });\n  return propTypes;\n};\n\nexport default initDefaultProps;\n"
  },
  {
    "path": "components/_util/raf.ts",
    "content": "let raf = (callback: FrameRequestCallback) => setTimeout(callback, 16) as any;\nlet caf = (num: number) => clearTimeout(num);\n\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n  raf = (callback: FrameRequestCallback) => window.requestAnimationFrame(callback);\n  caf = (handle: number) => window.cancelAnimationFrame(handle);\n}\n\nlet rafUUID = 0;\nconst rafIds = new Map<number, number>();\n\nfunction cleanup(id: number) {\n  rafIds.delete(id);\n}\n\nexport default function wrapperRaf(callback: () => void, times = 1): number {\n  rafUUID += 1;\n  const id = rafUUID;\n\n  function callRef(leftTimes: number) {\n    if (leftTimes === 0) {\n      // Clean up\n      cleanup(id);\n\n      // Trigger\n      callback();\n    } else {\n      // Next raf\n      const realId = raf(() => {\n        callRef(leftTimes - 1);\n      });\n\n      // Bind real raf id\n      rafIds.set(id, realId);\n    }\n  }\n\n  callRef(times);\n\n  return id;\n}\n\nwrapperRaf.cancel = (id: number) => {\n  const realId = rafIds.get(id);\n  cleanup(realId);\n  return caf(realId);\n};\n"
  },
  {
    "path": "components/_util/reactivePick.ts",
    "content": "import type { UnwrapRef } from 'vue';\nimport { reactive, toRef } from 'vue';\nimport fromPairs from 'lodash-es/fromPairs';\n\n/**\n * Reactively pick fields from a reactive object\n *\n * @see https://vueuse.js.org/reactivePick\n */\nexport function reactivePick<T extends object, K extends keyof T>(\n  obj: T,\n  ...keys: K[]\n): { [S in K]: UnwrapRef<T[S]> } {\n  return reactive(fromPairs(keys.map(k => [k, toRef(obj, k)]))) as any;\n}\n"
  },
  {
    "path": "components/_util/requestAnimationTimeout.ts",
    "content": "import getRequestAnimationFrame, {\n  cancelRequestAnimationFrame as caf,\n} from './getRequestAnimationFrame';\nconst raf = getRequestAnimationFrame();\n\nexport const cancelAnimationTimeout = frame => caf(frame.id);\n\nexport const requestAnimationTimeout = (callback, delay = 0) => {\n  const start = Date.now();\n  function timeout() {\n    if (Date.now() - start >= delay) {\n      callback.call();\n    } else {\n      frame.id = raf(timeout);\n    }\n  }\n\n  const frame = {\n    id: raf(timeout),\n  };\n\n  return frame;\n};\n"
  },
  {
    "path": "components/_util/responsiveObserve.ts",
    "content": "import { computed } from 'vue';\nimport type { GlobalToken } from '../theme/interface';\nimport { useToken } from '../theme/internal';\n\nexport type Breakpoint = 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';\nexport type BreakpointMap = Record<Breakpoint, string>;\nexport type ScreenMap = Partial<Record<Breakpoint, boolean>>;\nexport type ScreenSizeMap = Partial<Record<Breakpoint, number>>;\n\nexport const responsiveArray: Breakpoint[] = ['xxxl', 'xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\ntype SubscribeFunc = (screens: ScreenMap) => void;\n\nconst getResponsiveMap = (token: GlobalToken): BreakpointMap => ({\n  xs: `(max-width: ${token.screenXSMax}px)`,\n  sm: `(min-width: ${token.screenSM}px)`,\n  md: `(min-width: ${token.screenMD}px)`,\n  lg: `(min-width: ${token.screenLG}px)`,\n  xl: `(min-width: ${token.screenXL}px)`,\n  xxl: `(min-width: ${token.screenXXL}px)`,\n  xxxl: `{min-width: ${token.screenXXXL}px}`,\n});\n\nexport default function useResponsiveObserver() {\n  const [, token] = useToken();\n\n  return computed(() => {\n    const responsiveMap: BreakpointMap = getResponsiveMap(token.value);\n    const subscribers = new Map<Number, SubscribeFunc>();\n    let subUid = -1;\n    let screens = {};\n\n    return {\n      matchHandlers: {} as {\n        [prop: string]: {\n          mql: MediaQueryList;\n          listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n        };\n      },\n      dispatch(pointMap: ScreenMap) {\n        screens = pointMap;\n        subscribers.forEach(func => func(screens));\n        return subscribers.size >= 1;\n      },\n      subscribe(func: SubscribeFunc): number {\n        if (!subscribers.size) this.register();\n        subUid += 1;\n        subscribers.set(subUid, func);\n        func(screens);\n        return subUid;\n      },\n      unsubscribe(paramToken: number) {\n        subscribers.delete(paramToken);\n        if (!subscribers.size) this.unregister();\n      },\n      unregister() {\n        Object.keys(responsiveMap).forEach((screen: string) => {\n          const matchMediaQuery = responsiveMap[screen];\n          const handler = this.matchHandlers[matchMediaQuery];\n          handler?.mql.removeListener(handler?.listener);\n        });\n        subscribers.clear();\n      },\n      register() {\n        Object.keys(responsiveMap).forEach((screen: string) => {\n          const matchMediaQuery = responsiveMap[screen];\n          const listener = ({ matches }: { matches: boolean }) => {\n            this.dispatch({\n              ...screens,\n              [screen]: matches,\n            });\n          };\n          const mql = window.matchMedia(matchMediaQuery);\n          mql.addListener(listener);\n          this.matchHandlers[matchMediaQuery] = {\n            mql,\n            listener,\n          };\n\n          listener(mql);\n        });\n      },\n      responsiveMap,\n    };\n  });\n}\n"
  },
  {
    "path": "components/_util/scrollTo.ts",
    "content": "import raf from './raf';\nimport { easeInOutCubic } from './easings';\nimport getScroll, { isWindow } from './getScroll';\n\ninterface ScrollToOptions {\n  /** Scroll container, default as window */\n  getContainer?: () => HTMLElement | Window | Document;\n  /** Scroll end callback */\n  callback?: () => any;\n  /** Animation duration, default as 450 */\n  duration?: number;\n}\n\nexport default function scrollTo(y: number, options: ScrollToOptions = {}) {\n  const { getContainer = () => window, callback, duration = 450 } = options;\n  const container = getContainer();\n  const scrollTop = getScroll(container, true);\n  const startTime = Date.now();\n\n  const frameFunc = () => {\n    const timestamp = Date.now();\n    const time = timestamp - startTime;\n    const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);\n    if (isWindow(container)) {\n      (container as Window).scrollTo(window.scrollX, nextScrollTop);\n    } else if (container instanceof Document) {\n      (container as Document).documentElement.scrollTop = nextScrollTop;\n    } else {\n      (container as HTMLElement).scrollTop = nextScrollTop;\n    }\n    if (time < duration) {\n      raf(frameFunc);\n    } else if (typeof callback === 'function') {\n      callback();\n    }\n  };\n  raf(frameFunc);\n}\n"
  },
  {
    "path": "components/_util/setStyle.ts",
    "content": "import type { CSSProperties } from 'vue';\n\n/**\n * Easy to set element style, return previous style\n * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately)\n * https://github.com/ant-design/ant-design/issues/19393\n *\n */\nexport interface SetStyleOptions {\n  element?: HTMLElement;\n}\nfunction setStyle(style: CSSProperties, options: SetStyleOptions = {}): CSSProperties {\n  const { element = document.body } = options;\n  const oldStyle: CSSProperties = {};\n\n  const styleKeys = Object.keys(style);\n\n  // IE browser compatible\n  styleKeys.forEach(key => {\n    oldStyle[key] = element.style[key];\n  });\n\n  styleKeys.forEach(key => {\n    element.style[key] = style[key];\n  });\n\n  return oldStyle;\n}\n\nexport default setStyle;\n"
  },
  {
    "path": "components/_util/shallowequal.ts",
    "content": "import { toRaw } from 'vue';\n\nfunction shallowEqual(objA: any, objB: any, compare?: any, compareContext?: any) {\n  let ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n    return false;\n  }\n\n  const keysA = Object.keys(objA);\n  const keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (let idx = 0; idx < keysA.length; idx++) {\n    const key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    const valueA = objA[key];\n    const valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport default function (value: any, other: any) {\n  return shallowEqual(toRaw(value), toRaw(other));\n}\n"
  },
  {
    "path": "components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Static-Style-Extract should extract static styles with customTheme and customStyle 1`] = `\".anticon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.anticon >*{line-height:1;}.anticon svg{display:inline-block;}.anticon .anticon .anticon-icon{display:block;}a{color:#1668dc;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;transition:color 0.3s;-webkit-text-decoration-skip:objects;}a:hover{color:#15417e;}a:active{color:#1554ad;}a:active,a:hover{text-decoration:none;outline:0;}a:focus{text-decoration:none;outline:0;}a[disabled]{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}[class^=\\\\\"ant-affix\\\\\"],[class*=\\\\\" ant-affix\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-affix\\\\\"]::before,[class*=\\\\\" ant-affix\\\\\"]::before,[class^=\\\\\"ant-affix\\\\\"]::after,[class*=\\\\\" ant-affix\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"],[class*=\\\\\" ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"],[class^=\\\\\"ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"],[class*=\\\\\" ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"]::before,[class*=\\\\\" ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"]::before,[class^=\\\\\"ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"]::before,[class*=\\\\\" ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"]::before,[class^=\\\\\"ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"]::after,[class*=\\\\\" ant-affix\\\\\"] [class^=\\\\\"ant-affix\\\\\"]::after,[class^=\\\\\"ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"]::after,[class*=\\\\\" ant-affix\\\\\"] [class*=\\\\\" ant-affix\\\\\"]::after{box-sizing:border-box;}.ant-affix{position:fixed;z-index:10;}[class^=\\\\\"ant-anchor\\\\\"],[class*=\\\\\" ant-anchor\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-anchor\\\\\"]::before,[class*=\\\\\" ant-anchor\\\\\"]::before,[class^=\\\\\"ant-anchor\\\\\"]::after,[class*=\\\\\" ant-anchor\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"],[class*=\\\\\" ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"],[class^=\\\\\"ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"],[class*=\\\\\" ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"]::before,[class*=\\\\\" ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"]::before,[class^=\\\\\"ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"]::before,[class*=\\\\\" ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"]::before,[class^=\\\\\"ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"]::after,[class*=\\\\\" ant-anchor\\\\\"] [class^=\\\\\"ant-anchor\\\\\"]::after,[class^=\\\\\"ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"]::after,[class*=\\\\\" ant-anchor\\\\\"] [class*=\\\\\" ant-anchor\\\\\"]::after{box-sizing:border-box;}.ant-anchor-wrapper{margin-block-start:-4px;padding-block-start:4px;background-color:transparent;}.ant-anchor-wrapper .ant-anchor{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;padding-inline-start:2px;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link{padding-block:4px;padding-inline:16px 0;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;display:block;margin-block-end:3px;color:rgba(255, 255, 255, 0.85);transition:all 0.3s;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-title:only-child{margin-block-end:0;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-active>.ant-anchor-link-title{color:#037003;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link .ant-anchor-link{padding-block:2px;}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor::before{position:absolute;left:0;top:0;height:100%;border-inline-start:2px solid rgba(253, 253, 253, 0.12);content:\\\\\" \\\\\";}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor .ant-anchor-ink{position:absolute;left:0;display:none;transform:translateY(-50%);transition:top 0.3s ease-in-out;width:2px;background-color:#037003;}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor .ant-anchor-ink.ant-anchor-ink-visible{display:inline-block;}.ant-anchor-wrapper .ant-anchor-fixed .ant-anchor-ink .ant-anchor-ink{display:none;}.ant-anchor-wrapper-horizontal{position:relative;}.ant-anchor-wrapper-horizontal::before{position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);content:\\\\\" \\\\\";}.ant-anchor-wrapper-horizontal .ant-anchor{overflow-x:scroll;position:relative;display:flex;scrollbar-width:none;}.ant-anchor-wrapper-horizontal .ant-anchor::-webkit-scrollbar{display:none;}.ant-anchor-wrapper-horizontal .ant-anchor .ant-anchor-link:first-of-type{padding-inline:0;}.ant-anchor-wrapper-horizontal .ant-anchor .ant-anchor-ink{position:absolute;bottom:0;transition:left 0.3s ease-in-out,width 0.3s ease-in-out;height:2px;background-color:#037003;}[class^=\\\\\"ant-select\\\\\"],[class*=\\\\\" ant-select\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-select\\\\\"]::before,[class*=\\\\\" ant-select\\\\\"]::before,[class^=\\\\\"ant-select\\\\\"]::after,[class*=\\\\\" ant-select\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"],[class*=\\\\\" ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"],[class^=\\\\\"ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"],[class*=\\\\\" ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"]::before,[class*=\\\\\" ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"]::before,[class^=\\\\\"ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"]::before,[class*=\\\\\" ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"]::before,[class^=\\\\\"ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"]::after,[class*=\\\\\" ant-select\\\\\"] [class^=\\\\\"ant-select\\\\\"]::after,[class^=\\\\\"ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"]::after,[class*=\\\\\" ant-select\\\\\"] [class*=\\\\\" ant-select\\\\\"]::after{box-sizing:border-box;}.ant-select-borderless .ant-select-selector{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important;}.ant-select.ant-select-in-form-item{width:100%;}.ant-select{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;cursor:pointer;}.ant-select:not(.ant-select-customize-input) .ant-select-selector{position:relative;background-color:#141414;border:1px solid #424242;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:pointer;}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector{cursor:text;}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:auto;color:inherit;}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{color:rgba(255, 255, 255, 0.25);background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{background:rgba(255, 255, 255, 0.08);}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:not-allowed;}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;appearance:none;}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none;}.ant-select .ant-select-selection-item{flex:1;font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-select .ant-select-selection-placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-select .ant-select-arrow{display:flex;align-items:center;color:rgba(255, 255, 255, 0.25);font-style:normal;line-height:1;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:50%;inset-inline-start:auto;inset-inline-end:11px;height:12px;margin-top:-6px;font-size:12px;pointer-events:none;}.ant-select .ant-select-arrow >*{line-height:1;}.ant-select .ant-select-arrow svg{display:inline-block;}.ant-select .ant-select-arrow .anticon{vertical-align:top;transition:transform 0.3s;}.ant-select .ant-select-arrow .anticon >svg{vertical-align:top;}.ant-select .ant-select-arrow .anticon:not(.ant-select-suffix){pointer-events:auto;}.ant-select-disabled .ant-select .ant-select-arrow{cursor:not-allowed;}.ant-select .ant-select-arrow >*:not(:last-child){margin-inline-end:8px;}.ant-select .ant-select-clear{position:absolute;top:50%;inset-inline-start:auto;inset-inline-end:11px;z-index:1;display:inline-block;width:12px;height:12px;margin-top:-6px;color:rgba(255, 255, 255, 0.25);font-size:12px;font-style:normal;line-height:1;text-align:center;text-transform:none;background:#141414;cursor:pointer;opacity:0;transition:color 0.2s ease,opacity 0.3s ease;text-rendering:auto;}.ant-select .ant-select-clear:before{display:block;}.ant-select .ant-select-clear:hover{color:rgba(255, 255, 255, 0.45);}.ant-select:hover .ant-select-clear{opacity:1;}.ant-select-has-feedback .ant-select-clear{inset-inline-end:29px;}.ant-select-single{font-size:14px;}.ant-select-single .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:6px;}.ant-select-single .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:30px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:30px;}}.ant-select-single .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single .ant-select-selector:after,.ant-select-single .ant-select-selector .ant-select-selection-item:after,.ant-select-single .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:18px;}.ant-select-single.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:32px;padding:0 11px;}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:30px;}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector:after{line-height:30px;}.ant-select-single.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-single.ant-select-sm{font-size:14px;}.ant-select-single.ant-select-sm .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:4px;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:22px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single.ant-select-sm .ant-select-selector:after,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item:after,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-single.ant-select-sm.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:18px;}.ant-select-single.ant-select-sm.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:24px;padding:0 11px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:22px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector:after{line-height:22px;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search{inset-inline-start:7px;inset-inline-end:7px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{padding:0 7px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{inset-inline-end:28px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:21px;}.ant-select-single.ant-select-lg{font-size:16px;}.ant-select-single.ant-select-lg .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:8px;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:38px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single.ant-select-lg .ant-select-selector:after,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item:after,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-single.ant-select-lg.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-lg.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:20px;}.ant-select-single.ant-select-lg.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:40px;padding:0 11px;}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:38px;}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector:after{line-height:38px;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-multiple{font-size:14px;}.ant-select-multiple .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:6px;}.ant-select-show-search.ant-select-multiple .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:24px;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:24px;margin-top:2px;margin-bottom:2px;line-height:22px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:4px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple .ant-select-selection-search-input,.ant-select-multiple .ant-select-selection-search-mirror{height:24px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:24px;transition:all 0.3s;}.ant-select-multiple .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-multiple.ant-select-sm{font-size:14px;}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple.ant-select-sm .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:4px;}.ant-select-show-search.ant-select-multiple.ant-select-sm .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple.ant-select-sm .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-sm .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:16px;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-multiple.ant-select-sm.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-sm.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple.ant-select-sm .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:16px;margin-top:2px;margin-bottom:2px;line-height:14px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:2px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple.ant-select-sm .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple.ant-select-sm .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{height:16px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:16px;transition:all 0.3s;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{inset-inline-start:7px;inset-inline-end:auto;}.ant-select-multiple.ant-select-sm .ant-select-selection-search{margin-inline-start:2px;}.ant-select-multiple.ant-select-lg{font-size:16px;}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple.ant-select-lg .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:8px;}.ant-select-show-search.ant-select-multiple.ant-select-lg .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple.ant-select-lg .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-lg .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:32px;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-select-multiple.ant-select-lg.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-lg.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple.ant-select-lg .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:32px;margin-top:2px;margin-bottom:2px;line-height:30px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:6px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple.ant-select-lg .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple.ant-select-lg .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{height:32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;transition:all 0.3s;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple.ant-select-lg .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-dropdown{box-sizing:border-box;margin:0;padding:4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;z-index:1050;overflow:hidden;font-variant:initial;background-color:#1f1f1f;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpIn;}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownIn;}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpOut;}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownOut;}.ant-select-dropdown-hidden{display:none;}.ant-select-dropdown-empty{color:rgba(255, 255, 255, 0.25);}.ant-select-dropdown .ant-select-item-empty{position:relative;display:block;min-height:32px;padding:5px 12px;color:rgba(255, 255, 255, 0.25);font-weight:normal;font-size:14px;line-height:1.5714285714285714;box-sizing:border-box;}.ant-select-dropdown .ant-select-item{position:relative;display:block;min-height:32px;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;box-sizing:border-box;cursor:pointer;transition:background 0.3s ease;border-radius:4px;}.ant-select-dropdown .ant-select-item-group{color:rgba(255, 255, 255, 0.45);font-size:12px;cursor:default;}.ant-select-dropdown .ant-select-item-option{display:flex;}.ant-select-dropdown .ant-select-item-option-content{flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-select-dropdown .ant-select-item-option-state{flex:none;}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:rgba(255, 255, 255, 0.08);}.ant-select-dropdown .ant-select-item-option-selected:not(.ant-select-item-option-disabled){color:rgba(255, 255, 255, 0.85);font-weight:600;background-color:#111911;}.ant-select-dropdown .ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state{color:#037003;}.ant-select-dropdown .ant-select-item-option-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-select-dropdown .ant-select-item-option-disabled.ant-select-item-option-selected{background-color:rgba(255, 255, 255, 0.08);}.ant-select-dropdown .ant-select-item-option-grouped{padding-inline-start:24px;}.ant-select-dropdown-rtl{direction:rtl;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-select-rtl{direction:rtl;}.ant-select-focused.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#198016;border-inline-end-width:undefinedpx!important;}.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#e86e6b;}.ant-select-focused.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#e86e6b;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#e86e6b;border-inline-end-width:undefinedpx!important;}.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#7c5914;}.ant-select-focused.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#7c5914;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#7c5914;border-inline-end-width:undefinedpx!important;}.ant-select-compact-item:not(.ant-select-compact-last-item){margin-inline-end:-1px;}.ant-select-compact-item:hover>*,.ant-select-compact-item:active>*{z-index:2;}.ant-select-compact-item.ant-select-focused{z-index:2;}.ant-select-compact-item[disabled]>*{z-index:0;}.ant-select-compact-item:not(.ant-select-compact-first-item):not(.ant-select-compact-last-item)>.ant-select-selector{border-radius:0;}.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item.ant-select-sm>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item.ant-select-lg>.ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item.ant-select-sm>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item.ant-select-lg>.ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}@keyframes antSlideUpIn{0%{transform:scaleY(0.8);transform-origin:0% 0%;opacity:0;}100%{transform:scaleY(1);transform-origin:0% 0%;opacity:1;}}@keyframes antSlideDownIn{0%{transform:scaleY(0.8);transform-origin:100% 100%;opacity:0;}100%{transform:scaleY(1);transform-origin:100% 100%;opacity:1;}}@keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0% 0%;opacity:1;}100%{transform:scaleY(0.8);transform-origin:0% 0%;opacity:0;}}@keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1;}100%{transform:scaleY(0.8);transform-origin:100% 100%;opacity:0;}}@keyframes antMoveUpIn{0%{transform:translate3d(0, -100%, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antMoveUpOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, -100%, 0);transform-origin:0 0;opacity:0;}}@keyframes antMoveDownIn{0%{transform:translate3d(0, 100%, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antMoveDownOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, 100%, 0);transform-origin:0 0;opacity:0;}}[class^=\\\\\"ant-alert\\\\\"],[class*=\\\\\" ant-alert\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-alert\\\\\"]::before,[class*=\\\\\" ant-alert\\\\\"]::before,[class^=\\\\\"ant-alert\\\\\"]::after,[class*=\\\\\" ant-alert\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"],[class*=\\\\\" ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"],[class^=\\\\\"ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"],[class*=\\\\\" ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"]::before,[class*=\\\\\" ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"]::before,[class^=\\\\\"ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"]::before,[class*=\\\\\" ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"]::before,[class^=\\\\\"ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"]::after,[class*=\\\\\" ant-alert\\\\\"] [class^=\\\\\"ant-alert\\\\\"]::after,[class^=\\\\\"ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"]::after,[class*=\\\\\" ant-alert\\\\\"] [class*=\\\\\" ant-alert\\\\\"]::after{box-sizing:border-box;}.ant-alert{box-sizing:border-box;margin:0;padding:8px 12px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:flex;align-items:center;word-wrap:break-word;border-radius:8px;}.ant-alert.ant-alert-rtl{direction:rtl;}.ant-alert .ant-alert-content{flex:1;min-width:0;}.ant-alert .ant-alert-icon{margin-inline-end:8px;line-height:0;}.ant-alert-description{display:none;font-size:14px;line-height:1.5714285714285714;}.ant-alert-message{color:rgba(255, 255, 255, 0.85);}.ant-alert.ant-alert-motion-leave{overflow:hidden;opacity:1;transition:max-height 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),padding-top 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),padding-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),margin-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-alert.ant-alert-motion-leave-active{max-height:0;margin-bottom:0!important;padding-top:0;padding-bottom:0;opacity:0;}.ant-alert-with-description{align-items:flex-start;padding-inline:24px;padding-block:20px;}.ant-alert-with-description .ant-alert-icon{margin-inline-end:12px;font-size:24px;line-height:0;}.ant-alert-with-description .ant-alert-message{display:block;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:16px;}.ant-alert-with-description .ant-alert-description{display:block;}.ant-alert-banner{margin-bottom:0;border:0!important;border-radius:0;}.ant-alert-success{background-color:#162312;border:1px solid #274916;}.ant-alert-success .ant-alert-icon{color:#49aa19;}.ant-alert-info{background-color:#111a2c;border:1px solid #15325b;}.ant-alert-info .ant-alert-icon{color:#1668dc;}.ant-alert-warning{background-color:#2b2111;border:1px solid #594214;}.ant-alert-warning .ant-alert-icon{color:#d89614;}.ant-alert-error{background-color:#2c1618;border:1px solid #5b2526;}.ant-alert-error .ant-alert-icon{color:#dc4446;}.ant-alert-error .ant-alert-description>pre{margin:0;padding:0;}.ant-alert-action{margin-inline-start:8px;}.ant-alert .ant-alert-close-icon{margin-inline-start:8px;padding:0;overflow:hidden;font-size:12px;line-height:12px;background-color:transparent;border:none;outline:none;cursor:pointer;}.ant-alert .ant-alert-close-icon .anticon-close{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;}.ant-alert .ant-alert-close-icon .anticon-close:hover{color:rgba(255, 255, 255, 0.85);}.ant-alert-close-text{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;}.ant-alert-close-text:hover{color:rgba(255, 255, 255, 0.85);}[class^=\\\\\"ant-avatar\\\\\"],[class*=\\\\\" ant-avatar\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-avatar\\\\\"]::before,[class*=\\\\\" ant-avatar\\\\\"]::before,[class^=\\\\\"ant-avatar\\\\\"]::after,[class*=\\\\\" ant-avatar\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"],[class*=\\\\\" ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"],[class^=\\\\\"ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"],[class*=\\\\\" ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"]::before,[class*=\\\\\" ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"]::before,[class^=\\\\\"ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"]::before,[class*=\\\\\" ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"]::before,[class^=\\\\\"ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"]::after,[class*=\\\\\" ant-avatar\\\\\"] [class^=\\\\\"ant-avatar\\\\\"]::after,[class^=\\\\\"ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"]::after,[class*=\\\\\" ant-avatar\\\\\"] [class*=\\\\\" ant-avatar\\\\\"]::after{box-sizing:border-box;}.ant-avatar{box-sizing:border-box;margin:0;padding:0;color:#fff;font-size:14px;line-height:30px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;overflow:hidden;white-space:nowrap;text-align:center;vertical-align:middle;background:rgba(255, 255, 255, 0.25);border:1px solid transparent;width:32px;height:32px;border-radius:50%;}.ant-avatar-image{background:transparent;}.ant-avatar .ant-image-img{display:block;}.ant-avatar.ant-avatar-square{border-radius:6px;}.ant-avatar .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar.ant-avatar-icon{font-size:18px;}.ant-avatar.ant-avatar-icon >.anticon{margin:0;}.ant-avatar-lg{width:40px;height:40px;line-height:38px;border-radius:50%;}.ant-avatar-lg.ant-avatar-square{border-radius:8px;}.ant-avatar-lg .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar-lg.ant-avatar-icon{font-size:24px;}.ant-avatar-lg.ant-avatar-icon >.anticon{margin:0;}.ant-avatar-sm{width:24px;height:24px;line-height:22px;border-radius:50%;}.ant-avatar-sm.ant-avatar-square{border-radius:4px;}.ant-avatar-sm .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar-sm.ant-avatar-icon{font-size:14px;}.ant-avatar-sm.ant-avatar-icon >.anticon{margin:0;}.ant-avatar >img{display:block;width:100%;height:100%;object-fit:cover;}.ant-avatar-group{display:inline-flex;}.ant-avatar-group .ant-avatar{border-color:#141414;}.ant-avatar-group >*:not(:first-child){margin-inline-start:-8px;}.ant-avatar-group-popover .ant-avatar+.ant-avatar{margin-inline-start:4px;}[class^=\\\\\"ant-badge\\\\\"],[class*=\\\\\" ant-badge\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-badge\\\\\"]::before,[class*=\\\\\" ant-badge\\\\\"]::before,[class^=\\\\\"ant-badge\\\\\"]::after,[class*=\\\\\" ant-badge\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"],[class*=\\\\\" ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"],[class^=\\\\\"ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"],[class*=\\\\\" ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"]::before,[class*=\\\\\" ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"]::before,[class^=\\\\\"ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"]::before,[class*=\\\\\" ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"]::before,[class^=\\\\\"ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"]::after,[class*=\\\\\" ant-badge\\\\\"] [class^=\\\\\"ant-badge\\\\\"]::after,[class^=\\\\\"ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"]::after,[class*=\\\\\" ant-badge\\\\\"] [class*=\\\\\" ant-badge\\\\\"]::after{box-sizing:border-box;}.ant-badge{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:fit-content;}.ant-badge .ant-badge-count{z-index:auto;min-width:20px;height:20px;color:#141414;font-weight:normal;font-size:12px;line-height:20px;white-space:nowrap;text-align:center;background:#dc4446;border-radius:10px;box-shadow:0 0 0 1px #141414;transition:background 0.2s;}.ant-badge .ant-badge-count a{color:#141414;}.ant-badge .ant-badge-count a:hover{color:#141414;}a:hover .ant-badge .ant-badge-count{background:#e86e6b;}.ant-badge .ant-badge-count-sm{min-width:14px;height:14px;font-size:12px;line-height:14px;border-radius:7px;}.ant-badge .ant-badge-multiple-words{padding:0 8px;}.ant-badge .ant-badge-dot{z-index:auto;width:6px;min-width:6px;height:6px;background:#dc4446;border-radius:100%;box-shadow:0 0 0 1px #141414;}.ant-badge .ant-badge-dot.ant-scroll-number{transition:background 0.3s;}.ant-badge .ant-badge-count,.ant-badge .ant-badge-dot,.ant-badge .ant-scroll-number-custom-component{position:absolute;top:0;inset-inline-end:0;transform:translate(50%, -50%);transform-origin:100% 0%;}.ant-badge .ant-badge-count.anticon-spin,.ant-badge .ant-badge-dot.anticon-spin,.ant-badge .ant-scroll-number-custom-component.anticon-spin{animation-name:antBadgeLoadingCircle;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;}.ant-badge.ant-badge-status{line-height:inherit;vertical-align:baseline;}.ant-badge.ant-badge-status .ant-badge-status-dot{position:relative;top:-1px;display:inline-block;width:6px;height:6px;vertical-align:middle;border-radius:50%;}.ant-badge.ant-badge-status .ant-badge-status-success{background-color:#49aa19;}.ant-badge.ant-badge-status .ant-badge-status-processing{overflow:visible;color:#037003;background-color:#037003;}.ant-badge.ant-badge-status .ant-badge-status-processing::after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-width:1px;border-style:solid;border-color:inherit;border-radius:50%;animation-name:antStatusProcessing;animation-duration:1.2s;animation-iteration-count:infinite;animation-timing-function:ease-in-out;content:\\\\\"\\\\\";}.ant-badge.ant-badge-status .ant-badge-status-default{background-color:rgba(255, 255, 255, 0.25);}.ant-badge.ant-badge-status .ant-badge-status-error{background-color:#dc4446;}.ant-badge.ant-badge-status .ant-badge-status-warning{background-color:#d89614;}.ant-badge.ant-badge-status .ant-badge-status-text{margin-inline-start:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-badge.ant-badge .ant-badge-color-blue{background:#1668dc;}.ant-badge.ant-badge .ant-badge-color-blue:not(.ant-badge-count){color:#1668dc;}.ant-badge.ant-badge .ant-badge-color-purple{background:#642ab5;}.ant-badge.ant-badge .ant-badge-color-purple:not(.ant-badge-count){color:#642ab5;}.ant-badge.ant-badge .ant-badge-color-cyan{background:#13a8a8;}.ant-badge.ant-badge .ant-badge-color-cyan:not(.ant-badge-count){color:#13a8a8;}.ant-badge.ant-badge .ant-badge-color-green{background:#49aa19;}.ant-badge.ant-badge .ant-badge-color-green:not(.ant-badge-count){color:#49aa19;}.ant-badge.ant-badge .ant-badge-color-magenta{background:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-magenta:not(.ant-badge-count){color:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-pink{background:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-pink:not(.ant-badge-count){color:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-red{background:#d32029;}.ant-badge.ant-badge .ant-badge-color-red:not(.ant-badge-count){color:#d32029;}.ant-badge.ant-badge .ant-badge-color-orange{background:#d87a16;}.ant-badge.ant-badge .ant-badge-color-orange:not(.ant-badge-count){color:#d87a16;}.ant-badge.ant-badge .ant-badge-color-yellow{background:#d8bd14;}.ant-badge.ant-badge .ant-badge-color-yellow:not(.ant-badge-count){color:#d8bd14;}.ant-badge.ant-badge .ant-badge-color-volcano{background:#d84a1b;}.ant-badge.ant-badge .ant-badge-color-volcano:not(.ant-badge-count){color:#d84a1b;}.ant-badge.ant-badge .ant-badge-color-geekblue{background:#2b4acb;}.ant-badge.ant-badge .ant-badge-color-geekblue:not(.ant-badge-count){color:#2b4acb;}.ant-badge.ant-badge .ant-badge-color-lime{background:#8bbb11;}.ant-badge.ant-badge .ant-badge-color-lime:not(.ant-badge-count){color:#8bbb11;}.ant-badge.ant-badge .ant-badge-color-gold{background:#d89614;}.ant-badge.ant-badge .ant-badge-color-gold:not(.ant-badge-count){color:#d89614;}.ant-badge .ant-badge-zoom-appear,.ant-badge .ant-badge-zoom-enter{animation-name:antZoomBadgeIn;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);animation-fill-mode:both;}.ant-badge .ant-badge-zoom-leave{animation-name:antZoomBadgeOut;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);animation-fill-mode:both;}.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-appear,.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-enter{animation-name:antNoWrapperZoomBadgeIn;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);}.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-leave{animation-name:antNoWrapperZoomBadgeOut;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);}.ant-badge.ant-badge-not-a-wrapper:not(.ant-badge-status){vertical-align:middle;}.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge.ant-badge-not-a-wrapper .ant-badge-count{transform:none;}.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number{position:relative;top:auto;display:block;transform-origin:50% 50%;}.ant-badge .ant-scroll-number{overflow:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-only{position:relative;display:inline-block;height:20px;transition:all 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-only >p.ant-scroll-number-only-unit{height:20px;margin:0;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-symbol{vertical-align:top;}.ant-badge-rtl{direction:rtl;}.ant-badge-rtl .ant-badge-count,.ant-badge-rtl .ant-badge-dot,.ant-badge-rtl .ant-scroll-number-custom-component{transform:translate(-50%, -50%);}.ant-ribbon-wrapper{position:relative;}.ant-ribbon{box-sizing:border-box;margin:0;padding:0 8px;color:#037003;font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:8px;white-space:nowrap;background-color:#037003;border-radius:4px;}.ant-ribbon .ant-ribbon-text{color:#fff;}.ant-ribbon .ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(0.75);transform-origin:top;filter:brightness(75%);}.ant-ribbon.ant-ribbon-color-blue{background:#1668dc;color:#1668dc;}.ant-ribbon.ant-ribbon-color-purple{background:#642ab5;color:#642ab5;}.ant-ribbon.ant-ribbon-color-cyan{background:#13a8a8;color:#13a8a8;}.ant-ribbon.ant-ribbon-color-green{background:#49aa19;color:#49aa19;}.ant-ribbon.ant-ribbon-color-magenta{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-pink{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-red{background:#d32029;color:#d32029;}.ant-ribbon.ant-ribbon-color-orange{background:#d87a16;color:#d87a16;}.ant-ribbon.ant-ribbon-color-yellow{background:#d8bd14;color:#d8bd14;}.ant-ribbon.ant-ribbon-color-volcano{background:#d84a1b;color:#d84a1b;}.ant-ribbon.ant-ribbon-color-geekblue{background:#2b4acb;color:#2b4acb;}.ant-ribbon.ant-ribbon-color-lime{background:#8bbb11;color:#8bbb11;}.ant-ribbon.ant-ribbon-color-gold{background:#d89614;color:#d89614;}.ant-ribbon.ant-ribbon-placement-end{inset-inline-end:-8px;border-end-end-radius:0;}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{inset-inline-end:0;border-inline-end-color:transparent;border-block-end-color:transparent;}.ant-ribbon.ant-ribbon-placement-start{inset-inline-start:-8px;border-end-start-radius:0;}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{inset-inline-start:0;border-block-end-color:transparent;border-inline-start-color:transparent;}.ant-ribbon-rtl{direction:rtl;}@keyframes antBadgeLoadingCircle{0%{transform-origin:50%;}100%{transform:translate(50%, -50%) rotate(360deg);transform-origin:50%;}}@keyframes antStatusProcessing{0%{transform:scale(0.8);opacity:0.5;}100%{transform:scale(2.4);opacity:0;}}@keyframes antZoomBadgeIn{0%{transform:scale(0) translate(50%, -50%);opacity:0;}100%{transform:scale(1) translate(50%, -50%);}}@keyframes antZoomBadgeOut{0%{transform:scale(1) translate(50%, -50%);}100%{transform:scale(0) translate(50%, -50%);opacity:0;}}@keyframes antNoWrapperZoomBadgeIn{0%{transform:scale(0);opacity:0;}100%{transform:scale(1);}}@keyframes antNoWrapperZoomBadgeOut{0%{transform:scale(1);}100%{transform:scale(0);opacity:0;}}[class^=\\\\\"ant-ribbon\\\\\"],[class*=\\\\\" ant-ribbon\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-ribbon\\\\\"]::before,[class*=\\\\\" ant-ribbon\\\\\"]::before,[class^=\\\\\"ant-ribbon\\\\\"]::after,[class*=\\\\\" ant-ribbon\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"],[class*=\\\\\" ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"],[class^=\\\\\"ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"],[class*=\\\\\" ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"]::before,[class*=\\\\\" ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"]::before,[class^=\\\\\"ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"]::before,[class*=\\\\\" ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"]::before,[class^=\\\\\"ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"]::after,[class*=\\\\\" ant-ribbon\\\\\"] [class^=\\\\\"ant-ribbon\\\\\"]::after,[class^=\\\\\"ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"]::after,[class*=\\\\\" ant-ribbon\\\\\"] [class*=\\\\\" ant-ribbon\\\\\"]::after{box-sizing:border-box;}.ant-ribbon{box-sizing:border-box;margin:0;padding:0 8px;color:#037003;font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:8px;white-space:nowrap;background-color:#037003;border-radius:4px;}.ant-ribbon .ant-ribbon-text{color:#fff;}.ant-ribbon .ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(0.75);transform-origin:top;filter:brightness(75%);}.ant-ribbon.ant-ribbon-color-blue{background:#1668dc;color:#1668dc;}.ant-ribbon.ant-ribbon-color-purple{background:#642ab5;color:#642ab5;}.ant-ribbon.ant-ribbon-color-cyan{background:#13a8a8;color:#13a8a8;}.ant-ribbon.ant-ribbon-color-green{background:#49aa19;color:#49aa19;}.ant-ribbon.ant-ribbon-color-magenta{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-pink{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-red{background:#d32029;color:#d32029;}.ant-ribbon.ant-ribbon-color-orange{background:#d87a16;color:#d87a16;}.ant-ribbon.ant-ribbon-color-yellow{background:#d8bd14;color:#d8bd14;}.ant-ribbon.ant-ribbon-color-volcano{background:#d84a1b;color:#d84a1b;}.ant-ribbon.ant-ribbon-color-geekblue{background:#2b4acb;color:#2b4acb;}.ant-ribbon.ant-ribbon-color-lime{background:#8bbb11;color:#8bbb11;}.ant-ribbon.ant-ribbon-color-gold{background:#d89614;color:#d89614;}.ant-ribbon.ant-ribbon-placement-end{inset-inline-end:-8px;border-end-end-radius:0;}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{inset-inline-end:0;border-inline-end-color:transparent;border-block-end-color:transparent;}.ant-ribbon.ant-ribbon-placement-start{inset-inline-start:-8px;border-end-start-radius:0;}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{inset-inline-start:0;border-block-end-color:transparent;border-inline-start-color:transparent;}.ant-ribbon-rtl{direction:rtl;}.ant-ribbon-wrapper{position:relative;}[class^=\\\\\"ant-breadcrumb\\\\\"],[class*=\\\\\" ant-breadcrumb\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-breadcrumb\\\\\"]::before,[class*=\\\\\" ant-breadcrumb\\\\\"]::before,[class^=\\\\\"ant-breadcrumb\\\\\"]::after,[class*=\\\\\" ant-breadcrumb\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"],[class*=\\\\\" ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"],[class^=\\\\\"ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"],[class*=\\\\\" ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"]::before,[class*=\\\\\" ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"]::before,[class^=\\\\\"ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"]::before,[class*=\\\\\" ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"]::before,[class^=\\\\\"ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"]::after,[class*=\\\\\" ant-breadcrumb\\\\\"] [class^=\\\\\"ant-breadcrumb\\\\\"]::after,[class^=\\\\\"ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"]::after,[class*=\\\\\" ant-breadcrumb\\\\\"] [class*=\\\\\" ant-breadcrumb\\\\\"]::after{box-sizing:border-box;}.ant-breadcrumb{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-breadcrumb .anticon{font-size:14px;}.ant-breadcrumb ol{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;}.ant-breadcrumb a{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;padding:0 4px;border-radius:4px;height:22px;display:inline-block;margin-inline:-4px;}.ant-breadcrumb a:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-breadcrumb a:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-breadcrumb li:last-child{color:rgba(255, 255, 255, 0.85);}.ant-breadcrumb li:last-child>.ant-breadcrumb-separator{display:none;}.ant-breadcrumb .ant-breadcrumb-separator{margin-inline:8px;color:rgba(255, 255, 255, 0.45);}.ant-breadcrumb .ant-breadcrumb-link >.anticon+span,.ant-breadcrumb .ant-breadcrumb-link >.anticon+a{margin-inline-start:4px;}.ant-breadcrumb .ant-breadcrumb-overlay-link{border-radius:4px;height:22px;display:inline-block;padding:0 4px;margin-inline:-4px;}.ant-breadcrumb .ant-breadcrumb-overlay-link >.anticon{margin-inline-start:4px;font-size:12px;}.ant-breadcrumb .ant-breadcrumb-overlay-link:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-breadcrumb .ant-breadcrumb-overlay-link:hover a{color:rgba(255, 255, 255, 0.85);}.ant-breadcrumb .ant-breadcrumb-overlay-link a:hover{background-color:transparent;}.ant-breadcrumb.ant-breadcrumb-rtl{direction:rtl;}[class^=\\\\\"ant-btn\\\\\"],[class*=\\\\\" ant-btn\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-btn\\\\\"]::before,[class*=\\\\\" ant-btn\\\\\"]::before,[class^=\\\\\"ant-btn\\\\\"]::after,[class*=\\\\\" ant-btn\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"],[class*=\\\\\" ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"],[class^=\\\\\"ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"],[class*=\\\\\" ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"]::before,[class*=\\\\\" ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"]::before,[class^=\\\\\"ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"]::before,[class*=\\\\\" ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"]::before,[class^=\\\\\"ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"]::after,[class*=\\\\\" ant-btn\\\\\"] [class^=\\\\\"ant-btn\\\\\"]::after,[class^=\\\\\"ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"]::after,[class*=\\\\\" ant-btn\\\\\"] [class*=\\\\\" ant-btn\\\\\"]::after{box-sizing:border-box;}.ant-btn{outline:none;position:relative;display:inline-block;font-weight:400;white-space:nowrap;text-align:center;background-image:none;background-color:transparent;border:1px solid transparent;cursor:pointer;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);user-select:none;touch-action:manipulation;line-height:1.5714285714285714;color:rgba(255, 255, 255, 0.85);}.ant-btn >span{display:inline-block;}.ant-btn >.anticon+span,.ant-btn >span+.anticon{margin-inline-start:8px;}.ant-btn >a{color:currentColor;}.ant-btn:not(:disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-btn-icon-only.ant-btn-compact-item{flex:none;}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]){position:relative;}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]):before{position:absolute;top:-1px;inset-inline-start:-1px;display:inline-block;width:1px;height:calc(100% + 2px);background-color:#198016;content:\\\\\"\\\\\";}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]){position:relative;}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]):before{position:absolute;top:-1px;inset-inline-start:-1px;display:inline-block;width:calc(100% + 2px);height:1px;background-color:#198016;content:\\\\\"\\\\\";}.ant-btn.ant-btn-sm{font-size:14px;height:24px;padding:0px 7px;border-radius:4px;}.ant-btn.ant-btn-sm.ant-btn-icon-only{width:24px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-sm.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-sm.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-sm.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn.ant-btn-sm .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn.ant-btn-sm:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle.ant-btn-sm{min-width:24px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round.ant-btn-sm{border-radius:24px;padding-inline-start:12px;padding-inline-end:12px;}.ant-btn{font-size:14px;height:32px;padding:4px 15px;border-radius:6px;}.ant-btn.ant-btn-icon-only{width:32px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle{min-width:32px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round{border-radius:32px;padding-inline-start:16px;padding-inline-end:16px;}.ant-btn.ant-btn-lg{font-size:16px;height:40px;padding:6.428571428571429px 15px;border-radius:8px;}.ant-btn.ant-btn-lg.ant-btn-icon-only{width:40px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-lg.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-lg.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-lg.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn.ant-btn-lg .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn.ant-btn-lg:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle.ant-btn-lg{min-width:40px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round.ant-btn-lg{border-radius:40px;padding-inline-start:20px;padding-inline-end:20px;}.ant-btn.ant-btn-block{width:100%;}.ant-btn-default{background-color:#141414;border-color:#424242;box-shadow:0 2px 0 rgba(255, 255, 255, 0.04);}.ant-btn-default:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-default:not(:disabled):hover{color:#198016;border-color:#198016;}.ant-btn-default:not(:disabled):active{color:#075a07;border-color:#075a07;}.ant-btn-default.ant-btn-background-ghost{color:#141414;background-color:transparent;border-color:#141414;box-shadow:none;}.ant-btn-default.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-default.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-default.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-default.ant-btn-dangerous{color:#dc4446;border-color:#dc4446;}.ant-btn-default.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;border-color:#7e2e2f;}.ant-btn-default.ant-btn-dangerous:not(:disabled):active{color:#ad393a;border-color:#ad393a;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-default.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-primary{color:#fff;background-color:#037003;box-shadow:0 2px 0 rgba(0, 53, 0, 0.15);}.ant-btn-primary:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-primary:not(:disabled):hover{color:#fff;background-color:#198016;}.ant-btn-primary:not(:disabled):active{color:#fff;background-color:#075a07;}.ant-btn-primary.ant-btn-background-ghost{color:#037003;background-color:transparent;border-color:#037003;box-shadow:none;}.ant-btn-primary.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;color:#198016;border-color:#198016;}.ant-btn-primary.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;color:#075a07;border-color:#075a07;}.ant-btn-primary.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-primary.ant-btn-dangerous{background-color:#dc4446;box-shadow:0 2px 0 rgba(238, 38, 56, 0.11);}.ant-btn-primary.ant-btn-dangerous:not(:disabled):hover{background-color:#e86e6b;}.ant-btn-primary.ant-btn-dangerous:not(:disabled):active{background-color:#ad393a;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;color:#e86e6b;border-color:#e86e6b;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;color:#ad393a;border-color:#ad393a;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-primary.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-dashed{background-color:#141414;border-color:#424242;box-shadow:0 2px 0 rgba(255, 255, 255, 0.04);border-style:dashed;}.ant-btn-dashed:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-dashed:not(:disabled):hover{color:#198016;border-color:#198016;}.ant-btn-dashed:not(:disabled):active{color:#075a07;border-color:#075a07;}.ant-btn-dashed.ant-btn-background-ghost{color:#141414;background-color:transparent;border-color:#141414;box-shadow:none;}.ant-btn-dashed.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-dashed.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-dashed.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-dashed.ant-btn-dangerous{color:#dc4446;border-color:#dc4446;}.ant-btn-dashed.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;border-color:#7e2e2f;}.ant-btn-dashed.ant-btn-dangerous:not(:disabled):active{color:#ad393a;border-color:#ad393a;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-dashed.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-link{color:#1668dc;}.ant-btn-link:not(:disabled):hover{color:#15417e;}.ant-btn-link:not(:disabled):active{color:#1554ad;}.ant-btn-link:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-link.ant-btn-dangerous{color:#dc4446;}.ant-btn-link.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;}.ant-btn-link.ant-btn-dangerous:not(:disabled):active{color:#ad393a;}.ant-btn-link.ant-btn-dangerous:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text:not(:disabled):hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-btn-text:not(:disabled):active{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.18);}.ant-btn-text:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text.ant-btn-dangerous{color:#dc4446;}.ant-btn-text.ant-btn-dangerous:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;background-color:#2c1618;}.ant-btn-text.ant-btn-dangerous:not(:disabled):active{color:#e86e6b;background-color:#2c1618;}.ant-btn-disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-disabled.ant-btn:hover{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-group{position:relative;display:inline-flex;}.ant-btn-group >span:not(:last-child),.ant-btn-group >.ant-btn:not(:last-child),.ant-btn-group >span:not(:last-child)>.ant-btn,.ant-btn-group >.ant-btn:not(:last-child)>.ant-btn{border-start-end-radius:0;border-end-end-radius:0;}.ant-btn-group >span:not(:first-child),.ant-btn-group >.ant-btn:not(:first-child){margin-inline-start:-1px;}.ant-btn-group >span:not(:first-child),.ant-btn-group >.ant-btn:not(:first-child),.ant-btn-group >span:not(:first-child)>.ant-btn,.ant-btn-group >.ant-btn:not(:first-child)>.ant-btn{border-start-start-radius:0;border-end-start-radius:0;}.ant-btn-group .ant-btn{position:relative;z-index:1;}.ant-btn-group .ant-btn:hover,.ant-btn-group .ant-btn:focus,.ant-btn-group .ant-btn:active{z-index:2;}.ant-btn-group .ant-btn[disabled]{z-index:0;}.ant-btn-group .ant-btn-icon-only{font-size:14px;}.ant-btn-group >span:not(:last-child):not(:disabled),.ant-btn-group >.ant-btn-primary:not(:last-child):not(:disabled),.ant-btn-group >span:not(:last-child)>.ant-btn-primary:not(:disabled),.ant-btn-group >.ant-btn-primary:not(:last-child)>.ant-btn-primary:not(:disabled){border-inline-end-color:#198016;}.ant-btn-group >span:not(:first-child):not(:disabled),.ant-btn-group >.ant-btn-primary:not(:first-child):not(:disabled),.ant-btn-group >span:not(:first-child)>.ant-btn-primary:not(:disabled),.ant-btn-group >.ant-btn-primary:not(:first-child)>.ant-btn-primary:not(:disabled){border-inline-start-color:#198016;}.ant-btn-group >span:not(:last-child):not(:disabled),.ant-btn-group >.ant-btn-danger:not(:last-child):not(:disabled),.ant-btn-group >span:not(:last-child)>.ant-btn-danger:not(:disabled),.ant-btn-group >.ant-btn-danger:not(:last-child)>.ant-btn-danger:not(:disabled){border-inline-end-color:#e86e6b;}.ant-btn-group >span:not(:first-child):not(:disabled),.ant-btn-group >.ant-btn-danger:not(:first-child):not(:disabled),.ant-btn-group >span:not(:first-child)>.ant-btn-danger:not(:disabled),.ant-btn-group >.ant-btn-danger:not(:first-child)>.ant-btn-danger:not(:disabled){border-inline-start-color:#e86e6b;}.ant-btn-compact-item:not(.ant-btn-compact-last-item){margin-inline-end:-1px;}.ant-btn-compact-item:hover,.ant-btn-compact-item:active{z-index:2;}.ant-btn-compact-item[disabled]{z-index:0;}.ant-btn-compact-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-last-item){border-radius:0;}.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item,.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item.ant-btn-sm,.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item.ant-btn-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item,.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item.ant-btn-sm,.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item.ant-btn-lg{border-start-start-radius:0;border-end-start-radius:0;}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-last-item){margin-bottom:-1px;}.ant-btn-compact-vertical-item:hover,.ant-btn-compact-vertical-item:focus,.ant-btn-compact-vertical-item:active{z-index:2;}.ant-btn-compact-vertical-item[disabled]{z-index:0;}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-first-item):not(.ant-btn-compact-vertical-last-item){border-radius:0;}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item),.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item).ant-btn-sm,.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item).ant-btn-lg{border-end-end-radius:0;border-end-start-radius:0;}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item),.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item).ant-btn-sm,.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item).ant-btn-lg{border-start-start-radius:0;border-start-end-radius:0;}[class^=\\\\\"ant-wave\\\\\"],[class*=\\\\\" ant-wave\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-wave\\\\\"]::before,[class*=\\\\\" ant-wave\\\\\"]::before,[class^=\\\\\"ant-wave\\\\\"]::after,[class*=\\\\\" ant-wave\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"],[class*=\\\\\" ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"],[class^=\\\\\"ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"],[class*=\\\\\" ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"]::before,[class*=\\\\\" ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"]::before,[class^=\\\\\"ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"]::before,[class*=\\\\\" ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"]::before,[class^=\\\\\"ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"]::after,[class*=\\\\\" ant-wave\\\\\"] [class^=\\\\\"ant-wave\\\\\"]::after,[class^=\\\\\"ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"]::after,[class*=\\\\\" ant-wave\\\\\"] [class*=\\\\\" ant-wave\\\\\"]::after{box-sizing:border-box;}.ant-wave{position:absolute;background:transparent;pointer-events:none;box-sizing:border-box;color:var(--wave-color, #037003);box-shadow:0 0 0 0 currentcolor;opacity:0.2;}.ant-wave.wave-motion-appear{transition:box-shadow 0.4s cubic-bezier(0.08, 0.82, 0.17, 1),opacity 2s cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-wave.wave-motion-appear-active{box-shadow:0 0 0 6px currentcolor;opacity:0;}[class^=\\\\\"ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"],[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::after,[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::after{box-sizing:border-box;}.ant-picker-calendar{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;}.ant-picker-calendar .ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#141414;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px;outline:none;}.ant-picker-calendar .ant-picker-panel-focused{border-color:#037003;}.ant-picker-calendar .ant-picker-panel-rtl{direction:rtl;}.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(45deg);}.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-135deg);}.ant-picker-calendar .ant-picker-decade-panel,.ant-picker-calendar .ant-picker-year-panel,.ant-picker-calendar .ant-picker-quarter-panel,.ant-picker-calendar .ant-picker-month-panel,.ant-picker-calendar .ant-picker-week-panel,.ant-picker-calendar .ant-picker-date-panel,.ant-picker-calendar .ant-picker-time-panel{display:flex;flex-direction:column;width:280px;}.ant-picker-calendar .ant-picker-header{display:flex;padding:0 8px;color:rgba(255, 255, 255, 0.85);border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-header >*{flex:none;}.ant-picker-calendar .ant-picker-header button{padding:0;color:rgba(255, 255, 255, 0.45);line-height:40px;background:transparent;border:0;cursor:pointer;transition:color 0.2s;}.ant-picker-calendar .ant-picker-header >button{min-width:1.6em;font-size:14px;}.ant-picker-calendar .ant-picker-header >button:hover{color:rgba(255, 255, 255, 0.85);}.ant-picker-calendar .ant-picker-header-view{flex:auto;font-weight:600;line-height:40px;}.ant-picker-calendar .ant-picker-header-view button{color:inherit;font-weight:inherit;vertical-align:top;}.ant-picker-calendar .ant-picker-header-view button:not(:first-child){margin-inline-start:8px;}.ant-picker-calendar .ant-picker-header-view button:hover{color:#037003;}.ant-picker-calendar .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-next-icon,.ant-picker-calendar .ant-picker-super-prev-icon,.ant-picker-calendar .ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px;}.ant-picker-calendar .ant-picker-prev-icon::before,.ant-picker-calendar .ant-picker-next-icon::before,.ant-picker-calendar .ant-picker-super-prev-icon::before,.ant-picker-calendar .ant-picker-super-next-icon::before{position:absolute;top:0;inset-inline-start:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-super-prev-icon::after,.ant-picker-calendar .ant-picker-super-next-icon::after{position:absolute;top:4px;inset-inline-start:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-super-prev-icon{transform:rotate(-45deg);}.ant-picker-calendar .ant-picker-next-icon,.ant-picker-calendar .ant-picker-super-next-icon{transform:rotate(135deg);}.ant-picker-calendar .ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse;}.ant-picker-calendar .ant-picker-content th,.ant-picker-calendar .ant-picker-content td{position:relative;min-width:24px;font-weight:normal;}.ant-picker-calendar .ant-picker-content th{height:32px;color:rgba(255, 255, 255, 0.85);vertical-align:middle;}.ant-picker-calendar .ant-picker-cell{padding:4px 0;color:rgba(255, 255, 255, 0.25);cursor:pointer;}.ant-picker-calendar .ant-picker-cell-in-view{color:rgba(255, 255, 255, 0.85);}.ant-picker-calendar .ant-picker-cell::before{position:absolute;top:50%;inset-inline-start:0;inset-inline-end:0;z-index:1;height:24px;transform:translateY(-50%);transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:4px;transition:background 0.2s,border 0.2s;}.ant-picker-calendar .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1;border:1px solid #037003;border-radius:4px;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range::before{background:#111911;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#037003;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before{background:#111911;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start::before{inset-inline-start:50%;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end::before{inset-inline-end:50%;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #06d306;border-bottom:1px dashed #06d306;transform:translateY(-50%);transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-cell-range-hover::after{inset-inline-end:0;inset-inline-start:2px;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before{background:#2cf92c;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-start-start-radius:4px;border-end-start-radius:4px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-calendar .ant-picker-cell-range-hover.ant-picker-cell-range-end::after{inset-inline-start:50%;}tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after,tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after{inset-inline-start:6px;border-inline-start:1px dashed #06d306;border-start-start-radius:1px;border-end-start-radius:1px;}tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after,tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after{inset-inline-end:6px;border-inline-end:1px dashed #06d306;border-start-end-radius:1px;border-end-end-radius:1px;}.ant-picker-calendar .ant-picker-cell-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-picker-calendar .ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent;}.ant-picker-calendar .ant-picker-cell-disabled::before{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:rgba(255, 255, 255, 0.25);}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after,.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{position:absolute;top:0;bottom:0;z-index:-1;background:#2cf92c;transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after{inset-inline-end:-6px;inset-inline-start:0;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{inset-inline-end:0;inset-inline-start:-6px;}.ant-picker-calendar .ant-picker-range-hover.ant-picker-range-start::after{inset-inline-end:50%;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-content,.ant-picker-calendar .ant-picker-year-panel .ant-picker-content,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-content,.ant-picker-calendar .ant-picker-month-panel .ant-picker-content{height:264px;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px;}.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-content{height:56px;}.ant-picker-calendar .ant-picker-panel .ant-picker-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-footer{width:min-content;min-width:100%;line-height:38px;text-align:center;}.ant-picker-calendar .ant-picker-footer-extra{padding:0 12;line-height:38px;text-align:start;}.ant-picker-calendar .ant-picker-footer-extra:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-now{text-align:start;}.ant-picker-calendar .ant-picker-today-btn{color:#1668dc;}.ant-picker-calendar .ant-picker-today-btn:hover{color:#15417e;}.ant-picker-calendar .ant-picker-today-btn:active{color:#1554ad;}.ant-picker-calendar .ant-picker-today-btn.ant-picker-today-btn-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell::before{display:none;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-body,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-body,.ant-picker-calendar .ant-picker-month-panel .ant-picker-body{padding:0 8px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-inner{width:60px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:4px;border-bottom-start-radius:4px;border-start-end-radius:0;border-bottom-end-radius:0;}.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-bottom-start-radius:0;border-start-end-radius:4px;border-bottom-end-radius:4px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:6px;border-end-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-calendar .ant-picker-week-panel .ant-picker-body{padding:8px 12px;}.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important;}.ant-picker-calendar .ant-picker-week-panel-row td{transition:background 0.2s;}.ant-picker-calendar .ant-picker-week-panel-row td:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-picker-calendar .ant-picker-week-panel-row td:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-calendar .ant-picker-week-panel-row:hover td{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-week-panel-row-selected td,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td{background:#037003;}.ant-picker-calendar .ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff;}.ant-picker-calendar .ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:#fff;}.ant-picker-calendar .ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-body{padding:8px 12px;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-content{width:252px;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-content th{width:36px;}.ant-picker-calendar .ant-picker-datetime-panel{display:flex;}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel{border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity 0.3s;}.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:0.3;}.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1;}.ant-picker-calendar .ant-picker-time-panel{width:auto;min-width:auto;direction:ltr;}.ant-picker-calendar .ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px;}.ant-picker-calendar .ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:4px 0;padding:0;overflow-y:hidden;text-align:start;list-style:none;transition:background 0.2s;overflow-x:hidden;}.ant-picker-calendar .ant-picker-time-panel-column::after{display:block;height:196px;content:\\\\\"\\\\\";}.ant-picker-calendar .ant-picker-time-panel-column:not(:first-child){border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-time-panel-column-active{background:#111911;}.ant-picker-calendar .ant-picker-time-panel-column:hover{overflow-y:auto;}.ant-picker-calendar .ant-picker-time-panel-column >li{margin:0;padding:0;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell{margin-inline:4px;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:48px;height:28px;margin:0;padding-block:0;padding-inline-end:0;padding-inline-start:14px;color:rgba(255, 255, 255, 0.85);line-height:28px;border-radius:4px;cursor:pointer;transition:background 0.2s;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#111911;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:204px;}.ant-picker-calendar-rtl{direction:rtl;}.ant-picker-calendar .ant-picker-calendar-header{display:flex;justify-content:flex-end;padding:12px 0;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-year-select{min-width:80px;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-month-select{min-width:70px;margin-inline-start:8px;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch{margin-inline-start:8px;}.ant-picker-calendar .ant-picker-panel{background:#141414;border:0;border-top:1px solid rgba(253, 253, 253, 0.12);border-radius:0;}.ant-picker-calendar .ant-picker-panel .ant-picker-month-panel,.ant-picker-calendar .ant-picker-panel .ant-picker-date-panel{width:auto;}.ant-picker-calendar .ant-picker-panel .ant-picker-body{padding:8px 0;}.ant-picker-calendar .ant-picker-panel .ant-picker-content{width:100%;}.ant-picker-calendar-mini{border-radius:8px;}.ant-picker-calendar-mini .ant-picker-calendar-header{padding-inline-end:8px;padding-inline-start:8px;}.ant-picker-calendar-mini .ant-picker-panel{border-radius:0 0 8px 8px;}.ant-picker-calendar-mini .ant-picker-content{height:256px;}.ant-picker-calendar-mini .ant-picker-content th{height:auto;padding:0;line-height:18px;}.ant-picker-calendar-mini .ant-picker-cell::before{pointer-events:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel{display:block;width:100%;text-align:end;background:#141414;border:0;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body td{padding:0;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th{height:auto;padding-inline-end:12px;padding-bottom:4px;line-height:18px;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell::before{display:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell:hover .ant-picker-calendar-date{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell .ant-picker-calendar-date-today::before{display:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-calendar-date,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-calendar-date-today{background:#111911;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected .ant-picker-calendar-date .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected:hover .ant-picker-calendar-date .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected .ant-picker-calendar-date-today .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected:hover .ant-picker-calendar-date-today .ant-picker-calendar-date-value{color:#037003;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date{display:block;width:auto;height:auto;margin:0 4px;padding:4px 8px 0;border:0;border-top:2px solid rgba(253, 253, 253, 0.12);border-radius:0;transition:background 0.3s;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-value{line-height:24px;transition:color 0.3s;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-content{position:static;width:auto;height:86px;overflow-y:auto;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;text-align:start;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-today{border-color:#037003;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-today .ant-picker-calendar-date-value{color:rgba(255, 255, 255, 0.85);}@media only screen and (max-width: 480px){.ant-picker-calendar .ant-picker-calendar-header{display:block;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-year-select{width:50%;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-month-select{width:calc(50% - 8px);}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch{width:100%;margin-top:8px;margin-inline-start:0;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch >label{width:50%;text-align:center;}}[class^=\\\\\"ant-radio\\\\\"],[class*=\\\\\" ant-radio\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-radio\\\\\"]::before,[class*=\\\\\" ant-radio\\\\\"]::before,[class^=\\\\\"ant-radio\\\\\"]::after,[class*=\\\\\" ant-radio\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"],[class*=\\\\\" ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"],[class^=\\\\\"ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"],[class*=\\\\\" ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"]::before,[class*=\\\\\" ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"]::before,[class^=\\\\\"ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"]::before,[class*=\\\\\" ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"]::before,[class^=\\\\\"ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"]::after,[class*=\\\\\" ant-radio\\\\\"] [class^=\\\\\"ant-radio\\\\\"]::after,[class^=\\\\\"ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"]::after,[class*=\\\\\" ant-radio\\\\\"] [class*=\\\\\" ant-radio\\\\\"]::after{box-sizing:border-box;}.ant-radio-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:0;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;}.ant-radio-group.ant-radio-group-rtl{direction:rtl;}.ant-radio-group .ant-badge .ant-badge-count{z-index:1;}.ant-radio-group >.ant-badge:not(:first-child)>.ant-button-wrapper{border-inline-start:none;}.ant-radio-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-flex;align-items:baseline;margin-inline-start:0;margin-inline-end:8px;cursor:pointer;}.ant-radio-wrapper.ant-radio-wrapper-rtl{direction:rtl;}.ant-radio-wrapper-disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-radio-wrapper::after{display:inline-block;width:0;overflow:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-radio-wrapper .ant-radio-checked::after{position:absolute;inset-block-start:0;inset-inline-start:0;width:100%;height:100%;border:1px solid #037003;border-radius:50%;visibility:hidden;animation-name:antRadioEffect;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;content:\\\\\"\\\\\";}.ant-radio-wrapper .ant-radio{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;outline:none;cursor:pointer;align-self:center;}.ant-radio-wrapper:hover .ant-radio-wrapper,.ant-radio-wrapper:hover .ant-radio-inner{border-color:#037003;}.ant-radio-wrapper .ant-radio-input:focus-visible+.ant-radio-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-radio-wrapper .ant-radio:hover::after,.ant-radio-wrapper:hover .ant-radio-wrapper::after{visibility:visible;}.ant-radio-wrapper .ant-radio-inner{box-sizing:border-box;position:relative;inset-block-start:0;inset-inline-start:0;display:block;width:16px;height:16px;background-color:#141414;border-color:#424242;border-style:solid;border-width:1px;border-radius:50%;transition:all 0.2s;}.ant-radio-wrapper .ant-radio-inner::after{box-sizing:border-box;position:absolute;inset-block-start:50%;inset-inline-start:50%;display:block;width:16px;height:16px;margin-block-start:-8px;margin-inline-start:-8px;background-color:#fff;border-block-start:0;border-inline-start:0;border-radius:16px;transform:scale(0);opacity:0;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);content:\\\\\"\\\\\";}.ant-radio-wrapper .ant-radio-input{position:absolute;inset-block-start:0;inset-inline-end:0;inset-block-end:0;inset-inline-start:0;z-index:1;cursor:pointer;opacity:0;}.ant-radio-wrapper .ant-radio-checked .ant-radio-inner{border-color:#037003;background-color:#037003;}.ant-radio-wrapper .ant-radio-checked .ant-radio-inner::after{transform:scale(0.375);opacity:1;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-radio-wrapper .ant-radio-disabled{cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-inner{background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-inner::after{background-color:rgba(255, 255, 255, 0.25);}.ant-radio-wrapper .ant-radio-disabled .ant-radio-input{cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-disabled+span{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled.ant-radio-checked .ant-radio-inner::after{transform:scale(0.5);}.ant-radio-wrapper span.ant-radio+*{padding-inline-start:8px;padding-inline-end:8px;}.ant-radio-button-wrapper{position:relative;display:inline-block;height:32px;margin:0;padding-inline:15px;padding-block:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:30px;background:#141414;border:1px solid #424242;border-block-start-width:1.02px;border-inline-start-width:0;border-inline-end-width:1px;cursor:pointer;transition:color 0.2s,background 0.2s,border-color 0.2s,box-shadow 0.2s;}.ant-radio-button-wrapper a{color:rgba(255, 255, 255, 0.85);}.ant-radio-button-wrapper >.ant-radio-button{position:absolute;inset-block-start:0;inset-inline-start:0;z-index:-1;width:100%;height:100%;}.ant-radio-button-wrapper:not(:first-child)::before{position:absolute;inset-block-start:-1px;inset-inline-start:-1px;display:block;box-sizing:content-box;width:1px;height:100%;padding-block:1px;padding-inline:0;background-color:#424242;transition:background-color 0.3s;content:\\\\\"\\\\\";}.ant-radio-button-wrapper:first-child{border-inline-start:1px solid #424242;border-start-start-radius:6px;border-end-start-radius:6px;}.ant-radio-button-wrapper:last-child{border-start-end-radius:6px;border-end-end-radius:6px;}.ant-radio-button-wrapper:first-child:last-child{border-radius:6px;}.ant-radio-group-large .ant-radio-button-wrapper{height:40px;font-size:16px;line-height:38px;}.ant-radio-group-large .ant-radio-button-wrapper:first-child{border-start-start-radius:8px;border-end-start-radius:8px;}.ant-radio-group-large .ant-radio-button-wrapper:last-child{border-start-end-radius:8px;border-end-end-radius:8px;}.ant-radio-group-small .ant-radio-button-wrapper{height:24px;padding-inline:7px;padding-block:0;line-height:22px;}.ant-radio-group-small .ant-radio-button-wrapper:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-radio-group-small .ant-radio-button-wrapper:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-radio-button-wrapper:hover{position:relative;color:#037003;}.ant-radio-button-wrapper:has(:focus-visible){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-radio-button-wrapper .ant-radio-inner,.ant-radio-button-wrapper input[type='checkbox'],.ant-radio-button-wrapper input[type='radio']{width:0;height:0;opacity:0;pointer-events:none;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){z-index:1;color:#037003;background:#141414;border-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before{background-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#198016;border-color:#198016;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before{background-color:#198016;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#075a07;border-color:#075a07;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before{background-color:#075a07;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#fff;background:#037003;border-color:#037003;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#fff;background:#198016;border-color:#198016;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#fff;background:#075a07;border-color:#075a07;}.ant-radio-button-wrapper-disabled{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-radio-button-wrapper-disabled:first-child,.ant-radio-button-wrapper-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.18);border-color:#424242;box-shadow:none;}@keyframes antRadioEffect{0%{transform:scale(1);opacity:0.5;}100%{transform:scale(1.6);opacity:0;}}[class^=\\\\\"ant-card\\\\\"],[class*=\\\\\" ant-card\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-card\\\\\"]::before,[class*=\\\\\" ant-card\\\\\"]::before,[class^=\\\\\"ant-card\\\\\"]::after,[class*=\\\\\" ant-card\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"],[class*=\\\\\" ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"],[class^=\\\\\"ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"],[class*=\\\\\" ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"]::before,[class*=\\\\\" ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"]::before,[class^=\\\\\"ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"]::before,[class*=\\\\\" ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"]::before,[class^=\\\\\"ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"]::after,[class*=\\\\\" ant-card\\\\\"] [class^=\\\\\"ant-card\\\\\"]::after,[class^=\\\\\"ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"]::after,[class*=\\\\\" ant-card\\\\\"] [class*=\\\\\" ant-card\\\\\"]::after{box-sizing:border-box;}.ant-card{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;background:#141414;border-radius:8px;}.ant-card:not(.ant-card-bordered){box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);}.ant-card .ant-card-head{display:flex;justify-content:center;flex-direction:column;min-height:56px;margin-bottom:-1px;padding:0 24px;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;background:transparent;border-bottom:1px solid #303030;border-radius:8px 8px 0 0;}.ant-card .ant-card-head::before{display:table;content:\\\\\"\\\\\";}.ant-card .ant-card-head::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-card .ant-card-head-wrapper{width:100%;display:flex;align-items:center;}.ant-card .ant-card-head-title{display:inline-block;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-card .ant-card-head-title >.ant-card-typography,.ant-card .ant-card-head-title >.ant-card-typography-edit-content{inset-inline-start:0;margin-top:0;margin-bottom:0;}.ant-card .ant-card-head .ant-tabs-top{clear:both;margin-bottom:-17px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;}.ant-card .ant-card-head .ant-tabs-top-bar{border-bottom:1px solid #303030;}.ant-card .ant-card-extra{margin-inline-start:auto;font-weight:normal;font-size:14px;}.ant-card .ant-card-body{padding:24px;border-radius:0 0 8px 8px;}.ant-card .ant-card-body::before{display:table;content:\\\\\"\\\\\";}.ant-card .ant-card-body::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-card .ant-card-grid{width:33.33%;padding:24px;border:0;border-radius:0;box-shadow:1px 0 0 0 #303030,0 1px 0 0 #303030,1px 1px 0 0 #303030,1px 0 0 0 #303030 inset,0 1px 0 0 #303030 inset;transition:all 0.2s;}.ant-card .ant-card-grid-hoverable:hover{position:relative;z-index:1;box-shadow:0 1px 2px -2px rgba(0, 0, 0, 0.16),0 3px 6px 0 rgba(0, 0, 0, 0.12),0 5px 12px 4px rgba(0, 0, 0, 0.09);}.ant-card .ant-card-cover >*{display:block;width:100%;}.ant-card .ant-card-cover img{border-radius:8px 8px 0 0;}.ant-card .ant-card-actions{margin:0;padding:0;list-style:none;background:#141414;border-top:1px solid #303030;display:flex;border-radius:0 0 8px 8px;}.ant-card .ant-card-actions::before{display:table;content:\\\\\"\\\\\";}.ant-card .ant-card-actions::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-card .ant-card-actions>li{margin:12px 0;color:rgba(255, 255, 255, 0.45);text-align:center;}.ant-card .ant-card-actions>li >span{position:relative;display:block;min-width:28px;font-size:14px;line-height:1.5714285714285714;cursor:pointer;}.ant-card .ant-card-actions>li >span:hover{color:#037003;transition:color 0.2s;}.ant-card .ant-card-actions>li >span a:not(.ant-card-btn),.ant-card .ant-card-actions>li >span >.anticon{display:inline-block;width:100%;color:rgba(255, 255, 255, 0.45);line-height:22px;transition:color 0.2s;}.ant-card .ant-card-actions>li >span a:not(.ant-card-btn):hover,.ant-card .ant-card-actions>li >span >.anticon:hover{color:#037003;}.ant-card .ant-card-actions>li >span >.anticon{font-size:14px;line-height:22px;}.ant-card .ant-card-actions>li:not(:last-child){border-inline-end:1px solid #303030;}.ant-card .ant-card-meta{margin:-4px 0;display:flex;}.ant-card .ant-card-meta::before{display:table;content:\\\\\"\\\\\";}.ant-card .ant-card-meta::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-card .ant-card-meta-avatar{padding-inline-end:16px;}.ant-card .ant-card-meta-detail{overflow:hidden;flex:1;}.ant-card .ant-card-meta-detail >div:not(:last-child){margin-bottom:8px;}.ant-card .ant-card-meta-title{color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-card .ant-card-meta-description{color:rgba(255, 255, 255, 0.45);}.ant-card-bordered{border:1px solid #303030;}.ant-card-bordered .ant-card-cover{margin-top:-1px;margin-inline-start:-1px;margin-inline-end:-1px;}.ant-card-hoverable{cursor:pointer;transition:box-shadow 0.2s,border-color 0.2s;}.ant-card-hoverable:hover{border-color:transparent;box-shadow:0 1px 2px -2px rgba(0, 0, 0, 0.16),0 3px 6px 0 rgba(0, 0, 0, 0.12),0 5px 12px 4px rgba(0, 0, 0, 0.09);}.ant-card-contain-grid .ant-card-body{display:flex;flex-wrap:wrap;}.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body{margin-block-start:-1px;margin-inline-start:-1px;padding:0;}.ant-card-contain-tabs >.ant-card-head .ant-card-head-title,.ant-card-contain-tabs >.ant-card-head .ant-card-extra{padding-top:16px;}.ant-card-type-inner .ant-card-head{padding:0 24px;background:rgba(255, 255, 255, 0.04);}.ant-card-type-inner .ant-card-head-title{font-size:14px;}.ant-card-type-inner .ant-card-body{padding:16px 24px;}.ant-card-loading{overflow:hidden;}.ant-card-loading .ant-card-body{user-select:none;}.ant-card-rtl{direction:rtl;}.ant-card-small >.ant-card-head{min-height:38px;padding:0 12px;font-size:14px;}.ant-card-small >.ant-card-head >.ant-card-head-wrapper >.ant-card-extra{font-size:14px;}.ant-card-small >.ant-card-body{padding:12px;}.ant-card-small.ant-card-contain-tabs >.ant-card-head .ant-card-head-title,.ant-card-small.ant-card-contain-tabs >.ant-card-head .ant-card-extra{min-height:38px;padding-top:0;display:flex;align-items:center;}[class^=\\\\\"ant-collapse\\\\\"],[class*=\\\\\" ant-collapse\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-collapse\\\\\"]::before,[class*=\\\\\" ant-collapse\\\\\"]::before,[class^=\\\\\"ant-collapse\\\\\"]::after,[class*=\\\\\" ant-collapse\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"],[class*=\\\\\" ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"],[class^=\\\\\"ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"],[class*=\\\\\" ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"]::before,[class*=\\\\\" ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"]::before,[class^=\\\\\"ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"]::before,[class*=\\\\\" ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"]::before,[class^=\\\\\"ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"]::after,[class*=\\\\\" ant-collapse\\\\\"] [class^=\\\\\"ant-collapse\\\\\"]::after,[class^=\\\\\"ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"]::after,[class*=\\\\\" ant-collapse\\\\\"] [class*=\\\\\" ant-collapse\\\\\"]::after{box-sizing:border-box;}.ant-collapse{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-bottom:0;border-radius:8px;}.ant-collapse-rtl{direction:rtl;}.ant-collapse>.ant-collapse-item{border-bottom:1px solid #424242;}.ant-collapse>.ant-collapse-item:last-child,.ant-collapse>.ant-collapse-item:last-child>.ant-collapse-header{border-radius:0 0 8px 8px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;padding:12px 16px;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;cursor:pointer;transition:all 0.3s,visibility 0s;}.ant-collapse>.ant-collapse-item >.ant-collapse-header >.ant-collapse-header-text{flex:auto;}.ant-collapse>.ant-collapse-item >.ant-collapse-header:focus{outline:none;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-expand-icon{height:22px;display:flex;align-items:center;padding-inline-end:12px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow >*{line-height:1;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow svg{transition:transform 0.3s;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-header-text{margin-inline-end:auto;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only{cursor:default;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text{flex:none;cursor:pointer;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-expand-icon{cursor:pointer;}.ant-collapse>.ant-collapse-item .ant-collapse-icon-collapsible-only{cursor:default;}.ant-collapse>.ant-collapse-item .ant-collapse-icon-collapsible-only .ant-collapse-expand-icon{cursor:pointer;}.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow >.ant-collapse-header{padding-inline-start:12px;}.ant-collapse .ant-collapse-content{color:rgba(255, 255, 255, 0.85);background-color:#141414;border-top:1px solid #424242;}.ant-collapse .ant-collapse-content>.ant-collapse-content-box{padding:16px 16px;}.ant-collapse .ant-collapse-content-hidden{display:none;}.ant-collapse .ant-collapse-item:last-child >.ant-collapse-content{border-radius:0 0 8px 8px;}.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header,.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header>.arrow{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-collapse.ant-collapse-icon-position-end>.ant-collapse-item >.ant-collapse-header .ant-collapse-expand-icon{order:1;padding-inline-end:0;padding-inline-start:12px;}.ant-collapse-borderless{background-color:rgba(255, 255, 255, 0.04);border:0;}.ant-collapse-borderless >.ant-collapse-item{border-bottom:1px solid #424242;}.ant-collapse-borderless >.ant-collapse-item:last-child,.ant-collapse-borderless >.ant-collapse-item:last-child .ant-collapse-header{border-radius:0;}.ant-collapse-borderless >.ant-collapse-item:last-child{border-bottom:0;}.ant-collapse-borderless >.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0;}.ant-collapse-borderless >.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:4px;}.ant-collapse-ghost{background-color:transparent;border:0;}.ant-collapse-ghost >.ant-collapse-item{border-bottom:0;}.ant-collapse-ghost >.ant-collapse-item >.ant-collapse-content{background-color:transparent;border:0;}.ant-collapse-ghost >.ant-collapse-item >.ant-collapse-content >.ant-collapse-content-box{padding-block:12px;}.ant-collapse-rtl >.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transform:rotate(180deg);}.ant-collapse .ant-motion-collapse-legacy{overflow:hidden;}.ant-collapse .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-collapse .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}[class^=\\\\\"ant-carousel\\\\\"],[class*=\\\\\" ant-carousel\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-carousel\\\\\"]::before,[class*=\\\\\" ant-carousel\\\\\"]::before,[class^=\\\\\"ant-carousel\\\\\"]::after,[class*=\\\\\" ant-carousel\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"],[class*=\\\\\" ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"],[class^=\\\\\"ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"],[class*=\\\\\" ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"]::before,[class*=\\\\\" ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"]::before,[class^=\\\\\"ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"]::before,[class*=\\\\\" ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"]::before,[class^=\\\\\"ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"]::after,[class*=\\\\\" ant-carousel\\\\\"] [class^=\\\\\"ant-carousel\\\\\"]::after,[class^=\\\\\"ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"]::after,[class*=\\\\\" ant-carousel\\\\\"] [class*=\\\\\" ant-carousel\\\\\"]::after{box-sizing:border-box;}.ant-carousel{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-carousel .slick-slider{position:relative;display:block;box-sizing:border-box;touch-action:pan-y;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;}.ant-carousel .slick-slider .slick-track,.ant-carousel .slick-slider .slick-list{transform:translate3d(0, 0, 0);touch-action:pan-y;}.ant-carousel .slick-list{position:relative;display:block;margin:0;padding:0;overflow:hidden;}.ant-carousel .slick-list:focus{outline:none;}.ant-carousel .slick-list.dragging{cursor:pointer;}.ant-carousel .slick-list .slick-slide{pointer-events:none;}.ant-carousel .slick-list .slick-slide input.ant-radio-input,.ant-carousel .slick-list .slick-slide input.ant-checkbox-input{visibility:hidden;}.ant-carousel .slick-list .slick-slide.slick-active{pointer-events:auto;}.ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input,.ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input{visibility:visible;}.ant-carousel .slick-list .slick-slide >div>div{vertical-align:bottom;}.ant-carousel .slick-track{position:relative;top:0;inset-inline-start:0;display:block;}.ant-carousel .slick-track::before,.ant-carousel .slick-track::after{display:table;content:\\\\\"\\\\\";}.ant-carousel .slick-track::after{clear:both;}.ant-carousel .slick-slide{display:none;float:left;height:100%;min-height:1px;}.ant-carousel .slick-slide img{display:block;}.ant-carousel .slick-slide.dragging img{pointer-events:none;}.ant-carousel .slick-initialized .slick-slide{display:block;}.ant-carousel .slick-vertical .slick-slide{display:block;height:auto;}.ant-carousel .slick-arrow.slick-hidden{display:none;}.ant-carousel .slick-prev,.ant-carousel .slick-next{position:absolute;top:50%;display:block;width:20px;height:20px;margin-top:-10px;padding:0;color:transparent;font-size:0;line-height:0;background:transparent;border:0;outline:none;cursor:pointer;}.ant-carousel .slick-prev:hover,.ant-carousel .slick-next:hover,.ant-carousel .slick-prev:focus,.ant-carousel .slick-next:focus{color:transparent;background:transparent;outline:none;}.ant-carousel .slick-prev:hover::before,.ant-carousel .slick-next:hover::before,.ant-carousel .slick-prev:focus::before,.ant-carousel .slick-next:focus::before{opacity:1;}.ant-carousel .slick-prev.slick-disabled::before,.ant-carousel .slick-next.slick-disabled::before{opacity:0.25;}.ant-carousel .slick-prev{inset-inline-start:-25px;}.ant-carousel .slick-prev::before{content:\\\\\"←\\\\\";}.ant-carousel .slick-next{inset-inline-end:-25px;}.ant-carousel .slick-next::before{content:\\\\\"→\\\\\";}.ant-carousel .slick-dots{position:absolute;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:15;display:flex!important;justify-content:center;padding-inline-start:0;list-style:none;}.ant-carousel .slick-dots-bottom{bottom:12px;}.ant-carousel .slick-dots-top{top:12px;bottom:auto;}.ant-carousel .slick-dots li{position:relative;display:inline-block;flex:0 1 auto;box-sizing:content-box;width:16px;height:3px;margin-inline:4px;padding:0;text-align:center;text-indent:-999px;vertical-align:top;transition:all 0.3s;}.ant-carousel .slick-dots li button{position:relative;display:block;width:100%;height:3px;padding:0;color:transparent;font-size:0;background:#141414;border:0;border-radius:1px;outline:none;cursor:pointer;opacity:0.3;transition:all 0.3s;}.ant-carousel .slick-dots li button:hover,.ant-carousel .slick-dots li button:focus{opacity:0.75;}.ant-carousel .slick-dots li button::after{position:absolute;inset:-4px;content:\\\\\"\\\\\";}.ant-carousel .slick-dots li.slick-active{width:24px;}.ant-carousel .slick-dots li.slick-active button{background:#141414;opacity:1;}.ant-carousel .slick-dots li.slick-active:hover,.ant-carousel .slick-dots li.slick-active:focus{opacity:1;}.ant-carousel-vertical .slick-dots{top:50%;bottom:auto;flex-direction:column;width:3px;height:auto;margin:0;transform:translateY(-50%);}.ant-carousel-vertical .slick-dots-left{inset-inline-end:auto;inset-inline-start:12px;}.ant-carousel-vertical .slick-dots-right{inset-inline-end:12px;inset-inline-start:auto;}.ant-carousel-vertical .slick-dots li{width:3px;height:16px;margin:4px 0;vertical-align:baseline;}.ant-carousel-vertical .slick-dots li button{width:3px;height:16px;}.ant-carousel-vertical .slick-dots li.slick-active{width:3px;height:16px;}.ant-carousel-vertical .slick-dots li.slick-active button{width:3px;height:16px;}.ant-carousel-rtl{direction:rtl;}.ant-carousel-rtl.ant-carousel-rtl .slick-dots{flex-direction:row-reverse;}.ant-carousel-rtl.ant-carousel-vertical .slick-dots{flex-direction:column;}[class^=\\\\\"ant-cascader\\\\\"],[class*=\\\\\" ant-cascader\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-cascader\\\\\"]::before,[class*=\\\\\" ant-cascader\\\\\"]::before,[class^=\\\\\"ant-cascader\\\\\"]::after,[class*=\\\\\" ant-cascader\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"],[class*=\\\\\" ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"],[class^=\\\\\"ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"],[class*=\\\\\" ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"]::before,[class*=\\\\\" ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"]::before,[class^=\\\\\"ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"]::before,[class*=\\\\\" ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"]::before,[class^=\\\\\"ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"]::after,[class*=\\\\\" ant-cascader\\\\\"] [class^=\\\\\"ant-cascader\\\\\"]::after,[class^=\\\\\"ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"]::after,[class*=\\\\\" ant-cascader\\\\\"] [class*=\\\\\" ant-cascader\\\\\"]::after{box-sizing:border-box;}.ant-cascader{width:184px;}.ant-cascader-dropdown .ant-cascader-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-cascader-dropdown .ant-cascader-checkbox-group >.ant-row{flex:1;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\\\\\a0';}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper+.ant-cascader-checkbox-wrapper{margin-inline-start:0;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-in-form-item input[type=\\\\\"checkbox\\\\\"]{width:14px;height:14px;}.ant-cascader-dropdown .ant-cascader-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-input:focus-visible+.ant-cascader-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\\\\"\\\\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-cascader-dropdown .ant-cascader-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-cascader-dropdown .ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\\\\"\\\\\";}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox:after{visibility:visible;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-inner,.ant-cascader-dropdown .ant-cascader-checkbox:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox-inner{border-color:#037003;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled) .ant-cascader-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):after{border-color:#198016;}.ant-cascader-dropdown .ant-cascader-checkbox-checked .ant-cascader-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-cascader-dropdown .ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-cascader-dropdown .ant-cascader-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\\\\"\\\\\";transition:all 0.3s;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-checked:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-inner,.ant-cascader-dropdown .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-checked:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox:after,.ant-cascader-dropdown .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox:after{border-color:#198016;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled,.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-checkbox-disabled:after{display:none;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-checkbox-disabled.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown.ant-select-dropdown{padding:0;}.ant-cascader-dropdown .ant-cascader-checkbox{top:0;margin-inline-end:8px;}.ant-cascader-dropdown .ant-cascader-menus{display:flex;flex-wrap:nowrap;align-items:flex-start;}.ant-cascader-dropdown .ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu{width:100%;height:auto;}.ant-cascader-dropdown .ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu .ant-cascader-menu-item{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-menu{flex-grow:1;min-width:111px;height:180px;margin:0;padding:4px;overflow:auto;vertical-align:top;list-style:none;-ms-overflow-style:-ms-autohiding-scrollbar;}.ant-cascader-dropdown .ant-cascader-menu:not(:last-child){border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-cascader-dropdown .ant-cascader-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;flex-wrap:nowrap;align-items:center;padding:5px 12px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.2s;border-radius:4px;}.ant-cascader-dropdown .ant-cascader-menu-item:hover{background:rgba(255, 255, 255, 0.08);}.ant-cascader-dropdown .ant-cascader-menu-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-cascader-dropdown .ant-cascader-menu-item-disabled:hover{background:transparent;}.ant-cascader-dropdown .ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-dropdown .ant-cascader-menu-item-disabled .ant-cascader-menu-item-loading-icon{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),.ant-cascader-dropdown .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover{font-weight:600;background-color:#111911;}.ant-cascader-dropdown .ant-cascader-menu-item-content{flex:auto;}.ant-cascader-dropdown .ant-cascader-menu-item.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-dropdown .ant-cascader-menu-item .ant-cascader-menu-item-loading-icon{margin-inline-start:4px;color:rgba(255, 255, 255, 0.45);font-size:12px;}.ant-cascader-dropdown .ant-cascader-menu-item-keyword{color:#dc4446;}.ant-cascader-dropdown-rtl{direction:rtl;}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item){margin-inline-end:-1px;}.ant-cascader-compact-item:hover,.ant-cascader-compact-item:focus,.ant-cascader-compact-item:active{z-index:2;}.ant-cascader-compact-item[disabled]{z-index:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-last-item){border-radius:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item,.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item.ant-cascader-sm,.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item.ant-cascader-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item,.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item.ant-cascader-sm,.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item.ant-cascader-lg{border-start-start-radius:0;border-end-start-radius:0;}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:0.5;}100%{transform:scale(1.6);opacity:0;}}[class^=\\\\\"ant-checkbox\\\\\"],[class*=\\\\\" ant-checkbox\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-checkbox\\\\\"]::before,[class*=\\\\\" ant-checkbox\\\\\"]::before,[class^=\\\\\"ant-checkbox\\\\\"]::after,[class*=\\\\\" ant-checkbox\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"],[class*=\\\\\" ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"],[class^=\\\\\"ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"],[class*=\\\\\" ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"]::before,[class*=\\\\\" ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"]::before,[class^=\\\\\"ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"]::before,[class*=\\\\\" ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"]::before,[class^=\\\\\"ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"]::after,[class*=\\\\\" ant-checkbox\\\\\"] [class^=\\\\\"ant-checkbox\\\\\"]::after,[class^=\\\\\"ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"]::after,[class*=\\\\\" ant-checkbox\\\\\"] [class*=\\\\\" ant-checkbox\\\\\"]::after{box-sizing:border-box;}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-checkbox-group >.ant-row{flex:1;}.ant-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\\\\\a0';}.ant-checkbox-wrapper+.ant-checkbox-wrapper{margin-inline-start:0;}.ant-checkbox-wrapper.ant-checkbox-wrapper-in-form-item input[type=\\\\\"checkbox\\\\\"]{width:14px;height:14px;}.ant-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-checkbox .ant-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-checkbox .ant-checkbox-input:focus-visible+.ant-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-checkbox .ant-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-checkbox .ant-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\\\\"\\\\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-checkbox-indeterminate .ant-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\\\\"\\\\\";}.ant-checkbox-wrapper:hover .ant-checkbox:after{visibility:visible;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-inner,.ant-checkbox:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:#037003;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled):after{border-color:#198016;}.ant-checkbox-checked .ant-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-checkbox-checked .ant-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\\\\"\\\\\";transition:all 0.3s;}.ant-checkbox-wrapper-checked:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-inner,.ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-wrapper-checked:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox:after,.ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox:after{border-color:#198016;}.ant-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-checkbox-disabled,.ant-checkbox-disabled .ant-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-checkbox-disabled .ant-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-checkbox-disabled:after{display:none;}.ant-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}[class^=\\\\\"ant-checkbox-group\\\\\"],[class*=\\\\\" ant-checkbox-group\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-checkbox-group\\\\\"]::before,[class*=\\\\\" ant-checkbox-group\\\\\"]::before,[class^=\\\\\"ant-checkbox-group\\\\\"]::after,[class*=\\\\\" ant-checkbox-group\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"],[class*=\\\\\" ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"],[class^=\\\\\"ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"],[class*=\\\\\" ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"]::before,[class*=\\\\\" ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"]::before,[class^=\\\\\"ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"]::before,[class*=\\\\\" ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"]::before,[class^=\\\\\"ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"]::after,[class*=\\\\\" ant-checkbox-group\\\\\"] [class^=\\\\\"ant-checkbox-group\\\\\"]::after,[class^=\\\\\"ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"]::after,[class*=\\\\\" ant-checkbox-group\\\\\"] [class*=\\\\\" ant-checkbox-group\\\\\"]::after{box-sizing:border-box;}.ant-checkbox-group-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-checkbox-group-group >.ant-row{flex:1;}.ant-checkbox-group-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-checkbox-group-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\\\\\a0';}.ant-checkbox-group-wrapper+.ant-checkbox-group-wrapper{margin-inline-start:0;}.ant-checkbox-group-wrapper.ant-checkbox-group-wrapper-in-form-item input[type=\\\\\"checkbox\\\\\"]{width:14px;height:14px;}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-checkbox-group .ant-checkbox-group-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-checkbox-group .ant-checkbox-group-input:focus-visible+.ant-checkbox-group-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-checkbox-group .ant-checkbox-group-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-checkbox-group .ant-checkbox-group-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\\\\"\\\\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-checkbox-group+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-checkbox-group-indeterminate .ant-checkbox-group-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\\\\"\\\\\";}.ant-checkbox-group-wrapper:hover .ant-checkbox-group:after{visibility:visible;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-inner,.ant-checkbox-group:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group-inner{border-color:#037003;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-checked:not(.ant-checkbox-group-disabled) .ant-checkbox-group-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):after{border-color:#198016;}.ant-checkbox-group-checked .ant-checkbox-group-inner{background-color:#037003;border-color:#037003;}.ant-checkbox-group-checked .ant-checkbox-group-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-checkbox-group-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\\\\"\\\\\";transition:all 0.3s;}.ant-checkbox-group-wrapper-checked:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-inner,.ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-group-wrapper-checked:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group:after,.ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group:after{border-color:#198016;}.ant-checkbox-group-wrapper-disabled{cursor:not-allowed;}.ant-checkbox-group-disabled,.ant-checkbox-group-disabled .ant-checkbox-group-input{cursor:not-allowed;pointer-events:none;}.ant-checkbox-group-disabled .ant-checkbox-group-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-checkbox-group-disabled .ant-checkbox-group-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-checkbox-group-disabled:after{display:none;}.ant-checkbox-group-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-checkbox-group-disabled.ant-checkbox-group-indeterminate .ant-checkbox-group-inner::after{background:rgba(255, 255, 255, 0.25);}[class^=\\\\\"ant-col\\\\\"],[class*=\\\\\" ant-col\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-col\\\\\"]::before,[class*=\\\\\" ant-col\\\\\"]::before,[class^=\\\\\"ant-col\\\\\"]::after,[class*=\\\\\" ant-col\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"],[class*=\\\\\" ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"],[class^=\\\\\"ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"],[class*=\\\\\" ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"]::before,[class*=\\\\\" ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"]::before,[class^=\\\\\"ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"]::before,[class*=\\\\\" ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"]::before,[class^=\\\\\"ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"]::after,[class*=\\\\\" ant-col\\\\\"] [class^=\\\\\"ant-col\\\\\"]::after,[class^=\\\\\"ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"]::after,[class*=\\\\\" ant-col\\\\\"] [class*=\\\\\" ant-col\\\\\"]::after{box-sizing:border-box;}.ant-col{position:relative;max-width:100%;min-height:1px;}.ant-col-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-push-24{inset-inline-start:100%;}.ant-col-pull-24{inset-inline-end:100%;}.ant-col-offset-24{margin-inline-start:100%;}.ant-col-order-24{order:24;}.ant-col-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-push-23{inset-inline-start:95.83333333333334%;}.ant-col-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-order-23{order:23;}.ant-col-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-push-22{inset-inline-start:91.66666666666666%;}.ant-col-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-order-22{order:22;}.ant-col-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-push-21{inset-inline-start:87.5%;}.ant-col-pull-21{inset-inline-end:87.5%;}.ant-col-offset-21{margin-inline-start:87.5%;}.ant-col-order-21{order:21;}.ant-col-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-push-20{inset-inline-start:83.33333333333334%;}.ant-col-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-order-20{order:20;}.ant-col-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-push-19{inset-inline-start:79.16666666666666%;}.ant-col-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-order-19{order:19;}.ant-col-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-push-18{inset-inline-start:75%;}.ant-col-pull-18{inset-inline-end:75%;}.ant-col-offset-18{margin-inline-start:75%;}.ant-col-order-18{order:18;}.ant-col-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-push-17{inset-inline-start:70.83333333333334%;}.ant-col-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-order-17{order:17;}.ant-col-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-push-16{inset-inline-start:66.66666666666666%;}.ant-col-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-order-16{order:16;}.ant-col-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-push-15{inset-inline-start:62.5%;}.ant-col-pull-15{inset-inline-end:62.5%;}.ant-col-offset-15{margin-inline-start:62.5%;}.ant-col-order-15{order:15;}.ant-col-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-push-14{inset-inline-start:58.333333333333336%;}.ant-col-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-order-14{order:14;}.ant-col-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-push-13{inset-inline-start:54.166666666666664%;}.ant-col-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-order-13{order:13;}.ant-col-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-push-12{inset-inline-start:50%;}.ant-col-pull-12{inset-inline-end:50%;}.ant-col-offset-12{margin-inline-start:50%;}.ant-col-order-12{order:12;}.ant-col-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-push-11{inset-inline-start:45.83333333333333%;}.ant-col-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-order-11{order:11;}.ant-col-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-push-10{inset-inline-start:41.66666666666667%;}.ant-col-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-order-10{order:10;}.ant-col-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-push-9{inset-inline-start:37.5%;}.ant-col-pull-9{inset-inline-end:37.5%;}.ant-col-offset-9{margin-inline-start:37.5%;}.ant-col-order-9{order:9;}.ant-col-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-push-8{inset-inline-start:33.33333333333333%;}.ant-col-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-order-8{order:8;}.ant-col-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-push-7{inset-inline-start:29.166666666666668%;}.ant-col-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-order-7{order:7;}.ant-col-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-push-6{inset-inline-start:25%;}.ant-col-pull-6{inset-inline-end:25%;}.ant-col-offset-6{margin-inline-start:25%;}.ant-col-order-6{order:6;}.ant-col-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-push-5{inset-inline-start:20.833333333333336%;}.ant-col-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-order-5{order:5;}.ant-col-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-push-4{inset-inline-start:16.666666666666664%;}.ant-col-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-order-4{order:4;}.ant-col-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-push-3{inset-inline-start:12.5%;}.ant-col-pull-3{inset-inline-end:12.5%;}.ant-col-offset-3{margin-inline-start:12.5%;}.ant-col-order-3{order:3;}.ant-col-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-push-2{inset-inline-start:8.333333333333332%;}.ant-col-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-order-2{order:2;}.ant-col-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-push-1{inset-inline-start:4.166666666666666%;}.ant-col-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-order-1{order:1;}.ant-col-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-offset-0{margin-inline-end:0;}.ant-col-order-0{order:0;}.ant-col-xs-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xs-push-24{inset-inline-start:100%;}.ant-col-xs-pull-24{inset-inline-end:100%;}.ant-col-xs-offset-24{margin-inline-start:100%;}.ant-col-xs-order-24{order:24;}.ant-col-xs-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xs-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xs-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xs-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xs-order-23{order:23;}.ant-col-xs-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xs-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xs-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xs-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xs-order-22{order:22;}.ant-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xs-push-21{inset-inline-start:87.5%;}.ant-col-xs-pull-21{inset-inline-end:87.5%;}.ant-col-xs-offset-21{margin-inline-start:87.5%;}.ant-col-xs-order-21{order:21;}.ant-col-xs-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xs-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xs-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xs-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xs-order-20{order:20;}.ant-col-xs-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xs-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xs-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xs-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xs-order-19{order:19;}.ant-col-xs-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xs-push-18{inset-inline-start:75%;}.ant-col-xs-pull-18{inset-inline-end:75%;}.ant-col-xs-offset-18{margin-inline-start:75%;}.ant-col-xs-order-18{order:18;}.ant-col-xs-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xs-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xs-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xs-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xs-order-17{order:17;}.ant-col-xs-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xs-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xs-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xs-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xs-order-16{order:16;}.ant-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xs-push-15{inset-inline-start:62.5%;}.ant-col-xs-pull-15{inset-inline-end:62.5%;}.ant-col-xs-offset-15{margin-inline-start:62.5%;}.ant-col-xs-order-15{order:15;}.ant-col-xs-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xs-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xs-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xs-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xs-order-14{order:14;}.ant-col-xs-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xs-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xs-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xs-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xs-order-13{order:13;}.ant-col-xs-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xs-push-12{inset-inline-start:50%;}.ant-col-xs-pull-12{inset-inline-end:50%;}.ant-col-xs-offset-12{margin-inline-start:50%;}.ant-col-xs-order-12{order:12;}.ant-col-xs-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xs-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xs-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xs-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xs-order-11{order:11;}.ant-col-xs-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xs-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xs-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xs-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xs-order-10{order:10;}.ant-col-xs-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xs-push-9{inset-inline-start:37.5%;}.ant-col-xs-pull-9{inset-inline-end:37.5%;}.ant-col-xs-offset-9{margin-inline-start:37.5%;}.ant-col-xs-order-9{order:9;}.ant-col-xs-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xs-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xs-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xs-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xs-order-8{order:8;}.ant-col-xs-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xs-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xs-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xs-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xs-order-7{order:7;}.ant-col-xs-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xs-push-6{inset-inline-start:25%;}.ant-col-xs-pull-6{inset-inline-end:25%;}.ant-col-xs-offset-6{margin-inline-start:25%;}.ant-col-xs-order-6{order:6;}.ant-col-xs-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xs-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xs-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xs-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xs-order-5{order:5;}.ant-col-xs-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xs-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xs-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xs-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xs-order-4{order:4;}.ant-col-xs-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xs-push-3{inset-inline-start:12.5%;}.ant-col-xs-pull-3{inset-inline-end:12.5%;}.ant-col-xs-offset-3{margin-inline-start:12.5%;}.ant-col-xs-order-3{order:3;}.ant-col-xs-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xs-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xs-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xs-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xs-order-2{order:2;}.ant-col-xs-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xs-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xs-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xs-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xs-order-1{order:1;}.ant-col-xs-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xs-push-0{inset-inline-start:auto;}.ant-col-xs-pull-0{inset-inline-end:auto;}.ant-col-xs-offset-0{margin-inline-end:0;}.ant-col-xs-order-0{order:0;}@media (min-width: 576px){.ant-col-sm-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-sm-push-24{inset-inline-start:100%;}.ant-col-sm-pull-24{inset-inline-end:100%;}.ant-col-sm-offset-24{margin-inline-start:100%;}.ant-col-sm-order-24{order:24;}.ant-col-sm-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-sm-push-23{inset-inline-start:95.83333333333334%;}.ant-col-sm-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-sm-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-sm-order-23{order:23;}.ant-col-sm-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-sm-push-22{inset-inline-start:91.66666666666666%;}.ant-col-sm-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-sm-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-sm-order-22{order:22;}.ant-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-sm-push-21{inset-inline-start:87.5%;}.ant-col-sm-pull-21{inset-inline-end:87.5%;}.ant-col-sm-offset-21{margin-inline-start:87.5%;}.ant-col-sm-order-21{order:21;}.ant-col-sm-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-sm-push-20{inset-inline-start:83.33333333333334%;}.ant-col-sm-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-sm-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-sm-order-20{order:20;}.ant-col-sm-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-sm-push-19{inset-inline-start:79.16666666666666%;}.ant-col-sm-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-sm-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-sm-order-19{order:19;}.ant-col-sm-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-sm-push-18{inset-inline-start:75%;}.ant-col-sm-pull-18{inset-inline-end:75%;}.ant-col-sm-offset-18{margin-inline-start:75%;}.ant-col-sm-order-18{order:18;}.ant-col-sm-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-sm-push-17{inset-inline-start:70.83333333333334%;}.ant-col-sm-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-sm-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-sm-order-17{order:17;}.ant-col-sm-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-sm-push-16{inset-inline-start:66.66666666666666%;}.ant-col-sm-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-sm-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-sm-order-16{order:16;}.ant-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-sm-push-15{inset-inline-start:62.5%;}.ant-col-sm-pull-15{inset-inline-end:62.5%;}.ant-col-sm-offset-15{margin-inline-start:62.5%;}.ant-col-sm-order-15{order:15;}.ant-col-sm-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-sm-push-14{inset-inline-start:58.333333333333336%;}.ant-col-sm-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-sm-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-sm-order-14{order:14;}.ant-col-sm-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-sm-push-13{inset-inline-start:54.166666666666664%;}.ant-col-sm-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-sm-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-sm-order-13{order:13;}.ant-col-sm-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-sm-push-12{inset-inline-start:50%;}.ant-col-sm-pull-12{inset-inline-end:50%;}.ant-col-sm-offset-12{margin-inline-start:50%;}.ant-col-sm-order-12{order:12;}.ant-col-sm-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-sm-push-11{inset-inline-start:45.83333333333333%;}.ant-col-sm-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-sm-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-sm-order-11{order:11;}.ant-col-sm-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-sm-push-10{inset-inline-start:41.66666666666667%;}.ant-col-sm-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-sm-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-sm-order-10{order:10;}.ant-col-sm-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-sm-push-9{inset-inline-start:37.5%;}.ant-col-sm-pull-9{inset-inline-end:37.5%;}.ant-col-sm-offset-9{margin-inline-start:37.5%;}.ant-col-sm-order-9{order:9;}.ant-col-sm-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-sm-push-8{inset-inline-start:33.33333333333333%;}.ant-col-sm-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-sm-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-sm-order-8{order:8;}.ant-col-sm-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-sm-push-7{inset-inline-start:29.166666666666668%;}.ant-col-sm-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-sm-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-sm-order-7{order:7;}.ant-col-sm-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-sm-push-6{inset-inline-start:25%;}.ant-col-sm-pull-6{inset-inline-end:25%;}.ant-col-sm-offset-6{margin-inline-start:25%;}.ant-col-sm-order-6{order:6;}.ant-col-sm-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-sm-push-5{inset-inline-start:20.833333333333336%;}.ant-col-sm-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-sm-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-sm-order-5{order:5;}.ant-col-sm-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-sm-push-4{inset-inline-start:16.666666666666664%;}.ant-col-sm-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-sm-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-sm-order-4{order:4;}.ant-col-sm-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-sm-push-3{inset-inline-start:12.5%;}.ant-col-sm-pull-3{inset-inline-end:12.5%;}.ant-col-sm-offset-3{margin-inline-start:12.5%;}.ant-col-sm-order-3{order:3;}.ant-col-sm-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-sm-push-2{inset-inline-start:8.333333333333332%;}.ant-col-sm-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-sm-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-sm-order-2{order:2;}.ant-col-sm-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-sm-push-1{inset-inline-start:4.166666666666666%;}.ant-col-sm-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-sm-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-sm-order-1{order:1;}.ant-col-sm-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-sm-push-0{inset-inline-start:auto;}.ant-col-sm-pull-0{inset-inline-end:auto;}.ant-col-sm-offset-0{margin-inline-end:0;}.ant-col-sm-order-0{order:0;}}@media (min-width: 768px){.ant-col-md-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-md-push-24{inset-inline-start:100%;}.ant-col-md-pull-24{inset-inline-end:100%;}.ant-col-md-offset-24{margin-inline-start:100%;}.ant-col-md-order-24{order:24;}.ant-col-md-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-md-push-23{inset-inline-start:95.83333333333334%;}.ant-col-md-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-md-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-md-order-23{order:23;}.ant-col-md-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-md-push-22{inset-inline-start:91.66666666666666%;}.ant-col-md-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-md-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-md-order-22{order:22;}.ant-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-md-push-21{inset-inline-start:87.5%;}.ant-col-md-pull-21{inset-inline-end:87.5%;}.ant-col-md-offset-21{margin-inline-start:87.5%;}.ant-col-md-order-21{order:21;}.ant-col-md-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-md-push-20{inset-inline-start:83.33333333333334%;}.ant-col-md-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-md-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-md-order-20{order:20;}.ant-col-md-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-md-push-19{inset-inline-start:79.16666666666666%;}.ant-col-md-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-md-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-md-order-19{order:19;}.ant-col-md-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-md-push-18{inset-inline-start:75%;}.ant-col-md-pull-18{inset-inline-end:75%;}.ant-col-md-offset-18{margin-inline-start:75%;}.ant-col-md-order-18{order:18;}.ant-col-md-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-md-push-17{inset-inline-start:70.83333333333334%;}.ant-col-md-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-md-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-md-order-17{order:17;}.ant-col-md-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-md-push-16{inset-inline-start:66.66666666666666%;}.ant-col-md-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-md-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-md-order-16{order:16;}.ant-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-md-push-15{inset-inline-start:62.5%;}.ant-col-md-pull-15{inset-inline-end:62.5%;}.ant-col-md-offset-15{margin-inline-start:62.5%;}.ant-col-md-order-15{order:15;}.ant-col-md-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-md-push-14{inset-inline-start:58.333333333333336%;}.ant-col-md-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-md-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-md-order-14{order:14;}.ant-col-md-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-md-push-13{inset-inline-start:54.166666666666664%;}.ant-col-md-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-md-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-md-order-13{order:13;}.ant-col-md-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-md-push-12{inset-inline-start:50%;}.ant-col-md-pull-12{inset-inline-end:50%;}.ant-col-md-offset-12{margin-inline-start:50%;}.ant-col-md-order-12{order:12;}.ant-col-md-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-md-push-11{inset-inline-start:45.83333333333333%;}.ant-col-md-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-md-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-md-order-11{order:11;}.ant-col-md-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-md-push-10{inset-inline-start:41.66666666666667%;}.ant-col-md-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-md-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-md-order-10{order:10;}.ant-col-md-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-md-push-9{inset-inline-start:37.5%;}.ant-col-md-pull-9{inset-inline-end:37.5%;}.ant-col-md-offset-9{margin-inline-start:37.5%;}.ant-col-md-order-9{order:9;}.ant-col-md-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-md-push-8{inset-inline-start:33.33333333333333%;}.ant-col-md-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-md-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-md-order-8{order:8;}.ant-col-md-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-md-push-7{inset-inline-start:29.166666666666668%;}.ant-col-md-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-md-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-md-order-7{order:7;}.ant-col-md-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-md-push-6{inset-inline-start:25%;}.ant-col-md-pull-6{inset-inline-end:25%;}.ant-col-md-offset-6{margin-inline-start:25%;}.ant-col-md-order-6{order:6;}.ant-col-md-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-md-push-5{inset-inline-start:20.833333333333336%;}.ant-col-md-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-md-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-md-order-5{order:5;}.ant-col-md-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-md-push-4{inset-inline-start:16.666666666666664%;}.ant-col-md-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-md-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-md-order-4{order:4;}.ant-col-md-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-md-push-3{inset-inline-start:12.5%;}.ant-col-md-pull-3{inset-inline-end:12.5%;}.ant-col-md-offset-3{margin-inline-start:12.5%;}.ant-col-md-order-3{order:3;}.ant-col-md-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-md-push-2{inset-inline-start:8.333333333333332%;}.ant-col-md-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-md-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-md-order-2{order:2;}.ant-col-md-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-md-push-1{inset-inline-start:4.166666666666666%;}.ant-col-md-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-md-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-md-order-1{order:1;}.ant-col-md-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-md-push-0{inset-inline-start:auto;}.ant-col-md-pull-0{inset-inline-end:auto;}.ant-col-md-offset-0{margin-inline-end:0;}.ant-col-md-order-0{order:0;}}@media (min-width: 992px){.ant-col-lg-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-lg-push-24{inset-inline-start:100%;}.ant-col-lg-pull-24{inset-inline-end:100%;}.ant-col-lg-offset-24{margin-inline-start:100%;}.ant-col-lg-order-24{order:24;}.ant-col-lg-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-lg-push-23{inset-inline-start:95.83333333333334%;}.ant-col-lg-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-lg-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-lg-order-23{order:23;}.ant-col-lg-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-lg-push-22{inset-inline-start:91.66666666666666%;}.ant-col-lg-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-lg-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-lg-order-22{order:22;}.ant-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-lg-push-21{inset-inline-start:87.5%;}.ant-col-lg-pull-21{inset-inline-end:87.5%;}.ant-col-lg-offset-21{margin-inline-start:87.5%;}.ant-col-lg-order-21{order:21;}.ant-col-lg-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-lg-push-20{inset-inline-start:83.33333333333334%;}.ant-col-lg-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-lg-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-lg-order-20{order:20;}.ant-col-lg-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-lg-push-19{inset-inline-start:79.16666666666666%;}.ant-col-lg-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-lg-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-lg-order-19{order:19;}.ant-col-lg-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-lg-push-18{inset-inline-start:75%;}.ant-col-lg-pull-18{inset-inline-end:75%;}.ant-col-lg-offset-18{margin-inline-start:75%;}.ant-col-lg-order-18{order:18;}.ant-col-lg-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-lg-push-17{inset-inline-start:70.83333333333334%;}.ant-col-lg-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-lg-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-lg-order-17{order:17;}.ant-col-lg-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-lg-push-16{inset-inline-start:66.66666666666666%;}.ant-col-lg-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-lg-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-lg-order-16{order:16;}.ant-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-lg-push-15{inset-inline-start:62.5%;}.ant-col-lg-pull-15{inset-inline-end:62.5%;}.ant-col-lg-offset-15{margin-inline-start:62.5%;}.ant-col-lg-order-15{order:15;}.ant-col-lg-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-lg-push-14{inset-inline-start:58.333333333333336%;}.ant-col-lg-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-lg-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-lg-order-14{order:14;}.ant-col-lg-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-lg-push-13{inset-inline-start:54.166666666666664%;}.ant-col-lg-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-lg-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-lg-order-13{order:13;}.ant-col-lg-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-lg-push-12{inset-inline-start:50%;}.ant-col-lg-pull-12{inset-inline-end:50%;}.ant-col-lg-offset-12{margin-inline-start:50%;}.ant-col-lg-order-12{order:12;}.ant-col-lg-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-lg-push-11{inset-inline-start:45.83333333333333%;}.ant-col-lg-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-lg-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-lg-order-11{order:11;}.ant-col-lg-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-lg-push-10{inset-inline-start:41.66666666666667%;}.ant-col-lg-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-lg-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-lg-order-10{order:10;}.ant-col-lg-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-lg-push-9{inset-inline-start:37.5%;}.ant-col-lg-pull-9{inset-inline-end:37.5%;}.ant-col-lg-offset-9{margin-inline-start:37.5%;}.ant-col-lg-order-9{order:9;}.ant-col-lg-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-lg-push-8{inset-inline-start:33.33333333333333%;}.ant-col-lg-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-lg-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-lg-order-8{order:8;}.ant-col-lg-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-lg-push-7{inset-inline-start:29.166666666666668%;}.ant-col-lg-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-lg-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-lg-order-7{order:7;}.ant-col-lg-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-lg-push-6{inset-inline-start:25%;}.ant-col-lg-pull-6{inset-inline-end:25%;}.ant-col-lg-offset-6{margin-inline-start:25%;}.ant-col-lg-order-6{order:6;}.ant-col-lg-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-lg-push-5{inset-inline-start:20.833333333333336%;}.ant-col-lg-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-lg-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-lg-order-5{order:5;}.ant-col-lg-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-lg-push-4{inset-inline-start:16.666666666666664%;}.ant-col-lg-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-lg-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-lg-order-4{order:4;}.ant-col-lg-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-lg-push-3{inset-inline-start:12.5%;}.ant-col-lg-pull-3{inset-inline-end:12.5%;}.ant-col-lg-offset-3{margin-inline-start:12.5%;}.ant-col-lg-order-3{order:3;}.ant-col-lg-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-lg-push-2{inset-inline-start:8.333333333333332%;}.ant-col-lg-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-lg-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-lg-order-2{order:2;}.ant-col-lg-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-lg-push-1{inset-inline-start:4.166666666666666%;}.ant-col-lg-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-lg-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-lg-order-1{order:1;}.ant-col-lg-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-lg-push-0{inset-inline-start:auto;}.ant-col-lg-pull-0{inset-inline-end:auto;}.ant-col-lg-offset-0{margin-inline-end:0;}.ant-col-lg-order-0{order:0;}}@media (min-width: 1200px){.ant-col-xl-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xl-push-24{inset-inline-start:100%;}.ant-col-xl-pull-24{inset-inline-end:100%;}.ant-col-xl-offset-24{margin-inline-start:100%;}.ant-col-xl-order-24{order:24;}.ant-col-xl-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xl-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xl-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xl-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xl-order-23{order:23;}.ant-col-xl-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xl-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xl-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xl-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xl-order-22{order:22;}.ant-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xl-push-21{inset-inline-start:87.5%;}.ant-col-xl-pull-21{inset-inline-end:87.5%;}.ant-col-xl-offset-21{margin-inline-start:87.5%;}.ant-col-xl-order-21{order:21;}.ant-col-xl-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xl-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xl-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xl-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xl-order-20{order:20;}.ant-col-xl-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xl-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xl-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xl-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xl-order-19{order:19;}.ant-col-xl-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xl-push-18{inset-inline-start:75%;}.ant-col-xl-pull-18{inset-inline-end:75%;}.ant-col-xl-offset-18{margin-inline-start:75%;}.ant-col-xl-order-18{order:18;}.ant-col-xl-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xl-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xl-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xl-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xl-order-17{order:17;}.ant-col-xl-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xl-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xl-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xl-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xl-order-16{order:16;}.ant-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xl-push-15{inset-inline-start:62.5%;}.ant-col-xl-pull-15{inset-inline-end:62.5%;}.ant-col-xl-offset-15{margin-inline-start:62.5%;}.ant-col-xl-order-15{order:15;}.ant-col-xl-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xl-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xl-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xl-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xl-order-14{order:14;}.ant-col-xl-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xl-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xl-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xl-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xl-order-13{order:13;}.ant-col-xl-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xl-push-12{inset-inline-start:50%;}.ant-col-xl-pull-12{inset-inline-end:50%;}.ant-col-xl-offset-12{margin-inline-start:50%;}.ant-col-xl-order-12{order:12;}.ant-col-xl-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xl-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xl-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xl-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xl-order-11{order:11;}.ant-col-xl-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xl-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xl-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xl-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xl-order-10{order:10;}.ant-col-xl-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xl-push-9{inset-inline-start:37.5%;}.ant-col-xl-pull-9{inset-inline-end:37.5%;}.ant-col-xl-offset-9{margin-inline-start:37.5%;}.ant-col-xl-order-9{order:9;}.ant-col-xl-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xl-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xl-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xl-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xl-order-8{order:8;}.ant-col-xl-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xl-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xl-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xl-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xl-order-7{order:7;}.ant-col-xl-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xl-push-6{inset-inline-start:25%;}.ant-col-xl-pull-6{inset-inline-end:25%;}.ant-col-xl-offset-6{margin-inline-start:25%;}.ant-col-xl-order-6{order:6;}.ant-col-xl-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xl-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xl-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xl-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xl-order-5{order:5;}.ant-col-xl-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xl-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xl-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xl-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xl-order-4{order:4;}.ant-col-xl-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xl-push-3{inset-inline-start:12.5%;}.ant-col-xl-pull-3{inset-inline-end:12.5%;}.ant-col-xl-offset-3{margin-inline-start:12.5%;}.ant-col-xl-order-3{order:3;}.ant-col-xl-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xl-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xl-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xl-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xl-order-2{order:2;}.ant-col-xl-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xl-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xl-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xl-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xl-order-1{order:1;}.ant-col-xl-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xl-push-0{inset-inline-start:auto;}.ant-col-xl-pull-0{inset-inline-end:auto;}.ant-col-xl-offset-0{margin-inline-end:0;}.ant-col-xl-order-0{order:0;}}@media (min-width: 1600px){.ant-col-xxl-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xxl-push-24{inset-inline-start:100%;}.ant-col-xxl-pull-24{inset-inline-end:100%;}.ant-col-xxl-offset-24{margin-inline-start:100%;}.ant-col-xxl-order-24{order:24;}.ant-col-xxl-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xxl-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xxl-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xxl-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xxl-order-23{order:23;}.ant-col-xxl-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xxl-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xxl-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xxl-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xxl-order-22{order:22;}.ant-col-xxl-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xxl-push-21{inset-inline-start:87.5%;}.ant-col-xxl-pull-21{inset-inline-end:87.5%;}.ant-col-xxl-offset-21{margin-inline-start:87.5%;}.ant-col-xxl-order-21{order:21;}.ant-col-xxl-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xxl-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xxl-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xxl-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xxl-order-20{order:20;}.ant-col-xxl-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xxl-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xxl-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xxl-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xxl-order-19{order:19;}.ant-col-xxl-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xxl-push-18{inset-inline-start:75%;}.ant-col-xxl-pull-18{inset-inline-end:75%;}.ant-col-xxl-offset-18{margin-inline-start:75%;}.ant-col-xxl-order-18{order:18;}.ant-col-xxl-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xxl-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xxl-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xxl-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xxl-order-17{order:17;}.ant-col-xxl-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xxl-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xxl-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xxl-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xxl-order-16{order:16;}.ant-col-xxl-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xxl-push-15{inset-inline-start:62.5%;}.ant-col-xxl-pull-15{inset-inline-end:62.5%;}.ant-col-xxl-offset-15{margin-inline-start:62.5%;}.ant-col-xxl-order-15{order:15;}.ant-col-xxl-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xxl-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xxl-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xxl-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xxl-order-14{order:14;}.ant-col-xxl-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xxl-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xxl-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xxl-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xxl-order-13{order:13;}.ant-col-xxl-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xxl-push-12{inset-inline-start:50%;}.ant-col-xxl-pull-12{inset-inline-end:50%;}.ant-col-xxl-offset-12{margin-inline-start:50%;}.ant-col-xxl-order-12{order:12;}.ant-col-xxl-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xxl-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xxl-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xxl-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xxl-order-11{order:11;}.ant-col-xxl-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xxl-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xxl-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xxl-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xxl-order-10{order:10;}.ant-col-xxl-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xxl-push-9{inset-inline-start:37.5%;}.ant-col-xxl-pull-9{inset-inline-end:37.5%;}.ant-col-xxl-offset-9{margin-inline-start:37.5%;}.ant-col-xxl-order-9{order:9;}.ant-col-xxl-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xxl-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xxl-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xxl-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xxl-order-8{order:8;}.ant-col-xxl-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xxl-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xxl-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xxl-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xxl-order-7{order:7;}.ant-col-xxl-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xxl-push-6{inset-inline-start:25%;}.ant-col-xxl-pull-6{inset-inline-end:25%;}.ant-col-xxl-offset-6{margin-inline-start:25%;}.ant-col-xxl-order-6{order:6;}.ant-col-xxl-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xxl-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xxl-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xxl-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xxl-order-5{order:5;}.ant-col-xxl-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xxl-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xxl-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xxl-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xxl-order-4{order:4;}.ant-col-xxl-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xxl-push-3{inset-inline-start:12.5%;}.ant-col-xxl-pull-3{inset-inline-end:12.5%;}.ant-col-xxl-offset-3{margin-inline-start:12.5%;}.ant-col-xxl-order-3{order:3;}.ant-col-xxl-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xxl-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xxl-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xxl-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xxl-order-2{order:2;}.ant-col-xxl-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xxl-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xxl-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xxl-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xxl-order-1{order:1;}.ant-col-xxl-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xxl-push-0{inset-inline-start:auto;}.ant-col-xxl-pull-0{inset-inline-end:auto;}.ant-col-xxl-offset-0{margin-inline-end:0;}.ant-col-xxl-order-0{order:0;}}[class^=\\\\\"ant-comment\\\\\"],[class*=\\\\\" ant-comment\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-comment\\\\\"]::before,[class*=\\\\\" ant-comment\\\\\"]::before,[class^=\\\\\"ant-comment\\\\\"]::after,[class*=\\\\\" ant-comment\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"],[class*=\\\\\" ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"],[class^=\\\\\"ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"],[class*=\\\\\" ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"]::before,[class*=\\\\\" ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"]::before,[class^=\\\\\"ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"]::before,[class*=\\\\\" ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"]::before,[class^=\\\\\"ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"]::after,[class*=\\\\\" ant-comment\\\\\"] [class^=\\\\\"ant-comment\\\\\"]::after,[class^=\\\\\"ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"]::after,[class*=\\\\\" ant-comment\\\\\"] [class*=\\\\\" ant-comment\\\\\"]::after{box-sizing:border-box;}.ant-comment{position:relative;background-color:inherit;}.ant-comment .ant-comment-inner{display:flex;padding:20px 0;}.ant-comment .ant-comment-avatar{position:relative;flex-shrink:0;margin-right:12px;cursor:pointer;}.ant-comment .ant-comment-avatar img{width:32px;height:32px;border-radius:50%;}.ant-comment .ant-comment-content{position:relative;flex:1 1 auto;min-width:1px;font-size:14px;word-wrap:break-word;}.ant-comment .ant-comment-content-author{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:4px;font-size:14px;}.ant-comment .ant-comment-content-author>a,.ant-comment .ant-comment-content-author>span{padding-right:8px;font-size:12px;line-height:18px;}.ant-comment .ant-comment-content-author-name{color:rgba(255, 255, 255, 0.45);font-size:14px;transition:color 0.3s;}.ant-comment .ant-comment-content-author-name >*{color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-content-author-name >*:hover{color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-content-author-time{color:rgba(255, 255, 255, 0.25);white-space:nowrap;cursor:auto;}.ant-comment .ant-comment-content-detail p{margin-bottom:inherit;white-space:pre-wrap;}.ant-comment .ant-comment-actions{margin-top:12px;margin-bottom:inherit;padding-left:0;}.ant-comment .ant-comment-actions >li{display:inline-block;color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-actions >li >span{margin-right:10px;color:rgba(255, 255, 255, 0.45);font-size:12px;cursor:pointer;transition:color 0.3s;user-select:none;}.ant-comment .ant-comment-actions >li >span:hover{color:rgba(255, 255, 255, 0.65);}.ant-comment .ant-comment-nested{margin-left:44px;}.ant-comment-rtl{direction:rtl;}[class^=\\\\\"ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"],[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"],[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::before,[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::before,[class^=\\\\\"ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"] [class^=\\\\\"ant-picker\\\\\"]::after,[class^=\\\\\"ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::after,[class*=\\\\\" ant-picker\\\\\"] [class*=\\\\\" ant-picker\\\\\"]::after{box-sizing:border-box;}.ant-picker{box-sizing:border-box;margin:0;padding:4px 11px 4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-flex;align-items:center;background:#141414;border:1px solid #424242;border-radius:6px;transition:border 0.2s,box-shadow 0.2s;}.ant-picker:hover,.ant-picker-focused{border-color:#198016;border-inline-end-width:1px;}.ant-picker-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker.ant-picker-disabled{background:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-picker.ant-picker-disabled .ant-picker-suffix{color:rgba(255, 255, 255, 0.25);}.ant-picker.ant-picker-borderless{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important;}.ant-picker .ant-picker-input{position:relative;display:inline-flex;align-items:center;width:100%;}.ant-picker .ant-picker-input >input{position:relative;display:inline-block;width:100%;min-width:1px;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;flex:auto;height:auto;background:transparent;border:0;}.ant-picker .ant-picker-input >input::-moz-placeholder{opacity:1;}.ant-picker .ant-picker-input >input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-picker .ant-picker-input >input:placeholder-shown{text-overflow:ellipsis;}.ant-picker .ant-picker-input >input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-picker .ant-picker-input >input:focus,.ant-picker .ant-picker-input >input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker .ant-picker-input >input-disabled,.ant-picker .ant-picker-input >input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-picker .ant-picker-input >input-disabled:hover,.ant-picker .ant-picker-input >input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-picker .ant-picker-input >input-borderless,.ant-picker .ant-picker-input >input-borderless:hover,.ant-picker .ant-picker-input >input-borderless:focus,.ant-picker .ant-picker-input >input-borderless-focused,.ant-picker .ant-picker-input >input-borderless-disabled,.ant-picker .ant-picker-input >input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-picker .ant-picker-input >input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-picker .ant-picker-input >input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-picker .ant-picker-input >input-sm{padding:0px 7px;border-radius:4px;}.ant-picker .ant-picker-input >input-rtl{direction:rtl;}.ant-picker .ant-picker-input >input-textarea-rtl{direction:rtl;}.ant-picker .ant-picker-input >input:focus{box-shadow:none;}.ant-picker .ant-picker-input >input[disabled]{background:transparent;}.ant-picker .ant-picker-input:hover .ant-picker-clear{opacity:1;}.ant-picker .ant-picker-input-placeholder >input{color:rgba(255, 255, 255, 0.25);}.ant-picker-large{padding:6.5px 11px 6.5px;}.ant-picker-large .ant-picker-input>input{font-size:16px;}.ant-picker-small{padding:0px 7px 0px;}.ant-picker .ant-picker-suffix{display:flex;flex:none;align-self:center;margin-inline-start:4px;color:rgba(255, 255, 255, 0.25);line-height:1;pointer-events:none;}.ant-picker .ant-picker-suffix >*{vertical-align:top;}.ant-picker .ant-picker-suffix >*:not(:last-child){margin-inline-end:8px;}.ant-picker .ant-picker-clear{position:absolute;top:50%;inset-inline-end:0;color:rgba(255, 255, 255, 0.25);line-height:1;background:#141414;transform:translateY(-50%);cursor:pointer;opacity:0;transition:opacity 0.2s,color 0.2s;}.ant-picker .ant-picker-clear >*{vertical-align:top;}.ant-picker .ant-picker-clear:hover{color:rgba(255, 255, 255, 0.45);}.ant-picker .ant-picker-separator{position:relative;display:inline-block;width:1em;height:16px;color:rgba(255, 255, 255, 0.25);font-size:16px;vertical-align:top;cursor:default;}.ant-picker-focused .ant-picker .ant-picker-separator{color:rgba(255, 255, 255, 0.45);}.ant-picker-disabled .ant-picker-range-separator .ant-picker .ant-picker-separator{cursor:not-allowed;}.ant-picker-range{position:relative;display:inline-flex;}.ant-picker-range .ant-picker-clear{inset-inline-end:11px;}.ant-picker-range:hover .ant-picker-clear{opacity:1;}.ant-picker-range .ant-picker-active-bar{bottom:-1px;height:2px;margin-inline-start:11px;background:#037003;opacity:0;transition:all 0.3s ease-out;pointer-events:none;}.ant-picker-range.ant-picker-focused .ant-picker-active-bar{opacity:1;}.ant-picker-range .ant-picker-range-separator{align-items:center;padding:0 8px;line-height:1;}.ant-picker-range.ant-picker-small .ant-picker-clear{inset-inline-end:7px;}.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-inline-start:7px;}.ant-picker-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;}.ant-picker-dropdown .ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#141414;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px;outline:none;}.ant-picker-dropdown .ant-picker-panel-focused{border-color:#037003;}.ant-picker-dropdown .ant-picker-panel-rtl{direction:rtl;}.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(45deg);}.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-135deg);}.ant-picker-dropdown .ant-picker-decade-panel,.ant-picker-dropdown .ant-picker-year-panel,.ant-picker-dropdown .ant-picker-quarter-panel,.ant-picker-dropdown .ant-picker-month-panel,.ant-picker-dropdown .ant-picker-week-panel,.ant-picker-dropdown .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-time-panel{display:flex;flex-direction:column;width:280px;}.ant-picker-dropdown .ant-picker-header{display:flex;padding:0 8px;color:rgba(255, 255, 255, 0.85);border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-header >*{flex:none;}.ant-picker-dropdown .ant-picker-header button{padding:0;color:rgba(255, 255, 255, 0.45);line-height:40px;background:transparent;border:0;cursor:pointer;transition:color 0.2s;}.ant-picker-dropdown .ant-picker-header >button{min-width:1.6em;font-size:14px;}.ant-picker-dropdown .ant-picker-header >button:hover{color:rgba(255, 255, 255, 0.85);}.ant-picker-dropdown .ant-picker-header-view{flex:auto;font-weight:600;line-height:40px;}.ant-picker-dropdown .ant-picker-header-view button{color:inherit;font-weight:inherit;vertical-align:top;}.ant-picker-dropdown .ant-picker-header-view button:not(:first-child){margin-inline-start:8px;}.ant-picker-dropdown .ant-picker-header-view button:hover{color:#037003;}.ant-picker-dropdown .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-super-prev-icon,.ant-picker-dropdown .ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px;}.ant-picker-dropdown .ant-picker-prev-icon::before,.ant-picker-dropdown .ant-picker-next-icon::before,.ant-picker-dropdown .ant-picker-super-prev-icon::before,.ant-picker-dropdown .ant-picker-super-next-icon::before{position:absolute;top:0;inset-inline-start:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-super-prev-icon::after,.ant-picker-dropdown .ant-picker-super-next-icon::after{position:absolute;top:4px;inset-inline-start:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-super-prev-icon{transform:rotate(-45deg);}.ant-picker-dropdown .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-super-next-icon{transform:rotate(135deg);}.ant-picker-dropdown .ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse;}.ant-picker-dropdown .ant-picker-content th,.ant-picker-dropdown .ant-picker-content td{position:relative;min-width:24px;font-weight:normal;}.ant-picker-dropdown .ant-picker-content th{height:32px;color:rgba(255, 255, 255, 0.85);vertical-align:middle;}.ant-picker-dropdown .ant-picker-cell{padding:4px 0;color:rgba(255, 255, 255, 0.25);cursor:pointer;}.ant-picker-dropdown .ant-picker-cell-in-view{color:rgba(255, 255, 255, 0.85);}.ant-picker-dropdown .ant-picker-cell::before{position:absolute;top:50%;inset-inline-start:0;inset-inline-end:0;z-index:1;height:24px;transform:translateY(-50%);transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:4px;transition:background 0.2s,border 0.2s;}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1;border:1px solid #037003;border-radius:4px;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range::before{background:#111911;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#037003;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before{background:#111911;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start::before{inset-inline-start:50%;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end::before{inset-inline-end:50%;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #06d306;border-bottom:1px dashed #06d306;transform:translateY(-50%);transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-cell-range-hover::after{inset-inline-end:0;inset-inline-start:2px;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before{background:#2cf92c;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-start-start-radius:4px;border-end-start-radius:4px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-dropdown .ant-picker-cell-range-hover.ant-picker-cell-range-end::after{inset-inline-start:50%;}tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after,tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after{inset-inline-start:6px;border-inline-start:1px dashed #06d306;border-start-start-radius:1px;border-end-start-radius:1px;}tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after,tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after{inset-inline-end:6px;border-inline-end:1px dashed #06d306;border-start-end-radius:1px;border-end-end-radius:1px;}.ant-picker-dropdown .ant-picker-cell-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-picker-dropdown .ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent;}.ant-picker-dropdown .ant-picker-cell-disabled::before{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:rgba(255, 255, 255, 0.25);}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after,.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{position:absolute;top:0;bottom:0;z-index:-1;background:#2cf92c;transition:all 0.3s;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after{inset-inline-end:-6px;inset-inline-start:0;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{inset-inline-end:0;inset-inline-start:-6px;}.ant-picker-dropdown .ant-picker-range-hover.ant-picker-range-start::after{inset-inline-end:50%;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-year-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-content{height:264px;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px;}.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-content{height:56px;}.ant-picker-dropdown .ant-picker-panel .ant-picker-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-footer{width:min-content;min-width:100%;line-height:38px;text-align:center;}.ant-picker-dropdown .ant-picker-footer-extra{padding:0 12;line-height:38px;text-align:start;}.ant-picker-dropdown .ant-picker-footer-extra:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-now{text-align:start;}.ant-picker-dropdown .ant-picker-today-btn{color:#1668dc;}.ant-picker-dropdown .ant-picker-today-btn:hover{color:#15417e;}.ant-picker-dropdown .ant-picker-today-btn:active{color:#1554ad;}.ant-picker-dropdown .ant-picker-today-btn.ant-picker-today-btn-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell::before{display:none;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-body,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-body,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-body{padding:0 8px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-inner{width:60px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:4px;border-bottom-start-radius:4px;border-start-end-radius:0;border-bottom-end-radius:0;}.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-bottom-start-radius:0;border-start-end-radius:4px;border-bottom-end-radius:4px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:6px;border-end-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-body{padding:8px 12px;}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important;}.ant-picker-dropdown .ant-picker-week-panel-row td{transition:background 0.2s;}.ant-picker-dropdown .ant-picker-week-panel-row td:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-picker-dropdown .ant-picker-week-panel-row td:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-dropdown .ant-picker-week-panel-row:hover td{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-week-panel-row-selected td,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td{background:#037003;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:#fff;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-body{padding:8px 12px;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-content{width:252px;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-content th{width:36px;}.ant-picker-dropdown .ant-picker-datetime-panel{display:flex;}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel{border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity 0.3s;}.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:0.3;}.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1;}.ant-picker-dropdown .ant-picker-time-panel{width:auto;min-width:auto;direction:ltr;}.ant-picker-dropdown .ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px;}.ant-picker-dropdown .ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:4px 0;padding:0;overflow-y:hidden;text-align:start;list-style:none;transition:background 0.2s;overflow-x:hidden;}.ant-picker-dropdown .ant-picker-time-panel-column::after{display:block;height:196px;content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-time-panel-column:not(:first-child){border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-time-panel-column-active{background:#111911;}.ant-picker-dropdown .ant-picker-time-panel-column:hover{overflow-y:auto;}.ant-picker-dropdown .ant-picker-time-panel-column >li{margin:0;padding:0;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell{margin-inline:4px;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:48px;height:28px;margin:0;padding-block:0;padding-inline-end:0;padding-inline-start:14px;color:rgba(255, 255, 255, 0.85);line-height:28px;border-radius:4px;cursor:pointer;transition:background 0.2s;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#111911;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:204px;}.ant-picker-dropdown.ant-picker-dropdown-hidden{display:none;}.ant-picker-dropdown.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow{top:0;display:block;transform:translateY(-100%);}.ant-picker-dropdown.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow{bottom:0;display:block;transform:translateY(100%) rotate(180deg);}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownIn;}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpIn;}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownOut;}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpOut;}.ant-picker-dropdown .ant-picker-panel>.ant-picker-time-panel{padding-top:4px;}.ant-picker-dropdown .ant-picker-ranges{margin-bottom:0;padding:4px 12px;overflow:hidden;line-height:34px;text-align:start;list-style:none;display:flex;justify-content:space-between;}.ant-picker-dropdown .ant-picker-ranges >li{display:inline-block;}.ant-picker-dropdown .ant-picker-ranges .ant-picker-preset>.ant-tag-blue{color:#037003;background:#111911;border-color:#0e340e;cursor:pointer;}.ant-picker-dropdown .ant-picker-ranges .ant-picker-ok{margin-inline-start:auto;}.ant-picker-dropdown .ant-picker-range-wrapper{display:flex;position:relative;}.ant-picker-dropdown .ant-picker-range-arrow{position:absolute;z-index:1;display:none;margin-inline-start:16.5px;transition:left 0.3s ease-out;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-picker-dropdown .ant-picker-range-arrow::after{content:\\\\\"\\\\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-picker-dropdown .ant-picker-range-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:#1f1f1f;clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\\\\"\\\\\";}.ant-picker-dropdown .ant-picker-panel-container{overflow:hidden;vertical-align:top;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);transition:margin 0.3s;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel-layout{display:flex;flex-wrap:nowrap;align-items:stretch;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets{display:flex;flex-direction:column;min-width:120px;max-width:200px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul{height:0;flex:auto;list-style:none;overflow:auto;margin:0;padding:8px;border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding-inline:8px;padding-block:1px;cursor:pointer;transition:all 0.3s;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li +li{margin-top:8px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels{display:inline-flex;flex-wrap:nowrap;direction:ltr;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels .ant-picker-panel{border-width:0 0 1px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels:last-child .ant-picker-panel{border-width:0;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel{vertical-align:top;background:transparent;border-radius:0;border-width:0;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel table{text-align:center;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel-focused{border-color:#424242;}.ant-picker-dropdown-range{padding:10.666666666666666px 0;}.ant-picker-dropdown-range-hidden{display:none;}.ant-picker-rtl{direction:rtl;}.ant-picker-rtl .ant-picker-separator{transform:rotate(180deg);}.ant-picker-rtl .ant-picker-footer-extra{direction:rtl;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-picker-status-error.ant-picker,.ant-picker-status-error.ant-picker:not([disabled]):hover{background-color:#141414;border-color:#dc4446;}.ant-picker-status-error.ant-picker-focused,.ant-picker-status-error.ant-picker:focus{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-picker-status-error.ant-picker .ant-picker-active-bar{background:#dc4446;}.ant-picker-status-warning.ant-picker,.ant-picker-status-warning.ant-picker:not([disabled]):hover{background-color:#141414;border-color:#d89614;}.ant-picker-status-warning.ant-picker-focused,.ant-picker-status-warning.ant-picker:focus{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker-status-warning.ant-picker .ant-picker-active-bar{background:#d89614;}.ant-picker-compact-item:not(.ant-picker-compact-last-item){margin-inline-end:-1px;}.ant-picker-compact-item:hover,.ant-picker-compact-item:active{z-index:2;}.ant-picker-compact-item.ant-picker-focused{z-index:2;}.ant-picker-compact-item[disabled]{z-index:0;}.ant-picker-compact-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-last-item){border-radius:0;}.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item,.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item.ant-picker-sm,.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item.ant-picker-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item,.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item.ant-picker-sm,.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item.ant-picker-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\\\\"ant-descriptions\\\\\"],[class*=\\\\\" ant-descriptions\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-descriptions\\\\\"]::before,[class*=\\\\\" ant-descriptions\\\\\"]::before,[class^=\\\\\"ant-descriptions\\\\\"]::after,[class*=\\\\\" ant-descriptions\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"],[class*=\\\\\" ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"],[class^=\\\\\"ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"],[class*=\\\\\" ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"]::before,[class*=\\\\\" ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"]::before,[class^=\\\\\"ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"]::before,[class*=\\\\\" ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"]::before,[class^=\\\\\"ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"]::after,[class*=\\\\\" ant-descriptions\\\\\"] [class^=\\\\\"ant-descriptions\\\\\"]::after,[class^=\\\\\"ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"]::after,[class*=\\\\\" ant-descriptions\\\\\"] [class*=\\\\\" ant-descriptions\\\\\"]::after{box-sizing:border-box;}.ant-descriptions{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-view{border:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-view >table{table-layout:auto;border-collapse:collapse;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-content{padding:16px 24px;border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label:last-child,.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-content:last-child{border-inline-end:none;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label{background-color:rgba(255, 255, 255, 0.04);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label::after{display:none;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-row{border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-row:last-child{border-bottom:none;}.ant-descriptions.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content{padding:12px 24px;}.ant-descriptions.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content{padding:8px 16px;}.ant-descriptions-rtl{direction:rtl;}.ant-descriptions .ant-descriptions-header{display:flex;align-items:center;margin-bottom:20px;}.ant-descriptions .ant-descriptions-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-descriptions .ant-descriptions-extra{margin-inline-start:auto;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-descriptions .ant-descriptions-view{width:100%;border-radius:8px;}.ant-descriptions .ant-descriptions-view table{width:100%;table-layout:fixed;}.ant-descriptions .ant-descriptions-row >th,.ant-descriptions .ant-descriptions-row >td{padding-bottom:16px;}.ant-descriptions .ant-descriptions-row:last-child{border-bottom:none;}.ant-descriptions .ant-descriptions-item-label{color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;text-align:start;}.ant-descriptions .ant-descriptions-item-label::after{content:\\\\\":\\\\\";position:relative;top:-0.5px;margin-inline:2px 8px;}.ant-descriptions .ant-descriptions-item-label.ant-descriptions-item-no-colon::after{content:\\\\\"\\\\\";}.ant-descriptions .ant-descriptions-item-no-label::after{margin:0;content:\\\\\"\\\\\";}.ant-descriptions .ant-descriptions-item-content{display:table-cell;flex:1;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;word-break:break-word;overflow-wrap:break-word;}.ant-descriptions .ant-descriptions-item{padding-bottom:0;vertical-align:top;}.ant-descriptions .ant-descriptions-item-container{display:flex;}.ant-descriptions .ant-descriptions-item-container .ant-descriptions-item-label{display:inline-flex;align-items:baseline;}.ant-descriptions .ant-descriptions-item-container .ant-descriptions-item-content{display:inline-flex;align-items:baseline;}.ant-descriptions-middle .ant-descriptions-row >th,.ant-descriptions-middle .ant-descriptions-row >td{padding-bottom:12px;}.ant-descriptions-small .ant-descriptions-row >th,.ant-descriptions-small .ant-descriptions-row >td{padding-bottom:8px;}[class^=\\\\\"ant-divider\\\\\"],[class*=\\\\\" ant-divider\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-divider\\\\\"]::before,[class*=\\\\\" ant-divider\\\\\"]::before,[class^=\\\\\"ant-divider\\\\\"]::after,[class*=\\\\\" ant-divider\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"],[class*=\\\\\" ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"],[class^=\\\\\"ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"],[class*=\\\\\" ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"]::before,[class*=\\\\\" ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"]::before,[class^=\\\\\"ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"]::before,[class*=\\\\\" ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"]::before,[class^=\\\\\"ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"]::after,[class*=\\\\\" ant-divider\\\\\"] [class^=\\\\\"ant-divider\\\\\"]::after,[class^=\\\\\"ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"]::after,[class*=\\\\\" ant-divider\\\\\"] [class*=\\\\\" ant-divider\\\\\"]::after{box-sizing:border-box;}.ant-divider{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';border-block-start:1px solid rgba(253, 253, 253, 0.12);}.ant-divider-vertical{position:relative;top:-0.06em;display:inline-block;height:0.9em;margin:0 8px;vertical-align:middle;border-top:0;border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-divider-horizontal{display:flex;clear:both;width:100%;min-width:100%;margin:24px 0;}.ant-divider-horizontal.ant-divider-with-text{display:flex;align-items:center;margin:16px 0;color:rgba(255, 255, 255, 0.85);font-weight:500;font-size:16px;white-space:nowrap;text-align:center;border-block-start:0 rgba(253, 253, 253, 0.12);}.ant-divider-horizontal.ant-divider-with-text::before,.ant-divider-horizontal.ant-divider-with-text::after{position:relative;width:50%;border-block-start:1px solid transparent;border-block-start-color:inherit;border-block-end:0;transform:translateY(50%);content:'';}.ant-divider-horizontal.ant-divider-with-text-left::before{width:5%;}.ant-divider-horizontal.ant-divider-with-text-left::after{width:95%;}.ant-divider-horizontal.ant-divider-with-text-right::before{width:95%;}.ant-divider-horizontal.ant-divider-with-text-right::after{width:5%;}.ant-divider .ant-divider-inner-text{display:inline-block;padding:0 1em;}.ant-divider-dashed{background:none;border-color:rgba(253, 253, 253, 0.12);border-style:dashed;border-width:1px 0 0;}.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before,.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after{border-style:dashed none none;}.ant-divider-vertical.ant-divider-dashed{border-inline-start:1px;border-inline-end:0;border-block-start:0;border-block-end:0;}.ant-divider-plain.ant-divider-with-text{color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left::before{width:0;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left::after{width:100%;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left .ant-divider-inner-text{padding-inline-start:0;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right::before{width:100%;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right::after{width:0;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right .ant-divider-inner-text{padding-inline-end:0;}[class^=\\\\\"ant-dropdown\\\\\"],[class*=\\\\\" ant-dropdown\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-dropdown\\\\\"]::before,[class*=\\\\\" ant-dropdown\\\\\"]::before,[class^=\\\\\"ant-dropdown\\\\\"]::after,[class*=\\\\\" ant-dropdown\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"],[class*=\\\\\" ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"],[class^=\\\\\"ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"],[class*=\\\\\" ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"]::before,[class*=\\\\\" ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"]::before,[class^=\\\\\"ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"]::before,[class*=\\\\\" ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"]::before,[class^=\\\\\"ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"]::after,[class*=\\\\\" ant-dropdown\\\\\"] [class^=\\\\\"ant-dropdown\\\\\"]::after,[class^=\\\\\"ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"]::after,[class*=\\\\\" ant-dropdown\\\\\"] [class*=\\\\\" ant-dropdown\\\\\"]::after{box-sizing:border-box;}.ant-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block;}.ant-dropdown::before{position:absolute;inset-block:-4px;z-index:-9999;opacity:0.0001;content:\\\\\"\\\\\";}.ant-dropdown .ant-dropdown-wrap{position:relative;}.ant-dropdown .ant-dropdown-wrap .ant-btn>.anticon-down{font-size:12px;}.ant-dropdown .ant-dropdown-wrap .anticon-down::before{transition:transform 0.2s;}.ant-dropdown .ant-dropdown-wrap-open .anticon-down::before{transform:rotate(180deg);}.ant-dropdown-hidden,.ant-dropdown-menu-hidden,.ant-dropdown-menu-submenu-hidden{display:none;}.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-top,.ant-dropdown-show-arrow.ant-dropdown-placement-topRight{padding-bottom:12px;}.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-bottom,.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight{padding-top:12px;}.ant-dropdown .ant-dropdown-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-dropdown .ant-dropdown-arrow::after{content:\\\\\"\\\\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-dropdown .ant-dropdown-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:#1f1f1f;clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\\\\"\\\\\";}.ant-dropdown-placement-top>.ant-dropdown-arrow,.ant-dropdown-placement-topLeft>.ant-dropdown-arrow,.ant-dropdown-placement-topRight>.ant-dropdown-arrow{bottom:12px;transform:translateY(100%) rotate(180deg);}.ant-dropdown-placement-top>.ant-dropdown-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-dropdown-placement-topLeft>.ant-dropdown-arrow{left:6px;}.ant-dropdown-placement-topRight>.ant-dropdown-arrow{right:6px;}.ant-dropdown-placement-bottom>.ant-dropdown-arrow,.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow,.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:12px;transform:translateY(-100%);}.ant-dropdown-placement-bottom>.ant-dropdown-arrow{left:50%;transform:translateY(-100%) translateX(-50%);}.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow{left:6px;}.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{right:6px;}.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpIn;}.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topRight,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topRight{animation-name:antSlideDownIn;}.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpOut;}.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topRight{animation-name:antSlideDownOut;}.ant-dropdown .ant-dropdown-menu{position:relative;margin:0;}.ant-dropdown-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;box-shadow:none;transform-origin:0 0;}.ant-dropdown-menu-submenu-popup ul,.ant-dropdown-menu-submenu-popup li{list-style:none;}.ant-dropdown-menu-submenu-popup ul{margin-inline:0.3em;}.ant-dropdown .ant-dropdown-menu,.ant-dropdown-menu-submenu .ant-dropdown-menu{padding:4px;list-style-type:none;background-color:#1f1f1f;background-clip:padding-box;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-dropdown .ant-dropdown-menu:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-group-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-group-title{padding:5px 12px;color:rgba(255, 255, 255, 0.45);transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item{position:relative;display:flex;align-items:center;border-radius:4px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-icon{min-width:14px;margin-inline-end:8px;font-size:12px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content{flex:auto;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a{color:inherit;transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a:hover{color:inherit;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a::after,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a::after{position:absolute;inset:0;content:\\\\\"\\\\\";}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title{clear:both;margin:0;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-active,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-active{background-color:rgba(255, 255, 255, 0.08);}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item:focus-visible,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected{color:#037003;background-color:#111911;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected-active,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected-active{background-color:#0f2510;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:#1f1f1f;cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled a,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled a{pointer-events:none;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-divider,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-divider{height:1px;margin:4px 0;overflow:hidden;line-height:0;background-color:rgba(253, 253, 253, 0.12);}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{position:absolute;inset-inline-end:8px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-inline-end:0!important;color:rgba(255, 255, 255, 0.45);font-size:12px;font-style:normal;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-group-list,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-group-list{margin:0 8px;padding:0;list-style:none;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title{padding-inline-end:24px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-vertical,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-vertical{position:relative;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:rgba(255, 255, 255, 0.25);background-color:#1f1f1f;cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#037003;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-dropdown-button{white-space:nowrap;}.ant-dropdown-button.ant-btn-group>.ant-btn-loading,.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn{cursor:default;pointer-events:none;opacity:0.65;}.ant-dropdown-button.ant-btn-group>.ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only){padding-inline:8px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled),.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled){color:#dc4446;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled):hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled):hover{color:#fff;background-color:#dc4446;}@keyframes antZoomBigIn{0%{transform:scale(0.8);opacity:0;}100%{transform:scale(1);opacity:1;}}@keyframes antZoomBigOut{0%{transform:scale(1);}100%{transform:scale(0.8);opacity:0;}}[class^=\\\\\"ant-drawer\\\\\"],[class*=\\\\\" ant-drawer\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-drawer\\\\\"]::before,[class*=\\\\\" ant-drawer\\\\\"]::before,[class^=\\\\\"ant-drawer\\\\\"]::after,[class*=\\\\\" ant-drawer\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"],[class*=\\\\\" ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"],[class^=\\\\\"ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"],[class*=\\\\\" ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"]::before,[class*=\\\\\" ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"]::before,[class^=\\\\\"ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"]::before,[class*=\\\\\" ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"]::before,[class^=\\\\\"ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"]::after,[class*=\\\\\" ant-drawer\\\\\"] [class^=\\\\\"ant-drawer\\\\\"]::after,[class^=\\\\\"ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"]::after,[class*=\\\\\" ant-drawer\\\\\"] [class*=\\\\\" ant-drawer\\\\\"]::after{box-sizing:border-box;}.ant-drawer{position:fixed;inset:0;z-index:1000;pointer-events:none;}.ant-drawer-pure{position:relative;background:#1f1f1f;}.ant-drawer-pure.ant-drawer-left{box-shadow:6px 0 16px 0 rgba(0, 0, 0, 0.08),3px 0 6px -4px rgba(0, 0, 0, 0.12),9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-right{box-shadow:-6px 0 16px 0 rgba(0, 0, 0, 0.08),-3px 0 6px -4px rgba(0, 0, 0, 0.12),-9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-top{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-bottom{box-shadow:0 -6px 16px 0 rgba(0, 0, 0, 0.08),0 -3px 6px -4px rgba(0, 0, 0, 0.12),0 -9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-inline{position:absolute;}.ant-drawer .ant-drawer-mask{position:absolute;inset:0;z-index:1000;background:rgba(0, 0, 0, 0.45);pointer-events:auto;}.ant-drawer .ant-drawer-content-wrapper{position:absolute;z-index:1000;transition:all 0.3s;}.ant-drawer .ant-drawer-content-wrapper-hidden{display:none;}.ant-drawer-left>.ant-drawer-content-wrapper{top:0;bottom:0;left:0;box-shadow:6px 0 16px 0 rgba(0, 0, 0, 0.08),3px 0 6px -4px rgba(0, 0, 0, 0.12),9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-right>.ant-drawer-content-wrapper{top:0;right:0;bottom:0;box-shadow:-6px 0 16px 0 rgba(0, 0, 0, 0.08),-3px 0 6px -4px rgba(0, 0, 0, 0.12),-9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-top>.ant-drawer-content-wrapper{top:0;inset-inline:0;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-bottom>.ant-drawer-content-wrapper{bottom:0;inset-inline:0;box-shadow:0 -6px 16px 0 rgba(0, 0, 0, 0.08),0 -3px 6px -4px rgba(0, 0, 0, 0.12),0 -9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer .ant-drawer-content{width:100%;height:100%;overflow:auto;background:#1f1f1f;pointer-events:auto;}.ant-drawer .ant-drawer-wrapper-body{display:flex;flex-direction:column;width:100%;height:100%;}.ant-drawer .ant-drawer-header{display:flex;flex:0;align-items:center;padding:16px 24px;font-size:16px;line-height:1.5;border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-drawer .ant-drawer-header-title{display:flex;flex:1;align-items:center;min-width:0;min-height:0;}.ant-drawer .ant-drawer-extra{flex:none;}.ant-drawer .ant-drawer-close{display:inline-block;margin-inline-end:12px;color:rgba(255, 255, 255, 0.45);font-weight:600;font-size:16px;font-style:normal;line-height:1;text-align:center;text-transform:none;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color 0.2s;text-rendering:auto;}.ant-drawer .ant-drawer-close:focus,.ant-drawer .ant-drawer-close:hover{color:rgba(255, 255, 255, 0.85);text-decoration:none;}.ant-drawer .ant-drawer-title{flex:1;margin:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-drawer .ant-drawer-body{flex:1;min-width:0;min-height:0;padding:24px;overflow:auto;}.ant-drawer .ant-drawer-footer{flex-shrink:0;padding:8px 16px;border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-drawer-rtl{direction:rtl;}.ant-drawer .ant-drawer-mask-motion-enter-active,.ant-drawer .ant-drawer-mask-motion-appear-active,.ant-drawer .ant-drawer-mask-motion-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-mask-motion-enter,.ant-drawer .ant-drawer-mask-motion-appear{opacity:0;}.ant-drawer .ant-drawer-mask-motion-enter-active,.ant-drawer .ant-drawer-mask-motion-appear-active{opacity:1;}.ant-drawer .ant-drawer-mask-motion-leave{opacity:1;}.ant-drawer .ant-drawer-mask-motion-leave-active{opacity:0;}.ant-drawer .ant-drawer-panel-motion-left-enter-start,.ant-drawer .ant-drawer-panel-motion-left-appear-start,.ant-drawer .ant-drawer-panel-motion-left-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-left-enter-active,.ant-drawer .ant-drawer-panel-motion-left-appear-active,.ant-drawer .ant-drawer-panel-motion-left-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-left-enter-start,.ant-drawer .ant-drawer-panel-motion-left-appear-start{transform:translateX(-100%)!important;}.ant-drawer .ant-drawer-panel-motion-left-enter-active,.ant-drawer .ant-drawer-panel-motion-left-appear-active{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-left-leave{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-left-leave-active{transform:translateX(-100%);}.ant-drawer .ant-drawer-panel-motion-right-enter-start,.ant-drawer .ant-drawer-panel-motion-right-appear-start,.ant-drawer .ant-drawer-panel-motion-right-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-right-enter-active,.ant-drawer .ant-drawer-panel-motion-right-appear-active,.ant-drawer .ant-drawer-panel-motion-right-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-right-enter-start,.ant-drawer .ant-drawer-panel-motion-right-appear-start{transform:translateX(100%)!important;}.ant-drawer .ant-drawer-panel-motion-right-enter-active,.ant-drawer .ant-drawer-panel-motion-right-appear-active{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-right-leave{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-right-leave-active{transform:translateX(100%);}.ant-drawer .ant-drawer-panel-motion-top-enter-start,.ant-drawer .ant-drawer-panel-motion-top-appear-start,.ant-drawer .ant-drawer-panel-motion-top-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-top-enter-active,.ant-drawer .ant-drawer-panel-motion-top-appear-active,.ant-drawer .ant-drawer-panel-motion-top-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-top-enter-start,.ant-drawer .ant-drawer-panel-motion-top-appear-start{transform:translateY(-100%)!important;}.ant-drawer .ant-drawer-panel-motion-top-enter-active,.ant-drawer .ant-drawer-panel-motion-top-appear-active{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-top-leave{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-top-leave-active{transform:translateY(-100%);}.ant-drawer .ant-drawer-panel-motion-bottom-enter-start,.ant-drawer .ant-drawer-panel-motion-bottom-appear-start,.ant-drawer .ant-drawer-panel-motion-bottom-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-active,.ant-drawer .ant-drawer-panel-motion-bottom-appear-active,.ant-drawer .ant-drawer-panel-motion-bottom-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-start,.ant-drawer .ant-drawer-panel-motion-bottom-appear-start{transform:translateY(100%)!important;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-active,.ant-drawer .ant-drawer-panel-motion-bottom-appear-active{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-bottom-leave{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-bottom-leave-active{transform:translateY(100%);}[class^=\\\\\"ant-empty\\\\\"],[class*=\\\\\" ant-empty\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-empty\\\\\"]::before,[class*=\\\\\" ant-empty\\\\\"]::before,[class^=\\\\\"ant-empty\\\\\"]::after,[class*=\\\\\" ant-empty\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"],[class*=\\\\\" ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"],[class^=\\\\\"ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"],[class*=\\\\\" ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"]::before,[class*=\\\\\" ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"]::before,[class^=\\\\\"ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"]::before,[class*=\\\\\" ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"]::before,[class^=\\\\\"ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"]::after,[class*=\\\\\" ant-empty\\\\\"] [class^=\\\\\"ant-empty\\\\\"]::after,[class^=\\\\\"ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"]::after,[class*=\\\\\" ant-empty\\\\\"] [class*=\\\\\" ant-empty\\\\\"]::after{box-sizing:border-box;}.ant-empty{margin-inline:8px;font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-empty .ant-empty-image{height:100px;margin-bottom:8px;opacity:1;}.ant-empty .ant-empty-image img{height:100%;}.ant-empty .ant-empty-image svg{height:100%;margin:auto;}.ant-empty .ant-empty-footer{margin-top:16px;}.ant-empty-normal{margin-block:32px;color:rgba(255, 255, 255, 0.25);}.ant-empty-normal .ant-empty-image{height:40px;}.ant-empty-small{margin-block:8px;color:rgba(255, 255, 255, 0.25);}.ant-empty-small .ant-empty-image{height:35px;}[class^=\\\\\"ant-float-btn\\\\\"],[class*=\\\\\" ant-float-btn\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-float-btn\\\\\"]::before,[class*=\\\\\" ant-float-btn\\\\\"]::before,[class^=\\\\\"ant-float-btn\\\\\"]::after,[class*=\\\\\" ant-float-btn\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"],[class*=\\\\\" ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"],[class^=\\\\\"ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"],[class*=\\\\\" ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"]::before,[class*=\\\\\" ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"]::before,[class^=\\\\\"ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"]::before,[class*=\\\\\" ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"]::before,[class^=\\\\\"ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"]::after,[class*=\\\\\" ant-float-btn\\\\\"] [class^=\\\\\"ant-float-btn\\\\\"]::after,[class^=\\\\\"ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"]::after,[class*=\\\\\" ant-float-btn\\\\\"] [class*=\\\\\" ant-float-btn\\\\\"]::after{box-sizing:border-box;}.ant-float-btn-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';z-index:99;display:block;border:none;position:fixed;width:40px;height:auto;box-shadow:none;min-height:40px;inset-inline-end:24px;inset-block-end:48px;border-radius:8px;}.ant-float-btn-group .ant-float-btn-group-wrap{z-index:-1;display:block;position:relative;margin-bottom:16px;}.ant-float-btn-group.ant-float-btn-group-rtl{direction:rtl;}.ant-float-btn-group .ant-float-btn{position:static;}.ant-float-btn-group-circle .ant-float-btn-circle:not(:last-child){margin-bottom:16px;}.ant-float-btn-group-circle .ant-float-btn-circle:not(:last-child) .ant-float-btn-body{width:40px;height:40px;border-radius:50%;}.ant-float-btn-group-square .ant-float-btn-square{border-radius:0;padding:0;}.ant-float-btn-group-square .ant-float-btn-square:first-child{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-square:last-child{border-end-start-radius:8px;border-end-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-square:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-float-btn-group-square .ant-float-btn-square .ant-badge .ant-badge-count{top:-10px;inset-inline-end:-10px;}.ant-float-btn-group-square .ant-float-btn-group-wrap{display:block;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square{box-shadow:none;margin-top:0;border-radius:0;padding:4px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:first-child{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:last-child{border-end-start-radius:8px;border-end-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square .ant-float-btn-body{width:32px;height:32px;}.ant-float-btn-group-circle-shadow{box-shadow:none;}.ant-float-btn-group-square-shadow{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-group-square-shadow .ant-float-btn-square{box-shadow:none;padding:4px;}.ant-float-btn-group-square-shadow .ant-float-btn-square .ant-float-btn-body{width:32px;height:32px;border-radius:4px;}.ant-float-btn{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';border:none;position:fixed;cursor:pointer;z-index:99;display:block;justify-content:center;align-items:center;width:40px;height:40px;inset-inline-end:24px;inset-block-end:48px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-pure{position:relative;inset:auto;}.ant-float-btn:empty{display:none;}.ant-float-btn .ant-badge{width:100%;height:100%;}.ant-float-btn .ant-badge .ant-badge-count{transform:translate(0, 0);transform-origin:center;top:-6px;inset-inline-end:-6px;}.ant-float-btn .ant-float-btn-body{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transition:all 0.2s;}.ant-float-btn .ant-float-btn-body .ant-float-btn-content{overflow:hidden;text-align:center;min-height:40px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2px 4px;}.ant-float-btn .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{text-align:center;margin:auto;width:18px;font-size:18px;line-height:1;}.ant-float-btn-rtl{direction:rtl;}.ant-float-btn-circle{height:40px;border-radius:50%;}.ant-float-btn-circle .ant-badge .ant-badge-dot{top:5.857864376269049px;inset-inline-end:5.857864376269049px;}.ant-float-btn-circle .ant-float-btn-body{border-radius:50%;}.ant-float-btn-square{height:auto;min-height:40px;border-radius:8px;}.ant-float-btn-square .ant-badge .ant-badge-dot{top:2.3431457505076194px;inset-inline-end:2.3431457505076194px;}.ant-float-btn-square .ant-float-btn-body{height:auto;border-radius:8px;}.ant-float-btn-default{background-color:#1f1f1f;transition:background-color 0.2s;}.ant-float-btn-default .ant-float-btn-body{background-color:#1f1f1f;transition:background-color 0.2s;}.ant-float-btn-default .ant-float-btn-body:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-float-btn-default .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{color:rgba(255, 255, 255, 0.85);}.ant-float-btn-default .ant-float-btn-body .ant-float-btn-content .ant-float-btn-description{display:flex;align-items:center;line-height:16px;color:rgba(255, 255, 255, 0.85);font-size:12px;}.ant-float-btn-primary{background-color:#037003;}.ant-float-btn-primary .ant-float-btn-body{background-color:#037003;transition:background-color 0.2s;}.ant-float-btn-primary .ant-float-btn-body:hover{background-color:#198016;}.ant-float-btn-primary .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{color:#fff;}.ant-float-btn-primary .ant-float-btn-body .ant-float-btn-content .ant-float-btn-description{display:flex;align-items:center;line-height:16px;color:#fff;font-size:12px;}.ant-fade-enter,.ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-fade-leave{animation-timing-function:linear;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear{animation-duration:0.3s;animation-fill-mode:both;animation-play-state:paused;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave{animation-duration:0.3s;animation-fill-mode:both;animation-play-state:paused;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter.ant-float-btn-group-wrap-enter-active,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear.ant-float-btn-group-wrap-appear-active{animation-name:antFloatButtonMoveDownIn;animation-play-state:running;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave.ant-float-btn-group-wrap-leave-active{animation-name:antFloatButtonMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear{opacity:0;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}@keyframes antFadeIn{0%{opacity:0;}100%{opacity:1;}}@keyframes antFadeOut{0%{opacity:1;}100%{opacity:0;}}@keyframes antFloatButtonMoveDownIn{0%{transform:translate3d(0, 40px, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antFloatButtonMoveDownOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, 40px, 0);transform-origin:0 0;opacity:0;}}[class^=\\\\\"ant-tooltip\\\\\"],[class*=\\\\\" ant-tooltip\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-tooltip\\\\\"]::before,[class*=\\\\\" ant-tooltip\\\\\"]::before,[class^=\\\\\"ant-tooltip\\\\\"]::after,[class*=\\\\\" ant-tooltip\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"],[class*=\\\\\" ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"],[class^=\\\\\"ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"],[class*=\\\\\" ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"]::before,[class*=\\\\\" ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"]::before,[class^=\\\\\"ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"]::before,[class*=\\\\\" ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"]::before,[class^=\\\\\"ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"]::after,[class*=\\\\\" ant-tooltip\\\\\"] [class^=\\\\\"ant-tooltip\\\\\"]::after,[class^=\\\\\"ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"]::after,[class*=\\\\\" ant-tooltip\\\\\"] [class*=\\\\\" ant-tooltip\\\\\"]::after{box-sizing:border-box;}.ant-tooltip{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;z-index:1070;display:block;max-width:250px;visibility:visible;--antd-arrow-background-color:#424242;}.ant-tooltip{width:max-content;width:intrinsic;}.ant-tooltip-hidden{display:none;}.ant-tooltip .ant-tooltip-inner{min-width:32px;min-height:32px;padding:6px 8px;color:#fff;text-align:start;text-decoration:none;word-wrap:break-word;background-color:#424242;border-radius:6px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-tooltip-placement-left .ant-tooltip-inner,.ant-tooltip-placement-leftTop .ant-tooltip-inner,.ant-tooltip-placement-leftBottom .ant-tooltip-inner,.ant-tooltip-placement-right .ant-tooltip-inner,.ant-tooltip-placement-rightTop .ant-tooltip-inner,.ant-tooltip-placement-rightBottom .ant-tooltip-inner{border-radius:6px;}.ant-tooltip .ant-tooltip-content{position:relative;}.ant-tooltip.ant-tooltip-blue .ant-tooltip-inner{background-color:#1668dc;}.ant-tooltip.ant-tooltip-blue .ant-tooltip-arrow{--antd-arrow-background-color:#1668dc;}.ant-tooltip.ant-tooltip-purple .ant-tooltip-inner{background-color:#642ab5;}.ant-tooltip.ant-tooltip-purple .ant-tooltip-arrow{--antd-arrow-background-color:#642ab5;}.ant-tooltip.ant-tooltip-cyan .ant-tooltip-inner{background-color:#13a8a8;}.ant-tooltip.ant-tooltip-cyan .ant-tooltip-arrow{--antd-arrow-background-color:#13a8a8;}.ant-tooltip.ant-tooltip-green .ant-tooltip-inner{background-color:#49aa19;}.ant-tooltip.ant-tooltip-green .ant-tooltip-arrow{--antd-arrow-background-color:#49aa19;}.ant-tooltip.ant-tooltip-magenta .ant-tooltip-inner{background-color:#cb2b83;}.ant-tooltip.ant-tooltip-magenta .ant-tooltip-arrow{--antd-arrow-background-color:#cb2b83;}.ant-tooltip.ant-tooltip-pink .ant-tooltip-inner{background-color:#cb2b83;}.ant-tooltip.ant-tooltip-pink .ant-tooltip-arrow{--antd-arrow-background-color:#cb2b83;}.ant-tooltip.ant-tooltip-red .ant-tooltip-inner{background-color:#d32029;}.ant-tooltip.ant-tooltip-red .ant-tooltip-arrow{--antd-arrow-background-color:#d32029;}.ant-tooltip.ant-tooltip-orange .ant-tooltip-inner{background-color:#d87a16;}.ant-tooltip.ant-tooltip-orange .ant-tooltip-arrow{--antd-arrow-background-color:#d87a16;}.ant-tooltip.ant-tooltip-yellow .ant-tooltip-inner{background-color:#d8bd14;}.ant-tooltip.ant-tooltip-yellow .ant-tooltip-arrow{--antd-arrow-background-color:#d8bd14;}.ant-tooltip.ant-tooltip-volcano .ant-tooltip-inner{background-color:#d84a1b;}.ant-tooltip.ant-tooltip-volcano .ant-tooltip-arrow{--antd-arrow-background-color:#d84a1b;}.ant-tooltip.ant-tooltip-geekblue .ant-tooltip-inner{background-color:#2b4acb;}.ant-tooltip.ant-tooltip-geekblue .ant-tooltip-arrow{--antd-arrow-background-color:#2b4acb;}.ant-tooltip.ant-tooltip-lime .ant-tooltip-inner{background-color:#8bbb11;}.ant-tooltip.ant-tooltip-lime .ant-tooltip-arrow{--antd-arrow-background-color:#8bbb11;}.ant-tooltip.ant-tooltip-gold .ant-tooltip-inner{background-color:#d89614;}.ant-tooltip.ant-tooltip-gold .ant-tooltip-arrow{--antd-arrow-background-color:#d89614;}.ant-tooltip-rtl{direction:rtl;}.ant-tooltip .ant-tooltip-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-tooltip .ant-tooltip-arrow::after{content:\\\\\"\\\\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-tooltip .ant-tooltip-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:var(--antd-arrow-background-color);clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\\\\"\\\\\";}.ant-tooltip .ant-tooltip-arrow:before{background:var(--antd-arrow-background-color);}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:0;transform:translateY(100%) rotate(180deg);}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:6px;}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:6px;}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:0;transform:translateY(-100%);}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;transform:translateX(-50%) translateY(-100%);}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:6px;}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:6px;}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{right:0;transform:translateX(100%) rotate(90deg);}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;transform:translateY(-50%) translateX(100%) rotate(90deg);}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:2px;}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:2px;}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{left:0;transform:translateX(-100%) rotate(-90deg);}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;transform:translateY(-50%) translateX(-100%) rotate(-90deg);}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:2px;}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:2px;}.ant-tooltip-placement-topLeft,.ant-tooltip-placement-top,.ant-tooltip-placement-topRight{padding-bottom:12px;}.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomRight{padding-top:12px;}.ant-tooltip-placement-leftTop,.ant-tooltip-placement-left,.ant-tooltip-placement-leftBottom{padding-right:12px;}.ant-tooltip-placement-rightTop,.ant-tooltip-placement-right,.ant-tooltip-placement-rightBottom{padding-left:12px;}.ant-tooltip-pure{position:relative;max-width:none;}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{animation-duration:0.1s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-fast-leave{animation-duration:0.1s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active,.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-fast-enter-prepare,.ant-zoom-big-fast-appear-prepare{transform:none;}.ant-zoom-big-fast-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\\\\"ant-form\\\\\"],[class*=\\\\\" ant-form\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-form\\\\\"]::before,[class*=\\\\\" ant-form\\\\\"]::before,[class^=\\\\\"ant-form\\\\\"]::after,[class*=\\\\\" ant-form\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"],[class*=\\\\\" ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"],[class^=\\\\\"ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"],[class*=\\\\\" ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"]::before,[class*=\\\\\" ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"]::before,[class^=\\\\\"ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"]::before,[class*=\\\\\" ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"]::before,[class^=\\\\\"ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"]::after,[class*=\\\\\" ant-form\\\\\"] [class^=\\\\\"ant-form\\\\\"]::after,[class^=\\\\\"ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"]::after,[class*=\\\\\" ant-form\\\\\"] [class*=\\\\\" ant-form\\\\\"]::after{box-sizing:border-box;}.ant-form{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-form legend{display:block;width:100%;margin-bottom:24px;padding:0;color:rgba(255, 255, 255, 0.45);font-size:16px;line-height:inherit;border:0;border-bottom:1px solid #424242;}.ant-form label{font-size:14px;}.ant-form input[type=\\\\\"search\\\\\"]{box-sizing:border-box;}.ant-form input[type=\\\\\"radio\\\\\"],.ant-form input[type=\\\\\"checkbox\\\\\"]{line-height:normal;}.ant-form input[type=\\\\\"file\\\\\"]{display:block;}.ant-form input[type=\\\\\"range\\\\\"]{display:block;width:100%;}.ant-form select[multiple],.ant-form select[size]{height:auto;}.ant-form input[type='file']:focus,.ant-form input[type='radio']:focus,.ant-form input[type='checkbox']:focus{outline:0;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);}.ant-form output{display:block;padding-top:15px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;}.ant-form .ant-form-text{display:inline-block;padding-inline-end:12px;}.ant-form-small .ant-form-item .ant-form-item-label>label{height:24px;}.ant-form-small .ant-form-item .ant-form-item-control-input{min-height:24px;}.ant-form-large .ant-form-item .ant-form-item-label>label{height:40px;}.ant-form-large .ant-form-item .ant-form-item-control-input{min-height:40px;}.ant-form-item{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';margin-bottom:24px;vertical-align:top;}.ant-form-item-with-help{transition:none;}.ant-form-item-hidden,.ant-form-item-hidden.ant-row{display:none;}.ant-form-item-has-warning .ant-form-item-split{color:#dc4446;}.ant-form-item-has-error .ant-form-item-split{color:#d89614;}.ant-form-item .ant-form-item-label{display:inline-block;flex-grow:0;overflow:hidden;white-space:nowrap;text-align:end;vertical-align:middle;}.ant-form-item .ant-form-item-label-left{text-align:start;}.ant-form-item .ant-form-item-label-wrap{overflow:unset;line-height:1.5714285714285714 - 0.25em;white-space:unset;}.ant-form-item .ant-form-item-label >label{position:relative;display:inline-flex;align-items:center;max-width:100%;height:32px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-form-item .ant-form-item-label >label >.anticon{font-size:14px;vertical-align:top;}.ant-form-item .ant-form-item-label >label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{display:inline-block;margin-inline-end:4px;color:#dc4446;font-size:14px;font-family:SimSun,sans-serif;line-height:1;content:\\\\\"*\\\\\";}.ant-form-hide-required-mark .ant-form-item .ant-form-item-label >label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{display:none;}.ant-form-item .ant-form-item-label >label .ant-form-item-optional{display:inline-block;margin-inline-start:4px;color:rgba(255, 255, 255, 0.45);}.ant-form-hide-required-mark .ant-form-item .ant-form-item-label >label .ant-form-item-optional{display:none;}.ant-form-item .ant-form-item-label >label .ant-form-item-tooltip{color:rgba(255, 255, 255, 0.45);cursor:help;writing-mode:horizontal-tb;margin-inline-start:4px;}.ant-form-item .ant-form-item-label >label::after{content:\\\\\":\\\\\";position:relative;margin-block:0;margin-inline-start:2px;margin-inline-end:8px;}.ant-form-item .ant-form-item-label >label.ant-form-item-no-colon::after{content:\\\\\" \\\\\";}.ant-form-item .ant-form-item-control{display:flex;flex-direction:column;flex-grow:1;}.ant-form-item .ant-form-item-control:first-child:not([class^=\\\\\"'ant-col-'\\\\\"]):not([class*=\\\\\"' ant-col-'\\\\\"]){width:100%;}.ant-form-item .ant-form-item-control-input{position:relative;display:flex;align-items:center;min-height:32px;}.ant-form-item .ant-form-item-control-input-content{flex:auto;max-width:100%;}.ant-form-item .ant-form-item-explain,.ant-form-item .ant-form-item-extra{clear:both;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;}.ant-form-item .ant-form-item-explain-connected{width:100%;}.ant-form-item .ant-form-item-extra{min-height:24px;transition:color 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);}.ant-form-item .ant-form-item-explain-error{color:#dc4446;}.ant-form-item .ant-form-item-explain-warning{color:#d89614;}.ant-form-item-with-help .ant-form-item-explain{height:auto;opacity:1;}.ant-form-item .ant-form-item-feedback-icon{font-size:14px;text-align:center;visibility:visible;animation-name:antZoomIn;animation-duration:0.2s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);pointer-events:none;}.ant-form-item .ant-form-item-feedback-icon-success{color:#49aa19;}.ant-form-item .ant-form-item-feedback-icon-error{color:#dc4446;}.ant-form-item .ant-form-item-feedback-icon-warning{color:#d89614;}.ant-form-item .ant-form-item-feedback-icon-validating{color:#037003;}.ant-form-show-help{transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-form-show-help-appear,.ant-form-show-help-enter{opacity:0;}.ant-form-show-help-appear-active,.ant-form-show-help-enter-active{opacity:1;}.ant-form-show-help-leave{opacity:1;}.ant-form-show-help-leave-active{opacity:0;}.ant-form-show-help .ant-form-show-help-item{overflow:hidden;transition:height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-appear,.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-enter{transform:translateY(-5px);opacity:0;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-appear-active,.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-enter-active{transform:translateY(0);opacity:1;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-leave-active{transform:translateY(-5px);}.ant-form-horizontal .ant-form-item-label{flex-grow:0;}.ant-form-horizontal .ant-form-item-control{flex:1 1 0;min-width:0;}.ant-form-horizontal .ant-form-item-label.ant-col-24+.ant-form-item-control{min-width:unset;}.ant-form-inline{display:flex;flex-wrap:wrap;}.ant-form-inline .ant-form-item{flex:none;flex-wrap:nowrap;margin-inline-end:16px;margin-bottom:0;}.ant-form-inline .ant-form-item-with-help{margin-bottom:24px;}.ant-form-inline .ant-form-item >.ant-form-item-label,.ant-form-inline .ant-form-item >.ant-form-item-control{display:inline-block;vertical-align:top;}.ant-form-inline .ant-form-item >.ant-form-item-label{flex:none;}.ant-form-inline .ant-form-item .ant-form-text{display:inline-block;}.ant-form-inline .ant-form-item .ant-form-item-has-feedback{display:inline-block;}.ant-form-vertical .ant-form-item-row{flex-direction:column;}.ant-form-vertical .ant-form-item-label>label{height:auto;}.ant-form-vertical .ant-form-item .ant-form-item-control{width:100%;}.ant-form-vertical .ant-form-item-label,.ant-col-24.ant-form-item-label,.ant-col-xl-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form-vertical .ant-form-item-label >label,.ant-col-24.ant-form-item-label >label,.ant-col-xl-24.ant-form-item-label >label{margin:0;}.ant-form-vertical .ant-form-item-label >label::after,.ant-col-24.ant-form-item-label >label::after,.ant-col-xl-24.ant-form-item-label >label::after{display:none;}@media (max-width: 575px){.ant-form-item .ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form-item .ant-form-item-label >label{margin:0;}.ant-form-item .ant-form-item-label >label::after{display:none;}.ant-form .ant-form-item{flex-wrap:wrap;}.ant-form .ant-form-item .ant-form-item-label,.ant-form .ant-form-item .ant-form-item-control{flex:0 0 100%;max-width:100%;}.ant-form .ant-col-xs-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-xs-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-xs-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 767px){.ant-form .ant-col-sm-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-sm-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-sm-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 991px){.ant-form .ant-col-md-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-md-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-md-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 1199px){.ant-form .ant-col-lg-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-lg-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-lg-24.ant-form-item-label >label::after{display:none;}}.ant-form .ant-motion-collapse-legacy{overflow:hidden;}.ant-form .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-form .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes antZoomIn{0%{transform:scale(0.2);opacity:0;}100%{transform:scale(1);opacity:1;}}[class^=\\\\\"ant-row\\\\\"],[class*=\\\\\" ant-row\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-row\\\\\"]::before,[class*=\\\\\" ant-row\\\\\"]::before,[class^=\\\\\"ant-row\\\\\"]::after,[class*=\\\\\" ant-row\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"],[class*=\\\\\" ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"],[class^=\\\\\"ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"],[class*=\\\\\" ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"]::before,[class*=\\\\\" ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"]::before,[class^=\\\\\"ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"]::before,[class*=\\\\\" ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"]::before,[class^=\\\\\"ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"]::after,[class*=\\\\\" ant-row\\\\\"] [class^=\\\\\"ant-row\\\\\"]::after,[class^=\\\\\"ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"]::after,[class*=\\\\\" ant-row\\\\\"] [class*=\\\\\" ant-row\\\\\"]::after{box-sizing:border-box;}.ant-row{display:flex;flex-flow:row wrap;min-width:0;}.ant-row::before,.ant-row::after{display:flex;}.ant-row-no-wrap{flex-wrap:nowrap;}.ant-row-start{justify-content:flex-start;}.ant-row-center{justify-content:center;}.ant-row-end{justify-content:flex-end;}.ant-row-space-between{justify-content:space-between;}.ant-row-space-around{justify-content:space-around;}.ant-row-top{align-items:flex-start;}.ant-row-middle{align-items:center;}.ant-row-bottom{align-items:flex-end;}[class^=\\\\\"ant-input\\\\\"],[class*=\\\\\" ant-input\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-input\\\\\"]::before,[class*=\\\\\" ant-input\\\\\"]::before,[class^=\\\\\"ant-input\\\\\"]::after,[class*=\\\\\" ant-input\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"],[class*=\\\\\" ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"],[class^=\\\\\"ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"],[class*=\\\\\" ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"]::before,[class*=\\\\\" ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"]::before,[class^=\\\\\"ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"]::before,[class*=\\\\\" ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"]::before,[class^=\\\\\"ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"]::after,[class*=\\\\\" ant-input\\\\\"] [class^=\\\\\"ant-input\\\\\"]::after,[class^=\\\\\"ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"]::after,[class*=\\\\\" ant-input\\\\\"] [class*=\\\\\" ant-input\\\\\"]::after{box-sizing:border-box;}.ant-input{box-sizing:border-box;margin:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:100%;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;}.ant-input::-moz-placeholder{opacity:1;}.ant-input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input:placeholder-shown{text-overflow:ellipsis;}.ant-input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input:focus,.ant-input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-disabled,.ant-input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-disabled:hover,.ant-input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-borderless,.ant-input-borderless:hover,.ant-input-borderless:focus,.ant-input-borderless-focused,.ant-input-borderless-disabled,.ant-input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-sm{padding:0px 7px;border-radius:4px;}.ant-input-rtl{direction:rtl;}.ant-input-textarea-rtl{direction:rtl;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input{border-color:#dc4446;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{border-color:#7e2e2f;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input .ant-input-prefix{color:#dc4446;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input{border-color:#d89614;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{border-color:#7c5914;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input .ant-input-prefix{color:#d89614;}.ant-input[type=\\\\\"color\\\\\"]{height:32px;}.ant-input[type=\\\\\"color\\\\\"].ant-input-lg{height:40px;}.ant-input[type=\\\\\"color\\\\\"].ant-input-sm{height:24px;padding-top:3px;padding-bottom:3px;}.ant-input-textarea{position:relative;}.ant-input-textarea .ant-input-textarea-suffix{position:absolute;top:0;inset-inline-end:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto;}.ant-input-textarea-status-error.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-warning.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-success.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-validating.ant-input-textarea-has-feedback .ant-input{padding-inline-end:24px;}.ant-input-textarea-show-count >.ant-input{height:100%;}.ant-input-textarea-show-count::after{color:rgba(255, 255, 255, 0.45);white-space:nowrap;content:attr(data-count);pointer-events:none;float:right;}.ant-input-textarea-rtl::after{float:left;}.ant-input-affix-wrapper{position:relative;display:inline-flex;width:100%;min-width:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;}.ant-input-affix-wrapper::-moz-placeholder{opacity:1;}.ant-input-affix-wrapper::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-affix-wrapper:placeholder-shown{text-overflow:ellipsis;}.ant-input-affix-wrapper:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-disabled,.ant-input-affix-wrapper[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-affix-wrapper-disabled:hover,.ant-input-affix-wrapper[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-affix-wrapper-borderless,.ant-input-affix-wrapper-borderless:hover,.ant-input-affix-wrapper-borderless:focus,.ant-input-affix-wrapper-borderless-focused,.ant-input-affix-wrapper-borderless-disabled,.ant-input-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-affix-wrapper-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-affix-wrapper-sm{padding:0px 7px;border-radius:4px;}.ant-input-affix-wrapper-rtl{direction:rtl;}.ant-input-affix-wrapper-textarea-rtl{direction:rtl;}.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-color:#198016;border-inline-end-width:1px;z-index:1;}.ant-input-search-with-button .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{z-index:0;}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus{z-index:1;}.ant-input-affix-wrapper-disabled .ant-input[disabled]{background:transparent;}.ant-input-affix-wrapper >input.ant-input{padding:0;font-size:inherit;border:none;border-radius:0;outline:none;}.ant-input-affix-wrapper >input.ant-input:focus{box-shadow:none!important;}.ant-input-affix-wrapper::before{width:0;visibility:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-input-affix-wrapper .ant-input-prefix,.ant-input-affix-wrapper .ant-input-suffix{display:flex;flex:none;align-items:center;}.ant-input-affix-wrapper .ant-input-prefix >*:not(:last-child),.ant-input-affix-wrapper .ant-input-suffix >*:not(:last-child){margin-inline-end:8px;}.ant-input-affix-wrapper .ant-input-show-count-suffix{color:rgba(255, 255, 255, 0.45);}.ant-input-affix-wrapper .ant-input-show-count-has-suffix{margin-inline-end:4px;}.ant-input-affix-wrapper .ant-input-prefix{margin-inline-end:4px;}.ant-input-affix-wrapper .ant-input-suffix{margin-inline-start:4px;}.ant-input-affix-wrapper .ant-input-clear-icon{margin:0;color:rgba(255, 255, 255, 0.25);font-size:12px;vertical-align:-1px;cursor:pointer;transition:color 0.3s;}.ant-input-affix-wrapper .ant-input-clear-icon:hover{color:rgba(255, 255, 255, 0.45);}.ant-input-affix-wrapper .ant-input-clear-icon:active{color:rgba(255, 255, 255, 0.85);}.ant-input-affix-wrapper .ant-input-clear-icon-hidden{visibility:hidden;}.ant-input-affix-wrapper .ant-input-clear-icon-has-suffix{margin:0 4px;}.ant-input-affix-wrapper-textarea-with-clear-btn{padding:0!important;border:0!important;}.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input-clear-icon{position:absolute;inset-block-start:8px;inset-inline-end:8px;z-index:1;}.ant-input-affix-wrapper .anticon.ant-input-password-icon{color:rgba(255, 255, 255, 0.45);cursor:pointer;transition:all 0.3s;}.ant-input-affix-wrapper .anticon.ant-input-password-icon:hover{color:rgba(255, 255, 255, 0.85);}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper{border-color:#dc4446;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{border-color:#7e2e2f;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper .ant-input-prefix{color:#dc4446;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper{border-color:#d89614;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{border-color:#7c5914;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper .ant-input-prefix{color:#d89614;}.ant-input-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0;}.ant-input-group[class*='col-']{padding-inline-end:8px;}.ant-input-group[class*='col-']:last-child{padding-inline-end:0;}.ant-input-group-lg .ant-input,.ant-input-group-lg>.ant-input-group-addon{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-group-sm .ant-input,.ant-input-group-sm>.ant-input-group-addon{padding:0px 7px;border-radius:4px;}.ant-input-group >.ant-input{display:table-cell;}.ant-input-group >.ant-input:not(:first-child):not(:last-child){border-radius:0;}.ant-input-group .ant-input-group-addon,.ant-input-group .ant-input-group-wrap{display:table-cell;width:1px;white-space:nowrap;vertical-align:middle;}.ant-input-group .ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group .ant-input-group-wrap:not(:first-child):not(:last-child){border-radius:0;}.ant-input-group .ant-input-group-wrap>*{display:block!important;}.ant-input-group .ant-input-group-addon{position:relative;padding:0 11px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;text-align:center;background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:6px;transition:all 0.3s;line-height:1;}.ant-input-group .ant-input-group-addon .ant-select{margin:-5px -11px;}.ant-input-group .ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none;}.ant-input-group .ant-input-group-addon .ant-select-open .ant-select-selector,.ant-input-group .ant-input-group-addon .ant-select-focused .ant-select-selector{color:#037003;}.ant-input-group .ant-input-group-addon .ant-cascader-picker{margin:-9px -11px;background-color:transparent;}.ant-input-group .ant-input-group-addon .ant-cascader-picker .ant-cascader-input{text-align:start;border:0;box-shadow:none;}.ant-input-group .ant-input-group-addon:first-child{border-inline-end:0;}.ant-input-group .ant-input-group-addon:last-child{border-inline-start:0;}.ant-input-group .ant-input{float:inline-start;width:100%;margin-bottom:0;text-align:inherit;}.ant-input-group .ant-input:focus{z-index:1;border-inline-end-width:1px;}.ant-input-group .ant-input:hover{z-index:1;border-inline-end-width:1px;}.ant-input-search-with-button .ant-input-group .ant-input:hover{z-index:0;}.ant-input-group >.ant-input:first-child,.ant-input-group .ant-input-group-addon:first-child{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input:first-child .ant-select .ant-select-selector,.ant-input-group .ant-input-group-addon:first-child .ant-select .ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input-affix-wrapper:not(:first-child) .ant-input{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group >.ant-input-affix-wrapper:not(:last-child) .ant-input{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input:last-child,.ant-input-group .ant-input-group-addon:last-child{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group >.ant-input:last-child .ant-select .ant-select-selector,.ant-input-group .ant-input-group-addon:last-child .ant-select .ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-start-end-radius:0;border-end-end-radius:0;}.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child){border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-group .ant-input-affix-wrapper:not(:first-child),.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group.ant-input-group-compact{display:block;}.ant-input-group.ant-input-group-compact::before{display:table;content:\\\\\"\\\\\";}.ant-input-group.ant-input-group-compact::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child){border-inline-end-width:1px;}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child):hover{z-index:1;}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child):focus{z-index:1;}.ant-input-group.ant-input-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0;}.ant-input-group.ant-input-group-compact>.ant-input-affix-wrapper{display:inline-flex;}.ant-input-group.ant-input-group-compact>.ant-picker-range{display:inline-flex;}.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-inline-end:-1px;border-inline-end-width:1px;}.ant-input-group.ant-input-group-compact .ant-input{float:none;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input{border-inline-end-width:1px;border-radius:0;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select-focused{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-arrow{z-index:1;}.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-inline-end-width:1px;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-inline-start:-1px;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-input-group.ant-input-group-sm .ant-btn{font-size:12px;height:24px;line-height:normal;}.ant-input-group.ant-input-group-lg .ant-btn{font-size:16px;height:40px;line-height:normal;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector{height:40px;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:40px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector{height:24px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:24px;}.ant-input-group-rtl{direction:rtl;}.ant-input-group-wrapper{display:inline-block;width:100%;text-align:start;vertical-align:top;}.ant-input-group-wrapper-rtl{direction:rtl;}.ant-input-group-wrapper-lg .ant-input-group-addon{border-radius:8px;}.ant-input-group-wrapper-sm .ant-input-group-addon{border-radius:4px;}.ant-input-group-wrapper-status-error .ant-input-group-addon{color:#dc4446;border-color:#dc4446;}.ant-input-group-wrapper-status-warning .ant-input-group-addon:last-child{color:#49aa19;border-color:#49aa19;}.ant-input-search .ant-input:hover,.ant-input-search .ant-input:focus{border-color:#198016;}.ant-input-search .ant-input:hover +.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search .ant-input:focus +.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-inline-start-color:#198016;}.ant-input-search .ant-input-affix-wrapper{border-radius:0;}.ant-input-search .ant-input-lg{line-height:1.4998;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child{inset-inline-start:-1px;padding:0;border:0;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button{padding-top:0;padding-bottom:0;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary){color:rgba(255, 255, 255, 0.45);}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary):hover{color:#198016;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary):active{color:#075a07;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary).ant-btn-loading::before{inset-inline-start:0;inset-inline-end:0;inset-block-start:0;inset-block-end:0;}.ant-input-search .ant-input-search-button{height:32px;}.ant-input-search .ant-input-search-button:hover,.ant-input-search .ant-input-search-button:focus{z-index:1;}.ant-input-search-large .ant-input-search-button{height:40px;}.ant-input-search-small .ant-input-search-button{height:24px;}.ant-input-search-rtl{direction:rtl;}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-last-item) .ant-input-group-addon .ant-input-search-button{margin-inline-end:-1px;border-radius:0;}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input,.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input-affix-wrapper{border-radius:0;}.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:hover,.ant-input-search.ant-input-compact-item >.ant-input:hover,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:hover,.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:focus,.ant-input-search.ant-input-compact-item >.ant-input:focus,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:focus,.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:active,.ant-input-search.ant-input-compact-item >.ant-input:active,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:active{z-index:2;}.ant-input-search.ant-input-compact-item >.ant-input-affix-wrapper-focused{z-index:2;}.ant-input-compact-item:not(.ant-input-compact-last-item){margin-inline-end:-1px;}.ant-input-compact-item:hover,.ant-input-compact-item:focus,.ant-input-compact-item:active{z-index:2;}.ant-input-compact-item[disabled]{z-index:0;}.ant-input-compact-item:not(.ant-input-compact-first-item):not(.ant-input-compact-last-item){border-radius:0;}.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item,.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item.ant-input-sm,.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item.ant-input-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item,.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item.ant-input-sm,.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item.ant-input-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\\\\"ant-image\\\\\"],[class*=\\\\\" ant-image\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-image\\\\\"]::before,[class*=\\\\\" ant-image\\\\\"]::before,[class^=\\\\\"ant-image\\\\\"]::after,[class*=\\\\\" ant-image\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"],[class*=\\\\\" ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"],[class^=\\\\\"ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"],[class*=\\\\\" ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"]::before,[class*=\\\\\" ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"]::before,[class^=\\\\\"ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"]::before,[class*=\\\\\" ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"]::before,[class^=\\\\\"ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"]::after,[class*=\\\\\" ant-image\\\\\"] [class^=\\\\\"ant-image\\\\\"]::after,[class^=\\\\\"ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"]::after,[class*=\\\\\" ant-image\\\\\"] [class*=\\\\\" ant-image\\\\\"]::after{box-sizing:border-box;}.ant-image{position:relative;display:inline-block;}.ant-image .ant-image-img{width:100%;height:auto;vertical-align:middle;}.ant-image .ant-image-img-placeholder{background-color:rgba(255, 255, 255, 0.08);background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=');background-repeat:no-repeat;background-position:center center;background-size:30%;}.ant-image .ant-image-mask{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0, 0, 0, 0.5);cursor:pointer;opacity:0;transition:opacity 0.3s;}.ant-image .ant-image-mask .ant-image-mask-info{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 4px;}.ant-image .ant-image-mask .ant-image-mask-info .anticon{margin-inline-end:4px;}.ant-image .ant-image-mask .ant-image-mask-info .anticon svg{vertical-align:baseline;}.ant-image .ant-image-mask:hover{opacity:1;}.ant-image .ant-image-placeholder{position:absolute;inset:0;}.ant-image-preview-root .ant-image-preview{height:100%;text-align:center;pointer-events:none;}.ant-image-preview-root .ant-image-preview-body{position:absolute;inset:0;overflow:hidden;}.ant-image-preview-root .ant-image-preview-img{max-width:100%;max-height:100%;vertical-align:middle;transform:scale3d(1, 1, 1);cursor:grab;transition:transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;user-select:none;pointer-events:auto;}.ant-image-preview-root .ant-image-preview-img-wrapper{position:absolute;inset:0;transition:transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;display:flex;justify-content:center;align-items:center;}.ant-image-preview-root .ant-image-preview-img-wrapper::before{display:inline-block;width:1px;height:50%;margin-inline-end:-1px;content:\\\\\"\\\\\";}.ant-image-preview-root .ant-image-preview-moving .ant-image-preview-preview-img{cursor:grabbing;}.ant-image-preview-root .ant-image-preview-moving .ant-image-preview-preview-img-wrapper{transition-duration:0s;}.ant-image-preview-root .ant-image-preview-wrap{z-index:1080;}.ant-image-preview-operations-wrapper{position:fixed;inset-block-start:0;inset-inline-end:0;z-index:1081;width:100%;}.ant-image-preview-operations{box-sizing:border-box;margin:0;padding:0;color:rgb(255, 255, 255);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;flex-direction:row-reverse;align-items:center;background:rgba(0, 0, 0, 0.1);pointer-events:auto;}.ant-image-preview-operations-operation{margin-inline-start:12px;padding:12px;cursor:pointer;transition:all 0.3s;user-select:none;}.ant-image-preview-operations-operation:hover{background:rgba(0, 0, 0, 0.2);}.ant-image-preview-operations-operation-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-image-preview-operations-operation:last-of-type{margin-inline-start:0;}.ant-image-preview-operations-progress{position:absolute;left:50%;transform:translateX(-50%);}.ant-image-preview-operations-icon{font-size:18px;}.ant-image-preview-switch-left,.ant-image-preview-switch-right{position:fixed;inset-block-start:50%;z-index:1081;display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-top:-20px;color:rgb(255, 255, 255);background:rgba(0, 0, 0, 0.1);border-radius:50%;transform:translateY(-50%);cursor:pointer;transition:all 0.3s;pointer-events:auto;user-select:none;}.ant-image-preview-switch-left:hover,.ant-image-preview-switch-right:hover{background:rgba(0, 0, 0, 0.2);}.ant-image-preview-switch-left-disabled,.ant-image-preview-switch-right-disabled,.ant-image-preview-switch-left-disabled:hover,.ant-image-preview-switch-right-disabled:hover{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-image-preview-switch-left-disabled >.anticon,.ant-image-preview-switch-right-disabled >.anticon,.ant-image-preview-switch-left-disabled:hover >.anticon,.ant-image-preview-switch-right-disabled:hover >.anticon{cursor:not-allowed;}.ant-image-preview-switch-left >.anticon,.ant-image-preview-switch-right >.anticon{font-size:18px;}.ant-image-preview-switch-left{inset-inline-start:12px;}.ant-image-preview-switch-right{inset-inline-end:12px;}.ant-image-preview-root .ant-image-preview.ant-zoom-enter,.ant-image-preview-root .ant-image-preview.ant-zoom-appear{transform:none;opacity:0;animation-duration:0.3s;user-select:none;}.ant-image-preview-root .ant-image-preview.ant-zoom-leave .ant-image-preview-content{pointer-events:none;}.ant-image-preview-root .ant-image-preview-mask{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1000;height:100%;background-color:rgba(0, 0, 0, 0.45);}.ant-image-preview-root .ant-image-preview-mask .ant-image-preview-hidden{display:none;}.ant-image-preview-root .ant-image-preview-wrap{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-image-preview-root .ant-fade-enter,.ant-image-preview-root .ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-fade-enter.ant-fade-enter-active,.ant-image-preview-root .ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-image-preview-root .ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-image-preview-root .ant-fade-enter,.ant-image-preview-root .ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-image-preview-root .ant-fade-leave{animation-timing-function:linear;}.ant-image-preview-root .ant-zoom-enter,.ant-image-preview-root .ant-zoom-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-zoom-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-zoom-enter.ant-zoom-enter-active,.ant-image-preview-root .ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running;}.ant-image-preview-root .ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none;}.ant-image-preview-root .ant-zoom-enter,.ant-image-preview-root .ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-image-preview-root .ant-zoom-enter-prepare,.ant-image-preview-root .ant-zoom-appear-prepare{transform:none;}.ant-image-preview-root .ant-zoom-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-fade-enter,.ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-fade-leave{animation-timing-function:linear;}@keyframes antZoomOut{0%{transform:scale(1);}100%{transform:scale(0.2);opacity:0;}}[class^=\\\\\"ant-input-number\\\\\"],[class*=\\\\\" ant-input-number\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-input-number\\\\\"]::before,[class*=\\\\\" ant-input-number\\\\\"]::before,[class^=\\\\\"ant-input-number\\\\\"]::after,[class*=\\\\\" ant-input-number\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"],[class*=\\\\\" ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"],[class^=\\\\\"ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"],[class*=\\\\\" ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"]::before,[class*=\\\\\" ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"]::before,[class^=\\\\\"ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"]::before,[class*=\\\\\" ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"]::before,[class^=\\\\\"ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"]::after,[class*=\\\\\" ant-input-number\\\\\"] [class^=\\\\\"ant-input-number\\\\\"]::after,[class^=\\\\\"ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"]::after,[class*=\\\\\" ant-input-number\\\\\"] [class*=\\\\\" ant-input-number\\\\\"]::after{box-sizing:border-box;}.ant-input-number{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:90px;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;border:1px solid #424242;}.ant-input-number::-moz-placeholder{opacity:1;}.ant-input-number::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number:placeholder-shown{text-overflow:ellipsis;}.ant-input-number:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-number:focus,.ant-input-number-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-disabled,.ant-input-number[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-disabled:hover,.ant-input-number[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-borderless,.ant-input-number-borderless:hover,.ant-input-number-borderless:focus,.ant-input-number-borderless-focused,.ant-input-number-borderless-disabled,.ant-input-number-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-number-lg{padding:0;font-size:16px;border-radius:8px;}.ant-input-number-lg input.ant-input-number-input{height:38px;}.ant-input-number-sm{padding:0;border-radius:4px;}.ant-input-number-sm input.ant-input-number-input{height:22px;padding:0 7px;}.ant-input-number-rtl{direction:rtl;}.ant-input-number-rtl .ant-input-number-input{direction:rtl;}.ant-input-number-textarea-rtl{direction:rtl;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number{border-color:#dc4446;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{border-color:#7e2e2f;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number .ant-input-number-prefix{color:#dc4446;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number{border-color:#d89614;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{border-color:#7c5914;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number .ant-input-number-prefix{color:#d89614;}.ant-input-number-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-disabled{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-disabled:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-disabled .ant-input-number-input{cursor:not-allowed;}.ant-input-number-out-of-range input{color:#dc4446;}.ant-input-number-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0;}.ant-input-number-group[class*='col-']{padding-inline-end:8px;}.ant-input-number-group[class*='col-']:last-child{padding-inline-end:0;}.ant-input-number-group-lg .ant-input-number,.ant-input-number-group-lg>.ant-input-number-group-addon{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-number-group-sm .ant-input-number,.ant-input-number-group-sm>.ant-input-number-group-addon{padding:0px 7px;border-radius:4px;}.ant-input-number-group >.ant-input-number{display:table-cell;}.ant-input-number-group >.ant-input-number:not(:first-child):not(:last-child){border-radius:0;}.ant-input-number-group .ant-input-number-group-addon,.ant-input-number-group .ant-input-number-group-wrap{display:table-cell;width:1px;white-space:nowrap;vertical-align:middle;}.ant-input-number-group .ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group .ant-input-number-group-wrap:not(:first-child):not(:last-child){border-radius:0;}.ant-input-number-group .ant-input-number-group-wrap>*{display:block!important;}.ant-input-number-group .ant-input-number-group-addon{position:relative;padding:0 11px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;text-align:center;background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:6px;transition:all 0.3s;line-height:1;}.ant-input-number-group .ant-input-number-group-addon .ant-select{margin:-5px -11px;}.ant-input-number-group .ant-input-number-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none;}.ant-input-number-group .ant-input-number-group-addon .ant-select-open .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon .ant-select-focused .ant-select-selector{color:#037003;}.ant-input-number-group .ant-input-number-group-addon .ant-cascader-picker{margin:-9px -11px;background-color:transparent;}.ant-input-number-group .ant-input-number-group-addon .ant-cascader-picker .ant-cascader-input{text-align:start;border:0;box-shadow:none;}.ant-input-number-group .ant-input-number-group-addon:first-child{border-inline-end:0;}.ant-input-number-group .ant-input-number-group-addon:last-child{border-inline-start:0;}.ant-input-number-group .ant-input-number{float:inline-start;width:100%;margin-bottom:0;text-align:inherit;}.ant-input-number-group .ant-input-number:focus{z-index:1;border-inline-end-width:1px;}.ant-input-number-group .ant-input-number:hover{z-index:1;border-inline-end-width:1px;}.ant-input-number-search-with-button .ant-input-number-group .ant-input-number:hover{z-index:0;}.ant-input-number-group >.ant-input-number:first-child,.ant-input-number-group .ant-input-number-group-addon:first-child{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number:first-child .ant-select .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon:first-child .ant-select .ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number-affix-wrapper:not(:first-child) .ant-input-number{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group >.ant-input-number-affix-wrapper:not(:last-child) .ant-input-number{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number:last-child,.ant-input-number-group .ant-input-number-group-addon:last-child{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group >.ant-input-number:last-child .ant-select .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon:last-child .ant-select .ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child),.ant-input-number-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group.ant-input-number-group-compact{display:block;}.ant-input-number-group.ant-input-number-group-compact::before{display:table;content:\\\\\"\\\\\";}.ant-input-number-group.ant-input-number-group-compact::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child){border-inline-end-width:1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child):hover{z-index:1;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child):focus{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0;}.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-affix-wrapper{display:inline-flex;}.ant-input-number-group.ant-input-number-group-compact>.ant-picker-range{display:inline-flex;}.ant-input-number-group.ant-input-number-group-compact>*:not(:last-child){margin-inline-end:-1px;border-inline-end-width:1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number{float:none;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number{border-inline-end-width:1px;border-radius:0;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number:hover{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number:focus{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select-focused{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-arrow{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>*:first-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete:first-child .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:first-child .ant-input-number{border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-number-group.ant-input-number-group-compact>*:last-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:last-child .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker-focused:last-child .ant-input-number{border-inline-end-width:1px;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number{vertical-align:top;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper+.ant-input-number-group-wrapper{margin-inline-start:-1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper+.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{border-radius:0;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper:not(:last-child).ant-input-number-search>.ant-input-number-group>.ant-input-number-group-addon>.ant-input-number-search-button{border-radius:0;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper:not(:last-child).ant-input-number-search>.ant-input-number-group>.ant-input-number{border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-input-number-group.ant-input-number-group-sm .ant-btn{font-size:12px;height:24px;line-height:normal;}.ant-input-number-group.ant-input-number-group-lg .ant-btn{font-size:16px;height:40px;line-height:normal;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector{height:40px;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:40px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector{height:24px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:24px;}.ant-input-number-group-wrapper{display:inline-block;text-align:start;vertical-align:top;}.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{width:100%;}.ant-input-number-group-wrapper-lg .ant-input-number-group-addon{border-radius:8px;}.ant-input-number-group-wrapper-sm .ant-input-number-group-addon{border-radius:4px;}.ant-input-number .ant-input-number-input{width:100%;height:30px;padding:0 11px;text-align:start;background-color:transparent;border:0;border-radius:6px;outline:0;transition:all 0.2s linear;appearance:textfield;color:rgba(255, 255, 255, 0.85);font-size:inherit;vertical-align:top;}.ant-input-number .ant-input-number-input::-moz-placeholder{opacity:1;}.ant-input-number .ant-input-number-input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number .ant-input-number-input:placeholder-shown{text-overflow:ellipsis;}.ant-input-number .ant-input-number-input[type=\\\\\"number\\\\\"]::-webkit-inner-spin-button,.ant-input-number .ant-input-number-input[type=\\\\\"number\\\\\"]::-webkit-outer-spin-button{margin:0;webkit-appearance:none;appearance:none;}.ant-input-number:hover .ant-input-number-handler-wrap,.ant-input-number-focused .ant-input-number-handler-wrap{opacity:1;}.ant-input-number .ant-input-number-handler-wrap{position:absolute;inset-block-start:0;inset-inline-end:0;width:22px;height:100%;background:#141414;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;opacity:0;display:flex;flex-direction:column;align-items:stretch;transition:opacity 0.2s linear 0.2s;}.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler{display:flex;align-items:center;justify-content:center;flex:auto;height:40%;}.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner{margin-inline-end:0;font-size:7px;}.ant-input-number .ant-input-number-handler{height:50%;overflow:hidden;color:rgba(255, 255, 255, 0.45);font-weight:bold;line-height:0;text-align:center;cursor:pointer;border-inline-start:1px solid #424242;transition:all 0.2s linear;}.ant-input-number .ant-input-number-handler:active{background:rgba(255, 255, 255, 0.04);}.ant-input-number .ant-input-number-handler:hover{height:60%;}.ant-input-number .ant-input-number-handler:hover .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler:hover .ant-input-number-handler-down-inner{color:#037003;}.ant-input-number .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler-down-inner{display:inline-flex;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all 0.2s linear;user-select:none;}.ant-input-number .ant-input-number-handler-up-inner >*,.ant-input-number .ant-input-number-handler-down-inner >*{line-height:1;}.ant-input-number .ant-input-number-handler-up-inner svg,.ant-input-number .ant-input-number-handler-down-inner svg{display:inline-block;}.ant-input-number .ant-input-number-handler-up{border-start-end-radius:6px;}.ant-input-number .ant-input-number-handler-down{border-block-start:1px solid #424242;border-end-end-radius:6px;}.ant-input-number-disabled .ant-input-number-handler-wrap,.ant-input-number-readonly .ant-input-number-handler-wrap{display:none;}.ant-input-number .ant-input-number-handler-up-disabled,.ant-input-number .ant-input-number-handler-down-disabled{cursor:not-allowed;}.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner{color:rgba(255, 255, 255, 0.25);}.ant-input-number-borderless{border-color:transparent;box-shadow:none;}.ant-input-number-borderless .ant-input-number-handler-down{border-block-start-width:0;}.ant-input-number-affix-wrapper{position:relative;display:inline-flex;width:90px;min-width:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;padding-inline-start:11px;}.ant-input-number-affix-wrapper::-moz-placeholder{opacity:1;}.ant-input-number-affix-wrapper::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number-affix-wrapper:placeholder-shown{text-overflow:ellipsis;}.ant-input-number-affix-wrapper:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-disabled,.ant-input-number-affix-wrapper[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-affix-wrapper-disabled:hover,.ant-input-number-affix-wrapper[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-affix-wrapper-borderless,.ant-input-number-affix-wrapper-borderless:hover,.ant-input-number-affix-wrapper-borderless:focus,.ant-input-number-affix-wrapper-borderless-focused,.ant-input-number-affix-wrapper-borderless-disabled,.ant-input-number-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-number-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-number-affix-wrapper-lg{border-radius:8px;}.ant-input-number-affix-wrapper-sm{border-radius:4px;}.ant-input-number-affix-wrapper-rtl{direction:rtl;}.ant-input-number-affix-wrapper-textarea-rtl{direction:rtl;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper{border-color:#dc4446;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{border-color:#7e2e2f;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper .ant-input-number-prefix{color:#dc4446;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper{border-color:#d89614;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{border-color:#7c5914;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper .ant-input-number-prefix{color:#d89614;}.ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover{border-color:#198016;border-inline-end-width:1px;z-index:1;}.ant-input-number-affix-wrapper-focused,.ant-input-number-affix-wrapper:focus{z-index:1;}.ant-input-number-affix-wrapper-disabled .ant-input-number[disabled]{background:transparent;}.ant-input-number-affix-wrapper >div.ant-input-number{width:100%;border:none;outline:none;}.ant-input-number-affix-wrapper >div.ant-input-number.ant-input-number-focused{box-shadow:none!important;}.ant-input-number-affix-wrapper input.ant-input-number-input{padding:0;}.ant-input-number-affix-wrapper::before{width:0;visibility:hidden;content:\\\\\"\\\\\\\\a0\\\\\";}.ant-input-number-affix-wrapper .ant-input-number-handler-wrap{z-index:2;}.ant-input-number-affix-wrapper .ant-input-number-prefix,.ant-input-number-affix-wrapper .ant-input-number-suffix{display:flex;flex:none;align-items:center;pointer-events:none;}.ant-input-number-affix-wrapper .ant-input-number-prefix{margin-inline-end:4px;}.ant-input-number-affix-wrapper .ant-input-number-suffix{position:absolute;inset-block-start:0;inset-inline-end:0;z-index:1;height:100%;margin-inline-end:11px;margin-inline-start:4px;}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item){margin-inline-end:-1px;}.ant-input-number-compact-item:hover,.ant-input-number-compact-item:focus,.ant-input-number-compact-item:active{z-index:2;}.ant-input-number-compact-item[disabled]{z-index:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-last-item){border-radius:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item,.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item.ant-input-number-sm,.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item.ant-input-number-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item,.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item.ant-input-number-sm,.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item.ant-input-number-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\\\\"ant-layout\\\\\"],[class*=\\\\\" ant-layout\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-layout\\\\\"]::before,[class*=\\\\\" ant-layout\\\\\"]::before,[class^=\\\\\"ant-layout\\\\\"]::after,[class*=\\\\\" ant-layout\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"],[class*=\\\\\" ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"],[class^=\\\\\"ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"],[class*=\\\\\" ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"]::before,[class*=\\\\\" ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"]::before,[class^=\\\\\"ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"]::before,[class*=\\\\\" ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"]::before,[class^=\\\\\"ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"]::after,[class*=\\\\\" ant-layout\\\\\"] [class^=\\\\\"ant-layout\\\\\"]::after,[class^=\\\\\"ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"]::after,[class*=\\\\\" ant-layout\\\\\"] [class*=\\\\\" ant-layout\\\\\"]::after{box-sizing:border-box;}.ant-layout{display:flex;flex:auto;flex-direction:column;min-height:0;background:#000000;}.ant-layout,.ant-layout *{box-sizing:border-box;}.ant-layout.ant-layout-has-sider{flex-direction:row;}.ant-layout.ant-layout-has-sider >.ant-layout,.ant-layout.ant-layout-has-sider >.ant-layout-content{width:0;}.ant-layout .ant-layout-header,.ant-layout.ant-layout-footer{flex:0 0 auto;}.ant-layout .ant-layout-header{height:64px;padding-inline:50px;color:rgba(255, 255, 255, 0.85);line-height:64px;background:#001529;}.ant-layout .ant-layout-header .ant-menu{line-height:inherit;}.ant-layout .ant-layout-footer{padding:24px 50px;color:rgba(255, 255, 255, 0.85);font-size:14px;background:#000000;}.ant-layout .ant-layout-content{flex:auto;min-height:0;}.ant-layout .ant-layout-sider{position:relative;min-width:0;background:#001529;transition:all 0.2s,background 0s;}.ant-layout .ant-layout-sider-children{height:100%;margin-top:-0.1px;padding-top:0.1px;}.ant-layout .ant-layout-sider-children .ant-menu.ant-menu-inline-collapsed{width:auto;}.ant-layout .ant-layout-sider-has-trigger{padding-bottom:48px;}.ant-layout .ant-layout-sider-right{order:1;}.ant-layout .ant-layout-sider-trigger{position:fixed;bottom:0;z-index:1;height:48px;color:#fff;line-height:48px;text-align:center;background:#002140;cursor:pointer;transition:all 0.2s;}.ant-layout .ant-layout-sider-zero-width >*{overflow:hidden;}.ant-layout .ant-layout-sider-zero-width-trigger{position:absolute;top:64px;inset-inline-end:-40px;z-index:1;width:40px;height:40px;color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;background:#001529;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;cursor:pointer;transition:background 0.3s ease;}.ant-layout .ant-layout-sider-zero-width-trigger::after{position:absolute;inset:0;background:transparent;transition:all 0.3s;content:\\\\\"\\\\\";}.ant-layout .ant-layout-sider-zero-width-trigger:hover::after{background:rgba(255, 255, 255, 0.2);}.ant-layout .ant-layout-sider-zero-width-trigger-right{inset-inline-start:-40px;border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-layout .ant-layout-sider-light{background:#141414;}.ant-layout .ant-layout-sider-light .ant-layout-sider-trigger{color:rgba(255, 255, 255, 0.85);background:#141414;}.ant-layout .ant-layout-sider-light .ant-layout-sider-zero-width-trigger{color:rgba(255, 255, 255, 0.85);background:#141414;border:1px solid #000000;border-inline-start:0;}.ant-layout-rtl{direction:rtl;}[class^=\\\\\"ant-list\\\\\"],[class*=\\\\\" ant-list\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-list\\\\\"]::before,[class*=\\\\\" ant-list\\\\\"]::before,[class^=\\\\\"ant-list\\\\\"]::after,[class*=\\\\\" ant-list\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"],[class*=\\\\\" ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"],[class^=\\\\\"ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"],[class*=\\\\\" ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"]::before,[class*=\\\\\" ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"]::before,[class^=\\\\\"ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"]::before,[class*=\\\\\" ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"]::before,[class^=\\\\\"ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"]::after,[class*=\\\\\" ant-list\\\\\"] [class^=\\\\\"ant-list\\\\\"]::after,[class^=\\\\\"ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"]::after,[class*=\\\\\" ant-list\\\\\"] [class*=\\\\\" ant-list\\\\\"]::after{box-sizing:border-box;}.ant-list{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;}.ant-list *{outline:none;}.ant-list .ant-list-header,.ant-list .ant-list-footer{background:transparent;padding-block:12px;}.ant-list .ant-list-pagination{margin-block-start:24px;text-align:end;}.ant-list .ant-list-pagination .ant-pagination-options{text-align:start;}.ant-list .ant-list-spin{min-height:40px;text-align:center;}.ant-list .ant-list-items{margin:0;padding:0;list-style:none;}.ant-list .ant-list-item{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;color:rgba(255, 255, 255, 0.85);}.ant-list .ant-list-item .ant-list-item-meta{display:flex;flex:1;align-items:flex-start;max-width:100%;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-avatar{margin-inline-end:16px;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-content{flex:1 0;width:0;color:rgba(255, 255, 255, 0.85);}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title{margin-bottom:4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title >a{color:rgba(255, 255, 255, 0.85);transition:all 0.3s;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title >a:hover{color:#037003;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-description{color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;}.ant-list .ant-list-item .ant-list-item-action{flex:0 0 auto;margin-inline-start:48px;padding:0;font-size:0;list-style:none;}.ant-list .ant-list-item .ant-list-item-action>li{position:relative;display:inline-block;padding:0 8px;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-list .ant-list-item .ant-list-item-action>li:first-child{padding-inline-start:0;}.ant-list .ant-list-item .ant-list-item-action .ant-list-item-action-split{position:absolute;inset-block-start:50%;inset-inline-end:0;width:1px;height:14px;transform:translateY(-50%);background-color:rgba(253, 253, 253, 0.12);}.ant-list .ant-list-empty{padding:16px 0;color:rgba(255, 255, 255, 0.45);font-size:12px;text-align:center;}.ant-list .ant-list-empty-text{padding:16px;color:rgba(255, 255, 255, 0.25);font-size:14px;text-align:center;}.ant-list .ant-list-item-no-flex{display:block;}.ant-list-grid .ant-col>.ant-list-item{display:block;max-width:100%;margin-block-end:16px;padding-block:0;border-block-end:none;}.ant-list-vertical .ant-list-item{align-items:initial;}.ant-list-vertical .ant-list-item .ant-list-item-main{display:block;flex:1;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin-inline-start:24px;}.ant-list-vertical .ant-list-item .ant-list-item-meta{margin-block-end:16px;}.ant-list-vertical .ant-list-item .ant-list-item-meta .ant-list-item-meta-title{margin-block-end:12px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5;}.ant-list-vertical .ant-list-item .ant-list-item-action{margin-block-start:16px;margin-inline-start:auto;}.ant-list-vertical .ant-list-item .ant-list-item-action >li{padding:0 16px;}.ant-list-vertical .ant-list-item .ant-list-item-action >li:first-child{padding-inline-start:0;}.ant-list-split .ant-list-item{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-split .ant-list-item:last-child{border-block-end:none;}.ant-list-split .ant-list-header{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-split.ant-list-empty .ant-list-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-list-loading .ant-list-spin-nested-loading{min-height:32px;}.ant-list-split.ant-list-something-after-last-item .ant-spin-container>.ant-list-items>.ant-list-item:last-child{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-lg .ant-list-item{padding:16px 24px;}.ant-list-sm .ant-list-item{padding:8px 16px;}.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action{float:right;}.ant-list-bordered{border:1px solid #424242;border-radius:8px;}.ant-list-bordered .ant-list-header,.ant-list-bordered .ant-list-footer,.ant-list-bordered .ant-list-item{padding-inline:24px;}.ant-list-bordered .ant-list-pagination{margin:16px 24px;}.ant-list-bordered.ant-list-sm .ant-list-item,.ant-list-bordered.ant-list-sm .ant-list-header,.ant-list-bordered.ant-list-sm .ant-list-footer{padding:8px 16px;}.ant-list-bordered.ant-list-lg .ant-list-item,.ant-list-bordered.ant-list-lg .ant-list-header,.ant-list-bordered.ant-list-lg .ant-list-footer{padding:16px 24px;}@media screen and (max-width:768){.ant-list .ant-list-item .ant-list-item-action{margin-inline-start:24px;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin-inline-start:24px;}}@media screen and (max-width: 576){.ant-list .ant-list-item{flex-wrap:wrap;}.ant-list .ant-list-item .ant-list-action{margin-inline-start:12px;}.ant-list-vertical .ant-list-item{flex-wrap:wrap-reverse;}.ant-list-vertical .ant-list-item .ant-list-item-main{min-width:220px;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin:auto auto 16px;}}[class^=\\\\\"ant-spin\\\\\"],[class*=\\\\\" ant-spin\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-spin\\\\\"]::before,[class*=\\\\\" ant-spin\\\\\"]::before,[class^=\\\\\"ant-spin\\\\\"]::after,[class*=\\\\\" ant-spin\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"],[class*=\\\\\" ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"],[class^=\\\\\"ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"],[class*=\\\\\" ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"]::before,[class*=\\\\\" ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"]::before,[class^=\\\\\"ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"]::before,[class*=\\\\\" ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"]::before,[class^=\\\\\"ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"]::after,[class*=\\\\\" ant-spin\\\\\"] [class^=\\\\\"ant-spin\\\\\"]::after,[class^=\\\\\"ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"]::after,[class*=\\\\\" ant-spin\\\\\"] [class*=\\\\\" ant-spin\\\\\"]::after{box-sizing:border-box;}.ant-spin{box-sizing:border-box;margin:0;padding:0;color:#037003;font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;display:none;text-align:center;vertical-align:middle;opacity:0;transition:transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-spin-spinning{position:static;display:inline-block;opacity:1;}.ant-spin-nested-loading{position:relative;}.ant-spin-nested-loading >div>.ant-spin{position:absolute;top:0;inset-inline-start:0;z-index:4;display:block;width:100%;height:100%;max-height:400px;}.ant-spin-nested-loading >div>.ant-spin .ant-spin-dot{position:absolute;top:50%;inset-inline-start:50%;margin:-10px;}.ant-spin-nested-loading >div>.ant-spin .ant-spin-text{position:absolute;top:50%;width:100%;padding-top:5px;text-shadow:0 1px 2px #141414;}.ant-spin-nested-loading >div>.ant-spin.ant-spin-show-text .ant-spin-dot{margin-top:-20px;}.ant-spin-nested-loading >div>.ant-spin-sm .ant-spin-dot{margin:-7px;}.ant-spin-nested-loading >div>.ant-spin-sm .ant-spin-text{padding-top:2px;}.ant-spin-nested-loading >div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot{margin-top:-17px;}.ant-spin-nested-loading >div>.ant-spin-lg .ant-spin-dot{margin:-16px;}.ant-spin-nested-loading >div>.ant-spin-lg .ant-spin-text{padding-top:11px;}.ant-spin-nested-loading >div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot{margin-top:-26px;}.ant-spin-nested-loading .ant-spin-container{position:relative;transition:opacity 0.3s;}.ant-spin-nested-loading .ant-spin-container::after{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:10;width:100%;height:100%;background:#141414;opacity:0;transition:all 0.3s;content:\\\\\"\\\\\";pointer-events:none;}.ant-spin-nested-loading .ant-spin-blur{clear:both;opacity:0.5;user-select:none;pointer-events:none;}.ant-spin-nested-loading .ant-spin-blur::after{opacity:0.4;pointer-events:auto;}.ant-spin-tip{color:rgba(255, 255, 255, 0.45);}.ant-spin .ant-spin-dot{position:relative;display:inline-block;font-size:20px;width:1em;height:1em;}.ant-spin .ant-spin-dot-item{position:absolute;display:block;width:9px;height:9px;background-color:#037003;border-radius:100%;transform:scale(0.75);transform-origin:50% 50%;opacity:0.3;animation-name:antSpinMove;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-direction:alternate;}.ant-spin .ant-spin-dot-item:nth-child(1){top:0;inset-inline-start:0;}.ant-spin .ant-spin-dot-item:nth-child(2){top:0;inset-inline-end:0;animation-delay:0.4s;}.ant-spin .ant-spin-dot-item:nth-child(3){inset-inline-end:0;bottom:0;animation-delay:0.8s;}.ant-spin .ant-spin-dot-item:nth-child(4){bottom:0;inset-inline-start:0;animation-delay:1.2s;}.ant-spin .ant-spin-dot-spin{transform:rotate(45deg);animation-name:antRotate;animation-duration:1.2s;animation-iteration-count:infinite;animation-timing-function:linear;}.ant-spin-sm .ant-spin-dot{font-size:14px;}.ant-spin-sm .ant-spin-dot i{width:6px;height:6px;}.ant-spin-lg .ant-spin-dot{font-size:32px;}.ant-spin-lg .ant-spin-dot i{width:14px;height:14px;}.ant-spin.ant-spin-show-text .ant-spin-text{display:block;}@keyframes antSpinMove{to{opacity:1;}}@keyframes antRotate{to{transform:rotate(405deg);}}[class^=\\\\\"ant-menu\\\\\"],[class*=\\\\\" ant-menu\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-menu\\\\\"]::before,[class*=\\\\\" ant-menu\\\\\"]::before,[class^=\\\\\"ant-menu\\\\\"]::after,[class*=\\\\\" ant-menu\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"],[class*=\\\\\" ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"],[class^=\\\\\"ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"],[class*=\\\\\" ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"]::before,[class*=\\\\\" ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"]::before,[class^=\\\\\"ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"]::before,[class*=\\\\\" ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"]::before,[class^=\\\\\"ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"]::after,[class*=\\\\\" ant-menu\\\\\"] [class^=\\\\\"ant-menu\\\\\"]::after,[class^=\\\\\"ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"]::after,[class*=\\\\\" ant-menu\\\\\"] [class*=\\\\\" ant-menu\\\\\"]::after{box-sizing:border-box;}.ant-menu::before{display:table;content:\\\\\"\\\\\";}.ant-menu::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-menu-hidden{display:none;}.ant-menu-submenu-hidden{display:none;}.ant-menu{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:0;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';margin-bottom:0;padding-inline-start:0;outline:none;transition:width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s;}.ant-menu::before{display:table;content:\\\\\"\\\\\";}.ant-menu::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-menu ul,.ant-menu ol{margin:0;padding:0;list-style:none;}.ant-menu-overflow{display:flex;}.ant-menu-overflow .ant-menu-item{flex:none;}.ant-menu .ant-menu-item,.ant-menu .ant-menu-submenu,.ant-menu .ant-menu-submenu-title{border-radius:8px;}.ant-menu .ant-menu-item-group-title{padding:8px 16px;font-size:14px;line-height:1.5714285714285714;transition:all 0.3s;}.ant-menu-horizontal .ant-menu-submenu{transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu,.ant-menu .ant-menu-submenu-inline{transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),padding 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu .ant-menu-sub{cursor:initial;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-title-content{transition:color 0.3s;}.ant-menu .ant-menu-item a::before{position:absolute;inset:0;background-color:transparent;content:\\\\\"\\\\\";}.ant-menu .ant-menu-item-divider{overflow:hidden;line-height:0;border-color:rgba(253, 253, 253, 0.12);border-style:solid;border-width:0;border-top-width:1px;margin-block:1px;padding:0;}.ant-menu .ant-menu-item-divider-dashed{border-style:dashed;}.ant-menu .ant-menu-item,.ant-menu .ant-menu-submenu-title{position:relative;display:block;margin:0;white-space:nowrap;cursor:pointer;transition:border-color 0.3s,background 0.3s,padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu .ant-menu-item .anticon,.ant-menu .ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s;}.ant-menu .ant-menu-item .ant-menu-item-icon +span,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu .ant-menu-item .anticon +span,.ant-menu .ant-menu-submenu-title .anticon +span{margin-inline-start:10px;opacity:1;transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),margin 0.3s,color 0.3s;}.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.ant-menu .ant-menu-item .ant-menu-item-icon >*,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon >*{line-height:1;}.ant-menu .ant-menu-item .ant-menu-item-icon svg,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon svg{display:inline-block;}.ant-menu .ant-menu-item.ant-menu-item-only-child >.anticon,.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.anticon,.ant-menu .ant-menu-item.ant-menu-item-only-child >.ant-menu-item-icon,.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.ant-menu-item-icon{margin-inline-end:0;}.ant-menu .ant-menu-item-disabled,.ant-menu .ant-menu-submenu-disabled{background:none!important;cursor:not-allowed;}.ant-menu .ant-menu-item-disabled::after,.ant-menu .ant-menu-submenu-disabled::after{border-color:transparent!important;}.ant-menu .ant-menu-item-disabled a,.ant-menu .ant-menu-submenu-disabled a{color:inherit!important;}.ant-menu .ant-menu-item-disabled >.ant-menu-submenu-title,.ant-menu .ant-menu-submenu-disabled >.ant-menu-submenu-title{color:inherit!important;cursor:not-allowed;}.ant-menu .ant-menu-item-group .ant-menu-item-group-list{margin:0;padding:0;}.ant-menu .ant-menu-item-group .ant-menu-item-group-list .ant-menu-item,.ant-menu .ant-menu-item-group .ant-menu-item-group-list .ant-menu-submenu-title{padding-inline:28px 16px;}.ant-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;border-radius:8px;box-shadow:none;transform-origin:0 0;}.ant-menu-submenu-popup::before{position:absolute;inset:-7px 0 0;z-index:-1;width:100%;height:100%;opacity:0;content:\\\\\"\\\\\";}.ant-menu-submenu-placement-rightTop::before{top:0;inset-inline-start:-7px;}.ant-menu-submenu >.ant-menu{border-radius:8px;}.ant-menu-submenu >.ant-menu .ant-menu-item,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title{position:relative;display:block;margin:0;white-space:nowrap;cursor:pointer;transition:border-color 0.3s,background 0.3s,padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-item .anticon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon +span,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-submenu >.ant-menu .ant-menu-item .anticon +span,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .anticon +span{margin-inline-start:10px;opacity:1;transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),margin 0.3s,color 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon >*,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon >*{line-height:1;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon svg,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon svg{display:inline-block;}.ant-menu-submenu >.ant-menu .ant-menu-item.ant-menu-item-only-child >.anticon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.anticon,.ant-menu-submenu >.ant-menu .ant-menu-item.ant-menu-item-only-child >.ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.ant-menu-item-icon{margin-inline-end:0;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled{background:none!important;cursor:not-allowed;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled::after,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled::after{border-color:transparent!important;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled a,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled a{color:inherit!important;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled >.ant-menu-submenu-title,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled >.ant-menu-submenu-title{color:inherit!important;cursor:not-allowed;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-expand-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow{position:absolute;top:50%;inset-inline-end:16px;width:10px;color:currentcolor;transform:translateY(-50%);transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::before,.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:6px;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::before{transform:rotate(45deg) translateY(-2.5px);}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateY(2.5px);}.ant-menu-submenu >.ant-menu .ant-menu-item,.ant-menu-submenu >.ant-menu .ant-menu-submenu>.ant-menu-submenu-title{border-radius:4px;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-title::after{transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu-expand-icon,.ant-menu .ant-menu-submenu-arrow{position:absolute;top:50%;inset-inline-end:16px;width:10px;color:currentcolor;transform:translateY(-50%);transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s;}.ant-menu .ant-menu-submenu-arrow::before,.ant-menu .ant-menu-submenu-arrow::after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:6px;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu .ant-menu-submenu-arrow::before{transform:rotate(45deg) translateY(-2.5px);}.ant-menu .ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateY(2.5px);}.ant-menu-inline-collapsed .ant-menu-submenu-arrow::before,.ant-menu-inline .ant-menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px);}.ant-menu-inline-collapsed .ant-menu-submenu-arrow::after,.ant-menu-inline .ant-menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow{transform:translateY(-2px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px);}.ant-layout-header .ant-menu{line-height:inherit;}.ant-menu-horizontal{line-height:46px;border:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);box-shadow:none;}.ant-menu-horizontal::after{display:block;clear:both;height:0;content:\\\\\"\\\\\\\\20\\\\\";}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{position:relative;display:inline-block;vertical-align:bottom;padding-inline:16px;}.ant-menu-horizontal >.ant-menu-item:hover,.ant-menu-horizontal >.ant-menu-item-active,.ant-menu-horizontal >.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent;}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu-title{transition:border-color 0.3s,background 0.3s;}.ant-menu-horizontal .ant-menu-submenu-arrow{display:none;}.ant-menu-inline.ant-menu-root,.ant-menu-vertical.ant-menu-root{box-shadow:none;}.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-item{position:relative;}.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{height:40px;line-height:40px;padding-inline:16px;overflow:hidden;text-overflow:ellipsis;margin-inline:4px;margin-block:4px;width:calc(100% - 8px);}.ant-menu-inline .ant-menu-submenu,.ant-menu-vertical .ant-menu-submenu{padding-bottom:0.02px;}.ant-menu-inline >.ant-menu-item,.ant-menu-vertical >.ant-menu-item,.ant-menu-inline >.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical >.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;}.ant-menu-inline .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{padding-inline-end:34px;}.ant-menu-submenu-popup .ant-menu-vertical{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item{position:relative;}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item,.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu-title{height:40px;line-height:40px;padding-inline:16px;overflow:hidden;text-overflow:ellipsis;margin-inline:4px;margin-block:4px;width:calc(100% - 8px);}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu{padding-bottom:0.02px;}.ant-menu-submenu-popup .ant-menu-vertical >.ant-menu-item,.ant-menu-submenu-popup .ant-menu-vertical >.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu-title{padding-inline-end:34px;}.ant-menu-submenu-popup .ant-menu-vertical.ant-menu-sub{min-width:160px;max-height:calc(100vh - 100px);padding:0;overflow:hidden;border-inline-end:0;}.ant-menu-submenu-popup .ant-menu-vertical.ant-menu-sub:not([class*='-active']){overflow-x:hidden;overflow-y:auto;}.ant-menu-inline{width:100%;}.ant-menu-inline.ant-menu-root .ant-menu-item,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title{display:flex;align-items:center;transition:border-color 0.3s,background 0.3s,padding 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);}.ant-menu-inline.ant-menu-root .ant-menu-item >.ant-menu-title-content,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title >.ant-menu-title-content{flex:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}.ant-menu-inline.ant-menu-root .ant-menu-item >*,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title >*{flex:none;}.ant-menu-inline .ant-menu-sub.ant-menu-inline{padding:0;border:0;border-radius:0;box-shadow:none;}.ant-menu-inline .ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc;}.ant-menu-inline .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-inline-start:32px;}.ant-menu-inline .ant-menu-item{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc;}.ant-menu-inline-collapsed{width:80px;}.ant-menu-inline-collapsed.ant-menu-root .ant-menu-item >.ant-menu-inline-collapsed-noicon,.ant-menu-inline-collapsed.ant-menu-root .ant-menu-submenu .ant-menu-submenu-title >.ant-menu-inline-collapsed-noicon{font-size:16px;text-align:center;}.ant-menu-inline-collapsed >.ant-menu-item,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title{inset-inline-start:0;padding-inline:calc(50% - 12px);text-overflow:clip;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-expand-icon{opacity:0;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item .anticon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .anticon{margin:0;font-size:16px;line-height:40px;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item .anticon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon +span,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .anticon +span{display:inline-block;opacity:0;}.ant-menu-inline-collapsed .ant-menu-item-icon,.ant-menu-inline-collapsed .anticon{display:inline-block;}.ant-menu-inline-collapsed-tooltip{pointer-events:none;}.ant-menu-inline-collapsed-tooltip .ant-menu-item-icon,.ant-menu-inline-collapsed-tooltip .anticon{display:none;}.ant-menu-inline-collapsed-tooltip a,.ant-menu-inline-collapsed-tooltip a:hover{color:#fff;}.ant-menu-inline-collapsed .ant-menu-item-group-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-inline:8px;}.ant-menu-light{color:rgba(255, 255, 255, 0.85);background:#141414;}.ant-menu-light.ant-menu-root:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-light .ant-menu-item-group-title{color:rgba(255, 255, 255, 0.45);}.ant-menu-light .ant-menu-submenu-selected >.ant-menu-submenu-title{color:#037003;}.ant-menu-light .ant-menu-item-disabled,.ant-menu-light .ant-menu-submenu-disabled{color:rgba(255, 255, 255, 0.25)!important;}.ant-menu-light .ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected),.ant-menu-light .ant-menu-submenu-title:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:rgba(255, 255, 255, 0.85);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):active{background-color:#111911;}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-submenu-title:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-submenu-title:active{background-color:#111911;}.ant-menu-light .ant-menu-item-danger{color:#dc4446;}.ant-menu-light .ant-menu-item-danger.ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#dc4446;}.ant-menu-light .ant-menu-item-danger.ant-menu-item:active{background:#2c1618;}.ant-menu-light .ant-menu-item a,.ant-menu-light .ant-menu-item a:hover{color:inherit;}.ant-menu-light .ant-menu-item-selected{color:#037003;}.ant-menu-light .ant-menu-item-selected.ant-menu-item-danger{color:#dc4446;}.ant-menu-light .ant-menu-item-selected a,.ant-menu-light .ant-menu-item-selected a:hover{color:inherit;}.ant-menu-light .ant-menu-item-selected{background-color:#111911;}.ant-menu-light .ant-menu-item-selected.ant-menu-item-danger{background-color:#2c1618;}.ant-menu-light .ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-light .ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-light.ant-menu-submenu>.ant-menu{background-color:#1f1f1f;}.ant-menu-light.ant-menu-popup>.ant-menu{background-color:#141414;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu{top:1px;margin-top:-1px;margin-bottom:0;border-radius:0;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu::after{position:absolute;inset-inline:16px;bottom:0;border-bottom:2px solid transparent;transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu-light.ant-menu-horizontal >.ant-menu-item:hover::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu:hover::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-item-active::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-active::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-item-open::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-open::after{border-bottom-width:2px;border-bottom-color:#037003;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item-selected,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-selected{color:#037003;background-color:transparent;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item-selected::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-selected::after{border-bottom-width:2px;border-bottom-color:#037003;}.ant-menu-light.ant-menu-root.ant-menu-inline,.ant-menu-light.ant-menu-root.ant-menu-vertical{border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-menu-light.ant-menu-inline .ant-menu-sub.ant-menu-inline{background:rgba(255, 255, 255, 0.04);}.ant-menu-light.ant-menu-inline .ant-menu-item{position:relative;}.ant-menu-light.ant-menu-inline .ant-menu-item::after{position:absolute;inset-block:0;inset-inline-end:0;border-inline-end:0px solid #037003;transform:scaleY(0.0001);opacity:0;transition:transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),opacity 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu-light.ant-menu-inline .ant-menu-item.ant-menu-item-danger::after{border-inline-end-color:#dc4446;}.ant-menu-light.ant-menu-inline .ant-menu-selected::after,.ant-menu-light.ant-menu-inline .ant-menu-item-selected::after{transform:scaleY(1);opacity:1;transition:transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-dark{color:rgba(255, 255, 255, 0.65);background:#001529;}.ant-menu-dark.ant-menu-root:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-dark .ant-menu-item-group-title{color:rgba(255, 255, 255, 0.65);}.ant-menu-dark .ant-menu-submenu-selected >.ant-menu-submenu-title{color:#fff;}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-submenu-disabled{color:rgba(255, 255, 255, 0.25)!important;}.ant-menu-dark .ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected),.ant-menu-dark .ant-menu-submenu-title:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#fff;}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):active{background-color:#037003;}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-submenu-title:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-submenu-title:active{background-color:#037003;}.ant-menu-dark .ant-menu-item-danger{color:#dc4446;}.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#e86e6b;}.ant-menu-dark .ant-menu-item-danger.ant-menu-item:active{background:#dc4446;}.ant-menu-dark .ant-menu-item a,.ant-menu-dark .ant-menu-item a:hover{color:inherit;}.ant-menu-dark .ant-menu-item-selected{color:#fff;}.ant-menu-dark .ant-menu-item-selected.ant-menu-item-danger{color:#fff;}.ant-menu-dark .ant-menu-item-selected a,.ant-menu-dark .ant-menu-item-selected a:hover{color:inherit;}.ant-menu-dark .ant-menu-item-selected{background-color:#037003;}.ant-menu-dark .ant-menu-item-selected.ant-menu-item-danger{background-color:#dc4446;}.ant-menu-dark .ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-dark .ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-dark.ant-menu-submenu>.ant-menu{background-color:#001529;}.ant-menu-dark.ant-menu-popup>.ant-menu{background-color:#001529;}.ant-menu-dark.ant-menu-horizontal{border-bottom:0;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu{top:0;margin-top:0;margin-bottom:0;border-radius:0;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu::after{position:absolute;inset-inline:16px;bottom:0;border-bottom:0px solid transparent;transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item:hover::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu:hover::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-active::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-active::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-open::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-open::after{border-bottom-width:0;border-bottom-color:#fff;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-selected,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-selected{color:#fff;background-color:#037003;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-selected::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-selected::after{border-bottom-width:0;border-bottom-color:#fff;}.ant-menu-dark.ant-menu-root.ant-menu-inline,.ant-menu-dark.ant-menu-root.ant-menu-vertical{border-inline-end:0px solid rgba(253, 253, 253, 0.12);}.ant-menu-dark.ant-menu-inline .ant-menu-sub.ant-menu-inline{background:#000c17;}.ant-menu-dark.ant-menu-inline .ant-menu-item{position:relative;}.ant-menu-dark.ant-menu-inline .ant-menu-item::after{position:absolute;inset-block:0;inset-inline-end:0;border-inline-end:0px solid #fff;transform:scaleY(0.0001);opacity:0;transition:transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),opacity 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);content:\\\\\"\\\\\";}.ant-menu-dark.ant-menu-inline .ant-menu-item.ant-menu-item-danger::after{border-inline-end-color:#fff;}.ant-menu-dark.ant-menu-inline .ant-menu-selected::after,.ant-menu-dark.ant-menu-inline .ant-menu-item-selected::after{transform:scaleY(1);opacity:1;transition:transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-rtl{direction:rtl;}.ant-menu-submenu-rtl{transform-origin:100% 0;}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-arrow::before,.ant-menu-submenu-rtl .ant-menu-vertical .ant-menu-submenu-arrow::before{transform:rotate(-45deg) translateY(-2.5px);}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-arrow::after,.ant-menu-submenu-rtl .ant-menu-vertical .ant-menu-submenu-arrow::after{transform:rotate(45deg) translateY(2.5px);}.ant-menu .ant-motion-collapse-legacy{overflow:hidden;}.ant-menu .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-menu .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\\\\"ant-mentions\\\\\"],[class*=\\\\\" ant-mentions\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-mentions\\\\\"]::before,[class*=\\\\\" ant-mentions\\\\\"]::before,[class^=\\\\\"ant-mentions\\\\\"]::after,[class*=\\\\\" ant-mentions\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"],[class*=\\\\\" ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"],[class^=\\\\\"ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"],[class*=\\\\\" ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"]::before,[class*=\\\\\" ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"]::before,[class^=\\\\\"ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"]::before,[class*=\\\\\" ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"]::before,[class^=\\\\\"ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"]::after,[class*=\\\\\" ant-mentions\\\\\"] [class^=\\\\\"ant-mentions\\\\\"]::after,[class^=\\\\\"ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"]::after,[class*=\\\\\" ant-mentions\\\\\"] [class*=\\\\\" ant-mentions\\\\\"]::after{box-sizing:border-box;}.ant-mentions{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:100%;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;height:auto;overflow:hidden;white-space:pre-wrap;vertical-align:bottom;}.ant-mentions::-moz-placeholder{opacity:1;}.ant-mentions::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-mentions:placeholder-shown{text-overflow:ellipsis;}.ant-mentions:hover{border-color:#198016;border-inline-end-width:1px;}.ant-mentions:focus,.ant-mentions-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-disabled,.ant-mentions[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-mentions-disabled:hover,.ant-mentions[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-mentions-borderless,.ant-mentions-borderless:hover,.ant-mentions-borderless:focus,.ant-mentions-borderless-focused,.ant-mentions-borderless-disabled,.ant-mentions-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-mentions{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-mentions-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-mentions-sm{padding:0px 7px;border-radius:4px;}.ant-mentions-rtl{direction:rtl;}.ant-mentions-textarea-rtl{direction:rtl;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions{border-color:#dc4446;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover{border-color:#7e2e2f;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus,.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions .ant-mentions-prefix{color:#dc4446;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions{border-color:#d89614;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover{border-color:#7c5914;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus,.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions .ant-mentions-prefix{color:#d89614;}.ant-mentions-disabled >textarea{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-mentions-disabled >textarea:hover{border-color:#424242;border-inline-end-width:1px;}.ant-mentions-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-affix-wrapper .ant-mentions-suffix{position:absolute;top:0;inset-inline-end:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto;}.ant-mentions >textarea,.ant-mentions .ant-mentions-measure{color:rgba(255, 255, 255, 0.85);box-sizing:border-box;min-height:30px;margin:0;padding:4px 11px;overflow:inherit;overflow-x:hidden;overflow-y:auto;font-weight:inherit;font-size:inherit;font-family:inherit;font-style:inherit;font-variant:inherit;font-size-adjust:inherit;font-stretch:inherit;line-height:inherit;direction:inherit;letter-spacing:inherit;white-space:inherit;text-align:inherit;vertical-align:top;word-wrap:break-word;word-break:inherit;tab-size:inherit;}.ant-mentions >textarea{width:100%;border:none;outline:none;resize:none;background-color:inherit;}.ant-mentions >textarea::-moz-placeholder{opacity:1;}.ant-mentions >textarea::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-mentions >textarea:placeholder-shown{text-overflow:ellipsis;}.ant-mentions .ant-mentions-measure{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:-1;color:transparent;pointer-events:none;}.ant-mentions .ant-mentions-measure >span{display:inline-block;min-height:1em;}.ant-mentions-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;inset-inline-start:-9999px;z-index:1050;font-variant:initial;background-color:#1f1f1f;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-mentions-dropdown-hidden{display:none;}.ant-mentions-dropdown .ant-mentions-dropdown-menu{max-height:250px;margin-bottom:0;padding-inline-start:0;overflow:auto;list-style:none;outline:none;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;display:block;min-width:100px;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;line-height:1.5714285714285714;cursor:pointer;transition:background 0.3s ease;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:first-child{border-start-start-radius:8px;border-start-end-radius:8px;border-end-start-radius:0;border-end-end-radius:0;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:8px;border-end-end-radius:8px;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-selected{color:rgba(255, 255, 255, 0.85);font-weight:600;background-color:rgba(255, 255, 255, 0.08);}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-active{background-color:rgba(255, 255, 255, 0.08);}[class^=\\\\\"ant-modal\\\\\"],[class*=\\\\\" ant-modal\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-modal\\\\\"]::before,[class*=\\\\\" ant-modal\\\\\"]::before,[class^=\\\\\"ant-modal\\\\\"]::after,[class*=\\\\\" ant-modal\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"],[class*=\\\\\" ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"],[class^=\\\\\"ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"],[class*=\\\\\" ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"]::before,[class*=\\\\\" ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"]::before,[class^=\\\\\"ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"]::before,[class*=\\\\\" ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"]::before,[class^=\\\\\"ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"]::after,[class*=\\\\\" ant-modal\\\\\"] [class^=\\\\\"ant-modal\\\\\"]::after,[class^=\\\\\"ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"]::after,[class*=\\\\\" ant-modal\\\\\"] [class*=\\\\\" ant-modal\\\\\"]::after{box-sizing:border-box;}.ant-modal-root .ant-modal-wrap{z-index:1000;position:fixed;inset:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-modal-root .ant-modal-wrap-rtl{direction:rtl;}.ant-modal-root .ant-modal-centered{text-align:center;}.ant-modal-root .ant-modal-centered::before{display:inline-block;width:0;height:100%;vertical-align:middle;content:\\\\\"\\\\\";}.ant-modal-root .ant-modal-centered .ant-modal{top:0;display:inline-block;padding-bottom:0;text-align:start;vertical-align:middle;}@media (max-width: 767){.ant-modal-root .ant-modal{max-width:calc(100vw - 16px);margin:8 auto;}.ant-modal-root .ant-modal-centered .ant-modal{flex:1;}}.ant-modal{box-sizing:border-box;margin:0 auto;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';pointer-events:none;position:relative;top:100px;width:auto;max-width:calc(100vw - 32px);padding-bottom:24px;}.ant-modal .ant-modal-title{margin:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;word-wrap:break-word;}.ant-modal .ant-modal-content{position:relative;background-color:#1f1f1f;background-clip:padding-box;border:0;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);pointer-events:auto;padding:20px 24px;}.ant-modal .ant-modal-close{position:absolute;top:17px;inset-inline-end:17px;z-index:1010;padding:0;color:rgba(255, 255, 255, 0.45);font-weight:600;line-height:1;text-decoration:none;background:transparent;border-radius:4px;width:22px;height:22px;border:0;outline:0;cursor:pointer;transition:color 0.2s,background-color 0.2s;}.ant-modal .ant-modal-close-x{display:block;font-size:16px;font-style:normal;line-height:22px;text-align:center;text-transform:none;text-rendering:auto;}.ant-modal .ant-modal-close:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);text-decoration:none;}.ant-modal .ant-modal-close:active{background-color:rgba(255, 255, 255, 0.18);}.ant-modal .ant-modal-close:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-modal .ant-modal-header{color:rgba(255, 255, 255, 0.85);background:#1f1f1f;border-radius:8px 8px 0 0;margin-bottom:8px;}.ant-modal .ant-modal-body{font-size:14px;line-height:1.5714285714285714;word-wrap:break-word;}.ant-modal .ant-modal-footer{text-align:end;background:transparent;margin-top:12px;}.ant-modal .ant-modal-footer .ant-btn+.ant-btn:not(.ant-dropdown-trigger){margin-bottom:0;margin-inline-start:8px;}.ant-modal .ant-modal-open{overflow:hidden;}.ant-modal-pure-panel{top:auto;padding:0;display:flex;flex-direction:column;}.ant-modal-pure-panel .ant-modal-content,.ant-modal-pure-panel .ant-modal-body,.ant-modal-pure-panel .ant-modal-confirm-body-wrapper{display:flex;flex-direction:column;flex:auto;}.ant-modal-pure-panel .ant-modal-confirm-body{margin-bottom:auto;}.ant-modal-confirm-rtl{direction:rtl;}.ant-modal-confirm .ant-modal-header{display:none;}.ant-modal-confirm .ant-modal-confirm-body-wrapper::before{display:table;content:\\\\\"\\\\\";}.ant-modal-confirm .ant-modal-confirm-body-wrapper::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-modal-confirm .ant-modal-confirm-body{display:flex;flex-wrap:wrap;align-items:center;}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{flex:0 0 100%;display:block;overflow:hidden;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title +.ant-modal-confirm-content{margin-block-start:8px;flex-basis:100%;max-width:calc(100% - 34px);}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-modal-confirm .ant-modal-confirm-body >.anticon{flex:none;margin-inline-end:12px;font-size:22px;}.ant-modal-confirm .ant-modal-confirm-body >.anticon +.ant-modal-confirm-title{flex:1;}.ant-modal-confirm .ant-modal-confirm-body >.anticon +.ant-modal-confirm-title+.ant-modal-confirm-content{margin-inline-start:34px;}.ant-modal-confirm .ant-modal-confirm-btns{text-align:end;margin-top:12px;}.ant-modal-confirm .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-bottom:0;margin-inline-start:8px;}.ant-modal-confirm-error .ant-modal-confirm-body>.anticon{color:#dc4446;}.ant-modal-confirm-warning .ant-modal-confirm-body>.anticon,.ant-modal-confirm-confirm .ant-modal-confirm-body>.anticon{color:#d89614;}.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1668dc;}.ant-modal-confirm-success .ant-modal-confirm-body>.anticon{color:#49aa19;}.ant-modal-zoom-leave .ant-modal-btns{pointer-events:none;}.ant-modal-root .ant-modal-wrap-rtl{direction:rtl;}.ant-modal-root .ant-modal-wrap-rtl .ant-modal-confirm-body{direction:rtl;}.ant-modal-root .ant-modal.ant-zoom-enter,.ant-modal-root .ant-modal.ant-zoom-appear{transform:none;opacity:0;animation-duration:0.3s;user-select:none;}.ant-modal-root .ant-modal.ant-zoom-leave .ant-modal-content{pointer-events:none;}.ant-modal-root .ant-modal-mask{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1000;height:100%;background-color:rgba(0, 0, 0, 0.45);}.ant-modal-root .ant-modal-mask .ant-modal-hidden{display:none;}.ant-modal-root .ant-modal-wrap{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-modal-root .ant-fade-enter,.ant-modal-root .ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-modal-root .ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-modal-root .ant-fade-enter.ant-fade-enter-active,.ant-modal-root .ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-modal-root .ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-modal-root .ant-fade-enter,.ant-modal-root .ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-modal-root .ant-fade-leave{animation-timing-function:linear;}.ant-zoom-enter,.ant-zoom-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-enter.ant-zoom-enter-active,.ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running;}.ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none;}.ant-zoom-enter,.ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-enter-prepare,.ant-zoom-appear-prepare{transform:none;}.ant-zoom-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\\\\"ant-statistic\\\\\"],[class*=\\\\\" ant-statistic\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-statistic\\\\\"]::before,[class*=\\\\\" ant-statistic\\\\\"]::before,[class^=\\\\\"ant-statistic\\\\\"]::after,[class*=\\\\\" ant-statistic\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"],[class*=\\\\\" ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"],[class^=\\\\\"ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"],[class*=\\\\\" ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"]::before,[class*=\\\\\" ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"]::before,[class^=\\\\\"ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"]::before,[class*=\\\\\" ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"]::before,[class^=\\\\\"ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"]::after,[class*=\\\\\" ant-statistic\\\\\"] [class^=\\\\\"ant-statistic\\\\\"]::after,[class^=\\\\\"ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"]::after,[class*=\\\\\" ant-statistic\\\\\"] [class*=\\\\\" ant-statistic\\\\\"]::after{box-sizing:border-box;}.ant-statistic{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-statistic .ant-statistic-title{margin-bottom:4px;color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-statistic .ant-statistic-skeleton{padding-top:16px;}.ant-statistic .ant-statistic-content{color:rgba(255, 255, 255, 0.85);font-size:24px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-statistic .ant-statistic-content .ant-statistic-content-value{display:inline-block;direction:ltr;}.ant-statistic .ant-statistic-content .ant-statistic-content-prefix,.ant-statistic .ant-statistic-content .ant-statistic-content-suffix{display:inline-block;}.ant-statistic .ant-statistic-content .ant-statistic-content-prefix{margin-inline-end:4px;}.ant-statistic .ant-statistic-content .ant-statistic-content-suffix{margin-inline-start:4px;}[class^=\\\\\"ant-skeleton\\\\\"],[class*=\\\\\" ant-skeleton\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-skeleton\\\\\"]::before,[class*=\\\\\" ant-skeleton\\\\\"]::before,[class^=\\\\\"ant-skeleton\\\\\"]::after,[class*=\\\\\" ant-skeleton\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"],[class*=\\\\\" ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"],[class^=\\\\\"ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"],[class*=\\\\\" ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"]::before,[class*=\\\\\" ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"]::before,[class^=\\\\\"ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"]::before,[class*=\\\\\" ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"]::before,[class^=\\\\\"ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"]::after,[class*=\\\\\" ant-skeleton\\\\\"] [class^=\\\\\"ant-skeleton\\\\\"]::after,[class^=\\\\\"ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"]::after,[class*=\\\\\" ant-skeleton\\\\\"] [class*=\\\\\" ant-skeleton\\\\\"]::after{box-sizing:border-box;}.ant-skeleton{display:table;width:100%;}.ant-skeleton .ant-skeleton-header{display:table-cell;padding-inline-end:16px;vertical-align:top;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);width:32px;height:32px;line-height:32px;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-circle{border-radius:50%;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-lg{width:40px;height:40px;line-height:40px;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-sm{width:24px;height:24px;line-height:24px;}.ant-skeleton .ant-skeleton-content{display:table-cell;width:100%;vertical-align:top;}.ant-skeleton .ant-skeleton-content .ant-skeleton-title{width:100%;height:16px;background:rgba(255, 255, 255, 0.12);border-radius:4px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-title +.ant-skeleton-paragraph{margin-block-start:24px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph{padding:0;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph >li{width:100%;height:16px;list-style:none;background:rgba(255, 255, 255, 0.12);border-radius:4px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph >li +li{margin-block-start:16px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph>li:last-child:not(:first-child):not(:nth-child(2)){width:61%;}.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title,.ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph>li{border-radius:100px;}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title{margin-block-start:12px;}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title +.ant-skeleton-paragraph{margin-block-start:28px;}.ant-skeleton.ant-skeleton-element{display:inline-block;width:auto;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:64px;min-width:64px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle{width:32px;min-width:32px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round{border-radius:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg{width:80px;min-width:80px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-circle{width:40px;min-width:40px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-round{border-radius:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm{width:48px;min-width:48px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-circle{width:24px;min-width:24px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-round{border-radius:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);width:32px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-lg{width:40px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-sm{width:24px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:160px;min-width:160px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input-lg{width:200px;min-width:200px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input-sm{width:120px;min-width:120px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image{display:flex;align-items:center;justify-content:center;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:96px;height:96px;line-height:96px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-path{fill:#bfbfbf;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-svg{width:48px;height:48px;line-height:48px;max-width:192px;max-height:192px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-svg.ant-skeleton-image-svg-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image.ant-skeleton-image-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-block{width:100%;}.ant-skeleton.ant-skeleton-block .ant-skeleton-button{width:100%;}.ant-skeleton.ant-skeleton-block .ant-skeleton-input{width:100%;}.ant-skeleton.ant-skeleton-active .ant-skeleton-title,.ant-skeleton.ant-skeleton-active .ant-skeleton-paragraph>li,.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar,.ant-skeleton.ant-skeleton-active .ant-skeleton-button,.ant-skeleton.ant-skeleton-active .ant-skeleton-input,.ant-skeleton.ant-skeleton-active .ant-skeleton-image{position:relative;z-index:0;overflow:hidden;background:transparent;}.ant-skeleton.ant-skeleton-active .ant-skeleton-title::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-paragraph>li::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-button::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-input::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-image::after{position:absolute;top:0;inset-inline-end:-150%;bottom:0;inset-inline-start:-150%;background:linear-gradient(90deg, rgba(255, 255, 255, 0.12) 25%, rgba(255, 255, 255, 0.18) 37%, rgba(255, 255, 255, 0.12) 63%);animation-name:ant-skeleton-loading;animation-duration:1.4s;animation-timing-function:ease;animation-iteration-count:infinite;content:\\\\\"\\\\\";}@keyframes ant-skeleton-loading{0%{transform:translateX(-37.5%);}100%{transform:translateX(37.5%);}}[class^=\\\\\"ant-page-header\\\\\"],[class*=\\\\\" ant-page-header\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-page-header\\\\\"]::before,[class*=\\\\\" ant-page-header\\\\\"]::before,[class^=\\\\\"ant-page-header\\\\\"]::after,[class*=\\\\\" ant-page-header\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"],[class*=\\\\\" ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"],[class^=\\\\\"ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"],[class*=\\\\\" ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"]::before,[class*=\\\\\" ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"]::before,[class^=\\\\\"ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"]::before,[class*=\\\\\" ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"]::before,[class^=\\\\\"ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"]::after,[class*=\\\\\" ant-page-header\\\\\"] [class^=\\\\\"ant-page-header\\\\\"]::after,[class^=\\\\\"ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"]::after,[class*=\\\\\" ant-page-header\\\\\"] [class*=\\\\\" ant-page-header\\\\\"]::after{box-sizing:border-box;}.ant-page-header{box-sizing:border-box;margin:0;padding:20px 24px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;background-color:#141414;}.ant-page-header.ant-page-header-ghost{background-color:transparent;}.ant-page-header.has-footer{padding-bottom:0;}.ant-page-header .ant-page-header-back{margin-right:20px;font-size:16px;line-height:1;}.ant-page-header .ant-page-header-back-button{color:#fff;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;}.ant-page-header .ant-page-header-back-button:focus,.ant-page-header .ant-page-header-back-button:hover{color:#15417e;}.ant-page-header .ant-page-header-back-button:active{color:#1554ad;}.ant-page-header .ant-divider-vertical{height:14px;margin:0 12;vertical-align:middle;}.ant-breadcrumb+.ant-page-header-heading{margin-top:8px;}.ant-page-header .ant-page-header-heading{display:flex;justify-content:space-between;}.ant-page-header .ant-page-header-heading-left{display:flex;align-items:center;margin:4px 0;overflow:hidden;}.ant-page-header .ant-page-header-heading-title{margin-right:12px;margin-bottom:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:20px;line-height:32px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-page-header .ant-page-header-heading .ant-avatar{margin-right:12px;}.ant-page-header .ant-page-header-heading-sub-title{margin-right:12px;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-page-header .ant-page-header-heading-extra{margin:4px 0;white-space:nowrap;}.ant-page-header .ant-page-header-heading-extra >*{margin-left:12px;white-space:unset;}.ant-page-header .ant-page-header-heading-extra >*:first-child{margin-left:0;}.ant-page-header .ant-page-header-content{padding-top:12px;}.ant-page-header .ant-page-header-footer{margin-top:20px;}.ant-page-header .ant-page-header-footer .ant-tabs >.ant-tabs-nav{margin:0;}.ant-page-header .ant-page-header-footer .ant-tabs >.ant-tabs-nav::before{border:none;}.ant-page-header .ant-page-header-footer .ant-tabs .ant-tabs-tab{padding-top:8px;padding-bottom:8px;font-size:16px;}.ant-page-header .ant-page-header-compact .ant-page-header-heading{flex-wrap:wrap;}.ant-page-header.ant-page-header-rtl{direction:rtl;}[class^=\\\\\"ant-pagination\\\\\"],[class*=\\\\\" ant-pagination\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-pagination\\\\\"]::before,[class*=\\\\\" ant-pagination\\\\\"]::before,[class^=\\\\\"ant-pagination\\\\\"]::after,[class*=\\\\\" ant-pagination\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"],[class*=\\\\\" ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"],[class^=\\\\\"ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"],[class*=\\\\\" ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"]::before,[class*=\\\\\" ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"]::before,[class^=\\\\\"ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"]::before,[class*=\\\\\" ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"]::before,[class^=\\\\\"ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"]::after,[class*=\\\\\" ant-pagination\\\\\"] [class^=\\\\\"ant-pagination\\\\\"]::after,[class^=\\\\\"ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"]::after,[class*=\\\\\" ant-pagination\\\\\"] [class*=\\\\\" ant-pagination\\\\\"]::after{box-sizing:border-box;}.ant-pagination{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-pagination ul,.ant-pagination ol{margin:0;padding:0;list-style:none;}.ant-pagination::after{display:block;clear:both;height:0;overflow:hidden;visibility:hidden;content:\\\\\"\\\\\";}.ant-pagination .ant-pagination-total-text{display:inline-block;height:32px;margin-inline-end:8px;line-height:30px;vertical-align:middle;}.ant-pagination .ant-pagination-item{display:inline-block;min-width:32px;height:32px;margin-inline-end:8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:30px;text-align:center;vertical-align:middle;list-style:none;background-color:transparent;border:1px solid transparent;border-radius:6px;outline:0;cursor:pointer;user-select:none;}.ant-pagination .ant-pagination-item a{display:block;padding:0 6px;color:rgba(255, 255, 255, 0.85);transition:none;}.ant-pagination .ant-pagination-item a:hover{text-decoration:none;}.ant-pagination .ant-pagination-item:not(.ant-pagination-item-active):hover{transition:all 0.2s;background-color:rgba(255, 255, 255, 0.12);}.ant-pagination .ant-pagination-item:not(.ant-pagination-item-active):active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination .ant-pagination-item:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-item-active{font-weight:600;background-color:#141414;border-color:#037003;}.ant-pagination .ant-pagination-item-active a{color:#037003;}.ant-pagination .ant-pagination-item-active:hover{border-color:#198016;}.ant-pagination .ant-pagination-item-active:hover a{color:#198016;}.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{outline:0;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container{position:relative;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon{color:#037003;font-size:12px;opacity:0;transition:all 0.2s;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg{top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;margin:auto;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;display:block;margin:auto;color:rgba(255, 255, 255, 0.25);font-family:Arial,Helvetica,sans-serif;letter-spacing:2px;text-align:center;text-indent:0.13em;opacity:1;transition:all 0.2s;}.ant-pagination .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next:hover .ant-pagination-item-link-icon{opacity:1;}.ant-pagination .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis{opacity:0;}.ant-pagination .ant-pagination-jump-prev:focus-visible,.ant-pagination .ant-pagination-jump-next:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-jump-prev:focus-visible .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next:focus-visible .ant-pagination-item-link-icon{opacity:1;}.ant-pagination .ant-pagination-jump-prev:focus-visible .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next:focus-visible .ant-pagination-item-ellipsis{opacity:0;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{margin-inline-end:8px;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next,.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{display:inline-block;min-width:32px;height:32px;color:rgba(255, 255, 255, 0.85);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;text-align:center;vertical-align:middle;list-style:none;border-radius:6px;cursor:pointer;transition:all 0.2s;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next{font-family:Arial,Helvetica,sans-serif;outline:0;}.ant-pagination .ant-pagination-prev button,.ant-pagination .ant-pagination-next button{color:rgba(255, 255, 255, 0.85);cursor:pointer;user-select:none;}.ant-pagination .ant-pagination-prev .ant-pagination-item-link,.ant-pagination .ant-pagination-next .ant-pagination-item-link{display:block;width:100%;height:100%;padding:0;font-size:12px;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:6px;outline:none;transition:all 0.2s;}.ant-pagination .ant-pagination-prev:focus-visible .ant-pagination-item-link,.ant-pagination .ant-pagination-next:focus-visible .ant-pagination-item-link{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination .ant-pagination-next:hover .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination .ant-pagination-prev:active .ant-pagination-item-link,.ant-pagination .ant-pagination-next:active .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination .ant-pagination-prev.ant-pagination-disabled:hover .ant-pagination-item-link,.ant-pagination .ant-pagination-next.ant-pagination-disabled:hover .ant-pagination-item-link{background-color:transparent;}.ant-pagination .ant-pagination-slash{margin-inline-end:12px;margin-inline-start:4px;}.ant-pagination .ant-pagination-options{display:inline-block;margin-inline-start:16px;vertical-align:middle;}.ant-pagination .ant-pagination-options-size-changer.-select{display:inline-block;width:auto;}.ant-pagination .ant-pagination-options-quick-jumper{display:inline-block;height:32px;margin-inline-start:8px;line-height:32px;vertical-align:top;}.ant-pagination .ant-pagination-options-quick-jumper input{position:relative;display:inline-block;width:50px;min-width:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;height:32px;box-sizing:border-box;margin:0;margin-inline-start:8px;margin-inline-end:8px;}.ant-pagination .ant-pagination-options-quick-jumper input::-moz-placeholder{opacity:1;}.ant-pagination .ant-pagination-options-quick-jumper input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-pagination .ant-pagination-options-quick-jumper input:placeholder-shown{text-overflow:ellipsis;}.ant-pagination .ant-pagination-options-quick-jumper input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-pagination .ant-pagination-options-quick-jumper input:focus,.ant-pagination .ant-pagination-options-quick-jumper input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-pagination .ant-pagination-options-quick-jumper input-disabled,.ant-pagination .ant-pagination-options-quick-jumper input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-pagination .ant-pagination-options-quick-jumper input-disabled:hover,.ant-pagination .ant-pagination-options-quick-jumper input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-pagination .ant-pagination-options-quick-jumper input-borderless,.ant-pagination .ant-pagination-options-quick-jumper input-borderless:hover,.ant-pagination .ant-pagination-options-quick-jumper input-borderless:focus,.ant-pagination .ant-pagination-options-quick-jumper input-borderless-focused,.ant-pagination .ant-pagination-options-quick-jumper input-borderless-disabled,.ant-pagination .ant-pagination-options-quick-jumper input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-pagination .ant-pagination-options-quick-jumper input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-pagination .ant-pagination-options-quick-jumper input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-pagination .ant-pagination-options-quick-jumper input-sm{padding:0px 7px;border-radius:4px;}.ant-pagination .ant-pagination-options-quick-jumper input-rtl{direction:rtl;}.ant-pagination .ant-pagination-options-quick-jumper input-textarea-rtl{direction:rtl;}.ant-pagination.ant-pagination-simple .ant-pagination-prev,.ant-pagination.ant-pagination-simple .ant-pagination-next{height:24px;line-height:24px;vertical-align:top;}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link{height:24px;background-color:transparent;border:0;}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:active,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link::after,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link::after{height:24px;line-height:24px;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager{display:inline-block;height:24px;margin-inline-end:8px;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input{box-sizing:border-box;height:100%;margin-inline-end:8px;padding:0 6px;text-align:center;background-color:#141414;border:1px solid #424242;border-radius:6px;outline:none;transition:border-color 0.2s;color:inherit;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#037003;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input:focus{border-color:#198016;box-shadow:0 0px 0 2px rgba(0, 53, 0, 0.15);}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-pagination.ant-pagination-mini .ant-pagination-total-text,.ant-pagination.ant-pagination-mini .ant-pagination-simple-pager{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-item{min-width:24px;height:24px;margin:0;line-height:22px;}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active){background-color:transparent;border-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active):active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-mini .ant-pagination-prev,.ant-pagination.ant-pagination-mini .ant-pagination-next{min-width:24px;height:24px;margin:0;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next:hover .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-mini .ant-pagination-prev:active .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next:active .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-mini .ant-pagination-prev.ant-pagination-disabled:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next.ant-pagination-disabled:hover .ant-pagination-item-link{background-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link{background-color:transparent;border-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link::after,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link::after{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-jump-prev,.ant-pagination.ant-pagination-mini .ant-pagination-jump-next{height:24px;margin-inline-end:0;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-options{margin-inline-start:2px;}.ant-pagination.ant-pagination-mini .ant-pagination-options-size-changer{top:0;}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper input{padding:0px 7px;border-radius:4px;width:44px;height:24px;}.ant-pagination .ant-pagination-disabled,.ant-pagination .ant-pagination-disabled:hover{cursor:not-allowed;}.ant-pagination .ant-pagination-disabled .ant-pagination-item-link,.ant-pagination .ant-pagination-disabled:hover .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination .ant-pagination-disabled:focus-visible{cursor:not-allowed;}.ant-pagination .ant-pagination-disabled:focus-visible .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination.ant-pagination-disabled{cursor:not-allowed;}.ant-pagination.ant-pagination-disabled.ant-pagination-mini:hover .ant-pagination-item:not(.ant-pagination-item-active),.ant-pagination.ant-pagination-disabled.ant-pagination-mini:active .ant-pagination-item:not(.ant-pagination-item-active),.ant-pagination.ant-pagination-disabled.ant-pagination-mini:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-disabled.ant-pagination-mini:active .ant-pagination-item-link{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-item{cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item:active{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-item a{color:rgba(255, 255, 255, 0.25);background-color:transparent;border:none;cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active{border-color:#424242;background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item-active:active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a{color:rgba(255, 255, 255, 0.25);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{background-color:transparent;}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager{color:rgba(255, 255, 255, 0.25);}.ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev .ant-pagination-item-link-icon,.ant-pagination.ant-pagination-disabled .ant-pagination-jump-next .ant-pagination-item-link-icon{opacity:0;}.ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev .ant-pagination-item-ellipsis,.ant-pagination.ant-pagination-disabled .ant-pagination-jump-next .ant-pagination-item-ellipsis{opacity:1;}.ant-pagination.ant-pagination-simple .ant-pagination-prev.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-next.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-prev.ant-pagination-disabled .ant-pagination-item-link:active,.ant-pagination.ant-pagination-simple .ant-pagination-next.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}@media only screen and (max-width: 992px){.ant-pagination .ant-pagination-item-after-jump-prev,.ant-pagination .ant-pagination-item-before-jump-next{display:none;}}@media only screen and (max-width: 576px){.ant-pagination .ant-pagination-options{display:none;}}.ant-pagination-rtl{direction:rtl;}[class^=\\\\\"ant-popconfirm\\\\\"],[class*=\\\\\" ant-popconfirm\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-popconfirm\\\\\"]::before,[class*=\\\\\" ant-popconfirm\\\\\"]::before,[class^=\\\\\"ant-popconfirm\\\\\"]::after,[class*=\\\\\" ant-popconfirm\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"],[class*=\\\\\" ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"],[class^=\\\\\"ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"],[class*=\\\\\" ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"]::before,[class*=\\\\\" ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"]::before,[class^=\\\\\"ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"]::before,[class*=\\\\\" ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"]::before,[class^=\\\\\"ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"]::after,[class*=\\\\\" ant-popconfirm\\\\\"] [class^=\\\\\"ant-popconfirm\\\\\"]::after,[class^=\\\\\"ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"]::after,[class*=\\\\\" ant-popconfirm\\\\\"] [class*=\\\\\" ant-popconfirm\\\\\"]::after{box-sizing:border-box;}.ant-popconfirm{z-index:1060;}.ant-popconfirm .ant-popconfirm-inner-content{color:rgba(255, 255, 255, 0.85);}.ant-popconfirm .ant-popconfirm-message{position:relative;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;display:flex;flex-wrap:nowrap;align-items:start;}.ant-popconfirm .ant-popconfirm-message >.ant-popconfirm-message-icon .anticon{color:#d89614;font-size:14px;flex:none;line-height:1;padding-top:4px;}.ant-popconfirm .ant-popconfirm-message-title{flex:auto;margin-inline-start:8px;}.ant-popconfirm .ant-popconfirm-message-title-only{font-weight:600;}.ant-popconfirm .ant-popconfirm-description{position:relative;margin-inline-start:22px;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-popconfirm .ant-popconfirm-buttons{text-align:end;}.ant-popconfirm .ant-popconfirm-buttons button{margin-inline-start:8px;}[class^=\\\\\"ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"],[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::after,[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::after{box-sizing:border-box;}.ant-popover{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:0;left:0;z-index:1030;font-weight:normal;white-space:normal;text-align:start;cursor:auto;user-select:text;--antd-arrow-background-color:#1f1f1f;}.ant-popover-rtl{direction:rtl;}.ant-popover-hidden{display:none;}.ant-popover .ant-popover-content{position:relative;}.ant-popover .ant-popover-inner{background-color:#1f1f1f;background-clip:padding-box;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);padding:12px;}.ant-popover .ant-popover-title{min-width:177px;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-weight:600;}.ant-popover .ant-popover-inner-content{color:rgba(255, 255, 255, 0.85);}.ant-popover .ant-popover-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-popover .ant-popover-arrow::after{content:\\\\\"\\\\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-popover .ant-popover-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:var(--antd-arrow-background-color);clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\\\\"\\\\\";}.ant-popover .ant-popover-arrow:before{background:var(--antd-arrow-background-color);}.ant-popover-placement-top .ant-popover-arrow,.ant-popover-placement-topLeft .ant-popover-arrow,.ant-popover-placement-topRight .ant-popover-arrow{bottom:0;transform:translateY(100%) rotate(180deg);}.ant-popover-placement-top .ant-popover-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-popover-placement-topLeft .ant-popover-arrow{left:6px;}.ant-popover-placement-topRight .ant-popover-arrow{right:6px;}.ant-popover-placement-bottom .ant-popover-arrow,.ant-popover-placement-bottomLeft .ant-popover-arrow,.ant-popover-placement-bottomRight .ant-popover-arrow{top:0;transform:translateY(-100%);}.ant-popover-placement-bottom .ant-popover-arrow{left:50%;transform:translateX(-50%) translateY(-100%);}.ant-popover-placement-bottomLeft .ant-popover-arrow{left:6px;}.ant-popover-placement-bottomRight .ant-popover-arrow{right:6px;}.ant-popover-placement-left .ant-popover-arrow,.ant-popover-placement-leftTop .ant-popover-arrow,.ant-popover-placement-leftBottom .ant-popover-arrow{right:0;transform:translateX(100%) rotate(90deg);}.ant-popover-placement-left .ant-popover-arrow{top:50%;transform:translateY(-50%) translateX(100%) rotate(90deg);}.ant-popover-placement-leftTop .ant-popover-arrow{top:6px;}.ant-popover-placement-leftBottom .ant-popover-arrow{bottom:6px;}.ant-popover-placement-right .ant-popover-arrow,.ant-popover-placement-rightTop .ant-popover-arrow,.ant-popover-placement-rightBottom .ant-popover-arrow{left:0;transform:translateX(-100%) rotate(-90deg);}.ant-popover-placement-right .ant-popover-arrow{top:50%;transform:translateY(-50%) translateX(-100%) rotate(-90deg);}.ant-popover-placement-rightTop .ant-popover-arrow{top:6px;}.ant-popover-placement-rightBottom .ant-popover-arrow{bottom:6px;}.ant-popover-placement-topLeft,.ant-popover-placement-top,.ant-popover-placement-topRight{padding-bottom:12px;}.ant-popover-placement-bottomLeft,.ant-popover-placement-bottom,.ant-popover-placement-bottomRight{padding-top:12px;}.ant-popover-placement-leftTop,.ant-popover-placement-left,.ant-popover-placement-leftBottom{padding-right:12px;}.ant-popover-placement-rightTop,.ant-popover-placement-right,.ant-popover-placement-rightBottom{padding-left:12px;}.ant-popover-pure{position:relative;max-width:none;}.ant-popover-pure .ant-popover-content{display:inline-block;}.ant-popover.ant-popover-blue{--antd-arrow-background-color:#1668dc;}.ant-popover.ant-popover-blue .ant-popover-inner{background-color:#1668dc;}.ant-popover.ant-popover-blue .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-purple{--antd-arrow-background-color:#642ab5;}.ant-popover.ant-popover-purple .ant-popover-inner{background-color:#642ab5;}.ant-popover.ant-popover-purple .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-cyan{--antd-arrow-background-color:#13a8a8;}.ant-popover.ant-popover-cyan .ant-popover-inner{background-color:#13a8a8;}.ant-popover.ant-popover-cyan .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-green{--antd-arrow-background-color:#49aa19;}.ant-popover.ant-popover-green .ant-popover-inner{background-color:#49aa19;}.ant-popover.ant-popover-green .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-magenta{--antd-arrow-background-color:#cb2b83;}.ant-popover.ant-popover-magenta .ant-popover-inner{background-color:#cb2b83;}.ant-popover.ant-popover-magenta .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-pink{--antd-arrow-background-color:#cb2b83;}.ant-popover.ant-popover-pink .ant-popover-inner{background-color:#cb2b83;}.ant-popover.ant-popover-pink .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-red{--antd-arrow-background-color:#d32029;}.ant-popover.ant-popover-red .ant-popover-inner{background-color:#d32029;}.ant-popover.ant-popover-red .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-orange{--antd-arrow-background-color:#d87a16;}.ant-popover.ant-popover-orange .ant-popover-inner{background-color:#d87a16;}.ant-popover.ant-popover-orange .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-yellow{--antd-arrow-background-color:#d8bd14;}.ant-popover.ant-popover-yellow .ant-popover-inner{background-color:#d8bd14;}.ant-popover.ant-popover-yellow .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-volcano{--antd-arrow-background-color:#d84a1b;}.ant-popover.ant-popover-volcano .ant-popover-inner{background-color:#d84a1b;}.ant-popover.ant-popover-volcano .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-geekblue{--antd-arrow-background-color:#2b4acb;}.ant-popover.ant-popover-geekblue .ant-popover-inner{background-color:#2b4acb;}.ant-popover.ant-popover-geekblue .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-lime{--antd-arrow-background-color:#8bbb11;}.ant-popover.ant-popover-lime .ant-popover-inner{background-color:#8bbb11;}.ant-popover.ant-popover-lime .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-gold{--antd-arrow-background-color:#d89614;}.ant-popover.ant-popover-gold .ant-popover-inner{background-color:#d89614;}.ant-popover.ant-popover-gold .ant-popover-arrow{background:transparent;}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\\\\"ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"],[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"],[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::before,[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::before,[class^=\\\\\"ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"] [class^=\\\\\"ant-popover\\\\\"]::after,[class^=\\\\\"ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::after,[class*=\\\\\" ant-popover\\\\\"] [class*=\\\\\" ant-popover\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-progress\\\\\"],[class*=\\\\\" ant-progress\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-progress\\\\\"]::before,[class*=\\\\\" ant-progress\\\\\"]::before,[class^=\\\\\"ant-progress\\\\\"]::after,[class*=\\\\\" ant-progress\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"],[class*=\\\\\" ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"],[class^=\\\\\"ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"],[class*=\\\\\" ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"]::before,[class*=\\\\\" ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"]::before,[class^=\\\\\"ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"]::before,[class*=\\\\\" ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"]::before,[class^=\\\\\"ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"]::after,[class*=\\\\\" ant-progress\\\\\"] [class^=\\\\\"ant-progress\\\\\"]::after,[class^=\\\\\"ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"]::after,[class*=\\\\\" ant-progress\\\\\"] [class*=\\\\\" ant-progress\\\\\"]::after{box-sizing:border-box;}.ant-progress{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;}.ant-progress-rtl{direction:rtl;}.ant-progress-line{position:relative;width:100%;font-size:14px;margin-inline-end:8px;margin-bottom:8px;}.ant-progress .ant-progress-outer{display:inline-block;width:100%;}.ant-progress.ant-progress-show-info .ant-progress-outer{margin-inline-end:calc(-2em - 8px);padding-inline-end:calc(2em + 8px);}.ant-progress .ant-progress-inner{position:relative;display:inline-block;width:100%;overflow:hidden;vertical-align:middle;background-color:rgba(255, 255, 255, 0.12);border-radius:100px;}.ant-progress .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1668dc;}.ant-progress .ant-progress-success-bg,.ant-progress .ant-progress-bg{position:relative;background-color:#1668dc;border-radius:100px;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-progress .ant-progress-success-bg{position:absolute;inset-block-start:0;inset-inline-start:0;background-color:#49aa19;}.ant-progress .ant-progress-text{display:inline-block;width:2em;margin-inline-start:8px;color:rgba(255, 255, 255, 0.85);line-height:1;white-space:nowrap;text-align:start;vertical-align:middle;word-break:normal;}.ant-progress .ant-progress-text .anticon{font-size:14px;}.ant-progress.ant-progress-status-active .ant-progress-bg::before{position:absolute;inset:0;background-color:#141414;border-radius:100px;opacity:0;animation-name:antProgressActive;animation-duration:2.4s;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);animation-iteration-count:infinite;content:\\\\\"\\\\\";}.ant-progress.ant-progress-status-exception .ant-progress-bg{background-color:#dc4446;}.ant-progress.ant-progress-status-exception .ant-progress-text{color:#dc4446;}.ant-progress.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#dc4446;}.ant-progress.ant-progress-status-success .ant-progress-bg{background-color:#49aa19;}.ant-progress.ant-progress-status-success .ant-progress-text{color:#49aa19;}.ant-progress.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#49aa19;}.ant-progress .ant-progress-circle-trail{stroke:rgba(255, 255, 255, 0.12);}.ant-progress.ant-progress-circle .ant-progress-inner{position:relative;line-height:1;background-color:transparent;}.ant-progress.ant-progress-circle .ant-progress-text{position:absolute;inset-block-start:50%;inset-inline-start:0;width:100%;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);line-height:1;white-space:normal;text-align:center;transform:translateY(-50%);}.ant-progress.ant-progress-circle .ant-progress-text .anticon{font-size:1.1666666666666667em;}.ant-progress-circle.ant-progress-status-exception .ant-progress-text{color:#dc4446;}.ant-progress-circle.ant-progress-status-success .ant-progress-text{color:#49aa19;}.ant-progress-inline-circle{line-height:1;}.ant-progress-inline-circle .ant-progress-inner{vertical-align:bottom;}.ant-progress .ant-progress-steps{display:inline-block;}.ant-progress .ant-progress-steps-outer{display:flex;flex-direction:row;align-items:center;}.ant-progress .ant-progress-steps-item{flex-shrink:0;min-width:2px;margin-inline-end:2px;background-color:rgba(255, 255, 255, 0.12);transition:all 0.3s;}.ant-progress .ant-progress-steps-item-active{background-color:#1668dc;}.ant-progress-small.ant-progress-line,.ant-progress-small.ant-progress-line .ant-progress-text .anticon{font-size:12px;}@keyframes antProgressActive{0%{transform:translateX(-100%) scaleX(0);opacity:0.1;}20%{transform:translateX(-100%) scaleX(0);opacity:0.5;}to{transform:translateX(0) scaleX(1);opacity:0;}}[class^=\\\\\"ant-rate\\\\\"],[class*=\\\\\" ant-rate\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-rate\\\\\"]::before,[class*=\\\\\" ant-rate\\\\\"]::before,[class^=\\\\\"ant-rate\\\\\"]::after,[class*=\\\\\" ant-rate\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"],[class*=\\\\\" ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"],[class^=\\\\\"ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"],[class*=\\\\\" ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"]::before,[class*=\\\\\" ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"]::before,[class^=\\\\\"ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"]::before,[class*=\\\\\" ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"]::before,[class^=\\\\\"ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"]::after,[class*=\\\\\" ant-rate\\\\\"] [class^=\\\\\"ant-rate\\\\\"]::after,[class^=\\\\\"ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"]::after,[class*=\\\\\" ant-rate\\\\\"] [class*=\\\\\" ant-rate\\\\\"]::after{box-sizing:border-box;}.ant-rate{box-sizing:border-box;margin:0;padding:0;color:#d8bd14;font-size:20px;line-height:unset;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;outline:none;}.ant-rate-disabled.ant-rate .ant-rate-star{cursor:default;}.ant-rate-disabled.ant-rate .ant-rate-star:hover{transform:scale(1);}.ant-rate .ant-rate-star{position:relative;display:inline-block;color:inherit;cursor:pointer;}.ant-rate .ant-rate-star:not(:last-child){margin-inline-end:8px;}.ant-rate .ant-rate-star >div{transition:all 0.2s,outline 0s;}.ant-rate .ant-rate-star >div:hover{transform:scale(1.1);}.ant-rate .ant-rate-star >div:focus{outline:0;}.ant-rate .ant-rate-star >div:focus-visible{outline:1px dashed #d8bd14;transform:scale(1.1);}.ant-rate .ant-rate-star-first,.ant-rate .ant-rate-star-second{color:rgba(255, 255, 255, 0.12);transition:all 0.2s;user-select:none;}.ant-rate .ant-rate-star-first .anticon,.ant-rate .ant-rate-star-second .anticon{vertical-align:middle;}.ant-rate .ant-rate-star-first{position:absolute;top:0;inset-inline-start:0;width:50%;height:100%;overflow:hidden;opacity:0;}.ant-rate .ant-rate-star-half .ant-rate-star-first,.ant-rate .ant-rate-star-half .ant-rate-star-second{opacity:1;}.ant-rate .ant-rate-star-half .ant-rate-star-first,.ant-rate .ant-rate-star-full .ant-rate-star-second{color:inherit;}.ant-rate +.ant-rate-text{display:inline-block;margin-inline-start:8px;font-size:14px;}.ant-rate-rtl.ant-rate{direction:rtl;}[class^=\\\\\"ant-result\\\\\"],[class*=\\\\\" ant-result\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-result\\\\\"]::before,[class*=\\\\\" ant-result\\\\\"]::before,[class^=\\\\\"ant-result\\\\\"]::after,[class*=\\\\\" ant-result\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"],[class*=\\\\\" ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"],[class^=\\\\\"ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"],[class*=\\\\\" ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"]::before,[class*=\\\\\" ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"]::before,[class^=\\\\\"ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"]::before,[class*=\\\\\" ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"]::before,[class^=\\\\\"ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"]::after,[class*=\\\\\" ant-result\\\\\"] [class^=\\\\\"ant-result\\\\\"]::after,[class^=\\\\\"ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"]::after,[class*=\\\\\" ant-result\\\\\"] [class*=\\\\\" ant-result\\\\\"]::after{box-sizing:border-box;}.ant-result{padding:48px 32px;}.ant-result-rtl{direction:rtl;}.ant-result .ant-result-image{width:250px;height:295px;margin:auto;}.ant-result .ant-result-icon{margin-bottom:24px;text-align:center;}.ant-result .ant-result-icon>.anticon{font-size:72px;}.ant-result .ant-result-title{color:rgba(255, 255, 255, 0.85);font-size:24px;line-height:1.3333333333333333;margin-block:8px;text-align:center;}.ant-result .ant-result-subtitle{color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-result .ant-result-content{margin-top:24px;padding:24px 40px;background-color:rgba(255, 255, 255, 0.04);}.ant-result .ant-result-extra{margin:24px 0 0 0;text-align:center;}.ant-result .ant-result-extra>*{margin-inline-end:8px;}.ant-result .ant-result-extra>*:last-child{margin-inline-end:0;}.ant-result-success .ant-result-icon>.anticon{color:#49aa19;}.ant-result-error .ant-result-icon>.anticon{color:#dc4446;}.ant-result-info .ant-result-icon>.anticon{color:#1668dc;}.ant-result-warning .ant-result-icon>.anticon{color:#d89614;}[class^=\\\\\"ant-slider\\\\\"],[class*=\\\\\" ant-slider\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-slider\\\\\"]::before,[class*=\\\\\" ant-slider\\\\\"]::before,[class^=\\\\\"ant-slider\\\\\"]::after,[class*=\\\\\" ant-slider\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"],[class*=\\\\\" ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"],[class^=\\\\\"ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"],[class*=\\\\\" ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"]::before,[class*=\\\\\" ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"]::before,[class^=\\\\\"ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"]::before,[class*=\\\\\" ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"]::before,[class^=\\\\\"ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"]::after,[class*=\\\\\" ant-slider\\\\\"] [class^=\\\\\"ant-slider\\\\\"]::after,[class^=\\\\\"ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"]::after,[class*=\\\\\" ant-slider\\\\\"] [class*=\\\\\" ant-slider\\\\\"]::after{box-sizing:border-box;}.ant-slider{box-sizing:border-box;margin:11px 5px;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;height:10px;cursor:pointer;touch-action:none;}.ant-slider-vertical{margin:5px 11px;}.ant-slider .ant-slider-rail{position:absolute;background-color:rgba(255, 255, 255, 0.08);border-radius:2px;transition:background-color 0.2s;}.ant-slider .ant-slider-track{position:absolute;background-color:#0e340e;border-radius:2px;transition:background-color 0.2s;}.ant-slider:hover .ant-slider-rail{background-color:rgba(255, 255, 255, 0.12);}.ant-slider:hover .ant-slider-track{background-color:#0b450b;}.ant-slider:hover .ant-slider-dot{border-color:rgba(255, 255, 255, 0.18);}.ant-slider:hover .ant-slider-handle::after{box-shadow:0 0 0 2px #0b450b;}.ant-slider:hover .ant-slider-dot-active{border-color:#037003;}.ant-slider .ant-slider-handle{position:absolute;width:10px;height:10px;outline:none;}.ant-slider .ant-slider-handle .ant-slider-dragging{z-index:1;}.ant-slider .ant-slider-handle::before{content:\\\\\"\\\\\";position:absolute;inset-inline-start:-2px;inset-block-start:-2px;width:14px;height:14px;background-color:transparent;}.ant-slider .ant-slider-handle::after{content:\\\\\"\\\\\";position:absolute;inset-block-start:0;inset-inline-start:0;width:10px;height:10px;background-color:#1f1f1f;box-shadow:0 0 0 2px #0e340e;border-radius:50%;cursor:pointer;transition:inset-inline-start 0.2s,inset-block-start 0.2s,width 0.2s,height 0.2s,box-shadow 0.2s;}.ant-slider .ant-slider-handle:hover::before,.ant-slider .ant-slider-handle:active::before,.ant-slider .ant-slider-handle:focus::before{inset-inline-start:-5px;inset-block-start:-5px;width:20px;height:20px;}.ant-slider .ant-slider-handle:hover::after,.ant-slider .ant-slider-handle:active::after,.ant-slider .ant-slider-handle:focus::after{box-shadow:0 0 0 4px #037003;width:12px;height:12px;inset-inline-start:-1px;inset-block-start:-1px;}.ant-slider .ant-slider-mark{position:absolute;font-size:14px;}.ant-slider .ant-slider-mark-text{position:absolute;display:inline-block;color:rgba(255, 255, 255, 0.45);text-align:center;word-break:keep-all;cursor:pointer;user-select:none;}.ant-slider .ant-slider-mark-text-active{color:rgba(255, 255, 255, 0.85);}.ant-slider .ant-slider-step{position:absolute;background:transparent;pointer-events:none;}.ant-slider .ant-slider-dot{position:absolute;width:8px;height:8px;background-color:#1f1f1f;border:2px solid #303030;border-radius:50%;cursor:pointer;transition:border-color 0.3s;}.ant-slider .ant-slider-dot-active{border-color:#0e340e;}.ant-slider.ant-slider-disabled{cursor:not-allowed;}.ant-slider.ant-slider-disabled .ant-slider-rail{background-color:rgba(255, 255, 255, 0.12)!important;}.ant-slider.ant-slider-disabled .ant-slider-track{background-color:rgba(255, 255, 255, 0.25)!important;}.ant-slider.ant-slider-disabled .ant-slider-dot{background-color:#1f1f1f;border-color:rgba(255, 255, 255, 0.25);box-shadow:none;cursor:not-allowed;}.ant-slider.ant-slider-disabled .ant-slider-handle::after{background-color:#1f1f1f;cursor:not-allowed;width:10px;height:10px;box-shadow:0 0 0 2px #4f4f4f;inset-inline-start:0;inset-block-start:0;}.ant-slider.ant-slider-disabled .ant-slider-mark-text,.ant-slider.ant-slider-disabled .ant-slider-dot{cursor:not-allowed!important;}.ant-slider-horizontal{padding-block:4px;height:12px;}.ant-slider-horizontal .ant-slider-rail{width:100%;height:4px;}.ant-slider-horizontal .ant-slider-track{height:4px;}.ant-slider-horizontal .ant-slider-handle{inset-block-start:1px;}.ant-slider-horizontal .ant-slider-mark{inset-inline-start:0;top:10px;width:100%;}.ant-slider-horizontal .ant-slider-step{inset-inline-start:0;top:4px;width:100%;height:4px;}.ant-slider-horizontal .ant-slider-dot{position:absolute;inset-block-start:-2px;}.ant-slider-horizontal.ant-slider-with-marks{margin-bottom:30px;}.ant-slider-vertical{padding-inline:4px;width:12px;height:100%;}.ant-slider-vertical .ant-slider-rail{height:100%;width:4px;}.ant-slider-vertical .ant-slider-track{width:4px;}.ant-slider-vertical .ant-slider-handle{inset-inline-start:1px;}.ant-slider-vertical .ant-slider-mark{inset-inline-start:10px;top:0;height:100%;}.ant-slider-vertical .ant-slider-step{inset-inline-start:4px;top:0;height:100%;width:4px;}.ant-slider-vertical .ant-slider-dot{position:absolute;inset-inline-start:-2px;}[class^=\\\\\"ant-space\\\\\"],[class*=\\\\\" ant-space\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-space\\\\\"]::before,[class*=\\\\\" ant-space\\\\\"]::before,[class^=\\\\\"ant-space\\\\\"]::after,[class*=\\\\\" ant-space\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"],[class*=\\\\\" ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"],[class^=\\\\\"ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"],[class*=\\\\\" ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"]::before,[class*=\\\\\" ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"]::before,[class^=\\\\\"ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"]::before,[class*=\\\\\" ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"]::before,[class^=\\\\\"ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"]::after,[class*=\\\\\" ant-space\\\\\"] [class^=\\\\\"ant-space\\\\\"]::after,[class^=\\\\\"ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"]::after,[class*=\\\\\" ant-space\\\\\"] [class*=\\\\\" ant-space\\\\\"]::after{box-sizing:border-box;}.ant-space{display:inline-flex;}.ant-space-rtl{direction:rtl;}.ant-space-vertical{flex-direction:column;}.ant-space-align{flex-direction:column;}.ant-space-align-center{align-items:center;}.ant-space-align-start{align-items:flex-start;}.ant-space-align-end{align-items:flex-end;}.ant-space-align-baseline{align-items:baseline;}.ant-space .ant-space-space-item:empty{display:none;}.ant-space{display:inline-flex;}.ant-space-block{display:flex;width:100%;}.ant-space-vertical{flex-direction:column;}[class^=\\\\\"ant-space-compact\\\\\"],[class*=\\\\\" ant-space-compact\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-space-compact\\\\\"]::before,[class*=\\\\\" ant-space-compact\\\\\"]::before,[class^=\\\\\"ant-space-compact\\\\\"]::after,[class*=\\\\\" ant-space-compact\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"],[class*=\\\\\" ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"],[class^=\\\\\"ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"],[class*=\\\\\" ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"]::before,[class*=\\\\\" ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"]::before,[class^=\\\\\"ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"]::before,[class*=\\\\\" ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"]::before,[class^=\\\\\"ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"]::after,[class*=\\\\\" ant-space-compact\\\\\"] [class^=\\\\\"ant-space-compact\\\\\"]::after,[class^=\\\\\"ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"]::after,[class*=\\\\\" ant-space-compact\\\\\"] [class*=\\\\\" ant-space-compact\\\\\"]::after{box-sizing:border-box;}.ant-space-compact{display:inline-flex;}.ant-space-compact-rtl{direction:rtl;}.ant-space-compact-vertical{flex-direction:column;}.ant-space-compact-align{flex-direction:column;}.ant-space-compact-align-center{align-items:center;}.ant-space-compact-align-start{align-items:flex-start;}.ant-space-compact-align-end{align-items:flex-end;}.ant-space-compact-align-baseline{align-items:baseline;}.ant-space-compact .ant-space-compact-space-item:empty{display:none;}.ant-space-compact{display:inline-flex;}.ant-space-compact-block{display:flex;width:100%;}.ant-space-compact-vertical{flex-direction:column;}[class^=\\\\\"ant-steps\\\\\"],[class*=\\\\\" ant-steps\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-steps\\\\\"]::before,[class*=\\\\\" ant-steps\\\\\"]::before,[class^=\\\\\"ant-steps\\\\\"]::after,[class*=\\\\\" ant-steps\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"],[class*=\\\\\" ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"],[class^=\\\\\"ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"],[class*=\\\\\" ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"]::before,[class*=\\\\\" ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"]::before,[class^=\\\\\"ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"]::before,[class*=\\\\\" ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"]::before,[class^=\\\\\"ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"]::after,[class*=\\\\\" ant-steps\\\\\"] [class^=\\\\\"ant-steps\\\\\"]::after,[class^=\\\\\"ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"]::after,[class*=\\\\\" ant-steps\\\\\"] [class*=\\\\\" ant-steps\\\\\"]::after{box-sizing:border-box;}.ant-steps{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:0;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;width:100%;text-align:initial;}.ant-steps .ant-steps-item{position:relative;display:inline-block;flex:1;overflow:hidden;vertical-align:top;}.ant-steps .ant-steps-item:last-child{flex:none;}.ant-steps .ant-steps-item:last-child >.ant-steps-item-container>.ant-steps-item-tail,.ant-steps .ant-steps-item:last-child >.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{display:none;}.ant-steps .ant-steps-item-container{outline:none;}.ant-steps .ant-steps-item-icon,.ant-steps .ant-steps-item-content{display:inline-block;vertical-align:top;}.ant-steps .ant-steps-item-icon{width:32px;height:32px;margin-top:0;margin-bottom:0;margin-inline-start:0;margin-inline-end:8px;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;text-align:center;border-radius:32px;border:1px solid transparent;transition:background-color 0.3s,border-color 0.3s;}.ant-steps .ant-steps-item-icon .ant-steps-icon{position:relative;top:-0.5px;color:#037003;line-height:1;}.ant-steps .ant-steps-item-tail{position:absolute;top:12px;inset-inline-start:0;width:100%;}.ant-steps .ant-steps-item-tail::after{display:inline-block;width:100%;height:1px;background:rgba(253, 253, 253, 0.12);border-radius:1px;transition:background 0.3s;content:\\\\\"\\\\\";}.ant-steps .ant-steps-item-title{position:relative;display:inline-block;padding-inline-end:16px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:32px;}.ant-steps .ant-steps-item-title::after{position:absolute;top:16px;inset-inline-start:100%;display:block;width:9999px;height:1px;background:rgba(253, 253, 253, 0.12);content:\\\\\"\\\\\";}.ant-steps .ant-steps-item-subtitle{display:inline;margin-inline-start:8px;color:rgba(255, 255, 255, 0.45);font-weight:normal;font-size:14px;}.ant-steps .ant-steps-item-description{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-steps .ant-steps-item-wait .ant-steps-item-icon{background-color:rgba(255, 255, 255, 0.12);border-color:transparent;}.ant-steps .ant-steps-item-wait .ant-steps-item-icon >.ant-steps-icon{color:rgba(255, 255, 255, 0.65);}.ant-steps .ant-steps-item-wait .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:rgba(255, 255, 255, 0.25);}.ant-steps .ant-steps-item-wait.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:rgba(255, 255, 255, 0.25);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process .ant-steps-item-icon{background-color:#037003;border-color:#037003;}.ant-steps .ant-steps-item-process .ant-steps-item-icon >.ant-steps-icon{color:#fff;}.ant-steps .ant-steps-item-process .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#037003;}.ant-steps .ant-steps-item-process.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-title{font-weight:600;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon{background-color:#111911;border-color:#111911;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#037003;}.ant-steps .ant-steps-item-finish.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:#037003;}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:#037003;}.ant-steps .ant-steps-item-error .ant-steps-item-icon{background-color:#dc4446;border-color:#dc4446;}.ant-steps .ant-steps-item-error .ant-steps-item-icon >.ant-steps-icon{color:#fff;}.ant-steps .ant-steps-item-error .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#dc4446;}.ant-steps .ant-steps-item-error.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item.ant-steps-next-error>.ant-steps-item-title::after{background:#dc4446;}.ant-steps .ant-steps-item-disabled{cursor:not-allowed;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']{cursor:pointer;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-icon .ant-steps-icon{transition:color 0.3s;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-description{color:#037003;}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role='button']:hover .ant-steps-item-icon{border-color:#037003;}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon{color:#037003;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-inline-start:16px;white-space:nowrap;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-inline-start:0;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-inline-end:0;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail{display:none;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description{max-width:140px;white-space:normal;}.ant-steps .ant-steps-item-custom >.ant-steps-item-container>.ant-steps-item-icon{height:auto;background:none;border:0;}.ant-steps .ant-steps-item-custom >.ant-steps-item-container>.ant-steps-item-icon >.ant-steps-icon{top:0;width:32px;height:32px;font-size:20px;line-height:32px;}.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon{width:auto;background:none;}.ant-steps.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-inline-start:12px;}.ant-steps.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-inline-start:0;}.ant-steps.ant-steps-small .ant-steps-item-icon{width:24px;height:24px;margin-top:0;margin-bottom:0;margin-inline:0 8px;font-size:12px;line-height:24px;text-align:center;border-radius:24px;}.ant-steps.ant-steps-small .ant-steps-item-title{padding-inline-end:12px;font-size:14px;line-height:24px;}.ant-steps.ant-steps-small .ant-steps-item-title::after{top:12px;}.ant-steps.ant-steps-small .ant-steps-item-description{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-steps.ant-steps-small .ant-steps-item-tail{top:8px;}.ant-steps.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon{width:inherit;height:inherit;line-height:inherit;background:none;border:0;border-radius:0;}.ant-steps.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{font-size:24px;line-height:24px;transform:none;}.ant-steps.ant-steps-vertical{display:flex;flex-direction:column;}.ant-steps.ant-steps-vertical >.ant-steps-item{display:block;flex:1 0 auto;padding-inline-start:0;overflow:visible;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-icon{float:left;margin-inline-end:16px;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-content{display:block;min-height:48px;overflow:hidden;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-title{line-height:32px;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-description{padding-bottom:12px;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{position:absolute;top:0;inset-inline-start:15px;width:1px;height:100%;padding:38px 0 6px;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail::after{width:1px;height:100%;}.ant-steps.ant-steps-vertical >.ant-steps-item:not(:last-child)>.ant-steps-item-container>.ant-steps-item-tail{display:block;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{position:absolute;top:0;inset-inline-start:11px;padding:30px 0 6px;}.ant-steps.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title{line-height:24px;}.ant-steps.ant-steps-label-vertical .ant-steps-item{overflow:visible;}.ant-steps.ant-steps-label-vertical .ant-steps-item-tail{margin-inline-start:56px;padding:4px 24px;}.ant-steps.ant-steps-label-vertical .ant-steps-item-content{display:block;width:112px;margin-top:12px;text-align:center;}.ant-steps.ant-steps-label-vertical .ant-steps-item-icon{display:inline-block;margin-inline-start:40px;}.ant-steps.ant-steps-label-vertical .ant-steps-item-title{padding-inline-end:0;padding-inline-start:0;}.ant-steps.ant-steps-label-vertical .ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-label-vertical .ant-steps-item-subtitle{display:block;margin-bottom:4px;margin-inline-start:0;line-height:1.5714285714285714;}.ant-steps.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon{margin-inline-start:44px;}.ant-steps.ant-steps-dot .ant-steps-item-title,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-title{line-height:1.5714285714285714;}.ant-steps.ant-steps-dot .ant-steps-item-tail,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-tail{top:2px;width:100%;margin-top:0;margin-bottom:0;margin-inline:70px 0;padding:0;}.ant-steps.ant-steps-dot .ant-steps-item-tail::after,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after{width:calc(100% - 24px);height:3px;margin-inline-start:12px;}.ant-steps.ant-steps-dot .ant-steps-item-icon,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon{width:8px;height:8px;margin-inline-start:66px;padding-inline-end:0;line-height:8px;background:transparent;border:0;}.ant-steps.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{position:relative;float:left;width:100%;height:100%;border-radius:100px;transition:all 0.3s;}.ant-steps.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after{position:absolute;top:-12px;inset-inline-start:-26px;width:60px;height:32px;background:transparent;content:\\\\\"\\\\\";}.ant-steps.ant-steps-dot .ant-steps-item-content,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-content{width:140px;}.ant-steps.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{position:relative;top:-1px;width:10px;height:10px;line-height:10px;background:none;margin-inline-start:65px;}.ant-steps.ant-steps-dot .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot{inset-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-top:12px;margin-inline-start:0;background:none;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon{margin-top:11px;top:0;inset-inline-start:-1px;margin-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:12px;inset-inline-start:0;margin:0;padding:16px 0 8px;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail::after{margin-inline-start:3.5px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-top:8px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{margin-top:7px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:8px;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{inset-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-content{width:inherit;}.ant-steps.ant-steps-navigation{padding-top:12px;}.ant-steps.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-inline-start:-12px;}.ant-steps.ant-steps-navigation .ant-steps-item{overflow:visible;text-align:center;}.ant-steps.ant-steps-navigation .ant-steps-item-container{display:inline-block;height:100%;margin-inline-start:-16px;padding-bottom:12px;text-align:start;transition:opacity 0.3s;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content{max-width:auto;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{max-width:100%;padding-inline-end:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']{cursor:pointer;}.ant-steps.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']:hover{opacity:0.85;}.ant-steps.ant-steps-navigation .ant-steps-item:last-child{flex:1;}.ant-steps.ant-steps-navigation .ant-steps-item:last-child::after{display:none;}.ant-steps.ant-steps-navigation .ant-steps-item::after{position:absolute;top:calc(50% - 6px);inset-inline-start:100%;display:inline-block;width:12px;height:12px;border-top:1px solid rgba(255, 255, 255, 0.25);border-bottom:none;border-inline-start:none;border-inline-end:1px solid rgba(255, 255, 255, 0.25);transform:translateY(-50%) translateX(-50%) rotate(45deg);content:\\\\\"\\\\\";}.ant-steps.ant-steps-navigation .ant-steps-item::before{position:absolute;bottom:0;inset-inline-start:50%;display:inline-block;width:0;height:2px;background-color:#037003;transition:width 0.3s,inset-inline-start 0.3s;transition-timing-function:ease-out;content:\\\\\"\\\\\";}.ant-steps.ant-steps-navigation .ant-steps-item.ant-steps-item-active::before{inset-inline-start:0;width:100%;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item{margin-inline-end:0;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item::before{display:none;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item.ant-steps-item-active::before{top:0;inset-inline-end:0;inset-inline-start:unset;display:block;width:3px;height:calc(100% - 24px);}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item::after{position:relative;inset-inline-start:50%;display:block;width:8px;height:8px;margin-bottom:8px;text-align:center;transform:translateY(-50%) translateX(-50%) rotate(135deg);}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item >.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden;}.ant-steps.ant-steps-navigation.ant-steps-horizontal >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden;}.ant-steps.ant-steps-rtl{direction:rtl;}.ant-steps.ant-steps-rtl .ant-steps-item-subtitle{float:left;}.ant-steps.ant-steps-rtl.ant-steps-navigation .ant-steps-item::after{transform:rotate(-45deg);}.ant-steps.ant-steps-rtl.ant-steps-vertical >.ant-steps-item::after{transform:rotate(225deg);}.ant-steps.ant-steps-rtl.ant-steps-vertical >.ant-steps-item .ant-steps-item-icon{float:right;}.ant-steps.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{float:right;}.ant-steps.ant-steps-with-progress .ant-steps-item{padding-top:4px;}.ant-steps.ant-steps-with-progress .ant-steps-item-process .ant-steps-item-container .ant-steps-item-icon .ant-steps-icon{color:#fff;}.ant-steps.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item{padding-inline-start:4px;}.ant-steps.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item >.ant-steps-item-container>.ant-steps-item-tail{top:4px;inset-inline-start:19px;}.ant-steps.ant-steps-with-progress.ant-steps-horizontal .ant-steps-item:first-child,.ant-steps.ant-steps-with-progress.ant-steps-small.ant-steps-horizontal .ant-steps-item:first-child{padding-bottom:4px;padding-inline-start:4px;}.ant-steps.ant-steps-with-progress.ant-steps-small.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{inset-inline-start:15px;}.ant-steps.ant-steps-with-progress.ant-steps-label-vertical .ant-steps-item .ant-steps-item-tail{top:14px;}.ant-steps.ant-steps-with-progress .ant-steps-item-icon{position:relative;}.ant-steps.ant-steps-with-progress .ant-steps-item-icon .ant-progress{position:absolute;inset-block-start:-5px;inset-inline-start:-5px;}.ant-steps.ant-steps-inline{width:auto;display:inline-flex;}.ant-steps.ant-steps-inline .ant-steps-item{flex:none;}.ant-steps.ant-steps-inline .ant-steps-item-container{padding:9px 4px 0;margin:0 2px;border-radius:4px;cursor:pointer;transition:background-color 0.2s;}.ant-steps.ant-steps-inline .ant-steps-item-container:hover{background:rgba(255, 255, 255, 0.08);}.ant-steps.ant-steps-inline .ant-steps-item-container[role='button']:hover{opacity:1;}.ant-steps.ant-steps-inline .ant-steps-item-icon{width:6px;height:6px;margin-inline-start:calc(50% - 3px);}.ant-steps.ant-steps-inline .ant-steps-item-icon >.ant-steps-icon{top:0;}.ant-steps.ant-steps-inline .ant-steps-item-icon .ant-steps-icon-dot{border-radius:3px;}.ant-steps.ant-steps-inline .ant-steps-item-content{width:auto;margin-top:7px;}.ant-steps.ant-steps-inline .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);font-size:12px;line-height:1.6666666666666667;font-weight:normal;margin-bottom:2px;}.ant-steps.ant-steps-inline .ant-steps-item-description{display:none;}.ant-steps.ant-steps-inline .ant-steps-item-tail{margin-inline-start:0;top:12px;transform:translateY(-50%);}.ant-steps.ant-steps-inline .ant-steps-item-tail:after{width:100%;height:1px;border-radius:0;margin-inline-start:0;background:#303030;}.ant-steps.ant-steps-inline .ant-steps-item:first-child .ant-steps-item-tail{width:50%;margin-inline-start:50%;}.ant-steps.ant-steps-inline .ant-steps-item:last-child .ant-steps-item-tail{display:block;width:50%;}.ant-steps.ant-steps-inline .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon .ant-steps-icon-dot{background-color:#141414;border:1px solid #303030;}.ant-steps.ant-steps-inline .ant-steps-item-wait .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-tail::after{background-color:#303030;}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon .ant-steps-icon-dot{background-color:#303030;border:1px solid #303030;}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-error .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-active .ant-steps-item-icon,.ant-steps.ant-steps-inline .ant-steps-item-process .ant-steps-item-icon{width:6px;height:6px;margin-inline-start:calc(50% - 3px);top:0;}.ant-steps.ant-steps-inline .ant-steps-item-active .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title,.ant-steps.ant-steps-inline .ant-steps-item-process .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}[class^=\\\\\"ant-switch\\\\\"],[class*=\\\\\" ant-switch\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-switch\\\\\"]::before,[class*=\\\\\" ant-switch\\\\\"]::before,[class^=\\\\\"ant-switch\\\\\"]::after,[class*=\\\\\" ant-switch\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"],[class*=\\\\\" ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"],[class^=\\\\\"ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"],[class*=\\\\\" ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"]::before,[class*=\\\\\" ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"]::before,[class^=\\\\\"ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"]::before,[class*=\\\\\" ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"]::before,[class^=\\\\\"ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"]::after,[class*=\\\\\" ant-switch\\\\\"] [class^=\\\\\"ant-switch\\\\\"]::after,[class^=\\\\\"ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"]::after,[class*=\\\\\" ant-switch\\\\\"] [class*=\\\\\" ant-switch\\\\\"]::after{box-sizing:border-box;}.ant-switch{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;min-width:44px;height:22px;vertical-align:middle;background:rgba(255, 255, 255, 0.25);border:0;border-radius:100px;cursor:pointer;transition:all 0.2s;user-select:none;}.ant-switch:hover:not(.ant-switch-disabled){background:rgba(255, 255, 255, 0.45);}.ant-switch:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-switch.ant-switch-checked{background:#037003;}.ant-switch.ant-switch-checked:hover:not(.ant-switch-disabled){background:#198016;}.ant-switch.ant-switch-loading,.ant-switch.ant-switch-disabled{cursor:not-allowed;opacity:0.65;}.ant-switch.ant-switch-loading *,.ant-switch.ant-switch-disabled *{box-shadow:none;cursor:not-allowed;}.ant-switch.ant-switch-rtl{direction:rtl;}.ant-switch .ant-switch-inner{display:block;overflow:hidden;border-radius:100px;height:100%;padding-inline-start:24px;padding-inline-end:9px;transition:padding-inline-start 0.2s ease-in-out,padding-inline-end 0.2s ease-in-out;}.ant-switch .ant-switch-inner .ant-switch-inner-checked,.ant-switch .ant-switch-inner .ant-switch-inner-unchecked{display:block;color:#fff;font-size:12px;transition:margin-inline-start 0.2s ease-in-out,margin-inline-end 0.2s ease-in-out;pointer-events:none;}.ant-switch .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:calc(-100% + 22px - 48px);margin-inline-end:calc(100% - 22px + 48px);}.ant-switch .ant-switch-inner .ant-switch-inner-unchecked{margin-top:-22px;margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-checked .ant-switch-inner{padding-inline-start:9px;padding-inline-end:24px;}.ant-switch.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-checked .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:calc(100% - 22px + 48px);margin-inline-end:calc(-100% + 22px - 48px);}.ant-switch:not(.ant-switch-disabled):active:not(.ant-switch-checked) .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:4px;margin-inline-end:-4px;}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:-4px;margin-inline-end:4px;}.ant-switch .ant-switch-handle{position:absolute;top:2px;inset-inline-start:2px;width:18px;height:18px;transition:all 0.2s ease-in-out;}.ant-switch .ant-switch-handle::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;background-color:#fff;border-radius:9px;box-shadow:0 2px 4px 0 rgba(0, 35, 11, 0.2);transition:all 0.2s ease-in-out;content:\\\\\"\\\\\";}.ant-switch.ant-switch-checked .ant-switch-handle{inset-inline-start:calc(100% - 20px);}.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle::before{inset-inline-end:-30%;inset-inline-start:0;}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle::before{inset-inline-end:0;inset-inline-start:-30%;}.ant-switch .ant-switch-loading-icon.anticon{position:relative;top:2px;color:rgba(0, 0, 0, 0.65);vertical-align:top;}.ant-switch.ant-switch-checked .ant-switch-loading-icon{color:#037003;}.ant-switch.ant-switch-small{min-width:28px;height:16px;line-height:16px;}.ant-switch.ant-switch-small .ant-switch-inner{padding-inline-start:18px;padding-inline-end:6px;}.ant-switch.ant-switch-small .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:calc(-100% + 16px - 36px);margin-inline-end:calc(100% - 16px + 36px);}.ant-switch.ant-switch-small .ant-switch-inner .ant-switch-inner-unchecked{margin-top:-16px;margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-small .ant-switch-handle{width:12px;height:12px;}.ant-switch.ant-switch-small .ant-switch-loading-icon{top:1.5px;font-size:9px;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner{padding-inline-start:6px;padding-inline-end:18px;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:calc(100% - 16px + 36px);margin-inline-end:calc(-100% + 16px - 36px);}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-handle{inset-inline-start:calc(100% - 14px);}.ant-switch.ant-switch-small:not(.ant-switch-disabled):active:not(.ant-switch-checked) .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:2px;margin-inline-end:-2px;}.ant-switch.ant-switch-small:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:-2px;margin-inline-end:2px;}[class^=\\\\\"ant-table\\\\\"],[class*=\\\\\" ant-table\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-table\\\\\"]::before,[class*=\\\\\" ant-table\\\\\"]::before,[class^=\\\\\"ant-table\\\\\"]::after,[class*=\\\\\" ant-table\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"],[class*=\\\\\" ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"],[class^=\\\\\"ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"],[class*=\\\\\" ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"]::before,[class*=\\\\\" ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"]::before,[class^=\\\\\"ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"]::before,[class*=\\\\\" ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"]::before,[class^=\\\\\"ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"]::after,[class*=\\\\\" ant-table\\\\\"] [class^=\\\\\"ant-table\\\\\"]::after,[class^=\\\\\"ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"]::after,[class*=\\\\\" ant-table\\\\\"] [class*=\\\\\" ant-table\\\\\"]::after{box-sizing:border-box;}.ant-table-wrapper{clear:both;max-width:100%;}.ant-table-wrapper::before{display:table;content:\\\\\"\\\\\";}.ant-table-wrapper::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-table-wrapper .ant-table{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;border-radius:8px 8px 0 0;}.ant-table-wrapper table{width:100%;text-align:start;border-radius:8px 8px 0 0;border-collapse:separate;border-spacing:0;}.ant-table-wrapper .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-tbody>tr>td,.ant-table-wrapper tfoot>tr>th,.ant-table-wrapper tfoot>tr>td{position:relative;padding:16px 16px;overflow-wrap:break-word;}.ant-table-wrapper .ant-table-title{padding:16px 16px;}.ant-table-wrapper .ant-table-thead >tr>th,.ant-table-wrapper .ant-table-thead >tr>td{position:relative;color:rgba(255, 255, 255, 0.85);font-weight:600;text-align:start;background:#1d1d1d;border-bottom:1px solid #303030;transition:background 0.2s ease;}.ant-table-wrapper .ant-table-thead >tr>th[colspan]:not([colspan='1']),.ant-table-wrapper .ant-table-thead >tr>td[colspan]:not([colspan='1']){text-align:center;}.ant-table-wrapper .ant-table-thead >tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before,.ant-table-wrapper .ant-table-thead >tr>td:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before{position:absolute;top:50%;inset-inline-end:0;width:1px;height:1.6em;background-color:#303030;transform:translateY(-50%);transition:background-color 0.2s;content:\\\\\"\\\\\";}.ant-table-wrapper .ant-table-thead >tr:not(:last-child)>th[colspan]{border-bottom:0;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr >td{border-top:1px solid #303030;border-bottom:transparent;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr:last-child>td{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr:first-child>td,.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr.ant-table-measure-row+tr>td{border-top:none;border-top-color:transparent;}.ant-table-wrapper .ant-table.ant-table-bordered .ant-table-tbody >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table-tbody >tr >td{transition:background 0.2s,border-color 0.2s;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table{margin-block:-16px;margin-inline:32px -16px;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td{border-bottom:0;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:first-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:first-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:last-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:last-child{border-radius:0;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row:hover>td,.ant-table-wrapper .ant-table-tbody >tr >td.ant-table-cell-row-hover{background:#1d1d1d;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row-selected >td{background:#111911;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row-selected:hover>td{background:#0f2510;}.ant-table-wrapper .ant-table-footer{padding:16px 16px;color:rgba(255, 255, 255, 0.85);background:#1d1d1d;}.ant-table-wrapper .ant-table-pagination.ant-pagination{margin:16px 0;}.ant-table-wrapper .ant-table-pagination{display:flex;flex-wrap:wrap;row-gap:8px;}.ant-table-wrapper .ant-table-pagination >*{flex:none;}.ant-table-wrapper .ant-table-pagination-left{justify-content:flex-start;}.ant-table-wrapper .ant-table-pagination-center{justify-content:center;}.ant-table-wrapper .ant-table-pagination-right{justify-content:flex-end;}.ant-table-wrapper .ant-table-summary{position:relative;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-summary >tr >th,.ant-table-wrapper .ant-table-summary >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper div.ant-table-summary{box-shadow:0 -1px 0 #303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters{outline:none;cursor:pointer;transition:all 0.3s;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover::before{background-color:transparent!important;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:focus-visible{color:#037003;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover,.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-sort{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-sort::before{background-color:transparent!important;}.ant-table-wrapper td.ant-table-column-sort{background:#1d1d1d;}.ant-table-wrapper .ant-table-column-title{position:relative;z-index:1;flex:1;}.ant-table-wrapper .ant-table-column-sorters{display:flex;flex:auto;align-items:center;justify-content:space-between;}.ant-table-wrapper .ant-table-column-sorters::after{position:absolute;inset:0;width:100%;height:100%;content:\\\\\"\\\\\";}.ant-table-wrapper .ant-table-column-sorter{margin-inline-start:4px;color:rgba(255, 255, 255, 0.29);font-size:0;transition:color 0.3s;}.ant-table-wrapper .ant-table-column-sorter-inner{display:inline-flex;flex-direction:column;align-items:center;}.ant-table-wrapper .ant-table-column-sorter-up,.ant-table-wrapper .ant-table-column-sorter-down{font-size:12px;}.ant-table-wrapper .ant-table-column-sorter-up.active,.ant-table-wrapper .ant-table-column-sorter-down.active{color:#037003;}.ant-table-wrapper .ant-table-column-sorter .ant-table-column-sorter-up+.ant-table-column-sorter-down{margin-top:-0.3em;}.ant-table-wrapper .ant-table-column-sorters:hover .ant-table-column-sorter{color:rgba(255, 255, 255, 0.55);}.ant-table-wrapper .ant-table-filter-column{display:flex;justify-content:space-between;}.ant-table-wrapper .ant-table-filter-trigger{position:relative;display:flex;align-items:center;margin-block:-4px;margin-inline:4px -8px;padding:0 4px;color:rgba(255, 255, 255, 0.29);font-size:12px;border-radius:6px;cursor:pointer;transition:all 0.3s;}.ant-table-wrapper .ant-table-filter-trigger:hover{color:rgba(255, 255, 255, 0.45);background:rgba(255, 255, 255, 0.12);}.ant-table-wrapper .ant-table-filter-trigger.active{color:#037003;}.ant-dropdown .ant-table-filter-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';min-width:120px;background-color:#141414;border-radius:6px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-dropdown .ant-table-filter-dropdown .ant-dropdown-menu{max-height:264px;overflow-x:hidden;border:0;box-shadow:none;}.ant-dropdown .ant-table-filter-dropdown .ant-dropdown-menu:empty::after{display:block;padding:8px 0;color:rgba(255, 255, 255, 0.25);font-size:12px;text-align:center;content:\\\\\"Not Found\\\\\";}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree{padding-block:8px 0;padding-inline:8px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree{padding:0;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper,.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper:hover{background-color:#111911;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search{padding:8px;border-bottom:1px solid #303030;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search-input input{min-width:140px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search-input .anticon{color:rgba(255, 255, 255, 0.25);}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-checkall{width:100%;margin-bottom:4px;margin-inline-start:4px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-btns{display:flex;justify-content:space-between;padding:7px 8px;overflow:hidden;background-color:inherit;border-top:1px solid #303030;}.ant-dropdown .ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-inline-start:8px;color:rgba(255, 255, 255, 0.85);}.ant-dropdown .ant-table-filter-dropdown >ul,.ant-table-filter-dropdown-submenu >ul{max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-title{border:1px solid #303030;border-bottom:0;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container{border-inline-start:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr>td{border-inline-end:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead >tr:not(:last-child)>th{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead >tr>th::before{background-color:transparent!important;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr >.ant-table-cell-fix-right-first::after{border-inline-end:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td >.ant-table-expanded-row-fixed{margin:-16px -17px;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td >.ant-table-expanded-row-fixed::after{position:absolute;top:0;inset-inline-end:1px;bottom:0;border-inline-end:1px solid #303030;content:\\\\\"\\\\\";}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table{border-top:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-scroll-horizontal >.ant-table-container>.ant-table-body >table>tbody >tr.ant-table-expanded-row >td,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-scroll-horizontal >.ant-table-container>.ant-table-body >table>tbody >tr.ant-table-placeholder >td{border-inline-end:0;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-middle >.ant-table-container >.ant-table-content >table>tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-middle >.ant-table-container >.ant-table-body >table>tbody>tr>td >.ant-table-expanded-row-fixed{margin:-12px -9px;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-small >.ant-table-container >.ant-table-content >table>tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-small >.ant-table-container >.ant-table-body >table>tbody>tr>td >.ant-table-expanded-row-fixed{margin:-8px -9px;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-footer{border:1px solid #303030;border-top:0;}.ant-table-wrapper .ant-table-cell .ant-table-container:first-child{border-top:0;}.ant-table-wrapper .ant-table-cell-scrollbar:not([rowspan]){box-shadow:0 1px 0 1px #1d1d1d;}.ant-table-wrapper .ant-table .ant-table-title,.ant-table-wrapper .ant-table .ant-table-header{border-radius:8px 8px 0 0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container{border-start-start-radius:0;border-start-end-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table{border-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table >thead>tr:first-child th:first-child{border-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table >thead>tr:first-child th:last-child{border-radius:0;}.ant-table-wrapper .ant-table-container{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-table-wrapper .ant-table-container table>thead>tr:first-child >*:first-child{border-start-start-radius:8px;}.ant-table-wrapper .ant-table-container table>thead>tr:first-child >*:last-child{border-start-end-radius:8px;}.ant-table-wrapper .ant-table-footer{border-radius:0 0 8px 8px;}.ant-table-wrapper .ant-table-expand-icon-col{width:48px;}.ant-table-wrapper .ant-table-row-expand-icon-cell{text-align:center;}.ant-table-wrapper .ant-table-row-expand-icon-cell .ant-table-row-expand-icon{display:inline-flex;float:none;vertical-align:sub;}.ant-table-wrapper .ant-table-row-indent{height:1px;float:left;}.ant-table-wrapper .ant-table-row-expand-icon{color:inherit;text-decoration:none;outline:none;cursor:pointer;transition:all 0.3s;position:relative;float:left;box-sizing:border-box;width:17px;height:17px;padding:0;line-height:17px;background:#141414;border:1px solid #303030;border-radius:6px;transform:scale(0.9411764705882353);user-select:none;}.ant-table-wrapper .ant-table-row-expand-icon:focus,.ant-table-wrapper .ant-table-row-expand-icon:hover{color:#15417e;}.ant-table-wrapper .ant-table-row-expand-icon:active{color:#1554ad;}.ant-table-wrapper .ant-table-row-expand-icon:focus,.ant-table-wrapper .ant-table-row-expand-icon:hover,.ant-table-wrapper .ant-table-row-expand-icon:active{border-color:currentcolor;}.ant-table-wrapper .ant-table-row-expand-icon::before,.ant-table-wrapper .ant-table-row-expand-icon::after{position:absolute;background:currentcolor;transition:transform 0.3s ease-out;content:\\\\\"\\\\\";}.ant-table-wrapper .ant-table-row-expand-icon::before{top:7px;inset-inline-end:3px;inset-inline-start:3px;height:1px;}.ant-table-wrapper .ant-table-row-expand-icon::after{top:3px;bottom:3px;inset-inline-start:7px;width:1px;transform:rotate(90deg);}.ant-table-wrapper .ant-table-row-expand-icon-collapsed::before{transform:rotate(-180deg);}.ant-table-wrapper .ant-table-row-expand-icon-collapsed::after{transform:rotate(0deg);}.ant-table-wrapper .ant-table-row-expand-icon-spaced{background:transparent;border:0;visibility:hidden;}.ant-table-wrapper .ant-table-row-expand-icon-spaced::before,.ant-table-wrapper .ant-table-row-expand-icon-spaced::after{display:none;content:none;}.ant-table-wrapper .ant-table-row-indent+.ant-table-row-expand-icon{margin-top:2.5px;margin-inline-end:8px;}.ant-table-wrapper tr.ant-table-expanded-row >td,.ant-table-wrapper tr.ant-table-expanded-row:hover >td{background:rgba(255, 255, 255, 0.04);}.ant-table-wrapper tr.ant-table-expanded-row .ant-descriptions-view{display:flex;}.ant-table-wrapper tr.ant-table-expanded-row .ant-descriptions-view table{flex:auto;width:auto;}.ant-table-wrapper .ant-table-expanded-row-fixed{position:relative;margin:-16px -16px;padding:16px 16px;}.ant-table-wrapper .ant-table-summary{position:relative;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-summary >tr >th,.ant-table-wrapper .ant-table-summary >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper div.ant-table-summary{box-shadow:0 -1px 0 #303030;}.ant-table-wrapper .ant-table-tbody>tr.ant-table-placeholder{text-align:center;color:rgba(255, 255, 255, 0.25);}.ant-table-wrapper .ant-table-tbody>tr.ant-table-placeholder:hover>td{background:#141414;}.ant-table-wrapper .ant-table-selection-col{width:32px;}.ant-table-wrapper .ant-table-bordered .ant-table-selection-col{width:48px;}.ant-table-wrapper table tr th.ant-table-selection-column,.ant-table-wrapper table tr td.ant-table-selection-column{padding-inline-end:8px;padding-inline-start:8px;text-align:center;}.ant-table-wrapper table tr th.ant-table-selection-column .ant-radio-wrapper,.ant-table-wrapper table tr td.ant-table-selection-column .ant-radio-wrapper{margin-inline-end:0;}.ant-table-wrapper table tr th.ant-table-selection-column.ant-table-cell-fix-left{z-index:3;}.ant-table-wrapper table tr th.ant-table-selection-column::after{background-color:transparent!important;}.ant-table-wrapper .ant-table-selection{position:relative;display:inline-flex;flex-direction:column;}.ant-table-wrapper .ant-table-selection-extra{position:absolute;top:0;z-index:1;cursor:pointer;transition:all 0.3s;margin-inline-start:100%;padding-inline-start:4px;}.ant-table-wrapper .ant-table-selection-extra .anticon{color:rgba(255, 255, 255, 0.29);font-size:12px;vertical-align:baseline;}.ant-table-wrapper .ant-table-selection-extra .anticon:hover{color:rgba(255, 255, 255, 0.55);}.ant-table-wrapper .ant-table-cell-fix-left,.ant-table-wrapper .ant-table-cell-fix-right{position:sticky!important;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-cell-fix-left-first::after,.ant-table-wrapper .ant-table-cell-fix-left-last::after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translateX(100%);transition:box-shadow 0.3s;content:\\\\\"\\\\\";pointer-events:none;}.ant-table-wrapper .ant-table-cell-fix-left-all::after{display:none;}.ant-table-wrapper .ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table-cell-fix-right-last::after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translateX(-100%);transition:box-shadow 0.3s;content:\\\\\"\\\\\";pointer-events:none;}.ant-table-wrapper .ant-table-container::before,.ant-table-wrapper .ant-table-container::after{position:absolute;top:0;bottom:0;z-index:4;width:30px;transition:box-shadow 0.3s;content:\\\\\"\\\\\";pointer-events:none;}.ant-table-wrapper .ant-table-container::before{inset-inline-start:0;}.ant-table-wrapper .ant-table-container::after{inset-inline-end:0;}.ant-table-wrapper .ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container{position:relative;}.ant-table-wrapper .ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before{box-shadow:inset 10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-first::after,.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-last::after{box-shadow:inset 10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-last::before{background-color:transparent!important;}.ant-table-wrapper .ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container{position:relative;}.ant-table-wrapper .ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after{box-shadow:inset -10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-right .ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table-ping-right .ant-table-cell-fix-right-last::after{box-shadow:inset -10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-sticky-holder{position:sticky;z-index:3;background:#141414;}.ant-table-wrapper .ant-table-sticky-scroll{position:sticky;bottom:0;height:8px!important;z-index:3;display:flex;align-items:center;background:rgba(253, 253, 253, 0.12);border-top:1px solid #303030;opacity:0.65;}.ant-table-wrapper .ant-table-sticky-scroll:hover{transform-origin:center bottom;}.ant-table-wrapper .ant-table-sticky-scroll-bar{height:8px;background-color:rgba(255, 255, 255, 0.25);border-radius:100px;transition:all 0.3s,transform none;position:absolute;bottom:0;}.ant-table-wrapper .ant-table-sticky-scroll-bar:hover,.ant-table-wrapper .ant-table-sticky-scroll-bar-active{background-color:rgba(255, 255, 255, 0.85);}.ant-table-wrapper .ant-table-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-left-last,.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-right-first{overflow:visible;}.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content,.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content{display:block;overflow:hidden;text-overflow:ellipsis;}.ant-table-wrapper .ant-table-cell-ellipsis .ant-table-column-title{overflow:hidden;text-overflow:ellipsis;word-break:keep-all;}.ant-table-wrapper .ant-table.ant-table-middle{font-size:14px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-title,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-footer,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-thead>tr>th,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-middle tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-middle tfoot>tr>td{padding:12px 8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-filter-trigger{margin-inline-end:-4px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-expanded-row-fixed{margin:-12px -8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin-block:-12px;margin-inline:40px -8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-selection-column{padding-inline-start:2px;}.ant-table-wrapper .ant-table.ant-table-small{font-size:14px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-title,.ant-table-wrapper .ant-table.ant-table-small .ant-table-footer,.ant-table-wrapper .ant-table.ant-table-small .ant-table-thead>tr>th,.ant-table-wrapper .ant-table.ant-table-small .ant-table-tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-small tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-small tfoot>tr>td{padding:8px 8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-filter-trigger{margin-inline-end:-4px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-expanded-row-fixed{margin:-8px -8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin-block:-8px;margin-inline:40px -8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-selection-column{padding-inline-start:2px;}.ant-table-wrapper .ant-table-resize-handle{position:absolute;top:0;height:100%!important;bottom:0;left:auto!important;right:-8px;cursor:col-resize;touch-action:none;user-select:auto;width:16px;z-index:1;}.ant-table-wrapper .ant-table-resize-handle-line{display:block;width:1px;margin-left:7px;height:100%!important;background-color:#037003;opacity:0;}.ant-table-wrapper .ant-table-resize-handle:hover .ant-table-wrapper .ant-table-resize-handle-line{opacity:1;}.ant-table-wrapper .ant-table-resize-handle.dragging{overflow:hidden;}.ant-table-wrapper .ant-table-resize-handle.dragging .ant-table-resize-handle-line{opacity:1;}.ant-table-wrapper .ant-table-resize-handle.dragging:before{position:absolute;top:0;bottom:0;content:\\\\\" \\\\\";width:200vw;transform:translateX(-50%);opacity:0;}.ant-table-wrapper-rtl{direction:rtl;}.ant-table-wrapper-rtl table{direction:rtl;}.ant-table-wrapper-rtl .ant-table-pagination-left{justify-content:flex-end;}.ant-table-wrapper-rtl .ant-table-pagination-right{justify-content:flex-start;}.ant-table-wrapper-rtl .ant-table-row-expand-icon::after{transform:rotate(-90deg);}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::before{transform:rotate(180deg);}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::after{transform:rotate(0deg);}[class^=\\\\\"ant-transfer\\\\\"],[class*=\\\\\" ant-transfer\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-transfer\\\\\"]::before,[class*=\\\\\" ant-transfer\\\\\"]::before,[class^=\\\\\"ant-transfer\\\\\"]::after,[class*=\\\\\" ant-transfer\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"],[class*=\\\\\" ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"],[class^=\\\\\"ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"],[class*=\\\\\" ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"]::before,[class*=\\\\\" ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"]::before,[class^=\\\\\"ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"]::before,[class*=\\\\\" ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"]::before,[class^=\\\\\"ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"]::after,[class*=\\\\\" ant-transfer\\\\\"] [class^=\\\\\"ant-transfer\\\\\"]::after,[class^=\\\\\"ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"]::after,[class*=\\\\\" ant-transfer\\\\\"] [class*=\\\\\" ant-transfer\\\\\"]::after{box-sizing:border-box;}.ant-transfer{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:flex;align-items:stretch;}.ant-transfer .ant-transfer-disabled .ant-transfer-list{background:rgba(255, 255, 255, 0.08);}.ant-transfer .ant-transfer-list{display:flex;flex-direction:column;width:180px;height:200px;border:1px solid #424242;border-radius:8px;}.ant-transfer .ant-transfer-list-with-pagination{width:250px;height:auto;}.ant-transfer .ant-transfer-list-search .anticon-search{color:rgba(255, 255, 255, 0.25);}.ant-transfer .ant-transfer-list-header{display:flex;flex:none;align-items:center;height:40px;padding:8px 12px 9px;color:rgba(255, 255, 255, 0.85);background:#141414;border-bottom:1px solid rgba(253, 253, 253, 0.12);border-radius:8px 8px 0 0;}.ant-transfer .ant-transfer-list-header >*:not(:last-child){margin-inline-end:4px;}.ant-transfer .ant-transfer-list-header >*{flex:none;}.ant-transfer .ant-transfer-list-header-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;text-align:end;}.ant-transfer .ant-transfer-list-header-dropdown{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;transform:translateY(10%);cursor:pointer;}.ant-transfer .ant-transfer-list-header-dropdown >*{line-height:1;}.ant-transfer .ant-transfer-list-header-dropdown svg{display:inline-block;}.ant-transfer .ant-transfer-list-header-dropdown[disabled]{cursor:not-allowed;}.ant-transfer .ant-transfer-list-body{display:flex;flex:auto;flex-direction:column;overflow:hidden;font-size:14px;}.ant-transfer .ant-transfer-list-body-search-wrapper{position:relative;flex:none;padding:12px;}.ant-transfer .ant-transfer-list-content{flex:auto;margin:0;padding:0;overflow:auto;list-style:none;}.ant-transfer .ant-transfer-list-content-item{display:flex;align-items:center;min-height:32px;padding:5px 12px;transition:all 0.3s;}.ant-transfer .ant-transfer-list-content-item >*:not(:last-child){margin-inline-end:8px;}.ant-transfer .ant-transfer-list-content-item >*{flex:none;}.ant-transfer .ant-transfer-list-content-item-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;}.ant-transfer .ant-transfer-list-content-item-remove{position:relative;color:#424242;cursor:pointer;transition:all 0.3s;}.ant-transfer .ant-transfer-list-content-item-remove:hover{color:#15417e;}.ant-transfer .ant-transfer-list-content-item-remove::after{position:absolute;insert:-5px -50%;content:\\\\\"\\\\\";}.ant-transfer .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover{background-color:rgba(255, 255, 255, 0.08);cursor:pointer;}.ant-transfer .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled).ant-transfer-list-content-item-checked:hover{background-color:#0f2510;}.ant-transfer .ant-transfer-list-content-item-checked{background-color:#111911;}.ant-transfer .ant-transfer-list-content-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-transfer .ant-transfer-list-content-show-remove .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover{background:transparent;cursor:default;}.ant-transfer .ant-transfer-list-pagination{padding:8px 0;text-align:end;border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-transfer .ant-transfer-list-body-not-found{flex:none;width:100%;margin:auto 0;color:rgba(255, 255, 255, 0.25);text-align:center;}.ant-transfer .ant-transfer-list-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-transfer .ant-transfer-list-checkbox{line-height:1;}.ant-transfer .ant-transfer-operation{display:flex;flex:none;flex-direction:column;align-self:center;margin:0 8px;vertical-align:middle;}.ant-transfer .ant-transfer-operation .ant-btn{display:block;}.ant-transfer .ant-transfer-operation .ant-btn:first-child{margin-bottom:4px;}.ant-transfer .ant-transfer-operation .ant-btn .anticon{font-size:12px;}.ant-transfer .ant-empty-image{max-height:-2px;}.ant-transfer-customize-list .ant-transfer-list{flex:1 1 50%;width:auto;height:auto;min-height:200px;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-small{border:0;border-radius:0;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-small .ant-table-selection-column{width:40px;min-width:40px;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-pagination.ant-table-pagination{margin:16px 0 4px;}.ant-transfer-customize-list .ant-input[disabled]{background-color:transparent;}.ant-transfer-status-error .ant-transfer-list{border-color:#dc4446;}.ant-transfer-status-error .ant-transfer-list-search:not([disabled]){border-color:#424242;}.ant-transfer-status-warning .ant-transfer-list{border-color:#d89614;}.ant-transfer-status-warning .ant-transfer-list-search:not([disabled]){border-color:#424242;}.ant-transfer-rtl{direction:rtl;}[class^=\\\\\"ant-tree\\\\\"],[class*=\\\\\" ant-tree\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-tree\\\\\"]::before,[class*=\\\\\" ant-tree\\\\\"]::before,[class^=\\\\\"ant-tree\\\\\"]::after,[class*=\\\\\" ant-tree\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"],[class*=\\\\\" ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"],[class^=\\\\\"ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"],[class*=\\\\\" ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"]::before,[class*=\\\\\" ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"]::before,[class^=\\\\\"ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"]::before,[class*=\\\\\" ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"]::before,[class^=\\\\\"ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"]::after,[class*=\\\\\" ant-tree\\\\\"] [class^=\\\\\"ant-tree\\\\\"]::after,[class^=\\\\\"ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"]::after,[class*=\\\\\" ant-tree\\\\\"] [class*=\\\\\" ant-tree\\\\\"]::after{box-sizing:border-box;}.ant-tree .ant-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-tree .ant-tree-checkbox-group >.ant-row{flex:1;}.ant-tree .ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-tree .ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\\\\\a0';}.ant-tree .ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-inline-start:0;}.ant-tree .ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-in-form-item input[type=\\\\\"checkbox\\\\\"]{width:14px;height:14px;}.ant-tree .ant-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-input:focus-visible+.ant-tree-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\\\\"\\\\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-tree .ant-tree-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-tree .ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\\\\"\\\\\";}.ant-tree .ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after{visibility:visible;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-inner,.ant-tree .ant-tree-checkbox:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox-inner{border-color:#037003;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled) .ant-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):after{border-color:#198016;}.ant-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-tree .ant-tree-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\\\\"\\\\\";transition:all 0.3s;}.ant-tree .ant-tree-checkbox-wrapper-checked:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-inner,.ant-tree .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree .ant-tree-checkbox-wrapper-checked:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox:after,.ant-tree .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox:after{border-color:#198016;}.ant-tree .ant-tree-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-tree .ant-tree-checkbox-disabled,.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-tree .ant-tree-checkbox-disabled:after{display:none;}.ant-tree .ant-tree-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-tree .ant-tree-checkbox-disabled.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-tree{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;border-radius:6px;transition:background-color 0.3s;}.ant-tree.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg);}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-list-holder-inner{align-items:flex-start;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging{position:relative;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging:after{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;border:1px solid #037003;opacity:0;animation-name:ant-tree-node-fx-do-not-use;animation-duration:0.3s;animation-play-state:running;animation-fill-mode:forwards;content:\\\\\"\\\\\";pointer-events:none;}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px 0;outline:none;}.ant-tree .ant-tree-treenode-rtl{direction:rtl;}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:transparent;}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-treenode:not(.ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500;}.ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:0.2;transition:opacity 0.3s;}.ant-tree-treenode:hover .ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{opacity:0.45;}.ant-tree .ant-tree-treenode-draggable.ant-tree-treenode-disabled .ant-tree-draggable-icon{visibility:hidden;}.ant-tree .ant-tree-indent{align-self:stretch;white-space:nowrap;user-select:none;}.ant-tree .ant-tree-indent-unit{display:inline-block;width:24px;}.ant-tree .ant-tree-draggable-icon{visibility:hidden;}.ant-tree .ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;user-select:none;}.ant-tree .ant-tree-switcher .ant-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline;}.ant-tree .ant-tree-switcher .ant-tree-switcher-icon svg{transition:transform 0.3s;}.ant-tree .ant-tree-switcher-noop{cursor:default;}.ant-tree .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg);}.ant-tree .ant-tree-switcher-loading-icon{color:#037003;}.ant-tree .ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%;}.ant-tree .ant-tree-switcher-leaf-line:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;margin-inline-start:-1px;border-inline-end:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree .ant-tree-switcher-leaf-line:after{position:absolute;width:9.600000000000001px;height:12px;border-bottom:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree .ant-tree-checkbox{top:initial;margin-inline-end:8px;margin-block-start:4px;}.ant-tree .ant-tree-node-content-wrapper,.ant-tree .ant-tree-checkbox+span{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:6px;cursor:pointer;transition:all 0.2s,border 0s,line-height 0s,box-shadow 0s;}.ant-tree .ant-tree-node-content-wrapper:hover,.ant-tree .ant-tree-checkbox+span:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree .ant-tree-checkbox+span.ant-tree-node-selected{background-color:#111911;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle,.ant-tree .ant-tree-checkbox+span .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty,.ant-tree .ant-tree-checkbox+span .ant-tree-iconEle:empty{display:none;}.ant-tree .ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent;}.ant-tree .ant-tree-node-content-wrapper{line-height:24px;user-select:none;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#037003;border-radius:1px;pointer-events:none;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;inset-inline-start:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #037003;border-radius:50%;content:\\\\\"\\\\\";}.ant-tree .ant-tree-treenode.drop-container >[draggable]{box-shadow:0 0 0 2px #037003;}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%;}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;border-inline-end:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none;}.ant-tree-show-line .ant-tree-switcher{background:transparent;}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-0.15em;}.ant-tree .ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:12px!important;}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative;}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;transition:background-color 0.2s;content:\\\\\"\\\\\";pointer-events:none;}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:rgba(255, 255, 255, 0.08);}.ant-tree.ant-tree-directory .ant-tree-treenode >*{z-index:1;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color 0.2s;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;user-select:none;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:transparent;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:transparent;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected::before{background:#037003;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:transparent;}.ant-tree .ant-motion-collapse-legacy{overflow:hidden;}.ant-tree .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-tree .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes ant-tree-node-fx-do-not-use{0%{opacity:0;}100%{opacity:1;}}[class^=\\\\\"ant-tree-select\\\\\"],[class*=\\\\\" ant-tree-select\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-tree-select\\\\\"]::before,[class*=\\\\\" ant-tree-select\\\\\"]::before,[class^=\\\\\"ant-tree-select\\\\\"]::after,[class*=\\\\\" ant-tree-select\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"],[class*=\\\\\" ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"],[class^=\\\\\"ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"],[class*=\\\\\" ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"]::before,[class*=\\\\\" ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"]::before,[class^=\\\\\"ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"]::before,[class*=\\\\\" ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"]::before,[class^=\\\\\"ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"]::after,[class*=\\\\\" ant-tree-select\\\\\"] [class^=\\\\\"ant-tree-select\\\\\"]::after,[class^=\\\\\"ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"]::after,[class*=\\\\\" ant-tree-select\\\\\"] [class*=\\\\\" ant-tree-select\\\\\"]::after{box-sizing:border-box;}.ant-tree-select-dropdown{padding:8px 4px;}.ant-tree-select-dropdown .ant-select-tree{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#1f1f1f;border-radius:6px;transition:background-color 0.3s;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-rtl .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg);}.ant-tree-select-dropdown .ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-list-holder-inner{align-items:flex-start;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner{align-items:stretch;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper{flex:auto;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging{position:relative;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging:after{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;border:1px solid #037003;opacity:0;animation-name:ant-tree-node-fx-do-not-use;animation-duration:0.3s;animation-play-state:running;animation-fill-mode:forwards;content:\\\\\"\\\\\";pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px 0;outline:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-rtl{direction:rtl;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover{background:transparent;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode:not(.ant-select-tree-treenode-disabled).filter-node .ant-select-tree-title{color:inherit;font-weight:500;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:0.2;transition:opacity 0.3s;}.ant-select-tree-treenode:hover .ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{opacity:0.45;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable.ant-select-tree-treenode-disabled .ant-select-tree-draggable-icon{visibility:hidden;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-indent{align-self:stretch;white-space:nowrap;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-indent-unit{display:inline-block;width:24px;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-draggable-icon{visibility:hidden;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform 0.3s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-noop{cursor:default;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(-90deg);}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-loading-icon{color:#037003;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;margin-inline-start:-1px;border-inline-end:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line:after{position:absolute;width:9.600000000000001px;height:12px;border-bottom:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox{top:initial;margin-inline-end:8px;margin-block-start:4px;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:6px;cursor:pointer;transition:all 0.2s,border 0s,line-height 0s,box-shadow 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper:hover,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span.ant-select-tree-node-selected{background-color:#111911;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span .ant-select-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span .ant-select-tree-iconEle:empty{display:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover{background-color:transparent;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper{line-height:24px;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#037003;border-radius:1px;pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-drop-indicator:after{position:absolute;top:-3px;inset-inline-start:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #037003;border-radius:50%;content:\\\\\"\\\\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode.drop-container >[draggable]{box-shadow:0 0 0 2px #037003;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit{position:relative;height:100%;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;border-inline-end:1px solid #424242;content:\\\\\"\\\\\";}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit-end:before{display:none;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-switcher{background:transparent;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-switcher-line-icon{vertical-align:-0.15em;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-leaf-last .ant-select-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:12px!important;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode{position:relative;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode:before{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;transition:background-color 0.2s;content:\\\\\"\\\\\";pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode:hover:before{background:rgba(255, 255, 255, 0.08);}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode >*{z-index:1;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-switcher{transition:color 0.2s;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{border-radius:0;user-select:none;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper:hover{background:transparent;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected{color:#fff;background:transparent;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected:hover::before,.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected::before{background:#037003;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected .ant-select-tree-switcher{color:#fff;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected .ant-select-tree-node-content-wrapper{color:#fff;background:transparent;}.ant-tree-select-dropdown .ant-select-tree{border-radius:0;}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner{align-items:stretch;}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{flex:auto;}.ant-tree-select-dropdown .ant-select-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-tree-select-dropdown .ant-select-tree-checkbox-group >.ant-row{flex:1;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\\\\\a0';}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper+.ant-select-tree-checkbox-wrapper{margin-inline-start:0;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-in-form-item input[type=\\\\\"checkbox\\\\\"]{width:14px;height:14px;}.ant-tree-select-dropdown .ant-select-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-input:focus-visible+.ant-select-tree-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\\\\"\\\\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-tree-select-dropdown .ant-select-tree-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-tree-select-dropdown .ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\\\\"\\\\\";}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox:after{visibility:visible;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-inner,.ant-tree-select-dropdown .ant-select-tree-checkbox:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox-inner{border-color:#037003;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled) .ant-select-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):after{border-color:#198016;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\\\\"\\\\\";transition:all 0.3s;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-checked:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-inner,.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-checked:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox:after,.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox:after{border-color:#198016;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled,.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled:after{display:none;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown-rtl{direction:rtl;}.ant-tree-select-dropdown-rtl .ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg);}[class^=\\\\\"ant-tabs\\\\\"],[class*=\\\\\" ant-tabs\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-tabs\\\\\"]::before,[class*=\\\\\" ant-tabs\\\\\"]::before,[class^=\\\\\"ant-tabs\\\\\"]::after,[class*=\\\\\" ant-tabs\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"],[class*=\\\\\" ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"],[class^=\\\\\"ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"],[class*=\\\\\" ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"]::before,[class*=\\\\\" ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"]::before,[class^=\\\\\"ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"]::before,[class*=\\\\\" ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"]::before,[class^=\\\\\"ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"]::after,[class*=\\\\\" ant-tabs\\\\\"] [class^=\\\\\"ant-tabs\\\\\"]::after,[class^=\\\\\"ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"]::after,[class*=\\\\\" ant-tabs\\\\\"] [class*=\\\\\" ant-tabs\\\\\"]::after{box-sizing:border-box;}.ant-tabs-small >.ant-tabs-nav .ant-tabs-tab{padding:8px 0;font-size:14px;}.ant-tabs-large >.ant-tabs-nav .ant-tabs-tab{padding:16px 0;font-size:16px;}.ant-tabs-card.ant-tabs-small >.ant-tabs-nav .ant-tabs-tab{padding:6px 16px;}.ant-tabs-card.ant-tabs-small.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 6px 6px;}.ant-tabs-card.ant-tabs-small.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab{border-radius:6px 6px 0 0;}.ant-tabs-card.ant-tabs-small.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab{border-radius:0 6px 6px 0;}.ant-tabs-card.ant-tabs-small.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab{border-radius:6px 0 0 6px;}.ant-tabs-card.ant-tabs-large >.ant-tabs-nav .ant-tabs-tab{padding:8px 16px 6px;}.ant-tabs-rtl{direction:rtl;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab{margin:0 0 0 32px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab:last-of-type{margin-left:0;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon{margin-right:0;margin-left:12px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove{margin-right:8px;margin-left:-4px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0;}.ant-tabs-rtl.ant-tabs-left >.ant-tabs-nav{order:1;}.ant-tabs-rtl.ant-tabs-left >.ant-tabs-content-holder{order:0;}.ant-tabs-rtl.ant-tabs-right >.ant-tabs-nav{order:0;}.ant-tabs-rtl.ant-tabs-right >.ant-tabs-content-holder{order:1;}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-right:2px;margin-left:0;}.ant-tabs-dropdown-rtl{direction:rtl;}.ant-tabs-menu-item .ant-tabs-dropdown-rtl{text-align:right;}.ant-tabs-top,.ant-tabs-bottom{flex-direction:column;}.ant-tabs-top >.ant-tabs-nav,.ant-tabs-bottom >.ant-tabs-nav,.ant-tabs-top >div>.ant-tabs-nav,.ant-tabs-bottom >div>.ant-tabs-nav{margin:0 0 16px 0;}.ant-tabs-top >.ant-tabs-nav::before,.ant-tabs-bottom >.ant-tabs-nav::before,.ant-tabs-top >div>.ant-tabs-nav::before,.ant-tabs-bottom >div>.ant-tabs-nav::before{position:absolute;right:0;left:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);content:'';}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar{height:2px;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:width 0.3s,left 0.3s,right 0.3s;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{top:0;bottom:0;width:32px;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::before{left:0;box-shadow:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{right:0;box-shadow:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before{opacity:1;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after{opacity:1;}.ant-tabs-top >.ant-tabs-nav::before,.ant-tabs-top >div>.ant-tabs-nav::before{bottom:0;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar{bottom:0;}.ant-tabs-bottom >.ant-tabs-nav,.ant-tabs-bottom >div>.ant-tabs-nav{order:1;margin-top:16px;margin-bottom:0;}.ant-tabs-bottom >.ant-tabs-nav::before,.ant-tabs-bottom >div>.ant-tabs-nav::before{top:0;}.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar{top:0;}.ant-tabs-bottom >.ant-tabs-content-holder,.ant-tabs-bottom >div>.ant-tabs-content-holder{order:0;}.ant-tabs-left >.ant-tabs-nav,.ant-tabs-right >.ant-tabs-nav,.ant-tabs-left >div>.ant-tabs-nav,.ant-tabs-right >div>.ant-tabs-nav{flex-direction:column;min-width:40px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab{padding:8px 24px;text-align:center;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin:16px 0 0 0;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap{flex-direction:column;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{right:0;left:0;height:32px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::before{top:0;box-shadow:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{bottom:0;box-shadow:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before{opacity:1;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after{opacity:1;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar{width:2px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:height 0.3s,top 0.3s;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-operations{flex:1 0 auto;flex-direction:column;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar{right:0;}.ant-tabs-left >.ant-tabs-content-holder,.ant-tabs-left >div>.ant-tabs-content-holder{margin-left:-1px;border-left:1px solid #424242;}.ant-tabs-left >.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-left >div>.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane{padding-left:24px;}.ant-tabs-right >.ant-tabs-nav,.ant-tabs-right >div>.ant-tabs-nav{order:1;}.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar{left:0;}.ant-tabs-right >.ant-tabs-content-holder,.ant-tabs-right >div>.ant-tabs-content-holder{order:0;margin-right:-1px;border-right:1px solid #424242;}.ant-tabs-right >.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-right >div>.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane{padding-right:24px;}.ant-tabs-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block;}.ant-tabs-dropdown-hidden{display:none;}.ant-tabs-dropdown .ant-tabs-dropdown-menu{max-height:200px;margin:0;padding:4px 0;overflow-x:hidden;overflow-y:auto;text-align:left;list-style-type:none;background-color:#141414;background-clip:padding-box;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;min-width:120px;margin:0;padding:4px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.3s;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item >span{flex:1;white-space:nowrap;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-remove{flex:none;margin-left:12px;color:rgba(255, 255, 255, 0.45);font-size:12px;background:transparent;border:0;cursor:pointer;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-remove:hover{color:#198016;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item:hover{background:rgba(255, 255, 255, 0.08);}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-disabled,.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-disabled:hover{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab{margin:0;padding:8px 16px;background:rgba(255, 255, 255, 0.04);border:1px solid rgba(253, 253, 253, 0.12);transition:all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab-active{color:#037003;background:#141414;}.ant-tabs-card >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-ink-bar{visibility:hidden;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-left:2px;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab{border-radius:8px 8px 0 0;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab-active{border-bottom-color:#141414;}.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 8px 8px;}.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab-active{border-top-color:#141414;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-top:2px;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab{border-radius:8px 0 0 8px;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab-active{border-right-color:#141414;}.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 8px 8px 0;}.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab-active{border-left-color:#141414;}.ant-tabs{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;}.ant-tabs >.ant-tabs-nav,.ant-tabs >div>.ant-tabs-nav{position:relative;display:flex;flex:none;align-items:center;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap{position:relative;display:flex;flex:auto;align-self:stretch;overflow:hidden;white-space:nowrap;transform:translate(0);}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{position:absolute;z-index:1;opacity:0;transition:opacity 0.3s;content:'';pointer-events:none;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-list{position:relative;display:flex;transition:opacity 0.3s;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-operations{display:flex;align-self:stretch;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-operations-hidden,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-operations-hidden{position:absolute;visibility:hidden;pointer-events:none;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-more,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-more{position:relative;padding:8px 16px;background:transparent;border:0;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-more::after,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-more::after{position:absolute;right:0;bottom:0;left:0;height:5px;transform:translateY(100%);content:'';}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add{min-width:40px;margin-left:2px;padding:0 8px;background:transparent;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px 8px 0 0;outline:none;cursor:pointer;color:rgba(255, 255, 255, 0.85);transition:all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:hover,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:hover{color:#198016;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:focus:not(:focus-visible),.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:focus:not(:focus-visible){color:#075a07;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:focus-visible,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tabs .ant-tabs-extra-content{flex:none;}.ant-tabs .ant-tabs-ink-bar{position:absolute;background:#037003;pointer-events:none;}.ant-tabs .ant-tabs-tab{position:relative;display:inline-flex;align-items:center;padding:12px 0;font-size:14px;background:transparent;border:0;outline:none;cursor:pointer;}.ant-tabs .ant-tabs-tab-btn:focus:not(:focus-visible),.ant-tabs .ant-tabs-tab-remove:focus:not(:focus-visible),.ant-tabs .ant-tabs-tab-btn:active,.ant-tabs .ant-tabs-tab-remove:active{color:#075a07;}.ant-tabs .ant-tabs-tab-btn:focus-visible,.ant-tabs .ant-tabs-tab-remove:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tabs .ant-tabs-tab-btn{outline:none;transition:all 0.3s;}.ant-tabs .ant-tabs-tab-remove{flex:none;margin-right:-4px;margin-left:8px;color:rgba(255, 255, 255, 0.45);font-size:12px;background:transparent;border:none;outline:none;cursor:pointer;transition:all 0.3s;}.ant-tabs .ant-tabs-tab-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-tabs .ant-tabs-tab:hover{color:#198016;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#037003;text-shadow:0 0 0.25px currentcolor;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-remove:focus,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-remove:active{color:rgba(255, 255, 255, 0.25);}.ant-tabs .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0;}.ant-tabs .ant-tabs-tab .anticon{margin-right:12px;}.ant-tabs .ant-tabs-tab+.ant-tabs-tab{margin:0 0 0 32px;}.ant-tabs .ant-tabs-content{position:relative;display:flex;width:100%;}.ant-tabs .ant-tabs-content-animated{transition:margin 0.3s;}.ant-tabs .ant-tabs-content-holder{flex:auto;min-width:0;min-height:0;}.ant-tabs .ant-tabs-tabpane{outline:none;flex:none;width:100%;}.ant-tabs-centered >.ant-tabs-nav .ant-tabs-nav-wrap:not([class*='.ant-tabs-nav-wrap-ping']),.ant-tabs-centered >div>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*='.ant-tabs-nav-wrap-ping']){justify-content:center;}.ant-tabs .ant-tabs-switch-appear,.ant-tabs .ant-tabs-switch-enter{transition:none;}.ant-tabs .ant-tabs-switch-appear-start,.ant-tabs .ant-tabs-switch-enter-start{opacity:0;}.ant-tabs .ant-tabs-switch-appear-active,.ant-tabs .ant-tabs-switch-enter-active{opacity:1;transition:opacity 0.3s;}.ant-tabs .ant-tabs-switch-leave{position:absolute;transition:none;inset:0;}.ant-tabs .ant-tabs-switch-leave-start{opacity:1;}.ant-tabs .ant-tabs-switch-leave-active{opacity:0;transition:opacity 0.3s;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}[class^=\\\\\"ant-tag\\\\\"],[class*=\\\\\" ant-tag\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-tag\\\\\"]::before,[class*=\\\\\" ant-tag\\\\\"]::before,[class^=\\\\\"ant-tag\\\\\"]::after,[class*=\\\\\" ant-tag\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"],[class*=\\\\\" ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"],[class^=\\\\\"ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"],[class*=\\\\\" ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"]::before,[class*=\\\\\" ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"]::before,[class^=\\\\\"ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"]::before,[class*=\\\\\" ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"]::before,[class^=\\\\\"ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"]::after,[class*=\\\\\" ant-tag\\\\\"] [class^=\\\\\"ant-tag\\\\\"]::after,[class^=\\\\\"ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"]::after,[class*=\\\\\" ant-tag\\\\\"] [class*=\\\\\" ant-tag\\\\\"]::after{box-sizing:border-box;}.ant-tag{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:12px;line-height:20px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;height:auto;margin-inline-end:8px;padding-inline:7px;white-space:nowrap;background:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:4px;opacity:1;transition:all 0.2s;text-align:start;}.ant-tag.ant-tag-rtl{direction:rtl;}.ant-tag,.ant-tag a,.ant-tag a:hover{color:rgba(255, 255, 255, 0.85);}.ant-tag .ant-tag-close-icon{margin-inline-start:3px;color:rgba(255, 255, 255, 0.45);font-size:10px;cursor:pointer;transition:all 0.2s;}.ant-tag .ant-tag-close-icon:hover{color:rgba(255, 255, 255, 0.85);}.ant-tag.ant-tag-has-color{border-color:transparent;}.ant-tag.ant-tag-has-color,.ant-tag.ant-tag-has-color a,.ant-tag.ant-tag-has-color a:hover,.ant-tag.ant-tag-has-color .anticon-close,.ant-tag.ant-tag-has-color .anticon-close:hover{color:#fff;}.ant-tag-checkable{background-color:transparent;border-color:transparent;cursor:pointer;}.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#037003;background-color:rgba(255, 255, 255, 0.12);}.ant-tag-checkable:active,.ant-tag-checkable-checked{color:#fff;}.ant-tag-checkable-checked{background-color:#037003;}.ant-tag-checkable-checked:hover{background-color:#198016;}.ant-tag-checkable:active{background-color:#075a07;}.ant-tag-hidden{display:none;}.ant-tag >.anticon+span,.ant-tag >span+.anticon{margin-inline-start:7px;}.ant-tag-borderless{border-color:transparent;background:rgba(255, 255, 255, 0.08);}.ant-tag-blue{color:#3c89e8;background:#111a2c;border-color:#15325b;}.ant-tag-blue-inverse{color:#fff;background:#1668dc;border-color:#1668dc;}.ant-tag-blue.ant-tag-borderless{border-color:transparent;}.ant-tag-purple{color:#854eca;background:#1a1325;border-color:#301c4d;}.ant-tag-purple-inverse{color:#fff;background:#642ab5;border-color:#642ab5;}.ant-tag-purple.ant-tag-borderless{border-color:transparent;}.ant-tag-cyan{color:#33bcb7;background:#112123;border-color:#144848;}.ant-tag-cyan-inverse{color:#fff;background:#13a8a8;border-color:#13a8a8;}.ant-tag-cyan.ant-tag-borderless{border-color:transparent;}.ant-tag-green{color:#6abe39;background:#162312;border-color:#274916;}.ant-tag-green-inverse{color:#fff;background:#49aa19;border-color:#49aa19;}.ant-tag-green.ant-tag-borderless{border-color:transparent;}.ant-tag-magenta{color:#e0529c;background:#291321;border-color:#551c3b;}.ant-tag-magenta-inverse{color:#fff;background:#cb2b83;border-color:#cb2b83;}.ant-tag-magenta.ant-tag-borderless{border-color:transparent;}.ant-tag-pink{color:#e0529c;background:#291321;border-color:#551c3b;}.ant-tag-pink-inverse{color:#fff;background:#cb2b83;border-color:#cb2b83;}.ant-tag-pink.ant-tag-borderless{border-color:transparent;}.ant-tag-red{color:#e84749;background:#2a1215;border-color:#58181c;}.ant-tag-red-inverse{color:#fff;background:#d32029;border-color:#d32029;}.ant-tag-red.ant-tag-borderless{border-color:transparent;}.ant-tag-orange{color:#e89a3c;background:#2b1d11;border-color:#593815;}.ant-tag-orange-inverse{color:#fff;background:#d87a16;border-color:#d87a16;}.ant-tag-orange.ant-tag-borderless{border-color:transparent;}.ant-tag-yellow{color:#e8d639;background:#2b2611;border-color:#595014;}.ant-tag-yellow-inverse{color:#fff;background:#d8bd14;border-color:#d8bd14;}.ant-tag-yellow.ant-tag-borderless{border-color:transparent;}.ant-tag-volcano{color:#e87040;background:#2b1611;border-color:#592716;}.ant-tag-volcano-inverse{color:#fff;background:#d84a1b;border-color:#d84a1b;}.ant-tag-volcano.ant-tag-borderless{border-color:transparent;}.ant-tag-geekblue{color:#5273e0;background:#131629;border-color:#1c2755;}.ant-tag-geekblue-inverse{color:#fff;background:#2b4acb;border-color:#2b4acb;}.ant-tag-geekblue.ant-tag-borderless{border-color:transparent;}.ant-tag-lime{color:#a9d134;background:#1f2611;border-color:#3e4f13;}.ant-tag-lime-inverse{color:#fff;background:#8bbb11;border-color:#8bbb11;}.ant-tag-lime.ant-tag-borderless{border-color:transparent;}.ant-tag-gold{color:#e8b339;background:#2b2111;border-color:#594214;}.ant-tag-gold-inverse{color:#fff;background:#d89614;border-color:#d89614;}.ant-tag-gold.ant-tag-borderless{border-color:transparent;}.ant-tag-success{color:#49aa19;background:#162312;border-color:#274916;}.ant-tag-success.ant-tag-borderless{border-color:transparent;}.ant-tag-processing{color:#1668dc;background:#111a2c;border-color:#15325b;}.ant-tag-processing.ant-tag-borderless{border-color:transparent;}.ant-tag-error{color:#dc4446;background:#2c1618;border-color:#5b2526;}.ant-tag-error.ant-tag-borderless{border-color:transparent;}.ant-tag-warning{color:#d89614;background:#2b2111;border-color:#594214;}.ant-tag-warning.ant-tag-borderless{border-color:transparent;}[class^=\\\\\"ant-timeline\\\\\"],[class*=\\\\\" ant-timeline\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-timeline\\\\\"]::before,[class*=\\\\\" ant-timeline\\\\\"]::before,[class^=\\\\\"ant-timeline\\\\\"]::after,[class*=\\\\\" ant-timeline\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"],[class*=\\\\\" ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"],[class^=\\\\\"ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"],[class*=\\\\\" ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"]::before,[class*=\\\\\" ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"]::before,[class^=\\\\\"ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"]::before,[class*=\\\\\" ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"]::before,[class^=\\\\\"ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"]::after,[class*=\\\\\" ant-timeline\\\\\"] [class^=\\\\\"ant-timeline\\\\\"]::after,[class^=\\\\\"ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"]::after,[class*=\\\\\" ant-timeline\\\\\"] [class*=\\\\\" ant-timeline\\\\\"]::after{box-sizing:border-box;}.ant-timeline{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-timeline .ant-timeline-item{position:relative;margin:0;padding-bottom:20px;font-size:14px;list-style:none;}.ant-timeline .ant-timeline-item-tail{position:absolute;inset-block-start:10px;inset-inline-start:4px;height:calc(100% - 10px);border-inline-start:2px solid rgba(253, 253, 253, 0.12);}.ant-timeline .ant-timeline-item-pending .ant-timeline-item-head{font-size:12px;background-color:transparent;}.ant-timeline .ant-timeline-item-pending .ant-timeline-item-tail{display:none;}.ant-timeline .ant-timeline-item-head{position:absolute;width:10px;height:10px;background-color:#141414;border:3px solid transparent;border-radius:50%;}.ant-timeline .ant-timeline-item-head-blue{color:#037003;border-color:#037003;}.ant-timeline .ant-timeline-item-head-red{color:#dc4446;border-color:#dc4446;}.ant-timeline .ant-timeline-item-head-green{color:#49aa19;border-color:#49aa19;}.ant-timeline .ant-timeline-item-head-gray{color:rgba(255, 255, 255, 0.25);border-color:rgba(255, 255, 255, 0.25);}.ant-timeline .ant-timeline-item-head-custom{position:absolute;inset-block-start:5px;inset-inline-start:5px;width:auto;height:auto;margin-block-start:0;padding-block:4px;line-height:1;text-align:center;border:0;border-radius:0;transform:translate(-50%, -50%);}.ant-timeline .ant-timeline-item-content{position:relative;inset-block-start:-7px;margin-inline-start:26px;margin-inline-end:0;margin-block-start:0;margin-block-end:0;word-break:break-word;}.ant-timeline .ant-timeline-item-last >.ant-timeline-item-tail{display:none;}.ant-timeline .ant-timeline-item-last >.ant-timeline-item-content{min-height:48px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail,.ant-timeline.ant-timeline-right .ant-timeline-item-tail,.ant-timeline.ant-timeline-label .ant-timeline-item-tail,.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-head,.ant-timeline.ant-timeline-label .ant-timeline-item-head,.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom{inset-inline-start:50%;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-head,.ant-timeline.ant-timeline-label .ant-timeline-item-head{margin-inline-start:-4px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom{margin-inline-start:1px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content,.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content,.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content{inset-inline-start:calc(50% - 4px);width:calc(50% - 12px);text-align:start;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content,.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content{width:calc(50% - 12px);margin:0;text-align:end;}.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom{inset-inline-start:calc(100% - 6px);}.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content{width:calc(100% - 18px);}.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail{display:block;height:calc(100% - 16px);border-inline-start:2px dotted rgba(253, 253, 253, 0.12);}.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail{display:none;}.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail{inset-block-start:16px;display:block;height:calc(100% - 16px);border-inline-start:2px dotted rgba(253, 253, 253, 0.12);}.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content{min-height:48px;}.ant-timeline.ant-timeline-label .ant-timeline-item-label{position:absolute;inset-block-start:-6px;width:calc(50% - 12px);text-align:end;}.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label{inset-inline-start:calc(50% + 12px);width:calc(50% - 12px);text-align:start;}.ant-timeline-rtl{direction:rtl;}.ant-timeline-rtl .ant-timeline-item-head-custom{transform:translate(50%, -50%);}[class^=\\\\\"ant-typography\\\\\"],[class*=\\\\\" ant-typography\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-typography\\\\\"]::before,[class*=\\\\\" ant-typography\\\\\"]::before,[class^=\\\\\"ant-typography\\\\\"]::after,[class*=\\\\\" ant-typography\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"],[class*=\\\\\" ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"],[class^=\\\\\"ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"],[class*=\\\\\" ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"]::before,[class*=\\\\\" ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"]::before,[class^=\\\\\"ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"]::before,[class*=\\\\\" ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"]::before,[class^=\\\\\"ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"]::after,[class*=\\\\\" ant-typography\\\\\"] [class^=\\\\\"ant-typography\\\\\"]::after,[class^=\\\\\"ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"]::after,[class*=\\\\\" ant-typography\\\\\"] [class*=\\\\\" ant-typography\\\\\"]::after{box-sizing:border-box;}.ant-typography{color:rgba(255, 255, 255, 0.85);word-break:break-word;line-height:1.5714285714285714;}.ant-typography.ant-typography-secondary{color:rgba(255, 255, 255, 0.45);}.ant-typography.ant-typography-success{color:#49aa19;}.ant-typography.ant-typography-warning{color:#d89614;}.ant-typography.ant-typography-danger{color:#dc4446;}a.ant-typography.ant-typography-danger:active,a.ant-typography.ant-typography-danger:focus{color:#ad393a;}a.ant-typography.ant-typography-danger:hover{color:#e86e6b;}.ant-typography.ant-typography-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;user-select:none;}div.ant-typography,.ant-typography p{margin-bottom:1em;}h1.ant-typography,div.ant-typography-h1,div.ant-typography-h1>textarea,.ant-typography h1{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:38px;line-height:1.2105263157894737;}h2.ant-typography,div.ant-typography-h2,div.ant-typography-h2>textarea,.ant-typography h2{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:30px;line-height:1.2666666666666666;}h3.ant-typography,div.ant-typography-h3,div.ant-typography-h3>textarea,.ant-typography h3{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:24px;line-height:1.3333333333333333;}h4.ant-typography,div.ant-typography-h4,div.ant-typography-h4>textarea,.ant-typography h4{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:20px;line-height:1.4;}h5.ant-typography,div.ant-typography-h5,div.ant-typography-h5>textarea,.ant-typography h5{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-typography+h1.ant-typography,.ant-typography+h2.ant-typography,.ant-typography+h3.ant-typography,.ant-typography+h4.ant-typography,.ant-typography+h5.ant-typography{margin-top:1.2em;}.ant-typography div +h1,.ant-typography ul +h1,.ant-typography li +h1,.ant-typography p +h1,.ant-typography h1 +h1,.ant-typography h2 +h1,.ant-typography h3 +h1,.ant-typography h4 +h1,.ant-typography h5 +h1,.ant-typography div +h2,.ant-typography ul +h2,.ant-typography li +h2,.ant-typography p +h2,.ant-typography h1 +h2,.ant-typography h2 +h2,.ant-typography h3 +h2,.ant-typography h4 +h2,.ant-typography h5 +h2,.ant-typography div +h3,.ant-typography ul +h3,.ant-typography li +h3,.ant-typography p +h3,.ant-typography h1 +h3,.ant-typography h2 +h3,.ant-typography h3 +h3,.ant-typography h4 +h3,.ant-typography h5 +h3,.ant-typography div +h4,.ant-typography ul +h4,.ant-typography li +h4,.ant-typography p +h4,.ant-typography h1 +h4,.ant-typography h2 +h4,.ant-typography h3 +h4,.ant-typography h4 +h4,.ant-typography h5 +h4,.ant-typography div +h5,.ant-typography ul +h5,.ant-typography li +h5,.ant-typography p +h5,.ant-typography h1 +h5,.ant-typography h2 +h5,.ant-typography h3 +h5,.ant-typography h4 +h5,.ant-typography h5 +h5{margin-top:1.2em;}.ant-typography code{margin:0 0.2em;padding-inline:0.4em;padding-block:0.2em 0.1em;font-size:85%;background:rgba(150, 150, 150, 0.1);border:1px solid rgba(100, 100, 100, 0.2);border-radius:3px;}.ant-typography kbd{margin:0 0.2em;padding-inline:0.4em;padding-block:0.15em 0.1em;font-size:90%;background:rgba(150, 150, 150, 0.06);border:1px solid rgba(100, 100, 100, 0.2);border-bottom-width:2px;border-radius:3px;}.ant-typography mark{padding:0;background-color:#ffe58f;}.ant-typography u,.ant-typography ins{text-decoration:underline;text-decoration-skip-ink:auto;}.ant-typography s,.ant-typography del{text-decoration:line-through;}.ant-typography strong{font-weight:600;}.ant-typography ul,.ant-typography ol{margin-inline:0;margin-block:0 1em;padding:0;}.ant-typography ul li,.ant-typography ol li{margin-inline:20px 0;margin-block:0;padding-inline:4px 0;padding-block:0;}.ant-typography ul{list-style-type:circle;}.ant-typography ul ul{list-style-type:disc;}.ant-typography ol{list-style-type:decimal;}.ant-typography pre,.ant-typography blockquote{margin:1em 0;}.ant-typography pre{padding:0.4em 0.6em;white-space:pre-wrap;word-wrap:break-word;background:rgba(150, 150, 150, 0.1);border:1px solid rgba(100, 100, 100, 0.2);border-radius:3px;}.ant-typography pre code{display:inline;margin:0;padding:0;font-size:inherit;font-family:inherit;background:transparent;border:0;}.ant-typography blockquote{padding-inline:0.6em 0;padding-block:0;border-inline-start:4px solid rgba(100, 100, 100, 0.2);opacity:0.85;}a.ant-typography,.ant-typography a{color:#1668dc;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;}a.ant-typography:focus,.ant-typography a:focus,a.ant-typography:hover,.ant-typography a:hover{color:#15417e;}a.ant-typography:active,.ant-typography a:active{color:#1554ad;}a.ant-typography:active,.ant-typography a:active,a.ant-typography:hover,.ant-typography a:hover{text-decoration:none;}a.ant-typography[disabled],.ant-typography a[disabled],a.ant-typography.ant-typography-disabled,.ant-typography a.ant-typography-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active,a.ant-typography[disabled]:hover,.ant-typography a[disabled]:hover,a.ant-typography.ant-typography-disabled:hover,.ant-typography a.ant-typography-disabled:hover{color:rgba(255, 255, 255, 0.25);}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active{pointer-events:none;}.ant-typography .ant-typography-expand,.ant-typography .ant-typography-edit,.ant-typography .ant-typography-copy{color:#1668dc;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;margin-inline-start:4px;}.ant-typography .ant-typography-expand:focus,.ant-typography .ant-typography-edit:focus,.ant-typography .ant-typography-copy:focus,.ant-typography .ant-typography-expand:hover,.ant-typography .ant-typography-edit:hover,.ant-typography .ant-typography-copy:hover{color:#15417e;}.ant-typography .ant-typography-expand:active,.ant-typography .ant-typography-edit:active,.ant-typography .ant-typography-copy:active{color:#1554ad;}.ant-typography-edit-content{position:relative;}div.ant-typography-edit-content{inset-inline-start:-12px;margin-top:-5px;margin-bottom:calc(1em - 5px);}.ant-typography-edit-content .ant-typography-edit-content-confirm{position:absolute;inset-inline-end:10px;inset-block-end:8px;color:rgba(255, 255, 255, 0.45);font-weight:normal;font-size:14px;font-style:normal;pointer-events:none;}.ant-typography-edit-content textarea{margin:0!important;-moz-transition:none;height:1em;}.ant-typography-copy-success,.ant-typography-copy-success:hover,.ant-typography-copy-success:focus{color:#49aa19;}a.ant-typography-ellipsis,span.ant-typography-ellipsis{display:inline-block;max-width:100%;}.ant-typography-single-line{white-space:nowrap;}.ant-typography-ellipsis-single-line{overflow:hidden;text-overflow:ellipsis;}a.ant-typography-ellipsis-single-line,span.ant-typography-ellipsis-single-line{vertical-align:bottom;}.ant-typography-ellipsis-multiple-line{display:-webkit-box;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;}.ant-typography-rtl{direction:rtl;}[class^=\\\\\"ant-upload\\\\\"],[class*=\\\\\" ant-upload\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-upload\\\\\"]::before,[class*=\\\\\" ant-upload\\\\\"]::before,[class^=\\\\\"ant-upload\\\\\"]::after,[class*=\\\\\" ant-upload\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"],[class*=\\\\\" ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"],[class^=\\\\\"ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"],[class*=\\\\\" ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"]::before,[class*=\\\\\" ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"]::before,[class^=\\\\\"ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"]::before,[class*=\\\\\" ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"]::before,[class^=\\\\\"ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"]::after,[class*=\\\\\" ant-upload\\\\\"] [class^=\\\\\"ant-upload\\\\\"]::after,[class^=\\\\\"ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"]::after,[class*=\\\\\" ant-upload\\\\\"] [class*=\\\\\" ant-upload\\\\\"]::after{box-sizing:border-box;}.ant-upload-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-upload-wrapper .ant-upload{outline:0;}.ant-upload-wrapper .ant-upload input[type='file']{cursor:pointer;}.ant-upload-wrapper .ant-upload-select{display:inline-block;}.ant-upload-wrapper .ant-upload-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-upload-wrapper .ant-upload-drag{position:relative;width:100%;height:100%;text-align:center;background:rgba(255, 255, 255, 0.04);border:1px dashed #424242;border-radius:8px;cursor:pointer;transition:border-color 0.3s;}.ant-upload-wrapper .ant-upload-drag .ant-upload{padding:16px 0;}.ant-upload-wrapper .ant-upload-drag .ant-upload-btn{display:table;width:100%;height:100%;outline:none;}.ant-upload-wrapper .ant-upload-drag .ant-upload-drag-container{display:table-cell;vertical-align:middle;}.ant-upload-wrapper .ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#198016;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-drag-icon{margin-bottom:16px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-drag-icon .anticon{color:#037003;font-size:48px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-text{margin:0 0 4px;color:rgba(255, 255, 255, 0.85);font-size:16px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-hint{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled{cursor:not-allowed;}.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-drag-icon .anticon,.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-text,.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-hint{color:rgba(255, 255, 255, 0.25);}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item{position:relative;height:66px;padding:8px;border:1px solid #424242;border-radius:8px;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item:hover,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover{background:transparent;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:48px;height:48px;line-height:60px;text-align:center;flex:none;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail .anticon,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail .anticon{font-size:30px;color:#037003;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail img,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail img{display:block;width:100%;height:100%;overflow:hidden;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-progress,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-progress{bottom:12px;width:calc(100% - 24px);margin-top:0;padding-inline-start:56px;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error{border-color:#dc4446;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'],.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff']{fill:#2c1618;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'],.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff']{fill:#dc4446;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-uploading,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading{border-style:dashed;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name{margin-bottom:12px;}.ant-upload-wrapper.ant-upload-picture-card-wrapper{display:inline-block;width:100%;}.ant-upload-wrapper.ant-upload-picture-card-wrapper::before{display:table;content:\\\\\"\\\\\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select{width:102px;height:102px;margin-inline-end:8px;margin-bottom:8px;text-align:center;vertical-align:top;background-color:rgba(255, 255, 255, 0.04);border:1px dashed #424242;border-radius:8px;cursor:pointer;transition:border-color 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select >.ant-upload{display:flex;align-items:center;justify-content:center;height:100%;text-align:center;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select:not(.ant-upload-disabled):hover{border-color:#037003;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-container{display:inline-block;width:102px;height:102px;margin-block:0 8px;margin-inline:0 8px;vertical-align:top;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card::after{display:none;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item{height:100%;margin:0;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item::before{position:absolute;z-index:1;width:calc(100% - 16px);height:calc(100% - 16px);background-color:rgba(0, 0, 0, 0.45);opacity:0;transition:all 0.3s;content:\\\\\" \\\\\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover::before,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-actions{opacity:1;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions{position:absolute;inset-inline-start:0;z-index:10;width:100%;white-space:nowrap;text-align:center;opacity:0;transition:all 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete{z-index:10;width:16px;margin:0 4px;font-size:16px;cursor:pointer;transition:all 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-delete{color:rgba(255, 255, 255, 0.65);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-eye:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-download:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-delete:hover{color:#fff;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-thumbnail,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img{position:static;display:block;width:100%;height:100%;object-fit:contain;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-name{display:none;text-align:center;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-file+.ant-upload-list-item-name{position:absolute;bottom:16px;display:block;width:calc(100% - 16px);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item{background-color:rgba(255, 255, 255, 0.04);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading::before,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-delete{display:none;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-progress{bottom:32px;width:calc(100% - 16px);padding-inline-start:0;}.ant-upload-wrapper .ant-upload-list{line-height:1.5714285714285714;}.ant-upload-wrapper .ant-upload-list::before{display:table;content:\\\\\"\\\\\";}.ant-upload-wrapper .ant-upload-list::after{display:table;clear:both;content:\\\\\"\\\\\";}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item{position:relative;height:22px;margin-top:8px;font-size:14px;display:flex;align-items:center;transition:background-color 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 8px;line-height:1.5714285714285714;flex:auto;transition:all 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action{opacity:0;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action.ant-btn-sm{height:22px;border:0;line-height:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action.ant-btn-sm >span{transform:scale(1);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action:focus,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions.picture .ant-upload-list-item-action{opacity:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .anticon{color:rgba(255, 255, 255, 0.45);transition:all 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions:hover .anticon{color:rgba(255, 255, 255, 0.85);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-icon .anticon{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-progress{position:absolute;bottom:-12px;width:100%;padding-inline-start:22px;font-size:14px;line-height:0;pointer-events:none;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-progress >div{margin:0;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item:hover .ant-upload-list-item-action{opacity:1;color:rgba(255, 255, 255, 0.85);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-name,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-icon .anticon{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .anticon,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .anticon:hover{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .ant-upload-list-item-action{opacity:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-container{transition:opacity 0.3s,height 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-container::before{display:table;width:0;height:0;content:\\\\\"\\\\\";}.ant-upload-wrapper .ant-upload-animate-inline-appear,.ant-upload-wrapper .ant-upload-animate-inline-enter,.ant-upload-wrapper .ant-upload-animate-inline-leave{animation-duration:0.3s;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);animation-fill-mode:forwards;}.ant-upload-wrapper .ant-upload-animate-inline-appear,.ant-upload-wrapper .ant-upload-animate-inline-enter{animation-name:uploadAnimateInlineIn;}.ant-upload-wrapper .ant-upload-animate-inline-leave{animation-name:uploadAnimateInlineOut;}.ant-upload-rtl{direction:rtl;}.ant-upload .ant-motion-collapse-legacy{overflow:hidden;}.ant-upload .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-upload .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes uploadAnimateInlineIn{from{width:0;height:0;margin:0;padding:0;opacity:0;}}@keyframes uploadAnimateInlineOut{to{width:0;height:0;margin:0;padding:0;opacity:0;}}[class^=\\\\\"ant-segmented\\\\\"],[class*=\\\\\" ant-segmented\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-segmented\\\\\"]::before,[class*=\\\\\" ant-segmented\\\\\"]::before,[class^=\\\\\"ant-segmented\\\\\"]::after,[class*=\\\\\" ant-segmented\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"],[class*=\\\\\" ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"],[class^=\\\\\"ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"],[class*=\\\\\" ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"]::before,[class*=\\\\\" ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"]::before,[class^=\\\\\"ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"]::before,[class*=\\\\\" ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"]::before,[class^=\\\\\"ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"]::after,[class*=\\\\\" ant-segmented\\\\\"] [class^=\\\\\"ant-segmented\\\\\"]::after,[class^=\\\\\"ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"]::after,[class*=\\\\\" ant-segmented\\\\\"] [class*=\\\\\" ant-segmented\\\\\"]::after{box-sizing:border-box;}.ant-segmented{box-sizing:border-box;margin:0;padding:2px;color:rgba(255, 255, 255, 0.65);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;background-color:#000000;border-radius:6px;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-segmented .ant-segmented-group{position:relative;display:flex;align-items:stretch;justify-items:flex-start;width:100%;}.ant-segmented.ant-segmented-rtl{direction:rtl;}.ant-segmented.ant-segmented-block{display:flex;}.ant-segmented.ant-segmented-block .ant-segmented-item{flex:1;min-width:0;}.ant-segmented .ant-segmented-item{position:relative;text-align:center;cursor:pointer;transition:color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);border-radius:4px;}.ant-segmented .ant-segmented-item-selected{background-color:#1f1f1f;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);color:rgba(255, 255, 255, 0.85);}.ant-segmented .ant-segmented-item::after{content:\\\\\"\\\\\";position:absolute;width:100%;height:100%;top:0;inset-inline-start:0;border-radius:inherit;transition:background-color 0.2s;}.ant-segmented .ant-segmented-item:hover:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled){color:rgba(255, 255, 255, 0.85);}.ant-segmented .ant-segmented-item:hover:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled)::after{background-color:rgba(255, 255, 255, 0.12);}.ant-segmented .ant-segmented-item-label{min-height:28px;line-height:28px;padding:0 11px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-segmented .ant-segmented-item-icon+*{margin-inline-start:6px;}.ant-segmented .ant-segmented-item-input{position:absolute;inset-block-start:0;inset-inline-start:0;width:0;height:0;opacity:0;pointer-events:none;}.ant-segmented .ant-segmented-thumb{background-color:#1f1f1f;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);position:absolute;inset-block-start:0;inset-inline-start:0;width:0;height:100%;padding:4px 0;border-radius:4px;}.ant-segmented .ant-segmented-thumb~.ant-segmented-item:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled)::after{background-color:transparent;}.ant-segmented.ant-segmented-lg{border-radius:8px;}.ant-segmented.ant-segmented-lg .ant-segmented-item-label{min-height:36px;line-height:36px;padding:0 11px;font-size:16px;}.ant-segmented.ant-segmented-lg .ant-segmented-item,.ant-segmented.ant-segmented-lg .ant-segmented-thumb{border-radius:6px;}.ant-segmented.ant-segmented-sm{border-radius:4px;}.ant-segmented.ant-segmented-sm .ant-segmented-item-label{min-height:20px;line-height:20px;padding:0 7px;}.ant-segmented.ant-segmented-sm .ant-segmented-item,.ant-segmented.ant-segmented-sm .ant-segmented-thumb{border-radius:2px;}.ant-segmented-disabled .ant-segmented-item,.ant-segmented-disabled .ant-segmented-item:hover,.ant-segmented-disabled .ant-segmented-item:focus{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-segmented .ant-segmented-item-disabled,.ant-segmented .ant-segmented-item-disabled:hover,.ant-segmented .ant-segmented-item-disabled:focus{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-segmented .ant-segmented-thumb-motion-appear-active{transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);will-change:transform,width;}[class^=\\\\\"ant-qrcode\\\\\"],[class*=\\\\\" ant-qrcode\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-qrcode\\\\\"]::before,[class*=\\\\\" ant-qrcode\\\\\"]::before,[class^=\\\\\"ant-qrcode\\\\\"]::after,[class*=\\\\\" ant-qrcode\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"],[class*=\\\\\" ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"],[class^=\\\\\"ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"],[class*=\\\\\" ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"]::before,[class*=\\\\\" ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"]::before,[class^=\\\\\"ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"]::before,[class*=\\\\\" ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"]::before,[class^=\\\\\"ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"]::after,[class*=\\\\\" ant-qrcode\\\\\"] [class^=\\\\\"ant-qrcode\\\\\"]::after,[class^=\\\\\"ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"]::after,[class*=\\\\\" ant-qrcode\\\\\"] [class*=\\\\\" ant-qrcode\\\\\"]::after{box-sizing:border-box;}.ant-qrcode{box-sizing:border-box;margin:0;padding:12px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;justify-content:center;align-items:center;background-color:#fff;border-radius:8px;border:1px solid rgba(253, 253, 253, 0.12);position:relative;width:100%;height:100%;overflow:hidden;}.ant-qrcode>.ant-qrcode-mask{position:absolute;inset-block-start:0;inset-inline-start:0;z-index:10;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;background:rgba(255, 255, 255, 0.96);text-align:center;}.ant-qrcode>.ant-qrcode-mask>.ant-qrcode-expired{color:rgba(0, 0, 0, 0.88);}.ant-qrcode-icon{margin-block-end:8px;font-size:32px;}.ant-qrcode-borderless{border-color:transparent;}[class^=\\\\\"ant-app\\\\\"],[class*=\\\\\" ant-app\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-app\\\\\"]::before,[class*=\\\\\" ant-app\\\\\"]::before,[class^=\\\\\"ant-app\\\\\"]::after,[class*=\\\\\" ant-app\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"],[class*=\\\\\" ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"],[class^=\\\\\"ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"],[class*=\\\\\" ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"]::before,[class*=\\\\\" ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"]::before,[class^=\\\\\"ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"]::before,[class*=\\\\\" ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"]::before,[class^=\\\\\"ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"]::after,[class*=\\\\\" ant-app\\\\\"] [class^=\\\\\"ant-app\\\\\"]::after,[class^=\\\\\"ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"]::after,[class*=\\\\\" ant-app\\\\\"] [class*=\\\\\" ant-app\\\\\"]::after{box-sizing:border-box;}.ant-app{color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}[class^=\\\\\"ant-message\\\\\"],[class*=\\\\\" ant-message\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-message\\\\\"]::before,[class*=\\\\\" ant-message\\\\\"]::before,[class^=\\\\\"ant-message\\\\\"]::after,[class*=\\\\\" ant-message\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"],[class*=\\\\\" ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"],[class^=\\\\\"ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"],[class*=\\\\\" ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"]::before,[class*=\\\\\" ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"]::before,[class^=\\\\\"ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"]::before,[class*=\\\\\" ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"]::before,[class^=\\\\\"ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"]::after,[class*=\\\\\" ant-message\\\\\"] [class^=\\\\\"ant-message\\\\\"]::after,[class^=\\\\\"ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"]::after,[class*=\\\\\" ant-message\\\\\"] [class*=\\\\\" ant-message\\\\\"]::after{box-sizing:border-box;}.ant-message{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:fixed;top:8px;width:100%;pointer-events:none;z-index:1010;}.ant-message .ant-message-move-up{animation-fill-mode:forwards;}.ant-message .ant-message-move-up-appear,.ant-message .ant-message-move-up-enter{animation-name:MessageMoveIn;animation-duration:0.3s;animation-play-state:paused;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-message .ant-message-move-up-appear.ant-message-move-up-appear-active,.ant-message .ant-message-move-up-enter.ant-message-move-up-enter-active{animation-play-state:running;}.ant-message .ant-message-move-up-leave{animation-name:MessageMoveOut;animation-duration:0.3s;animation-play-state:paused;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-message .ant-message-move-up-leave.ant-message-move-up-leave-active{animation-play-state:running;}.ant-message-rtl{direction:rtl;}.ant-message-rtl span{direction:rtl;}.ant-message-notice{padding:8px;text-align:center;}.ant-message-notice .anticon{vertical-align:text-bottom;margin-inline-end:8px;font-size:16px;}.ant-message-notice .ant-message-notice-content{display:inline-block;padding:9px 12px;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);pointer-events:all;}.ant-message-notice .ant-message-success .anticon{color:#49aa19;}.ant-message-notice .ant-message-error .anticon{color:#dc4446;}.ant-message-notice .ant-message-warning .anticon{color:#d89614;}.ant-message-notice .ant-message-info .anticon,.ant-message-notice .ant-message-loading .anticon{color:#1668dc;}.ant-message-notice-pure-panel{padding:0;text-align:start;}@keyframes MessageMoveIn{0%{padding:0;transform:translateY(-100%);opacity:0;}100%{padding:8px;transform:translateY(0);opacity:1;}}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1;}100%{max-height:0;padding:0;opacity:0;}}[class^=\\\\\"ant-notification\\\\\"],[class*=\\\\\" ant-notification\\\\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\\\\"ant-notification\\\\\"]::before,[class*=\\\\\" ant-notification\\\\\"]::before,[class^=\\\\\"ant-notification\\\\\"]::after,[class*=\\\\\" ant-notification\\\\\"]::after{box-sizing:border-box;}[class^=\\\\\"ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"],[class*=\\\\\" ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"],[class^=\\\\\"ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"],[class*=\\\\\" ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"]{box-sizing:border-box;}[class^=\\\\\"ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"]::before,[class*=\\\\\" ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"]::before,[class^=\\\\\"ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"]::before,[class*=\\\\\" ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"]::before,[class^=\\\\\"ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"]::after,[class*=\\\\\" ant-notification\\\\\"] [class^=\\\\\"ant-notification\\\\\"]::after,[class^=\\\\\"ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"]::after,[class*=\\\\\" ant-notification\\\\\"] [class*=\\\\\" ant-notification\\\\\"]::after{box-sizing:border-box;}.ant-notification{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:fixed;z-index:1050;margin-inline-end:24px;}.ant-notification .ant-notification-hook-holder{position:relative;}.ant-notification.ant-notification-top,.ant-notification.ant-notification-bottom{margin-inline:0;}.ant-notification.ant-notification-topLeft,.ant-notification.ant-notification-bottomLeft{margin-inline-end:0;margin-inline-start:24px;}.ant-notification.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active,.ant-notification.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationLeftFadeIn;}.ant-notification .ant-notification-fade-enter,.ant-notification .ant-notification-fade-appear{animation-duration:0.2s;animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;opacity:0;animation-play-state:paused;}.ant-notification .ant-notification-fade-leave{animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;animation-duration:0.2s;animation-play-state:paused;}.ant-notification .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationFadeIn;animation-play-state:running;}.ant-notification .ant-notification-fade-leave.ant-notification-fade-leave-active{animation-name:antNotificationFadeOut;animation-play-state:running;}.ant-notification.ant-notification-top .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-top .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationTopFadeIn;}.ant-notification.ant-notification-bottom .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-bottom .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationBottomFadeIn;}.ant-notification-rtl{direction:rtl;}.ant-notification-rtl .ant-notification-notice-btn{float:left;}.ant-notification-notice{position:relative;width:384px;max-width:calc(100vw - 48px);margin-bottom:16px;margin-inline-start:auto;padding:20px 24px;overflow:hidden;line-height:1.5714285714285714;word-wrap:break-word;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-notification-notice .ant-notification-close-icon{font-size:14px;cursor:pointer;}.ant-notification-notice .ant-notification-notice-message{margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5;}.ant-notification-notice .ant-notification-notice-description{font-size:14px;}.ant-notification-notice.ant-notification-notice-closable .ant-notification-notice-message{padding-inline-end:24px;}.ant-notification-notice .ant-notification-notice-with-icon .ant-notification-notice-message{margin-bottom:8px;margin-inline-start:36px;font-size:16px;}.ant-notification-notice .ant-notification-notice-with-icon .ant-notification-notice-description{margin-inline-start:36px;font-size:14px;}.ant-notification-notice .ant-notification-notice-icon{position:absolute;font-size:24px;line-height:0;}.ant-notification-notice .ant-notification-notice-icon-success.anticon{color:#49aa19;}.ant-notification-notice .ant-notification-notice-icon-info.anticon{color:#1668dc;}.ant-notification-notice .ant-notification-notice-icon-warning.anticon{color:#d89614;}.ant-notification-notice .ant-notification-notice-icon-error.anticon{color:#dc4446;}.ant-notification-notice .ant-notification-notice-close{position:absolute;top:20px;inset-inline-end:24px;color:rgba(255, 255, 255, 0.45);outline:none;width:22px;height:22px;border-radius:4px;transition:background-color 0.2s,color 0.2s;display:flex;align-items:center;justify-content:center;}.ant-notification-notice .ant-notification-notice-close:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-notification-notice .ant-notification-notice-btn{float:right;margin-top:12px;}.ant-notification-notice-pure-panel{margin:0;}@keyframes antNotificationLeftFadeIn{0%{right:384px;opacity:0;}100%{right:0;opacity:1;}}@keyframes antNotificationFadeIn{0%{left:384px;opacity:0;}100%{left:0;opacity:1;}}@keyframes antNotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1;}100%{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0;}}@keyframes antNotificationTopFadeIn{0%{margin-top:-100%;opacity:0;}100%{margin-top:0;opacity:1;}}@keyframes antNotificationBottomFadeIn{0%{margin-bottom:-100%;opacity:0;}100%{margin-bottom:0;opacity:1;}}.data-ant-cssinjs-cache-path{content:\\\\\"m3f0rh|ant-design-icons|anticon:ijrcqw;z6uaad|Shared|ant:c6s4t9;z6uaad|Affix|ant-affix|anticon:2zzvr5;z6uaad|Anchor|ant-anchor|anticon:13hrez8;z6uaad|Select|ant-select|anticon:f698cf;z6uaad|Alert|ant-alert|anticon:1es04j3;z6uaad|Avatar|ant-avatar|anticon:19qdqs6;z6uaad|Badge|ant-badge|anticon:11brd8k;z6uaad|Badge|ant-ribbon|anticon:42dxfk;z6uaad|Breadcrumb|ant-breadcrumb|anticon:1j0g5z6;z6uaad|Button|ant-btn|anticon:1rl4the;z6uaad|Wave|ant-wave|anticon:pkgtju;z6uaad|Calendar|ant-picker|anticon:mesz65;z6uaad|Radio|ant-radio|anticon:1rexxqj;z6uaad|Card|ant-card|anticon:pisf11;z6uaad|Collapse|ant-collapse|anticon:1mx93m;z6uaad|Carousel|ant-carousel|anticon:1rz7wcs;z6uaad|Cascader|ant-cascader|anticon:e8gwep;z6uaad|Checkbox|ant-checkbox|anticon:16cn1kz;z6uaad|Checkbox|ant-checkbox-group|anticon:dmylcw;z6uaad|Grid|ant-col|anticon:1b4gqad;z6uaad|Comment|ant-comment|anticon:1bgsssj;z6uaad|DatePicker|ant-picker|anticon:m4frye;z6uaad|Descriptions|ant-descriptions|anticon:6r2ueu;z6uaad|Divider|ant-divider|anticon:p1u0jv;z6uaad|Dropdown|ant-dropdown|anticon:t4fvdt;z6uaad|Drawer|ant-drawer|anticon:yej9xm;z6uaad|Empty|ant-empty|anticon:xi52lg;z6uaad|FloatButton|ant-float-btn|anticon:ri8ruk;z6uaad|Tooltip|ant-tooltip|anticon:1d6z8n1;z6uaad|Form|ant-form|anticon:1tct32d;z6uaad|Grid|ant-row|anticon:xfnjxw;z6uaad|Input|ant-input|anticon:bybrgq;z6uaad|Image|ant-image|anticon:1bvp3xn;z6uaad|InputNumber|ant-input-number|anticon:jtkpcs;z6uaad|Layout|ant-layout|anticon:1idg3qk;z6uaad|List|ant-list|anticon:5p7k62;z6uaad|Spin|ant-spin|anticon:1g1ryjx;z6uaad|Menu|ant-menu|anticon:wo2qbe;z6uaad|Mentions|ant-mentions|anticon:cwasus;z6uaad|Modal|ant-modal|anticon:1pabgrn;z6uaad|Statistic|ant-statistic|anticon:q73svq;z6uaad|Skeleton|ant-skeleton|anticon:10w76qa;z6uaad|PageHeader|ant-page-header|anticon:1a4nm7u;z6uaad|Pagination|ant-pagination|anticon:13nh3ua;z6uaad|Popconfirm|ant-popconfirm|anticon:nmwlv6;z6uaad|Popover|ant-popover|anticon:hwmhax;z6uaad|Tooltip|ant-popover|anticon:17hb4y9;z6uaad|Progress|ant-progress|anticon:1svsnks;z6uaad|Rate|ant-rate|anticon:x3tu0l;z6uaad|Result|ant-result|anticon:9bvn6n;z6uaad|Slider|ant-slider|anticon:haw8s9;z6uaad|Space|ant-space|anticon:10yzkeb;z6uaad|Space|ant-space-compact|anticon:ac2k07;z6uaad|Steps|ant-steps|anticon:h0jjl7;z6uaad|Switch|ant-switch|anticon:18cao7h;z6uaad|Table|ant-table|anticon:pfy5id;z6uaad|Transfer|ant-transfer|anticon:1y4rk2;z6uaad|Tree|ant-tree|anticon:1hk4izj;z6uaad|TreeSelect|ant-tree-select|anticon:dk50w9;z6uaad|Tabs|ant-tabs|anticon:1m3gz2f;z6uaad|Tag|ant-tag|anticon:mtm9nh;z6uaad|Timeline|ant-timeline|anticon:171edtc;z6uaad|Typography|ant-typography|anticon:1gsekci;z6uaad|Upload|ant-upload|anticon:9gg6kc;z6uaad|Segmented|ant-segmented|anticon:zywlxk;z6uaad|QRCode|ant-qrcode|anticon:1aglmhf;z6uaad|App|ant-app|anticon:vhxvxu;z6uaad|Message|ant-message|anticon:175ruci;z6uaad|Notification|ant-notification|anticon:czzwwj\\\\\";}\"`;\n"
  },
  {
    "path": "components/_util/static-style-extract/__tests__/index.test.js",
    "content": "// import { StyleProvider } from '../../cssinjs';\nimport { extractStyle } from '../index';\nimport { ConfigProvider } from '../../../components';\nimport { theme } from '../../../index';\n\nconst testGreenColor = '#008000';\ndescribe('Static-Style-Extract', () => {\n  it('should extract static styles', () => {\n    const cssText = extractStyle();\n    expect(cssText).not.toContain(testGreenColor);\n    expect(cssText).toMatchSnapshot();\n  });\n  it('should extract static styles with customTheme', () => {\n    const cssText = extractStyle(node => {\n      return (\n        <ConfigProvider\n          theme={{\n            token: {\n              colorPrimary: testGreenColor,\n            },\n          }}\n        >\n          {node}\n        </ConfigProvider>\n      );\n    });\n    expect(cssText).toContain(testGreenColor);\n    expect(cssText).toMatchSnapshot();\n  });\n\n  it('should extract static styles with customTheme and customStyle', () => {\n    const cssText = extractStyle(node => {\n      return (\n        <ConfigProvider\n          theme={{\n            algorithm: theme.darkAlgorithm,\n            token: {\n              colorPrimary: testGreenColor,\n            },\n          }}\n        >\n          {node}\n        </ConfigProvider>\n      );\n    });\n    expect(cssText).toContain('#037003');\n    expect(cssText).toMatchSnapshot();\n  });\n  // it('with custom hashPriority', () => {\n  //   const cssText = extractStyle(\n  //     (node) => (\n  //       <StyleProvider hashPriority='high'>\n  //         <ConfigProvider\n  //           theme={{\n  //             token: {\n  //               colorPrimary: testGreenColor,\n  //             },\n  //           }}\n  //         >\n  //           {node}\n  //         </ConfigProvider>\n  //       </StyleProvider>\n  //     ),\n  //   );\n  //   expect(cssText).toContain(testGreenColor);\n  //   expect(cssText).not.toContain(':where');\n  //   expect(cssText).toMatchSnapshot();\n  //\n  //   const cssText2 = extractStyle((node) => (\n  //     <ConfigProvider\n  //       theme={{\n  //         token: {\n  //           colorPrimary: testGreenColor,\n  //         },\n  //       }}\n  //     >\n  //       {node}\n  //     </ConfigProvider>\n  //   ));\n  //   expect(cssText2).toContain(':where');\n  // });\n});\n"
  },
  {
    "path": "components/_util/static-style-extract/index.tsx",
    "content": "import { createCache, extractStyle as extStyle, StyleProvider } from '../cssinjs';\nimport * as antd from '../../components';\nimport { renderToString } from 'vue/server-renderer';\nimport type { CustomRender } from './interface';\nconst blackList: string[] = [\n  'ConfigProvider',\n  'Grid',\n  'Tour',\n  'SelectOptGroup',\n  'SelectOption',\n  'MentionsOption',\n  'TreeNode',\n  'TreeSelectNode',\n  'LocaleProvider',\n];\n\nconst pickerMap = {\n  MonthPicker: 'month',\n  WeekPicker: 'week',\n  QuarterPicker: 'quarter',\n};\n\nconst compChildNameMap = {\n  MenuDivider: 'Menu',\n  MenuItem: 'Menu',\n  MenuItemGroup: 'Menu',\n  SubMenu: 'Menu',\n  TableColumn: 'Table',\n  TableColumnGroup: 'Table',\n  TableSummary: 'Table',\n  TableSummaryRow: 'Table',\n  TableSummaryCell: 'Table',\n  TabPane: 'Tabs',\n  TimelineItem: 'Timeline',\n};\n\nconst defaultNode = () => (\n  <>\n    {Object.keys(antd)\n      .filter(name => !blackList.includes(name) && name[0] === name[0].toUpperCase())\n      .map(compName => {\n        const Comp = antd[compName];\n        if (compName === 'Dropdown') {\n          return (\n            <Comp key={compName} menu={{ items: [] }}>\n              <div />\n            </Comp>\n          );\n        }\n        if (compName === 'Anchor') {\n          return <Comp key={compName} items={[]} />;\n        }\n        if (compName in pickerMap) {\n          const Comp = antd['DatePicker'];\n          const type = pickerMap[compName];\n          return <Comp key={compName} picker={type} />;\n        }\n        if (compName in compChildNameMap) {\n          const ParentComp = antd[compChildNameMap[compName]];\n          return (\n            <ParentComp>\n              <Comp />\n            </ParentComp>\n          );\n        }\n        if (compName === 'QRCode' || compName === 'Segmented') {\n          return (\n            <Comp key={compName} value={''}>\n              <div />\n            </Comp>\n          );\n        }\n        return <Comp key={compName} />;\n      })}\n  </>\n);\n\nexport function extractStyle(customTheme?: CustomRender): string {\n  const cache = createCache();\n  renderToString(\n    <StyleProvider cache={cache}>\n      {customTheme ? customTheme(defaultNode()) : defaultNode()}\n    </StyleProvider>,\n  );\n\n  // Grab style from cache\n  const styleText = extStyle(cache, true);\n\n  return styleText;\n}\n"
  },
  {
    "path": "components/_util/static-style-extract/interface.ts",
    "content": "import type { VueNode } from '../type';\n\nexport type CustomRender = (node: VueNode) => VueNode;\n"
  },
  {
    "path": "components/_util/statusUtils.tsx",
    "content": "import type { ValidateStatus } from '../form/FormItem';\nimport classNames from './classNames';\n\nconst InputStatuses = ['warning', 'error', ''] as const;\n\nexport type InputStatus = (typeof InputStatuses)[number];\n\nexport function getStatusClassNames(\n  prefixCls: string,\n  status?: ValidateStatus,\n  hasFeedback?: boolean,\n) {\n  return classNames({\n    [`${prefixCls}-status-success`]: status === 'success',\n    [`${prefixCls}-status-warning`]: status === 'warning',\n    [`${prefixCls}-status-error`]: status === 'error',\n    [`${prefixCls}-status-validating`]: status === 'validating',\n    [`${prefixCls}-has-feedback`]: hasFeedback,\n  });\n}\n\nexport const getMergedStatus = (contextStatus?: ValidateStatus, customStatus?: InputStatus) =>\n  customStatus || contextStatus;\n"
  },
  {
    "path": "components/_util/styleChecker.ts",
    "content": "import canUseDom from './canUseDom';\n\nexport const canUseDocElement = () => canUseDom() && window.document.documentElement;\n\nconst isStyleNameSupport = (styleName: string | string[]): boolean => {\n  if (canUseDom() && window.document.documentElement) {\n    const styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n    const { documentElement } = window.document;\n\n    return styleNameList.some(name => name in documentElement.style);\n  }\n  return false;\n};\n\nconst isStyleValueSupport = (styleName: string, value: any) => {\n  if (!isStyleNameSupport(styleName)) {\n    return false;\n  }\n\n  const ele = document.createElement('div');\n  const origin = ele.style[styleName];\n  ele.style[styleName] = value;\n  return ele.style[styleName] !== origin;\n};\n\nexport function isStyleSupport(styleName: string | string[], styleValue?: any) {\n  if (!Array.isArray(styleName) && styleValue !== undefined) {\n    return isStyleValueSupport(styleName, styleValue);\n  }\n\n  return isStyleNameSupport(styleName);\n}\n\nlet flexGapSupported: boolean | undefined;\nexport const detectFlexGapSupported = () => {\n  if (!canUseDocElement()) {\n    return false;\n  }\n\n  if (flexGapSupported !== undefined) {\n    return flexGapSupported;\n  }\n\n  // create flex container with row-gap set\n  const flex = document.createElement('div');\n  flex.style.display = 'flex';\n  flex.style.flexDirection = 'column';\n  flex.style.rowGap = '1px';\n\n  // create two, elements inside it\n  flex.appendChild(document.createElement('div'));\n  flex.appendChild(document.createElement('div'));\n\n  // append to the DOM (needed to obtain scrollHeight)\n  document.body.appendChild(flex);\n  flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap\n  document.body.removeChild(flex);\n\n  return flexGapSupported;\n};\n\nexport default isStyleSupport;\n"
  },
  {
    "path": "components/_util/supportsPassive.js",
    "content": "// Test via a getter in the options object to see if the passive property is accessed\nlet supportsPassive = false;\ntry {\n  const opts = Object.defineProperty({}, 'passive', {\n    get() {\n      supportsPassive = true;\n    },\n  });\n  window.addEventListener('testPassive', null, opts);\n  window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nexport default supportsPassive;\n"
  },
  {
    "path": "components/_util/throttleByAnimationFrame.ts",
    "content": "import raf from './raf';\n\ntype throttledFn = (...args: any[]) => void;\n\ntype throttledCancelFn = { cancel: () => void };\n\nfunction throttleByAnimationFrame<T extends any[]>(fn: (...args: T) => void) {\n  let requestId: number | null;\n\n  const later = (args: T) => () => {\n    requestId = null;\n    fn(...args);\n  };\n\n  const throttled: throttledFn & throttledCancelFn = (...args: T) => {\n    if (requestId == null) {\n      requestId = raf(later(args));\n    }\n  };\n\n  throttled.cancel = () => {\n    raf.cancel(requestId!);\n    requestId = null;\n  };\n\n  return throttled;\n}\n\nexport default throttleByAnimationFrame;\n"
  },
  {
    "path": "components/_util/toReactive.ts",
    "content": "import { isRef, reactive } from 'vue';\nimport type { Ref } from 'vue';\ntype MaybeRef<T> = T | Ref<T>;\n/**\n * Converts ref to reactive.\n *\n * @see https://vueuse.org/toReactive\n * @param objectRef A ref of object\n */\nexport function toReactive<T extends object>(objectRef: MaybeRef<T>): T {\n  if (!isRef(objectRef)) return reactive(objectRef) as T;\n\n  const proxy = new Proxy(\n    {},\n    {\n      get(_, p, receiver) {\n        return Reflect.get(objectRef.value, p, receiver);\n      },\n      set(_, p, value) {\n        (objectRef.value as any)[p] = value;\n        return true;\n      },\n      deleteProperty(_, p) {\n        return Reflect.deleteProperty(objectRef.value, p);\n      },\n      has(_, p) {\n        return Reflect.has(objectRef.value, p);\n      },\n      ownKeys() {\n        return Object.keys(objectRef.value);\n      },\n      getOwnPropertyDescriptor() {\n        return {\n          enumerable: true,\n          configurable: true,\n        };\n      },\n    },\n  );\n\n  return reactive(proxy) as T;\n}\n"
  },
  {
    "path": "components/_util/transButton.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent, shallowRef, onMounted } from 'vue';\n/**\n * Wrap of sub component which need use as Button capacity (like Icon component).\n * This helps accessibility reader to tread as a interactive button to operation.\n */\nimport KeyCode from './KeyCode';\n\nconst inlineStyle = {\n  border: 0,\n  background: 'transparent',\n  padding: 0,\n  lineHeight: 'inherit',\n  display: 'inline-block',\n};\n\nconst TransButton = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TransButton',\n  inheritAttrs: false,\n  props: {\n    noStyle: { type: Boolean, default: undefined },\n    onClick: Function,\n    disabled: { type: Boolean, default: undefined },\n    autofocus: { type: Boolean, default: undefined },\n  },\n  setup(props, { slots, emit, attrs, expose }) {\n    const domRef = shallowRef();\n    const onKeyDown = (event: KeyboardEvent) => {\n      const { keyCode } = event;\n      if (keyCode === KeyCode.ENTER) {\n        event.preventDefault();\n      }\n    };\n\n    const onKeyUp = (event: KeyboardEvent) => {\n      const { keyCode } = event;\n      if (keyCode === KeyCode.ENTER) {\n        emit('click', event);\n      }\n    };\n    const onClick = (e: Event) => {\n      emit('click', e);\n    };\n    const focus = () => {\n      if (domRef.value) {\n        domRef.value.focus();\n      }\n    };\n\n    const blur = () => {\n      if (domRef.value) {\n        domRef.value.blur();\n      }\n    };\n    onMounted(() => {\n      if (props.autofocus) {\n        focus();\n      }\n    });\n\n    expose({\n      focus,\n      blur,\n    });\n    return () => {\n      const { noStyle, disabled, ...restProps } = props;\n\n      let mergedStyle: CSSProperties = {};\n\n      if (!noStyle) {\n        mergedStyle = {\n          ...inlineStyle,\n        };\n      }\n\n      if (disabled) {\n        mergedStyle.pointerEvents = 'none';\n      }\n      return (\n        <div\n          role=\"button\"\n          tabindex={0}\n          ref={domRef}\n          {...restProps}\n          {...attrs}\n          onClick={onClick}\n          onKeydown={onKeyDown}\n          onKeyup={onKeyUp}\n          style={{\n            ...mergedStyle,\n            ...((attrs.style as object) || {}),\n          }}\n        >\n          {slots.default?.()}\n        </div>\n      );\n    };\n  },\n});\n\nexport default TransButton;\n"
  },
  {
    "path": "components/_util/transKeys.ts",
    "content": "export const groupKeysMap = (keys: string[]) => {\n  const map = new Map<string, number>();\n  keys.forEach((key, index) => {\n    map.set(key, index);\n  });\n  return map;\n};\n\nexport const groupDisabledKeysMap = <RecordType extends any[]>(dataSource: RecordType) => {\n  const map = new Map<string, number>();\n  dataSource.forEach(({ disabled, key }, index) => {\n    if (disabled) {\n      map.set(key, index);\n    }\n  });\n  return map;\n};\n"
  },
  {
    "path": "components/_util/transition.tsx",
    "content": "import type {\n  BaseTransitionProps,\n  CSSProperties,\n  Ref,\n  TransitionGroupProps,\n  TransitionProps,\n} from 'vue';\nimport { nextTick } from 'vue';\nimport { tuple } from './type';\n\nconst SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nexport type SelectCommonPlacement = (typeof SelectPlacements)[number];\n\nconst getTransitionDirection = (placement: SelectCommonPlacement | undefined) => {\n  if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {\n    return `slide-down`;\n  }\n  return `slide-up`;\n};\n\nexport const getTransitionProps = (transitionName: string, opt: TransitionProps = {}) => {\n  const transitionProps: TransitionProps = transitionName\n    ? {\n        name: transitionName,\n        appear: true,\n        // type: 'animation',\n        // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,\n        // appearActiveClass: `antdv-base-transtion`,\n        // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,\n        enterFromClass: `${transitionName}-enter ${transitionName}-enter-prepare ${transitionName}-enter-start`,\n        enterActiveClass: `${transitionName}-enter ${transitionName}-enter-prepare`,\n        enterToClass: `${transitionName}-enter ${transitionName}-enter-active`,\n        leaveFromClass: ` ${transitionName}-leave`,\n        leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`,\n        leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`,\n        ...opt,\n      }\n    : { css: false, ...opt };\n  return transitionProps;\n};\n\nexport const getTransitionGroupProps = (transitionName: string, opt: TransitionProps = {}) => {\n  const transitionProps: TransitionGroupProps = transitionName\n    ? {\n        name: transitionName,\n        appear: true,\n        // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,\n        appearActiveClass: `${transitionName}`,\n        appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,\n        enterFromClass: `${transitionName}-appear ${transitionName}-enter ${transitionName}-appear-prepare ${transitionName}-enter-prepare`,\n        enterActiveClass: `${transitionName}`,\n        enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,\n        leaveActiveClass: `${transitionName} ${transitionName}-leave`,\n        leaveToClass: `${transitionName}-leave-active`,\n        ...opt,\n      }\n    : { css: false, ...opt };\n  return transitionProps;\n};\n\nexport declare type MotionEvent = (TransitionEvent | AnimationEvent) & {\n  deadline?: boolean;\n};\n\nexport declare type MotionEventHandler = (element: Element, done?: () => void) => CSSProperties;\n\nexport declare type MotionEndEventHandler = (element: Element, done?: () => void) => boolean | void;\n\n// ================== Collapse Motion ==================\nconst getCollapsedHeight: MotionEventHandler = () => ({ height: 0, opacity: 0 });\nconst getRealHeight: MotionEventHandler = node => ({\n  height: `${node.scrollHeight}px`,\n  opacity: 1,\n});\nconst getCurrentHeight: MotionEventHandler = (node: any) => ({ height: `${node.offsetHeight}px` });\n// const skipOpacityTransition: MotionEndEventHandler = (_, event) =>\n//   (event as TransitionEvent).propertyName === 'height';\n\nexport interface CSSMotionProps extends Partial<BaseTransitionProps<Element>> {\n  name?: string;\n  css?: boolean;\n}\n\nconst collapseMotion = (\n  name = 'ant-motion-collapse',\n  style: Ref<CSSProperties>,\n  className: Ref<string>,\n): CSSMotionProps => {\n  return {\n    name,\n    appear: true,\n    css: true,\n    onBeforeEnter: node => {\n      className.value = name;\n      style.value = getCollapsedHeight(node);\n    },\n    onEnter: node => {\n      nextTick(() => {\n        style.value = getRealHeight(node);\n      });\n    },\n    onAfterEnter: () => {\n      className.value = '';\n      style.value = {};\n    },\n    onBeforeLeave: node => {\n      className.value = name;\n      style.value = getCurrentHeight(node);\n    },\n    onLeave: node => {\n      setTimeout(() => {\n        style.value = getCollapsedHeight(node);\n      });\n    },\n    onAfterLeave: () => {\n      className.value = '';\n      style.value = {};\n    },\n  };\n};\n\nconst getTransitionName = (rootPrefixCls: string, motion: string, transitionName?: string) => {\n  if (transitionName !== undefined) {\n    return transitionName;\n  }\n  return `${rootPrefixCls}-${motion}`;\n};\n\nexport { collapseMotion, getTransitionName, getTransitionDirection };\n"
  },
  {
    "path": "components/_util/type.ts",
    "content": "// @ts-ignore\nimport type { App, PropType, Plugin, Ref, VNode, SlotsType } from 'vue';\n\n// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport const tuple = <T extends string[]>(...args: T) => args;\n\nexport const tupleNum = <T extends number[]>(...args: T) => args;\n\n/**\n * https://stackoverflow.com/a/59187769\n * Extract the type of an element of an array/tuple without performing indexing\n */\nexport type ElementOf<T> = T extends (infer E)[] ? E : T extends readonly (infer F)[] ? F : never;\n\n/**\n * https://github.com/Microsoft/TypeScript/issues/29729\n */\nexport type LiteralUnion<T extends string> = T | (string & {});\n\nexport type Data = Record<string, unknown>;\n\nexport type Key = string | number;\n\ntype DefaultFactory<T> = (props: Data) => T | null | undefined;\n\nexport interface PropOptions<T = any, D = T> {\n  type?: PropType<T> | true | null;\n  required?: boolean;\n  default?: D | DefaultFactory<D> | null | undefined | object;\n  validator?(value: unknown): boolean;\n}\n\ndeclare type VNodeChildAtom = VNode | string | number | boolean | null | undefined | void;\n\n// eslint-disable-next-line no-undef\nexport type VueNode = VNodeChildAtom | VNodeChildAtom[] | VNode;\n\nexport const withInstall = <T>(comp: T) => {\n  const c = comp as any;\n  c.install = function (app: App) {\n    app.component(c.displayName || c.name, comp);\n  };\n\n  return comp as T & Plugin;\n};\n\nexport type MaybeRef<T> = T | Ref<T>;\n\nexport function eventType<T>() {\n  return { type: [Function, Array] as PropType<T | T[]> };\n}\n\nexport function objectType<T = {}>(defaultVal?: T) {\n  return { type: Object as PropType<T>, default: defaultVal as T };\n}\n\nexport function booleanType(defaultVal?: boolean) {\n  return { type: Boolean, default: defaultVal as boolean };\n}\n\nexport function functionType<T = () => {}>(defaultVal?: T) {\n  return { type: Function as PropType<T>, default: defaultVal as T };\n}\n\nexport function anyType<T = any>(defaultVal?: T, required?: boolean) {\n  const type = { validator: () => true, default: defaultVal as T } as unknown;\n  return required\n    ? (type as {\n        type: PropType<T>;\n        default: T;\n        required: true;\n      })\n    : (type as {\n        default: T;\n        type: PropType<T>;\n      });\n}\nexport function vNodeType<T = VueNode>() {\n  return { validator: () => true } as unknown as { type: PropType<T> };\n}\n\nexport function arrayType<T extends any[]>(defaultVal?: T) {\n  return { type: Array as unknown as PropType<T>, default: defaultVal as T };\n}\n\nexport function stringType<T extends string = string>(defaultVal?: T) {\n  return { type: String as unknown as PropType<T>, default: defaultVal as T };\n}\n\nexport function someType<T>(types?: any[], defaultVal?: T) {\n  return types ? { type: types as PropType<T>, default: defaultVal as T } : anyType<T>(defaultVal);\n}\n\nexport type CustomSlotsType<T> = SlotsType<T>;\n\nexport type AnyObject = Record<PropertyKey, any>;\n"
  },
  {
    "path": "components/_util/unreachableException.ts",
    "content": "export default class UnreachableException {\n  error: Error;\n\n  constructor(value: any) {\n    this.error = new Error(`unreachable case: ${JSON.stringify(value)}`);\n  }\n}\n"
  },
  {
    "path": "components/_util/util.ts",
    "content": "import type { VueNode } from './type';\nexport const isFunction = val => typeof val === 'function';\nexport const controlDefaultValue = Symbol('controlDefaultValue') as any;\nexport const isArray = Array.isArray;\nexport const isString = val => typeof val === 'string';\nexport const isSymbol = val => typeof val === 'symbol';\nexport const isObject = val => val !== null && typeof val === 'object';\nconst onRE = /^on[^a-z]/;\nconst isOn = key => onRE.test(key);\n\nconst cacheStringFunction = fn => {\n  const cache = Object.create(null);\n  return str => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(str => {\n  return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(str => {\n  return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n\nconst capitalize = cacheStringFunction(str => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n\n// change from vue sourcecode\nfunction resolvePropValue(options, props, key, value) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, 'default');\n    // default values\n    if (hasDefault && value === undefined) {\n      const defaultValue = opt.default;\n      value = opt.type !== Function && isFunction(defaultValue) ? defaultValue() : defaultValue;\n    }\n    // boolean casting\n    if (opt.type === Boolean) {\n      if (!hasOwn(props, key) && !hasDefault) {\n        value = false;\n      } else if (value === '') {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\n\nexport function getDataAndAriaProps(props) {\n  return Object.keys(props).reduce((memo, key) => {\n    if (key.startsWith('data-') || key.startsWith('aria-')) {\n      memo[key] = props[key];\n    }\n    return memo;\n  }, {});\n}\n\nexport function toPx(val) {\n  if (typeof val === 'number') return `${val}px`;\n  return val;\n}\n\nexport function renderHelper<T = Record<string, any>>(\n  v: VueNode | ((arg0: T) => VueNode),\n  props: T = {} as T,\n  defaultV?: any,\n) {\n  if (typeof v === 'function') {\n    return v(props);\n  }\n  return v ?? defaultV;\n}\nexport function wrapPromiseFn(openFn: (resolve: VoidFunction) => VoidFunction) {\n  let closeFn: VoidFunction;\n\n  const closePromise = new Promise<boolean>(resolve => {\n    closeFn = openFn(() => {\n      resolve(true);\n    });\n  });\n\n  const result: any = () => {\n    closeFn?.();\n  };\n\n  result.then = (filled: VoidFunction, rejected: VoidFunction) =>\n    closePromise.then(filled, rejected);\n  result.promise = closePromise;\n\n  return result;\n}\n\nexport { isOn, cacheStringFunction, camelize, hyphenate, capitalize, resolvePropValue };\n"
  },
  {
    "path": "components/_util/vnode.ts",
    "content": "import { filterEmpty } from './props-util';\nimport type { Slots, VNode, VNodeArrayChildren, VNodeProps } from 'vue';\nimport { cloneVNode, isVNode, Comment, Fragment, render as VueRender } from 'vue';\nimport warning from './warning';\nimport type { RefObject } from './createRef';\ntype NodeProps = Record<string, any> &\n  Omit<VNodeProps, 'ref'> & { ref?: VNodeProps['ref'] | RefObject };\n\nexport function cloneElement<T, U>(\n  vnode: VNode<T, U> | VNode<T, U>[],\n  nodeProps: NodeProps = {},\n  override = true,\n  mergeRef = false,\n): VNode<T, U> {\n  let ele = vnode;\n  if (Array.isArray(vnode)) {\n    ele = filterEmpty(vnode)[0];\n  }\n  if (!ele) {\n    return null;\n  }\n  const node = cloneVNode(ele as VNode<T, U>, nodeProps as any, mergeRef);\n\n  // cloneVNode内部是合并属性，这里改成覆盖属性\n  node.props = (override ? { ...node.props, ...nodeProps } : node.props) as any;\n  warning(typeof node.props.class !== 'object', 'class must be string');\n  return node;\n}\n\nexport function cloneVNodes(vnodes, nodeProps = {}, override = true) {\n  return vnodes.map(vnode => cloneElement(vnode, nodeProps, override));\n}\n\nexport function deepCloneElement<T, U>(\n  vnode: VNode<T, U> | VNode<T, U>[],\n  nodeProps: NodeProps = {},\n  override = true,\n  mergeRef = false,\n) {\n  if (Array.isArray(vnode)) {\n    return vnode.map(item => deepCloneElement(item, nodeProps, override, mergeRef));\n  } else {\n    // 需要判断是否为vnode方可进行clone操作\n    if (!isVNode(vnode)) {\n      return vnode;\n    }\n    const cloned = cloneElement(vnode, nodeProps, override, mergeRef);\n    if (Array.isArray(cloned.children)) {\n      cloned.children = deepCloneElement(cloned.children as VNode<T, U>[]);\n    }\n    return cloned;\n  }\n}\n\nexport function triggerVNodeUpdate(vm: VNode, attrs: Record<string, any>, dom: any) {\n  VueRender(cloneVNode(vm, { ...attrs }), dom);\n}\n\nconst ensureValidVNode = (slot: VNodeArrayChildren | null) => {\n  return (slot || []).some(child => {\n    if (!isVNode(child)) return true;\n    if (child.type === Comment) return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children as VNodeArrayChildren))\n      return false;\n    return true;\n  })\n    ? slot\n    : null;\n};\n\nexport function customRenderSlot(\n  slots: Slots,\n  name: string,\n  props: Record<string, unknown>,\n  fallback?: () => VNodeArrayChildren,\n) {\n  const slot = slots[name]?.(props);\n  if (ensureValidVNode(slot)) {\n    return slot;\n  }\n  return fallback?.();\n}\n"
  },
  {
    "path": "components/_util/vue-types/index.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { VueTypeValidableDef, VueTypesInterface } from 'vue-types';\nimport { createTypes } from 'vue-types';\nimport type { VueNode } from '../type';\nconst PropTypes = createTypes({\n  func: undefined,\n  bool: undefined,\n  string: undefined,\n  number: undefined,\n  array: undefined,\n  object: undefined,\n  integer: undefined,\n});\n\nPropTypes.extend([\n  {\n    name: 'looseBool',\n    getter: true,\n    type: Boolean,\n    default: undefined,\n  },\n  {\n    name: 'style',\n    getter: true,\n    type: [String, Object],\n    default: undefined,\n  },\n  {\n    name: 'VueNode',\n    getter: true,\n    type: null,\n  },\n]);\n\nexport function withUndefined<T extends { default?: any }>(type: T): T {\n  type.default = undefined;\n  return type;\n}\nexport default PropTypes as VueTypesInterface & {\n  readonly looseBool: VueTypeValidableDef<boolean>;\n  readonly style: VueTypeValidableDef<CSSProperties>;\n  readonly VueNode: VueTypeValidableDef<VueNode>;\n};\n"
  },
  {
    "path": "components/_util/warning.ts",
    "content": "import vcWarning, { resetWarned } from '../vc-util/warning';\n\nexport { resetWarned };\nexport function noop() {}\n\ntype Warning = (valid: boolean, component: string, message?: string) => void;\n\n// eslint-disable-next-line import/no-mutable-exports\nlet warning: Warning = noop;\nif (process.env.NODE_ENV !== 'production') {\n  warning = (valid, component, message) => {\n    vcWarning(valid, `[ant-design-vue: ${component}] ${message}`);\n\n    // StrictMode will inject console which will not throw warning in React 17.\n    if (process.env.NODE_ENV === 'test') {\n      resetWarned();\n    }\n  };\n}\n\nexport default warning;\n"
  },
  {
    "path": "components/_util/wave/WaveEffect.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { onBeforeUnmount, onMounted, Transition, render, defineComponent, shallowRef } from 'vue';\nimport useState from '../hooks/useState';\nimport { objectType } from '../type';\nimport { getTargetWaveColor } from './util';\nimport wrapperRaf from '../raf';\nfunction validateNum(value: number) {\n  return Number.isNaN(value) ? 0 : value;\n}\n\nexport interface WaveEffectProps {\n  className: string;\n  target: HTMLElement;\n}\n\nconst WaveEffect = defineComponent({\n  props: {\n    target: objectType<HTMLElement>(),\n    className: String,\n  },\n  setup(props) {\n    const divRef = shallowRef<HTMLDivElement | null>(null);\n\n    const [color, setWaveColor] = useState<string | null>(null);\n    const [borderRadius, setBorderRadius] = useState<number[]>([]);\n    const [left, setLeft] = useState(0);\n    const [top, setTop] = useState(0);\n    const [width, setWidth] = useState(0);\n    const [height, setHeight] = useState(0);\n    const [enabled, setEnabled] = useState(false);\n\n    function syncPos() {\n      const { target } = props;\n      const nodeStyle = getComputedStyle(target);\n\n      // Get wave color from target\n      setWaveColor(getTargetWaveColor(target));\n\n      const isStatic = nodeStyle.position === 'static';\n\n      // Rect\n      const { borderLeftWidth, borderTopWidth } = nodeStyle;\n      setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n      setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n      setWidth(target.offsetWidth);\n      setHeight(target.offsetHeight);\n\n      // Get border radius\n      const {\n        borderTopLeftRadius,\n        borderTopRightRadius,\n        borderBottomLeftRadius,\n        borderBottomRightRadius,\n      } = nodeStyle;\n\n      setBorderRadius(\n        [\n          borderTopLeftRadius,\n          borderTopRightRadius,\n          borderBottomRightRadius,\n          borderBottomLeftRadius,\n        ].map(radius => validateNum(parseFloat(radius))),\n      );\n    }\n    // Add resize observer to follow size\n    let resizeObserver: ResizeObserver;\n    let rafId: number;\n    let timeoutId: any;\n    const clear = () => {\n      clearTimeout(timeoutId);\n      wrapperRaf.cancel(rafId);\n      resizeObserver?.disconnect();\n    };\n    const removeDom = () => {\n      const holder = divRef.value?.parentElement;\n      if (holder) {\n        render(null, holder);\n        if (holder.parentElement) {\n          holder.parentElement.removeChild(holder);\n        }\n      }\n    };\n\n    onMounted(() => {\n      clear();\n      timeoutId = setTimeout(() => {\n        removeDom();\n      }, 5000);\n      const { target } = props;\n      if (target) {\n        // We need delay to check position here\n        // since UI may change after click\n        rafId = wrapperRaf(() => {\n          syncPos();\n\n          setEnabled(true);\n        });\n\n        if (typeof ResizeObserver !== 'undefined') {\n          resizeObserver = new ResizeObserver(syncPos);\n\n          resizeObserver.observe(target);\n        }\n      }\n    });\n    onBeforeUnmount(() => {\n      clear();\n    });\n\n    const onTransitionend = (e: TransitionEvent) => {\n      if (e.propertyName === 'opacity') {\n        removeDom();\n      }\n    };\n    return () => {\n      if (!enabled.value) {\n        return null;\n      }\n      const waveStyle = {\n        left: `${left.value}px`,\n        top: `${top.value}px`,\n        width: `${width.value}px`,\n        height: `${height.value}px`,\n        borderRadius: borderRadius.value.map(radius => `${radius}px`).join(' '),\n      } as CSSProperties & {\n        [name: string]: number | string;\n      };\n\n      if (color) {\n        waveStyle['--wave-color'] = color.value as string;\n      }\n\n      return (\n        <Transition\n          appear\n          name=\"wave-motion\"\n          appearFromClass=\"wave-motion-appear\"\n          appearActiveClass=\"wave-motion-appear\"\n          appearToClass=\"wave-motion-appear wave-motion-appear-active\"\n        >\n          <div\n            ref={divRef}\n            class={props.className}\n            style={waveStyle}\n            onTransitionend={onTransitionend}\n          />\n        </Transition>\n      );\n    };\n  },\n});\n\nfunction showWaveEffect(node: HTMLElement, className: string) {\n  // Create holder\n  const holder = document.createElement('div');\n  holder.style.position = 'absolute';\n  holder.style.left = `0px`;\n  holder.style.top = `0px`;\n  node?.insertBefore(holder, node?.firstChild);\n\n  render(<WaveEffect target={node} className={className} />, holder);\n  return () => {\n    render(null, holder);\n    if (holder.parentElement) {\n      holder.parentElement.removeChild(holder);\n    }\n  };\n}\n\nexport default showWaveEffect;\n"
  },
  {
    "path": "components/_util/wave/index.tsx",
    "content": "import {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport isVisible from '../../vc-util/Dom/isVisible';\nimport classNames from '../classNames';\nimport { findDOMNode } from '../props-util';\nimport useStyle from './style';\nimport useWave from './useWave';\n\nexport interface WaveProps {\n  disabled?: boolean;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Wave',\n  props: {\n    disabled: Boolean,\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const { prefixCls, wave } = useConfigInject('wave', props);\n\n    // ============================== Style ===============================\n    const [, hashId] = useStyle(prefixCls);\n\n    // =============================== Wave ===============================\n    const showWave = useWave(\n      computed(() => classNames(prefixCls.value, hashId.value)),\n      wave,\n    );\n    let onClick: (e: MouseEvent) => void;\n    const clear = () => {\n      const node = findDOMNode(instance) as HTMLElement;\n      node.removeEventListener('click', onClick, true);\n    };\n    onMounted(() => {\n      watch(\n        () => props.disabled,\n        () => {\n          clear();\n          nextTick(() => {\n            const node: HTMLElement = findDOMNode(instance);\n            node?.removeEventListener('click', onClick, true);\n            if (!node || node.nodeType !== 1 || props.disabled) {\n              return;\n            }\n\n            // Click handler\n            onClick = (e: MouseEvent) => {\n              // Fix radio button click twice\n              if (\n                (e.target as HTMLElement).tagName === 'INPUT' ||\n                !isVisible(e.target as HTMLElement) ||\n                // No need wave\n                !node.getAttribute ||\n                node.getAttribute('disabled') ||\n                (node as HTMLInputElement).disabled ||\n                node.className.includes('disabled') ||\n                node.className.includes('-leave')\n              ) {\n                return;\n              }\n\n              showWave();\n            };\n\n            // Bind events\n            node.addEventListener('click', onClick, true);\n          });\n        },\n        {\n          immediate: true,\n          flush: 'post',\n        },\n      );\n    });\n    onBeforeUnmount(() => {\n      clear();\n    });\n\n    return () => {\n      // ============================== Render ==============================\n      const children = slots.default?.()[0];\n      return children;\n    };\n  },\n});\n"
  },
  {
    "path": "components/_util/wave/style.ts",
    "content": "import { genComponentStyleHook } from '../../theme/internal';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ComponentToken {}\n\nexport type WaveToken = FullToken<'Wave'>;\n\nconst genWaveStyle: GenerateStyle<WaveToken> = token => {\n  const { componentCls, colorPrimary } = token;\n  return {\n    [componentCls]: {\n      position: 'absolute',\n      background: 'transparent',\n      pointerEvents: 'none',\n      boxSizing: 'border-box',\n      color: `var(--wave-color, ${colorPrimary})`,\n\n      boxShadow: `0 0 0 0 currentcolor`,\n      opacity: 0.2,\n\n      // =================== Motion ===================\n      '&.wave-motion-appear': {\n        transition: [\n          `box-shadow 0.4s ${token.motionEaseOutCirc}`,\n          `opacity 2s ${token.motionEaseOutCirc}`,\n        ].join(','),\n\n        '&-active': {\n          boxShadow: `0 0 0 6px currentcolor`,\n          opacity: 0,\n        },\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook('Wave', token => [genWaveStyle(token)]);\n"
  },
  {
    "path": "components/_util/wave/useWave.ts",
    "content": "import type { ComputedRef, Ref } from 'vue';\nimport { onBeforeUnmount, getCurrentInstance } from 'vue';\nimport { findDOMNode } from '../props-util';\nimport showWaveEffect from './WaveEffect';\n\nexport default function useWave(\n  className: Ref<string>,\n  wave?: ComputedRef<{ disabled?: boolean }>,\n): VoidFunction {\n  const instance = getCurrentInstance();\n  let stopWave: () => void;\n  function showWave() {\n    const node = findDOMNode(instance);\n    stopWave?.();\n    if (wave?.value?.disabled || !node) {\n      return;\n    }\n    stopWave = showWaveEffect(node, className.value);\n  }\n  onBeforeUnmount(() => {\n    stopWave?.();\n  });\n\n  return showWave;\n}\n"
  },
  {
    "path": "components/_util/wave/util.ts",
    "content": "export function isNotGrey(color: string) {\n  // eslint-disable-next-line no-useless-escape\n  const match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n  if (match && match[1] && match[2] && match[3]) {\n    return !(match[1] === match[2] && match[2] === match[3]);\n  }\n  return true;\n}\n\nexport function isValidWaveColor(color: string) {\n  return (\n    color &&\n    color !== '#fff' &&\n    color !== '#ffffff' &&\n    color !== 'rgb(255, 255, 255)' &&\n    color !== 'rgba(255, 255, 255, 1)' &&\n    isNotGrey(color) &&\n    !/rgba\\((?:\\d*, ){3}0\\)/.test(color) && // any transparent rgba color\n    color !== 'transparent'\n  );\n}\n\nexport function getTargetWaveColor(node: HTMLElement) {\n  const { borderTopColor, borderColor, backgroundColor } = getComputedStyle(node);\n  if (isValidWaveColor(borderTopColor)) {\n    return borderTopColor;\n  }\n  if (isValidWaveColor(borderColor)) {\n    return borderColor;\n  }\n  if (isValidWaveColor(backgroundColor)) {\n    return backgroundColor;\n  }\n  return null;\n}\n"
  },
  {
    "path": "components/affix/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/affix/demo/basic.vue correctly 1`] = `\n<div>\n  <!---->\n  <div class=\"\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Affix top</span>\n    </button></div>\n</div>\n<br>\n<div>\n  <!---->\n  <div class=\"\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Affix bottom</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/affix/demo/on-change.vue correctly 1`] = `\n<div>\n  <!---->\n  <div class=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>120px to affix top</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/affix/demo/target.vue correctly 1`] = `\n<div id=\"components-affix-demo-target\" class=\"scrollable-container\">\n  <div class=\"background\">\n    <div>\n      <!---->\n      <div class=\"\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Fixed at the top of container</span>\n        </button></div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/affix/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('affix');\n"
  },
  {
    "path": "components/affix/__tests__/index.test.js",
    "content": "import Affix from '..';\nimport Button from '../../button';\nimport { mount } from '@vue/test-utils';\nimport { spyElementPrototype } from '../../__tests__/util/domHook';\nconst events = {};\n\nconst AffixMounter = {\n  props: ['offsetBottom', 'offsetTop'],\n  mounted() {\n    this.$refs.container.addEventListener = jest.fn().mockImplementation((event, cb) => {\n      events[event] = cb;\n    });\n  },\n  methods: {\n    getTarget() {\n      return this.$refs.container;\n    },\n  },\n\n  render() {\n    return (\n      <div ref=\"container\" class=\"container\">\n        <Affix class=\"fixed\" target={() => this.$refs.container} ref=\"affix\">\n          <Button type=\"primary\">Fixed at the top of container</Button>\n        </Affix>\n      </div>\n    );\n  },\n};\ndescribe('Affix Render', () => {\n  let wrapper;\n  let domMock;\n  const classRect = {\n    container: {\n      top: 1000,\n      bottom: 100,\n    },\n  };\n  beforeAll(() => {\n    document.body.innerHTML = '';\n    jest.useFakeTimers();\n    domMock = spyElementPrototype(HTMLElement, 'getBoundingClientRect', function mockBounding() {\n      return (\n        classRect[this.className] || {\n          top: 0,\n          bottom: 0,\n        }\n      );\n    });\n  });\n  afterAll(() => {\n    jest.useRealTimers();\n    domMock.mockRestore();\n  });\n  const movePlaceholder = top => {\n    classRect.fixed = {\n      top,\n      bottom: top,\n    };\n    events.scroll({\n      type: 'scroll',\n    });\n    jest.runAllTimers();\n  };\n  it('Anchor render perfectly', () => {\n    wrapper = mount(AffixMounter, { attachTo: 'body' });\n    jest.runAllTimers();\n\n    movePlaceholder(0);\n    expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy();\n\n    // movePlaceholder(100);\n    // expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy();\n\n    movePlaceholder(0);\n    expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy();\n  });\n  it('support offsetBottom', () => {\n    wrapper = mount(AffixMounter, {\n      attachTo: 'body',\n      props: {\n        offsetBottom: 0,\n      },\n    });\n\n    jest.runAllTimers();\n\n    movePlaceholder(300);\n    //expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy();\n\n    movePlaceholder(0);\n    expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy();\n\n    // movePlaceholder(300);\n    // expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy();\n  });\n\n  // it('updatePosition when offsetTop changed', () => {\n  //   wrapper = mount(AffixMounter, {\n  //     attachTo: 'body',\n  //     props: {\n  //       offsetTop: 0,\n  //     },\n  //   });\n\n  //   jest.runAllTimers();\n\n  //   movePlaceholder(-100);\n  //   expect(wrapper.vm.$refs.affix.affixStyle.top).toBe('0px');\n  //   wrapper.setProps({\n  //     offsetTop: 10,\n  //   });\n  //   jest.runAllTimers();\n  //   expect(wrapper.vm.$refs.affix.affixStyle.top).toBe('10px');\n  // });\n});\n"
  },
  {
    "path": "components/affix/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest usage.\n\n</docs>\n\n<template>\n  <a-affix :offset-top=\"top\">\n    <a-button type=\"primary\" @click=\"top += 10\">Affix top</a-button>\n  </a-affix>\n  <br />\n  <a-affix :offset-bottom=\"bottom\">\n    <a-button type=\"primary\" @click=\"bottom += 10\">Affix bottom</a-button>\n  </a-affix>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst top = ref<number>(10);\nconst bottom = ref<number>(10);\n</script>\n"
  },
  {
    "path": "components/affix/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <on-change />\n    <traget />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport Basic from './basic.vue';\nimport OnChange from './on-change.vue';\nimport Traget from './target.vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    OnChange,\n    Traget,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/affix/demo/on-change.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 固定状态改变的回调\n  en-US: Callback\n---\n\n## zh-CN\n\n可以获得是否固定的状态。\n\n## en-US\n\nCallback with affixed state.\n\n</docs>\n\n<template>\n  <a-affix :offset-top=\"120\" @change=\"change\">\n    <a-button>120px to affix top</a-button>\n  </a-affix>\n</template>\n<script lang=\"ts\" setup>\nconst change = (affixed: boolean) => {\n  console.log(affixed);\n};\n</script>\n"
  },
  {
    "path": "components/affix/demo/target.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 滚动容器\n  en-US: Container to scroll.\n---\n\n## zh-CN\n\n用 `target` 设置 `Affix` 需要监听其滚动事件的元素，默认为 `window`。\n\n## en-US\n\nSet a `target` for 'Affix', which is listen to scroll event of target element (default is `window`).\n\n</docs>\n\n<template>\n  <div id=\"components-affix-demo-target\" ref=\"containerRef\" class=\"scrollable-container\">\n    <div class=\"background\">\n      <a-affix :target=\"() => containerRef\">\n        <a-button type=\"primary\">Fixed at the top of container</a-button>\n      </a-affix>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst containerRef = ref();\n</script>\n<style scoped>\n#components-affix-demo-target.scrollable-container {\n  height: 100px;\n  overflow-y: scroll;\n}\n\n#components-affix-demo-target .background {\n  padding-top: 60px;\n  height: 300px;\n  background-image: url('https://zos.alipayobjects.com/rmsportal/RmjwQiJorKyobvI.jpg');\n}\n</style>\n"
  },
  {
    "path": "components/affix/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Other\ntitle: Affix\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YSm4RI3iOJ8AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*03dxS64LxeQAAAAAAAAAAAAADrJ8AQ/original\n---\n\nWrap Affix around another component to make it stick the viewport.\n\n## When To Use\n\nOn longer web pages, its helpful for some content to stick to the viewport. This is common for menus and actions.\n\nPlease note that Affix should not cover other content on the page, especially when the size of the viewport is small.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| offsetBottom | Offset from the bottom of the viewport (in pixels) | number | - |  |\n| offsetTop | Offset from the top of the viewport (in pixels) | number | 0 |  |\n| target | Specifies the scrollable area DOM node | () => HTMLElement | () => window |  |\n\n### events\n\n| Events Name | Description                              | Arguments                   | Version |\n| ----------- | ---------------------------------------- | --------------------------- | ------- |\n| change      | Callback for when Affix state is changed | (affixed?: boolean) => void |         |\n\n**Note:** Children of `Affix` must not have the property `position: absolute`, but you can set `position: absolute` on `Affix` itself:\n\n```html\n<a-affix :style=\"{ position: 'absolute', top: y, left: x}\">...</a-affix>\n```\n\n## FAQ\n\n### When binding container with `target` in Affix, elements sometimes move out of the container.\n\nWe only listen to container scroll events for performance consideration. You can add custom listeners if you still want to, like react demo <https://codesandbox.io/s/2xyj5zr85p>\n\nRelated issues：[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)\n\n### When Affix is ​​used in a horizontal scroll container, the position of the element `left` is incorrect.\n\nAffix is ​​generally only applicable to areas with one-way scrolling, and only supports usage in vertical scrolling containers. If you want to use it in a horizontal container, you can consider implementing with the native `position: sticky` property.\n"
  },
  {
    "path": "components/affix/index.tsx",
    "content": "import type { ComponentPublicInstance, CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport {\n  defineComponent,\n  shallowRef,\n  reactive,\n  watch,\n  onMounted,\n  getCurrentInstance,\n  computed,\n  onUnmounted,\n  onUpdated,\n} from 'vue';\nimport classNames from '../_util/classNames';\nimport ResizeObserver from '../vc-resize-observer';\nimport throttleByAnimationFrame from '../_util/throttleByAnimationFrame';\nimport { withInstall } from '../_util/type';\nimport {\n  addObserveTarget,\n  removeObserveTarget,\n  getTargetRect,\n  getFixedTop,\n  getFixedBottom,\n} from './utils';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport useStyle from './style';\nfunction getDefaultTarget() {\n  return typeof window !== 'undefined' ? window : null;\n}\nenum AffixStatus {\n  None,\n  Prepare,\n}\nexport interface AffixState {\n  affixStyle?: CSSProperties;\n  placeholderStyle?: CSSProperties;\n  status: AffixStatus;\n  lastAffix: boolean;\n  prevTarget: Window | HTMLElement | null;\n}\n\n// Affix\nexport const affixProps = () => ({\n  /**\n   * 距离窗口顶部达到指定偏移量后触发\n   */\n  offsetTop: Number,\n  /** 距离窗口底部达到指定偏移量后触发 */\n  offsetBottom: Number,\n  /** 设置 Affix 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 */\n  target: {\n    type: Function as PropType<() => Window | HTMLElement | null>,\n    default: getDefaultTarget,\n  },\n  prefixCls: String,\n  /** 固定状态改变时触发的回调函数 */\n  onChange: Function as PropType<AffixEmits['change']>,\n  onTestUpdatePosition: Function as PropType<AffixEmits['testUpdatePosition']>,\n});\n\nexport type AffixProps = Partial<ExtractPropTypes<ReturnType<typeof affixProps>>>;\n\nexport type AffixEmits = {\n  change: (lastAffix: boolean) => void;\n  testUpdatePosition: () => void;\n};\n\nexport type AffixExpose = {\n  updatePosition: (...args: any[]) => void;\n  lazyUpdatePosition: (...args: any[]) => void;\n};\n\nexport type AffixInstance = ComponentPublicInstance<AffixProps, AffixExpose>;\nconst Affix = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAffix',\n  inheritAttrs: false,\n  props: affixProps(),\n  setup(props, { slots, emit, expose, attrs }) {\n    const placeholderNode = shallowRef();\n    const fixedNode = shallowRef();\n    const state = reactive({\n      affixStyle: undefined,\n      placeholderStyle: undefined,\n      status: AffixStatus.None,\n      lastAffix: false,\n      prevTarget: null,\n      timeout: null,\n    });\n    const currentInstance = getCurrentInstance();\n\n    const offsetTop = computed(() => {\n      return props.offsetBottom === undefined && props.offsetTop === undefined\n        ? 0\n        : props.offsetTop;\n    });\n    const offsetBottom = computed(() => props.offsetBottom);\n    const measure = () => {\n      const { status, lastAffix } = state;\n      const { target } = props;\n      if (status !== AffixStatus.Prepare || !fixedNode.value || !placeholderNode.value || !target) {\n        return;\n      }\n\n      const targetNode = target();\n      if (!targetNode) {\n        return;\n      }\n\n      const newState = {\n        status: AffixStatus.None,\n      } as AffixState;\n      const placeholderRect = getTargetRect(placeholderNode.value as HTMLElement);\n\n      if (\n        placeholderRect.top === 0 &&\n        placeholderRect.left === 0 &&\n        placeholderRect.width === 0 &&\n        placeholderRect.height === 0\n      ) {\n        return;\n      }\n\n      const targetRect = getTargetRect(targetNode);\n      const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value);\n      const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value);\n      if (\n        placeholderRect.top === 0 &&\n        placeholderRect.left === 0 &&\n        placeholderRect.width === 0 &&\n        placeholderRect.height === 0\n      ) {\n        return;\n      }\n\n      if (fixedTop !== undefined) {\n        const width = `${placeholderRect.width}px`;\n        const height = `${placeholderRect.height}px`;\n\n        newState.affixStyle = {\n          position: 'fixed',\n          top: fixedTop,\n          width,\n          height,\n        };\n        newState.placeholderStyle = {\n          width,\n          height,\n        };\n      } else if (fixedBottom !== undefined) {\n        const width = `${placeholderRect.width}px`;\n        const height = `${placeholderRect.height}px`;\n\n        newState.affixStyle = {\n          position: 'fixed',\n          bottom: fixedBottom,\n          width,\n          height,\n        };\n        newState.placeholderStyle = {\n          width,\n          height,\n        };\n      }\n\n      newState.lastAffix = !!newState.affixStyle;\n      if (lastAffix !== newState.lastAffix) {\n        emit('change', newState.lastAffix);\n      }\n      // update state\n      Object.assign(state, newState);\n    };\n    const prepareMeasure = () => {\n      Object.assign(state, {\n        status: AffixStatus.Prepare,\n        affixStyle: undefined,\n        placeholderStyle: undefined,\n      });\n      // Test if `updatePosition` called\n      if (process.env.NODE_ENV === 'test') {\n        emit('testUpdatePosition');\n      }\n    };\n\n    const updatePosition = throttleByAnimationFrame(() => {\n      prepareMeasure();\n    });\n    const lazyUpdatePosition = throttleByAnimationFrame(() => {\n      const { target } = props;\n      const { affixStyle } = state;\n\n      // Check position change before measure to make Safari smooth\n      if (target && affixStyle) {\n        const targetNode = target();\n        if (targetNode && placeholderNode.value) {\n          const targetRect = getTargetRect(targetNode);\n          const placeholderRect = getTargetRect(placeholderNode.value as HTMLElement);\n          const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value);\n          const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value);\n          if (\n            (fixedTop !== undefined && affixStyle.top === fixedTop) ||\n            (fixedBottom !== undefined && affixStyle.bottom === fixedBottom)\n          ) {\n            return;\n          }\n        }\n      }\n      // Directly call prepare measure since it's already throttled.\n      prepareMeasure();\n    });\n\n    expose({\n      updatePosition,\n      lazyUpdatePosition,\n    });\n    watch(\n      () => props.target,\n      val => {\n        const newTarget = val?.() || null;\n        if (state.prevTarget !== newTarget) {\n          removeObserveTarget(currentInstance);\n          if (newTarget) {\n            addObserveTarget(newTarget, currentInstance);\n            // Mock Event object.\n            updatePosition();\n          }\n          state.prevTarget = newTarget;\n        }\n      },\n    );\n    watch(() => [props.offsetTop, props.offsetBottom], updatePosition);\n    onMounted(() => {\n      const { target } = props;\n      if (target) {\n        // [Legacy] Wait for parent component ref has its value.\n        // We should use target as directly element instead of function which makes element check hard.\n        state.timeout = setTimeout(() => {\n          addObserveTarget(target(), currentInstance);\n          // Mock Event object.\n          updatePosition();\n        });\n      }\n    });\n    onUpdated(() => {\n      measure();\n    });\n    onUnmounted(() => {\n      clearTimeout(state.timeout);\n      removeObserveTarget(currentInstance);\n      (updatePosition as any).cancel();\n      // https://github.com/ant-design/ant-design/issues/22683\n      (lazyUpdatePosition as any).cancel();\n    });\n\n    const { prefixCls } = useConfigInject('affix', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    return () => {\n      const { affixStyle, placeholderStyle, status } = state;\n      const className = classNames({\n        [prefixCls.value]: affixStyle,\n        [hashId.value]: true,\n      });\n      const restProps = omit(props, [\n        'prefixCls',\n        'offsetTop',\n        'offsetBottom',\n        'target',\n        'onChange',\n        'onTestUpdatePosition',\n      ]);\n      return wrapSSR(\n        <ResizeObserver onResize={updatePosition}>\n          <div {...restProps} {...attrs} ref={placeholderNode} data-measure-status={status}>\n            {affixStyle && <div style={placeholderStyle} aria-hidden=\"true\" />}\n            <div class={className} ref={fixedNode} style={affixStyle}>\n              {slots.default?.()}\n            </div>\n          </div>\n        </ResizeObserver>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Affix);\n"
  },
  {
    "path": "components/affix/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 固钉\ntype: 其他\ntitle: Affix\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YSm4RI3iOJ8AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*03dxS64LxeQAAAAAAAAAAAAADrJ8AQ/original\n---\n\n将页面元素钉在可视范围。\n\n## 何时使用\n\n当内容区域比较长，需要滚动页面时，这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。\n\n页面可视范围过小时，慎用此功能以免遮挡页面内容。\n\n## API\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number |  |  |\n| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | 0 |  |\n| target | 设置 `Affix` 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 | () => HTMLElement | () => window |  |\n\n### 事件\n\n| 事件名称 | 说明                         | 回调参数                    | 版本 |     |\n| -------- | ---------------------------- | --------------------------- | ---- | --- |\n| change   | 固定状态改变时触发的回调函数 | (affixed?: boolean) => void | -    |     |\n\n**注意：**`Affix` 内的元素不要使用绝对定位，如需要绝对定位的效果，可以直接设置 `Affix` 为绝对定位：\n\n```html\n<a-affix :style=\"{ position: 'absolute', top: y, left: x}\">...</a-affix>\n```\n\n## FAQ\n\n### Affix 使用 `target` 绑定容器时，元素会跑到容器外。\n\n从性能角度考虑，我们只监听容器滚动事件。如果希望任意滚动，你可以在窗体添加滚动监听, 参考 react 版本示例 <https://codesandbox.io/s/2xyj5zr85p>\n\n相关 issue：[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)\n\n### Affix 在水平滚动容器中使用时， 元素 `left` 位置不正确。\n\nAffix 一般只适用于单向滚动的区域，只支持在垂直滚动容器中使用。如果希望在水平容器中使用，你可以考虑使用 原生 `position: sticky` 实现。\n\n相关 issue: [#29108](https://github.com/ant-design/ant-design/issues/29108)\n"
  },
  {
    "path": "components/affix/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\ninterface AffixToken extends FullToken<'Affix'> {\n  zIndexPopup: number;\n}\n\n// ============================== Shared ==============================\nconst genSharedAffixStyle: GenerateStyle<AffixToken> = (token): CSSObject => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      position: 'fixed',\n      zIndex: token.zIndexPopup,\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Affix', token => {\n  const affixToken = mergeToken<AffixToken>(token, {\n    zIndexPopup: token.zIndexBase + 10,\n  });\n  return [genSharedAffixStyle(affixToken)];\n});\n"
  },
  {
    "path": "components/affix/utils.ts",
    "content": "import addEventListener from '../vc-util/Dom/addEventListener';\nimport supportsPassive from '../_util/supportsPassive';\n\nexport type BindElement = HTMLElement | Window | null | undefined;\n\nexport function getTargetRect(target: BindElement): DOMRect {\n  return target !== window\n    ? (target as HTMLElement).getBoundingClientRect()\n    : ({ top: 0, bottom: window.innerHeight } as DOMRect);\n}\n\nexport function getFixedTop(placeholderRect: DOMRect, targetRect: DOMRect, offsetTop: number) {\n  if (offsetTop !== undefined && targetRect.top > placeholderRect.top - offsetTop) {\n    return `${offsetTop + targetRect.top}px`;\n  }\n  return undefined;\n}\n\nexport function getFixedBottom(\n  placeholderRect: DOMRect,\n  targetRect: DOMRect,\n  offsetBottom: number,\n) {\n  if (offsetBottom !== undefined && targetRect.bottom < placeholderRect.bottom + offsetBottom) {\n    const targetBottomOffset = window.innerHeight - targetRect.bottom;\n    return `${offsetBottom + targetBottomOffset}px`;\n  }\n  return undefined;\n}\n\n// ======================== Observer ========================\nconst TRIGGER_EVENTS = [\n  'resize',\n  'scroll',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'pageshow',\n  'load',\n];\n\ninterface ObserverEntity {\n  target: HTMLElement | Window;\n  affixList: any[];\n  eventHandlers: { [eventName: string]: any };\n}\n\nlet observerEntities: ObserverEntity[] = [];\n\nexport function getObserverEntities() {\n  // Only used in test env. Can be removed if refactor.\n  return observerEntities;\n}\n\nexport function addObserveTarget<T>(target: HTMLElement | Window | null, affix: T): void {\n  if (!target) return;\n\n  let entity = observerEntities.find(item => item.target === target);\n\n  if (entity) {\n    entity.affixList.push(affix);\n  } else {\n    entity = {\n      target,\n      affixList: [affix],\n      eventHandlers: {},\n    };\n    observerEntities.push(entity);\n\n    // Add listener\n    TRIGGER_EVENTS.forEach(eventName => {\n      entity!.eventHandlers[eventName] = addEventListener(target, eventName, () => {\n        entity!.affixList.forEach(\n          targetAffix => {\n            const { lazyUpdatePosition } = (targetAffix as any).exposed;\n            lazyUpdatePosition();\n          },\n          (eventName === 'touchstart' || eventName === 'touchmove') && supportsPassive\n            ? ({ passive: true } as EventListenerOptions)\n            : false,\n        );\n      });\n    });\n  }\n}\n\nexport function removeObserveTarget<T>(affix: T): void {\n  const observerEntity = observerEntities.find(oriObserverEntity => {\n    const hasAffix = oriObserverEntity.affixList.some(item => item === affix);\n    if (hasAffix) {\n      oriObserverEntity.affixList = oriObserverEntity.affixList.filter(item => item !== affix);\n    }\n    return hasAffix;\n  });\n\n  if (observerEntity && observerEntity.affixList.length === 0) {\n    observerEntities = observerEntities.filter(item => item !== observerEntity);\n\n    // Remove listener\n    TRIGGER_EVENTS.forEach(eventName => {\n      const handler = observerEntity.eventHandlers[eventName];\n      if (handler && handler.remove) {\n        handler.remove();\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "components/alert/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/alert/demo/action.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-closable\" data-show=\"true\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Tips</div>\n        <!---->\n      </div>\n      <div class=\"ant-alert-action\"><button class=\"ant-btn ant-btn-text ant-btn-sm\" type=\"button\">\n          <!----><span>UNDO</span>\n        </button></div><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"></path><path d=\"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error Text</div>\n        <div class=\"ant-alert-description\">Error Description Error Description Error Description Error Description</div>\n      </div>\n      <div class=\"ant-alert-action\"><button class=\"ant-btn ant-btn-default ant-btn-sm ant-btn-dangerous\" type=\"button\">\n          <!----><span>Detail</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning Text</div>\n        <!---->\n      </div>\n      <div class=\"ant-alert-action\">\n        <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n          <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-ghost ant-btn-sm\" type=\"button\">\n              <!----><span>Done</span>\n            </button></div>\n          <!---->\n        </div>\n      </div><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Info Text</div>\n        <div class=\"ant-alert-description\">Info Description Info Description Info Description Info Description</div>\n      </div>\n      <div class=\"ant-alert-action\">\n        <div class=\"ant-space ant-space-vertical\">\n          <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\">\n              <!----><span>Accept</span>\n            </button></div>\n          <!---->\n          <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-ghost ant-btn-sm ant-btn-dangerous\" type=\"button\">\n              <!----><span>Decline</span>\n            </button></div>\n          <!---->\n        </div>\n      </div><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/banner.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-banner\" data-show=\"true\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-banner ant-alert-closable\" data-show=\"true\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Very long warning text warning text text text text text text text</div>\n        <!---->\n      </div>\n      <!----><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-no-icon ant-alert-banner\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning text without icon</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-banner\" data-show=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/basic.vue correctly 1`] = `\n<div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-no-icon\" data-show=\"true\">\n  <!---->\n  <div class=\"ant-alert-content\">\n    <div class=\"ant-alert-message\">Success Text</div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/closable.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text</div>\n        <!---->\n      </div>\n      <!----><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-with-description ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error Text</div>\n        <div class=\"ant-alert-description\">Error Description Error Description Error Description Error Description Error Description Error Description</div>\n      </div>\n      <!----><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/close-text.vue correctly 1`] = `\n<div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n  <!---->\n  <div class=\"ant-alert-content\">\n    <div class=\"ant-alert-message\">Info Text</div>\n    <!---->\n  </div>\n  <!----><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span class=\"ant-alert-close-text\">Close Now</span></button>\n</div>\n`;\n\nexports[`renders ./components/alert/demo/custom-icon.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">showIcon = false</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Tips</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Informational Notes</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Tips</div>\n        <div class=\"ant-alert-description\">Detailed description and advices about successful copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Informational Notes</div>\n        <div class=\"ant-alert-description\">Additional description and informations about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning</div>\n        <div class=\"ant-alert-description\">This is a warning notice about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error</div>\n        <div class=\"ant-alert-description\">This is an error message about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/description.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Text</div>\n        <div class=\"ant-alert-description\">\n          <p> Success Description <span style=\"color: red;\">Success</span> Description Success Description </p>\n        </div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Info Text</div>\n        <div class=\"ant-alert-description\">Info Description Info Description Info Description Info Description</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning Text</div>\n        <div class=\"ant-alert-description\">Warning Description Warning Description Warning Description Warning Description</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error Text</div>\n        <div class=\"ant-alert-description\">Error Description Error Description Error Description Error Description</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/icon.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success\" data-show=\"true\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Tips</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info\" data-show=\"true\"><span role=\"img\" aria-label=\"info-circle\" class=\"anticon anticon-info-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"info-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Informational Notes</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning\" data-show=\"true\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error\" data-show=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\"></path><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Tips</div>\n        <div class=\"ant-alert-description\">Detailed description and advices about successful copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"info-circle\" class=\"anticon anticon-info-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"info-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Informational Notes</div>\n        <div class=\"ant-alert-description\">Additional description and informations about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning</div>\n        <div class=\"ant-alert-description\">This is a warning notice about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-with-description\" data-show=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle ant-alert-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"></path><path d=\"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span>\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error</div>\n        <div class=\"ant-alert-description\">This is an error message about copywriting.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/alert/demo/smooth-closed.vue correctly 1`] = `\n<div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-no-icon ant-alert-closable\" data-show=\"true\">\n  <!---->\n  <div class=\"ant-alert-content\">\n    <div class=\"ant-alert-message\">Alert Message Text</div>\n    <!---->\n  </div>\n  <!----><button type=\"button\" class=\"ant-alert-close-icon\" tabindex=\"0\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n</div>\n`;\n\nexports[`renders ./components/alert/demo/style.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-success ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Success Text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Info Text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-warning ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Warning Text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-error ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Error Text</div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/alert/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('alert');\n"
  },
  {
    "path": "components/alert/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Alert from '..';\n\ndescribe('Alert', () => {\n  beforeAll(() => {\n    jest.useFakeTimers();\n  });\n\n  afterAll(() => {\n    jest.useRealTimers();\n  });\n\n  it('could be closed', () => {\n    const onClose = jest.fn();\n    const afterClose = jest.fn();\n    const wrapper = mount({\n      render() {\n        return (\n          <Alert\n            message=\"Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text\"\n            type=\"warning\"\n            closable\n            onClose={onClose}\n            afterClose={afterClose}\n            ref=\"alert\"\n          />\n        );\n      },\n    });\n    wrapper.find('.ant-alert-close-icon').trigger('click');\n    expect(onClose).toHaveBeenCalled();\n    jest.runAllTimers();\n    wrapper.vm.$refs.alert.animationEnd();\n    expect(afterClose).toHaveBeenCalled();\n  });\n\n  describe('data and aria props', () => {\n    it('sets data attributes on input', () => {\n      const wrapper = mount({\n        render() {\n          return <Alert data-test=\"test-id\" data-id=\"12345\" />;\n        },\n      });\n      const input = wrapper.find('.ant-alert').element;\n      expect(input.getAttribute('data-test')).toBe('test-id');\n      expect(input.getAttribute('data-id')).toBe('12345');\n    });\n\n    it('sets aria attributes on input', () => {\n      const wrapper = mount({\n        render() {\n          return <Alert aria-describedby=\"some-label\" />;\n        },\n      });\n\n      const input = wrapper.find('.ant-alert').element;\n      expect(input.getAttribute('aria-describedby')).toBe('some-label');\n    });\n\n    it('sets role attribute on input', () => {\n      const wrapper = mount({\n        render() {\n          return <Alert role=\"status\" />;\n        },\n      });\n\n      const input = wrapper.find('.ant-alert').element;\n      expect(input.getAttribute('role')).toBe('status');\n    });\n  });\n});\n"
  },
  {
    "path": "components/alert/demo/action.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 操作\n  en-US: Action\n---\n\n## zh-CN\n\n可以在右上角自定义操作项。\n\n## en-US\n\nCustom action.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"Success Tips\" type=\"success\" show-icon closable>\n      <template #action>\n        <a-button size=\"small\" type=\"text\">UNDO</a-button>\n      </template>\n    </a-alert>\n    <a-alert\n      message=\"Error Text\"\n      show-icon\n      description=\"Error Description Error Description Error Description Error Description\"\n      type=\"error\"\n    >\n      <template #action>\n        <a-button size=\"small\" danger>Detail</a-button>\n      </template>\n    </a-alert>\n    <a-alert message=\"Warning Text\" type=\"warning\" closable>\n      <template #action>\n        <a-space>\n          <a-button size=\"small\" type=\"ghost\">Done</a-button>\n        </a-space>\n      </template>\n    </a-alert>\n    <a-alert\n      message=\"Info Text\"\n      description=\"Info Description Info Description Info Description Info Description\"\n      type=\"info\"\n      closable\n    >\n      <template #action>\n        <a-space direction=\"vertical\">\n          <a-button size=\"small\" type=\"primary\">Accept</a-button>\n          <a-button size=\"small\" danger type=\"ghost\">Decline</a-button>\n        </a-space>\n      </template>\n    </a-alert>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/alert/demo/banner.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 顶部公告\n  en-US: Banner\n---\n\n## zh-CN\n\n最简单的用法，适用于简短的警告提示。\n\n## en-US\n\nDisplay Alert as a banner at top of page.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"Warning text\" banner />\n    <a-alert\n      message=\"Very long warning text warning text text text text text text text\"\n      banner\n      closable\n    />\n    <a-alert :show-icon=\"false\" message=\"Warning text without icon\" banner />\n    <a-alert type=\"error\" message=\"Error text\" banner />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/alert/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法，适用于简短的警告提示。\n\n## en-US\n\nThe simplest usage for short messages.\n\n</docs>\n\n<template>\n  <a-alert message=\"Success Text\" type=\"success\" />\n</template>\n"
  },
  {
    "path": "components/alert/demo/closable.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 可关闭的警告提示\n  en-US: Customized Close Text\n---\n\n## zh-CN\n\n显示关闭按钮，点击可关闭警告提示。\n\n## en-US\n\nTo show close button.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert\n      message=\"Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text\"\n      type=\"warning\"\n      closable\n      @close=\"onClose\"\n    />\n    <a-alert\n      message=\"Error Text\"\n      description=\"Error Description Error Description Error Description Error Description Error Description Error Description\"\n      type=\"error\"\n      closable\n      @close=\"onClose\"\n    />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nconst onClose = (e: MouseEvent) => {\n  console.log(e, 'I was closed.');\n};\n</script>\n"
  },
  {
    "path": "components/alert/demo/close-text.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义关闭\n  en-US: Customized Close Text\n---\n\n## zh-CN\n\n自定义图标让信息类型更加醒目。\n\n## en-US\n\nReplace the default icon with customized text.\n\n</docs>\n\n<template>\n  <a-alert message=\"Info Text\" type=\"info\" close-text=\"Close Now\" />\n</template>\n"
  },
  {
    "path": "components/alert/demo/custom-icon.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 自定义图标\n  en-US: Custom Icon\n---\n\n## zh-CN\n\n可以自定义关闭，自定义的文字会替换原先的关闭 `Icon`。\n\n## en-US\n\nCustom Icon make information more clear and more friendly.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"showIcon = false\" type=\"success\">\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert message=\"Success Tips\" type=\"success\" show-icon>\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert message=\"Informational Notes\" type=\"info\" show-icon>\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert message=\"Warning\" type=\"warning\" show-icon>\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert message=\"Error\" type=\"error\" show-icon>\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert\n      message=\"Success Tips\"\n      description=\"Detailed description and advices about successful copywriting.\"\n      type=\"success\"\n      show-icon\n    >\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert\n      message=\"Informational Notes\"\n      description=\"Additional description and informations about copywriting.\"\n      type=\"info\"\n      show-icon\n    >\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert\n      message=\"Warning\"\n      description=\"This is a warning notice about copywriting.\"\n      type=\"warning\"\n      show-icon\n    >\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n    <a-alert\n      message=\"Error\"\n      description=\"This is an error message about copywriting.\"\n      type=\"error\"\n      show-icon\n    >\n      <template #icon><smile-outlined /></template>\n    </a-alert>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/alert/demo/description.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 含有辅助性文字介绍\n  en-US: Description\n---\n\n## zh-CN\n\n含有辅助性文字介绍的警告提示。\n\n## en-US\n\nAdditional description for alert message.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"Success Text\" type=\"success\">\n      <template #description>\n        <p>\n          Success Description\n          <span style=\"color: red\">Success</span>\n          Description Success Description\n        </p>\n      </template>\n    </a-alert>\n    <a-alert\n      message=\"Info Text\"\n      description=\"Info Description Info Description Info Description Info Description\"\n      type=\"info\"\n    />\n    <a-alert\n      message=\"Warning Text\"\n      description=\"Warning Description Warning Description Warning Description Warning Description\"\n      type=\"warning\"\n    />\n    <a-alert\n      message=\"Error Text\"\n      description=\"Error Description Error Description Error Description Error Description\"\n      type=\"error\"\n    />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/alert/demo/icon.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 图标\n  en-US: Icon\n---\n\n## zh-CN\n\n可口的图标让信息类型更加醒目。\n\n## en-US\n\nDecent icon make information more clear and more friendly.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"Success Tips\" type=\"success\" show-icon />\n    <a-alert message=\"Informational Notes\" type=\"info\" show-icon />\n    <a-alert message=\"Warning\" type=\"warning\" show-icon />\n    <a-alert message=\"Error\" type=\"error\" show-icon />\n    <a-alert\n      message=\"Success Tips\"\n      description=\"Detailed description and advices about successful copywriting.\"\n      type=\"success\"\n      show-icon\n    />\n    <a-alert\n      message=\"Informational Notes\"\n      description=\"Additional description and informations about copywriting.\"\n      type=\"info\"\n      show-icon\n    />\n    <a-alert\n      message=\"Warning\"\n      description=\"This is a warning notice about copywriting.\"\n      type=\"warning\"\n      show-icon\n    />\n    <a-alert\n      message=\"Error\"\n      description=\"This is an error message about copywriting.\"\n      type=\"error\"\n      show-icon\n    />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/alert/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <four-style />\n    <closable />\n    <description />\n    <icon />\n    <close-text />\n    <banner />\n    <custom-icon />\n    <smooth-closed />\n    <action />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Banner from './banner.vue';\nimport Basic from './basic.vue';\nimport Closable from './closable.vue';\nimport CloseText from './close-text.vue';\nimport Description from './description.vue';\nimport Icon from './icon.vue';\nimport Action from './action.vue';\nimport Style from './style.vue';\nimport SmoothClosed from './smooth-closed.vue';\nimport CustomIcon from './custom-icon.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Banner,\n    Closable,\n    CloseText,\n    Description,\n    Icon,\n    FourStyle: Style, //style 标签报错\n    SmoothClosed,\n    CustomIcon,\n    Action,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style scoped>\n[id^='components-alert-demo'] .ant-alert {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/alert/demo/smooth-closed.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 平滑地卸载\n  en-US: Smoothly Unmount\n---\n\n## zh-CN\n\n平滑、自然的卸载提示。\n\n## en-US\n\nSmoothly and unaffectedly unmount Alert.\n\n</docs>\n\n<template>\n  <a-alert\n    v-if=\"visible\"\n    message=\"Alert Message Text\"\n    type=\"success\"\n    closable\n    :after-close=\"handleClose\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst visible = ref<boolean>(true);\nconst handleClose = () => {\n  visible.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/alert/demo/style.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 四种样式\n  en-US: More types\n---\n\n## zh-CN\n\n共有四种样式 `success`、`info`、`warning`、`error`。\n\n## en-US\n\nThere are 4 types of Alert: `success`, `info`, `warning`, `error`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-alert message=\"Success Text\" type=\"success\" />\n    <a-alert message=\"Info Text\" type=\"info\" />\n    <a-alert message=\"Warning Text\" type=\"warning\" />\n    <a-alert message=\"Error Text\" type=\"error\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/alert/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Alert\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ct7bT7rrTTAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-U3XQqYN7VsAAAAAAAAAAAAADrJ8AQ/original\n---\n\nAlert component for feedback.\n\n## When To Use\n\n- When you need to show alert messages to users.\n- When you need a persistent static container which is closable by user actions.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| action | The action of Alert | slot | - | 4.0.0 |\n| afterClose | Called when close animation is finished | () => void | - |  |\n| banner | Whether to show as banner | boolean | false |  |\n| closable | Whether Alert can be closed | boolean |  |  |\n| closeIcon | Custom close icon | slot | `<CloseOutlined />` | 3.0 |\n| closeText | Close text to show | string\\|slot | - |  |\n| description | Additional content of Alert | string\\|slot | - |  |\n| icon | Custom icon, effective when `showIcon` is `true` | vnode \\| slot | - |  |\n| message | Content of Alert | string\\|slot | - |  |\n| showIcon | Whether to show icon | boolean | false,in `banner` mode default is true |  |\n| type | Type of Alert styles, options: `success`, `info`, `warning`, `error` | string | `info`,in `banner` mode default is `warning` |  |\n\n### events\n\n| Events Name | Description                   | Arguments               | Version |\n| ----------- | ----------------------------- | ----------------------- | ------- |\n| close       | Callback when Alert is closed | (e: MouseEvent) => void | -       |\n"
  },
  {
    "path": "components/alert/index.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { computed, defineComponent, shallowRef, Transition } from 'vue';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport CheckCircleOutlined from '@ant-design/icons-vue/CheckCircleOutlined';\nimport ExclamationCircleOutlined from '@ant-design/icons-vue/ExclamationCircleOutlined';\nimport InfoCircleOutlined from '@ant-design/icons-vue/InfoCircleOutlined';\nimport CloseCircleOutlined from '@ant-design/icons-vue/CloseCircleOutlined';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { getTransitionProps } from '../_util/transition';\nimport { isValidElement } from '../_util/props-util';\nimport { tuple, withInstall } from '../_util/type';\nimport { cloneElement } from '../_util/vnode';\nimport type { NodeMouseEventHandler } from '../vc-tree/contextTypes';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\n\nconst iconMapFilled = {\n  success: CheckCircleFilled,\n  info: InfoCircleFilled,\n  error: CloseCircleFilled,\n  warning: ExclamationCircleFilled,\n};\n\nconst iconMapOutlined = {\n  success: CheckCircleOutlined,\n  info: InfoCircleOutlined,\n  error: CloseCircleOutlined,\n  warning: ExclamationCircleOutlined,\n};\n\nconst AlertTypes = tuple('success', 'info', 'warning', 'error');\n\nexport type AlertType = (typeof AlertTypes)[number];\n\nexport const alertProps = () => ({\n  /**\n   * Type of Alert styles, options: `success`, `info`, `warning`, `error`\n   */\n  type: PropTypes.oneOf(AlertTypes),\n  /** Whether Alert can be closed */\n  closable: { type: Boolean, default: undefined },\n  /** Close text to show */\n  closeText: PropTypes.any,\n  /** Content of Alert */\n  message: PropTypes.any,\n  /** Additional content of Alert */\n  description: PropTypes.any,\n  /** Trigger when animation ending of Alert */\n  afterClose: Function as PropType<() => void>,\n  /** Whether to show icon */\n  showIcon: { type: Boolean, default: undefined },\n  prefixCls: String,\n  banner: { type: Boolean, default: undefined },\n  icon: PropTypes.any,\n  closeIcon: PropTypes.any,\n  onClose: Function as PropType<NodeMouseEventHandler>,\n});\n\nexport type AlertProps = Partial<ExtractPropTypes<ReturnType<typeof alertProps>>>;\n\nconst Alert = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAlert',\n  inheritAttrs: false,\n  props: alertProps(),\n  setup(props, { slots, emit, attrs, expose }) {\n    const { prefixCls, direction } = useConfigInject('alert', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const closing = shallowRef(false);\n    const closed = shallowRef(false);\n    const alertNode = shallowRef();\n\n    const handleClose = (e: MouseEvent) => {\n      e.preventDefault();\n\n      const dom = alertNode.value;\n\n      dom.style.height = `${dom.offsetHeight}px`;\n      // Magic code\n      // 重复一次后才能正确设置 height\n      dom.style.height = `${dom.offsetHeight}px`;\n\n      closing.value = true;\n      emit('close', e);\n    };\n\n    const animationEnd = () => {\n      closing.value = false;\n      closed.value = true;\n      props.afterClose?.();\n    };\n    const mergedType = computed(() => {\n      const { type } = props;\n      if (type !== undefined) {\n        return type;\n      }\n      // banner 模式默认为警告\n      return props.banner ? 'warning' : 'info';\n    });\n    expose({ animationEnd });\n    const motionStyle = shallowRef<CSSProperties>({});\n    return () => {\n      const { banner, closeIcon: customCloseIcon = slots.closeIcon?.() } = props;\n\n      let { closable, showIcon } = props;\n\n      const closeText = props.closeText ?? slots.closeText?.();\n      const description = props.description ?? slots.description?.();\n      const message = props.message ?? slots.message?.();\n      const icon = props.icon ?? slots.icon?.();\n      const action = slots.action?.();\n\n      // banner模式默认有 Icon\n      showIcon = banner && showIcon === undefined ? true : showIcon;\n\n      const IconType = (description ? iconMapOutlined : iconMapFilled)[mergedType.value] || null;\n\n      // closeable when closeText is assigned\n      if (closeText) {\n        closable = true;\n      }\n      const prefixClsValue = prefixCls.value;\n      const alertCls = classNames(prefixClsValue, {\n        [`${prefixClsValue}-${mergedType.value}`]: true,\n        [`${prefixClsValue}-closing`]: closing.value,\n        [`${prefixClsValue}-with-description`]: !!description,\n        [`${prefixClsValue}-no-icon`]: !showIcon,\n        [`${prefixClsValue}-banner`]: !!banner,\n        [`${prefixClsValue}-closable`]: closable,\n        [`${prefixClsValue}-rtl`]: direction.value === 'rtl',\n        [hashId.value]: true,\n      });\n\n      const closeIcon = closable ? (\n        <button\n          type=\"button\"\n          onClick={handleClose}\n          class={`${prefixClsValue}-close-icon`}\n          tabindex={0}\n        >\n          {closeText ? (\n            <span class={`${prefixClsValue}-close-text`}>{closeText}</span>\n          ) : customCloseIcon === undefined ? (\n            <CloseOutlined />\n          ) : (\n            customCloseIcon\n          )}\n        </button>\n      ) : null;\n\n      const iconNode = (icon &&\n        (isValidElement(icon) ? (\n          cloneElement(icon, {\n            class: `${prefixClsValue}-icon`,\n          })\n        ) : (\n          <span class={`${prefixClsValue}-icon`}>{icon}</span>\n        ))) || <IconType class={`${prefixClsValue}-icon`} />;\n\n      const transitionProps = getTransitionProps(`${prefixClsValue}-motion`, {\n        appear: false,\n        css: true,\n        onAfterLeave: animationEnd,\n        onBeforeLeave: (node: HTMLDivElement) => {\n          node.style.maxHeight = `${node.offsetHeight}px`;\n        },\n        onLeave: (node: HTMLDivElement) => {\n          node.style.maxHeight = '0px';\n        },\n      });\n      return wrapSSR(\n        closed.value ? null : (\n          <Transition {...transitionProps}>\n            <div\n              role=\"alert\"\n              {...attrs}\n              style={[attrs.style as CSSProperties, motionStyle.value]}\n              v-show={!closing.value}\n              class={[attrs.class, alertCls]}\n              data-show={!closing.value}\n              ref={alertNode}\n            >\n              {showIcon ? iconNode : null}\n              <div class={`${prefixClsValue}-content`}>\n                {message ? <div class={`${prefixClsValue}-message`}>{message}</div> : null}\n                {description ? (\n                  <div class={`${prefixClsValue}-description`}>{description}</div>\n                ) : null}\n              </div>\n              {action ? <div class={`${prefixClsValue}-action`}>{action}</div> : null}\n              {closeIcon}\n            </div>\n          </Transition>\n        ),\n      );\n    };\n  },\n});\n\nexport default withInstall(Alert);\n"
  },
  {
    "path": "components/alert/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Alert\nsubtitle: 警告提示\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ct7bT7rrTTAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-U3XQqYN7VsAAAAAAAAAAAAADrJ8AQ/original\n---\n\n警告提示，展现需要关注的信息。\n\n## 何时使用\n\n- 当某个页面需要向用户显示警告的信息时。\n- 非浮层的静态展现形式，始终展现，不会自动消失，用户可以点击关闭。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| action | 自定义操作项 | slot | - | 4.0.0 |\n| afterClose | 关闭动画结束后触发的回调函数 | () => void | - |  |\n| banner | 是否用作顶部公告 | boolean | false |  |\n| closable | 默认不显示关闭按钮 | boolean | 无 |  |\n| closeIcon | 自定义关闭 Icon | slot | `<CloseOutlined />` | 3.0 |\n| closeText | 自定义关闭按钮 | string\\|slot | 无 |  |\n| description | 警告提示的辅助性文字介绍 | string\\|slot | 无 |  |\n| icon | 自定义图标，`showIcon` 为 `true` 时有效 | vnode\\|slot | - |  |\n| message | 警告提示内容 | string\\|slot | 无 |  |\n| showIcon | 是否显示辅助图标 | boolean | false,`banner` 模式下默认值为 true |  |\n| type | 指定警告提示的样式，有四种选择 `success`、`info`、`warning`、`error` | string | `info`,`banner` 模式下默认值为 `warning` |  |\n\n### 事件\n\n| 事件名称 | 说明                 | 回调参数                | 版本 |\n| -------- | -------------------- | ----------------------- | ---- |\n| close    | 关闭时触发的回调函数 | (e: MouseEvent) => void | -    |\n"
  },
  {
    "path": "components/alert/style/index.ts",
    "content": "import type { CSSInterpolation, CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\ntype AlertToken = FullToken<'Alert'> & {\n  alertIconSizeLG: number;\n  alertPaddingHorizontal: number;\n};\n\nconst genAlertTypeStyle = (\n  bgColor: string,\n  borderColor: string,\n  iconColor: string,\n  token: AlertToken,\n  alertCls: string,\n): CSSObject => ({\n  backgroundColor: bgColor,\n  border: `${token.lineWidth}px ${token.lineType} ${borderColor}`,\n  [`${alertCls}-icon`]: {\n    color: iconColor,\n  },\n});\n\nexport const genBaseStyle: GenerateStyle<AlertToken> = (token: AlertToken): CSSObject => {\n  const {\n    componentCls,\n    motionDurationSlow: duration,\n    marginXS,\n    marginSM,\n    fontSize,\n    fontSizeLG,\n    lineHeight,\n    borderRadiusLG: borderRadius,\n    motionEaseInOutCirc,\n    alertIconSizeLG,\n    colorText,\n    paddingContentVerticalSM,\n    alertPaddingHorizontal,\n    paddingMD,\n    paddingContentHorizontalLG,\n  } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center',\n      padding: `${paddingContentVerticalSM}px ${alertPaddingHorizontal}px`, // Fixed horizontal padding here.\n      wordWrap: 'break-word',\n      borderRadius,\n\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      [`${componentCls}-content`]: {\n        flex: 1,\n        minWidth: 0,\n      },\n\n      [`${componentCls}-icon`]: {\n        marginInlineEnd: marginXS,\n        lineHeight: 0,\n      },\n\n      [`&-description`]: {\n        display: 'none',\n        fontSize,\n        lineHeight,\n      },\n\n      '&-message': {\n        color: colorText,\n      },\n\n      [`&${componentCls}-motion-leave`]: {\n        overflow: 'hidden',\n        opacity: 1,\n        transition: `max-height ${duration} ${motionEaseInOutCirc}, opacity ${duration} ${motionEaseInOutCirc},\n        padding-top ${duration} ${motionEaseInOutCirc}, padding-bottom ${duration} ${motionEaseInOutCirc},\n        margin-bottom ${duration} ${motionEaseInOutCirc}`,\n      },\n\n      [`&${componentCls}-motion-leave-active`]: {\n        maxHeight: 0,\n        marginBottom: '0 !important',\n        paddingTop: 0,\n        paddingBottom: 0,\n        opacity: 0,\n      },\n    },\n\n    [`${componentCls}-with-description`]: {\n      alignItems: 'flex-start',\n      paddingInline: paddingContentHorizontalLG,\n      paddingBlock: paddingMD,\n\n      [`${componentCls}-icon`]: {\n        marginInlineEnd: marginSM,\n        fontSize: alertIconSizeLG,\n        lineHeight: 0,\n      },\n\n      [`${componentCls}-message`]: {\n        display: 'block',\n        marginBottom: marginXS,\n        color: colorText,\n        fontSize: fontSizeLG,\n      },\n\n      [`${componentCls}-description`]: {\n        display: 'block',\n      },\n    },\n\n    [`${componentCls}-banner`]: {\n      marginBottom: 0,\n      border: '0 !important',\n      borderRadius: 0,\n    },\n  };\n};\n\nexport const genTypeStyle: GenerateStyle<AlertToken> = (token: AlertToken): CSSObject => {\n  const {\n    componentCls,\n\n    colorSuccess,\n    colorSuccessBorder,\n    colorSuccessBg,\n\n    colorWarning,\n    colorWarningBorder,\n    colorWarningBg,\n\n    colorError,\n    colorErrorBorder,\n    colorErrorBg,\n\n    colorInfo,\n    colorInfoBorder,\n    colorInfoBg,\n  } = token;\n\n  return {\n    [componentCls]: {\n      '&-success': genAlertTypeStyle(\n        colorSuccessBg,\n        colorSuccessBorder,\n        colorSuccess,\n        token,\n        componentCls,\n      ),\n      '&-info': genAlertTypeStyle(colorInfoBg, colorInfoBorder, colorInfo, token, componentCls),\n      '&-warning': genAlertTypeStyle(\n        colorWarningBg,\n        colorWarningBorder,\n        colorWarning,\n        token,\n        componentCls,\n      ),\n      '&-error': {\n        ...genAlertTypeStyle(colorErrorBg, colorErrorBorder, colorError, token, componentCls),\n        [`${componentCls}-description > pre`]: {\n          margin: 0,\n          padding: 0,\n        },\n      },\n    },\n  };\n};\n\nexport const genActionStyle: GenerateStyle<AlertToken> = (token: AlertToken): CSSObject => {\n  const {\n    componentCls,\n    iconCls,\n    motionDurationMid,\n    marginXS,\n    fontSizeIcon,\n    colorIcon,\n    colorIconHover,\n  } = token;\n\n  return {\n    [componentCls]: {\n      [`&-action`]: {\n        marginInlineStart: marginXS,\n      },\n\n      [`${componentCls}-close-icon`]: {\n        marginInlineStart: marginXS,\n        padding: 0,\n        overflow: 'hidden',\n        fontSize: fontSizeIcon,\n        lineHeight: `${fontSizeIcon}px`,\n        backgroundColor: 'transparent',\n        border: 'none',\n        outline: 'none',\n        cursor: 'pointer',\n\n        [`${iconCls}-close`]: {\n          color: colorIcon,\n          transition: `color ${motionDurationMid}`,\n          '&:hover': {\n            color: colorIconHover,\n          },\n        },\n      },\n\n      '&-close-text': {\n        color: colorIcon,\n        transition: `color ${motionDurationMid}`,\n        '&:hover': {\n          color: colorIconHover,\n        },\n      },\n    },\n  };\n};\n\nexport const genAlertStyle: GenerateStyle<AlertToken> = (token: AlertToken): CSSInterpolation => [\n  genBaseStyle(token),\n  genTypeStyle(token),\n  genActionStyle(token),\n];\n\nexport default genComponentStyleHook('Alert', token => {\n  const { fontSizeHeading3 } = token;\n\n  const alertToken = mergeToken<AlertToken>(token, {\n    alertIconSizeLG: fontSizeHeading3,\n    alertPaddingHorizontal: 12, // Fixed value here.\n  });\n\n  return [genAlertStyle(alertToken)];\n});\n"
  },
  {
    "path": "components/anchor/Anchor.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport {\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  reactive,\n  ref,\n  computed,\n} from 'vue';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport classNames from '../_util/classNames';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport Affix from '../affix';\nimport scrollTo from '../_util/scrollTo';\nimport getScroll from '../_util/getScroll';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useProvideAnchor from './context';\nimport useStyle from './style';\nimport type { AnchorLinkItemProps } from './AnchorLink';\nimport AnchorLink from './AnchorLink';\nimport PropTypes from '../_util/vue-types';\nimport devWarning from '../vc-util/devWarning';\nimport { arrayType } from '../_util/type';\n\nexport type AnchorDirection = 'vertical' | 'horizontal';\n\nfunction getDefaultContainer() {\n  return window;\n}\n\nfunction getOffsetTop(element: HTMLElement, container: AnchorContainer): number {\n  if (!element.getClientRects().length) {\n    return 0;\n  }\n\n  const rect = element.getBoundingClientRect();\n\n  if (rect.width || rect.height) {\n    if (container === window) {\n      container = element.ownerDocument!.documentElement!;\n      return rect.top - container.clientTop;\n    }\n    return rect.top - (container as HTMLElement).getBoundingClientRect().top;\n  }\n\n  return rect.top;\n}\n\nconst sharpMatcherRegx = /#([\\S ]+)$/;\n\ninterface Section {\n  link: string;\n  top: number;\n}\n\nexport type AnchorContainer = HTMLElement | Window;\n\nexport const anchorProps = () => ({\n  prefixCls: String,\n  offsetTop: Number,\n  bounds: Number,\n  affix: { type: Boolean, default: true },\n  showInkInFixed: { type: Boolean, default: false },\n  getContainer: Function as PropType<() => AnchorContainer>,\n  wrapperClass: String,\n  wrapperStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  getCurrentAnchor: Function as PropType<(activeLink: string) => string>,\n  targetOffset: Number,\n  items: arrayType<AnchorLinkItemProps[]>(),\n  direction: PropTypes.oneOf(['vertical', 'horizontal'] as AnchorDirection[]).def('vertical'),\n  onChange: Function as PropType<(currentActiveLink: string) => void>,\n  onClick: Function as PropType<(e: MouseEvent, link: { title: any; href: string }) => void>,\n});\n\nexport type AnchorProps = Partial<ExtractPropTypes<ReturnType<typeof anchorProps>>>;\n\nexport interface AnchorState {\n  scrollContainer: HTMLElement | Window;\n  links: string[];\n  scrollEvent: any;\n  animating: boolean;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAnchor',\n  inheritAttrs: false,\n  props: anchorProps(),\n  setup(props, { emit, attrs, slots, expose }) {\n    const { prefixCls, getTargetContainer, direction } = useConfigInject('anchor', props);\n    const anchorDirection = computed(() => props.direction ?? 'vertical');\n\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        props.items && typeof slots.default !== 'function',\n        'Anchor',\n        '`Anchor children` is deprecated. Please use `items` instead.',\n      );\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !(anchorDirection.value === 'horizontal' && props.items?.some(n => 'children' in n)),\n        'Anchor',\n        '`Anchor items#children` is not supported when `Anchor` direction is horizontal.',\n      );\n    }\n\n    const spanLinkNode = ref<HTMLSpanElement>(null);\n    const anchorRef = ref();\n    const state = reactive<AnchorState>({\n      links: [],\n      scrollContainer: null,\n      scrollEvent: null,\n      animating: false,\n    });\n    const activeLink = ref(null);\n    const getContainer = computed(() => {\n      const { getContainer } = props;\n      return getContainer || getTargetContainer?.value || getDefaultContainer;\n    });\n    // func...\n    const getCurrentAnchor = (offsetTop = 0, bounds = 5) => {\n      const linkSections: Array<Section> = [];\n      const container = getContainer.value();\n      state.links.forEach(link => {\n        const sharpLinkMatch = sharpMatcherRegx.exec(link.toString());\n        if (!sharpLinkMatch) {\n          return;\n        }\n        const target = document.getElementById(sharpLinkMatch[1]);\n        if (target) {\n          const top = getOffsetTop(target, container);\n          if (top < offsetTop + bounds) {\n            linkSections.push({\n              link,\n              top,\n            });\n          }\n        }\n      });\n\n      if (linkSections.length) {\n        const maxSection = linkSections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev));\n        return maxSection.link;\n      }\n      return '';\n    };\n    const setCurrentActiveLink = (link: string) => {\n      const { getCurrentAnchor } = props;\n      if (activeLink.value === link) {\n        return;\n      }\n      activeLink.value = typeof getCurrentAnchor === 'function' ? getCurrentAnchor(link) : link;\n      emit('change', link);\n    };\n    const handleScrollTo = (link: string) => {\n      const { offsetTop, targetOffset } = props;\n\n      setCurrentActiveLink(link);\n      const sharpLinkMatch = sharpMatcherRegx.exec(link);\n      if (!sharpLinkMatch) {\n        return;\n      }\n      const targetElement = document.getElementById(sharpLinkMatch[1]);\n      if (!targetElement) {\n        return;\n      }\n\n      const container = getContainer.value();\n      const scrollTop = getScroll(container, true);\n      const eleOffsetTop = getOffsetTop(targetElement, container);\n      let y = scrollTop + eleOffsetTop;\n      y -= targetOffset !== undefined ? targetOffset : offsetTop || 0;\n      state.animating = true;\n\n      scrollTo(y, {\n        callback: () => {\n          state.animating = false;\n        },\n        getContainer: getContainer.value,\n      });\n    };\n    expose({\n      scrollTo: handleScrollTo,\n    });\n    const handleScroll = () => {\n      if (state.animating) {\n        return;\n      }\n      const { offsetTop, bounds, targetOffset } = props;\n      const currentActiveLink = getCurrentAnchor(\n        targetOffset !== undefined ? targetOffset : offsetTop || 0,\n        bounds,\n      );\n      setCurrentActiveLink(currentActiveLink);\n    };\n\n    const updateInk = () => {\n      const linkNode = anchorRef.value.querySelector(`.${prefixCls.value}-link-title-active`);\n      if (linkNode && spanLinkNode.value) {\n        const horizontalAnchor = anchorDirection.value === 'horizontal';\n        spanLinkNode.value.style.top = horizontalAnchor\n          ? ''\n          : `${linkNode.offsetTop + linkNode.clientHeight / 2}px`;\n        spanLinkNode.value.style.height = horizontalAnchor ? '' : `${linkNode.clientHeight}px`;\n        spanLinkNode.value.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : '';\n        spanLinkNode.value.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : '';\n        if (horizontalAnchor) {\n          scrollIntoView(linkNode, {\n            scrollMode: 'if-needed',\n            block: 'nearest',\n          });\n        }\n      }\n    };\n\n    useProvideAnchor({\n      registerLink: (link: string) => {\n        if (!state.links.includes(link)) {\n          state.links.push(link);\n        }\n      },\n      unregisterLink: (link: string) => {\n        const index = state.links.indexOf(link);\n        if (index !== -1) {\n          state.links.splice(index, 1);\n        }\n      },\n      activeLink,\n      scrollTo: handleScrollTo,\n      handleClick: (e, info) => {\n        emit('click', e, info);\n      },\n      direction: anchorDirection,\n    });\n\n    onMounted(() => {\n      nextTick(() => {\n        const container = getContainer.value();\n        state.scrollContainer = container;\n        state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll);\n        handleScroll();\n      });\n    });\n    onBeforeUnmount(() => {\n      if (state.scrollEvent) {\n        state.scrollEvent.remove();\n      }\n    });\n    onUpdated(() => {\n      if (state.scrollEvent) {\n        const currentContainer = getContainer.value();\n        if (state.scrollContainer !== currentContainer) {\n          state.scrollContainer = currentContainer;\n          state.scrollEvent.remove();\n          state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll);\n          handleScroll();\n        }\n      }\n      updateInk();\n    });\n\n    const createNestedLink = (options?: AnchorLinkItemProps[]) =>\n      Array.isArray(options)\n        ? options.map(option => {\n            const { children, key, href, target, class: cls, style, title } = option;\n            return (\n              <AnchorLink\n                key={key}\n                href={href}\n                target={target}\n                class={cls}\n                style={style}\n                title={title}\n                customTitleProps={option}\n                v-slots={{ customTitle: slots.customTitle }}\n              >\n                {anchorDirection.value === 'vertical' ? createNestedLink(children) : null}\n              </AnchorLink>\n            );\n          })\n        : null;\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const { offsetTop, affix, showInkInFixed } = props;\n      const pre = prefixCls.value;\n      const inkClass = classNames(`${pre}-ink`, {\n        [`${pre}-ink-visible`]: activeLink.value,\n      });\n\n      const wrapperClass = classNames(hashId.value, props.wrapperClass, `${pre}-wrapper`, {\n        [`${pre}-wrapper-horizontal`]: anchorDirection.value === 'horizontal',\n        [`${pre}-rtl`]: direction.value === 'rtl',\n      });\n\n      const anchorClass = classNames(pre, {\n        [`${pre}-fixed`]: !affix && !showInkInFixed,\n      });\n\n      const wrapperStyle = {\n        maxHeight: offsetTop ? `calc(100vh - ${offsetTop}px)` : '100vh',\n        ...props.wrapperStyle,\n      };\n      const anchorContent = (\n        <div class={wrapperClass} style={wrapperStyle} ref={anchorRef}>\n          <div class={anchorClass}>\n            <span class={inkClass} ref={spanLinkNode} />\n            {Array.isArray(props.items) ? createNestedLink(props.items) : slots.default?.()}\n          </div>\n        </div>\n      );\n\n      return wrapSSR(\n        !affix ? (\n          anchorContent\n        ) : (\n          <Affix {...attrs} offsetTop={offsetTop} target={getContainer.value}>\n            {anchorContent}\n          </Affix>\n        ),\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/anchor/AnchorLink.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, watch } from 'vue';\nimport { initDefaultProps } from '../_util/props-util';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectAnchor } from './context';\nimport type { Key, VueNode, CustomSlotsType } from '../_util/type';\nimport { objectType, anyType } from '../_util/type';\nimport type { CSSProperties } from '../_util/cssinjs/hooks/useStyleRegister';\n\nexport const anchorLinkProps = () => ({\n  prefixCls: String,\n  href: String,\n  title: anyType<VueNode | ((item: any) => VueNode)>(),\n  target: String,\n  /* private use  */\n  customTitleProps: objectType<AnchorLinkItemProps>(),\n});\nexport interface AnchorLinkItemProps {\n  key: Key;\n  class?: string;\n  style?: CSSProperties;\n  href?: string;\n  target?: string;\n  children?: AnchorLinkItemProps[];\n  title?: VueNode | ((item: AnchorLinkItemProps) => VueNode);\n}\n\nexport type AnchorLinkProps = Partial<ExtractPropTypes<ReturnType<typeof anchorLinkProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAnchorLink',\n  inheritAttrs: false,\n  props: initDefaultProps(anchorLinkProps(), { href: '#' }),\n  slots: Object as CustomSlotsType<{\n    title: any;\n    default: any;\n    customTitle: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    let mergedTitle = null;\n    const {\n      handleClick: contextHandleClick,\n      scrollTo,\n      unregisterLink,\n      registerLink,\n      activeLink,\n    } = useInjectAnchor();\n    const { prefixCls } = useConfigInject('anchor', props);\n\n    const handleClick = (e: Event) => {\n      const { href } = props;\n      contextHandleClick(e, { title: mergedTitle, href });\n      scrollTo(href);\n    };\n\n    watch(\n      () => props.href,\n      (val, oldVal) => {\n        nextTick(() => {\n          unregisterLink(oldVal);\n          registerLink(val);\n        });\n      },\n    );\n\n    onMounted(() => {\n      registerLink(props.href);\n    });\n\n    onBeforeUnmount(() => {\n      unregisterLink(props.href);\n    });\n\n    return () => {\n      const { href, target, title = slots.title, customTitleProps = {} } = props;\n      const pre = prefixCls.value;\n      mergedTitle = typeof title === 'function' ? title(customTitleProps) : title;\n      const active = activeLink.value === href;\n      const wrapperClassName = classNames(\n        `${pre}-link`,\n        {\n          [`${pre}-link-active`]: active,\n        },\n        attrs.class,\n      );\n      const titleClassName = classNames(`${pre}-link-title`, {\n        [`${pre}-link-title-active`]: active,\n      });\n      return (\n        <div {...attrs} class={wrapperClassName}>\n          <a\n            class={titleClassName}\n            href={href}\n            title={typeof mergedTitle === 'string' ? mergedTitle : ''}\n            target={target}\n            onClick={handleClick}\n          >\n            {slots.customTitle ? slots.customTitle(customTitleProps) : mergedTitle}\n          </a>\n          {slots.default?.()}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/anchor/__tests__/Anchor.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { ref } from 'vue';\nimport { sleep } from '../../../tests/utils';\nimport Anchor from '..';\n\nconst { Link } = Anchor;\n\nlet idCounter = 0;\nconst getHashUrl = () => `Anchor-API-${idCounter++}`;\n\ndescribe('Anchor Render', () => {\n  it('Anchor render perfectly', async () => {\n    const hash = getHashUrl();\n    const anchor = ref(null);\n    const activeLink = ref(null);\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Anchor\n              ref={anchor}\n              onChange={current => {\n                activeLink.value = current;\n              }}\n            >\n              <Link href={`#${hash}`} title={hash} />\n            </Anchor>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    wrapper.find(`a[href=\"#${hash}`).trigger('click');\n\n    await sleep();\n    expect(activeLink.value).not.toBe(hash);\n  });\n  it('Anchor render perfectly for complete href - click', async () => {\n    const currentActiveLink = ref(null);\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Anchor\n              ref=\"anchor\"\n              onChange={current => {\n                currentActiveLink.value = current;\n              }}\n            >\n              <Link href=\"http://www.example.com/#api\" title=\"API\" />\n            </Anchor>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    wrapper.find('a[href=\"http://www.example.com/#api\"]').trigger('click');\n    expect(currentActiveLink.value).toBe('http://www.example.com/#api');\n  });\n  /*\n    it('Anchor render perfectly for complete href - scroll', done => {\n      const wrapper = mount(\n        {\n          render() {\n            return (\n              <div>\n                <div id=\"API\">Hello</div>\n                <Anchor ref=\"anchor\">\n                  <Link href=\"http://www.example.com/#api\" title=\"API\" />\n                </Anchor>\n              </div>\n            );\n          },\n        },\n        { sync: false, attachTo: 'body' },\n      );\n      wrapper.vm.$nextTick(() => {\n        wrapper.vm.$refs.anchor.handleScroll();\n        expect(wrapper.vm.$refs.anchor.$data.activeLink).toBe('http://www.example.com/#api');\n        done();\n      });\n    });\n\n      it('Anchor render perfectly for complete href - scrollTo', async () => {\n        const scrollToSpy = jest.spyOn(window, 'scrollTo');\n        const wrapper = mount(\n          {\n            render() {\n              return (\n                <div>\n                  <div id=\"API\">Hello</div>\n                  <Anchor ref=\"anchor\">\n                    <Link href=\"##api\" title=\"API\" />\n                  </Anchor>\n                </div>\n              );\n            },\n          },\n          { sync: false, attachTo: 'body' },\n        );\n        await asyncExpect(() => {\n          wrapper.vm.$refs.anchor.handleScrollTo('##api');\n          expect(wrapper.vm.$refs.anchor.$data.activeLink).toBe('##api');\n          expect(scrollToSpy).not.toHaveBeenCalled();\n        });\n        await asyncExpect(() => {\n          expect(scrollToSpy).toHaveBeenCalled();\n        }, 1000);\n      });\n\n      it('should remove listener when unmount', async () => {\n        const wrapper = mount(\n          {\n            render() {\n              return (\n                <Anchor ref=\"anchor\">\n                  <Link href=\"#api\" title=\"API\" />\n                </Anchor>\n              );\n            },\n          },\n          { sync: false, attachTo: 'body' },\n        );\n        await asyncExpect(() => {\n          const removeListenerSpy = jest.spyOn(wrapper.vm.$refs.anchor.scrollEvent, 'remove');\n          wrapper.unmount();\n          expect(removeListenerSpy).toHaveBeenCalled();\n        });\n      });\n\n      it('should unregister link when unmount children', async () => {\n        const wrapper = mount(\n          {\n            props: {\n              showLink: {\n                type: Boolean,\n                default: true,\n              },\n            },\n            render() {\n              return (\n                <Anchor ref=\"anchor\">{this.showLink ? <Link href=\"#api\" title=\"API\" /> : null}</Anchor>\n              );\n            },\n          },\n          { sync: false, attachTo: 'body' },\n        );\n        await asyncExpect(() => {\n          expect(wrapper.vm.$refs.anchor.links).toEqual(['#api']);\n          wrapper.setProps({ showLink: false });\n        });\n        await asyncExpect(() => {\n          expect(wrapper.vm.$refs.anchor.links).toEqual([]);\n        });\n      });\n\n      it('should update links when link href update', async () => {\n        const wrapper = mount(\n          {\n            props: ['href'],\n            render() {\n              return (\n                <Anchor ref=\"anchor\">\n                  <Link href={this.href} title=\"API\" />\n                </Anchor>\n              );\n            },\n          },\n          {\n            sync: false,\n            attachTo: 'body',\n            props: {\n              href: '#api',\n            },\n          },\n        );\n        await asyncExpect(() => {\n          expect(wrapper.vm.$refs.anchor.links).toEqual(['#api']);\n          wrapper.setProps({ href: '#API_1' });\n        });\n        await asyncExpect(() => {\n          expect(wrapper.vm.$refs.anchor.links).toEqual(['#API_1']);\n        });\n      });\n\n      it('Anchor onClick event', () => {\n        let event;\n        let link;\n        const handleClick = (...arg) => ([event, link] = arg);\n\n        const href = '#api';\n        const title = 'API';\n\n        const anchorRef = Vue.ref(null);\n\n        const wrapper = mount({\n          render() {\n            return (\n              <Anchor ref={anchorRef} onClick={handleClick}>\n                <Link href={href} title={title} />\n              </Anchor>\n            );\n          },\n        });\n\n        wrapper.find(`a[href=\"${href}\"]`).trigger('click');\n        anchorRef.value.handleScroll();\n        expect(event).not.toBe(undefined);\n        expect(link).toEqual({ href, title });\n      }); */\n});\n"
  },
  {
    "path": "components/anchor/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/anchor/demo/basic.vue correctly 1`] = `\n<div>\n  <!---->\n  <div class=\"\">\n    <div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n      <div class=\"ant-anchor\"><span class=\"ant-anchor-ink\"></span>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#part-1\" title=\"\"><span style=\"color: red;\">Part 1</span></a>\n          <!---->\n        </div>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#part-2\" title=\"Part 2\">Part 2</a>\n          <!---->\n        </div>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#part-3\" title=\"Part 3\">Part 3</a>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/customizeHighlight.vue correctly 1`] = `\n<div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n  <div class=\"ant-anchor ant-anchor-fixed\"><span class=\"ant-anchor-ink\"></span>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-basic\" title=\"Basic demo\">Basic demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-static\" title=\"Static demo\">Static demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#api\" title=\"API\">API</a>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#anchor-props\" title=\"Anchor Props\">Anchor Props</a>\n        <!---->\n      </div>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#link-props\" title=\"Link Props\">Link Props</a>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/horizontal.vue correctly 1`] = `\n<div>\n  <div>\n    <!---->\n    <div class=\"\">\n      <div class=\"ant-anchor-wrapper ant-anchor-wrapper-horizontal\" style=\"max-height: 100vh;\">\n        <div class=\"ant-anchor\"><span class=\"ant-anchor-ink\"></span>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-1\" title=\"Part 1\">Part 1</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-2\" title=\"Part 2\">Part 2</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-3\" title=\"Part 3\">Part 3</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-4\" title=\"Part 4\">Part 4</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-5\" title=\"Part 5\">Part 5</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#horizontally-part-6\" title=\"Part 6\">Part 6</a>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/onChange.vue correctly 1`] = `\n<div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n  <div class=\"ant-anchor ant-anchor-fixed\"><span class=\"ant-anchor-ink\"></span>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-basic\" title=\"Basic demo\">Basic demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-static\" title=\"Static demo\">Static demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#api\" title=\"API\">API</a>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#anchor-props\" title=\"Anchor Props\">Anchor Props</a>\n        <!---->\n      </div>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#link-props\" title=\"Link Props\">Link Props</a>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/onClick.vue correctly 1`] = `\n<div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n  <div class=\"ant-anchor ant-anchor-fixed\"><span class=\"ant-anchor-ink\"></span>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-basic\" title=\"Basic demo\">Basic demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-static\" title=\"Static demo\">Static demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#api\" title=\"API\">API</a>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#anchor-props\" title=\"Anchor Props\">Anchor Props</a>\n        <!---->\n      </div>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#link-props\" title=\"Link Props\">Link Props</a>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/static.vue correctly 1`] = `\n<div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n  <div class=\"ant-anchor ant-anchor-fixed\"><span class=\"ant-anchor-ink\"></span>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-basic\" title=\"Basic demo\">Basic demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-static\" title=\"Static demo\">Static demo</a>\n      <!---->\n    </div>\n    <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#api\" title=\"API\">API</a>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#anchor-props\" title=\"Anchor Props\">Anchor Props</a>\n        <!---->\n      </div>\n      <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#link-props\" title=\"Link Props\">Link Props</a>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/anchor/demo/targetOffset.vue correctly 1`] = `\n<div>\n  <!---->\n  <div class=\"\">\n    <div class=\"ant-anchor-wrapper\" style=\"max-height: 100vh;\">\n      <div class=\"ant-anchor\"><span class=\"ant-anchor-ink\"></span>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-basic\" title=\"Basic demo\">Basic demo</a>\n          <!---->\n        </div>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#components-anchor-demo-static\" title=\"Static demo\">Static demo</a>\n          <!---->\n        </div>\n        <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#api\" title=\"API\">API</a>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#anchor-props\" title=\"Anchor Props\">Anchor Props</a>\n            <!---->\n          </div>\n          <div class=\"ant-anchor-link\"><a class=\"ant-anchor-link-title\" href=\"#link-props\" title=\"Link Props\">Link Props</a>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/anchor/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('anchor');\n"
  },
  {
    "path": "components/anchor/context.ts",
    "content": "import type { Ref, InjectionKey, ComputedRef } from 'vue';\nimport type { AnchorDirection } from './Anchor';\nimport { computed, inject, provide } from 'vue';\n\nexport interface AnchorContext {\n  registerLink: (link: string) => void;\n  unregisterLink: (link: string) => void;\n  activeLink: Ref<string>;\n  scrollTo: (link: string) => void;\n  handleClick: (e: Event, info: { title: any; href: string }) => void;\n  direction: ComputedRef<AnchorDirection>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(..._any: any[]): any {}\n\nexport const AnchorContextKey: InjectionKey<AnchorContext> = Symbol('anchorContextKey');\n\nconst useProvideAnchor = (state: AnchorContext) => {\n  provide(AnchorContextKey, state);\n};\n\nconst useInjectAnchor = () => {\n  return inject(AnchorContextKey, {\n    registerLink: noop,\n    unregisterLink: noop,\n    scrollTo: noop,\n    activeLink: computed(() => ''),\n    handleClick: noop,\n    direction: computed(() => 'vertical'),\n  } as AnchorContext);\n};\n\nexport { useInjectAnchor, useProvideAnchor };\nexport default useProvideAnchor;\n"
  },
  {
    "path": "components/anchor/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest usage.\n</docs>\n\n<template>\n  <a-anchor\n    :items=\"[\n      {\n        key: 'part-1',\n        href: '#part-1',\n        title: () => h('span', { style: 'color: red' }, 'Part 1'),\n      },\n      {\n        key: 'part-2',\n        href: '#part-2',\n        title: 'Part 2',\n      },\n      {\n        key: 'part-3',\n        href: '#part-3',\n        title: 'Part 3',\n      },\n    ]\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\n</script>\n"
  },
  {
    "path": "components/anchor/demo/customizeHighlight.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义锚点高亮\n  en-US: Customize the anchor highlight\n---\n\n## zh-CN\n\n自定义锚点高亮。\n\n## en-US\n\nCustomize the anchor highlight.\n</docs>\n\n<template>\n  <a-anchor\n    :affix=\"false\"\n    :get-current-anchor=\"getCurrentAnchor\"\n    :items=\"[\n      {\n        key: '1',\n        href: '#components-anchor-demo-basic',\n        title: 'Basic demo',\n      },\n      {\n        key: '2',\n        href: '#components-anchor-demo-static',\n        title: 'Static demo',\n      },\n      {\n        key: '3',\n        href: '#api',\n        title: 'API',\n        children: [\n          {\n            key: '4',\n            href: '#anchor-props',\n            title: 'Anchor Props',\n          },\n          {\n            key: '5',\n            href: '#link-props',\n            title: 'Link Props',\n          },\n        ],\n      },\n    ]\"\n  ></a-anchor>\n</template>\n\n<script lang=\"ts\" setup>\nconst getCurrentAnchor = () => {\n  return '#components-anchor-demo-static';\n};\n</script>\n"
  },
  {
    "path": "components/anchor/demo/horizontal.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 横向 Anchor。\n  en-US: Horizontally aligned anchors\n---\n\n\n## zh-CN\n\n横向 Anchor。\n\n## en-US\n\nHorizontally aligned anchors\n\n</docs>\n\n<template>\n  <div\n    style=\"\n       {\n        padding: '20px';\n      }\n    \"\n  >\n    <a-anchor\n      direction=\"horizontal\"\n      :items=\"[\n        {\n          key: 'horizontally-part-1',\n          href: '#horizontally-part-1',\n          title: 'Part 1',\n        },\n        {\n          key: 'horizontally-part-2',\n          href: '#horizontally-part-2',\n          title: 'Part 2',\n        },\n        {\n          key: 'horizontally-part-3',\n          href: '#horizontally-part-3',\n          title: 'Part 3',\n        },\n        {\n          key: 'horizontally-part-4',\n          href: '#horizontally-part-4',\n          title: 'Part 4',\n        },\n        {\n          key: 'horizontally-part-5',\n          href: '#horizontally-part-5',\n          title: 'Part 5',\n        },\n        {\n          key: 'horizontally-part-6',\n          href: '#horizontally-part-6',\n          title: 'Part 6',\n        },\n      ]\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "components/anchor/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <horizontal />\n    <static />\n    <on-click />\n    <customize-highlight />\n    <target-offset />\n    <on-change />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Static from './static.vue';\nimport OnClick from './onClick.vue';\nimport CustomizeHighlight from './customizeHighlight.vue';\nimport TargetOffset from './targetOffset.vue';\nimport OnChange from './onChange.vue';\nimport Horizontal from './horizontal.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Static,\n    OnClick,\n    CustomizeHighlight,\n    TargetOffset,\n    Horizontal,\n    OnChange,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/anchor/demo/onChange.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 监听锚点链接改变\n  en-US: Listening for anchor link change\n---\n\n## zh-CN\n\n监听锚点链接改变。\n\n## en-US\n\nListening for anchor link change.\n</docs>\n\n<template>\n  <a-anchor\n    :affix=\"false\"\n    :items=\"[\n      {\n        key: '1',\n        href: '#components-anchor-demo-basic',\n        title: 'Basic demo',\n      },\n      {\n        key: '2',\n        href: '#components-anchor-demo-static',\n        title: 'Static demo',\n      },\n      {\n        key: '3',\n        href: '#api',\n        title: 'API',\n        children: [\n          {\n            key: '4',\n            href: '#anchor-props',\n            title: 'Anchor Props',\n          },\n          {\n            key: '5',\n            href: '#link-props',\n            title: 'Link Props',\n          },\n        ],\n      },\n    ]\"\n    @change=\"onChange\"\n  ></a-anchor>\n</template>\n\n<script lang=\"ts\" setup>\nconst onChange = (link: string) => {\n  console.log('Anchor:OnChange', link);\n};\n</script>\n"
  },
  {
    "path": "components/anchor/demo/onClick.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义 click 事件\n  en-US: Customize the click event\n---\n\n## zh-CN\n\n点击锚点不记录历史。\n\n## en-US\n\nClicking on an anchor does not record history.\n</docs>\n\n<template>\n  <a-anchor\n    :affix=\"false\"\n    :items=\"[\n      {\n        key: '1',\n        href: '#components-anchor-demo-basic',\n        title: 'Basic demo',\n      },\n      {\n        key: '2',\n        href: '#components-anchor-demo-static',\n        title: 'Static demo',\n      },\n      {\n        key: '3',\n        href: '#api',\n        title: 'API',\n        children: [\n          {\n            key: '4',\n            href: '#anchor-props',\n            title: 'Anchor Props',\n          },\n          {\n            key: '5',\n            href: '#link-props',\n            title: 'Link Props',\n          },\n        ],\n      },\n    ]\"\n    @click=\"handleClick\"\n  ></a-anchor>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { AnchorProps } from 'ant-design-vue';\nconst handleClick: AnchorProps['onClick'] = (e, link) => {\n  e.preventDefault();\n  console.log(link);\n};\n</script>\n"
  },
  {
    "path": "components/anchor/demo/static.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 静态位置\n  en-US: Static\n---\n\n## zh-CN\n\n不浮动，状态不随页面滚动变化。\n\n## en-US\n\nDo not change state when page is scrolling.\n</docs>\n\n<template>\n  <a-anchor\n    :affix=\"false\"\n    :items=\"[\n      {\n        key: '1',\n        href: '#components-anchor-demo-basic',\n        title: 'Basic demo',\n      },\n      {\n        key: '2',\n        href: '#components-anchor-demo-static',\n        title: 'Static demo',\n      },\n      {\n        key: '3',\n        href: '#api',\n        title: 'API',\n        children: [\n          {\n            key: '4',\n            href: '#anchor-props',\n            title: 'Anchor Props',\n          },\n          {\n            key: '5',\n            href: '#link-props',\n            title: 'Link Props',\n          },\n        ],\n      },\n    ]\"\n  ></a-anchor>\n</template>\n"
  },
  {
    "path": "components/anchor/demo/targetOffset.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 设置锚点滚动偏移量\n  en-US: Set Anchor scroll offset\n---\n\n## zh-CN\n\n锚点目标滚动到屏幕正中间。\n\n## en-US\n\nAnchor target scroll to screen center.\n</docs>\n\n<template>\n  <a-anchor\n    :target-offset=\"targetOffset\"\n    :items=\"[\n      {\n        key: '1',\n        href: '#components-anchor-demo-basic',\n        title: 'Basic demo',\n      },\n      {\n        key: '2',\n        href: '#components-anchor-demo-static',\n        title: 'Static demo',\n      },\n      {\n        key: '3',\n        href: '#api',\n        title: 'API',\n        children: [\n          {\n            key: '4',\n            href: '#anchor-props',\n            title: 'Anchor Props',\n          },\n          {\n            key: '5',\n            href: '#link-props',\n            title: 'Link Props',\n          },\n        ],\n      },\n    ]\"\n  ></a-anchor>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue';\nconst targetOffset = ref<number | undefined>(undefined);\nonMounted(() => {\n  targetOffset.value = window.innerHeight / 2;\n});\n</script>\n"
  },
  {
    "path": "components/anchor/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ncols: 1\ntitle: Anchor\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original\n---\n\nHyperlinks to scroll on one page.\n\n## When To Use\n\nFor displaying anchor hyperlinks on page and jumping between them.\n\n## API\n\n### Anchor Props\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| affix | Fixed mode of Anchor | boolean | true |  |\n| bounds | Bounding distance of anchor area | number | 5(px) |  |\n| getContainer | Scrolling container | () => HTMLElement | () => window |  |\n| getCurrentAnchor | Customize the anchor highlight | (activeLink: string) => string | - | activeLink(3.3) |\n| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - |  |\n| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 |  |\n| showInkInFixed | Whether show ink-square when `：affix=\"false\"` | boolean | false |  |\n| targetOffset | Anchor scroll offset, default as `offsetTop`, [example](#components-anchor-demo-targetoffset) | number | `offsetTop` | 1.5.0 |\n| wrapperClass | The class name of the container | string | - |  |\n| wrapperStyle | The style of the container | object | - |  |\n| items | Data configuration option content, support nesting through children | { key, href, title, target, children }\\[] [see](#anchoritem) | - | 4.0 |\n| direction | Set Anchor direction | `vertical` \\| `horizontal` | `vertical` | 4.0 |\n| customTitle | custom option title by slot | v-slot=\"AnchorItem\" | - | 4.0 |\n\n### AnchorItem\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| key | The unique identifier of the Anchor Link | string \\| number | - |  |\n| href | The target of hyperlink | string |  |  |\n| target | Specifies where to display the linked URL | string |  |  |\n| title | The content of hyperlink | VueNode \\| (item: AnchorItem) => VueNode |  |  |\n| children | Nested Anchor Link, `Attention: This attribute does not support horizontal orientation` | [AnchorItem](#anchoritem)\\[] | - |  |\n\n### Events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| change | Listening for anchor link change | (currentActiveLink: string) => void |  | 1.5.0 |\n| click | set the handler to handle `click` event | Function(e: MouseEvent, link: Object) |  |  |\n\n### Link Props\n\n| Property | Description                               | Type         | Default | Version |\n| -------- | ----------------------------------------- | ------------ | ------- | ------- |\n| href     | target of hyperlink                       | string       |         |         |\n| target   | Specifies where to display the linked URL | string       |         | 1.5.0   |\n| title    | content of hyperlink                      | string\\|slot |         |         |\n"
  },
  {
    "path": "components/anchor/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport type { AnchorProps } from './Anchor';\nimport type { AnchorLinkProps, AnchorLinkItemProps } from './AnchorLink';\nimport Anchor from './Anchor';\nimport AnchorLink from './AnchorLink';\n\nAnchor.Link = AnchorLink;\n\n/* istanbul ignore next */\nAnchor.install = function (app: App) {\n  app.component(Anchor.name, Anchor);\n  app.component(Anchor.Link.name, Anchor.Link);\n  return app;\n};\n\nexport type { AnchorLinkProps, AnchorProps, AnchorLinkItemProps };\nexport { AnchorLink, AnchorLink as Link };\n\nexport default Anchor as typeof Anchor &\n  Plugin & {\n    readonly Link: typeof AnchorLink;\n  };\n"
  },
  {
    "path": "components/anchor/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 锚点\ncols: 1\ntype: 导航\ntitle: Anchor\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original\n---\n\n用于跳转到页面指定位置。\n\n## 何时使用\n\n需要展现当前页面上可供跳转的锚点链接，以及快速在锚点之间跳转。\n\n## API\n\n### Anchor Props\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| affix | 固定模式 | boolean | true |  |\n| bounds | 锚点区域边界 | number | 5(px) |  |\n| getContainer | 指定滚动的容器 | () => HTMLElement | () => window |  |\n| getCurrentAnchor | 自定义高亮的锚点 | (activeLink: string) => string | - | activeLink(3.3) |\n| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number |  |  |\n| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number |  |  |\n| showInkInFixed | `:affix=\"false\"` 时是否显示小方块 | boolean | false |  |\n| targetOffset | 锚点滚动偏移量，默认与 offsetTop 相同，[例子](#components-anchor-demo-targetoffset) | number | `offsetTop` | 1.5.0 |\n| wrapperClass | 容器的类名 | string | - |  |\n| wrapperStyle | 容器样式 | object | - |  |\n| items | 数据化配置选项内容，支持通过 children 嵌套 | { key, href, title, target, children }\\[] [具体见](#anchoritem) | - | 4.0 |\n| direction | 设置导航方向 | `vertical` \\| `horizontal` | `vertical` | 4.0 |\n| customTitle | 使用插槽自定义选项 title | v-slot=\"AnchorItem\" | - | 4.0 |\n\n### AnchorItem\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| key | 唯一标志 | string \\| number | - |  |\n| href | 锚点链接 | string | - |  |\n| target | 该属性指定在何处显示链接的资源 | string | - |  |\n| title | 文字内容 | VueNode \\| (item: AnchorItem) => VueNode | - |  |\n| children | 嵌套的 Anchor Link，`注意：水平方向该属性不支持` | [AnchorItem](#anchoritem)\\[] | - |  |\n\n### 事件\n\n| 事件名称 | 说明                   | 回调参数                              | 版本 |       |\n| -------- | ---------------------- | ------------------------------------- | ---- | ----- |\n| change   | 监听锚点链接改变       | (currentActiveLink: string) => void   |      | 1.5.0 |\n| click    | `click` 事件的 handler | Function(e: MouseEvent, link: Object) |      |       |\n\n### Link Props\n\n| 成员   | 说明                             | 类型         | 默认值 | 版本  |\n| ------ | -------------------------------- | ------------ | ------ | ----- |\n| href   | 锚点链接                         | string       |        |       |\n| target | 该属性指定在何处显示链接的资源。 | string       |        | 1.5.0 |\n| title  | 文字内容                         | string\\|slot |        |       |\n"
  },
  {
    "path": "components/anchor/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface AnchorToken extends FullToken<'Anchor'> {\n  holderOffsetBlock: number;\n  anchorPaddingBlock: number;\n  anchorPaddingBlockSecondary: number;\n  anchorPaddingInline: number;\n  anchorBallSize: number;\n  anchorTitleBlock: number;\n}\n\n// ============================== Shared ==============================\nconst genSharedAnchorStyle: GenerateStyle<AnchorToken> = (token): CSSObject => {\n  const {\n    componentCls,\n    holderOffsetBlock,\n    motionDurationSlow,\n    lineWidthBold,\n    colorPrimary,\n    lineType,\n    colorSplit,\n  } = token;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      marginBlockStart: -holderOffsetBlock,\n      paddingBlockStart: holderOffsetBlock,\n\n      // delete overflow: auto\n      // overflow: 'auto',\n\n      backgroundColor: 'transparent',\n\n      [componentCls]: {\n        ...resetComponent(token),\n        position: 'relative',\n        paddingInlineStart: lineWidthBold,\n\n        [`${componentCls}-link`]: {\n          paddingBlock: token.anchorPaddingBlock,\n          paddingInline: `${token.anchorPaddingInline}px 0`,\n\n          '&-title': {\n            ...textEllipsis,\n            position: 'relative',\n            display: 'block',\n            marginBlockEnd: token.anchorTitleBlock,\n            color: token.colorText,\n            transition: `all ${token.motionDurationSlow}`,\n\n            '&:only-child': {\n              marginBlockEnd: 0,\n            },\n          },\n\n          [`&-active > ${componentCls}-link-title`]: {\n            color: token.colorPrimary,\n          },\n\n          // link link\n          [`${componentCls}-link`]: {\n            paddingBlock: token.anchorPaddingBlockSecondary,\n          },\n        },\n      },\n\n      [`&:not(${componentCls}-wrapper-horizontal)`]: {\n        [componentCls]: {\n          '&::before': {\n            position: 'absolute',\n            left: {\n              _skip_check_: true,\n              value: 0,\n            },\n            top: 0,\n            height: '100%',\n            borderInlineStart: `${lineWidthBold}px ${lineType} ${colorSplit}`,\n            content: '\" \"',\n          },\n\n          [`${componentCls}-ink`]: {\n            position: 'absolute',\n            left: {\n              _skip_check_: true,\n              value: 0,\n            },\n            display: 'none',\n            transform: 'translateY(-50%)',\n            transition: `top ${motionDurationSlow} ease-in-out`,\n            width: lineWidthBold,\n            backgroundColor: colorPrimary,\n\n            [`&${componentCls}-ink-visible`]: {\n              display: 'inline-block',\n            },\n          },\n        },\n      },\n\n      [`${componentCls}-fixed ${componentCls}-ink ${componentCls}-ink`]: {\n        display: 'none',\n      },\n    },\n  };\n};\n\nconst genSharedAnchorHorizontalStyle: GenerateStyle<AnchorToken> = (token): CSSObject => {\n  const { componentCls, motionDurationSlow, lineWidthBold, colorPrimary } = token;\n\n  return {\n    [`${componentCls}-wrapper-horizontal`]: {\n      position: 'relative',\n\n      '&::before': {\n        position: 'absolute',\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        right: {\n          _skip_check_: true,\n          value: 0,\n        },\n        bottom: 0,\n        borderBottom: `1px ${token.lineType} ${token.colorSplit}`,\n        content: '\" \"',\n      },\n\n      [componentCls]: {\n        overflowX: 'scroll',\n        position: 'relative',\n        display: 'flex',\n        scrollbarWidth: 'none' /* Firefox */,\n\n        '&::-webkit-scrollbar': {\n          display: 'none' /* Safari and Chrome */,\n        },\n\n        [`${componentCls}-link:first-of-type`]: {\n          paddingInline: 0,\n        },\n\n        [`${componentCls}-ink`]: {\n          position: 'absolute',\n          bottom: 0,\n          transition: `left ${motionDurationSlow} ease-in-out, width ${motionDurationSlow} ease-in-out`,\n          height: lineWidthBold,\n          backgroundColor: colorPrimary,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Anchor', token => {\n  const { fontSize, fontSizeLG, padding, paddingXXS } = token;\n\n  const anchorToken = mergeToken<AnchorToken>(token, {\n    holderOffsetBlock: paddingXXS,\n    anchorPaddingBlock: paddingXXS,\n    anchorPaddingBlockSecondary: paddingXXS / 2,\n    anchorPaddingInline: padding,\n    anchorTitleBlock: (fontSize / 14) * 3,\n    anchorBallSize: fontSizeLG / 2,\n  });\n  return [genSharedAnchorStyle(anchorToken), genSharedAnchorHorizontalStyle(anchorToken)];\n});\n"
  },
  {
    "path": "components/app/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/app/demo/basic.vue correctly 1`] = `\n<div class=\"ant-app\">\n  <!--teleport start-->\n  <!--teleport end-->\n  <!--teleport start-->\n  <!--teleport end-->\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Open message</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Open modal</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Open notification</span>\n      </button></div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/app/demo/myPage.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Open message</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Open modal</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Open notification</span>\n    </button></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/app/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('app');\n"
  },
  {
    "path": "components/app/context.ts",
    "content": "import { provide, inject, reactive } from 'vue';\nimport type { InjectionKey } from 'vue';\nimport type { MessageInstance, ConfigOptions as MessageConfig } from '../message/interface';\nimport type { NotificationInstance, NotificationConfig } from '../notification/interface';\nimport type { ModalStaticFunctions } from '../modal/confirm';\n\nexport type AppConfig = {\n  message?: MessageConfig;\n  notification?: NotificationConfig;\n};\n\nexport const AppConfigContextKey: InjectionKey<AppConfig> = Symbol('appConfigContext');\n\nexport const useProvideAppConfigContext = (appConfigContext: AppConfig) => {\n  return provide(AppConfigContextKey, appConfigContext);\n};\n\nexport const useInjectAppConfigContext = () => {\n  return inject(AppConfigContextKey, {});\n};\n\ntype ModalType = Omit<ModalStaticFunctions, 'warn'>;\n\nexport interface useAppProps {\n  message: MessageInstance;\n  notification: NotificationInstance;\n  modal: ModalType;\n}\n\nexport const AppContextKey: InjectionKey<useAppProps> = Symbol('appContext');\n\nexport const useProvideAppContext = (appContext: useAppProps) => {\n  return provide(AppContextKey, appContext);\n};\n\nconst defaultAppContext: useAppProps = reactive({\n  message: {},\n  notification: {},\n  modal: {},\n} as useAppProps);\n\nexport const useInjectAppContext = () => {\n  return inject(AppContextKey, defaultAppContext);\n};\n"
  },
  {
    "path": "components/app/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n获取 `message`、`notification`、`modal` 静态方法。\n\n## en-US\n\nStatic method for `message`, `notification`, `modal`.\n</docs>\n\n<template>\n  <a-app>\n    <my-page />\n  </a-app>\n</template>\n\n<script lang=\"ts\" setup>\nimport myPage from './myPage.vue';\n</script>\n"
  },
  {
    "path": "components/app/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Basic from './basic.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/app/demo/myPage.vue",
    "content": "<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"showMessage\">Open message</a-button>\n    <a-button type=\"primary\" @click=\"showModal\">Open modal</a-button>\n    <a-button type=\"primary\" @click=\"showNotification\">Open notification</a-button>\n  </a-space>\n</template>\n\n<script setup lang=\"ts\">\nimport { App } from 'ant-design-vue';\n\nconst { message, modal, notification } = App.useApp();\n\nconst showMessage = () => {\n  message.success('Success!');\n};\n\nconst showModal = () => {\n  modal.warning({\n    title: 'This is a warning message',\n    content: 'some messages...some messages...',\n  });\n};\n\nconst showNotification = () => {\n  notification.info({\n    message: `Notification topLeft`,\n    description: 'Hello, Ant Design Vue!!',\n    placement: 'topLeft',\n  });\n};\n</script>\n"
  },
  {
    "path": "components/app/index.en-US.md",
    "content": "---\ncategory: Components\ncols: 1\ntype: Other\ntitle: App\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\nApplication wrapper for some global usages.\n\n## When To Use\n\n- Provide reset styles based on `.ant-app` element.\n- You could use static methods of `message/notification/Modal` form `useApp` without writing `contextHolder` manually.\n\n## API\n\n### App\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| message | Global config for Message | [MessageConfig](/components/message/#messageconfig) | - | 4.x |\n| notification | Global config for Notification | [NotificationConfig](/components/notification/#notificationconfig) | - | 4.x |\n\n## How to use\n\n### Basic usage\n\nApp provides upstream and downstream method calls through `provide/inject`, because useApp needs to be used as a subcomponent, we recommend encapsulating App at the top level in the application.\n\n```html\n/*myPage.vue*/\n<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"showMessage\">Open message</a-button>\n    <a-button type=\"primary\" @click=\"showModal\">Open modal</a-button>\n    <a-button type=\"primary\" @click=\"showNotification\">Open notification</a-button>\n  </a-space>\n</template>\n\n<script setup lang=\"ts\">\n  import { App } from 'ant-design-vue';\n\n  const { message, modal, notification } = App.useApp();\n\n  const showMessage = () => {\n    message.success('Success!');\n  };\n\n  const showModal = () => {\n    modal.warning({\n      title: 'This is a warning message',\n      content: 'some messages...some messages...',\n    });\n  };\n\n  const showNotification = () => {\n    notification.info({\n      message: `Notification topLeft`,\n      description: 'Hello, Ant Design Vue!!',\n      placement: 'topLeft',\n    });\n  };\n</script>\n```\n\nNote: App.useApp must be available under App.\n\n#### Embedded usage scenarios (if not necessary, try not to do nesting)\n\n```html\n<a-app>\n  <a-space>\n    ...\n    <a-app>...</a-app>\n  </a-space>\n</a-app>\n```\n\n#### Sequence with ConfigProvider\n\nThe App component can only use the token in the `ConfigProvider`, if you need to use the Token, the ConfigProvider and the App component must appear in pairs.\n\n```html\n<a-config-provider theme=\"{{ ... }}\">\n  <a-app>...</a-app>\n</a-config-provider>\n```\n\n#### Global scene (pinia scene)\n\n```ts\nimport { App } from 'ant-design-vue';\nimport type { MessageInstance } from 'ant-design-vue/es/message/interface';\nimport type { ModalStaticFunctions } from 'ant-design-vue/es/modal/confirm';\nimport type { NotificationInstance } from 'ant-design-vue/es/notification/interface';\n\nexport const useGlobalStore = defineStore('global', () => {\n  const message: MessageInstance = ref();\n  const notification: NotificationInstance = ref();\n  const modal: Omit<ModalStaticFunctions, 'warn'> = ref();\n  (() => {\n    const staticFunction = App.useApp();\n    message.value = staticFunction.message;\n    modal.value = staticFunction.modal;\n    notification.value = staticFunction.notification;\n  })();\n\n  return { message, notification, modal };\n});\n```\n\n```html\n// sub page\n<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"showMessage\">Open message</a-button>\n  </a-space>\n</template>\n\n<script setup>\n  import { useGlobalStore } from '@/stores/global';\n  const global = useGlobalStore();\n  const showMessage = () => {\n    global.message.success('Success!');\n  };\n</script>\n```\n"
  },
  {
    "path": "components/app/index.tsx",
    "content": "import { defineComponent, computed } from 'vue';\nimport type { App as TypeApp, Plugin } from 'vue';\nimport { initDefaultProps } from '../_util/props-util';\nimport classNames from '../_util/classNames';\nimport { objectType } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useMessage from '../message/useMessage';\nimport useModal from '../modal/useModal';\nimport useNotification from '../notification/useNotification';\nimport type { AppConfig } from './context';\nimport {\n  useProvideAppConfigContext,\n  useInjectAppConfigContext,\n  useProvideAppContext,\n  useInjectAppContext,\n} from './context';\nimport useStyle from './style';\n\nexport const AppProps = () => {\n  return {\n    rootClassName: String,\n    message: objectType<AppConfig['message']>(),\n    notification: objectType<AppConfig['notification']>(),\n  };\n};\n\nconst useApp = () => {\n  return useInjectAppContext();\n};\n\nconst App = defineComponent({\n  name: 'AApp',\n  props: initDefaultProps(AppProps(), {}),\n  setup(props, { slots }) {\n    const { prefixCls } = useConfigInject('app', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const customClassName = computed(() => {\n      return classNames(hashId.value, prefixCls.value, props.rootClassName);\n    });\n\n    const appConfig = useInjectAppConfigContext();\n    const mergedAppConfig = computed(() => ({\n      message: { ...appConfig.message, ...props.message },\n      notification: { ...appConfig.notification, ...props.notification },\n    }));\n    useProvideAppConfigContext(mergedAppConfig.value);\n\n    const [messageApi, messageContextHolder] = useMessage(mergedAppConfig.value.message);\n    const [notificationApi, notificationContextHolder] = useNotification(\n      mergedAppConfig.value.notification,\n    );\n    const [ModalApi, ModalContextHolder] = useModal();\n\n    const memoizedContextValue = computed(() => ({\n      message: messageApi,\n      notification: notificationApi,\n      modal: ModalApi,\n    }));\n    useProvideAppContext(memoizedContextValue.value);\n\n    return () => {\n      return wrapSSR(\n        <div class={customClassName.value}>\n          {ModalContextHolder()}\n          {messageContextHolder()}\n          {notificationContextHolder()}\n          {slots.default?.()}\n        </div>,\n      );\n    };\n  },\n});\n\nApp.useApp = useApp;\n\nApp.install = function (app: TypeApp) {\n  app.component(App.name, App);\n};\n\nexport default App as typeof App &\n  Plugin & {\n    readonly useApp: typeof useApp;\n  };\n"
  },
  {
    "path": "components/app/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 包裹组件\ncols: 1\ntype: 其它\ntitle: App\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n新的包裹组件，提供重置样式和提供消费上下文的默认环境。\n\n## 何时使用\n\n- 提供可消费 provide/inject 的 `message.xxx`、`Modal.xxx`、`notification.xxx` 的静态方法，可以简化 useMessage 等方法需要手动植入 `contextHolder` 的问题。\n- 提供基于 `.ant-app` 的默认重置样式，解决原生元素没有 antd 规范样式的问题。\n\n## API\n\n### App\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| message | App 内 Message 的全局配置 | [MessageConfig](/components/message-cn/#messageconfig) | - | 4.x |\n| notification | App 内 Notification 的全局配置 | [NotificationConfig](/components/notification-cn/#notificationconfig) | - | 4.x |\n\n## 如何使用\n\n### 基础用法\n\nApp 组件通过 `provide/inject` 提供上下文方法调用，因而 useApp 需要作为子组件才能使用，我们推荐在应用中顶层包裹 App。\n\n```html\n/*myPage.vue*/\n<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"showMessage\">Open message</a-button>\n    <a-button type=\"primary\" @click=\"showModal\">Open modal</a-button>\n    <a-button type=\"primary\" @click=\"showNotification\">Open notification</a-button>\n  </a-space>\n</template>\n\n<script setup lang=\"ts\">\n  import { App } from 'ant-design-vue';\n\n  const { message, modal, notification } = App.useApp();\n\n  const showMessage = () => {\n    message.success('Success!');\n  };\n\n  const showModal = () => {\n    modal.warning({\n      title: 'This is a warning message',\n      content: 'some messages...some messages...',\n    });\n  };\n\n  const showNotification = () => {\n    notification.info({\n      message: `Notification topLeft`,\n      description: 'Hello, Ant Design Vue!!',\n      placement: 'topLeft',\n    });\n  };\n</script>\n```\n\n注意：App.useApp 必须在 App 之下方可使用。\n\n#### 内嵌使用场景（如无必要，尽量不做嵌套）\n\n```html\n<a-app>\n  <a-space>\n    ...\n    <a-app>...</a-app>\n  </a-space>\n</a-app>\n```\n\n#### 与 ConfigProvider 先后顺序\n\nApp 组件只能在 `ConfigProvider` 之下才能使用 Design Token， 如果需要使用其样式重置能力，则 ConfigProvider 与 App 组件必须成对出现。\n\n```html\n<a-config-provider theme=\"{{ ... }}\">\n  <a-app>...</a-app>\n</a-config-provider>\n```\n\n#### 全局场景 (pinia 场景)\n\n```ts\nimport { App } from 'ant-design-vue';\nimport type { MessageInstance } from 'ant-design-vue/es/message/interface';\nimport type { ModalStaticFunctions } from 'ant-design-vue/es/modal/confirm';\nimport type { NotificationInstance } from 'ant-design-vue/es/notification/interface';\n\nexport const useGlobalStore = defineStore('global', () => {\n  const message: MessageInstance = ref();\n  const notification: NotificationInstance = ref();\n  const modal: Omit<ModalStaticFunctions, 'warn'> = ref();\n  (() => {\n    const staticFunction = App.useApp();\n    message.value = staticFunction.message;\n    modal.value = staticFunction.modal;\n    notification.value = staticFunction.notification;\n  })();\n\n  return { message, notification, modal };\n});\n```\n\n```html\n// sub page\n<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"showMessage\">Open message</a-button>\n  </a-space>\n</template>\n\n<script setup>\n  import { useGlobalStore } from '@/stores/global';\n  const global = useGlobalStore();\n  const showMessage = () => {\n    global.message.success('Success!');\n  };\n</script>\n```\n"
  },
  {
    "path": "components/app/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\n\nexport type ComponentToken = {};\n\ninterface AppToken extends FullToken<'App'> {}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<AppToken> = token => {\n  const { componentCls, colorText, fontSize, lineHeight, fontFamily } = token;\n  return {\n    [componentCls]: {\n      color: colorText,\n      fontSize,\n      lineHeight,\n      fontFamily,\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('App', token => [genBaseStyle(token)]);\n"
  },
  {
    "path": "components/auto-complete/OptGroup.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\nimport type { DefaultOptionType } from '../select';\n\nexport type OptGroupProps = Omit<DefaultOptionType, 'options'>;\n\nexport interface OptionGroupFC extends FunctionalComponent<OptGroupProps> {\n  /** Legacy for check if is a Option Group */\n  isSelectOptGroup: boolean;\n}\n\nconst OptGroup: OptionGroupFC = () => null;\nOptGroup.isSelectOptGroup = true;\nOptGroup.displayName = 'AAutoCompleteOptGroup';\nexport default OptGroup;\n"
  },
  {
    "path": "components/auto-complete/Option.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\nimport type { DefaultOptionType } from '../vc-select/Select';\n\nexport interface OptionProps extends Omit<DefaultOptionType, 'label'> {\n  /** Save for customize data */\n  [prop: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n\nexport interface OptionFC extends FunctionalComponent<OptionProps> {\n  /** Legacy for check if is a Option Group */\n  isSelectOption: boolean;\n}\n\nconst Option: OptionFC = () => null;\nOption.isSelectOption = true;\nOption.displayName = 'AAutoCompleteOption';\nexport default Option;\n"
  },
  {
    "path": "components/auto-complete/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/auto-complete/demo/allow-clear.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-allow-clear ant-select-show-search\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Clearable</span>\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<br>\n<br>\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-allow-clear ant-select-show-search\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Customized clear icon</span>\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/basic.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">input here</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/border-less.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-borderless ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">border less</span>\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/certain-category.vue correctly 1`] = `\n<div class=\"certain-category-search-wrapper\" style=\"width: 250px;\">\n  <div popupclassname=\"certain-category-search-dropdown\" class=\"ant-select certain-category-search ant-select-show-search ant-select-auto-complete ant-select-single ant-select-customize-input ant-select-show-search\" style=\"width: 250px;\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-large ant-select-selection-search-input ant-input-group-wrapper-lg\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input here\" autocomplete=\"off\" id=\"rc_select_TEST_OR_SSR\" type=\"search\" class=\"ant-input ant-input-lg\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-btn-lg ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div>\n    <!---->\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/custom.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-customize-input ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><textarea placeholder=\"input here\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-input ant-select-selection-search-input custom\" style=\"height: 50px;\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></textarea></span>\n    <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/non-case-sensitive.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">input here</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/options.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">input here</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-status-error ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">input here</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-status-warning ant-select-show-search ant-select-auto-complete ant-select-single ant-select-allow-clear ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">input here</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/auto-complete/demo/uncertain-category.vue correctly 1`] = `\n<div class=\"global-search-wrapper\" style=\"width: 300px;\">\n  <div style=\"width: 300px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-customize-input ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-large ant-input-search-with-button ant-select-selection-search-input ant-input-group-wrapper-lg\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input here\" autocomplete=\"off\" id=\"rc_select_TEST_OR_SSR\" type=\"search\" class=\"ant-input ant-input-lg\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-primary ant-btn-lg ant-input-search-button\" type=\"button\"><!----><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div>\n    <!---->\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/auto-complete/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('auto-complete');\n"
  },
  {
    "path": "components/auto-complete/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { sleep } from '../../../tests/utils';\nimport AutoComplete from '..';\nimport focusTest from '../../../tests/shared/focusTest';\n\ndescribe('AutoComplete with Custom Input Element Render', () => {\n  focusTest(AutoComplete);\n  function $$(className) {\n    return document.body.querySelectorAll(className);\n  }\n  it('AutoComplete with custom Input render perfectly', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <AutoComplete\n              ref=\"component\"\n              options={[{ value: '12345' }, { value: '23456' }, { value: '34567' }]}\n            >\n              <input />\n            </AutoComplete>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    expect(wrapper.findAll('input').length).toBe(1);\n    const input = wrapper.find('input');\n    input.element.value = '123';\n    input.trigger('input');\n    await sleep(100);\n    expect($$('.ant-select-item-option').length).toBe(3);\n  });\n});\n"
  },
  {
    "path": "components/auto-complete/demo/allow-clear.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 自定义清除按钮\n  en-US: Customize clear button\n---\n\n## zh-CN\n\n自定义清除按钮。\n\n## en-US\n\nCustomize clear button.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    placeholder=\"Clearable\"\n    :allow-clear=\"true\"\n    @select=\"onSelect\"\n    @search=\"onSearch\"\n  />\n  <br />\n  <br />\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    placeholder=\"Customized clear icon\"\n    :allow-clear=\"true\"\n    @select=\"onSelect\"\n    @search=\"onSearch\"\n  >\n    <template #clearIcon>\n      <close-outlined />\n    </template>\n  </a-auto-complete>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { CloseOutlined } from '@ant-design/icons-vue';\n\ninterface MockVal {\n  value: string;\n}\n\nconst mockVal = (str: string, repeat = 1): MockVal => {\n  return {\n    value: str.repeat(repeat),\n  };\n};\nconst value = ref('');\nconst options = ref<MockVal[]>([]);\nconst onSearch = (searchText: string) => {\n  console.log('searchText');\n  options.value = !searchText\n    ? []\n    : [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];\n};\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n基本使用。通过 options 设置自动完成的数据源。\n\n## en-US\n\nBasic Usage, set datasource of autocomplete with `options` property.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    placeholder=\"input here\"\n    @select=\"onSelect\"\n    @search=\"onSearch\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\ninterface MockVal {\n  value: string;\n}\nconst mockVal = (str: string, repeat = 1): MockVal => {\n  return {\n    value: str.repeat(repeat),\n  };\n};\nconst value = ref('');\nconst options = ref<MockVal[]>([]);\nconst onSearch = (searchText: string) => {\n  console.log('searchText');\n  options.value = !searchText\n    ? []\n    : [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];\n};\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\nwatch(value, () => {\n  console.log('value', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/border-less.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 无边框\n  en-US: Border less\n---\n\n## zh-CN\n\n没有边框。\n\n## en-US\n\nborder less.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    placeholder=\"border less\"\n    :bordered=\"false\"\n    @select=\"onSelect\"\n    @search=\"onSearch\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\ninterface MockVal {\n  value: string;\n}\n\nconst mockVal = (str: string, repeat = 1): MockVal => {\n  return {\n    value: str.repeat(repeat),\n  };\n};\nconst value = ref('');\nconst options = ref<MockVal[]>([]);\nconst onSearch = (searchText: string) => {\n  console.log('searchText');\n  options.value = !searchText\n    ? []\n    : [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];\n};\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/certain-category.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 查询模式 - 确定类目\n  en-US: Lookup-Patterns - Certain Category\n---\n\n## zh-CN\n\n查询模式 - 确定类目。\n\n## en-US\n\nLookup-Patterns - Certain Category.\n</docs>\n\n<template>\n  <div class=\"certain-category-search-wrapper\" style=\"width: 250px\">\n    <a-auto-complete\n      v-model:value=\"value\"\n      class=\"certain-category-search\"\n      popup-class-name=\"certain-category-search-dropdown\"\n      :dropdown-match-select-width=\"500\"\n      style=\"width: 250px\"\n      :options=\"dataSource\"\n    >\n      <template #option=\"item\">\n        <template v-if=\"item.options\">\n          <span>\n            {{ item.value }}\n            <a\n              style=\"float: right\"\n              href=\"https://www.google.com/search?q=antd\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              more\n            </a>\n          </span>\n        </template>\n        <template v-else-if=\"item.value === 'all'\">\n          <a\n            href=\"https://www.google.com/search?q=ant-design-vue\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            View all results\n          </a>\n        </template>\n        <template v-else>\n          <div style=\"display: flex; justify-content: space-between\">\n            {{ item.value }}\n            <span>\n              <UserOutlined />\n              {{ item.count }}\n            </span>\n          </div>\n        </template>\n      </template>\n      <a-input-search placeholder=\"input here\" size=\"large\"></a-input-search>\n    </a-auto-complete>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined } from '@ant-design/icons-vue';\nconst dataSource = [\n  {\n    value: 'Libraries',\n    options: [\n      {\n        value: 'AntDesignVue',\n        count: 10000,\n      },\n      {\n        value: 'AntDesignVue UI',\n        count: 10600,\n      },\n    ],\n  },\n  {\n    value: 'Solutions',\n    options: [\n      {\n        value: 'AntDesignVue UI FAQ',\n        count: 60100,\n      },\n      {\n        value: 'AntDesignVue FAQ',\n        count: 30010,\n      },\n    ],\n  },\n  {\n    value: 'Articles',\n    options: [\n      {\n        value: 'AntDesignVue design language',\n        count: 100000,\n      },\n    ],\n  },\n  {\n    value: 'all',\n  },\n];\nconst value = ref('');\n</script>\n\n<style scoped>\n.certain-category-search-dropdown .ant-select-dropdown-menu-item-group-title {\n  color: #666;\n  font-weight: bold;\n}\n\n.certain-category-search-dropdown .ant-select-dropdown-menu-item-group {\n  border-bottom: 1px solid #f6f6f6;\n}\n\n.certain-category-search-dropdown .ant-select-dropdown-menu-item {\n  padding-left: 16px;\n}\n\n.certain-category-search-dropdown .ant-select-dropdown-menu-item.show-all {\n  text-align: center;\n  cursor: default;\n}\n\n.certain-category-search-dropdown .ant-select-dropdown-menu {\n  max-height: 300px;\n}\n</style>\n"
  },
  {
    "path": "components/auto-complete/demo/custom.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义输入组件\n  en-US: Customize Input Component\n---\n\n## zh-CN\n\n自定义输入组件。\n\n## en-US\n\nCustomize Input Component.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    @search=\"handleSearch\"\n    @select=\"onSelect\"\n  >\n    <a-textarea\n      placeholder=\"input here\"\n      class=\"custom\"\n      style=\"height: 50px\"\n      @keypress=\"handleKeyPress\"\n    />\n  </a-auto-complete>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref('');\nconst options = ref<{ value: string }[]>([]);\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\nconst handleSearch = (value: string) => {\n  options.value = !value\n    ? []\n    : [{ value }, { value: value + value }, { value: value + value + value }];\n};\nconst handleKeyPress = (ev: KeyboardEvent) => {\n  console.log('handleKeyPress', ev);\n};\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <options />\n    <custom />\n    <non-case-sensitive />\n    <certain-category />\n    <uncertain-category />\n    <statusVue />\n    <border-less />\n    <allow-clear />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Options from './options.vue';\nimport Custom from './custom.vue';\nimport NonCaseSensitive from './non-case-sensitive.vue';\nimport CertainCategory from './certain-category.vue';\nimport UncertainCategory from './uncertain-category.vue';\nimport statusVue from './status.vue';\nimport BorderLess from './border-less.vue';\nimport AllowClear from './allow-clear.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    statusVue,\n    Basic,\n    Options,\n    Custom,\n    NonCaseSensitive,\n    CertainCategory,\n    UncertainCategory,\n    BorderLess,\n    AllowClear,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/non-case-sensitive.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 不区分大小写\n  en-US: Non-case-sensitive AutoComplete\n---\n\n## zh-CN\n\n不区分大小写的 AutoComplete。\n\n## en-US\n\nA non-case-sensitive AutoComplete.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    :options=\"options\"\n    style=\"width: 200px\"\n    placeholder=\"input here\"\n    :filter-option=\"filterOption\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface Option {\n  value: string;\n}\nconst filterOption = (input: string, option: Option) => {\n  return option.value.toUpperCase().indexOf(input.toUpperCase()) >= 0;\n};\nconst value = ref('');\nconst options = ref<Option[]>([\n  { value: 'Burns Bay Road' },\n  { value: 'Downing Street' },\n  { value: 'Wall Street' },\n]);\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/options.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 自定义选项\n  en-US: Customized\n---\n\n## zh-CN\n\n3.0 以上版本，可以传递 `v-slot:option` 来自定义 Option。\n\n## en-US\n\nFor 3.0+, You could pass `v-slot:option` to custom option.\n</docs>\n\n<template>\n  <a-auto-complete\n    v-model:value=\"value\"\n    style=\"width: 200px\"\n    placeholder=\"input here\"\n    :options=\"options\"\n    @search=\"handleSearch\"\n  >\n    <template #option=\"{ value: val }\">\n      {{ val.split('@')[0] }} @\n      <span style=\"font-weight: bold\">{{ val.split('@')[1] }}</span>\n    </template>\n  </a-auto-complete>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref('');\nconst options = ref<{ value: string }[]>([]);\nconst handleSearch = (val: string) => {\n  let res: { value: string }[];\n  if (!val || val.indexOf('@') >= 0) {\n    res = [];\n  } else {\n    res = ['gmail.com', '163.com', 'qq.com'].map(domain => ({ value: `${val}@${domain}` }));\n  }\n  options.value = res;\n};\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 AutoComplete 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to AutoComplete with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-auto-complete\n      v-model:value=\"value\"\n      :options=\"options\"\n      style=\"width: 200px\"\n      placeholder=\"input here\"\n      status=\"error\"\n      @select=\"onSelect\"\n      @search=\"onSearch\"\n    />\n    <a-auto-complete\n      v-model:value=\"value1\"\n      :options=\"options\"\n      style=\"width: 200px\"\n      placeholder=\"input here\"\n      status=\"warning\"\n      allow-clear\n      @select=\"onSelect\"\n      @search=\"onSearch\"\n      @clear=\"onClear\"\n    />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\ninterface MockVal {\n  value: string;\n}\nconst mockVal = (str: string, repeat = 1): MockVal => {\n  return {\n    value: str.repeat(repeat),\n  };\n};\nconst value = ref('');\nconst value1 = ref('');\nconst options = ref<MockVal[]>([]);\nconst onSearch = (searchText: string) => {\n  console.log('searchText');\n  options.value = !searchText\n    ? []\n    : [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];\n};\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\nconst onClear = () => {\n  console.log('onClear');\n};\nwatch(value, () => {\n  console.log('value', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/auto-complete/demo/uncertain-category.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 查询模式 - 不确定类目\n  en-US: Lookup-Patterns - Uncertain Category\n---\n\n## zh-CN\n\n查询模式 - 不确定类目。\n\n## en-US\n\nLookup-Patterns - Uncertain Category.\n</docs>\n<template>\n  <div class=\"global-search-wrapper\" style=\"width: 300px\">\n    <a-auto-complete\n      v-model:value=\"value\"\n      :dropdown-match-select-width=\"252\"\n      style=\"width: 300px\"\n      :options=\"dataSource\"\n      @select=\"onSelect\"\n      @search=\"handleSearch\"\n    >\n      <template #option=\"item\">\n        <div style=\"display: flex; justify-content: space-between\">\n          <span>\n            Found {{ item.query }} on\n            <a\n              :href=\"`https://s.taobao.com/search?q=${item.query}`\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              {{ item.category }}\n            </a>\n          </span>\n          <span>{{ item.count }} results</span>\n        </div>\n      </template>\n      <a-input-search size=\"large\" placeholder=\"input here\" enter-button></a-input-search>\n    </a-auto-complete>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface Option {\n  query: string;\n  category: string;\n  value: string;\n  count: number;\n}\nconst value = ref('');\nconst dataSource = ref<Option[]>([]);\nconst onSelect = (value: string) => {\n  console.log('onSelect', value);\n};\n\nconst getRandomInt = (max: number, min = 0) => {\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\nconst searchResult = (query: string): Option[] => {\n  return new Array(getRandomInt(5))\n    .join('.')\n    .split('.')\n    .map((_item, idx) => ({\n      query,\n      category: `${query}${idx}`,\n      value: `${query}${idx}`,\n      count: getRandomInt(200, 100),\n    }));\n};\nconst handleSearch = (val: string) => {\n  dataSource.value = val ? searchResult(val) : [];\n};\n</script>\n"
  },
  {
    "path": "components/auto-complete/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ncols: 2\ntitle: AutoComplete\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*g8THS4NpV6sAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WERTQ6qvgEYAAAAAAAAAAAAADrJ8AQ/original\n---\n\nAutocomplete function of input field.\n\n## When To Use\n\n- When you need an input box instead of a selector.\n- When you need input suggestions or helping text.\n\nThe differences with Select are:\n\n- AutoComplete is an input box with text hints, and users can type freely. The keyword is aiding **input**.\n- Select is selecting among given choices. The keyword is **select**.\n\n## API\n\n```html\n<a-auto-complete v-model:value=\"value\" :options=\"options\" />\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | Show clear button, effective in multiple mode only. | boolean | false |  |\n| autofocus | get focus when component mounted | boolean | false |  |\n| backfill | backfill selected item the input when using keyboard | boolean | false |  |\n| bordered | Whether has border style | boolean | true | 4.0 |\n| clearIcon | Use slot custom clear icon | slot | `<CloseCircleFilled />` | 4.0 |\n| default (for customize input element) | customize input element | slot | `<Input />` |  |\n| defaultActiveFirstOption | Whether active first option by default | boolean | true |  |\n| defaultOpen | Initial open state of dropdown | boolean | - |  |\n| disabled | Whether disabled select | boolean | false |  |\n| popupClassName | The className of dropdown menu | string | - | 4.0 |\n| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \\| number | true |  |\n| dropdownMenuStyle | additional style applied to dropdown menu | object |  | 1.5.0 |\n| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | boolean or function(inputValue, option) | true |  |\n| open | Controlled open state of dropdown | boolean | - |  |\n| option | custom render option by slot | v-slot:option=\"{value, label, [disabled, key, title]}\" | - | 3.0 |\n| options | Data source for autocomplete | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\\[] |  |  |\n| placeholder | placeholder of input | string | - |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| v-model:value | selected option | string\\|string\\[]\\|{ key: string, label: string\\|vNodes }\\|Array&lt;{ key: string, label: string\\|vNodes }> | - |  |\n\n### events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| blur | Called when leaving the component. | function() |  |  |\n| change | Called when select an option or input value change, or value of input is changed | function(value) |  |  |\n| dropdownVisibleChange | Call when dropdown open | function(open) |  |  |\n| focus | Called when entering the component | function() |  |  |\n| search | Called when searching items. | function(value) | - |  |\n| select | Called when a option is selected. param is option's value and option instance. | function(value, option) |  |  |\n| clear | Called when clear | function | - | 3.3.0 |\n\n## Methods\n\n| Name    | Description  | Version |\n| ------- | ------------ | ------- |\n| blur()  | remove focus |         |\n| focus() | get focus    |         |\n\n## FAQ\n\n### Part of the api in v2 are not available in v3?\n\nAutoComplete is an Input component that supports auto complete tips. As such, it should not support props like `labelInValue` that affect value display. In v3, the AutoComplete implementation can not handle the case where the `value` and `label` are identical. v4 not longer support `label` as the value input.\n\nBesides, to unify the API, `dataSource` is replaced with `options`. You can migrate with the following change:\n\n#### v2\n\n```ts\ndataSource = ['light', 'bamboo'];\n// or\ndataSource = [\n  { value: 'light', text: 'Light' },\n  { value: 'bamboo', text: 'Bamboo' },\n];\n```\n\n#### v3\n\n```ts\noptions = [\n  { value: 'light', label: 'Light' },\n  { value: 'bamboo', label: 'Bamboo' },\n];\n```\n"
  },
  {
    "path": "components/auto-complete/index.tsx",
    "content": "import type { App, VNode, ExtractPropTypes, CSSProperties, PropType } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport Select, { selectProps } from '../select';\nimport { isValidElement, flattenChildren } from '../_util/props-util';\nimport warning from '../_util/warning';\nimport Option from './Option';\nimport OptGroup from './OptGroup';\nimport omit from '../_util/omit';\n\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { InputStatus } from '../_util/statusUtils';\n\nimport type { CustomSlotsType } from '../_util/type';\n\nfunction isSelectOptionOrSelectOptGroup(child: any): boolean {\n  return child?.type?.isSelectOption || child?.type?.isSelectOptGroup;\n}\n\nexport const autoCompleteProps = () => ({\n  ...omit(selectProps(), ['loading', 'mode', 'optionLabelProp', 'labelInValue']),\n  dataSource: Array as PropType<{ value: any; text: any }[] | string[]>,\n  dropdownMenuStyle: {\n    type: Object as PropType<CSSProperties>,\n    default: undefined as CSSProperties,\n  },\n  // optionLabelProp: String,\n  dropdownMatchSelectWidth: { type: [Number, Boolean], default: true },\n  prefixCls: String,\n  showSearch: { type: Boolean, default: undefined },\n  transitionName: String,\n  choiceTransitionName: { type: String, default: 'zoom' },\n  autofocus: { type: Boolean, default: undefined },\n  backfill: { type: Boolean, default: undefined },\n  // optionLabelProp: PropTypes.string.def('children'),\n  filterOption: { type: [Boolean, Function], default: false },\n  defaultActiveFirstOption: { type: Boolean, default: true },\n  status: String as PropType<InputStatus>,\n});\n\nexport type AutoCompleteProps = Partial<ExtractPropTypes<ReturnType<typeof autoCompleteProps>>>;\n\nexport const AutoCompleteOption = Option;\n\nexport const AutoCompleteOptGroup = OptGroup;\n\nconst AutoComplete = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAutoComplete',\n  inheritAttrs: false,\n  props: autoCompleteProps(),\n  // emits: ['change', 'select', 'focus', 'blur'],\n  slots: Object as CustomSlotsType<{\n    option: any;\n    // deprecated, should use props `options` instead, not slot\n    options: any;\n    default: any;\n    notFoundContent: any;\n    dataSource: any;\n    clearIcon: any;\n  }>,\n  setup(props, { slots, attrs, expose }) {\n    warning(\n      !('dataSource' in slots),\n      'AutoComplete',\n      '`dataSource` slot is deprecated, please use props `options` instead.',\n    );\n    warning(\n      !('options' in slots),\n      'AutoComplete',\n      '`options` slot is deprecated, please use props `options` instead.',\n    );\n    warning(\n      !props.dropdownClassName,\n      'AutoComplete',\n      '`dropdownClassName` is deprecated, please use `popupClassName` instead.',\n    );\n    const selectRef = ref();\n    const getInputElement = () => {\n      const children = flattenChildren(slots.default?.());\n      const element = children.length ? children[0] : undefined;\n      return element;\n    };\n\n    const focus = () => {\n      selectRef.value?.focus();\n    };\n\n    const blur = () => {\n      selectRef.value?.blur();\n    };\n\n    expose({\n      focus,\n      blur,\n    });\n    const { prefixCls } = useConfigInject('select', props);\n    return () => {\n      const { size, dataSource, notFoundContent = slots.notFoundContent?.() } = props;\n      let optionChildren: VNode[];\n      const { class: className } = attrs;\n      const cls = {\n        [className as string]: !!className,\n        [`${prefixCls.value}-lg`]: size === 'large',\n        [`${prefixCls.value}-sm`]: size === 'small',\n        [`${prefixCls.value}-show-search`]: true,\n        [`${prefixCls.value}-auto-complete`]: true,\n      };\n      if (props.options === undefined) {\n        const childArray = slots.dataSource?.() || slots.options?.() || [];\n        if (childArray.length && isSelectOptionOrSelectOptGroup(childArray[0])) {\n          optionChildren = childArray;\n        } else {\n          optionChildren = dataSource\n            ? dataSource.map((item: any) => {\n                if (isValidElement(item)) {\n                  return item;\n                }\n                switch (typeof item) {\n                  case 'string':\n                    return (\n                      <Option key={item} value={item}>\n                        {item}\n                      </Option>\n                    );\n                  case 'object':\n                    return (\n                      <Option key={item.value} value={item.value}>\n                        {item.text}\n                      </Option>\n                    );\n                  default:\n                    throw new Error(\n                      'AutoComplete[dataSource] only supports type `string[] | Object[]`.',\n                    );\n                }\n              })\n            : [];\n        }\n      }\n\n      const selectProps = omit(\n        {\n          ...props,\n          ...(attrs as any),\n          mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE,\n          // optionLabelProp,\n          getInputElement,\n          notFoundContent,\n          // placeholder: '',\n          class: cls,\n          popupClassName: props.popupClassName || props.dropdownClassName,\n          ref: selectRef,\n        },\n        ['dataSource', 'loading'],\n      );\n      return (\n        <Select {...selectProps} v-slots={omit(slots, ['default', 'dataSource', 'options'])}>\n          {optionChildren}\n        </Select>\n      );\n    };\n  },\n});\n\n/* istanbul ignore next */\nexport default Object.assign(AutoComplete, {\n  Option,\n  OptGroup,\n  install(app: App) {\n    app.component(AutoComplete.name, AutoComplete);\n    app.component(Option.displayName, Option);\n    app.component(OptGroup.displayName, OptGroup);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/auto-complete/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 自动完成\ntype: 数据录入\ncols: 2\ntitle: AutoComplete\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*g8THS4NpV6sAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WERTQ6qvgEYAAAAAAAAAAAAADrJ8AQ/original\n---\n\n输入框自动完成功能。\n\n## 何时使用\n\n- 需要一个输入框而不是选择器。\n- 需要输入建议/辅助提示。\n\n和 Select 的区别是：\n\n- AutoComplete 是一个带提示的文本输入框，用户可以自由输入，关键词是辅助**输入**。\n- Select 是在限定的可选项中进行选择，关键词是**选择**。\n\n## API\n\n```html\n<a-auto-complete v-model:value=\"value\" :options=\"options\" />\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| allowClear | 支持清除, 单选模式有效 | boolean | false |  |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| backfill | 使用键盘选择选项的时候把选中项回填到输入框中 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true | 4.0 |\n| clearIcon | 使用插槽自定义清除按钮 | slot | `<CloseCircleFilled />` | 4.0 |\n| default (自定义输入框) | 自定义输入框 | slot | `<Input />` |  |\n| defaultActiveFirstOption | 是否默认高亮第一个选项。 | boolean | true |  |\n| defaultOpen | 是否默认展开下拉菜单 | boolean | - |  |\n| disabled | 是否禁用 | boolean | false |  |\n| popupClassName | 下拉菜单的 className 属性 | string | - | 4.0 |\n| dropdownMatchSelectWidth | 下拉菜单和选择器同宽。默认将设置 `min-width`，当值小于选择框宽度时会被忽略。false 时会关闭虚拟滚动 | boolean \\| number | true |  |\n| dropdownMenuStyle | dropdown 菜单自定义样式 | object |  | 1.5.0 |\n| filterOption | 是否根据输入项进行筛选。当其为一个函数时，会接收 `inputValue` `option` 两个参数，当 `option` 符合筛选条件时，应返回 `true`，反之则返回 `false`。 | boolean or function(inputValue, option) | true |  |\n| open | 是否展开下拉菜单 | boolean | - |  |\n| option | 通过 option 插槽，自定义节点 | v-slot:option=\"{value, label, [disabled, key, title]}\" | - | 3.0 |\n| options | 自动完成的数据源 | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\\[] |  |  |\n| placeholder | 输入框提示 | string \\| slot | - |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| v-model:value | 指定当前选中的条目 | string\\|string\\[]\\|{ key: string, label: string\\|vNodes }\\|Array&lt;{ key: string, label: string\\|vNodes }> | 无 |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- | --- |\n| blur | 失去焦点时的回调 | function() |  |\n| change | 选中 option，或 input 的 value 变化时，调用此函数 | function(value) |  |\n| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) |  |\n| focus | 获得焦点时的回调 | function() |  |\n| search | 搜索补全项的时候调用 | function(value) |  |\n| select | 被选中时调用，参数为选中项的 value 值 | function(value, option) |  |\n| clear | 清除内容时回调 | function | - | 3.3.0 |\n\n## 方法\n\n| 名称    | 描述     | 版本 |\n| ------- | -------- | ---- |\n| blur()  | 移除焦点 |      |\n| focus() | 获取焦点 |      |\n\n## FAQ\n\n### v2 的部分属性为何在 v3 中没有了？\n\nAutoComplete 组件是一个支持自动提示的 Input 组件，因而其不具有 `labelInValue` 等影响 value 展示的属性。在 v2 版本，AutoComplete 实现存在输入值如果遇到 `value` 与 `label` 相同时无法映射的问题。 v3 中不再支持 `label` 为值的输入形态。\n\n此外为了统一 API，`dataSource` 改为 `options` 你可以如下转换：\n\n#### v2\n\n```ts\ndataSource = ['light', 'bamboo'];\n// or\ndataSource = [\n  { value: 'light', text: 'Light' },\n  { value: 'bamboo', text: 'Bamboo' },\n];\n```\n\n#### v3\n\n```ts\noptions = [\n  { value: 'light', label: 'Light' },\n  { value: 'bamboo', label: 'Bamboo' },\n];\n```\n"
  },
  {
    "path": "components/avatar/Avatar.tsx",
    "content": "import type { CustomSlotsType, VueNode } from '../_util/type';\n\nimport type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { computed, defineComponent, nextTick, onMounted, shallowRef, watch } from 'vue';\nimport { getPropsSlot } from '../_util/props-util';\nimport PropTypes from '../_util/vue-types';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\nimport type { Breakpoint, ScreenSizeMap } from '../_util/responsiveObserve';\nimport { responsiveArray } from '../_util/responsiveObserve';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport ResizeObserver from '../vc-resize-observer';\nimport eagerComputed from '../_util/eagerComputed';\nimport useStyle from './style';\nimport { useAvatarInjectContext } from './AvatarContext';\n\nexport type AvatarSize = 'large' | 'small' | 'default' | number | ScreenSizeMap;\n\nexport const avatarProps = () => ({\n  prefixCls: String,\n  shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' },\n  size: {\n    type: [Number, String, Object] as PropType<AvatarSize>,\n    default: (): AvatarSize => 'default',\n  },\n  src: String,\n  /** Srcset of image avatar */\n  srcset: String,\n  icon: PropTypes.any,\n  alt: String,\n  gap: Number,\n  draggable: { type: Boolean, default: undefined },\n  crossOrigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n  loadError: {\n    type: Function as PropType<() => boolean>,\n  },\n});\n\nexport type AvatarProps = Partial<ExtractPropTypes<ReturnType<typeof avatarProps>>>;\n\nconst Avatar = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAvatar',\n  inheritAttrs: false,\n  props: avatarProps(),\n  slots: Object as CustomSlotsType<{\n    icon: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const isImgExist = shallowRef(true);\n    const isMounted = shallowRef(false);\n    const scale = shallowRef(1);\n\n    const avatarChildrenRef = shallowRef<HTMLElement>(null);\n    const avatarNodeRef = shallowRef<HTMLElement>(null);\n\n    const { prefixCls } = useConfigInject('avatar', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const avatarCtx = useAvatarInjectContext();\n    const size = computed(() => {\n      return props.size === 'default' ? avatarCtx.size : props.size;\n    });\n    const screens = useBreakpoint();\n    const responsiveSize = eagerComputed(() => {\n      if (typeof props.size !== 'object') {\n        return undefined;\n      }\n      const currentBreakpoint: Breakpoint = responsiveArray.find(screen => screens.value[screen])!;\n      const currentSize = props.size[currentBreakpoint];\n\n      return currentSize;\n    });\n\n    const responsiveSizeStyle = (hasIcon: boolean) => {\n      if (responsiveSize.value) {\n        return {\n          width: `${responsiveSize.value}px`,\n          height: `${responsiveSize.value}px`,\n          lineHeight: `${responsiveSize.value}px`,\n          fontSize: `${hasIcon ? responsiveSize.value / 2 : 18}px`,\n        };\n      }\n      return {};\n    };\n\n    const setScaleParam = () => {\n      if (!avatarChildrenRef.value || !avatarNodeRef.value) {\n        return;\n      }\n      const childrenWidth = avatarChildrenRef.value.offsetWidth; // offsetWidth avoid affecting be transform scale\n      const nodeWidth = avatarNodeRef.value.offsetWidth;\n      // denominator is 0 is no meaning\n      if (childrenWidth !== 0 && nodeWidth !== 0) {\n        const { gap = 4 } = props;\n        if (gap * 2 < nodeWidth) {\n          scale.value =\n            nodeWidth - gap * 2 < childrenWidth ? (nodeWidth - gap * 2) / childrenWidth : 1;\n        }\n      }\n    };\n\n    const handleImgLoadError = () => {\n      const { loadError } = props;\n      const errorFlag = loadError?.();\n      if (errorFlag !== false) {\n        isImgExist.value = false;\n      }\n    };\n\n    watch(\n      () => props.src,\n      () => {\n        nextTick(() => {\n          isImgExist.value = true;\n          scale.value = 1;\n        });\n      },\n    );\n\n    watch(\n      () => props.gap,\n      () => {\n        nextTick(() => {\n          setScaleParam();\n        });\n      },\n    );\n\n    onMounted(() => {\n      nextTick(() => {\n        setScaleParam();\n        isMounted.value = true;\n      });\n    });\n\n    return () => {\n      const { shape, src, alt, srcset, draggable, crossOrigin } = props;\n      const mergeShape = avatarCtx.shape ?? shape;\n      const icon = getPropsSlot(slots, props, 'icon');\n      const pre = prefixCls.value;\n      const classString = {\n        [`${attrs.class}`]: !!attrs.class,\n        [pre]: true,\n        [`${pre}-lg`]: size.value === 'large',\n        [`${pre}-sm`]: size.value === 'small',\n        [`${pre}-${mergeShape}`]: true,\n        [`${pre}-image`]: src && isImgExist.value,\n        [`${pre}-icon`]: icon,\n        [hashId.value]: true,\n      };\n\n      const sizeStyle: CSSProperties =\n        typeof size.value === 'number'\n          ? {\n              width: `${size.value}px`,\n              height: `${size.value}px`,\n              lineHeight: `${size.value}px`,\n              fontSize: icon ? `${size.value / 2}px` : '18px',\n            }\n          : {};\n\n      const children: VueNode = slots.default?.();\n      let childrenToRender;\n      if (src && isImgExist.value) {\n        childrenToRender = (\n          <img\n            draggable={draggable}\n            src={src}\n            srcset={srcset}\n            onError={handleImgLoadError}\n            alt={alt}\n            crossorigin={crossOrigin}\n          />\n        );\n      } else if (icon) {\n        childrenToRender = icon;\n      } else if (isMounted.value || scale.value !== 1) {\n        const transformString = `scale(${scale.value}) translateX(-50%)`;\n        const childrenStyle: CSSProperties = {\n          msTransform: transformString,\n          WebkitTransform: transformString,\n          transform: transformString,\n        };\n        const sizeChildrenStyle =\n          typeof size.value === 'number'\n            ? {\n                lineHeight: `${size.value}px`,\n              }\n            : {};\n        childrenToRender = (\n          <ResizeObserver onResize={setScaleParam}>\n            <span\n              class={`${pre}-string`}\n              ref={avatarChildrenRef}\n              style={{ ...sizeChildrenStyle, ...childrenStyle }}\n            >\n              {children}\n            </span>\n          </ResizeObserver>\n        );\n      } else {\n        childrenToRender = (\n          <span class={`${pre}-string`} ref={avatarChildrenRef} style={{ opacity: 0 }}>\n            {children}\n          </span>\n        );\n      }\n      return wrapSSR(\n        <span\n          {...attrs}\n          ref={avatarNodeRef}\n          class={classString}\n          style={[sizeStyle, responsiveSizeStyle(!!icon), attrs.style as CSSProperties]}\n        >\n          {childrenToRender}\n        </span>,\n      );\n    };\n  },\n});\n\nexport default Avatar;\n"
  },
  {
    "path": "components/avatar/AvatarContext.ts",
    "content": "import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { ScreenSizeMap } from '../_util/responsiveObserve';\nexport type AvatarSize = 'large' | 'small' | 'default' | number | ScreenSizeMap;\nexport interface AvatarContextType {\n  size?: AvatarSize;\n  shape?: 'circle' | 'square';\n}\nconst AvatarContextKey: InjectionKey<AvatarContextType> = Symbol('AvatarContextKey');\n\nexport const useAvatarInjectContext = () => {\n  return inject(AvatarContextKey, {});\n};\nexport const useAvatarProviderContext = (context: AvatarContextType) => {\n  return provide(AvatarContextKey, context);\n};\n"
  },
  {
    "path": "components/avatar/Group.tsx",
    "content": "import { cloneElement } from '../_util/vnode';\nimport type { AvatarSize } from './Avatar';\nimport Avatar from './Avatar';\nimport Popover from '../popover';\nimport type { PropType, ExtractPropTypes, CSSProperties } from 'vue';\nimport { computed, defineComponent, watchEffect } from 'vue';\nimport { flattenChildren, getPropsSlot } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nimport { useAvatarProviderContext } from './AvatarContext';\n\nexport const groupProps = () => ({\n  prefixCls: String,\n  maxCount: Number,\n  maxStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  maxPopoverPlacement: { type: String as PropType<'top' | 'bottom'>, default: 'top' },\n  maxPopoverTrigger: String as PropType<'hover' | 'focus' | 'click'>,\n  /*\n   * Size of avatar, options: `large`, `small`, `default`\n   * or a custom number size\n   * */\n  size: {\n    type: [Number, String, Object] as PropType<AvatarSize>,\n    default: 'default' as AvatarSize,\n  },\n  shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' },\n});\n\nexport type AvatarGroupProps = Partial<ExtractPropTypes<ReturnType<typeof groupProps>>>;\n\nconst Group = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AAvatarGroup',\n  inheritAttrs: false,\n  props: groupProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('avatar', props);\n    const groupPrefixCls = computed(() => `${prefixCls.value}-group`);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    watchEffect(() => {\n      const context = { size: props.size, shape: props.shape };\n      useAvatarProviderContext(context);\n    });\n    return () => {\n      const {\n        maxPopoverPlacement = 'top',\n        maxCount,\n        maxStyle,\n        maxPopoverTrigger = 'hover',\n        shape,\n      } = props;\n\n      const cls = {\n        [groupPrefixCls.value]: true,\n        [`${groupPrefixCls.value}-rtl`]: direction.value === 'rtl',\n        [`${attrs.class}`]: !!attrs.class,\n        [hashId.value]: true,\n      };\n\n      const children = getPropsSlot(slots, props);\n      const childrenWithProps = flattenChildren(children).map((child, index) =>\n        cloneElement(child, {\n          key: `avatar-key-${index}`,\n        }),\n      );\n\n      const numOfChildren = childrenWithProps.length;\n      if (maxCount && maxCount < numOfChildren) {\n        const childrenShow = childrenWithProps.slice(0, maxCount);\n        const childrenHidden = childrenWithProps.slice(maxCount, numOfChildren);\n\n        childrenShow.push(\n          <Popover\n            key=\"avatar-popover-key\"\n            content={childrenHidden}\n            trigger={maxPopoverTrigger}\n            placement={maxPopoverPlacement}\n            overlayClassName={`${groupPrefixCls.value}-popover`}\n          >\n            <Avatar style={maxStyle} shape={shape}>{`+${numOfChildren - maxCount}`}</Avatar>\n          </Popover>,\n        );\n        return wrapSSR(\n          <div {...attrs} class={cls} style={attrs.style as CSSProperties}>\n            {childrenShow}\n          </div>,\n        );\n      }\n\n      return wrapSSR(\n        <div {...attrs} class={cls} style={attrs.style as CSSProperties}>\n          {childrenWithProps}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default Group;\n"
  },
  {
    "path": "components/avatar/__tests__/Avatar.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Avatar from '..';\nimport useBreakpoint from '../../_util/hooks/useBreakpoint';\n\njest.mock('../../_util/hooks/useBreakpoint');\n\ndescribe('Avatar Render', () => {\n  let originOffsetWidth;\n  const sizes = { xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 };\n\n  beforeAll(() => {\n    // Mock offsetHeight\n    originOffsetWidth = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'offsetWidth').get;\n    Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {\n      get() {\n        if (this.className === 'ant-avatar-string') {\n          return 100;\n        }\n        return 80;\n      },\n    });\n  });\n\n  afterAll(() => {\n    // Restore Mock offsetHeight\n    Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {\n      get: originOffsetWidth,\n    });\n  });\n  it('Render long string correctly', () => {\n    const wrapper = mount(Avatar, {\n      slots: {\n        default: () => 'TestString',\n      },\n    });\n    const children = wrapper.findAll('.ant-avatar-string');\n    expect(children.length).toBe(1);\n  });\n  it('should render fallback string correctly', async () => {\n    global.document.body.innerHTML = '';\n    const wrapper = mount(Avatar, {\n      slots: {\n        default: () => 'Fallback',\n      },\n      props: {\n        src: 'http://error.url',\n      },\n      attachTo: 'body',\n    });\n    await asyncExpect(() => {\n      wrapper.find('img').trigger('error');\n    }, 0);\n    await asyncExpect(() => {\n      const children = wrapper.findAll('.ant-avatar-string');\n      expect(children.length).toBe(1);\n      expect(children[0].text()).toBe('Fallback');\n    });\n  });\n  it('should handle onError correctly', async () => {\n    global.document.body.innerHTML = '';\n    const LOAD_FAILURE_SRC = 'http://error.url';\n    const LOAD_SUCCESS_SRC = 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png';\n\n    const Foo = {\n      data() {\n        return {\n          src: LOAD_FAILURE_SRC,\n        };\n      },\n      methods: {\n        handleImgError() {\n          this.src = LOAD_SUCCESS_SRC;\n          return false;\n        },\n      },\n\n      render() {\n        const { src } = this;\n        return <Avatar src={src} loadError={this.handleImgError} />;\n      },\n    };\n\n    const wrapper = mount(Foo, { attachTo: 'body' });\n    await asyncExpect(() => {\n      // mock img load Error, since jsdom do not load resource by default\n      // https://github.com/jsdom/jsdom/issues/1816\n      wrapper.find('img').trigger('error');\n    }, 0);\n    await asyncExpect(() => {\n      expect(wrapper.find('img')).not.toBeNull();\n    }, 0);\n    await asyncExpect(() => {\n      expect(wrapper.find('img').attributes('src')).toBe(LOAD_SUCCESS_SRC);\n    }, 0);\n  });\n\n  it('should show image on success after a failure state', async () => {\n    global.document.body.innerHTML = '';\n    const LOAD_FAILURE_SRC = 'http://error.url';\n    const LOAD_SUCCESS_SRC = 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png';\n\n    const Foo = {\n      data() {\n        return {\n          src: LOAD_FAILURE_SRC,\n        };\n      },\n      render() {\n        const { src } = this;\n        return <Avatar src={src}>Fallback</Avatar>;\n      },\n    };\n\n    const wrapper = mount(Foo, { sync: false, attachTo: 'body' });\n    await asyncExpect(() => {\n      wrapper.find('img').trigger('error');\n    }, 0);\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'AAvatar' }).findAll('img').length).toBe(0);\n      expect(wrapper.findAll('.ant-avatar-string').length).toBe(1);\n    }, 0);\n\n    await asyncExpect(() => {\n      wrapper.vm.src = LOAD_SUCCESS_SRC;\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'AAvatar' }).findAll('img').length).toBe(1);\n      expect(wrapper.findAll('.ant-avatar-image').length).toBe(1);\n    }, 0);\n  });\n\n  it('should calculate scale of avatar children correctly', async () => {\n    let wrapper = mount({\n      render() {\n        return <Avatar>Avatar</Avatar>;\n      },\n    });\n\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-avatar-string').html()).toMatchSnapshot();\n    }, 0);\n\n    Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {\n      get() {\n        if (this.className === 'ant-avatar-string') {\n          return 100;\n        }\n        return 40;\n      },\n    });\n    wrapper = mount({\n      render() {\n        return <Avatar>xx</Avatar>;\n      },\n    });\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-avatar-string').html()).toMatchSnapshot();\n    }, 0);\n  });\n\n  it('should calculate scale of avatar children correctly with gap', async () => {\n    const wrapper = mount({\n      render() {\n        return <Avatar gap={2}>Avatar</Avatar>;\n      },\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    }, 0);\n  });\n\n  Object.entries(sizes).forEach(([key, value]) => {\n    it(`adjusts component size to ${value} when window size is ${key}`, async () => {\n      useBreakpoint.mockReturnValue({ value: { [key]: true } });\n\n      const wrapper = mount({\n        render() {\n          return <Avatar size={sizes} />;\n        },\n      });\n\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      }, 0);\n    });\n  });\n\n  it('fallback', () => {\n    const div = global.document.createElement('div');\n    global.document.body.appendChild(div);\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Avatar shape=\"circle\" src=\"http://error.url\">\n              A\n            </Avatar>\n          );\n        },\n      },\n      { attachTo: div },\n    );\n    wrapper.find('img').trigger('error');\n    expect(wrapper.html()).toMatchSnapshot();\n    wrapper.unmount();\n    global.document.body.removeChild(div);\n  });\n});\n"
  },
  {
    "path": "components/avatar/__tests__/__snapshots__/Avatar.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Avatar Render adjusts component size to 24 when window size is xs 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 24px; height: 24px; line-height: 24px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render adjusts component size to 32 when window size is sm 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 32px; height: 32px; line-height: 32px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render adjusts component size to 40 when window size is md 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 40px; height: 40px; line-height: 40px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render adjusts component size to 64 when window size is lg 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 64px; height: 64px; line-height: 64px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render adjusts component size to 80 when window size is xl 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 80px; height: 80px; line-height: 80px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render adjusts component size to 100 when window size is xxl 1`] = `<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 100px; height: 100px; line-height: 100px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\"><!----></span></span>`;\n\nexports[`Avatar Render fallback 1`] = `<span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"http://error.url\"></span>`;\n\nexports[`Avatar Render should calculate scale of avatar children correctly 1`] = `<span class=\"ant-avatar-string\" style=\"transform: scale(0.72) translateX(-50%);\">Avatar</span>`;\n\nexports[`Avatar Render should calculate scale of avatar children correctly 2`] = `<span class=\"ant-avatar-string\" style=\"transform: scale(0.32) translateX(-50%);\">xx</span>`;\n\nexports[`Avatar Render should calculate scale of avatar children correctly with gap 1`] = `<span class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"transform: scale(0.36) translateX(-50%);\">Avatar</span></span>`;\n"
  },
  {
    "path": "components/avatar/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/avatar/demo/badge.vue correctly 1`] = `\n<span style=\"margin-right: 24px;\"><span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-square ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"1\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span></sup>\n<!----></span></span>\n<span><span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-square ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-dot\"></sup>\n<!----></span></span>\n`;\n\nexports[`renders ./components/avatar/demo/basic.vue correctly 1`] = `\n<span class=\"ant-avatar ant-avatar-circle ant-avatar-icon\" style=\"width: 64px; height: 64px; line-height: 64px; font-size: 32px;\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-lg ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-sm ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<br>\n<span class=\"ant-avatar ant-avatar-square ant-avatar-icon\" style=\"width: 64px; height: 64px; line-height: 64px; font-size: 32px;\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-lg ant-avatar-square ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-square ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-sm ant-avatar-square ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n`;\n\nexports[`renders ./components/avatar/demo/dynamic.vue correctly 1`] = `\n<span style=\"background-color: rgb(245, 106, 0); vertical-align: middle;\" class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">U</span></span>\n<button style=\"margin-left: 16px; vertical-align: middle;\" class=\"ant-btn ant-btn-default ant-btn-sm\" type=\"button\">\n  <!----><span>改 变</span>\n</button>\n`;\n\nexports[`renders ./components/avatar/demo/group.vue correctly 1`] = `\n<div class=\"ant-avatar-group\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span><span style=\"background-color: rgb(245, 106, 0);\" class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">K</span></span>\n  <!----><span style=\"background-color: rgb(135, 208, 104);\" class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><span style=\"background-color: rgb(24, 144, 255);\" class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-avatar-group\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span><span style=\"background-color: rgb(24, 144, 255);\" class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">K</span></span>\n  <!----><span style=\"color: rgb(245, 106, 0); background-color: rgb(253, 227, 207);\" class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">+2</span></span>\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-avatar-group\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span><span style=\"background-color: rgb(24, 144, 255);\" class=\"ant-avatar ant-avatar-lg ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">K</span></span>\n  <!----><span style=\"color: rgb(245, 106, 0); background-color: rgb(253, 227, 207);\" class=\"ant-avatar ant-avatar-lg ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">+2</span></span>\n</div>\n`;\n\nexports[`renders ./components/avatar/demo/responsive.vue correctly 1`] = `<span class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"ant-design\" class=\"anticon anticon-ant-design\"><svg focusable=\"false\" class=\"\" data-icon=\"ant-design\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 000 76.4L474.6 944a54.14 54.14 0 0076.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 00-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 10212.6 0 106.3 106.2 0 10-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 000 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 000 68.6 48.7 48.7 0 0068.7 0l121.8-121.7a53.93 53.93 0 00-.1-76.4z\"></path></svg></span></span>`;\n\nexports[`renders ./components/avatar/demo/type.vue correctly 1`] = `\n<span class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n<span class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">U</span></span>\n<span class=\"ant-avatar ant-avatar-circle\" style=\"width: 40px; height: 40px; line-height: 40px; font-size: 18px;\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">USER</span></span>\n<span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span>\n<span style=\"color: rgb(245, 106, 0); background-color: rgb(253, 227, 207);\" class=\"ant-avatar ant-avatar-circle\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\">U</span></span>\n<span style=\"background-color: rgb(135, 208, 104);\" class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span>\n`;\n"
  },
  {
    "path": "components/avatar/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('avatar');\n"
  },
  {
    "path": "components/avatar/demo/badge.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 带徽标的头像\n  en-US: With Badge\n---\n\n## zh-CN\n\n通常用于消息提示。\n\n## en-US\n\nUsually used for reminders and notifications.\n</docs>\n\n<template>\n  <a-space :size=\"24\">\n    <a-badge :count=\"1\">\n      <a-avatar shape=\"square\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-badge>\n    <a-badge dot>\n      <a-avatar shape=\"square\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-badge>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UserOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/avatar/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n头像有三种尺寸，两种形状可选。\n\n## en-US\n\nThree sizes and two shapes are available.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"32\">\n    <a-space wrap :size=\"16\">\n      <a-avatar :size=\"64\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar size=\"large\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar>\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar size=\"small\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-space>\n    <a-space wrap :size=\"16\">\n      <a-avatar shape=\"square\" :size=\"64\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar shape=\"square\" size=\"large\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar shape=\"square\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n      <a-avatar shape=\"square\" size=\"small\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-space>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UserOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/avatar/demo/dynamic.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自动调整字符大小\n  en-US: Autoset Font Size\n---\n\n## zh-CN\n\n对于字符型的头像，当字符串较长时，字体大小可以根据头像宽度自动调整。也可使用 `gap`` 来设置字符距离左右两侧边界单位像素。\n\n## en-US\n\nFor letter type Avatar, when the letters are too long to display, the font size can be automatically adjusted according to the width of the Avatar. You can also use `gap` to set the unit distance between left and right sides.\n</docs>\n\n<template>\n  <a-avatar size=\"large\" :style=\"{ backgroundColor: color, verticalAlign: 'middle' }\" :gap=\"gap\">\n    {{ avatarValue }}\n  </a-avatar>\n  <a-button size=\"small\" :style=\"{ margin: '0 16px', verticalAlign: 'middle' }\" @click=\"changeUser\">\n    ChangeUser\n  </a-button>\n  <a-button size=\"small\" :style=\"{ verticalAlign: 'middle' }\" @click=\"changeGap\">\n    ChangeGap\n  </a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst UserList = ['U', 'Lucy', 'Tom', 'Edward'];\nconst colorList = ['#f56a00', '#7265e6', '#ffbf00', '#00a2ae'];\nconst avatarValue = ref(UserList[0]);\nconst color = ref(colorList[0]);\nconst changeUser = () => {\n  const index = UserList.indexOf(avatarValue.value);\n  avatarValue.value = index < UserList.length - 1 ? UserList[index + 1] : UserList[0];\n  color.value = index < colorList.length - 1 ? colorList[index + 1] : colorList[0];\n};\n\nconst GapList = [4, 3, 2, 1];\nconst gap = ref(GapList[0]);\nconst changeGap = () => {\n  const index = GapList.indexOf(gap.value);\n  gap.value = index < GapList.length - 1 ? GapList[index + 1] : GapList[0];\n};\n</script>\n"
  },
  {
    "path": "components/avatar/demo/group.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: Avatar.Group\n  en-US: Avatar.Group\n---\n\n## zh-CN\n\n头像组合展现。\n\n## en-US\n\nAvatar group display.\n</docs>\n\n<template>\n  <a-avatar-group>\n    <a-avatar src=\"https://xsgames.co/randomusers/avatar.php?g=pixel&key=1\" />\n    <a href=\"https://www.antdv.com\">\n      <a-avatar style=\"background-color: #f56a00\">K</a-avatar>\n    </a>\n    <a-tooltip title=\"Ant User\" placement=\"top\">\n      <a-avatar style=\"background-color: #87d068\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-tooltip>\n    <a-avatar style=\"background-color: #1890ff\">\n      <template #icon><AntDesignOutlined /></template>\n    </a-avatar>\n  </a-avatar-group>\n  <a-divider />\n  <a-avatar-group :max-count=\"2\" :max-style=\"{ color: '#f56a00', backgroundColor: '#fde3cf' }\">\n    <a-avatar src=\"https://xsgames.co/randomusers/avatar.php?g=pixel&key=2\" />\n    <a-avatar style=\"background-color: #1890ff\">K</a-avatar>\n    <a-tooltip title=\"Ant User\" placement=\"top\">\n      <a-avatar style=\"background-color: #87d068\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-tooltip>\n    <a-avatar style=\"background-color: #1890ff\">\n      <template #icon><AntDesignOutlined /></template>\n    </a-avatar>\n  </a-avatar-group>\n  <a-divider />\n  <a-avatar-group\n    :max-count=\"2\"\n    size=\"large\"\n    :max-style=\"{\n      color: '#f56a00',\n      backgroundColor: '#fde3cf',\n    }\"\n  >\n    <a-avatar src=\"https://xsgames.co/randomusers/avatar.php?g=pixel&key=3\" />\n    <a-avatar style=\"background-color: #1890ff\">K</a-avatar>\n    <a-tooltip title=\"Ant User\" placement=\"top\">\n      <a-avatar style=\"background-color: #87d068\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-tooltip>\n    <a-avatar style=\"background-color: #1890ff\">\n      <template #icon><AntDesignOutlined /></template>\n    </a-avatar>\n  </a-avatar-group>\n  <a-divider />\n  <a-avatar-group\n    :max-count=\"2\"\n    max-popover-trigger=\"click\"\n    size=\"large\"\n    :max-style=\"{ color: '#f56a00', backgroundColor: '#fde3cf', cursor: 'pointer' }\"\n  >\n    <a-avatar src=\"https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png\" />\n    <a-avatar style=\"background-color: #f56a00\">K</a-avatar>\n    <a-tooltip title=\"Ant User\" placement=\"top\">\n      <a-avatar style=\"background-color: #87d068\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-tooltip>\n    <a-avatar style=\"background-color: #1890ff\">\n      <template #icon><AntDesignOutlined /></template>\n    </a-avatar>\n  </a-avatar-group>\n  <a-divider />\n  <a-avatar-group shape=\"square\">\n    <a-avatar style=\"background-color: #fde3cf\">A</a-avatar>\n    <a-avatar style=\"background-color: #f56a00\">K</a-avatar>\n    <a-tooltip title=\"Ant User\" placement=\"top\">\n      <a-avatar style=\"background-color: #87d068\">\n        <template #icon><UserOutlined /></template>\n      </a-avatar>\n    </a-tooltip>\n    <a-avatar style=\"background-color: #1890ff\">\n      <template #icon><AntDesignOutlined /></template>\n    </a-avatar>\n  </a-avatar-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UserOutlined, AntDesignOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/avatar/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <type />\n    <dynamic />\n    <badge />\n    <group />\n    <responsive />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Type from './type.vue';\nimport Dynamic from './dynamic.vue';\nimport Badge from './badge.vue';\nimport Group from './group.vue';\nimport Responsive from './responsive.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Type,\n    Dynamic,\n    Badge,\n    Group,\n    Responsive,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/avatar/demo/responsive.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 响应式尺寸\n  en-US: Responsive Size\n---\n\n## zh-CN\n\n头像大小可以根据屏幕大小自动调整。\n\n## en-US\n\nAvatar size can be automatically adjusted based on the screen size.\n</docs>\n\n<template>\n  <a-avatar :size=\"{ xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 }\">\n    <template #icon>\n      <AntDesignOutlined />\n    </template>\n  </a-avatar>\n</template>\n\n<script lang=\"ts\" setup>\nimport { AntDesignOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/avatar/demo/type.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 类型\n  en-US: Type\n---\n\n## zh-CN\n\n支持三种类型：图片、Icon 以及字符，其中 Icon 和字符型可以自定义图标颜色及背景色。\n\n## en-US\n\nImage, Icon and letter are supported, and the latter two kinds avatar can have custom colors and background colors.\n</docs>\n\n<template>\n  <a-space :size=\"16\" wrap>\n    <a-avatar>\n      <template #icon>\n        <UserOutlined />\n      </template>\n    </a-avatar>\n    <a-avatar>U</a-avatar>\n    <a-avatar :size=\"40\">USER</a-avatar>\n    <a-avatar src=\"https://www.antdv.com/assets/logo.1ef800a8.svg\" />\n    <a-avatar style=\"color: #f56a00; background-color: #fde3cf\">U</a-avatar>\n    <a-avatar style=\"background-color: #87d068\">\n      <template #icon>\n        <UserOutlined />\n      </template>\n    </a-avatar>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UserOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/avatar/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Avatar\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JJBSS5lBG4IAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YbgyQaRGz-UAAAAAAAAAAAAADrJ8AQ/original\n---\n\nAvatars can be used to represent people or objects. It supports images, `Icon`s, or letters.\n\n## API\n\n### Avatar\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| alt | This attribute defines the alternative text describing the image | string | - |  |\n| crossOrigin | cors settings attributes | `'anonymous'` \\| `'use-credentials'` \\| `''` | - | 3.0 |\n| draggable | Whether the picture is allowed to be dragged | boolean \\| `'true'` \\| `'false'` | - | 2.2.0 |\n| gap | Letter type unit distance between left and right sides | number | 4 | 2.2.0 |\n| icon | the `Icon` type for an icon avatar, see `Icon` Component | VNode \\| slot | - |  |\n| loadError | handler when img load error, return false to prevent default fallback behavior | () => boolean | - |  |\n| shape | the shape of avatar | `circle` \\| `square` | `circle` |  |\n| size | The size of the avatar | number \\| `large` \\| `small` \\| `default` \\| { xs: number, sm: number, ...} | `default` | 2.2.0 |\n| src | the address of the image for an image avatar | string | - |  |\n| srcset | a list of sources to use for different screen resolutions | string | - |  |\n\n### Avatar.Group (2.2.0)\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| maxCount | Max avatars to show | number | - |  |\n| maxPopoverPlacement | The placement of excess avatar Popover | `top` \\| `bottom` | `top` |  |\n| maxPopoverTrigger | Set the trigger of excess avatar Popover | `hover` \\| `focus` \\| `click` | `hover` | 3.0 |\n| maxStyle | The style of excess avatar style | CSSProperties | - |  |\n| size | The size of the avatar | number \\| `large` \\| `small` \\| `default` \\| { xs: number, sm: number, ...} | `default` |  |\n| shape | The shape of the avatar | `circle` \\| `square` | `circle` | 4.0 |\n"
  },
  {
    "path": "components/avatar/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Avatar from './Avatar';\nimport Group from './Group';\nexport { avatarProps } from './Avatar';\nexport type { AvatarProps, AvatarSize } from './Avatar';\nexport type { AvatarGroupProps } from './Group';\n\nAvatar.Group = Group;\n\n/* istanbul ignore next */\nAvatar.install = function (app: App) {\n  app.component(Avatar.name, Avatar);\n  app.component(Group.name, Group);\n  return app;\n};\nexport { Group as AvatarGroup };\nexport default Avatar as typeof Avatar &\n  Plugin & {\n    readonly Group: typeof Group;\n  };\n"
  },
  {
    "path": "components/avatar/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 头像\ntype: 数据展示\ntitle: Avatar\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JJBSS5lBG4IAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YbgyQaRGz-UAAAAAAAAAAAAADrJ8AQ/original\n---\n\n用来代表用户或事物，支持图片、图标或字符展示。\n\n## 设计师专属\n\n安装 [Kitchen Sketch 插件 💎](https://kitchen.alipay.com)，一键填充高逼格头像和文本。\n\n## API\n\n### Avatar\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| alt | 图像无法显示时的替代文本 | string | - |  |\n| crossOrigin | cors 属性设置 | `'anonymous'` \\| `'use-credentials'` \\| `''` | - | 3.0 |\n| draggable | 图片是否允许拖动 | boolean \\| `'true'` \\| `'false'` | - | 2.2.0 |\n| gap | 字符类型距离左右两侧边界单位像素 | number | 4 | 2.2.0 |\n| icon | 设置头像的图标类型，可设为 Icon 的 `type` 或 VNode | VNode \\| slot | - |  |\n| loadError | 图片加载失败的事件，返回 false 会关闭组件默认的 fallback 行为 | () => boolean | - |  |\n| shape | 指定头像的形状 | `circle` \\| `square` | `circle` |  |\n| size | 设置头像的大小 | number \\| `large` \\| `small` \\| `default` \\| { xs: number, sm: number, ...} | `default` | 2.2.0 |\n| src | 图片类头像的资源地址 | string | - |  |\n| srcset | 设置图片类头像响应式资源地址 | string | - |  |\n\n### Avatar.Group (2.2.0)\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| maxCount | 显示的最大头像个数 | number | - |  |\n| maxPopoverPlacement | 多余头像气泡弹出位置 | `top` \\| `bottom` | `top` |  |\n| maxPopoverTrigger | 设置多余头像 Popover 的触发方式 | `hover` \\| `focus` \\| `click` | `hover` | 3.0 |\n| maxStyle | 多余头像样式 | CSSProperties | - |  |\n| size | 设置头像的大小 | number \\| `large` \\| `small` \\| `default` \\| { xs: number, sm: number, ...} | `default` |  |\n| shape | 设置头像的形状 | `circle` \\| `square` | `circle` | 4.0 |\n"
  },
  {
    "path": "components/avatar/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {\n  /**\n   * @desc 头像背景色\n   * @descEN Background color of Avatar\n   */\n  containerSize: number;\n  /**\n   * @desc 大号头像尺寸\n   * @descEN Size of large Avatar\n   */\n  containerSizeLG: number;\n  /**\n   * @desc 小号头像尺寸\n   * @descEN Size of small Avatar\n   */\n  containerSizeSM: number;\n  /**\n   * @desc 头像文字大小\n   * @descEN Font size of Avatar\n   */\n  textFontSize: number;\n  /**\n   * @desc 大号头像文字大小\n   * @descEN Font size of large Avatar\n   */\n  textFontSizeLG: number;\n  /**\n   * @desc 小号头像文字大小\n   * @descEN Font size of small Avatar\n   */\n  textFontSizeSM: number;\n  /**\n   * @desc 头像组间距\n   * @descEN Spacing between avatars in a group\n   */\n  groupSpace: number;\n  /**\n   * @desc 头像组重叠宽度\n   * @descEN Overlapping of avatars in a group\n   */\n  groupOverlapping: number;\n  /**\n   * @desc 头像组边框颜色\n   * @descEN Border color of avatars in a group\n   */\n  groupBorderColor: string;\n}\n\ntype AvatarToken = FullToken<'Avatar'> & {\n  avatarBg: string;\n  avatarColor: string;\n  avatarBgColor: string;\n};\n\nconst genBaseStyle: GenerateStyle<AvatarToken> = token => {\n  const {\n    antCls,\n    componentCls,\n    iconCls,\n    avatarBg,\n    avatarColor,\n    containerSize,\n    containerSizeLG,\n    containerSizeSM,\n    textFontSize,\n    textFontSizeLG,\n    textFontSizeSM,\n    borderRadius,\n    borderRadiusLG,\n    borderRadiusSM,\n    lineWidth,\n    lineType,\n  } = token;\n\n  // Avatar size style\n  const avatarSizeStyle = (size: number, fontSize: number, radius: number): CSSObject => ({\n    width: size,\n    height: size,\n    lineHeight: `${size - lineWidth * 2}px`,\n    borderRadius: '50%',\n\n    [`&${componentCls}-square`]: {\n      borderRadius: radius,\n    },\n\n    [`${componentCls}-string`]: {\n      position: 'absolute',\n      left: {\n        _skip_check_: true,\n        value: '50%',\n      },\n      transformOrigin: '0 center',\n    },\n\n    [`&${componentCls}-icon`]: {\n      fontSize,\n      [`> ${iconCls}`]: {\n        margin: 0,\n      },\n    },\n  });\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      position: 'relative',\n      display: 'inline-block',\n      overflow: 'hidden',\n      color: avatarColor,\n      whiteSpace: 'nowrap',\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      background: avatarBg,\n      border: `${lineWidth}px ${lineType} transparent`,\n\n      [`&-image`]: {\n        background: 'transparent',\n      },\n\n      [`${antCls}-image-img`]: {\n        display: 'block',\n      },\n\n      ...avatarSizeStyle(containerSize, textFontSize, borderRadius),\n\n      [`&-lg`]: {\n        ...avatarSizeStyle(containerSizeLG, textFontSizeLG, borderRadiusLG),\n      },\n\n      [`&-sm`]: {\n        ...avatarSizeStyle(containerSizeSM, textFontSizeSM, borderRadiusSM),\n      },\n\n      '> img': {\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        objectFit: 'cover',\n      },\n    },\n  };\n};\n\nconst genGroupStyle: GenerateStyle<AvatarToken> = token => {\n  const { componentCls, groupBorderColor, groupOverlapping, groupSpace } = token;\n\n  return {\n    [`${componentCls}-group`]: {\n      display: 'inline-flex',\n\n      [`${componentCls}`]: {\n        borderColor: groupBorderColor,\n      },\n\n      [`> *:not(:first-child)`]: {\n        marginInlineStart: groupOverlapping,\n      },\n    },\n    [`${componentCls}-group-popover`]: {\n      [`${componentCls} + ${componentCls}`]: {\n        marginInlineStart: groupSpace,\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook(\n  'Avatar',\n  token => {\n    const { colorTextLightSolid, colorTextPlaceholder } = token;\n    const avatarToken = mergeToken<AvatarToken>(token, {\n      avatarBg: colorTextPlaceholder,\n      avatarColor: colorTextLightSolid,\n    });\n    return [genBaseStyle(avatarToken), genGroupStyle(avatarToken)];\n  },\n  token => {\n    const {\n      controlHeight,\n      controlHeightLG,\n      controlHeightSM,\n\n      fontSize,\n      fontSizeLG,\n      fontSizeXL,\n      fontSizeHeading3,\n\n      marginXS,\n      marginXXS,\n      colorBorderBg,\n    } = token;\n    return {\n      containerSize: controlHeight,\n      containerSizeLG: controlHeightLG,\n      containerSizeSM: controlHeightSM,\n\n      textFontSize: Math.round((fontSizeLG + fontSizeXL) / 2),\n      textFontSizeLG: fontSizeHeading3,\n      textFontSizeSM: fontSize,\n\n      groupSpace: marginXXS,\n      groupOverlapping: -marginXS,\n      groupBorderColor: colorBorderBg,\n    };\n  },\n);\n"
  },
  {
    "path": "components/badge/Badge.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport ScrollNumber from './ScrollNumber';\nimport classNames from '../_util/classNames';\nimport { getPropsSlot, flattenChildren } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { getTransitionProps } from '../_util/transition';\nimport type { ExtractPropTypes, CSSProperties, PropType } from 'vue';\nimport { defineComponent, computed, ref, watch, Transition } from 'vue';\nimport Ribbon from './Ribbon';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport isNumeric from '../_util/isNumeric';\nimport useStyle from './style';\nimport type { PresetColorKey } from '../theme/interface';\nimport type { LiteralUnion, CustomSlotsType } from '../_util/type';\nimport type { PresetStatusColorType } from '../_util/colors';\nimport { isPresetColor } from '../_util/colors';\n\nexport const badgeProps = () => ({\n  /** Number to show in badge */\n  count: PropTypes.any.def(null),\n  showZero: { type: Boolean, default: undefined },\n  /** Max count to show */\n  overflowCount: { type: Number, default: 99 },\n  /** whether to show red dot without number */\n  dot: { type: Boolean, default: undefined },\n  prefixCls: String,\n  scrollNumberPrefixCls: String,\n  status: { type: String as PropType<PresetStatusColorType> },\n  size: { type: String as PropType<'default' | 'small'>, default: 'default' },\n  color: String as PropType<LiteralUnion<PresetColorKey>>,\n  text: PropTypes.any,\n  offset: Array as unknown as PropType<[number | string, number | string]>,\n  numberStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  title: String,\n});\n\nexport type BadgeProps = Partial<ExtractPropTypes<ReturnType<typeof badgeProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABadge',\n  Ribbon,\n  inheritAttrs: false,\n  props: badgeProps(),\n  slots: Object as CustomSlotsType<{\n    text: any;\n    count: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('badge', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    // ================================ Misc ================================\n    const numberedDisplayCount = computed(() => {\n      return (\n        (props.count as number) > (props.overflowCount as number)\n          ? `${props.overflowCount}+`\n          : props.count\n      ) as string | number | null;\n    });\n\n    const isZero = computed(\n      () => numberedDisplayCount.value === '0' || numberedDisplayCount.value === 0,\n    );\n    const ignoreCount = computed(() => props.count === null || (isZero.value && !props.showZero));\n    const hasStatus = computed(\n      () =>\n        ((props.status !== null && props.status !== undefined) ||\n          (props.color !== null && props.color !== undefined)) &&\n        ignoreCount.value,\n    );\n\n    const showAsDot = computed(() => props.dot && !isZero.value);\n\n    const mergedCount = computed(() => (showAsDot.value ? '' : numberedDisplayCount.value));\n\n    const isHidden = computed(() => {\n      const isEmpty =\n        mergedCount.value === null || mergedCount.value === undefined || mergedCount.value === '';\n      return (isEmpty || (isZero.value && !props.showZero)) && !showAsDot.value;\n    });\n\n    // Count should be cache in case hidden change it\n    const livingCount = ref(props.count);\n\n    // We need cache count since remove motion should not change count display\n    const displayCount = ref(mergedCount.value);\n\n    // We will cache the dot status to avoid shaking on leaved motion\n    const isDotRef = ref(showAsDot.value);\n\n    watch(\n      [() => props.count, mergedCount, showAsDot],\n      () => {\n        if (!isHidden.value) {\n          livingCount.value = props.count;\n          displayCount.value = mergedCount.value;\n          isDotRef.value = showAsDot.value;\n        }\n      },\n      { immediate: true },\n    );\n    // InternalColor\n    const isInternalColor = computed(() => isPresetColor(props.color, false));\n    // Shared styles\n    const statusCls = computed(() => ({\n      [`${prefixCls.value}-status-dot`]: hasStatus.value,\n      [`${prefixCls.value}-status-${props.status}`]: !!props.status,\n      [`${prefixCls.value}-color-${props.color}`]: isInternalColor.value,\n    }));\n\n    const statusStyle = computed(() => {\n      if (props.color && !isInternalColor.value) {\n        return { background: props.color, color: props.color };\n      } else {\n        return {};\n      }\n    });\n\n    const scrollNumberCls = computed(() => ({\n      [`${prefixCls.value}-dot`]: isDotRef.value,\n      [`${prefixCls.value}-count`]: !isDotRef.value,\n      [`${prefixCls.value}-count-sm`]: props.size === 'small',\n      [`${prefixCls.value}-multiple-words`]:\n        !isDotRef.value && displayCount.value && displayCount.value.toString().length > 1,\n      [`${prefixCls.value}-status-${props.status}`]: !!props.status,\n      [`${prefixCls.value}-color-${props.color}`]: isInternalColor.value,\n    }));\n\n    return () => {\n      const { offset, title, color } = props;\n      const style = attrs.style as CSSProperties;\n      const text = getPropsSlot(slots, props, 'text');\n      const pre = prefixCls.value;\n      const count = livingCount.value;\n      let children = flattenChildren(slots.default?.());\n      children = children.length ? children : null;\n\n      const visible = !!(!isHidden.value || slots.count);\n\n      // =============================== Styles ===============================\n      const mergedStyle = (() => {\n        if (!offset) {\n          return { ...style };\n        }\n\n        const offsetStyle: CSSProperties = {\n          marginTop: isNumeric(offset[1]) ? `${offset[1]}px` : offset[1],\n        };\n        if (direction.value === 'rtl') {\n          offsetStyle.left = `${parseInt(offset[0] as string, 10)}px`;\n        } else {\n          offsetStyle.right = `${-parseInt(offset[0] as string, 10)}px`;\n        }\n\n        return {\n          ...offsetStyle,\n          ...style,\n        };\n      })();\n\n      // =============================== Render ===============================\n      // >>> Title\n      const titleNode =\n        title ?? (typeof count === 'string' || typeof count === 'number' ? count : undefined);\n\n      // >>> Status Text\n      const statusTextNode =\n        visible || !text ? null : <span class={`${pre}-status-text`}>{text}</span>;\n\n      // >>> Display Component\n      const displayNode =\n        typeof count === 'object' || (count === undefined && slots.count)\n          ? cloneElement(\n              count ?? slots.count?.(),\n              {\n                style: mergedStyle,\n              },\n              false,\n            )\n          : null;\n\n      const badgeClassName = classNames(\n        pre,\n        {\n          [`${pre}-status`]: hasStatus.value,\n          [`${pre}-not-a-wrapper`]: !children,\n          [`${pre}-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      // <Badge status=\"success\" />\n      if (!children && hasStatus.value) {\n        const statusTextColor = mergedStyle.color;\n        return wrapSSR(\n          <span {...attrs} class={badgeClassName} style={mergedStyle}>\n            <span class={statusCls.value} style={statusStyle.value} />\n            <span style={{ color: statusTextColor }} class={`${pre}-status-text`}>\n              {text}\n            </span>\n          </span>,\n        );\n      }\n\n      const transitionProps = getTransitionProps(children ? `${pre}-zoom` : '', {\n        appear: false,\n      });\n      let scrollNumberStyle: CSSProperties = { ...mergedStyle, ...(props.numberStyle as object) };\n      if (color && !isInternalColor.value) {\n        scrollNumberStyle = scrollNumberStyle || {};\n        scrollNumberStyle.background = color;\n      }\n\n      return wrapSSR(\n        <span {...attrs} class={badgeClassName}>\n          {children}\n          <Transition {...transitionProps}>\n            <ScrollNumber\n              v-show={visible}\n              prefixCls={props.scrollNumberPrefixCls}\n              show={visible}\n              class={scrollNumberCls.value}\n              count={displayCount.value}\n              title={titleNode}\n              style={scrollNumberStyle}\n              key=\"scrollNumber\"\n            >\n              {displayNode}\n            </ScrollNumber>\n          </Transition>\n          {statusTextNode}\n        </span>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/badge/Ribbon.tsx",
    "content": "import type { CustomSlotsType, LiteralUnion } from '../_util/type';\nimport type { PresetColorType } from '../_util/colors';\nimport useStyle from './style';\nimport { isPresetColor } from '../_util/colors';\nimport type { CSSProperties, PropType, ExtractPropTypes } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nexport const ribbonProps = () => ({\n  prefix: String,\n  color: { type: String as PropType<LiteralUnion<PresetColorType>> },\n  text: PropTypes.any,\n  placement: { type: String as PropType<'start' | 'end'>, default: 'end' },\n});\n\nexport type RibbonProps = Partial<ExtractPropTypes<ReturnType<typeof ribbonProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABadgeRibbon',\n  inheritAttrs: false,\n  props: ribbonProps(),\n  slots: Object as CustomSlotsType<{\n    text: any;\n    default: any;\n  }>,\n  setup(props, { attrs, slots }) {\n    const { prefixCls, direction } = useConfigInject('ribbon', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const colorInPreset = computed(() => isPresetColor(props.color, false));\n    const ribbonCls = computed(() => [\n      prefixCls.value,\n      `${prefixCls.value}-placement-${props.placement}`,\n      {\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [`${prefixCls.value}-color-${props.color}`]: colorInPreset.value,\n      },\n    ]);\n    return () => {\n      const { class: className, style, ...restAttrs } = attrs;\n      const colorStyle: CSSProperties = {};\n      const cornerColorStyle: CSSProperties = {};\n      if (props.color && !colorInPreset.value) {\n        colorStyle.background = props.color;\n        cornerColorStyle.color = props.color;\n      }\n      return wrapSSR(\n        <div class={`${prefixCls.value}-wrapper ${hashId.value}`} {...restAttrs}>\n          {slots.default?.()}\n          <div\n            class={[ribbonCls.value, className, hashId.value]}\n            style={{ ...colorStyle, ...(style as CSSProperties) }}\n          >\n            <span class={`${prefixCls.value}-text`}>{props.text || slots.text?.()}</span>\n            <div class={`${prefixCls.value}-corner`} style={cornerColorStyle} />\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/badge/ScrollNumber.tsx",
    "content": "import classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport type { ExtractPropTypes, CSSProperties, DefineComponent, HTMLAttributes } from 'vue';\nimport { defineComponent } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport SingleNumber from './SingleNumber';\nimport { filterEmpty } from '../_util/props-util';\n\nconst scrollNumberProps = {\n  prefixCls: String,\n  count: PropTypes.any,\n  component: String,\n  title: PropTypes.any,\n  show: Boolean,\n};\n\nexport type ScrollNumberProps = Partial<ExtractPropTypes<typeof scrollNumberProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ScrollNumber',\n  inheritAttrs: false,\n  props: scrollNumberProps,\n  setup(props, { attrs, slots }) {\n    const { prefixCls } = useConfigInject('scroll-number', props);\n\n    return () => {\n      const {\n        prefixCls: customizePrefixCls,\n        count,\n        title,\n        show,\n        component: Tag = 'sup' as unknown as DefineComponent,\n        class: className,\n        style,\n        ...restProps\n      } = { ...props, ...attrs } as ScrollNumberProps & HTMLAttributes & { style: CSSProperties };\n      // ============================ Render ============================\n      const newProps = {\n        ...restProps,\n        style,\n        'data-show': props.show,\n        class: classNames(prefixCls.value, className),\n        title: title as string,\n      };\n\n      // Only integer need motion\n      let numberNodes: any = count;\n      if (count && Number(count) % 1 === 0) {\n        const numberList = String(count).split('');\n\n        numberNodes = numberList.map((num, i) => (\n          <SingleNumber\n            prefixCls={prefixCls.value}\n            count={Number(count)}\n            value={num}\n            key={numberList.length - i}\n          />\n        ));\n      }\n\n      // allow specify the border\n      // mock border-color by box-shadow for compatible with old usage:\n      // <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />\n      if (style && style.borderColor) {\n        newProps.style = {\n          ...(style as CSSProperties),\n          boxShadow: `0 0 0 1px ${style.borderColor} inset`,\n        };\n      }\n      const children = filterEmpty(slots.default?.());\n      if (children && children.length) {\n        return cloneElement(\n          children,\n          {\n            class: classNames(`${prefixCls.value}-custom-component`),\n          },\n          false,\n        );\n      }\n\n      return <Tag {...newProps}>{numberNodes}</Tag>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/badge/SingleNumber.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { computed, defineComponent, onUnmounted, reactive, ref, watch } from 'vue';\nimport classNames from '../_util/classNames';\n\nexport interface UnitNumberProps {\n  prefixCls: string;\n  value: string | number;\n  offset?: number;\n  current?: boolean;\n}\n\nfunction UnitNumber({ prefixCls, value, current, offset = 0 }: UnitNumberProps) {\n  let style: CSSProperties | undefined;\n\n  if (offset) {\n    style = {\n      position: 'absolute',\n      top: `${offset}00%`,\n      left: 0,\n    };\n  }\n\n  return (\n    <p\n      style={style}\n      class={classNames(`${prefixCls}-only-unit`, {\n        current,\n      })}\n    >\n      {value}\n    </p>\n  );\n}\n\nfunction getOffset(start: number, end: number, unit: -1 | 1) {\n  let index = start;\n  let offset = 0;\n\n  while ((index + 10) % 10 !== end) {\n    index += unit;\n    offset += unit;\n  }\n\n  return offset;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'SingleNumber',\n  props: {\n    prefixCls: String,\n    value: String,\n    count: Number,\n  },\n  setup(props) {\n    const originValue = computed(() => Number(props.value));\n    const originCount = computed(() => Math.abs(props.count));\n    const state = reactive({\n      prevValue: originValue.value,\n      prevCount: originCount.value,\n    });\n\n    // ============================= Events =============================\n    const onTransitionEnd = () => {\n      state.prevValue = originValue.value;\n      state.prevCount = originCount.value;\n    };\n    const timeout = ref();\n    // Fallback if transition event not support\n    watch(\n      originValue,\n      () => {\n        clearTimeout(timeout.value);\n        timeout.value = setTimeout(() => {\n          onTransitionEnd();\n        }, 1000);\n      },\n      { flush: 'post' },\n    );\n    onUnmounted(() => {\n      clearTimeout(timeout.value);\n    });\n\n    return () => {\n      let unitNodes: any[];\n      let offsetStyle: CSSProperties = {};\n      const value = originValue.value;\n      if (state.prevValue === value || Number.isNaN(value) || Number.isNaN(state.prevValue)) {\n        // Nothing to change\n        unitNodes = [UnitNumber({ ...props, current: true } as UnitNumberProps)];\n        offsetStyle = {\n          transition: 'none',\n        };\n      } else {\n        unitNodes = [];\n\n        // Fill basic number units\n        const end = value + 10;\n        const unitNumberList: number[] = [];\n        for (let index = value; index <= end; index += 1) {\n          unitNumberList.push(index);\n        }\n\n        // Fill with number unit nodes\n        const prevIndex = unitNumberList.findIndex(n => n % 10 === state.prevValue);\n        unitNodes = unitNumberList.map((n, index) => {\n          const singleUnit = n % 10;\n          return UnitNumber({\n            ...props,\n            value: singleUnit,\n            offset: index - prevIndex,\n            current: index === prevIndex,\n          } as UnitNumberProps);\n        });\n\n        // Calculate container offset value\n        const unit = state.prevCount < originCount.value ? 1 : -1;\n        offsetStyle = {\n          transform: `translateY(${-getOffset(state.prevValue, value, unit)}00%)`,\n        };\n      }\n      return (\n        <span\n          class={`${props.prefixCls}-only`}\n          style={offsetStyle}\n          onTransitionend={() => onTransitionEnd()}\n        >\n          {unitNodes}\n        </span>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/badge/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/badge/demo/basic.vue correctly 1`] = `\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"5\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n<!----></span>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"0\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">0</p></span></sup>\n<!----></span>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><span role=\"img\" aria-label=\"clock-circle\" style=\"color: rgb(245, 34, 45);\" class=\"anticon anticon-clock-circle ant-scroll-number-custom-component\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n<!----></span>\n`;\n\nexports[`renders ./components/badge/demo/change.vue correctly 1`] = `\n<div><span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"5\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n  <!----></span>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"minus\" class=\"anticon anticon-minus\"><svg focusable=\"false\" class=\"\" data-icon=\"minus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"></path></svg></span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span>\n    </button></div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-dot\"></sup>\n<!----></span>\n<button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n  <div class=\"ant-switch-handle\">\n    <!---->\n  </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n</button>\n`;\n\nexports[`renders ./components/badge/demo/colors.vue correctly 1`] = `\n<h4 style=\"margin-bottom: 16px;\">Presets:</h4>\n<div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-pink\"></span><span class=\"ant-badge-status-text\">pink</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-red\"></span><span class=\"ant-badge-status-text\">red</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-yellow\"></span><span class=\"ant-badge-status-text\">yellow</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-orange\"></span><span class=\"ant-badge-status-text\">orange</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-cyan\"></span><span class=\"ant-badge-status-text\">cyan</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-green\"></span><span class=\"ant-badge-status-text\">green</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-blue\"></span><span class=\"ant-badge-status-text\">blue</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-purple\"></span><span class=\"ant-badge-status-text\">purple</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-geekblue\"></span><span class=\"ant-badge-status-text\">geekblue</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-magenta\"></span><span class=\"ant-badge-status-text\">magenta</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-volcano\"></span><span class=\"ant-badge-status-text\">volcano</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-gold\"></span><span class=\"ant-badge-status-text\">gold</span></span></div>\n  <div><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-color-lime\"></span><span class=\"ant-badge-status-text\">lime</span></span></div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Custom</span></div>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot\" style=\"background: rgb(255, 85, 0); color: rgb(255, 85, 0);\"></span><span class=\"ant-badge-status-text\">#f50</span></span>\n<br>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot\" style=\"background: rgb(45, 183, 245); color: rgb(45, 183, 245);\"></span><span class=\"ant-badge-status-text\">#2db7f5</span></span>\n<br>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot\" style=\"background: rgb(135, 208, 104); color: rgb(135, 208, 104);\"></span><span class=\"ant-badge-status-text\">#87d068</span></span>\n<br>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot\" style=\"background: rgb(16, 142, 233); color: rgb(16, 142, 233);\"></span><span class=\"ant-badge-status-text\">#108ee9</span></span>\n`;\n\nexports[`renders ./components/badge/demo/dot.vue correctly 1`] = `\n<span class=\"ant-badge\"><span role=\"img\" aria-label=\"notification\" style=\"font-size: 16px;\" class=\"anticon anticon-notification\"><svg focusable=\"false\" class=\"\" data-icon=\"notification\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"></path></svg></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-dot\"></sup>\n<!----></span>\n<span class=\"ant-badge\"><a href=\"#\">Link something</a><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-dot\"></sup><!----></span>\n`;\n\nexports[`renders ./components/badge/demo/link.vue correctly 1`] = `\n<a href=\"#\"><span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"5\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n  <!----></span>\n</a>\n`;\n\nexports[`renders ./components/badge/demo/no-wrapper.vue correctly 1`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"25\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">2</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n<!----></span>\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup style=\"background-color: rgb(255, 255, 255); color: rgb(153, 153, 153); box-shadow: 0 0 0 1px #d9d9d9 inset;\" data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"4\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">4</p></span></sup>\n<!----></span>\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup style=\"background-color: rgb(82, 196, 26);\" data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"109\">99+</sup><!----></span>\n`;\n\nexports[`renders ./components/badge/demo/overflow.vue correctly 1`] = `\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"99\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">9</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">9</p></span></sup>\n<!----></span>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"100\">99+</sup>\n<!----></span>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"99\">10+</sup>\n<!----></span>\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"1000\">999+</sup>\n<!----></span>\n`;\n\nexports[`renders ./components/badge/demo/ribbon.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-pink\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-red\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-cyan\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-green\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-purple\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-volcano\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-ribbon-wrapper \">\n      <div class=\"ant-card  ant-card-bordered ant-card-small\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Pushes open the window</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">and raises the spyglass.</div>\n        <!---->\n      </div>\n      <div class=\"ant-ribbon ant-ribbon-placement-end ant-ribbon-color-magenta\"><span class=\"ant-ribbon-text\">Hippies</span>\n        <div class=\"ant-ribbon-corner\"></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/badge/demo/status.vue correctly 1`] = `\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\"><!----></span></span>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\"><!----></span></span>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-default\"></span><span class=\"ant-badge-status-text\"><!----></span></span>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-processing\"></span><span class=\"ant-badge-status-text\"><!----></span></span>\n<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\"><!----></span></span>\n<br>\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">Success</span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">Error</span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-default\"></span><span class=\"ant-badge-status-text\">Default</span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-processing\"></span><span class=\"ant-badge-status-text\">Processing</span></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">warning</span></span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/badge/demo/title.vue correctly 1`] = `\n<span class=\"ant-badge\"><span class=\"ant-avatar ant-avatar-lg ant-avatar-square\"><span class=\"ant-avatar-string\" style=\"opacity: 0;\"><!----></span></span><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"Custom hover text\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n<!----></span>\n`;\n"
  },
  {
    "path": "components/badge/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Badge badge should support float number 1`] = `\"3.5\"`;\n\nexports[`Badge badge should support float number 2`] = `<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"3.5\">3.5</sup><!----></span>`;\n\nexports[`Badge render correct with negative number 1`] = `\n<div><span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"-10\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">-</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">0</p></span></sup>\n  <!----></span><span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"-10\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">-</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">0</p></span></sup>\n  <!----></span>\n</div>\n`;\n\nexports[`Badge should be compatible with borderColor style 1`] = `\n<span style=\"background-color: rgb(255, 255, 255); color: rgb(153, 153, 153); border-color: #d9d9d9;\" class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup style=\"background-color: rgb(255, 255, 255); color: rgb(153, 153, 153); border-color: #d9d9d9; box-shadow: 0 0 0 1px #d9d9d9 inset;\" data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"4\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">4</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should render when count is changed 1`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"10\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transform: translateY(-100%);\"><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: -900%; left: 0px;\">0</p><p style=\"position: absolute; top: -800%; left: 0px;\" class=\"ant-scroll-number-only-unit\">1</p><p style=\"position: absolute; top: -700%; left: 0px;\" class=\"ant-scroll-number-only-unit\">2</p><p style=\"position: absolute; top: -600%; left: 0px;\" class=\"ant-scroll-number-only-unit\">3</p><p style=\"position: absolute; top: -500%; left: 0px;\" class=\"ant-scroll-number-only-unit\">4</p><p style=\"position: absolute; top: -400%; left: 0px;\" class=\"ant-scroll-number-only-unit\">5</p><p style=\"position: absolute; top: -300%; left: 0px;\" class=\"ant-scroll-number-only-unit\">6</p><p style=\"position: absolute; top: -200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">7</p><p style=\"position: absolute; top: -100%; left: 0px;\" class=\"ant-scroll-number-only-unit\">8</p><p class=\"ant-scroll-number-only-unit current\">9</p><p style=\"position: absolute; top: 100%; left: 0px;\" class=\"ant-scroll-number-only-unit\">0</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should render when count is changed 2`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"11\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transform: translateY(-200%);\"><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: -800%; left: 0px;\">1</p><p style=\"position: absolute; top: -700%; left: 0px;\" class=\"ant-scroll-number-only-unit\">2</p><p style=\"position: absolute; top: -600%; left: 0px;\" class=\"ant-scroll-number-only-unit\">3</p><p style=\"position: absolute; top: -500%; left: 0px;\" class=\"ant-scroll-number-only-unit\">4</p><p style=\"position: absolute; top: -400%; left: 0px;\" class=\"ant-scroll-number-only-unit\">5</p><p style=\"position: absolute; top: -300%; left: 0px;\" class=\"ant-scroll-number-only-unit\">6</p><p style=\"position: absolute; top: -200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">7</p><p style=\"position: absolute; top: -100%; left: 0px;\" class=\"ant-scroll-number-only-unit\">8</p><p class=\"ant-scroll-number-only-unit current\">9</p><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: 100%; left: 0px;\">0</p><p style=\"position: absolute; top: 200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">1</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should render when count is changed 3`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"11\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transform: translateY(-200%);\"><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: -800%; left: 0px;\">1</p><p style=\"position: absolute; top: -700%; left: 0px;\" class=\"ant-scroll-number-only-unit\">2</p><p style=\"position: absolute; top: -600%; left: 0px;\" class=\"ant-scroll-number-only-unit\">3</p><p style=\"position: absolute; top: -500%; left: 0px;\" class=\"ant-scroll-number-only-unit\">4</p><p style=\"position: absolute; top: -400%; left: 0px;\" class=\"ant-scroll-number-only-unit\">5</p><p style=\"position: absolute; top: -300%; left: 0px;\" class=\"ant-scroll-number-only-unit\">6</p><p style=\"position: absolute; top: -200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">7</p><p style=\"position: absolute; top: -100%; left: 0px;\" class=\"ant-scroll-number-only-unit\">8</p><p class=\"ant-scroll-number-only-unit current\">9</p><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: 100%; left: 0px;\">0</p><p style=\"position: absolute; top: 200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">1</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should render when count is changed 4`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"10\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transform: translateY(-100%);\"><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: -900%; left: 0px;\">0</p><p style=\"position: absolute; top: -800%; left: 0px;\" class=\"ant-scroll-number-only-unit\">1</p><p style=\"position: absolute; top: -700%; left: 0px;\" class=\"ant-scroll-number-only-unit\">2</p><p style=\"position: absolute; top: -600%; left: 0px;\" class=\"ant-scroll-number-only-unit\">3</p><p style=\"position: absolute; top: -500%; left: 0px;\" class=\"ant-scroll-number-only-unit\">4</p><p style=\"position: absolute; top: -400%; left: 0px;\" class=\"ant-scroll-number-only-unit\">5</p><p style=\"position: absolute; top: -300%; left: 0px;\" class=\"ant-scroll-number-only-unit\">6</p><p style=\"position: absolute; top: -200%; left: 0px;\" class=\"ant-scroll-number-only-unit\">7</p><p class=\"ant-scroll-number-only-unit\" style=\"position: absolute; top: -100%; left: 0px;\">8</p><p class=\"ant-scroll-number-only-unit current\">9</p><p style=\"position: absolute; top: 100%; left: 0px;\" class=\"ant-scroll-number-only-unit\">0</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should render when count is changed 5`] = `\n<span class=\"ant-badge ant-badge-not-a-wrapper\"><!----><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"9\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">9</p></span></sup>\n<!----></span>\n`;\n\nexports[`Badge should support offset when count is a VueNode 1`] = `\n<span class=\"ant-badge\"><a href=\"#\" class=\"head-example\">head</a><span class=\"custom ant-scroll-number-custom-component\" style=\"color: rgb(245, 34, 45); margin-top: 20px; right: -10px;\"></span>\n<!----></span>\n`;\n\nexports[`Badge text works with vnode 1`] = `<span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\"><span>hello</span></span></span>`;\n"
  },
  {
    "path": "components/badge/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('badge');\n"
  },
  {
    "path": "components/badge/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Badge from '../index';\nimport mountTest from '../../../tests/shared/mountTest';\n\nimport { asyncExpect } from '../../../tests/utils';\ndescribe('Badge', () => {\n  it('badge dot not scaling count > 9', () => {\n    const badge = mount({\n      render() {\n        return <Badge count={10} dot />;\n      },\n    });\n    expect(badge.findAll('.ant-card-multiple-words').length).toBe(0);\n  });\n  it('badge should support float number', () => {\n    let wrapper = mount({\n      render() {\n        return <Badge count={3.5} />;\n      },\n    });\n    expect(wrapper.text()).toMatchSnapshot();\n    wrapper = mount({\n      render() {\n        return <Badge count={3.5} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  it('badge dot not showing count == 0', () => {\n    const badge = mount({\n      render() {\n        return <Badge count={0} dot />;\n      },\n    });\n    expect(badge.findAll('.ant-badge-dot').length).toBe(0);\n  });\n\n  it('should have an overriden title attribute', () => {\n    const badge = mount({\n      render() {\n        return <Badge count={10} title=\"Custom title\" />;\n      },\n    });\n    expect(badge.find('.ant-scroll-number').element.attributes.getNamedItem('title').value).toEqual(\n      'Custom title',\n    );\n  });\n\n  // https://github.com/ant-design/ant-design/issues/10626\n  // it('should be composable with Tooltip', async () => {\n  //   const wrapper = mount({\n  //     render () {\n  //       return <Tooltip ref='tooltip' title='Fix the error'>\n  //         <Badge status='error' />\n  //       </Tooltip>\n  //     },\n  //   }, { sync: false })\n  //   await asyncExpect(() => {\n  //     wrapper.find({ name: 'ABadge' }).trigger('mouseenter')\n  //   }, 0)\n\n  //   expect(wrapper.vm.$refs.tooltip.sVisible).toBe(true)\n  // })\n\n  it('should render when count is changed', async () => {\n    const wrapper = mount(Badge, {\n      props: {\n        count: 9,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.setProps({ count: 10 });\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      wrapper.setProps({ count: 11 });\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      wrapper.setProps({ count: 11 });\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      wrapper.setProps({ count: 10 });\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      wrapper.setProps({ count: 9 });\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    }, 100);\n  });\n\n  it('should be compatible with borderColor style', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Badge\n            count={4}\n            style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }}\n          />\n        );\n      },\n    });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  // https://github.com/ant-design/ant-design/issues/13694\n  it('should support offset when count is a VueNode', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Badge count={<span class=\"custom\" style={{ color: '#f5222d' }} />} offset={[10, 20]}>\n            <a href=\"#\" class=\"head-example\">\n              head\n            </a>\n          </Badge>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  // https://github.com/ant-design/ant-design/issues/15799\n  it('render correct with negative number', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <div>\n            <Badge count=\"-10\" />\n            <Badge count={-10} />\n          </div>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('text works with vnode', () => {\n    const wrapper = mount({\n      render() {\n        return <Badge status=\"success\" text={<span>hello</span>} />;\n      },\n    });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n\ndescribe('Ribbon', () => {\n  mountTest(Badge.Ribbon);\n\n  describe('placement', () => {\n    it('works with `start` & `end` placement', () => {\n      const wrapperStart = mount({\n        render() {\n          return (\n            <Badge.Ribbon placement=\"start\">\n              <div />\n            </Badge.Ribbon>\n          );\n        },\n      });\n\n      expect(wrapperStart.findAll('.ant-ribbon-placement-start').length).toEqual(1);\n\n      const wrapperEnd = mount({\n        render() {\n          return (\n            <Badge.Ribbon placement=\"end\">\n              <div />\n            </Badge.Ribbon>\n          );\n        },\n      });\n      expect(wrapperEnd.findAll('.ant-ribbon-placement-end').length).toEqual(1);\n    });\n  });\n\n  describe('color', () => {\n    it('works with preset color', () => {\n      const wrapper = mount({\n        render() {\n          return (\n            <Badge.Ribbon color=\"green\">\n              <div />\n            </Badge.Ribbon>\n          );\n        },\n      });\n      expect(wrapper.findAll('.ant-ribbon-color-green').length).toEqual(1);\n    });\n  });\n\n  describe('text', () => {\n    it('works with string', () => {\n      const wrapper = mount({\n        render() {\n          return (\n            <Badge.Ribbon text=\"cool\">\n              <div />\n            </Badge.Ribbon>\n          );\n        },\n      });\n      expect(wrapper.find('.ant-ribbon').text()).toEqual('cool');\n    });\n    it('works with element', () => {\n      const wrapper = mount({\n        render() {\n          return (\n            <Badge.Ribbon text={<span class=\"cool\" />}>\n              <div />\n            </Badge.Ribbon>\n          );\n        },\n      });\n      expect(wrapper.findAll('.cool').length).toEqual(1);\n    });\n  });\n});\n"
  },
  {
    "path": "components/badge/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n简单的徽章展示，当 `count` 为 `0` 时，默认不显示，但是可以使用 `showZero` 修改为显示。\n\n## en-US\n\nSimplest Usage. Badge will be hidden when `count` is `0`, but we can use `showZero` to show it.\n\n</docs>\n<template>\n  <a-badge count=\"5\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-badge count=\"0\" show-zero>\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-badge>\n    <template #count>\n      <clock-circle-outlined style=\"color: #f5222d\" />\n    </template>\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/badge/demo/change.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 动态\n  en-US: Dynamic\n---\n\n## zh-CN\n\n展示动态变化的效果。\n\n## en-US\n\nThe count will be animated as it changes.\n</docs>\n\n<template>\n  <div>\n    <a-badge :count=\"count\">\n      <a-avatar shape=\"square\" size=\"large\" />\n    </a-badge>\n    <a-button-group>\n      <a-button @click=\"decline\">\n        <minus-outlined />\n      </a-button>\n      <a-button @click=\"increase\">\n        <plus-outlined />\n      </a-button>\n    </a-button-group>\n  </div>\n  <a-divider />\n  <a-badge :dot=\"show\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-switch v-model:checked=\"show\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons-vue';\nconst count = ref<number>(5);\nconst show = ref<boolean>(true);\nconst decline = () => {\n  if (count.value >= 1) {\n    count.value--;\n  }\n};\n\nconst increase = () => {\n  count.value++;\n};\n</script>\n"
  },
  {
    "path": "components/badge/demo/colors.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 多彩徽标\n  en-US: Colorful Badge\n---\n\n## zh-CN\n\n1.5.0 后新增。我们添加了多种预设色彩的徽标样式，用作不同场景使用。如果预设值不能满足你的需求，可以设置为具体的色值。\n\n## en-US\n\nNew feature after 3.16.0. We preset a series of colorful Badge styles for use in different situations. You can also set it to a hex color string for custom color.\n\n</docs>\n\n<template>\n  <h4 style=\"margin-bottom: 16px\">Presets:</h4>\n  <div>\n    <div v-for=\"color in colors\" :key=\"color\">\n      <a-badge :color=\"color\" :text=\"color\" />\n    </div>\n  </div>\n  <a-divider orientation=\"left\">Custom</a-divider>\n  <a-badge color=\"#f50\" text=\"#f50\" />\n  <br />\n  <a-badge color=\"#2db7f5\" text=\"#2db7f5\" />\n  <br />\n  <a-badge color=\"#87d068\" text=\"#87d068\" />\n  <br />\n  <a-badge color=\"#108ee9\" text=\"#108ee9\" />\n</template>\n<script lang=\"ts\" setup>\nconst colors = [\n  'pink',\n  'red',\n  'yellow',\n  'orange',\n  'cyan',\n  'green',\n  'blue',\n  'purple',\n  'geekblue',\n  'magenta',\n  'volcano',\n  'gold',\n  'lime',\n];\n</script>\n"
  },
  {
    "path": "components/badge/demo/dot.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 讨嫌的小红点\n  en-US: Red badge\n---\n\n## zh-CN\n\n没有具体的数字。\n\n## en-US\n\nThis will simply display a red badge, without a specific count.\nIf count equals 0, it won't display the dot.\n</docs>\n\n<template>\n  <a-badge dot>\n    <notification-outlined style=\"font-size: 16px\" />\n  </a-badge>\n  <a-badge dot>\n    <a href=\"#\">Link something</a>\n  </a-badge>\n</template>\n<script lang=\"ts\" setup>\nimport { NotificationOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/badge/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <NoWapper />\n    <Overflow />\n    <Dot />\n    <Status />\n    <Change />\n    <Title />\n    <Colors />\n    <Ribbon />\n    <Link />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport NoWapper from './no-wrapper.vue';\nimport Dot from './dot.vue';\nimport Change from './change.vue';\nimport Overflow from './overflow.vue';\nimport Status from './status.vue';\nimport Title from './title.vue';\nimport Colors from './colors.vue';\nimport Link from './link.vue';\nimport Ribbon from './ribbon.vue';\nimport CN from './../index.zh-CN.md';\nimport US from './../index.en_US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    NoWapper,\n    Overflow,\n    Dot,\n    Status,\n    Change,\n    Title,\n    Colors,\n    Link,\n    Ribbon,\n  },\n});\n</script>\n\n<style>\n[id^='components-badge-demo-'] .ant-badge:not(.ant-badge-not-a-wrapper) {\n  margin-right: 20px;\n}\n[id^='components-badge-demo-'] .head-example {\n  width: 42px;\n  height: 42px;\n  border-radius: 4px;\n  background: #eee;\n  display: inline-block;\n  vertical-align: middle;\n}\n[id^='components-badge-demo-'] .ant-badge-not-a-wrapper:not(.ant-badge-status) {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/badge/demo/link.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 可点击\n  en-US: Clickable\n---\n\n## zh-CN\n\n用 a 标签进行包裹即可。\n\n## en-US\nThe badge can be wrapped with `a` tag to make it linkable.\n\n</docs>\n\n<template>\n  <a href=\"#\">\n    <a-badge count=\"5\">\n      <a-avatar shape=\"square\" size=\"large\" />\n    </a-badge>\n  </a>\n</template>\n"
  },
  {
    "path": "components/badge/demo/no-wrapper.vue",
    "content": "<docs>\n---\norder: 1\ntitle: \n  zh-CN: 独立使用\n  en-US: Standalone\n---\n\n## zh-CN\n\n不包裹任何元素即是独立使用，可自定样式展现。\n在右上角的 badge 则限定为红色。\n\n## en-US\n\nUsed in standalone when children is empty.\n\n</docs>\n\n<template>\n  <a-badge count=\"25\" />\n  <a-badge\n    count=\"4\"\n    :number-style=\"{\n      backgroundColor: '#fff',\n      color: '#999',\n      boxShadow: '0 0 0 1px #d9d9d9 inset',\n    }\"\n  />\n  <a-badge count=\"109\" :number-style=\"{ backgroundColor: '#52c41a' }\" />\n</template>\n"
  },
  {
    "path": "components/badge/demo/overflow.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 封顶数字\n  en-US: Overflow Count\n---\n\n## zh-CN\n\n超过 `overflowCount` 的会显示为 `${overflowCount}+`，默认的 `overflowCount` 为 `99`。\n\n## en-US\n\n`${overflowCount}+` is displayed when count is larger than `overflowCount`. The default value of `overflowCount` is `99`.\n\n</docs>\n\n<template>\n  <a-badge :count=\"99\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-badge :count=\"100\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-badge :count=\"99\" :overflow-count=\"10\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n  <a-badge :count=\"1000\" :overflow-count=\"999\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n</template>\n"
  },
  {
    "path": "components/badge/demo/ribbon.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 缎带\n  en-US: Ribbon\n---\n\n## zh-CN\n使用缎带型的徽标。\n\n## en-US\n\nUse ribbon badge.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-badge-ribbon text=\"Hippies\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"pink\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"red\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"cyan\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"green\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"purple\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"volcano\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n    <a-badge-ribbon text=\"Hippies\" color=\"magenta\">\n      <a-card title=\"Pushes open the window\" size=\"small\">and raises the spyglass.</a-card>\n    </a-badge-ribbon>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/badge/demo/status.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 状态点\n  en-US: Status\n---\n\n## zh-CN\n\n用于表示状态的小圆点。\n\n## en-US\n\nStandalone badge with status.\n</docs>\n\n<template>\n  <a-badge status=\"success\" />\n  <a-badge status=\"error\" />\n  <a-badge status=\"default\" />\n  <a-badge status=\"processing\" />\n  <a-badge status=\"warning\" />\n  <br />\n\n  <a-space direction=\"vertical\">\n    <a-badge status=\"success\" text=\"Success\" />\n    <a-badge status=\"error\" text=\"Error\" />\n    <a-badge status=\"default\" text=\"Default\" />\n    <a-badge status=\"processing\" text=\"Processing\" />\n    <a-badge status=\"warning\" text=\"warning\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/badge/demo/title.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 自定义标题\n  en-US: Title\n---\n\n## zh-CN\n\n设置鼠标放在状态点上时显示的文字\n\n## en-US\n\nThe badge will display `title` when hovered over, instead of `count`.\n\n</docs>\n\n<template>\n  <a-badge :count=\"5\" title=\"Custom hover text\">\n    <a-avatar shape=\"square\" size=\"large\" />\n  </a-badge>\n</template>\n"
  },
  {
    "path": "components/badge/index.en_US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Badge\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*e0qITYqF394AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*v8EQT7KoGbcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nSmall numerical value or status descriptor for UI elements.\n\n## When To Use\n\nBadge normally appears in proximity to notifications or user avatars with eye-catching appeal, typically displaying unread messages count.\n\n## API\n\n```html\n<a-badge :count=\"5\">\n  <a href=\"#\" class=\"head-example\" />\n</a-badge>\n```\n\n```html\n<a-badge :count=\"5\" />\n```\n\n### Badge\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| color | Customize Badge dot color | string | - | 1.5.0 |\n| count | Number to show in badge | number\\|string \\| slot |  |  |\n| dot | Whether to display a red dot instead of `count` | boolean | `false` |  |\n| offset | set offset of the badge dot, like [x, y] | [number\\|string, number\\|string] | - |  |\n| overflowCount | Max count to show | number | 99 |  |\n| showZero | Whether to show badge when `count` is zero | boolean | `false` |  |\n| status | Set Badge as a status dot | `success` \\| `processing` \\| `default` \\| `error` \\| `warning` | `''` |  |\n| text | If `status` is set, `text` sets the display text of the status `dot` | string | `''` |  |\n| numberStyle | sets the display style of the status `dot` | object | '' |  |\n| title | Text to show when hovering over the badge | string | `count` |  |\n\n### Badge.Ribbon (2.0.1+)\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| color | Customize Ribbon color | string | - |  |\n| placement | The placement of the Ribbon, `start` and `end` follow text direction (RTL or LTR) | `start` \\| `end` | `end` |  |\n| text | Content inside the Ribbon | string \\| VNode \\| slot | - |  |\n"
  },
  {
    "path": "components/badge/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Badge from './Badge';\nimport Ribbon from './Ribbon';\nexport type { BadgeProps } from './Badge';\n\nBadge.install = function (app: App) {\n  app.component(Badge.name, Badge);\n  app.component(Ribbon.name, Ribbon);\n  return app;\n};\n\nexport { Ribbon as BadgeRibbon };\n\nexport default Badge as typeof Badge &\n  Plugin & {\n    readonly Ribbon: typeof Ribbon;\n  };\n"
  },
  {
    "path": "components/badge/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Badge\nsubtitle: 徽标数\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*e0qITYqF394AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*v8EQT7KoGbcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n图标右上角的圆形徽标数字。\n\n## 何时使用\n\n一般出现在通知图标或头像的右上角，用于显示需要处理的消息条数，通过醒目视觉形式吸引用户处理。\n\n## API\n\n```html\n<a-badge :count=\"5\">\n  <a href=\"#\" class=\"head-example\" />\n</a-badge>\n```\n\n```html\n<a-badge :count=\"5\" />\n```\n\n### Badge\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| color | 自定义小圆点的颜色 | string | - | 1.5.0 |\n| count | 展示的数字，大于 overflowCount 时显示为 `${overflowCount}+`，为 0 时隐藏 | number \\| string \\| slot |  |  |\n| dot | 不展示数字，只有一个小红点 | boolean | false |  |\n| numberStyle | 设置状态点的样式 | object | '' |  |\n| offset | 设置状态点的位置偏移，格式为 [x, y] | [number\\|string, number\\|string] | - |  |\n| overflowCount | 展示封顶的数字值 | number | 99 |  |\n| showZero | 当数值为 0 时，是否展示 Badge | boolean | false |  |\n| status | 设置 Badge 为状态点 | Enum{ 'success', 'processing, 'default', 'error', 'warning' } | '' |  |\n| text | 在设置了 `status` 的前提下有效，设置状态点的文本 | string | '' |  |\n| title | 设置鼠标放在状态点上时显示的文字 | string | `count` |  |\n\n### Badge.Ribbon (2.0.1+)\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| color | 自定义缎带的颜色 | string | - |  |\n| placement | 缎带的位置，`start` 和 `end` 随文字方向（RTL 或 LTR）变动 | `start` \\| `end` | `end` |  |\n| text | 缎带中填入的内容 | string \\| VNode \\| slot | - |  |\n"
  },
  {
    "path": "components/badge/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genPresetColor, resetComponent } from '../../style';\n\ninterface BadgeToken extends FullToken<'Badge'> {\n  badgeFontHeight: number;\n  badgeZIndex: number | string;\n  badgeHeight: number;\n  badgeHeightSm: number;\n  badgeTextColor: string;\n  badgeFontWeight: string;\n  badgeFontSize: number;\n  badgeColor: string;\n  badgeColorHover: string;\n  badgeDotSize: number;\n  badgeFontSizeSm: number;\n  badgeStatusSize: number;\n  badgeShadowSize: number;\n  badgeShadowColor: string;\n  badgeProcessingDuration: string;\n  badgeRibbonOffset: number;\n  badgeRibbonCornerTransform: string;\n  badgeRibbonCornerFilter: string;\n}\n\nconst antStatusProcessing = new Keyframes('antStatusProcessing', {\n  '0%': { transform: 'scale(0.8)', opacity: 0.5 },\n  '100%': { transform: 'scale(2.4)', opacity: 0 },\n});\n\nconst antZoomBadgeIn = new Keyframes('antZoomBadgeIn', {\n  '0%': { transform: 'scale(0) translate(50%, -50%)', opacity: 0 },\n  '100%': { transform: 'scale(1) translate(50%, -50%)' },\n});\n\nconst antZoomBadgeOut = new Keyframes('antZoomBadgeOut', {\n  '0%': { transform: 'scale(1) translate(50%, -50%)' },\n  '100%': { transform: 'scale(0) translate(50%, -50%)', opacity: 0 },\n});\n\nconst antNoWrapperZoomBadgeIn = new Keyframes('antNoWrapperZoomBadgeIn', {\n  '0%': { transform: 'scale(0)', opacity: 0 },\n  '100%': { transform: 'scale(1)' },\n});\nconst antNoWrapperZoomBadgeOut = new Keyframes('antNoWrapperZoomBadgeOut', {\n  '0%': { transform: 'scale(1)' },\n  '100%': { transform: 'scale(0)', opacity: 0 },\n});\nconst antBadgeLoadingCircle = new Keyframes('antBadgeLoadingCircle', {\n  '0%': { transformOrigin: '50%' },\n  '100%': {\n    transform: 'translate(50%, -50%) rotate(360deg)',\n    transformOrigin: '50%',\n  },\n});\n\nconst genSharedBadgeStyle: GenerateStyle<BadgeToken> = (token: BadgeToken): CSSObject => {\n  const {\n    componentCls,\n    iconCls,\n    antCls,\n    badgeFontHeight,\n    badgeShadowSize,\n    badgeHeightSm,\n    motionDurationSlow,\n    badgeStatusSize,\n    marginXS,\n    badgeRibbonOffset,\n  } = token;\n  const numberPrefixCls = `${antCls}-scroll-number`;\n  const ribbonPrefixCls = `${antCls}-ribbon`;\n  const ribbonWrapperPrefixCls = `${antCls}-ribbon-wrapper`;\n\n  const colorPreset = genPresetColor(token, (colorKey, { darkColor }) => ({\n    [`&${componentCls} ${componentCls}-color-${colorKey}`]: {\n      background: darkColor,\n      [`&:not(${componentCls}-count)`]: {\n        color: darkColor,\n      },\n    },\n  }));\n\n  const statusRibbonPreset = genPresetColor(token, (colorKey, { darkColor }) => ({\n    [`&${ribbonPrefixCls}-color-${colorKey}`]: {\n      background: darkColor,\n      color: darkColor,\n    },\n  }));\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      position: 'relative',\n      display: 'inline-block',\n      width: 'fit-content',\n      lineHeight: 1,\n\n      [`${componentCls}-count`]: {\n        zIndex: token.badgeZIndex,\n        minWidth: token.badgeHeight,\n        height: token.badgeHeight,\n        color: token.badgeTextColor,\n        fontWeight: token.badgeFontWeight,\n        fontSize: token.badgeFontSize,\n        lineHeight: `${token.badgeHeight}px`,\n        whiteSpace: 'nowrap',\n        textAlign: 'center',\n        background: token.badgeColor,\n        borderRadius: token.badgeHeight / 2,\n        boxShadow: `0 0 0 ${badgeShadowSize}px ${token.badgeShadowColor}`,\n        transition: `background ${token.motionDurationMid}`,\n\n        a: {\n          color: token.badgeTextColor,\n        },\n        'a:hover': {\n          color: token.badgeTextColor,\n        },\n\n        'a:hover &': {\n          background: token.badgeColorHover,\n        },\n      },\n      [`${componentCls}-count-sm`]: {\n        minWidth: badgeHeightSm,\n        height: badgeHeightSm,\n        fontSize: token.badgeFontSizeSm,\n        lineHeight: `${badgeHeightSm}px`,\n        borderRadius: badgeHeightSm / 2,\n      },\n\n      [`${componentCls}-multiple-words`]: {\n        padding: `0 ${token.paddingXS}px`,\n      },\n\n      [`${componentCls}-dot`]: {\n        zIndex: token.badgeZIndex,\n        width: token.badgeDotSize,\n        minWidth: token.badgeDotSize,\n        height: token.badgeDotSize,\n        background: token.badgeColor,\n        borderRadius: '100%',\n        boxShadow: `0 0 0 ${badgeShadowSize}px ${token.badgeShadowColor}`,\n      },\n      [`${componentCls}-dot${numberPrefixCls}`]: {\n        transition: `background ${motionDurationSlow}`,\n      },\n      [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineEnd: 0,\n        transform: 'translate(50%, -50%)',\n        transformOrigin: '100% 0%',\n        [`&${iconCls}-spin`]: {\n          animationName: antBadgeLoadingCircle,\n          animationDuration: '1s',\n          animationIterationCount: 'infinite',\n          animationTimingFunction: 'linear',\n        },\n      },\n      [`&${componentCls}-status`]: {\n        lineHeight: 'inherit',\n        verticalAlign: 'baseline',\n\n        [`${componentCls}-status-dot`]: {\n          position: 'relative',\n          top: -1, // Magic number, but seems better experience\n          display: 'inline-block',\n          width: badgeStatusSize,\n          height: badgeStatusSize,\n          verticalAlign: 'middle',\n          borderRadius: '50%',\n        },\n\n        [`${componentCls}-status-success`]: {\n          backgroundColor: token.colorSuccess,\n        },\n        [`${componentCls}-status-processing`]: {\n          overflow: 'visible',\n          color: token.colorPrimary,\n          backgroundColor: token.colorPrimary,\n\n          '&::after': {\n            position: 'absolute',\n            top: 0,\n            insetInlineStart: 0,\n            width: '100%',\n            height: '100%',\n            borderWidth: badgeShadowSize,\n            borderStyle: 'solid',\n            borderColor: 'inherit',\n            borderRadius: '50%',\n            animationName: antStatusProcessing,\n            animationDuration: token.badgeProcessingDuration,\n            animationIterationCount: 'infinite',\n            animationTimingFunction: 'ease-in-out',\n            content: '\"\"',\n          },\n        },\n        [`${componentCls}-status-default`]: {\n          backgroundColor: token.colorTextPlaceholder,\n        },\n\n        [`${componentCls}-status-error`]: {\n          backgroundColor: token.colorError,\n        },\n\n        [`${componentCls}-status-warning`]: {\n          backgroundColor: token.colorWarning,\n        },\n        [`${componentCls}-status-text`]: {\n          marginInlineStart: marginXS,\n          color: token.colorText,\n          fontSize: token.fontSize,\n        },\n      },\n      ...colorPreset,\n      [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {\n        animationName: antZoomBadgeIn,\n        animationDuration: token.motionDurationSlow,\n        animationTimingFunction: token.motionEaseOutBack,\n        animationFillMode: 'both',\n      },\n      [`${componentCls}-zoom-leave`]: {\n        animationName: antZoomBadgeOut,\n        animationDuration: token.motionDurationSlow,\n        animationTimingFunction: token.motionEaseOutBack,\n        animationFillMode: 'both',\n      },\n      [`&${componentCls}-not-a-wrapper`]: {\n        [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {\n          animationName: antNoWrapperZoomBadgeIn,\n          animationDuration: token.motionDurationSlow,\n          animationTimingFunction: token.motionEaseOutBack,\n        },\n\n        [`${componentCls}-zoom-leave`]: {\n          animationName: antNoWrapperZoomBadgeOut,\n          animationDuration: token.motionDurationSlow,\n          animationTimingFunction: token.motionEaseOutBack,\n        },\n        [`&:not(${componentCls}-status)`]: {\n          verticalAlign: 'middle',\n        },\n        [`${numberPrefixCls}-custom-component, ${componentCls}-count`]: {\n          transform: 'none',\n        },\n        [`${numberPrefixCls}-custom-component, ${numberPrefixCls}`]: {\n          position: 'relative',\n          top: 'auto',\n          display: 'block',\n          transformOrigin: '50% 50%',\n        },\n      },\n      [`${numberPrefixCls}`]: {\n        overflow: 'hidden',\n        [`${numberPrefixCls}-only`]: {\n          position: 'relative',\n          display: 'inline-block',\n          height: token.badgeHeight,\n          transition: `all ${token.motionDurationSlow} ${token.motionEaseOutBack}`,\n          WebkitTransformStyle: 'preserve-3d',\n          WebkitBackfaceVisibility: 'hidden',\n          [`> p${numberPrefixCls}-only-unit`]: {\n            height: token.badgeHeight,\n            margin: 0,\n            WebkitTransformStyle: 'preserve-3d',\n            WebkitBackfaceVisibility: 'hidden',\n          },\n        },\n        [`${numberPrefixCls}-symbol`]: { verticalAlign: 'top' },\n      },\n\n      // ====================== RTL =======================\n      '&-rtl': {\n        direction: 'rtl',\n\n        [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {\n          transform: 'translate(-50%, -50%)',\n        },\n      },\n    },\n    [`${ribbonWrapperPrefixCls}`]: { position: 'relative' },\n    [`${ribbonPrefixCls}`]: {\n      ...resetComponent(token),\n      position: 'absolute',\n      top: marginXS,\n      padding: `0 ${token.paddingXS}px`,\n      color: token.colorPrimary,\n      lineHeight: `${badgeFontHeight}px`,\n      whiteSpace: 'nowrap',\n      backgroundColor: token.colorPrimary,\n      borderRadius: token.borderRadiusSM,\n      [`${ribbonPrefixCls}-text`]: { color: token.colorTextLightSolid },\n      [`${ribbonPrefixCls}-corner`]: {\n        position: 'absolute',\n        top: '100%',\n        width: badgeRibbonOffset,\n        height: badgeRibbonOffset,\n        color: 'currentcolor',\n        border: `${badgeRibbonOffset / 2}px solid`,\n        transform: token.badgeRibbonCornerTransform,\n        transformOrigin: 'top',\n        filter: token.badgeRibbonCornerFilter,\n      },\n      ...statusRibbonPreset,\n      [`&${ribbonPrefixCls}-placement-end`]: {\n        insetInlineEnd: -badgeRibbonOffset,\n        borderEndEndRadius: 0,\n        [`${ribbonPrefixCls}-corner`]: {\n          insetInlineEnd: 0,\n          borderInlineEndColor: 'transparent',\n          borderBlockEndColor: 'transparent',\n        },\n      },\n      [`&${ribbonPrefixCls}-placement-start`]: {\n        insetInlineStart: -badgeRibbonOffset,\n        borderEndStartRadius: 0,\n        [`${ribbonPrefixCls}-corner`]: {\n          insetInlineStart: 0,\n          borderBlockEndColor: 'transparent',\n          borderInlineStartColor: 'transparent',\n        },\n      },\n\n      // ====================== RTL =======================\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Badge', token => {\n  const { fontSize, lineHeight, fontSizeSM, lineWidth, marginXS, colorBorderBg } = token;\n\n  const badgeFontHeight = Math.round(fontSize * lineHeight);\n  const badgeShadowSize = lineWidth;\n  const badgeZIndex = 'auto';\n  const badgeHeight = badgeFontHeight - 2 * badgeShadowSize;\n  const badgeTextColor = token.colorBgContainer;\n  const badgeFontWeight = 'normal';\n  const badgeFontSize = fontSizeSM;\n  const badgeColor = token.colorError;\n  const badgeColorHover = token.colorErrorHover;\n  const badgeHeightSm = fontSize;\n  const badgeDotSize = fontSizeSM / 2;\n  const badgeFontSizeSm = fontSizeSM;\n  const badgeStatusSize = fontSizeSM / 2;\n\n  const badgeToken = mergeToken<BadgeToken>(token, {\n    badgeFontHeight,\n    badgeShadowSize,\n    badgeZIndex,\n    badgeHeight,\n    badgeTextColor,\n    badgeFontWeight,\n    badgeFontSize,\n    badgeColor,\n    badgeColorHover,\n    badgeShadowColor: colorBorderBg,\n    badgeHeightSm,\n    badgeDotSize,\n    badgeFontSizeSm,\n    badgeStatusSize,\n    badgeProcessingDuration: '1.2s',\n    badgeRibbonOffset: marginXS,\n\n    // Follow token just by Design. Not related with token\n    badgeRibbonCornerTransform: 'scaleY(0.75)',\n    badgeRibbonCornerFilter: `brightness(75%)`,\n  });\n\n  return [genSharedBadgeStyle(badgeToken)];\n});\n"
  },
  {
    "path": "components/breadcrumb/Breadcrumb.tsx",
    "content": "import type { PropType, ExtractPropTypes } from 'vue';\nimport { cloneVNode, defineComponent } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { flattenChildren, getPropsSlot } from '../_util/props-util';\nimport warning from '../_util/warning';\nimport type { BreadcrumbItemProps } from './BreadcrumbItem';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport Menu from '../menu';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\n\nexport interface Route {\n  path: string;\n  breadcrumbName: string;\n  children?: Omit<Route, 'children'>[];\n}\n\nexport const breadcrumbProps = () => ({\n  prefixCls: String,\n  routes: { type: Array as PropType<Route[]> },\n  params: PropTypes.any,\n  separator: PropTypes.any,\n  itemRender: {\n    type: Function as PropType<\n      (opt: { route: Route; params: unknown; routes: Route[]; paths: string[] }) => VueNode\n    >,\n  },\n});\n\nexport type BreadcrumbProps = Partial<ExtractPropTypes<ReturnType<typeof breadcrumbProps>>>;\n\nfunction getBreadcrumbName(route: Route, params: unknown) {\n  if (!route.breadcrumbName) {\n    return null;\n  }\n  const paramsKeys = Object.keys(params).join('|');\n  const name = route.breadcrumbName.replace(\n    new RegExp(`:(${paramsKeys})`, 'g'),\n    (replacement, key) => params[key] || replacement,\n  );\n  return name;\n}\nfunction defaultItemRender(opt: {\n  route: Route;\n  params: unknown;\n  routes: Route[];\n  paths: string[];\n}): VueNode {\n  const { route, params, routes, paths } = opt;\n  const isLastItem = routes.indexOf(route) === routes.length - 1;\n  const name = getBreadcrumbName(route, params);\n  return isLastItem ? <span>{name}</span> : <a href={`#/${paths.join('/')}`}>{name}</a>;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABreadcrumb',\n  inheritAttrs: false,\n  props: breadcrumbProps(),\n  slots: Object as CustomSlotsType<{\n    separator: any;\n    itemRender: { route: Route; params: any; routes: Route[]; paths: string[] };\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('breadcrumb', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const getPath = (path: string, params: unknown) => {\n      path = (path || '').replace(/^\\//, '');\n      Object.keys(params).forEach(key => {\n        path = path.replace(`:${key}`, params[key]);\n      });\n      return path;\n    };\n\n    const addChildPath = (paths: string[], childPath: string, params: unknown) => {\n      const originalPaths = [...paths];\n      const path = getPath(childPath || '', params);\n      if (path) {\n        originalPaths.push(path);\n      }\n      return originalPaths;\n    };\n\n    const genForRoutes = ({\n      routes = [],\n      params = {},\n      separator,\n      itemRender = defaultItemRender,\n    }: any) => {\n      const paths = [];\n      return routes.map((route: Route) => {\n        const path = getPath(route.path, params);\n\n        if (path) {\n          paths.push(path);\n        }\n        const tempPaths = [...paths];\n        // generated overlay by route.children\n        let overlay = null;\n        if (route.children && route.children.length) {\n          overlay = (\n            <Menu\n              items={route.children.map(child => ({\n                key: child.path || child.breadcrumbName,\n                label: itemRender({\n                  route: child,\n                  params,\n                  routes,\n                  paths: addChildPath(tempPaths, child.path, params),\n                }),\n              }))}\n            ></Menu>\n          );\n        }\n        const itemProps: BreadcrumbItemProps = { separator };\n        if (overlay) {\n          itemProps.overlay = overlay;\n        }\n        return (\n          <BreadcrumbItem {...itemProps} key={path || route.breadcrumbName}>\n            {itemRender({ route, params, routes, paths: tempPaths })}\n          </BreadcrumbItem>\n        );\n      });\n    };\n    return () => {\n      let crumbs: VueNode[];\n\n      const { routes, params = {} } = props;\n\n      const children = flattenChildren(getPropsSlot(slots, props));\n      const separator = getPropsSlot(slots, props, 'separator') ?? '/';\n\n      const itemRender = props.itemRender || slots.itemRender || defaultItemRender;\n      if (routes && routes.length > 0) {\n        // generated by route\n        crumbs = genForRoutes({\n          routes,\n          params,\n          separator,\n          itemRender,\n        });\n      } else if (children.length) {\n        crumbs = children.map((element, index) => {\n          warning(\n            typeof element.type === 'object' &&\n              (element.type.__ANT_BREADCRUMB_ITEM || element.type.__ANT_BREADCRUMB_SEPARATOR),\n            'Breadcrumb',\n            \"Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children\",\n          );\n          return cloneVNode(element, { separator, key: index });\n        });\n      }\n\n      const breadcrumbClassName = {\n        [prefixCls.value]: true,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [`${attrs.class}`]: !!attrs.class,\n        [hashId.value]: true,\n      };\n\n      return wrapSSR(\n        <nav {...attrs} class={breadcrumbClassName}>\n          <ol>{crumbs}</ol>\n        </nav>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/breadcrumb/BreadcrumbItem.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { getPropsSlot } from '../_util/props-util';\nimport type { DropdownProps } from '../dropdown/dropdown';\nimport Dropdown from '../dropdown/dropdown';\nimport DownOutlined from '@ant-design/icons-vue/DownOutlined';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { eventType, objectType } from '../_util/type';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\n\nexport const breadcrumbItemProps = () => ({\n  prefixCls: String,\n  href: String,\n  separator: PropTypes.any,\n  dropdownProps: objectType<DropdownProps>(),\n  overlay: PropTypes.any,\n  onClick: eventType<MouseEventHandler>(),\n});\n\nexport type BreadcrumbItemProps = Partial<ExtractPropTypes<ReturnType<typeof breadcrumbItemProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABreadcrumbItem',\n  inheritAttrs: false,\n  __ANT_BREADCRUMB_ITEM: true,\n  props: breadcrumbItemProps(),\n  // emits: ['click'],\n  slots: Object as CustomSlotsType<{\n    separator: any;\n    overlay: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs, emit }) {\n    const { prefixCls } = useConfigInject('breadcrumb', props);\n    /**\n     * if overlay is have\n     * Wrap a Dropdown\n     */\n    const renderBreadcrumbNode = (breadcrumbItem: VueNode, prefixCls: string) => {\n      const overlay = getPropsSlot(slots, props, 'overlay');\n      if (overlay) {\n        return (\n          <Dropdown {...props.dropdownProps} overlay={overlay} placement=\"bottom\">\n            <span class={`${prefixCls}-overlay-link`}>\n              {breadcrumbItem}\n              <DownOutlined />\n            </span>\n          </Dropdown>\n        );\n      }\n      return breadcrumbItem;\n    };\n    const handleClick = (e: MouseEvent) => {\n      emit('click', e);\n    };\n    return () => {\n      const separator = getPropsSlot(slots, props, 'separator') ?? '/';\n      const children = getPropsSlot(slots, props);\n      const { class: cls, style, ...restAttrs } = attrs;\n      let link: VueNode;\n      if (props.href !== undefined) {\n        link = (\n          <a class={`${prefixCls.value}-link`} onClick={handleClick} {...restAttrs}>\n            {children}\n          </a>\n        );\n      } else {\n        link = (\n          <span class={`${prefixCls.value}-link`} onClick={handleClick} {...restAttrs}>\n            {children}\n          </span>\n        );\n      }\n      // wrap to dropDown\n      link = renderBreadcrumbNode(link, prefixCls.value);\n      if (children !== undefined && children !== null) {\n        return (\n          <li class={cls} style={style as CSSProperties}>\n            {link}\n            {separator && <span class={`${prefixCls.value}-separator`}>{separator}</span>}\n          </li>\n        );\n      }\n      return null;\n    };\n  },\n});\n"
  },
  {
    "path": "components/breadcrumb/BreadcrumbSeparator.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport { flattenChildren } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nexport const breadcrumbSeparatorProps = () => ({\n  prefixCls: String,\n});\nexport type BreadcrumbSeparatorProps = Partial<\n  ExtractPropTypes<ReturnType<typeof breadcrumbSeparatorProps>>\n>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABreadcrumbSeparator',\n  __ANT_BREADCRUMB_SEPARATOR: true,\n  inheritAttrs: false,\n  props: breadcrumbSeparatorProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls } = useConfigInject('breadcrumb', props);\n\n    return () => {\n      const { separator, class: className, ...restAttrs } = attrs;\n      const children = flattenChildren(slots.default?.());\n      return (\n        <span class={[`${prefixCls.value}-separator`, className]} {...restAttrs}>\n          {children.length > 0 ? children : '/'}\n        </span>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/breadcrumb/__tests__/Breadcrumb.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Breadcrumb from '../index';\n\ndescribe('Breadcrumb', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n\n  afterEach(() => {\n    errorSpy.mockReset();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n\n  // // https://github.com/airbnb/enzyme/issues/875\n  it('warns on non-Breadcrumb.Item and non-Breadcrumb.Separator children', () => {\n    mount({\n      render() {\n        return (\n          <Breadcrumb>\n            <div>foo</div>\n          </Breadcrumb>\n        );\n      },\n    });\n    expect(errorSpy.mock.calls).toHaveLength(1);\n    expect(errorSpy.mock.calls[0][0]).toMatch(\n      \"Warning: [ant-design-vue: Breadcrumb] Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children\",\n    );\n  });\n\n  // https:// github.com/ant-design/ant-design/issues/5015\n  it('should allow Breadcrumb.Item is null or undefined', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Breadcrumb>\n            {null}\n            <Breadcrumb.Item>Home</Breadcrumb.Item>\n            {undefined}\n          </Breadcrumb>\n        );\n      },\n    });\n    expect(errorSpy).not.toHaveBeenCalled();\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  // https://github.com/ant-design/ant-design/issues/5542\n  it('should not display Breadcrumb Item when its children is falsy', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Breadcrumb>\n            <Breadcrumb.Item />\n            <Breadcrumb.Item>xxx</Breadcrumb.Item>\n            <Breadcrumb.Item>yyy</Breadcrumb.Item>\n          </Breadcrumb>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  it('should render a menu', () => {\n    const routes = [\n      {\n        path: 'index',\n        breadcrumbName: 'home',\n      },\n      {\n        path: 'first',\n        breadcrumbName: 'first',\n        children: [\n          {\n            path: '/general',\n            breadcrumbName: 'General',\n          },\n          {\n            path: '/layout',\n            breadcrumbName: 'Layout',\n          },\n          {\n            path: '/navigation',\n            breadcrumbName: 'Navigation',\n          },\n        ],\n      },\n      {\n        path: 'second',\n        breadcrumbName: 'second',\n      },\n    ];\n    const wrapper = mount(Breadcrumb, { props: { routes } });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should support custom attribute', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Breadcrumb data-custom=\"custom\">\n            <Breadcrumb.Item data-custom=\"custom-item\">xxx</Breadcrumb.Item>\n            <Breadcrumb.Item>yyy</Breadcrumb.Item>\n          </Breadcrumb>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  // https://github.com/ant-design/ant-design/issues/25975\n  it('should support Breadcrumb.Item default separator', () => {\n    const MockComponent = () => (\n      <span>\n        <Breadcrumb.Item>Mock Node</Breadcrumb.Item>\n      </span>\n    );\n    const wrapper = mount({\n      render() {\n        return (\n          <Breadcrumb>\n            <Breadcrumb.Item>Location</Breadcrumb.Item>\n            <MockComponent />\n            <Breadcrumb.Item>Application Center</Breadcrumb.Item>\n          </Breadcrumb>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/breadcrumb/__tests__/__snapshots__/Breadcrumb.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Breadcrumb should allow Breadcrumb.Item is null or undefined 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`Breadcrumb should not display Breadcrumb Item when its children is falsy 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <!---->\n    <li><span class=\"ant-breadcrumb-link\">xxx</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\">yyy</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`Breadcrumb should render a menu 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\"><a href=\"#/index\">home</a></span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li>\n      <!----><span class=\"ant-breadcrumb-overlay-link ant-dropdown-trigger\"><span class=\"ant-breadcrumb-link\"><a href=\"#/index/first\">first</a></span><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span><span class=\"ant-breadcrumb-separator\">/</span>\n    </li>\n    <li><span class=\"ant-breadcrumb-link\"><span>second</span></span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`Breadcrumb should support Breadcrumb.Item default separator 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Location</span><span class=\"ant-breadcrumb-separator\">/</span></li><span><li><span class=\"ant-breadcrumb-link\">Mock Node</span><span class=\"ant-breadcrumb-separator\">/</span></li></span>\n    <li><span class=\"ant-breadcrumb-link\">Application Center</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`Breadcrumb should support custom attribute 1`] = `\n<nav data-custom=\"custom\" class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\" data-custom=\"custom-item\">xxx</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\">yyy</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n"
  },
  {
    "path": "components/breadcrumb/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/breadcrumb/demo/basic.vue correctly 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\"><a href=\"\">Application Center</a></span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\"><a href=\"\">Application List</a></span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\">An Application</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`renders ./components/breadcrumb/demo/overlay.vue correctly 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Ant Design Vue</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\"><a href=\"\">Component</a></span><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li>\n      <!----><span class=\"ant-breadcrumb-overlay-link ant-dropdown-trigger\"><span class=\"ant-breadcrumb-link\"><a href=\"\">General</a></span><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span><span class=\"ant-breadcrumb-separator\">/</span>\n    </li>\n    <li><span class=\"ant-breadcrumb-link\">Button</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`renders ./components/breadcrumb/demo/separator.vue correctly 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">&gt;</span></li>\n    <li><a class=\"ant-breadcrumb-link\">Application Center</a><span class=\"ant-breadcrumb-separator\">&gt;</span></li>\n    <li><a class=\"ant-breadcrumb-link\">Application List</a><span class=\"ant-breadcrumb-separator\">&gt;</span></li>\n    <li><span class=\"ant-breadcrumb-link\">An Application</span><span class=\"ant-breadcrumb-separator\">&gt;</span></li>\n  </ol>\n</nav>\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\"><span style=\"color: red;\">&gt;</span></span></li>\n    <li><a class=\"ant-breadcrumb-link\">Application Center</a><span class=\"ant-breadcrumb-separator\"><span style=\"color: red;\">&gt;</span></span></li>\n    <li><a class=\"ant-breadcrumb-link\">Application List</a><span class=\"ant-breadcrumb-separator\"><span style=\"color: red;\">&gt;</span></span></li>\n    <li><span class=\"ant-breadcrumb-link\">An Application</span><span class=\"ant-breadcrumb-separator\"><span style=\"color: red;\">&gt;</span></span></li>\n  </ol>\n</nav>\n`;\n\nexports[`renders ./components/breadcrumb/demo/separator-indepent.vue correctly 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><span class=\"ant-breadcrumb-link\">Location</span></li><span class=\"ant-breadcrumb-separator\">:</span>\n    <li><a class=\"ant-breadcrumb-link\">Application Center</a></li><span class=\"ant-breadcrumb-separator\">/</span>\n    <li><a class=\"ant-breadcrumb-link\">Application List</a></li><span class=\"ant-breadcrumb-separator\">/</span>\n    <li><span class=\"ant-breadcrumb-link\">An Application</span></li>\n  </ol>\n</nav>\n`;\n\nexports[`renders ./components/breadcrumb/demo/withIcon.vue correctly 1`] = `\n<nav class=\"ant-breadcrumb\">\n  <ol>\n    <li><a class=\"ant-breadcrumb-link\"><span role=\"img\" aria-label=\"home\" class=\"anticon anticon-home\"><svg focusable=\"false\" class=\"\" data-icon=\"home\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 00-44.4 0L77.5 505a63.9 63.9 0 00-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0018.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\"></path></svg></span></a><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><a class=\"ant-breadcrumb-link\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span>Application List</span></a><span class=\"ant-breadcrumb-separator\">/</span></li>\n    <li><span class=\"ant-breadcrumb-link\">Application</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n  </ol>\n</nav>\n`;\n"
  },
  {
    "path": "components/breadcrumb/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('breadcrumb', { skip: ['router'] });\n"
  },
  {
    "path": "components/breadcrumb/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest use.\n\n</docs>\n\n<template>\n  <a-breadcrumb>\n    <a-breadcrumb-item>Home</a-breadcrumb-item>\n    <a-breadcrumb-item><a href=\"\">Application Center</a></a-breadcrumb-item>\n    <a-breadcrumb-item><a href=\"\">Application List</a></a-breadcrumb-item>\n    <a-breadcrumb-item>An Application</a-breadcrumb-item>\n  </a-breadcrumb>\n</template>\n"
  },
  {
    "path": "components/breadcrumb/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <overlay />\n    <router />\n    <separator />\n    <separator-indepent />\n    <with-icon />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport US from './../index.en-US.md';\nimport CN from './../index.zh-CN.md';\nimport Basic from './basic.vue';\nimport Overlay from './overlay.vue';\nimport Router from './router.vue';\nimport Separator from './separator.vue';\nimport SeparatorIndepent from './separator-indepent.vue';\nimport WithIcon from './withIcon.vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Overlay,\n    Router,\n    Separator,\n    SeparatorIndepent,\n    WithIcon,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/breadcrumb/demo/overlay.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 带下拉菜单的面包屑\n  en-US: Bread crumbs with drop down menu\n---\n\n## zh-CN\n\n面包屑支持下拉菜单。\n\n## en-US\n\nBreadcrumbs support drop down menu.\n\n</docs>\n\n<template>\n  <a-breadcrumb>\n    <a-breadcrumb-item>Ant Design Vue</a-breadcrumb-item>\n    <a-breadcrumb-item><a href=\"\">Component</a></a-breadcrumb-item>\n    <a-breadcrumb-item>\n      <a href=\"\">General</a>\n      <template #overlay>\n        <a-menu>\n          <a-menu-item>\n            <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.alipay.com/\">General</a>\n          </a-menu-item>\n          <a-menu-item>\n            <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.taobao.com/\">Layout</a>\n          </a-menu-item>\n          <a-menu-item>\n            <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.tmall.com/\">Navigation</a>\n          </a-menu-item>\n        </a-menu>\n      </template>\n    </a-breadcrumb-item>\n    <a-breadcrumb-item>Button</a-breadcrumb-item>\n  </a-breadcrumb>\n</template>\n"
  },
  {
    "path": "components/breadcrumb/demo/router.vue",
    "content": "<docs>\n---\norder: 3\niframe: 200\nreactRouter: react-router-dom\ntitle:\n  zh-CN: 其它路由\n  en-US: Other Router Integration\n---\n\n## zh-CN\n和 `vue-router` 进行结合使用。\n\n## en-US\nUsed together with `vue-router`\n\n</docs>\n\n<template>\n  <div>\n    <a-breadcrumb :routes=\"routes\">\n      <template #itemRender=\"{ route, paths }\">\n        <span v-if=\"routes.indexOf(route) === routes.length - 1\">\n          {{ route.breadcrumbName }}\n        </span>\n        <router-link v-else :to=\"`${basePath}/${paths.join('/')}`\">\n          {{ route.breadcrumbName }}\n        </router-link>\n      </template>\n    </a-breadcrumb>\n    <br />\n    {{ $route.path }}\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface Route {\n  path: string;\n  breadcrumbName: string;\n  children?: Array<{\n    path: string;\n    breadcrumbName: string;\n  }>;\n}\nconst basePath = '/components/breadcrumb';\nconst routes = ref<Route[]>([\n  {\n    path: 'index',\n    breadcrumbName: 'home',\n  },\n  {\n    path: 'first',\n    breadcrumbName: 'first',\n    children: [\n      {\n        path: '/general',\n        breadcrumbName: 'General',\n      },\n      {\n        path: '/layout',\n        breadcrumbName: 'Layout',\n      },\n      {\n        path: '/navigation',\n        breadcrumbName: 'Navigation',\n      },\n    ],\n  },\n  {\n    path: 'second',\n    breadcrumbName: 'second',\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/breadcrumb/demo/separator-indepent.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 分隔符\n  en-US: Configuring the Separator\n---\n\n## zh-CN\n\n使用 `Breadcrumb.Separator` 可以自定义分隔符。\n\n## en-US\n\nThe separator can be customized by setting the separator property: `Breadcrumb.Separator`.\n\n</docs>\n\n<template>\n  <a-breadcrumb separator=\"\">\n    <a-breadcrumb-item>Location</a-breadcrumb-item>\n    <a-breadcrumb-separator>:</a-breadcrumb-separator>\n    <a-breadcrumb-item href=\"\">Application Center</a-breadcrumb-item>\n    <a-breadcrumb-separator />\n    <a-breadcrumb-item href=\"\">Application List</a-breadcrumb-item>\n    <a-breadcrumb-separator />\n    <a-breadcrumb-item>An Application</a-breadcrumb-item>\n  </a-breadcrumb>\n</template>\n"
  },
  {
    "path": "components/breadcrumb/demo/separator.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 分隔符\n  en-US: Configuring the Separator\n---\n\n## zh-CN\n\n用` separator=\">\" `可以自定义分隔符，或者使用slot=\"separator\"自定义更复杂的分隔符\n\n## en-US\n\nThe separator can be customized by setting the separator preperty: separator=\">\" or use\n  slot=\"separator\"\n\n</docs>\n\n<template>\n  <a-breadcrumb separator=\">\">\n    <a-breadcrumb-item>Home</a-breadcrumb-item>\n    <a-breadcrumb-item href=\"\">Application Center</a-breadcrumb-item>\n    <a-breadcrumb-item href=\"\">Application List</a-breadcrumb-item>\n    <a-breadcrumb-item>An Application</a-breadcrumb-item>\n  </a-breadcrumb>\n  <a-breadcrumb>\n    <template #separator><span style=\"color: red\">></span></template>\n    <a-breadcrumb-item>Home</a-breadcrumb-item>\n    <a-breadcrumb-item href=\"\">Application Center</a-breadcrumb-item>\n    <a-breadcrumb-item href=\"\">Application List</a-breadcrumb-item>\n    <a-breadcrumb-item>An Application</a-breadcrumb-item>\n  </a-breadcrumb>\n</template>\n"
  },
  {
    "path": "components/breadcrumb/demo/withIcon.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 带有图标的\n  en-US: With an Icon\n---\n\n## zh-CN\n\n图标放在文字前面。\n\n## en-US\n\nThe icon should be placed in front of the text.\n\n</docs>\n\n<template>\n  <a-breadcrumb>\n    <a-breadcrumb-item href=\"\">\n      <home-outlined />\n    </a-breadcrumb-item>\n    <a-breadcrumb-item href=\"\">\n      <user-outlined />\n      <span>Application List</span>\n    </a-breadcrumb-item>\n    <a-breadcrumb-item>Application</a-breadcrumb-item>\n  </a-breadcrumb>\n</template>\n<script lang=\"ts\" setup>\nimport { HomeOutlined, UserOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/breadcrumb/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ntitle: Breadcrumb\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*I5a2Tpqs3y0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Tr90QKrE_LcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA breadcrumb displays the current location within a hierarchy. It allows going back to states higher up in the hierarchy.\n\n## When To Use\n\n- When the system has more than two layers in a hierarchy.\n- When you need to inform the user of where they are.\n- When the user may need to navigate back to a higher level.\n\n## API\n\n| Property | Description | Type | Optional | Default | Version |\n| --- | --- | --- | --- | --- | --- |\n| itemRender | Custom item renderer, #itemRender=\"{route, params, routes, paths}\" | ({route, params, routes, paths}) => vNode |  | - |  |\n| params | Routing parameters | object |  | - |  |\n| routes | The routing stack information of router | [routes\\[\\]](#routes) |  | - |  |\n| separator | Custom separator | string\\|slot |  | `/` |  |\n\n### Breadcrumb.Item\n\n| Property | Description         | Type                                   | Default | Version |\n| -------- | ------------------- | -------------------------------------- | ------- | ------- |\n| href     | Target of hyperlink | string                                 | -       |         |\n| overlay  | The dropdown menu   | [Menu](/components/menu) \\| () => Menu | -       |         |\n\n#### Events\n\n| Events Name | Description                   | Arguments            | Version |       |\n| ----------- | ----------------------------- | -------------------- | ------- | ----- |\n| click       | handler to handle click event | (e:MouseEvent)=>void | -       | 1.5.0 |\n\n### Breadcrumb.Separator `1.5.0`\n\n| Property | Description | Type | Default | Version |\n| -------- | ----------- | ---- | ------- | ------- |\n| -        | -           | -    | -       | -       |\n\n> When using `Breadcrumb.Separator`,its parent component must be set to `separator=\"\"`, otherwise the default separator of the parent component will appear.\n\n### routes\n\n```ts\ninterface Route {\n  path: string;\n  breadcrumbName: string;\n  children?: Array<{\n    path: string;\n    breadcrumbName: string;\n  }>;\n}\n```\n\n### Use with browserHistory\n\nThe link of Breadcrumb item targets `#` by default, you can use `itemRender` to make a `browserHistory` Link.\n\n```html\n<template>\n  <a-breadcrumb :routes=\"routes\">\n    <template #itemRender=\"{ route, params, routes, paths }\">\n      <span v-if=\"routes.indexOf(route) === routes.length - 1\">{{route.breadcrumbName}}</span>\n      <router-link v-else :to=\"paths.join('/')\">{{route.breadcrumbName}}</router-link>\n    </template>\n  </a-breadcrumb>\n</template>\n<script lang=\"ts\">\n  import { defineComponent, ref } from 'vue';\n  interface Route {\n    path: string;\n    breadcrumbName: string;\n    children?: Array<{\n      path: string;\n      breadcrumbName: string;\n    }>;\n  }\n  export default defineComponent({\n    setup() {\n      const routes = ref<Route[]>([\n        {\n          path: 'index',\n          breadcrumbName: 'home',\n        },\n        {\n          path: 'first',\n          breadcrumbName: 'first',\n          children: [\n            {\n              path: '/general',\n              breadcrumbName: 'General',\n            },\n            {\n              path: '/layout',\n              breadcrumbName: 'Layout',\n            },\n            {\n              path: '/navigation',\n              breadcrumbName: 'Navigation',\n            },\n          ],\n        },\n        {\n          path: 'second',\n          breadcrumbName: 'second',\n        },\n      ]);\n      return {\n        routes,\n      };\n    },\n  });\n</script>\n```\n"
  },
  {
    "path": "components/breadcrumb/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Breadcrumb from './Breadcrumb';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport BreadcrumbSeparator from './BreadcrumbSeparator';\n\nexport type { BreadcrumbProps } from './Breadcrumb';\nexport type { BreadcrumbItemProps } from './BreadcrumbItem';\nexport type { BreadcrumbSeparatorProps } from './BreadcrumbSeparator';\n\nBreadcrumb.Item = BreadcrumbItem;\nBreadcrumb.Separator = BreadcrumbSeparator;\n\n/* istanbul ignore next */\nBreadcrumb.install = function (app: App) {\n  app.component(Breadcrumb.name, Breadcrumb);\n  app.component(BreadcrumbItem.name, BreadcrumbItem);\n  app.component(BreadcrumbSeparator.name, BreadcrumbSeparator);\n  return app;\n};\n\nexport { BreadcrumbItem, BreadcrumbSeparator };\nexport default Breadcrumb as typeof Breadcrumb &\n  Plugin & {\n    readonly Item: typeof BreadcrumbItem;\n    readonly Separator: typeof BreadcrumbSeparator;\n  };\n"
  },
  {
    "path": "components/breadcrumb/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 面包屑\ntype: 导航\ntitle: Breadcrumb\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*I5a2Tpqs3y0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Tr90QKrE_LcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n显示当前页面在系统层级结构中的位置，并能向上返回。\n\n## 何时使用\n\n- 当系统拥有超过两级以上的层级结构时；\n- 当需要告知用户『你在哪里』时；\n- 当需要向上导航的功能时。\n\n## API\n\n| 参数 | 说明 | 类型 | 可选值 | 默认值 |\n| --- | --- | --- | --- | --- |\n| itemRender | 自定义链接函数，和 vue-router 配置使用， 也可使用 #itemRender=\"props\" | ({route, params, routes, paths}) => vNode |  | - |\n| params | 路由的参数 | object |  | - |\n| routes | router 的路由栈信息 | [routes\\[\\]](#routes) |  | - |\n| separator | 分隔符自定义 | string\\|slot |  | '/' |\n\n### Breadcrumb.Item\n\n| 参数    | 参数           | 类型                                   | 默认值 | 版本  |\n| ------- | -------------- | -------------------------------------- | ------ | ----- |\n| href    | 链接的目的地   | string                                 | -      | 1.5.0 |\n| overlay | 下拉菜单的内容 | [Menu](/components/menu) \\| () => Menu | -      | 1.5.0 |\n\n#### 事件\n\n| 事件名称 | 说明     | 回调参数             | 版本 |       |\n| -------- | -------- | -------------------- | ---- | ----- |\n| click    | 单击事件 | (e:MouseEvent)=>void | -    | 1.5.0 |\n\n### Breadcrumb.Separator `1.5.0`\n\n| 参数 | 类型 | 默认值 | 版本 |\n| ---- | ---- | ------ | ---- |\n| -    | -    | -      | -    |\n\n> 注意：在使用 `Breadcrumb.Separator` 时，其父组件的分隔符必须设置为 `separator=\"\"`，否则会出现父组件默认的分隔符。\n\n### routes\n\n```ts\ninterface Route {\n  path: string;\n  breadcrumbName: string;\n  children?: Array<{\n    path: string;\n    breadcrumbName: string;\n  }>;\n}\n```\n\n### 和 browserHistory 配合\n\n和 vue-router 一起使用时，默认生成的 url 路径是带有 `#` 的，如果和 browserHistory 一起使用的话，你可以使用 `itemRender` 属性定义面包屑链接。\n\n```html\n<template>\n  <a-breadcrumb :routes=\"routes\">\n    <template #itemRender=\"{ route, params, routes, paths }\">\n      <span v-if=\"routes.indexOf(route) === routes.length - 1\">{{route.breadcrumbName}}</span>\n      <router-link v-else :to=\"paths.join('/')\">{{route.breadcrumbName}}</router-link>\n    </template>\n  </a-breadcrumb>\n</template>\n<script lang=\"ts\">\n  import { defineComponent, ref } from 'vue';\n  interface Route {\n    path: string;\n    breadcrumbName: string;\n    children?: Array<{\n      path: string;\n      breadcrumbName: string;\n    }>;\n  }\n  export default defineComponent({\n    setup() {\n      const routes = ref<Route[]>([\n        {\n          path: 'index',\n          breadcrumbName: 'home',\n        },\n        {\n          path: 'first',\n          breadcrumbName: 'first',\n          children: [\n            {\n              path: '/general',\n              breadcrumbName: 'General',\n            },\n            {\n              path: '/layout',\n              breadcrumbName: 'Layout',\n            },\n            {\n              path: '/navigation',\n              breadcrumbName: 'Navigation',\n            },\n          ],\n        },\n        {\n          path: 'second',\n          breadcrumbName: 'second',\n        },\n      ]);\n      return {\n        routes,\n      };\n    },\n  });\n</script>\n```\n"
  },
  {
    "path": "components/breadcrumb/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusStyle, resetComponent } from '../../style';\n\ninterface BreadcrumbToken extends FullToken<'Breadcrumb'> {\n  breadcrumbBaseColor: string;\n  breadcrumbFontSize: number;\n  breadcrumbIconFontSize: number;\n  breadcrumbLinkColor: string;\n  breadcrumbLinkColorHover: string;\n  breadcrumbLastItemColor: string;\n  breadcrumbSeparatorMargin: number;\n  breadcrumbSeparatorColor: string;\n}\n\nconst genBreadcrumbStyle: GenerateStyle<BreadcrumbToken, CSSObject> = token => {\n  const { componentCls, iconCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      color: token.breadcrumbBaseColor,\n      fontSize: token.breadcrumbFontSize,\n\n      [iconCls]: {\n        fontSize: token.breadcrumbIconFontSize,\n      },\n\n      ol: {\n        display: 'flex',\n        flexWrap: 'wrap',\n        margin: 0,\n        padding: 0,\n        listStyle: 'none',\n      },\n\n      a: {\n        color: token.breadcrumbLinkColor,\n        transition: `color ${token.motionDurationMid}`,\n        padding: `0 ${token.paddingXXS}px`,\n        borderRadius: token.borderRadiusSM,\n        height: token.lineHeight * token.fontSize,\n        display: 'inline-block',\n        marginInline: -token.marginXXS,\n\n        '&:hover': {\n          color: token.breadcrumbLinkColorHover,\n          backgroundColor: token.colorBgTextHover,\n        },\n\n        ...genFocusStyle(token),\n      },\n\n      [`li:last-child`]: {\n        color: token.breadcrumbLastItemColor,\n\n        [`& > ${componentCls}-separator`]: {\n          display: 'none',\n        },\n      },\n\n      [`${componentCls}-separator`]: {\n        marginInline: token.breadcrumbSeparatorMargin,\n        color: token.breadcrumbSeparatorColor,\n      },\n\n      [`${componentCls}-link`]: {\n        [`\n          > ${iconCls} + span,\n          > ${iconCls} + a\n        `]: {\n          marginInlineStart: token.marginXXS,\n        },\n      },\n\n      [`${componentCls}-overlay-link`]: {\n        borderRadius: token.borderRadiusSM,\n        height: token.lineHeight * token.fontSize,\n        display: 'inline-block',\n        padding: `0 ${token.paddingXXS}px`,\n        marginInline: -token.marginXXS,\n\n        [`> ${iconCls}`]: {\n          marginInlineStart: token.marginXXS,\n          fontSize: token.fontSizeIcon,\n        },\n\n        '&:hover': {\n          color: token.breadcrumbLinkColorHover,\n          backgroundColor: token.colorBgTextHover,\n\n          a: {\n            color: token.breadcrumbLinkColorHover,\n          },\n        },\n\n        a: {\n          '&:hover': {\n            backgroundColor: 'transparent',\n          },\n        },\n      },\n\n      // rtl style\n      [`&${token.componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Breadcrumb', token => {\n  const BreadcrumbToken = mergeToken<BreadcrumbToken>(token, {\n    breadcrumbBaseColor: token.colorTextDescription,\n    breadcrumbFontSize: token.fontSize,\n    breadcrumbIconFontSize: token.fontSize,\n    breadcrumbLinkColor: token.colorTextDescription,\n    breadcrumbLinkColorHover: token.colorText,\n    breadcrumbLastItemColor: token.colorText,\n    breadcrumbSeparatorMargin: token.marginXS,\n    breadcrumbSeparatorColor: token.colorTextDescription,\n  });\n\n  return [genBreadcrumbStyle(BreadcrumbToken)];\n});\n"
  },
  {
    "path": "components/button/LoadingIcon.tsx",
    "content": "import { defineComponent, nextTick, Transition } from 'vue';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nconst getCollapsedWidth = (node: HTMLSpanElement) => {\n  if (node) {\n    node.style.width = '0px';\n    node.style.opacity = '0';\n    node.style.transform = 'scale(0)';\n  }\n};\nconst getRealWidth = (node: HTMLSpanElement) => {\n  nextTick(() => {\n    if (node) {\n      node.style.width = `${node.scrollWidth}px`;\n      node.style.opacity = '1';\n      node.style.transform = 'scale(1)';\n    }\n  });\n};\nconst resetStyle = (node: HTMLSpanElement) => {\n  if (node && node.style) {\n    node.style.width = null;\n    node.style.opacity = null;\n    node.style.transform = null;\n  }\n};\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'LoadingIcon',\n  props: {\n    prefixCls: String,\n    loading: [Boolean, Object],\n    existIcon: Boolean,\n  },\n  setup(props) {\n    return () => {\n      const { existIcon, prefixCls, loading } = props;\n      if (existIcon) {\n        return (\n          <span class={`${prefixCls}-loading-icon`}>\n            <LoadingOutlined />\n          </span>\n        );\n      }\n      const visible = !!loading;\n      return (\n        <Transition\n          name={`${prefixCls}-loading-icon-motion`}\n          onBeforeEnter={getCollapsedWidth}\n          onEnter={getRealWidth}\n          onAfterEnter={resetStyle}\n          onBeforeLeave={getRealWidth}\n          onLeave={(node: HTMLSpanElement) => {\n            setTimeout(() => {\n              getCollapsedWidth(node);\n            });\n          }}\n          onAfterLeave={resetStyle}\n        >\n          {visible ? (\n            <span class={`${prefixCls}-loading-icon`}>\n              <LoadingOutlined />\n            </span>\n          ) : null}\n        </Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/button/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/button/demo/basic.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Default Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>Dashed Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-text\" type=\"button\">\n      <!----><span>Text Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-link\" type=\"button\">\n      <!----><span>Link Button</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/block.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-block\" type=\"button\">\n      <!----><span>Primary</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-block\" type=\"button\">\n      <!----><span>Default</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed ant-btn-block\" type=\"button\">\n      <!----><span>Dashed</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-block ant-btn-dangerous\" type=\"button\">\n      <!----><span>Danger</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-link ant-btn-block\" type=\"button\">\n      <!----><span>Link</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/button-group.vue correctly 1`] = `\n<div id=\"components-button-demo-button-group\">\n  <h4>Basic</h4>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Cancel</span>\n    </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>OK</span>\n    </button></div>\n  <div class=\"ant-btn-group\"><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>L</span>\n    </button><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>M</span>\n    </button><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>R</span>\n    </button></div>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>L</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>M</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>M</span>\n    </button><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>R</span>\n    </button></div>\n  <h4>With Icon</h4>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span><span>Go back</span>\n    </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Go forward</span><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span>\n    </button></div>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-primary ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"cloud\" class=\"anticon anticon-cloud\"><svg focusable=\"false\" class=\"\" data-icon=\"cloud\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 01-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 01140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0166.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z\"></path></svg></span></button><button class=\"ant-btn ant-btn-primary ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"cloud-download\" class=\"anticon anticon-cloud-download\"><svg focusable=\"false\" class=\"\" data-icon=\"cloud-download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z\"></path><path d=\"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 01-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z\"></path></svg></span></button></div>\n</div>\n`;\n\nexports[`renders ./components/button/demo/danger.vue correctly 1`] = `\n<div warp=\"\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-dangerous\" type=\"button\">\n      <!----><span>Primary</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-dangerous\" type=\"button\">\n      <!----><span>Default</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed ant-btn-dangerous\" type=\"button\">\n      <!----><span>Dashed</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-text ant-btn-dangerous\" type=\"button\">\n      <!----><span>Text</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-link ant-btn-dangerous\" type=\"button\">\n      <!----><span>Link</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/disabled.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n          <!----><span>Default</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n          <!----><span>Default(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n          <!----><span>Dashed</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-dashed\" type=\"button\">\n          <!----><span>Dashed(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-text\" type=\"button\">\n          <!----><span>Text</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-text\" type=\"button\">\n          <!----><span>Text(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-link\" type=\"button\">\n          <!----><span>Link</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-link\" type=\"button\">\n          <!----><span>Link(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Default</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-default ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Default(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-text ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Text</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-text ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Text(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-link ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Link</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-link ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger Link(disabled)</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"padding: 8px; background: rgb(190, 200, 200);\">\n      <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n        <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-background-ghost\" type=\"button\">\n            <!----><span>Ghost</span>\n          </button></div>\n        <!---->\n        <div class=\"ant-space-item\"><button disabled=\"\" class=\"ant-btn ant-btn-default ant-btn-background-ghost\" type=\"button\">\n            <!----><span>Ghost(disabled)</span>\n          </button></div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/ghost.vue correctly 1`] = `\n<div style=\"background: rgb(190, 200, 200); padding: 16px 16px;\">\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-background-ghost\" type=\"button\">\n        <!----><span>Primary</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-background-ghost\" type=\"button\">\n        <!----><span>Default</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed ant-btn-background-ghost\" type=\"button\">\n        <!----><span>Dashed</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary ant-btn-background-ghost ant-btn-dangerous\" type=\"button\">\n        <!----><span>Danger</span>\n      </button></div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/button/demo/icon.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div warp=\"\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-primary ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-primary\" type=\"button\">\n          <!----><span>A</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span><span>Search</span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span><span>Search</span></button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div warp=\"\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span><span>Search</span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-dashed ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span><span>Search</span></button></div>\n      <!---->\n      <div class=\"ant-space-item\"><a class=\"ant-btn ant-btn-default ant-btn-icon-only\" href=\"https://www.google.com\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></a></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/loading.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>Loading</span></button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>Loading</span></button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>mouseenter me!</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"poweroff\" class=\"anticon anticon-poweroff\"><svg focusable=\"false\" class=\"\" data-icon=\"poweroff\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M705.6 124.9a8 8 0 00-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0162.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0127.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 01-76.3 113.3 353.06 353.06 0 01-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 01-113.2-76.4A355.92 355.92 0 01184 650.4a355 355 0 01-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z\"></path></svg></span><span>延迟1s</span></button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-loading ant-btn-icon-only\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-primary ant-btn-loading ant-btn-icon-only\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span></button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-round ant-btn-default ant-btn-loading ant-btn-dangerous ant-btn-icon-only\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span></button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/multiple.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>secondary</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>Actions</span><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    </button>\n    <!---->\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/button/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"large\"><span class=\"ant-radio-button-inner\"></span></span><span>Large</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"default\"><span class=\"ant-radio-button-inner\"></span></span><span>Default</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"small\"><span class=\"ant-radio-button-inner\"></span></span><span>Small</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-lg\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-lg\" type=\"button\">\n          <!----><span>Normal</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed ant-btn-lg\" type=\"button\">\n          <!----><span>Dashed</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default ant-btn-lg ant-btn-dangerous\" type=\"button\">\n          <!----><span>Danger</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-link ant-btn-lg\" type=\"button\">\n          <!----><span>Link</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary ant-btn-lg ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-circle ant-btn-primary ant-btn-lg ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-round ant-btn-primary ant-btn-lg\" type=\"button\"><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Download</span></button></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-round ant-btn-primary ant-btn-lg ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary ant-btn-lg\" type=\"button\"><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Download</span></button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/button/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Button fixbug renders {0} , 0 and {false} 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>0</span>\n</button>\n`;\n\nexports[`Button fixbug renders {0} , 0 and {false} 2`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>0</span>\n</button>\n`;\n\nexports[`Button fixbug renders {0} , 0 and {false} 3`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!---->\n</button>\n`;\n\nexports[`Button renders Chinese characters correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>按 钮</span>\n</button>\n`;\n\nexports[`Button renders Chinese characters correctly 2`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span><span>按钮</span>\n</button>\n`;\n\nexports[`Button renders Chinese characters correctly 3`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>按 钮</span>\n</button>\n`;\n\nexports[`Button renders Chinese characters correctly 4`] = `<button class=\"ant-btn ant-btn-default ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>按 钮</span></button>`;\n\nexports[`Button renders Chinese characters correctly 5`] = `<button class=\"ant-btn ant-btn-default ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>按 钮</span></button>`;\n\nexports[`Button renders Chinese characters correctly 6`] = `\n<button class=\"ant-btn ant-btn-default ant-btn-two-chinese-chars\" type=\"button\">\n  <!----><span>按钮</span>\n</button>\n`;\n\nexports[`Button renders correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Follow</span>\n</button>\n`;\n\nexports[`Button should not render as link button when href is undefined 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>button</span>\n</button>\n`;\n\nexports[`Button should support link button 1`] = `\n<a class=\"ant-btn ant-btn-default\" href=\"http://ant.design\" target=\"_blank\">\n  <!----><span>link button</span>\n</a>\n`;\n"
  },
  {
    "path": "components/button/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('button');\n"
  },
  {
    "path": "components/button/__tests__/index.test.js",
    "content": "import Button from '../index';\nimport SearchOutlined from '@ant-design/icons-vue/SearchOutlined';\nimport { mount } from '@vue/test-utils';\nimport { nextTick } from 'vue';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { resetWarned } from '../../_util/warning';\nimport focusTest from '../../../tests/shared/focusTest';\n\ndescribe('Button', () => {\n  mountTest(Button);\n  mountTest(Button.Group);\n  focusTest(Button);\n  it('renders correctly', () => {\n    const wrapper = mount({\n      render() {\n        return <Button>Follow</Button>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('create primary button', () => {\n    const wrapper = mount({\n      render() {\n        return <Button type=\"primary\">按钮</Button>;\n      },\n    });\n    expect(wrapper.find('.ant-btn-primary').exists()).toBe(true);\n  });\n\n  it('renders Chinese characters correctly', done => {\n    const wrapper = mount({\n      render() {\n        return <Button>按钮</Button>;\n      },\n    });\n    expect(wrapper.text()).toBe('按 钮');\n\n    const wrapper1 = mount({\n      render() {\n        return (\n          <Button>\n            {/* <SearchOutlined v-slot:icon /> */}\n            按钮\n          </Button>\n        );\n      },\n    });\n\n    expect(wrapper1.html()).toMatchSnapshot();\n\n    const wrapper2 = mount({\n      render() {\n        return (\n          <Button>\n            <SearchOutlined />\n            按钮\n          </Button>\n        );\n      },\n    });\n    expect(wrapper2.html()).toMatchSnapshot();\n    // should not insert space when there is icon\n    const wrapper3 = mount({\n      render() {\n        return (\n          <Button>\n            {/* <SearchOutlined slot=\"icon\" /> */}\n            按钮\n          </Button>\n        );\n      },\n    });\n    expect(wrapper3.html()).toMatchSnapshot();\n    // should not insert space when there is icon while loading\n    const wrapper4 = mount({\n      render() {\n        return (\n          <Button loading>\n            {/* <SearchOutlined slot=\"icon\" /> */}\n            按钮\n          </Button>\n        );\n      },\n    });\n    expect(wrapper4.html()).toMatchSnapshot();\n    // should insert space while loading\n    const wrapper5 = mount({\n      render() {\n        return <Button loading>按钮</Button>;\n      },\n    });\n    expect(wrapper5.html()).toMatchSnapshot();\n    const wrapper6 = mount({\n      render() {\n        return (\n          <Button>\n            <span>按钮</span>\n          </Button>\n        );\n      },\n    });\n    nextTick(() => {\n      // expect(wrapper6.find('.ant-btn-two-chinese-chars').exists()).toBe(true);\n      expect(wrapper6.html()).toMatchSnapshot();\n      done();\n    });\n  });\n  it('should change loading state instantly by default', async () => {\n    const DefaultButton = {\n      data() {\n        return {\n          loading: false,\n        };\n      },\n      methods: {\n        enterLoading() {\n          this.loading = true;\n        },\n      },\n\n      render() {\n        return (\n          <Button loading={this.loading} onClick={this.enterLoading}>\n            Button\n          </Button>\n        );\n      },\n    };\n    const wrapper = mount(DefaultButton, { sync: false });\n    await asyncExpect(() => {\n      wrapper.trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-btn-loading').length).toBe(1);\n    });\n  });\n\n  it('should change loading state with delay', async () => {\n    const DefaultButton = {\n      data() {\n        return {\n          loading: false,\n        };\n      },\n      methods: {\n        enterLoading() {\n          this.loading = { delay: 1000 };\n        },\n      },\n\n      render() {\n        return (\n          <Button loading={this.loading} onClick={this.enterLoading}>\n            Button\n          </Button>\n        );\n      },\n    };\n    const wrapper = mount(DefaultButton, { sync: false });\n    await asyncExpect(() => {\n      wrapper.trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-btn-loading').exists()).toBe(false);\n    });\n  });\n  it('should not clickable when button is loading', () => {\n    const onClick = jest.fn();\n    const wrapper = mount({\n      render() {\n        return (\n          <Button loading onClick={onClick}>\n            button\n          </Button>\n        );\n      },\n    });\n    wrapper.trigger('click');\n    expect(onClick).not.toHaveBeenCalledWith();\n  });\n  it('should support link button', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Button target=\"_blank\" href=\"http://ant.design\">\n            link button\n          </Button>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('fixbug renders {0} , 0 and {false}', () => {\n    const wrapper = mount({\n      render() {\n        return <Button>{0}</Button>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n\n    const wrapper1 = mount({\n      render() {\n        return <Button>0</Button>;\n      },\n    });\n    expect(wrapper1.html()).toMatchSnapshot();\n\n    const wrapper2 = mount({\n      render() {\n        return <Button>{false}</Button>;\n      },\n    });\n    expect(wrapper2.html()).toMatchSnapshot();\n  });\n\n  it('should not render as link button when href is undefined', async () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Button type=\"primary\" href={undefined}>\n            button\n          </Button>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should support to change loading', async () => {\n    const wrapper = mount(Button);\n    wrapper.setProps({ loading: true });\n    await sleep();\n    expect(wrapper.findAll('.ant-btn-loading').length).toBe(1);\n    wrapper.setProps({ loading: false });\n    await sleep();\n    expect(wrapper.findAll('.ant-btn-loading').length).toBe(0);\n    wrapper.setProps({ loading: { delay: 50 } });\n    await sleep();\n    expect(wrapper.findAll('.ant-btn-loading').length).toBe(0);\n    await sleep(50);\n    expect(wrapper.findAll('.ant-btn-loading').length).toBe(1);\n    wrapper.setProps({ loading: false });\n    await sleep(50);\n    expect(wrapper.findAll('.ant-btn-loading').length).toBe(0);\n    expect(() => {\n      wrapper.unmount();\n    }).not.toThrow();\n  });\n\n  it('should warning when pass type=link and ghost=true', () => {\n    resetWarned();\n    const warnSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return <Button type=\"link\" ghost />;\n      },\n    });\n    expect(warnSpy).toHaveBeenCalledWith(\n      \"Warning: [ant-design-vue: Button] `link` or `text` button can't be a `ghost` button.\",\n    );\n    warnSpy.mockRestore();\n  });\n\n  it('should warning when pass type=text and ghost=true', () => {\n    resetWarned();\n    const warnSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return <Button type=\"text\" ghost />;\n      },\n    });\n    expect(warnSpy).toHaveBeenCalledWith(\n      \"Warning: [ant-design-vue: Button] `link` or `text` button can't be a `ghost` button.\",\n    );\n    warnSpy.mockRestore();\n  });\n\n  it('should not redirect when button is disabled', async () => {\n    const onClick = jest.fn();\n    const wrapper = mount({\n      render() {\n        return (\n          <Button href=\"https://ant.design\" onClick={onClick} disabled>\n            click me\n          </Button>\n        );\n      },\n    });\n    await asyncExpect(() => {\n      wrapper.trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(onClick).not.toHaveBeenCalled();\n    });\n  });\n});\n"
  },
  {
    "path": "components/button/__tests__/wave.test.js",
    "content": "import Button from '../index';\nimport { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\n\ndescribe('click wave effect', () => {\n  async function clickButton(wrapper) {\n    await asyncExpect(() => {\n      wrapper.find('.ant-btn').trigger('click');\n    });\n    wrapper.find('.ant-btn').element.dispatchEvent(new Event('transitionstart'));\n    await sleep(20);\n    wrapper.find('.ant-btn').element.dispatchEvent(new Event('animationend'));\n    await sleep(20);\n  }\n\n  it('should handle transitionstart', async () => {\n    const wrapper = mount({\n      render() {\n        return <Button type=\"primary\">button</Button>;\n      },\n    });\n    await clickButton(wrapper);\n    const buttonNode = wrapper.find('.ant-btn').element;\n    buttonNode.dispatchEvent(new Event('transitionstart'));\n    wrapper.unmount();\n    buttonNode.dispatchEvent(new Event('transitionstart'));\n  });\n});\n"
  },
  {
    "path": "components/button/button-group.tsx",
    "content": "import { computed, defineComponent, reactive } from 'vue';\nimport { flattenChildren } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useToken } from '../theme/internal';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport type { SizeType } from '../config-provider';\nimport devWarning from '../vc-util/devWarning';\nimport createContext from '../_util/createContext';\n\nexport const buttonGroupProps = () => ({\n  prefixCls: String,\n  size: {\n    type: String as PropType<SizeType>,\n  },\n});\n\nexport type ButtonGroupProps = Partial<ExtractPropTypes<ReturnType<typeof buttonGroupProps>>>;\nexport const GroupSizeContext = createContext<{\n  size: SizeType;\n}>();\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AButtonGroup',\n  props: buttonGroupProps(),\n  setup(props, { slots }) {\n    const { prefixCls, direction } = useConfigInject('btn-group', props);\n    const [, , hashId] = useToken();\n    GroupSizeContext.useProvide(\n      reactive({\n        size: computed(() => props.size),\n      }),\n    );\n    const classes = computed(() => {\n      const { size } = props;\n      let sizeCls = '';\n      switch (size) {\n        case 'large':\n          sizeCls = 'lg';\n          break;\n        case 'small':\n          sizeCls = 'sm';\n          break;\n        case 'middle':\n        case undefined:\n          break;\n        default:\n          // eslint-disable-next-line no-console\n          devWarning(!size, 'Button.Group', 'Invalid prop `size`.');\n      }\n      return {\n        [`${prefixCls.value}`]: true,\n        [`${prefixCls.value}-${sizeCls}`]: sizeCls,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [hashId.value]: true,\n      };\n    });\n    return () => {\n      return <div class={classes.value}>{flattenChildren(slots.default?.())}</div>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/button/button.tsx",
    "content": "import {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  shallowRef,\n  Text,\n  watch,\n  watchEffect,\n} from 'vue';\nimport Wave from '../_util/wave';\nimport buttonProps from './buttonTypes';\nimport { flattenChildren, initDefaultProps } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\nimport devWarning from '../vc-util/devWarning';\nimport LoadingIcon from './LoadingIcon';\nimport useStyle from './style';\nimport type { ButtonType } from './buttonTypes';\nimport type { VNode } from 'vue';\nimport { GroupSizeContext } from './button-group';\nimport { useCompactItemContext } from '../space/Compact';\nimport type { CustomSlotsType } from '../_util/type';\n\ntype Loading = boolean | number;\n\nconst rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nconst isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\n\nfunction isUnBorderedButtonType(type: ButtonType | undefined) {\n  return type === 'text' || type === 'link';\n}\nexport { buttonProps };\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AButton',\n  inheritAttrs: false,\n  __ANT_BUTTON: true,\n  props: initDefaultProps(buttonProps(), { type: 'default' }),\n  slots: Object as CustomSlotsType<{\n    icon: any;\n    default: any;\n  }>,\n  // emits: ['click', 'mousedown'],\n  setup(props, { slots, attrs, emit, expose }) {\n    const { prefixCls, autoInsertSpaceInButton, direction, size } = useConfigInject('btn', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const groupSizeContext = GroupSizeContext.useInject();\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => props.disabled ?? disabledContext.value);\n    const buttonNodeRef = shallowRef<HTMLElement>(null);\n    const delayTimeoutRef = shallowRef(undefined);\n    let isNeedInserted = false;\n\n    const innerLoading = shallowRef<Loading>(false);\n    const hasTwoCNChar = shallowRef(false);\n\n    const autoInsertSpace = computed(() => autoInsertSpaceInButton.value !== false);\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n\n    // =============== Update Loading ===============\n    const loadingOrDelay = computed(() =>\n      typeof props.loading === 'object' && props.loading.delay\n        ? props.loading.delay || true\n        : !!props.loading,\n    );\n\n    watch(\n      loadingOrDelay,\n      val => {\n        clearTimeout(delayTimeoutRef.value);\n        if (typeof loadingOrDelay.value === 'number') {\n          delayTimeoutRef.value = setTimeout(() => {\n            innerLoading.value = val;\n          }, loadingOrDelay.value);\n        } else {\n          innerLoading.value = val;\n        }\n      },\n      {\n        immediate: true,\n      },\n    );\n\n    const classes = computed(() => {\n      const { type, shape = 'default', ghost, block, danger } = props;\n      const pre = prefixCls.value;\n\n      const sizeClassNameMap = { large: 'lg', small: 'sm', middle: undefined };\n      const sizeFullname = compactSize.value || groupSizeContext?.size || size.value;\n      const sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || '' : '';\n\n      return [\n        compactItemClassnames.value,\n        {\n          [hashId.value]: true,\n          [`${pre}`]: true,\n          [`${pre}-${shape}`]: shape !== 'default' && shape,\n          [`${pre}-${type}`]: type,\n          [`${pre}-${sizeCls}`]: sizeCls,\n          [`${pre}-loading`]: innerLoading.value,\n          [`${pre}-background-ghost`]: ghost && !isUnBorderedButtonType(type),\n          [`${pre}-two-chinese-chars`]: hasTwoCNChar.value && autoInsertSpace.value,\n          [`${pre}-block`]: block,\n          [`${pre}-dangerous`]: !!danger,\n          [`${pre}-rtl`]: direction.value === 'rtl',\n        },\n      ];\n    });\n\n    const fixTwoCNChar = () => {\n      // Fix for HOC usage like <FormatMessage />\n      const node = buttonNodeRef.value!;\n      if (!node || autoInsertSpaceInButton.value === false) {\n        return;\n      }\n      const buttonText = node.textContent;\n\n      if (isNeedInserted && isTwoCNChar(buttonText)) {\n        if (!hasTwoCNChar.value) {\n          hasTwoCNChar.value = true;\n        }\n      } else if (hasTwoCNChar.value) {\n        hasTwoCNChar.value = false;\n      }\n    };\n    const handleClick = (event: Event) => {\n      // https://github.com/ant-design/ant-design/issues/30207\n      if (innerLoading.value || mergedDisabled.value) {\n        event.preventDefault();\n        return;\n      }\n      emit('click', event);\n    };\n    const handleMousedown = (event: Event) => {\n      emit('mousedown', event);\n    };\n\n    const insertSpace = (child: VNode, needInserted: boolean) => {\n      const SPACE = needInserted ? ' ' : '';\n      if (child.type === Text) {\n        let text = (child.children as string).trim();\n        if (isTwoCNChar(text)) {\n          text = text.split('').join(SPACE);\n        }\n        return <span>{text}</span>;\n      }\n      return child;\n    };\n\n    watchEffect(() => {\n      devWarning(\n        !(props.ghost && isUnBorderedButtonType(props.type)),\n        'Button',\n        \"`link` or `text` button can't be a `ghost` button.\",\n      );\n    });\n\n    onMounted(fixTwoCNChar);\n    onUpdated(fixTwoCNChar);\n\n    onBeforeUnmount(() => {\n      delayTimeoutRef.value && clearTimeout(delayTimeoutRef.value);\n    });\n\n    const focus = () => {\n      buttonNodeRef.value?.focus();\n    };\n    const blur = () => {\n      buttonNodeRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n\n    return () => {\n      const { icon = slots.icon?.() } = props;\n      const children = flattenChildren(slots.default?.());\n\n      isNeedInserted = children.length === 1 && !icon && !isUnBorderedButtonType(props.type);\n\n      const { type, htmlType, href, title, target } = props;\n\n      const iconType = innerLoading.value ? 'loading' : icon;\n      const buttonProps = {\n        ...attrs,\n        title,\n        disabled: mergedDisabled.value,\n        class: [\n          classes.value,\n          attrs.class,\n          { [`${prefixCls.value}-icon-only`]: children.length === 0 && !!iconType },\n        ],\n        onClick: handleClick,\n        onMousedown: handleMousedown,\n      };\n      // https://github.com/vueComponent/ant-design-vue/issues/4930\n      if (!mergedDisabled.value) {\n        delete buttonProps.disabled;\n      }\n      const iconNode =\n        icon && !innerLoading.value ? (\n          icon\n        ) : (\n          <LoadingIcon\n            existIcon={!!icon}\n            prefixCls={prefixCls.value}\n            loading={!!innerLoading.value}\n          />\n        );\n\n      const kids = children.map(child =>\n        insertSpace(child, isNeedInserted && autoInsertSpace.value),\n      );\n\n      if (href !== undefined) {\n        return wrapSSR(\n          <a {...buttonProps} href={href} target={target} ref={buttonNodeRef}>\n            {iconNode}\n            {kids}\n          </a>,\n        );\n      }\n\n      let buttonNode = (\n        <button {...buttonProps} ref={buttonNodeRef} type={htmlType}>\n          {iconNode}\n          {kids}\n        </button>\n      );\n\n      if (!isUnBorderedButtonType(type)) {\n        buttonNode = (\n          <Wave ref=\"wave\" disabled={!!innerLoading.value}>\n            {buttonNode}\n          </Wave>\n        );\n      }\n\n      return wrapSSR(buttonNode);\n    };\n  },\n});\n"
  },
  {
    "path": "components/button/buttonTypes.ts",
    "content": "import PropTypes from '../_util/vue-types';\n\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport type { SizeType } from '../config-provider';\nimport { eventType } from '../_util/type';\nimport type { MouseEventHandler } from '../_util/EventInterface';\n\nexport type ButtonType = 'link' | 'default' | 'primary' | 'ghost' | 'dashed' | 'text';\nexport type ButtonShape = 'default' | 'circle' | 'round';\n\nexport type ButtonHTMLType = 'submit' | 'button' | 'reset';\n\nexport type LegacyButtonType = ButtonType | 'danger';\nexport function convertLegacyProps(type?: LegacyButtonType): ButtonProps {\n  if (type === 'danger') {\n    return { danger: true };\n  }\n  return { type };\n}\n\nexport const buttonProps = () => ({\n  prefixCls: String,\n  type: String as PropType<ButtonType>,\n  htmlType: { type: String as PropType<ButtonHTMLType>, default: 'button' },\n  shape: { type: String as PropType<ButtonShape> },\n  size: {\n    type: String as PropType<SizeType>,\n  },\n  loading: {\n    type: [Boolean, Object] as PropType<boolean | { delay?: number }>,\n    default: (): boolean | { delay?: number } => false,\n  },\n  disabled: { type: Boolean, default: undefined },\n  ghost: { type: Boolean, default: undefined },\n  block: { type: Boolean, default: undefined },\n  danger: { type: Boolean, default: undefined },\n  icon: PropTypes.any,\n  href: String,\n  target: String,\n  title: String,\n  onClick: eventType<MouseEventHandler>(),\n  onMousedown: eventType<MouseEventHandler>(),\n});\n\nexport type ButtonProps = Partial<ExtractPropTypes<ReturnType<typeof buttonProps>>>;\n\nexport default buttonProps;\n"
  },
  {
    "path": "components/button/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 按钮类型\n  en-US: Type\n---\n\n## zh-CN\n\n按钮有五种类型：主按钮、默认按钮、虚线按钮、文本按钮和链接按钮。主按钮在同一个操作区域最多出现一次。\n\n## en-US\n\nThere are `primary` button, `default` button, `dashed` button, `text` button and `link` button in antd.\n\n</docs>\n\n<template>\n  <a-space wrap>\n    <a-button type=\"primary\">Primary Button</a-button>\n    <a-button>Default Button</a-button>\n    <a-button type=\"dashed\">Dashed Button</a-button>\n    <a-button type=\"text\">Text Button</a-button>\n    <a-button type=\"link\">Link Button</a-button>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/button/demo/block.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: Block 按钮\n  en-US: Block Button\n---\n\n## zh-CN\n\n`block` 属性将使按钮适合其父宽度。\n\n## en-US\n\n`block` property will make the button fit to its parent width.\n</docs>\n\n<template>\n  <a-space wrap>\n    <a-button type=\"primary\" block>Primary</a-button>\n    <a-button block>Default</a-button>\n    <a-button type=\"dashed\" block>Dashed</a-button>\n    <a-button danger block>Danger</a-button>\n    <a-button type=\"link\" block>Link</a-button>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/button/demo/button-group.vue",
    "content": "<docs>\n---\norder: 99\ntitle:\n  zh-CN: 废弃的 Block 组\n  en-US: Deprecated Button Group\ndebug: true\n---\n\n## zh-CN\n\nDebug usage\n\n## en-US\n\nDebug usage\n</docs>\n\n<template>\n  <div id=\"components-button-demo-button-group\">\n    <h4>Basic</h4>\n    <a-button-group>\n      <a-button>Cancel</a-button>\n      <a-button type=\"primary\">OK</a-button>\n    </a-button-group>\n    <a-button-group>\n      <a-button disabled>L</a-button>\n      <a-button disabled>M</a-button>\n      <a-button disabled>R</a-button>\n    </a-button-group>\n    <a-button-group>\n      <a-button type=\"primary\">L</a-button>\n      <a-button>M</a-button>\n      <a-button>M</a-button>\n      <a-button type=\"dashed\">R</a-button>\n    </a-button-group>\n    <h4>With Icon</h4>\n    <a-button-group>\n      <a-button type=\"primary\">\n        <LeftOutlined />\n        Go back\n      </a-button>\n      <a-button type=\"primary\">\n        Go forward\n        <RightOutlined />\n      </a-button>\n    </a-button-group>\n    <a-button-group>\n      <a-button type=\"primary\">\n        <template #icon><CloudOutlined /></template>\n      </a-button>\n      <a-button type=\"primary\">\n        <template #icon><CloudDownloadOutlined /></template>\n      </a-button>\n    </a-button-group>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  LeftOutlined,\n  RightOutlined,\n  CloudDownloadOutlined,\n  CloudOutlined,\n} from '@ant-design/icons-vue';\n</script>\n\n<style scoped>\n#components-button-demo-button-group > h4 {\n  margin: 16px 0;\n  font-size: 14px;\n  line-height: 1;\n  font-weight: normal;\n}\n#components-button-demo-button-group > h4:first-child {\n  margin-top: 0;\n}\n#components-button-demo-button-group .ant-btn-group {\n  margin-right: 8px;\n}\n</style>\n```\n"
  },
  {
    "path": "components/button/demo/danger.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 危险按钮\n  en-US: Danger Button\n---\n\n## zh-CN\n\n在 2.2.0 之后，危险成为一种按钮属性而不是按钮类型。\n\n## en-US\n\ndanger is a property of button after antd 2.2.0.\n\n</docs>\n\n<template>\n  <a-space warp>\n    <a-button type=\"primary\" danger>Primary</a-button>\n    <a-button danger>Default</a-button>\n    <a-button type=\"dashed\" danger>Dashed</a-button>\n    <a-button type=\"text\" danger>Text</a-button>\n    <a-button type=\"link\" danger>Link</a-button>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/button/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 不可用状态\n  en-US: Disabled\n---\n\n## zh-CN\n\n添加 `disabled` 属性即可让按钮处于不可用状态，同时按钮样式也会改变。\n\n## en-US\n\nTo mark a button as disabled, add the `disabled` property to the `Button`.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-space>\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button type=\"primary\" disabled>Primary(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button>Default</a-button>\n      <a-button disabled>Default(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"dashed\">Dashed</a-button>\n      <a-button type=\"dashed\" disabled>Dashed(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"text\">Text</a-button>\n      <a-button type=\"text\" disabled>Text(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"link\">Link</a-button>\n      <a-button type=\"link\" disabled>Link(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button danger>Danger Default</a-button>\n      <a-button danger disabled>Danger Default(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button danger type=\"text\">Danger Text</a-button>\n      <a-button danger type=\"text\" disabled>Danger Text(disabled)</a-button>\n    </a-space>\n    <a-space>\n      <a-button danger type=\"link\">Danger Link</a-button>\n      <a-button danger type=\"link\" disabled>Danger Link(disabled)</a-button>\n    </a-space>\n    <div :style=\"{ padding: '8px', background: 'rgb(190, 200, 200)' }\">\n      <a-space>\n        <a-button ghost>Ghost</a-button>\n        <a-button ghost disabled>Ghost(disabled)</a-button>\n      </a-space>\n    </div>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/button/demo/ghost.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 幽灵按钮\n  en-US: Ghost Button\n---\n\n## zh-CN\n\n幽灵按钮将按钮的内容反色，背景变为透明，常用在有色背景上。\n\n## en-US\n\n`ghost` property will make button's background transparent, it is commonly used in colored background.\n\n</docs>\n\n<template>\n  <div :style=\"{ background: 'rgb(190, 200, 200)', padding: '16px 16px' }\">\n    <a-space>\n      <a-button type=\"primary\" ghost>Primary</a-button>\n      <a-button ghost>Default</a-button>\n      <a-button type=\"dashed\" ghost>Dashed</a-button>\n      <a-button type=\"primary\" danger ghost>Danger</a-button>\n    </a-space>\n  </div>\n</template>\n"
  },
  {
    "path": "components/button/demo/icon.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 图标按钮\n  en-US: Icon\n---\n\n## zh-CN\n\n当需要在 `Button` 内嵌入 `Icon` 时，可以设置 `icon` 属性，或者直接在 `Button` 内使用 `Icon` 组件。\n\n如果想控制 `Icon` 具体的位置，只能直接使用 `Icon` 组件，而非 `icon` 属性。\n\n## en-US\n\n`Button` components can contain an `Icon`. This is done by setting the `icon` property or placing an `Icon` component within the `Button`.\n\nIf you want specific control over the positioning and placement of the `Icon`, then that should be done by placing the `Icon` component within the `Button` rather than using the `icon` property.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-space wrap>\n      <a-tooltip title=\"search\">\n        <a-button type=\"primary\" shape=\"circle\" :icon=\"h(SearchOutlined)\" />\n      </a-tooltip>\n      <a-button type=\"primary\" shape=\"circle\">A</a-button>\n      <a-button type=\"primary\" :icon=\"h(SearchOutlined)\">Search</a-button>\n      <a-tooltip title=\"search\">\n        <a-button shape=\"circle\" :icon=\"h(SearchOutlined)\" />\n      </a-tooltip>\n      <a-button :icon=\"h(SearchOutlined)\">Search</a-button>\n    </a-space>\n    <a-space wrap>\n      <a-tooltip title=\"search\">\n        <a-button shape=\"circle\" :icon=\"h(SearchOutlined)\" />\n      </a-tooltip>\n      <a-button :icon=\"h(SearchOutlined)\">Search</a-button>\n      <a-tooltip title=\"search\">\n        <a-button type=\"dashed\" shape=\"circle\" :icon=\"h(SearchOutlined)\" />\n      </a-tooltip>\n      <a-button type=\"dashed\" :icon=\"h(SearchOutlined)\">Search</a-button>\n      <a-button :icon=\"h(SearchOutlined)\" href=\"https://www.google.com\" />\n    </a-space>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\nimport { SearchOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/button/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <disabled />\n    <ghost />\n    <icon />\n    <loading />\n    <multiple />\n    <size />\n    <block />\n    <danger />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Disabled from './disabled.vue';\nimport Ghost from './ghost.vue';\nimport Icon from './icon.vue';\nimport Loading from './loading.vue';\nimport Multiple from './multiple.vue';\nimport Size from './size.vue';\nimport Block from './block.vue';\nimport Danger from './danger.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Disabled,\n    Ghost,\n    Icon,\n    Loading,\n    Multiple,\n    Size,\n    Block,\n    Danger,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style scoped>\n[id^='components-button-demo-'] .ant-btn {\n  margin-right: 8px;\n  margin-bottom: 12px;\n}\n[id^='components-button-demo-'] .ant-btn-rtl {\n  margin-right: 0;\n  margin-left: 8px;\n}\n[id^='components-button-demo-'] .ant-btn-group > .ant-btn,\n[id^='components-button-demo-'] .ant-btn-group > span > .ant-btn {\n  margin-right: 0;\n}\n[data-theme='dark'] .site-button-ghost-wrapper {\n  background: rgba(255, 255, 255, 0.2);\n}\n</style>\n"
  },
  {
    "path": "components/button/demo/loading.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 加载中状态\n  en-US: Loading\n---\n\n## zh-CN\n\n添加 `loading` 属性即可让按钮处于加载状态，最后两个按钮演示点击后进入加载状态。\n\n## en-US\n\nA loading indicator can be added to a button by setting the `loading` property on the `Button`.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-space>\n      <a-button type=\"primary\" loading>Loading</a-button>\n      <a-button type=\"primary\" size=\"small\" loading>Loading</a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"primary\" :loading=\"loading\" @mouseenter=\"loading = true\">\n        mouseenter me!\n      </a-button>\n      <a-button type=\"primary\" :loading=\"iconLoading\" @click=\"enterIconLoading\">\n        <template #icon><PoweroffOutlined /></template>\n        延迟1s\n      </a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"primary\" loading />\n      <a-button type=\"primary\" shape=\"circle\" loading />\n      <a-button danger shape=\"round\" loading />\n    </a-space>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { PoweroffOutlined } from '@ant-design/icons-vue';\n\ninterface DelayLoading {\n  delay: number;\n}\nconst loading = ref<boolean>(false);\nconst iconLoading = ref<boolean | DelayLoading>(false);\nconst enterIconLoading = () => {\n  iconLoading.value = { delay: 1000 };\n\n  setTimeout(() => {\n    iconLoading.value = false;\n  }, 6000);\n};\n</script>\n"
  },
  {
    "path": "components/button/demo/multiple.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 多个按钮组合\n  en-US: Multiple Buttons\n---\n\n## zh-CN\n\n按钮组合使用时，推荐使用 1 个主操作 + n 个次操作，3 个以上操作时把更多操作放到 [Dropdown.Button](/components/dropdown/#components-dropdown-demo-dropdown-button) 中组合使用。\n\n## en-US\n\nIf you need several buttons, we recommend that you use 1 primary button + n secondary buttons, and if there are more than three operations, you can group some of them into [Dropdown.Button](/components/dropdown/#components-dropdown-demo-dropdown-button).\n</docs>\n\n<template>\n  <a-space>\n    <a-button type=\"primary\">Primary</a-button>\n    <a-button>secondary</a-button>\n    <a-dropdown>\n      <template #overlay>\n        <a-menu @click=\"handleMenuClick\">\n          <a-menu-item key=\"1\">1st item</a-menu-item>\n          <a-menu-item key=\"2\">2nd item</a-menu-item>\n          <a-menu-item key=\"3\">3rd item</a-menu-item>\n        </a-menu>\n      </template>\n      <a-button>\n        Actions\n        <DownOutlined />\n      </a-button>\n    </a-dropdown>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\nconst handleMenuClick: MenuProps['onClick'] = e => {\n  console.log('click', e);\n};\n</script>\n"
  },
  {
    "path": "components/button/demo/size.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 按钮尺寸\n  en-US: Size\n---\n\n## zh-CN\n\n按钮有大、中、小三种尺寸。\n\n通过设置 `size` 为 `large` `small` 分别把按钮设为大、小尺寸。若不设置 `size`，则尺寸为中。\n\n## en-US\n\nAnt Design supports a default button size as well as a large and small size.\n\nIf a large or small button is desired, set the `size` property to either `large` or `small` respectively. Omit the `size` property for a button with the default size.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-radio-group v-model:value=\"size\">\n      <a-radio-button value=\"large\">Large</a-radio-button>\n      <a-radio-button value=\"default\">Default</a-radio-button>\n      <a-radio-button value=\"small\">Small</a-radio-button>\n    </a-radio-group>\n    <a-space>\n      <a-button type=\"primary\" :size=\"size\">Primary</a-button>\n      <a-button :size=\"size\">Normal</a-button>\n      <a-button type=\"dashed\" :size=\"size\">Dashed</a-button>\n      <a-button danger :size=\"size\">Danger</a-button>\n      <a-button type=\"link\" :size=\"size\">Link</a-button>\n    </a-space>\n    <a-space>\n      <a-button type=\"primary\" :size=\"size\">\n        <template #icon>\n          <DownloadOutlined />\n        </template>\n      </a-button>\n      <a-button type=\"primary\" shape=\"circle\" :size=\"size\">\n        <template #icon>\n          <DownloadOutlined />\n        </template>\n      </a-button>\n      <a-button type=\"primary\" shape=\"round\" :size=\"size\">\n        <template #icon>\n          <DownloadOutlined />\n        </template>\n        Download\n      </a-button>\n      <a-button type=\"primary\" shape=\"round\" :size=\"size\">\n        <template #icon>\n          <DownloadOutlined />\n        </template>\n      </a-button>\n      <a-button type=\"primary\" :size=\"size\">\n        <template #icon>\n          <DownloadOutlined />\n        </template>\n        Download\n      </a-button>\n    </a-space>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { DownloadOutlined } from '@ant-design/icons-vue';\nimport type { SizeType } from 'ant-design-vue/es/config-provider';\nimport { ref } from 'vue';\nconst size = ref<SizeType>('large');\n</script>\n"
  },
  {
    "path": "components/button/index.en-US.md",
    "content": "---\ncategory: Components\ntype: General\ntitle: Button\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BrFMQ5s7AAQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Lp1kTYmSsgoAAAAAAAAAAAAADrJ8AQ/original\n---\n\nTo trigger an operation.\n\n## When To Use\n\nA button means an operation (or a series of operations). Clicking a button will trigger corresponding business logic.\n\nIn Ant Design Vue we provide 5 types of button.\n\n- Primary button: indicate the main action, one primary button at most in one section.\n- Default button: indicate a series of actions without priority.\n- Dashed button: used for adding action commonly.\n- Text button: used for the most secondary action.\n- Link button: used for external links.\n\nAnd 4 other properties additionally.\n\n- `danger`: used for actions of risk, like deletion or authorization.\n- `ghost`: used in situations with complex background, home pages usually.\n- `disabled`: when actions are not available.\n- `loading`: add loading spinner in button, avoiding multiple submits too.\n\n## API\n\nDifferent button styles can be generated by setting Button properties. The recommended order is: `type` -> `shape` -> `size` -> `loading` -> `disabled`.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| block | option to fit button width to its parent width | boolean | `false` |  |\n| danger | set the danger status of button | boolean | `false` | 2.2.0 |\n| disabled | disabled state of button | boolean | `false` |  |\n| ghost | make background transparent and invert text and border colors | boolean | `false` |  |\n| href | redirect url of link button | string | - |  |\n| htmlType | set the original html `type` of `button`, see: [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button` |  |\n| icon | set the icon of button, see: Icon component | v-slot | - |  |\n| loading | set the loading status of button | boolean \\| { delay: number } | `false` |  |\n| shape | Can be set button shape | `default` \\| `circle` \\| `round` | `default` |  |\n| size | set the size of button | `large` \\| `middle` \\| `small` | `middle` |  |\n| target | same as target attribute of a, works when href is specified | string | - |  |\n| type | can be set button type | `primary` \\| `ghost` \\| `dashed` \\| `link` \\| `text` \\| `default` | `default` |  |\n\n### events\n\n| Events Name | Description                             | Arguments       | Version |\n| ----------- | --------------------------------------- | --------------- | ------- |\n| click       | set the handler to handle `click` event | (event) => void |         |\n\nIt accepts all props which native buttons support.\n\n## FAQ\n\n### Methods\n\n#### Checkbox\n\n| Name    | Description  | Version |\n| ------- | ------------ | ------- |\n| blur()  | remove focus |         |\n| focus() | get focus    |         |\n\n### How to remove space between 2 chinese characters\n\nFollowing the Ant Design specification, we will add one space between if Button (exclude Text button and Link button) contains two Chinese characters only. If you don't need that, you can use [ConfigProvider](/components/config-provider/#api) to set `autoInsertSpaceInButton` as `false`.\n\n<img src=\"https://gw.alipayobjects.com/zos/antfincdn/MY%26THAPZrW/38f06cb9-293a-4b42-b183-9f443e79ffea.png\" style=\"box-shadow: none; margin: 0; width: 100px\" alt=\"Button with two Chinese characters\"  />\n"
  },
  {
    "path": "components/button/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Button from './button';\nimport ButtonGroup from './button-group';\n\nimport type { ButtonProps, ButtonShape, ButtonType } from './buttonTypes';\nimport type { ButtonGroupProps } from './button-group';\nimport type { SizeType as ButtonSize } from '../config-provider';\n\nexport type { ButtonProps, ButtonShape, ButtonType, ButtonGroupProps, ButtonSize };\n\nButton.Group = ButtonGroup;\n\n/* istanbul ignore next */\nButton.install = function (app: App) {\n  app.component(Button.name, Button);\n  app.component(ButtonGroup.name, ButtonGroup);\n  return app;\n};\n\nexport { ButtonGroup };\n\nexport default Button as typeof Button &\n  Plugin & {\n    readonly Group: typeof ButtonGroup;\n  };\n"
  },
  {
    "path": "components/button/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 通用\ntitle: Button\nsubtitle: 按钮\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BrFMQ5s7AAQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Lp1kTYmSsgoAAAAAAAAAAAAADrJ8AQ/original\n---\n\n按钮用于开始一个即时操作。\n\n## 何时使用\n\n标记了一个（或封装一组）操作命令，响应用户点击行为，触发相应的业务逻辑。\n\n在 Ant Design Vue 中我们提供了五种按钮。\n\n- 主按钮：用于主行动点，一个操作区域只能有一个主按钮。\n- 默认按钮：用于没有主次之分的一组行动点。\n- 虚线按钮：常用于添加操作。\n- 文本按钮：用于最次级的行动点。\n- 链接按钮：一般用于链接，即导航至某位置。\n\n以及四种状态属性与上面配合使用。\n\n- 危险：删除/移动/修改权限等危险操作，一般需要二次确认。\n- 幽灵：用于背景色比较复杂的地方，常用在首页/产品页等展示场景。\n- 禁用：行动点不可用的时候，一般需要文案解释。\n- 加载中：用于异步操作等待反馈的时候，也可以避免多次提交。\n\n## API\n\n通过设置 Button 的属性来产生不同的按钮样式，推荐顺序为：`type` -> `shape` -> `size` -> `loading` -> `disabled`。\n\n按钮的属性说明如下：\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| block | 将按钮宽度调整为其父宽度的选项 | boolean | `false` |  |\n| danger | 设置危险按钮 | boolean | `false` | 2.2.0 |\n| disabled | 按钮失效状态 | boolean | `false` |  |\n| ghost | 幽灵属性，使按钮背景透明 | boolean | `false` |  |\n| href | 点击跳转的地址，指定此属性 button 的行为和 a 链接一致 | string | - |  |\n| htmlType | 设置 `button` 原生的 `type` 值，可选值请参考 [HTML 标准](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button` |  |\n| icon | 设置按钮的图标类型 | v-slot | - |  |\n| loading | 设置按钮载入状态 | boolean \\| { delay: number } | `false` |  |\n| shape | 设置按钮形状 | `default` \\| `circle` \\| `round` | `default` |  |\n| size | 设置按钮大小 | `large` \\| `middle` \\| `small` | `middle` |  |\n| target | 相当于 a 链接的 target 属性，href 存在时生效 | string | - |  |\n| type | 设置按钮类型 | `primary` \\| `ghost` \\| `dashed` \\| `link` \\| `text` \\| `default` | `default` |  |\n\n### 事件\n\n| 事件名称 | 说明             | 回调参数        | 版本 |\n| -------- | ---------------- | --------------- | ---- |\n| click    | 点击按钮时的回调 | (event) => void |      |\n\n支持原生 button 的其他所有属性。\n\n### 方法\n\n#### Button\n\n| 名称    | 描述     | 版本 |\n| ------- | -------- | ---- |\n| blur()  | 移除焦点 |      |\n| focus() | 获取焦点 |      |\n\n## FAQ\n\n### 如何移除 2 个汉字之间的空格\n\n根据 Ant Design 设计规范要求，我们会在按钮内(文本按钮和链接按钮除外)只有两个汉字时自动添加空格，如果你不需要这个特性，可以设置 [ConfigProvider](/components/config-provider/#api) 的 `autoInsertSpaceInButton` 为 `false`。\n\n<img src=\"https://gw.alipayobjects.com/zos/antfincdn/MY%26THAPZrW/38f06cb9-293a-4b42-b183-9f443e79ffea.png\" style=\"box-shadow: none; margin: 0; width: 100px\" alt=\"移除两个汉字之间的空格\"  />\n"
  },
  {
    "path": "components/button/style/group.ts",
    "content": "import type { ButtonToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genButtonBorderStyle = (buttonTypeCls: string, borderColor: string) => ({\n  // Border\n  [`> span, > ${buttonTypeCls}`]: {\n    '&:not(:last-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineEndColor: borderColor,\n        },\n      },\n    },\n\n    '&:not(:first-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineStartColor: borderColor,\n        },\n      },\n    },\n  },\n});\n\nconst genGroupStyle: GenerateStyle<ButtonToken> = token => {\n  const { componentCls, fontSize, lineWidth, colorPrimaryHover, colorErrorHover } = token;\n\n  return {\n    [`${componentCls}-group`]: [\n      {\n        position: 'relative',\n        display: 'inline-flex',\n\n        // Border\n        [`> span, > ${componentCls}`]: {\n          '&:not(:last-child)': {\n            [`&, & > ${componentCls}`]: {\n              borderStartEndRadius: 0,\n              borderEndEndRadius: 0,\n            },\n          },\n\n          '&:not(:first-child)': {\n            marginInlineStart: -lineWidth,\n\n            [`&, & > ${componentCls}`]: {\n              borderStartStartRadius: 0,\n              borderEndStartRadius: 0,\n            },\n          },\n        },\n\n        [componentCls]: {\n          position: 'relative',\n          zIndex: 1,\n\n          [`&:hover,\n          &:focus,\n          &:active`]: {\n            zIndex: 2,\n          },\n\n          '&[disabled]': {\n            zIndex: 0,\n          },\n        },\n\n        [`${componentCls}-icon-only`]: {\n          fontSize,\n        },\n      },\n\n      // Border Color\n      genButtonBorderStyle(`${componentCls}-primary`, colorPrimaryHover),\n      genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover),\n    ],\n  };\n};\n\nexport default genGroupStyle;\n"
  },
  {
    "path": "components/button/style/index.ts",
    "content": "import type { CSSInterpolation, CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\nimport { genFocusStyle } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {}\n\nexport interface ButtonToken extends FullToken<'Button'> {\n  // FIXME: should be removed\n  colorOutlineDefault: string;\n  buttonPaddingHorizontal: number;\n}\n\n// ============================== Shared ==============================\nconst genSharedButtonStyle: GenerateStyle<ButtonToken, CSSObject> = (token): CSSObject => {\n  const { componentCls, iconCls } = token;\n\n  return {\n    [componentCls]: {\n      outline: 'none',\n      position: 'relative',\n      display: 'inline-block',\n      fontWeight: 400,\n      whiteSpace: 'nowrap',\n      textAlign: 'center',\n      backgroundImage: 'none',\n      backgroundColor: 'transparent',\n      border: `${token.lineWidth}px ${token.lineType} transparent`,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n      userSelect: 'none',\n      touchAction: 'manipulation',\n      lineHeight: token.lineHeight,\n      color: token.colorText,\n\n      '> span': {\n        display: 'inline-block',\n      },\n\n      // Leave a space between icon and text.\n      [`> ${iconCls} + span, > span + ${iconCls}`]: {\n        marginInlineStart: token.marginXS,\n      },\n\n      '> a': {\n        color: 'currentColor',\n      },\n\n      '&:not(:disabled)': {\n        ...genFocusStyle(token),\n      },\n\n      // make `btn-icon-only` not too narrow\n      [`&-icon-only${componentCls}-compact-item`]: {\n        flex: 'none',\n      },\n      // Special styles for Primary Button\n      [`&-compact-item${componentCls}-primary`]: {\n        [`&:not([disabled]) + ${componentCls}-compact-item${componentCls}-primary:not([disabled])`]:\n          {\n            position: 'relative',\n\n            '&:before': {\n              position: 'absolute',\n              top: -token.lineWidth,\n              insetInlineStart: -token.lineWidth,\n              display: 'inline-block',\n              width: token.lineWidth,\n              height: `calc(100% + ${token.lineWidth * 2}px)`,\n              backgroundColor: token.colorPrimaryHover,\n              content: '\"\"',\n            },\n          },\n      },\n      // Special styles for Primary Button\n      '&-compact-vertical-item': {\n        [`&${componentCls}-primary`]: {\n          [`&:not([disabled]) + ${componentCls}-compact-vertical-item${componentCls}-primary:not([disabled])`]:\n            {\n              position: 'relative',\n\n              '&:before': {\n                position: 'absolute',\n                top: -token.lineWidth,\n                insetInlineStart: -token.lineWidth,\n                display: 'inline-block',\n                width: `calc(100% + ${token.lineWidth * 2}px)`,\n                height: token.lineWidth,\n                backgroundColor: token.colorPrimaryHover,\n                content: '\"\"',\n              },\n            },\n        },\n      },\n    },\n  };\n};\n\nconst genHoverActiveButtonStyle = (hoverStyle: CSSObject, activeStyle: CSSObject): CSSObject => ({\n  '&:not(:disabled)': {\n    '&:hover': hoverStyle,\n    '&:active': activeStyle,\n  },\n});\n\n// ============================== Shape ===============================\nconst genCircleButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  minWidth: token.controlHeight,\n  paddingInlineStart: 0,\n  paddingInlineEnd: 0,\n  borderRadius: '50%',\n});\n\nconst genRoundButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  borderRadius: token.controlHeight,\n  paddingInlineStart: token.controlHeight / 2,\n  paddingInlineEnd: token.controlHeight / 2,\n});\n\n// =============================== Type ===============================\nconst genDisabledStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  cursor: 'not-allowed',\n  borderColor: token.colorBorder,\n  color: token.colorTextDisabled,\n  backgroundColor: token.colorBgContainerDisabled,\n  boxShadow: 'none',\n});\n\nconst genGhostButtonStyle = (\n  btnCls: string,\n  textColor: string | false,\n  borderColor: string | false,\n  textColorDisabled: string | false,\n  borderColorDisabled: string | false,\n  hoverStyle?: CSSObject,\n  activeStyle?: CSSObject,\n): CSSObject => ({\n  [`&${btnCls}-background-ghost`]: {\n    color: textColor || undefined,\n    backgroundColor: 'transparent',\n    borderColor: borderColor || undefined,\n    boxShadow: 'none',\n\n    ...genHoverActiveButtonStyle(\n      {\n        backgroundColor: 'transparent',\n        ...hoverStyle,\n      },\n      {\n        backgroundColor: 'transparent',\n        ...activeStyle,\n      },\n    ),\n\n    '&:disabled': {\n      cursor: 'not-allowed',\n      color: textColorDisabled || undefined,\n      borderColor: borderColorDisabled || undefined,\n    },\n  },\n});\n\nconst genSolidDisabledButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  '&:disabled': {\n    ...genDisabledStyle(token),\n  },\n});\n\nconst genSolidButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genSolidDisabledButtonStyle(token),\n});\n\nconst genPureDisabledButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  '&:disabled': {\n    cursor: 'not-allowed',\n    color: token.colorTextDisabled,\n  },\n});\n\n// Type: Default\nconst genDefaultButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genSolidButtonStyle(token),\n\n  backgroundColor: token.colorBgContainer,\n  borderColor: token.colorBorder,\n\n  boxShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlTmpOutline}`,\n\n  ...genHoverActiveButtonStyle(\n    {\n      color: token.colorPrimaryHover,\n      borderColor: token.colorPrimaryHover,\n    },\n    {\n      color: token.colorPrimaryActive,\n      borderColor: token.colorPrimaryActive,\n    },\n  ),\n\n  ...genGhostButtonStyle(\n    token.componentCls,\n    token.colorBgContainer,\n    token.colorBgContainer,\n    token.colorTextDisabled,\n    token.colorBorder,\n  ),\n\n  [`&${token.componentCls}-dangerous`]: {\n    color: token.colorError,\n    borderColor: token.colorError,\n\n    ...genHoverActiveButtonStyle(\n      {\n        color: token.colorErrorHover,\n        borderColor: token.colorErrorBorderHover,\n      },\n      {\n        color: token.colorErrorActive,\n        borderColor: token.colorErrorActive,\n      },\n    ),\n\n    ...genGhostButtonStyle(\n      token.componentCls,\n      token.colorError,\n      token.colorError,\n      token.colorTextDisabled,\n      token.colorBorder,\n    ),\n    ...genSolidDisabledButtonStyle(token),\n  },\n});\n\n// Type: Primary\nconst genPrimaryButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genSolidButtonStyle(token),\n\n  color: token.colorTextLightSolid,\n  backgroundColor: token.colorPrimary,\n\n  boxShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlOutline}`,\n\n  ...genHoverActiveButtonStyle(\n    {\n      color: token.colorTextLightSolid,\n      backgroundColor: token.colorPrimaryHover,\n    },\n    {\n      color: token.colorTextLightSolid,\n      backgroundColor: token.colorPrimaryActive,\n    },\n  ),\n\n  ...genGhostButtonStyle(\n    token.componentCls,\n    token.colorPrimary,\n    token.colorPrimary,\n    token.colorTextDisabled,\n    token.colorBorder,\n    {\n      color: token.colorPrimaryHover,\n      borderColor: token.colorPrimaryHover,\n    },\n    {\n      color: token.colorPrimaryActive,\n      borderColor: token.colorPrimaryActive,\n    },\n  ),\n\n  [`&${token.componentCls}-dangerous`]: {\n    backgroundColor: token.colorError,\n    boxShadow: `0 ${token.controlOutlineWidth}px 0 ${token.colorErrorOutline}`,\n\n    ...genHoverActiveButtonStyle(\n      {\n        backgroundColor: token.colorErrorHover,\n      },\n      {\n        backgroundColor: token.colorErrorActive,\n      },\n    ),\n\n    ...genGhostButtonStyle(\n      token.componentCls,\n      token.colorError,\n      token.colorError,\n      token.colorTextDisabled,\n      token.colorBorder,\n      {\n        color: token.colorErrorHover,\n        borderColor: token.colorErrorHover,\n      },\n      {\n        color: token.colorErrorActive,\n        borderColor: token.colorErrorActive,\n      },\n    ),\n    ...genSolidDisabledButtonStyle(token),\n  },\n});\n\n// Type: Dashed\nconst genDashedButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genDefaultButtonStyle(token),\n  borderStyle: 'dashed',\n});\n\n// Type: Link\nconst genLinkButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  color: token.colorLink,\n\n  ...genHoverActiveButtonStyle(\n    {\n      color: token.colorLinkHover,\n    },\n    {\n      color: token.colorLinkActive,\n    },\n  ),\n\n  ...genPureDisabledButtonStyle(token),\n\n  [`&${token.componentCls}-dangerous`]: {\n    color: token.colorError,\n\n    ...genHoverActiveButtonStyle(\n      {\n        color: token.colorErrorHover,\n      },\n      {\n        color: token.colorErrorActive,\n      },\n    ),\n\n    ...genPureDisabledButtonStyle(token),\n  },\n});\n\n// Type: Text\nconst genTextButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genHoverActiveButtonStyle(\n    {\n      color: token.colorText,\n      backgroundColor: token.colorBgTextHover,\n    },\n    {\n      color: token.colorText,\n      backgroundColor: token.colorBgTextActive,\n    },\n  ),\n\n  ...genPureDisabledButtonStyle(token),\n\n  [`&${token.componentCls}-dangerous`]: {\n    color: token.colorError,\n\n    ...genPureDisabledButtonStyle(token),\n    ...genHoverActiveButtonStyle(\n      {\n        color: token.colorErrorHover,\n        backgroundColor: token.colorErrorBg,\n      },\n      {\n        color: token.colorErrorHover,\n        backgroundColor: token.colorErrorBg,\n      },\n    ),\n  },\n});\n\n// Href and Disabled\nconst genDisabledButtonStyle: GenerateStyle<ButtonToken, CSSObject> = token => ({\n  ...genDisabledStyle(token),\n  [`&${token.componentCls}:hover`]: {\n    ...genDisabledStyle(token),\n  },\n});\n\nconst genTypeButtonStyle: GenerateStyle<ButtonToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-default`]: genDefaultButtonStyle(token),\n    [`${componentCls}-primary`]: genPrimaryButtonStyle(token),\n    [`${componentCls}-dashed`]: genDashedButtonStyle(token),\n    [`${componentCls}-link`]: genLinkButtonStyle(token),\n    [`${componentCls}-text`]: genTextButtonStyle(token),\n    [`${componentCls}-disabled`]: genDisabledButtonStyle(token),\n  };\n};\n\n// =============================== Size ===============================\nconst genSizeButtonStyle = (token: ButtonToken, sizePrefixCls: string = ''): CSSInterpolation => {\n  const {\n    componentCls,\n    iconCls,\n    controlHeight,\n    fontSize,\n    lineHeight,\n    lineWidth,\n    borderRadius,\n    buttonPaddingHorizontal,\n  } = token;\n\n  const paddingVertical = Math.max(0, (controlHeight - fontSize * lineHeight) / 2 - lineWidth);\n  const paddingHorizontal = buttonPaddingHorizontal - lineWidth;\n\n  const iconOnlyCls = `${componentCls}-icon-only`;\n\n  return [\n    // Size\n    {\n      [`${componentCls}${sizePrefixCls}`]: {\n        fontSize,\n        height: controlHeight,\n        padding: `${paddingVertical}px ${paddingHorizontal}px`,\n        borderRadius,\n\n        [`&${iconOnlyCls}`]: {\n          width: controlHeight,\n          paddingInlineStart: 0,\n          paddingInlineEnd: 0,\n          [`&${componentCls}-round`]: {\n            width: 'auto',\n          },\n          '> span': {\n            transform: 'scale(1.143)', // 14px -> 16px\n          },\n        },\n\n        // Loading\n        [`&${componentCls}-loading`]: {\n          opacity: token.opacityLoading,\n          cursor: 'default',\n        },\n\n        [`${componentCls}-loading-icon`]: {\n          transition: `width ${token.motionDurationSlow} ${token.motionEaseInOut}, opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        },\n\n        [`&:not(${iconOnlyCls}) ${componentCls}-loading-icon > ${iconCls}`]: {\n          marginInlineEnd: token.marginXS,\n        },\n      },\n    },\n\n    // Shape - patch prefixCls again to override solid border radius style\n    {\n      [`${componentCls}${componentCls}-circle${sizePrefixCls}`]: genCircleButtonStyle(token),\n    },\n    {\n      [`${componentCls}${componentCls}-round${sizePrefixCls}`]: genRoundButtonStyle(token),\n    },\n  ];\n};\n\nconst genSizeBaseButtonStyle: GenerateStyle<ButtonToken> = token => genSizeButtonStyle(token);\n\nconst genSizeSmallButtonStyle: GenerateStyle<ButtonToken> = token => {\n  const smallToken = mergeToken<ButtonToken>(token, {\n    controlHeight: token.controlHeightSM,\n    padding: token.paddingXS,\n    buttonPaddingHorizontal: 8, // Fixed padding\n    borderRadius: token.borderRadiusSM,\n  });\n\n  return genSizeButtonStyle(smallToken, `${token.componentCls}-sm`);\n};\n\nconst genSizeLargeButtonStyle: GenerateStyle<ButtonToken> = token => {\n  const largeToken = mergeToken<ButtonToken>(token, {\n    controlHeight: token.controlHeightLG,\n    fontSize: token.fontSizeLG,\n    borderRadius: token.borderRadiusLG,\n  });\n\n  return genSizeButtonStyle(largeToken, `${token.componentCls}-lg`);\n};\n\nconst genBlockButtonStyle: GenerateStyle<ButtonToken> = token => {\n  const { componentCls } = token;\n  return {\n    [componentCls]: {\n      [`&${componentCls}-block`]: {\n        width: '100%',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Button', token => {\n  const { controlTmpOutline, paddingContentHorizontal } = token;\n  const buttonToken = mergeToken<ButtonToken>(token, {\n    colorOutlineDefault: controlTmpOutline,\n    buttonPaddingHorizontal: paddingContentHorizontal,\n  });\n\n  return [\n    // Shared\n    genSharedButtonStyle(buttonToken),\n\n    // Size\n    genSizeSmallButtonStyle(buttonToken),\n    genSizeBaseButtonStyle(buttonToken),\n    genSizeLargeButtonStyle(buttonToken),\n\n    // Block\n    genBlockButtonStyle(buttonToken),\n\n    // Group (type, ghost, danger, disabled, loading)\n    genTypeButtonStyle(buttonToken),\n\n    // Button Group\n    genGroupStyle(buttonToken),\n\n    // Space Compact\n    genCompactItemStyle(token, { focus: false }),\n    genCompactItemVerticalStyle(token),\n  ];\n});\n"
  },
  {
    "path": "components/calendar/Header.tsx",
    "content": "import Select from '../select';\nimport { Group, Button } from '../radio';\nimport type { CalendarMode, SelectInfo } from './generateCalendar';\nimport type { Ref } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport type { Locale } from '../vc-picker/interface';\nimport type { GenerateConfig } from '../vc-picker/generate';\nimport { FormItemInputContext } from '../form/FormItemContext';\n\nconst YearSelectOffset = 10;\nconst YearSelectTotal = 20;\n\ninterface SharedProps<DateType> {\n  prefixCls: string;\n  value: DateType;\n  validRange?: [DateType, DateType];\n  generateConfig: GenerateConfig<DateType>;\n  locale: Locale;\n  fullscreen: boolean;\n  divRef: Ref<HTMLDivElement>;\n  onChange: (year: DateType) => void;\n}\n\nfunction YearSelect<DateType>(props: SharedProps<DateType>) {\n  const { fullscreen, validRange, generateConfig, locale, prefixCls, value, onChange, divRef } =\n    props;\n\n  const year = generateConfig.getYear(value || generateConfig.getNow());\n\n  let start = year - YearSelectOffset;\n  let end = start + YearSelectTotal;\n\n  if (validRange) {\n    start = generateConfig.getYear(validRange[0]);\n    end = generateConfig.getYear(validRange[1]) + 1;\n  }\n\n  const suffix = locale && locale.year === '年' ? '年' : '';\n  const options: { label: string; value: number }[] = [];\n  for (let index = start; index < end; index++) {\n    options.push({ label: `${index}${suffix}`, value: index });\n  }\n  return (\n    <Select\n      size={fullscreen ? undefined : 'small'}\n      options={options}\n      value={year}\n      class={`${prefixCls}-year-select`}\n      onChange={(numYear: number) => {\n        let newDate = generateConfig.setYear(value, numYear);\n\n        if (validRange) {\n          const [startDate, endDate] = validRange;\n          const newYear = generateConfig.getYear(newDate);\n          const newMonth = generateConfig.getMonth(newDate);\n          if (\n            newYear === generateConfig.getYear(endDate) &&\n            newMonth > generateConfig.getMonth(endDate)\n          ) {\n            newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(endDate));\n          }\n          if (\n            newYear === generateConfig.getYear(startDate) &&\n            newMonth < generateConfig.getMonth(startDate)\n          ) {\n            newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(startDate));\n          }\n        }\n\n        onChange(newDate);\n      }}\n      getPopupContainer={() => divRef!.value!}\n    />\n  );\n}\nYearSelect.inheritAttrs = false;\n\nfunction MonthSelect<DateType>(props: SharedProps<DateType>) {\n  const { prefixCls, fullscreen, validRange, value, generateConfig, locale, onChange, divRef } =\n    props;\n  const month = generateConfig.getMonth(value || generateConfig.getNow());\n\n  let start = 0;\n  let end = 11;\n\n  if (validRange) {\n    const [rangeStart, rangeEnd] = validRange;\n    const currentYear = generateConfig.getYear(value);\n    if (generateConfig.getYear(rangeEnd) === currentYear) {\n      end = generateConfig.getMonth(rangeEnd);\n    }\n    if (generateConfig.getYear(rangeStart) === currentYear) {\n      start = generateConfig.getMonth(rangeStart);\n    }\n  }\n\n  const months = locale.shortMonths || generateConfig.locale.getShortMonths!(locale.locale);\n  const options: { label: string; value: number }[] = [];\n  for (let index = start; index <= end; index += 1) {\n    options.push({\n      label: months[index],\n      value: index,\n    });\n  }\n\n  return (\n    <Select\n      size={fullscreen ? undefined : 'small'}\n      class={`${prefixCls}-month-select`}\n      value={month}\n      options={options}\n      onChange={(newMonth: number) => {\n        onChange(generateConfig.setMonth(value, newMonth));\n      }}\n      getPopupContainer={() => divRef!.value!}\n    />\n  );\n}\n\nMonthSelect.inheritAttrs = false;\n\ninterface ModeSwitchProps<DateType> extends Omit<SharedProps<DateType>, 'onChange'> {\n  mode: CalendarMode;\n  onModeChange: (type: CalendarMode) => void;\n}\n\nfunction ModeSwitch<DateType>(props: ModeSwitchProps<DateType>) {\n  const { prefixCls, locale, mode, fullscreen, onModeChange } = props;\n  return (\n    <Group\n      onChange={({ target: { value } }) => {\n        onModeChange(value);\n      }}\n      value={mode}\n      size={fullscreen ? undefined : 'small'}\n      class={`${prefixCls}-mode-switch`}\n    >\n      <Button value=\"month\">{locale.month}</Button>\n      <Button value=\"year\">{locale.year}</Button>\n    </Group>\n  );\n}\nModeSwitch.inheritAttrs = false;\n\nexport interface CalendarHeaderProps<DateType> {\n  prefixCls: string;\n  value: DateType;\n  validRange?: [DateType, DateType];\n  generateConfig: GenerateConfig<DateType>;\n  locale: Locale;\n  mode: CalendarMode;\n  fullscreen: boolean;\n  onChange: (date: DateType, source: SelectInfo['source']) => void;\n  onModeChange: (mode: CalendarMode) => void;\n}\n\nexport default defineComponent<CalendarHeaderProps<any>>({\n  name: 'CalendarHeader',\n  inheritAttrs: false,\n  props: [\n    'mode',\n    'prefixCls',\n    'value',\n    'validRange',\n    'generateConfig',\n    'locale',\n    'mode',\n    'fullscreen',\n  ] as any,\n  setup(_props, { attrs }) {\n    const divRef = ref<HTMLDivElement>(null);\n    const formItemInputContext = FormItemInputContext.useInject();\n    FormItemInputContext.useProvide(formItemInputContext, { isFormItemInput: false });\n\n    return () => {\n      const props = { ..._props, ...attrs };\n      const { prefixCls, fullscreen, mode, onChange, onModeChange } = props;\n      const sharedProps = {\n        ...props,\n        fullscreen,\n        divRef,\n      } as any;\n\n      return (\n        <div class={`${prefixCls}-header`} ref={divRef}>\n          <YearSelect\n            {...sharedProps}\n            onChange={v => {\n              onChange(v, 'year');\n            }}\n          />\n          {mode === 'month' && (\n            <MonthSelect\n              {...sharedProps}\n              onChange={v => {\n                onChange(v, 'month');\n              }}\n            />\n          )}\n          <ModeSwitch {...sharedProps} onModeChange={onModeChange} />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/calendar/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/calendar/demo/basic.vue correctly 1`] = `\n<div class=\"ant-picker-calendar ant-picker-calendar-full\">\n  <div class=\"ant-picker-calendar-header\">\n    <div class=\"ant-select ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2016\">2016</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-select ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Nov\">Nov</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-radio-group ant-radio-group-outline ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n  </div>\n  <div tabindex=\"0\" class=\"ant-picker-panel\">\n    <div class=\"ant-picker-date-panel\">\n      <!---->\n      <div class=\"ant-picker-body\">\n        <table class=\"ant-picker-content\">\n          <thead>\n            <tr>\n              <th>Su</th>\n              <th>Mo</th>\n              <th>Tu</th>\n              <th>We</th>\n              <th>Th</th>\n              <th>Fr</th>\n              <th>Sa</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td title=\"2016-10-30\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-10-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">31</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">11</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">12</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">13</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">14</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">15</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">16</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">17</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">18</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">19</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">20</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">21</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-22\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                  <div class=\"ant-picker-calendar-date-value\">22</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">23</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">24</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">25</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">26</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">27</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">28</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">29</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-02\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-03\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-12-04\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-05\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-06\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-07\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-08\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-09\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-10\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/calendar/demo/card.vue correctly 1`] = `\n<div style=\"width: 300px; border: 1px solid #d9d9d9; border-radius: 4px;\">\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2016\">2016</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Nov\">Nov</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2016-10-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-10-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-22\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-12-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-08\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-09\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-10\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/calendar/demo/customize-header.vue correctly 1`] = `\n<div style=\"width: 300px; border: 1px solid #d9d9d9; border-radius: 4px;\">\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div style=\"padding: 10px;\">\n      <div style=\"margin-bottom: 10px;\">Custom header</div>\n      <div type=\"flex\" class=\"ant-row ant-row-space-between\">\n        <div class=\"ant-col\">\n          <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n        </div>\n        <div class=\"ant-col\">\n          <div class=\"ant-select ant-select-sm my-year-select ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">2016</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n        </div>\n        <div class=\"ant-col\">\n          <div class=\"ant-select ant-select-sm ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Nov</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2016-10-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-10-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-22\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-11-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-11-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2016-12-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-08\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-09\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2016-12-10\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/calendar/demo/notice-calendar.vue correctly 1`] = `\n<div class=\"ant-picker-calendar ant-picker-calendar-full\">\n  <div class=\"ant-picker-calendar-header\">\n    <div class=\"ant-select ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2016\">2016</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-select ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Nov\">Nov</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-radio-group ant-radio-group-outline ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n  </div>\n  <div tabindex=\"0\" class=\"ant-picker-panel\">\n    <div class=\"ant-picker-date-panel\">\n      <!---->\n      <div class=\"ant-picker-body\">\n        <table class=\"ant-picker-content\">\n          <thead>\n            <tr>\n              <th>Su</th>\n              <th>Mo</th>\n              <th>Tu</th>\n              <th>We</th>\n              <th>Th</th>\n              <th>Fr</th>\n              <th>Sa</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td title=\"2016-10-30\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-10-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">31</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\">\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">This is warning event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">This is usual event.</span></span></li>\n                    </ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\">\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">This is warning event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">This is usual event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event.</span></span></li>\n                    </ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">11</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">12</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">13</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">14</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">15</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\">\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">This is warning event</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">This is very long usual event。。....</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event 1.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event 2.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event 3.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event 4.</span></span></li>\n                    </ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">16</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">17</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">18</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">19</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">20</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">21</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-22\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                  <div class=\"ant-picker-calendar-date-value\">22</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">23</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">24</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">25</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">26</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-11-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">27</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">28</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">29</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-11-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-02\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-03\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2016-12-04\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-05\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-06\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-07\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-08\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\">\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">This is warning event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">This is usual event.</span></span></li>\n                    </ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-09\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\"></ul>\n                  </div>\n                </div>\n              </td>\n              <td title=\"2016-12-10\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <ul class=\"events\">\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-warning\"></span><span class=\"ant-badge-status-text\">This is warning event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-success\"></span><span class=\"ant-badge-status-text\">This is usual event.</span></span></li>\n                      <li><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-error\"></span><span class=\"ant-badge-status-text\">This is error event.</span></span></li>\n                    </ul>\n                  </div>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/calendar/demo/select.vue correctly 1`] = `\n<div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-no-icon\" data-show=\"true\">\n  <!---->\n  <div class=\"ant-alert-content\">\n    <div class=\"ant-alert-message\">You selected date: 2017-01-25</div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n<div class=\"ant-picker-calendar ant-picker-calendar-full\">\n  <div class=\"ant-picker-calendar-header\">\n    <div class=\"ant-select ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-select ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Jan\">Jan</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-radio-group ant-radio-group-outline ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n  </div>\n  <div tabindex=\"0\" class=\"ant-picker-panel\">\n    <div class=\"ant-picker-date-panel\">\n      <!---->\n      <div class=\"ant-picker-body\">\n        <table class=\"ant-picker-content\">\n          <thead>\n            <tr>\n              <th>Su</th>\n              <th>Mo</th>\n              <th>Tu</th>\n              <th>We</th>\n              <th>Th</th>\n              <th>Fr</th>\n              <th>Sa</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td title=\"2017-01-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2017-01-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">11</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">12</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">13</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">14</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2017-01-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">15</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">16</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">17</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">18</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">19</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">20</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">21</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2017-01-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">22</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">23</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">24</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-25\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-selected\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">25</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">26</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">27</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">28</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2017-01-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">29</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-30\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-01-31\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">31</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-02\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-03\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-04\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2017-02-05\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-06\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-07\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-08\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-09\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-10\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2017-02-11\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">11</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/calendar/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Calendar Calendar should support locale 1`] = `\n<div class=\"ant-picker-calendar ant-picker-calendar-full\">\n  <div class=\"ant-picker-calendar-header\">\n    <div class=\"ant-select ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2018年\">2018年</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-select ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Oct\">Oct</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-radio-group ant-radio-group-outline ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>月</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>年</span></label></div>\n  </div>\n  <div tabindex=\"0\" class=\"ant-picker-panel\">\n    <div class=\"ant-picker-date-panel\">\n      <!---->\n      <div class=\"ant-picker-body\">\n        <table class=\"ant-picker-content\">\n          <thead>\n            <tr>\n              <th>Su</th>\n              <th>Mo</th>\n              <th>Tu</th>\n              <th>We</th>\n              <th>Th</th>\n              <th>Fr</th>\n              <th>Sa</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td title=\"2018-09-30\" class=\"ant-picker-cell ant-picker-cell-end\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2018-10-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">11</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">12</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">13</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2018-10-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">14</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">15</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">16</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">17</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">18</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-19\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                  <div class=\"ant-picker-calendar-date-value\">19</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">20</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2018-10-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">21</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">22</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">23</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">24</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">25</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">26</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">27</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2018-10-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">28</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">29</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-30\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">30</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-10-31\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">31</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">01</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-02\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">02</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-03\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">03</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td title=\"2018-11-04\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">04</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-05\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">05</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-06\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">06</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-07\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">07</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-08\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">08</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-09\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">09</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n              <td title=\"2018-11-10\" class=\"ant-picker-cell\">\n                <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                  <div class=\"ant-picker-calendar-date-value\">10</div>\n                  <div class=\"ant-picker-calendar-date-content\">\n                    <!---->\n                  </div>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/calendar/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('calendar');\n"
  },
  {
    "path": "components/calendar/__tests__/index.test.js",
    "content": "import dayjs from 'dayjs';\nimport { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport MockDate from 'mockdate';\nimport Calendar from '..';\nimport Header from '../Header';\nimport mountTest from '../../../tests/shared/mountTest';\nimport generateConfig from '../../vc-picker/generate/dayjs';\n\ndescribe('Calendar', () => {\n  mountTest(Calendar);\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n\n  function openSelect(wrapper, className) {\n    wrapper.find(className).find('.ant-select-selector').trigger('mousedown');\n  }\n\n  function findSelectItem(wrapper) {\n    return wrapper.findAll('.ant-select-item-option');\n  }\n\n  function clickSelectItem(wrapper, index = 0) {\n    findSelectItem(wrapper)[index].trigger('click');\n  }\n\n  it('Calendar should be selectable', async () => {\n    const onSelect = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return <Calendar onSelect={onSelect} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-picker-cell')[0].trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      expect(onSelect).toHaveBeenCalledWith(expect.anything());\n      const value = onSelect.mock.calls[0][0];\n      expect(dayjs.isDayjs(value)).toBe(true);\n    });\n  });\n\n  it('only Valid range should be selectable', async () => {\n    const onSelect = jest.fn();\n    const validRange = [dayjs('2018-02-02'), dayjs('2018-02-18')];\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Calendar\n              onSelect={onSelect}\n              validRange={validRange}\n              defaultValue={dayjs('2018-02-02')}\n            />\n          );\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('[title=\"2018-02-01\"]')[0].trigger('click');\n      wrapper.findAll('[title=\"2018-02-02\"]')[0].trigger('click');\n      expect(onSelect.mock.calls.length).toBe(1);\n    });\n  });\n\n  it('dates other than in valid range should be disabled', async () => {\n    const onSelect = jest.fn();\n    const validRange = [dayjs('2018-02-02'), dayjs('2018-02-18')];\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Calendar\n              onSelect={onSelect}\n              validRange={validRange}\n              defaultValue={dayjs('2018-02-02')}\n            />\n          );\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('[title=\"2018-02-20\"]')[0].trigger('click');\n      expect(wrapper.find('[title=\"2018-02-20\"]').classes()).toContain('ant-picker-cell-disabled');\n      expect(onSelect.mock.calls.length).toBe(0);\n    });\n  });\n\n  it('months other than in valid range should be disabled', async () => {\n    const onSelect = jest.fn();\n    const validRange = [dayjs('2018-02-02'), dayjs('2018-05-18')];\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Calendar\n              onSelect={onSelect}\n              validRange={validRange}\n              defaultValue={dayjs('2018-02-02')}\n              mode=\"year\"\n            />\n          );\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('[title=\"2018-01\"]')[0].classes()).toContain(\n        'ant-picker-cell-disabled',\n      );\n      expect(wrapper.findAll('[title=\"2018-02\"]')[0].classes()).not.toContain(\n        'ant-picker-cell-disabled',\n      );\n      expect(wrapper.findAll('[title=\"2018-06\"]')[0].classes()).toContain(\n        'ant-picker-cell-disabled',\n      );\n      wrapper.findAll('[title=\"2018-01\"]')[0].trigger('click');\n      wrapper.findAll('[title=\"2018-03\"]')[0].trigger('click');\n      expect(onSelect.mock.calls.length).toBe(1);\n    });\n  });\n\n  it('months other than in valid range should not be shown in header', async () => {\n    document.body.innerHTML = '';\n    const validRange = [dayjs('2017-02-02'), dayjs('2018-05-18')];\n    // eslint-disable-next-line no-unused-vars\n    const wrapper = mount(\n      {\n        render() {\n          return <Calendar validRange={validRange} />;\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await sleep();\n    openSelect(wrapper, '.ant-picker-calendar-year-select');\n    await sleep(100);\n    clickSelectItem(wrapper);\n    await sleep();\n    openSelect(wrapper, '.ant-picker-calendar-month-select');\n    await sleep(100);\n    // 2 years and 11 months\n    expect(wrapper.findAll('.ant-select-item-option').length).toBe(13);\n  });\n\n  it('getDateRange should returns a disabledDate function', async () => {\n    const validRange = [dayjs('2018-02-02'), dayjs('2018-05-18')];\n    const wrapper = mount(Calendar, {\n      props: {\n        validRange,\n        defaultValue: dayjs('2018-02-02'),\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      const { disabledDate } = wrapper.getComponent({ name: 'PickerPanel' }).props();\n      expect(disabledDate(dayjs('2018-06-02'))).toBe(true);\n      expect(disabledDate(dayjs('2018-04-02'))).toBe(false);\n    });\n  });\n\n  it('Calendar should change mode by prop', async () => {\n    const monthMode = 'month';\n    const yearMode = 'year';\n    const wrapper = mount(Calendar, { sync: false });\n    await sleep(50);\n    expect(wrapper.getComponent({ name: 'CalendarHeader' }).props().mode).toEqual(monthMode);\n    wrapper.setProps({ mode: 'year' });\n    await sleep(50);\n    expect(wrapper.getComponent({ name: 'CalendarHeader' }).props().mode).toEqual(yearMode);\n  });\n\n  it('Calendar should switch mode', async () => {\n    const monthMode = 'month';\n    const yearMode = 'year';\n    const onPanelChangeStub = jest.fn();\n    const wrapper = mount(Calendar, {\n      props: {\n        mode: yearMode,\n        onPanelChange: onPanelChangeStub,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.getComponent({ name: 'CalendarHeader' }).props().mode).toEqual(yearMode);\n      wrapper.setProps({ mode: monthMode });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.getComponent({ name: 'CalendarHeader' }).props().mode).toEqual(monthMode);\n      expect(onPanelChangeStub).toHaveBeenCalledTimes(0);\n    });\n  });\n\n  it('Calendar should support locale', async () => {\n    MockDate.set(dayjs('2018-10-19'));\n    // eslint-disable-next-line\n    const zhCN = require('../locale/zh_CN').default;\n    const wrapper = mount(Calendar, {\n      props: {\n        locale: zhCN,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      MockDate.reset();\n    });\n  });\n\n  it('should trigger onPanelChange when click last month of date', () => {\n    const onPanelChange = jest.fn();\n    const date = new dayjs('1990-09-03');\n    const wrapper = mount(Calendar, {\n      props: {\n        value: date,\n        onPanelChange,\n      },\n      sync: false,\n    });\n    wrapper.findAll('.ant-picker-cell')[0].trigger('click');\n\n    expect(onPanelChange).toHaveBeenCalled();\n    expect(onPanelChange.mock.calls[0][0].month()).toEqual(date.month() - 1);\n  });\n\n  it('switch should work correctly without prop mode', async () => {\n    const onPanelChange = jest.fn();\n    const date = new dayjs(new Date(Date.UTC(2017, 7, 9, 8)));\n    const wrapper = mount(Calendar, {\n      props: {\n        value: date,\n        onPanelChange,\n      },\n      sync: false,\n      attachTo: 'body',\n    });\n    await sleep(300);\n    expect(wrapper.getComponent({ name: 'CalendarHeader' }).props().mode).toBe('month');\n    expect(wrapper.findAll('.ant-picker-date-panel').length).toBe(1);\n    expect(wrapper.findAll('.ant-picker-month-panel').length).toBe(0);\n    await wrapper.findAll('.ant-radio-button-input[value=\"year\"]')[0].trigger('change');\n    await sleep(300);\n    expect(wrapper.findAll('.ant-picker-date-panel').length).toBe(0);\n    expect(wrapper.findAll('.ant-picker-month-panel').length).toBe(1);\n    expect(onPanelChange).toHaveBeenCalled();\n    expect(onPanelChange.mock.calls[0][1]).toEqual('year');\n  });\n\n  const createWrapper = async (start, end, value, onValueChange) => {\n    document.body.innerHTML = '';\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Header\n              prefixCls=\"ant-picker-calendar\"\n              onChange={onValueChange}\n              generateConfig={generateConfig}\n              value={value}\n              validRange={[start, end]}\n              locale={{ year: '年' }}\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await sleep(50);\n    openSelect(wrapper, '.ant-picker-calendar-year-select');\n    await sleep(50);\n    clickSelectItem(wrapper);\n    await sleep(50);\n  };\n\n  it('if value.month > end.month, set value.month to end.month', async () => {\n    const value = new dayjs('1990-01-03');\n    const start = new dayjs('2019-04-01');\n    const end = new dayjs('2019-11-01');\n    const onValueChange = jest.fn();\n    await createWrapper(start, end, value, onValueChange);\n    expect(onValueChange).toHaveBeenCalledWith(value.year('2019').month('3'));\n  });\n  it('if value.month > end.month, set value.month to end.month1', async () => {\n    const value = new dayjs('1990-01-03');\n    const start = new dayjs('2019-04-01');\n    const end = new dayjs('2019-11-01');\n    const onValueChange = jest.fn();\n    await createWrapper(start, end, value, onValueChange);\n    expect(onValueChange).toHaveBeenCalledWith(value.year('2019').month('3'));\n  });\n\n  it('if start.month > value.month, set value.month to start.month ', async () => {\n    const value = new dayjs('1990-01-03');\n    const start = new dayjs('2019-11-01');\n    const end = new dayjs('2019-03-01');\n    const onValueChange = jest.fn();\n    await createWrapper(start, end, value, onValueChange);\n    expect(onValueChange).toHaveBeenCalledWith(value.year('2019').month('10'));\n  });\n\n  it('onMonthChange should work correctly', async () => {\n    const start = new dayjs('2018-11-01');\n    const end = new dayjs('2019-03-01');\n    const value = new dayjs('2018-12-03');\n    const onValueChange = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Header\n              prefixCls=\"ant-picker-calendar\"\n              generateConfig={generateConfig}\n              onChange={onValueChange}\n              value={value}\n              validRange={[start, end]}\n              locale={{ year: '年', locale: 'zh_CN' }}\n              mode=\"month\"\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await sleep();\n    openSelect(wrapper, '.ant-picker-calendar-month-select');\n    await sleep(100);\n    clickSelectItem(wrapper);\n    expect(onValueChange).toHaveBeenCalledWith(value.month(10));\n  });\n\n  it('onTypeChange should work correctly', () => {\n    const onTypeChange = jest.fn();\n    const value = new dayjs('2018-12-03');\n    const wrapper = mount({\n      render() {\n        return (\n          <Header\n            prefixCls=\"ant-picker-calendar\"\n            generateConfig={generateConfig}\n            onModeChange={onTypeChange}\n            locale={{ year: '年', month: '月', locale: 'zh_CN' }}\n            value={value}\n            type=\"date\"\n          />\n        );\n      },\n    });\n    wrapper.findAll('input[type=\"radio\"]')[1].trigger('change');\n    expect(onTypeChange).toHaveBeenCalledWith('year');\n  });\n});\n"
  },
  {
    "path": "components/calendar/date-fns.tsx",
    "content": "import generateConfig from '../vc-picker/generate/dateFns';\nimport { withInstall } from '../_util/type';\nimport type { CalendarProps } from './generateCalendar';\nimport generateCalendar from './generateCalendar';\n\nconst Calendar = generateCalendar<Date>(generateConfig);\n\nexport type { CalendarProps };\nexport default withInstall(Calendar);\n"
  },
  {
    "path": "components/calendar/dayjs.tsx",
    "content": "import generateConfig from '../vc-picker/generate/dayjs';\nimport { withInstall } from '../_util/type';\nimport type { CalendarProps } from './generateCalendar';\nimport generateCalendar from './generateCalendar';\n\nconst Calendar = generateCalendar(generateConfig);\n\nexport type { CalendarProps };\nexport default withInstall(Calendar);\n"
  },
  {
    "path": "components/calendar/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n一个通用的日历面板，支持年/月切换。\n\n## en-US\n\nA basic calendar component with Year/Month switch.\n\n</docs>\n<template>\n  <a-calendar v-model:value=\"value\" @panelChange=\"onPanelChange\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst value = ref<Dayjs>();\nconst onPanelChange = (value: Dayjs, mode: string) => {\n  console.log(value, mode);\n};\n</script>\n"
  },
  {
    "path": "components/calendar/demo/card.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 卡片模式\n  en-US: Card\n---\n\n## zh-CN\n\n用于嵌套在空间有限的容器中。\n\n## en-US\n\nNested inside a container element for rendering in limited space.\n</docs>\n\n<template>\n  <div :style=\"{ width: '300px', border: '1px solid #d9d9d9', borderRadius: '4px' }\">\n    <a-calendar v-model:value=\"value\" :fullscreen=\"false\" @panelChange=\"onPanelChange\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\n\nconst value = ref<Dayjs>();\nconst onPanelChange = (value: Dayjs, mode: string) => {\n  console.log(value, mode);\n};\n</script>\n"
  },
  {
    "path": "components/calendar/demo/customize-header.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义头部\n  en-US: Customize Header\n---\n\n## zh-CN\n\n自定义日历头部内容。\n\n## en-US\n\nCustomize Calendar header content.\n\n</docs>\n\n<template>\n  <div style=\"width: 300px; border: 1px solid #d9d9d9; border-radius: 4px\">\n    <a-calendar v-model:value=\"value\" :fullscreen=\"false\" @panelChange=\"onPanelChange\">\n      <template #headerRender=\"{ value: current, type, onChange, onTypeChange }\">\n        <div style=\"padding: 10px\">\n          <div style=\"margin-bottom: 10px\">Custom header</div>\n          <a-row type=\"flex\" justify=\"space-between\">\n            <a-col>\n              <a-radio-group size=\"small\" :value=\"type\" @change=\"e => onTypeChange(e.target.value)\">\n                <a-radio-button value=\"month\">Month</a-radio-button>\n                <a-radio-button value=\"year\">Year</a-radio-button>\n              </a-radio-group>\n            </a-col>\n            <a-col>\n              <a-select\n                size=\"small\"\n                :dropdown-match-select-width=\"false\"\n                class=\"my-year-select\"\n                :value=\"String(current.year())\"\n                @change=\"\n                  newYear => {\n                    onChange(current.year(+newYear));\n                  }\n                \"\n              >\n                <a-select-option\n                  v-for=\"val in getYears(current)\"\n                  :key=\"String(val)\"\n                  class=\"year-item\"\n                >\n                  {{ val }}\n                </a-select-option>\n              </a-select>\n            </a-col>\n            <a-col>\n              <a-select\n                size=\"small\"\n                :dropdown-match-select-width=\"false\"\n                :value=\"String(current.month())\"\n                @change=\"\n                  selectedMonth => {\n                    onChange(current.month(parseInt(String(selectedMonth), 10)));\n                  }\n                \"\n              >\n                <a-select-option\n                  v-for=\"(val, index) in getMonths(current)\"\n                  :key=\"String(index)\"\n                  class=\"month-item\"\n                >\n                  {{ val }}\n                </a-select-option>\n              </a-select>\n            </a-col>\n          </a-row>\n        </div>\n      </template>\n    </a-calendar>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst value = ref<Dayjs>();\n\nconst onPanelChange = (value: Dayjs, mode: string) => {\n  console.log(value, mode);\n};\n\nconst getMonths = (value: Dayjs) => {\n  const localeData = value.localeData();\n  const months = [];\n  for (let i = 0; i < 12; i++) {\n    months.push(localeData.monthsShort(value.month(i)));\n  }\n  return months;\n};\n\nconst getYears = (value: Dayjs) => {\n  const year = value.year();\n  const years = [];\n  for (let i = year - 10; i < year + 10; i += 1) {\n    years.push(i);\n  }\n  return years;\n};\n</script>\n"
  },
  {
    "path": "components/calendar/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Card />\n    <NoticeCalendar />\n    <Select />\n    <CustomizeHeader />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Card from './card.vue';\nimport NoticeCalendar from './notice-calendar.vue';\nimport Select from './select.vue';\nimport CustomizeHeader from './customize-header.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Card,\n    NoticeCalendar,\n    Select,\n    CustomizeHeader,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/calendar/demo/notice-calendar.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 通知事项日历\n  en-US: Notice Calendar\n---\n\n## zh-CN\n\n一个复杂的应用示例，用 `dateCellRender` 和 `monthCellRender` 函数来自定义需要渲染的数据。\n\n## en-US\n\nThis component can be rendered by using `dateCellRender` and `monthCellRender` with the data you need.\n\n</docs>\n\n<template>\n  <a-calendar v-model:value=\"value\">\n    <template #dateCellRender=\"{ current }\">\n      <ul class=\"events\">\n        <li v-for=\"item in getListData(current)\" :key=\"item.content\">\n          <a-badge :status=\"item.type\" :text=\"item.content\" />\n        </li>\n      </ul>\n    </template>\n    <template #monthCellRender=\"{ current }\">\n      <div v-if=\"getMonthData(current)\" class=\"notes-month\">\n        <section>{{ getMonthData(current) }}</section>\n        <span>Backlog number</span>\n      </div>\n    </template>\n  </a-calendar>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst value = ref<Dayjs>();\n\nconst getListData = (value: Dayjs) => {\n  let listData;\n  switch (value.date()) {\n    case 8:\n      listData = [\n        { type: 'warning', content: 'This is warning event.' },\n        { type: 'success', content: 'This is usual event.' },\n      ];\n      break;\n    case 10:\n      listData = [\n        { type: 'warning', content: 'This is warning event.' },\n        { type: 'success', content: 'This is usual event.' },\n        { type: 'error', content: 'This is error event.' },\n      ];\n      break;\n    case 15:\n      listData = [\n        { type: 'warning', content: 'This is warning event' },\n        { type: 'success', content: 'This is very long usual event。。....' },\n        { type: 'error', content: 'This is error event 1.' },\n        { type: 'error', content: 'This is error event 2.' },\n        { type: 'error', content: 'This is error event 3.' },\n        { type: 'error', content: 'This is error event 4.' },\n      ];\n      break;\n    default:\n  }\n  return listData || [];\n};\n\nconst getMonthData = (value: Dayjs) => {\n  if (value.month() === 8) {\n    return 1394;\n  }\n};\n</script>\n<style scoped>\n.events {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.events .ant-badge-status {\n  overflow: hidden;\n  white-space: nowrap;\n  width: 100%;\n  text-overflow: ellipsis;\n  font-size: 12px;\n}\n.notes-month {\n  text-align: center;\n  font-size: 28px;\n}\n.notes-month section {\n  font-size: 28px;\n}\n</style>\n"
  },
  {
    "path": "components/calendar/demo/select.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 选择功能\n  en-US: Selectable Calendar\n---\n\n## zh-CN\n\n一个通用的日历面板，支持年/月切换。\n\n## en-US\n\nA basic calendar component with Year/Month switch.\n\n</docs>\n\n<template>\n  <a-alert :message=\"`You selected date: ${selectedValue && selectedValue.format('YYYY-MM-DD')}`\" />\n  <a-calendar :value=\"date\" @select=\"onSelect\" @panelChange=\"onPanelChange\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport dayjs, { Dayjs } from 'dayjs';\nconst date = ref(dayjs('2017-01-25'));\nconst selectedValue = ref(dayjs('2017-01-25'));\n\nconst onSelect = (value: Dayjs) => {\n  date.value = value;\n  selectedValue.value = value;\n};\nconst onPanelChange = (value: Dayjs) => {\n  date.value = value;\n};\n</script>\n"
  },
  {
    "path": "components/calendar/generateCalendar.tsx",
    "content": "import useMergedState from '../_util/hooks/useMergedState';\nimport { PickerPanel } from '../vc-picker';\nimport type { Locale } from '../vc-picker/interface';\nimport type { GenerateConfig } from '../vc-picker/generate';\nimport type {\n  PickerPanelBaseProps as RCPickerPanelBaseProps,\n  PickerPanelDateProps as RCPickerPanelDateProps,\n  PickerPanelTimeProps as RCPickerPanelTimeProps,\n} from '../vc-picker/PickerPanel';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport enUS from './locale/en_US';\nimport CalendarHeader from './Header';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\nimport type { App, PropType } from 'vue';\nimport { computed, defineComponent, toRef } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\n\n// CSSINJS\nimport useStyle from './style';\n\ntype InjectDefaultProps<Props> = Omit<\n  Props,\n  'locale' | 'generateConfig' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'\n> & {\n  locale?: typeof enUS;\n  size?: 'large' | 'default' | 'small';\n};\n\nexport interface SelectInfo {\n  source: 'year' | 'month' | 'date' | 'customize';\n}\n\n// Picker Props\nexport type PickerPanelBaseProps<DateType> = InjectDefaultProps<RCPickerPanelBaseProps<DateType>>;\nexport type PickerPanelDateProps<DateType> = InjectDefaultProps<RCPickerPanelDateProps<DateType>>;\nexport type PickerPanelTimeProps<DateType> = InjectDefaultProps<RCPickerPanelTimeProps<DateType>>;\n\nexport type PickerProps<DateType> =\n  | PickerPanelBaseProps<DateType>\n  | PickerPanelDateProps<DateType>\n  | PickerPanelTimeProps<DateType>;\n\nexport type CalendarMode = 'year' | 'month';\nexport type HeaderRender<DateType> = (config: {\n  value: DateType;\n  type: CalendarMode;\n  onChange: (date: DateType) => void;\n  onTypeChange: (type: CalendarMode) => void;\n}) => VueNode;\n\ntype CustomRenderType<DateType> = (config: { current: DateType }) => VueNode;\n\nexport interface CalendarProps<DateType> {\n  prefixCls?: string;\n  locale?: typeof enUS;\n  validRange?: [DateType, DateType];\n  disabledDate?: (date: DateType) => boolean;\n  dateFullCellRender?: CustomRenderType<DateType>;\n  dateCellRender?: CustomRenderType<DateType>;\n  monthFullCellRender?: CustomRenderType<DateType>;\n  monthCellRender?: CustomRenderType<DateType>;\n  headerRender?: HeaderRender<DateType>;\n  value?: DateType | string;\n  defaultValue?: DateType | string;\n  mode?: CalendarMode;\n  fullscreen?: boolean;\n  onChange?: (date: DateType | string) => void;\n  'onUpdate:value'?: (date: DateType | string) => void;\n  onPanelChange?: (date: DateType | string, mode: CalendarMode) => void;\n  onSelect?: (date: DateType, selectInfo: SelectInfo) => void;\n  valueFormat?: string;\n}\n\nfunction generateCalendar<\n  DateType,\n  Props extends CalendarProps<DateType> = CalendarProps<DateType>,\n>(generateConfig: GenerateConfig<DateType>) {\n  function isSameYear(date1: DateType, date2: DateType) {\n    return date1 && date2 && generateConfig.getYear(date1) === generateConfig.getYear(date2);\n  }\n\n  function isSameMonth(date1: DateType, date2: DateType) {\n    return (\n      isSameYear(date1, date2) && generateConfig.getMonth(date1) === generateConfig.getMonth(date2)\n    );\n  }\n\n  function isSameDate(date1: DateType, date2: DateType) {\n    return (\n      isSameMonth(date1, date2) && generateConfig.getDate(date1) === generateConfig.getDate(date2)\n    );\n  }\n\n  const Calendar = defineComponent<Props>({\n    name: 'ACalendar',\n    inheritAttrs: false,\n    props: {\n      prefixCls: String,\n      locale: { type: Object as PropType<Props['locale']>, default: undefined as Props['locale'] },\n      validRange: { type: Array as PropType<DateType[]>, default: undefined },\n      disabledDate: { type: Function as PropType<Props['disabledDate']>, default: undefined },\n      dateFullCellRender: {\n        type: Function as PropType<Props['dateFullCellRender']>,\n        default: undefined,\n      },\n      dateCellRender: { type: Function as PropType<Props['dateCellRender']>, default: undefined },\n      monthFullCellRender: {\n        type: Function as PropType<Props['monthFullCellRender']>,\n        default: undefined,\n      },\n      monthCellRender: { type: Function as PropType<Props['monthCellRender']>, default: undefined },\n      headerRender: { type: Function as PropType<Props['headerRender']>, default: undefined },\n      value: {\n        type: [Object, String] as PropType<Props['value']>,\n        default: undefined as Props['value'],\n      },\n      defaultValue: {\n        type: [Object, String] as PropType<Props['defaultValue']>,\n        default: undefined as Props['defaultValue'],\n      },\n      mode: { type: String as PropType<Props['mode']>, default: undefined },\n      fullscreen: { type: Boolean as PropType<Props['fullscreen']>, default: undefined },\n      onChange: { type: Function as PropType<Props['onChange']>, default: undefined },\n      'onUpdate:value': { type: Function as PropType<Props['onUpdate:value']>, default: undefined },\n      onPanelChange: { type: Function as PropType<Props['onPanelChange']>, default: undefined },\n      onSelect: { type: Function as PropType<Props['onSelect']>, default: undefined },\n      valueFormat: { type: String, default: undefined },\n    } as any,\n    slots: Object as CustomSlotsType<{\n      dateFullCellRender?: { current: DateType };\n      dateCellRender?: { current: DateType };\n      monthFullCellRender?: { current: DateType };\n      monthCellRender?: { current: DateType };\n      headerRender?: {\n        value: DateType;\n        type: CalendarMode;\n        onChange: (date: DateType) => void;\n        onTypeChange: (type: CalendarMode) => void;\n      };\n      default: any;\n    }>,\n    setup(p, { emit, slots, attrs }) {\n      const props = p as unknown as Props;\n      const { prefixCls, direction } = useConfigInject('picker', props);\n\n      // style\n      const [wrapSSR, hashId] = useStyle(prefixCls);\n\n      const calendarPrefixCls = computed(() => `${prefixCls.value}-calendar`);\n      const maybeToString = (date: DateType) => {\n        return props.valueFormat ? generateConfig.toString(date, props.valueFormat) : date;\n      };\n      const value = computed(() => {\n        if (props.value) {\n          return props.valueFormat\n            ? (generateConfig.toDate(props.value, props.valueFormat) as DateType)\n            : (props.value as DateType);\n        }\n        return (props.value === '' ? undefined : props.value) as DateType;\n      });\n      const defaultValue = computed(() => {\n        if (props.defaultValue) {\n          return props.valueFormat\n            ? (generateConfig.toDate(props.defaultValue, props.valueFormat) as DateType)\n            : (props.defaultValue as DateType);\n        }\n        return (props.defaultValue === '' ? undefined : props.defaultValue) as DateType;\n      });\n\n      // Value\n      const [mergedValue, setMergedValue] = useMergedState(\n        () => value.value || generateConfig.getNow(),\n        {\n          defaultValue: defaultValue.value,\n          value,\n        },\n      );\n\n      // Mode\n      const [mergedMode, setMergedMode] = useMergedState('month', {\n        value: toRef(props, 'mode'),\n      });\n\n      const panelMode = computed(() => (mergedMode.value === 'year' ? 'month' : 'date'));\n\n      const mergedDisabledDate = computed(() => {\n        return (date: DateType) => {\n          const notInRange = props.validRange\n            ? generateConfig.isAfter(props.validRange[0], date) ||\n              generateConfig.isAfter(date, props.validRange[1])\n            : false;\n          return notInRange || !!props.disabledDate?.(date);\n        };\n      });\n\n      // ====================== Events ======================\n      const triggerPanelChange = (date: DateType, newMode: CalendarMode) => {\n        emit('panelChange', maybeToString(date), newMode);\n      };\n\n      const triggerChange = (date: DateType) => {\n        setMergedValue(date);\n\n        if (!isSameDate(date, mergedValue.value)) {\n          // Trigger when month panel switch month\n          if (\n            (panelMode.value === 'date' && !isSameMonth(date, mergedValue.value)) ||\n            (panelMode.value === 'month' && !isSameYear(date, mergedValue.value))\n          ) {\n            triggerPanelChange(date, mergedMode.value);\n          }\n          const val = maybeToString(date);\n          emit('update:value', val);\n          emit('change', val);\n        }\n      };\n\n      const triggerModeChange = (newMode: CalendarMode) => {\n        setMergedMode(newMode);\n        triggerPanelChange(mergedValue.value, newMode);\n      };\n\n      const onInternalSelect = (date: DateType, source: SelectInfo['source']) => {\n        triggerChange(date);\n        emit('select', maybeToString(date), { source });\n      };\n      // ====================== Locale ======================\n      const defaultLocale = computed(() => {\n        const { locale } = props;\n        const result = {\n          ...enUS,\n          ...locale,\n        };\n        result.lang = {\n          ...result.lang,\n          ...(locale || {}).lang,\n        };\n        return result;\n      });\n\n      const [mergedLocale] = useLocaleReceiver('Calendar', defaultLocale) as [typeof defaultLocale];\n\n      return () => {\n        const today = generateConfig.getNow();\n        const {\n          dateFullCellRender = slots?.dateFullCellRender,\n          dateCellRender = slots?.dateCellRender,\n          monthFullCellRender = slots?.monthFullCellRender,\n          monthCellRender = slots?.monthCellRender,\n          headerRender = slots?.headerRender,\n          fullscreen = true,\n          validRange,\n        } = props;\n        // ====================== Render ======================\n        const dateRender = ({ current: date }) => {\n          if (dateFullCellRender) {\n            return dateFullCellRender({ current: date });\n          }\n          return (\n            <div\n              class={classNames(\n                `${prefixCls.value}-cell-inner`,\n                `${calendarPrefixCls.value}-date`,\n                {\n                  [`${calendarPrefixCls.value}-date-today`]: isSameDate(today, date),\n                },\n              )}\n            >\n              <div class={`${calendarPrefixCls.value}-date-value`}>\n                {String(generateConfig.getDate(date)).padStart(2, '0')}\n              </div>\n              <div class={`${calendarPrefixCls.value}-date-content`}>\n                {dateCellRender && dateCellRender({ current: date })}\n              </div>\n            </div>\n          );\n        };\n\n        const monthRender = ({ current: date }, locale: Locale) => {\n          if (monthFullCellRender) {\n            return monthFullCellRender({ current: date });\n          }\n\n          const months = locale.shortMonths || generateConfig.locale.getShortMonths!(locale.locale);\n\n          return (\n            <div\n              class={classNames(\n                `${prefixCls.value}-cell-inner`,\n                `${calendarPrefixCls.value}-date`,\n                {\n                  [`${calendarPrefixCls.value}-date-today`]: isSameMonth(today, date),\n                },\n              )}\n            >\n              <div class={`${calendarPrefixCls.value}-date-value`}>\n                {months[generateConfig.getMonth(date)]}\n              </div>\n              <div class={`${calendarPrefixCls.value}-date-content`}>\n                {monthCellRender && monthCellRender({ current: date })}\n              </div>\n            </div>\n          );\n        };\n        return wrapSSR(\n          <div\n            {...attrs}\n            class={classNames(\n              calendarPrefixCls.value,\n              {\n                [`${calendarPrefixCls.value}-full`]: fullscreen,\n                [`${calendarPrefixCls.value}-mini`]: !fullscreen,\n                [`${calendarPrefixCls.value}-rtl`]: direction.value === 'rtl',\n              },\n              attrs.class,\n              hashId.value,\n            )}\n          >\n            {headerRender ? (\n              headerRender({\n                value: mergedValue.value,\n                type: mergedMode.value,\n                onChange: nextDate => {\n                  onInternalSelect(nextDate, 'customize');\n                },\n                onTypeChange: triggerModeChange,\n              })\n            ) : (\n              <CalendarHeader\n                prefixCls={calendarPrefixCls.value}\n                value={mergedValue.value}\n                generateConfig={generateConfig}\n                mode={mergedMode.value}\n                fullscreen={fullscreen}\n                locale={mergedLocale.value.lang}\n                validRange={validRange}\n                onChange={onInternalSelect}\n                onModeChange={triggerModeChange}\n              />\n            )}\n            <PickerPanel\n              value={mergedValue.value}\n              prefixCls={prefixCls.value}\n              locale={mergedLocale.value.lang}\n              generateConfig={generateConfig}\n              dateRender={dateRender}\n              monthCellRender={obj => monthRender(obj, mergedLocale.value.lang)}\n              onSelect={nextDate => {\n                onInternalSelect(nextDate, panelMode.value);\n              }}\n              mode={panelMode.value}\n              picker={panelMode.value}\n              disabledDate={mergedDisabledDate.value}\n              hideHeader\n            />\n          </div>,\n        );\n      };\n    },\n  });\n\n  Calendar.install = function (app: App) {\n    app.component(Calendar.name, Calendar);\n    return app;\n  };\n\n  return Calendar;\n}\n\nexport default generateCalendar;\n"
  },
  {
    "path": "components/calendar/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Calendar\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*nF6_To7pDSAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-p-wQLik200AAAAAAAAAAAAADrJ8AQ/original\n---\n\nContainer for displaying data in calendar form.\n\n## When To Use\n\nWhen data is in the form of dates, such as schedules, timetables, prices calendar, lunar calendar. This component also supports Year/Month switch.\n\n## API\n\n**Note:** Part of the Calendar's locale is read from `value`. So, please set the locale of `dayjs` correctly.\n\n```jsx\n// The default locale is en-US, if you want to use other locale, just set locale in entry file globally.\n// import dayjs from 'dayjs';\n// import 'dayjs/locale/zh-cn';\n// dayjs.locale('zh-cn');\n\n<a-calendar v-model:value @panelChange=\"onPanelChange\" @select=\"onSelect\"></a-calendar>\n```\n\ncustomize the progress dot by setting a scoped slot\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| dateCellRender | Customize the display of the date cell by setting a scoped slot, the returned content will be appended to the cell | v-slot:dateCellRender=\"{current: dayjs}\" | - |  |\n| dateFullCellRender | Customize the display of the date cell by setting a scoped slot, the returned content will override the cell | v-slot:dateFullCellRender=\"{current: dayjs}\" | - |  |\n| disabledDate | Function that specifies the dates that cannot be selected | (currentDate: dayjs) => boolean | - |  |\n| fullscreen | Whether to display in full-screen | boolean | `true` |  |\n| headerRender | render custom header in panel | v-slot:headerRender=\"{value: dayjs, type: string, onChange: f(), onTypeChange: f()}\" | - | 1.5.0 |\n| locale | The calendar's locale | object | [default](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json) |  |\n| mode | The display mode of the calendar | `month` \\| `year` | `month` |  |\n| monthCellRender | Customize the display of the month cell by setting a scoped slot, the returned content will be appended to the cell | v-slot:monthCellRender=\"{current: dayjs}\" | - |  |\n| monthFullCellRender | Customize the display of the month cell by setting a scoped slot, the returned content will override the cell | v-slot:monthFullCellRender=\"{current: dayjs}\" | - |  |\n| validRange | to set valid range | \\[[dayjs](https://day.js.org/), [dayjs](https://day.js.org/)] | - |  |\n| value(v-model) | The current selected date | [dayjs](https://day.js.org/) | current date |  |\n| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string, [date formats](https://day.js.org/docs/en/display/format) | - |  |\n\n### events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| change | Callback for when value change | function(date: dayjs \\| string） | - |  |\n| panelChange | Callback for when panel changes | function(date: dayjs \\| string, mode: string) | - |  |\n| select | Callback for when a date is selected, include source info | function(date: dayjs \\| string,info:{ source: 'year' \\| 'month' \\| 'date' \\| 'customize' }) | - |  |\n\n### How to get date from panel click?\n\n`select` event provide `info.source` to help on this:\n\n```html\n<script lang=\"ts\" setup>\n  const onSelect = (date, { source }) => {\n    if (source === 'date') {\n      console.log('Panel Select:', source);\n    }\n  };\n</script>\n<template>\n  <a-calendar @select=\"onSelect\" />\n</template>\n```\n"
  },
  {
    "path": "components/calendar/index.tsx",
    "content": "import Calendar from './dayjs';\nexport * from './dayjs';\n\nexport default Calendar;\n"
  },
  {
    "path": "components/calendar/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Calendar\nsubtitle: 日历\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*nF6_To7pDSAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-p-wQLik200AAAAAAAAAAAAADrJ8AQ/original\n---\n\n按照日历形式展示数据的容器。\n\n## 何时使用\n\n当数据是日期或按照日期划分时，例如日程、课表、价格日历等，农历等。目前支持年/月切换。\n\n## API\n\n**注意：**Calendar 部分 locale 是从 value 中读取，所以请先正确设置 dayjs 的 locale。\n\n```jsx\n// 默认语言为 en-US，所以如果需要使用其他语言，推荐在入口文件全局设置 locale\n// import dayjs from 'dayjs';\n// import 'dayjs/locale/zh-cn';\n// dayjs.locale('zh-cn');\n\n<a-calendar v-model:value=\"value\" @panelChange=\"onPanelChange\" @select=\"onSelect\"></a-calendar>\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| dateCellRender | 作用域插槽，用来自定义渲染日期单元格，返回内容会被追加到单元格, | v-slot:dateCellRender=\"{current: dayjs}\" | - |  |\n| dateFullCellRender | 作用域插槽，自定义渲染日期单元格，返回内容覆盖单元格 | v-slot:dateFullCellRender=\"{current: dayjs}\" | - |  |\n| disabledDate | 不可选择的日期 | (currentDate: dayjs) => boolean | - |  |\n| fullscreen | 是否全屏显示 | boolean | true |  |\n| headerRender | 自定义头部内容 | v-slot:headerRender=\"{value: dayjs, type: string, onChange: f(), onTypeChange: f()}\" | - |  |\n| locale | 国际化配置 | object | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json) |  |\n| mode | 初始模式，`month/year` | string | month |  |\n| monthCellRender | 作用域插槽，自定义渲染月单元格，返回内容会被追加到单元格 | v-slot:monthCellRender=\"{current: dayjs}\" | - |  |\n| monthFullCellRender | 作用域插槽，自定义渲染月单元格，返回内容覆盖单元格 | v-slot:monthFullCellRender=\"{current: dayjs}\" | - |  |\n| validRange | 设置可以显示的日期 | \\[[dayjs](https://day.js.org/), [dayjs](https://day.js.org/)] | - |  |\n| value(v-model) | 展示日期 | [dayjs](https://day.js.org/) | 当前日期 |  |\n| valueFormat | 可选，绑定值的格式，对 value、defaultValue 起作用。不指定则绑定值为 dayjs 对象 | string，[具体格式](https://day.js.org/docs/zh-CN/display/format) | - |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |  |\n| --- | --- | --- | --- | --- |\n| change | 日期变化时的回调, 面板变化有可能导致日期变化 | function(date: dayjs \\| string） | - |\n| panelChange | 日期面板变化回调 | function(date: dayjs \\| string, mode: string) | - |\n| select | 选择日期回调，包含来源信息 | function(date: Dayjs, info: { source: 'year' \\| 'month' \\| 'date' \\| 'customize' }) | - |  |\n\n### 如何仅获取来自面板点击的日期？\n\n`select` 事件提供额外的来源信息，你可以通过 `info.source` 来判断来源：\n\n```html\n<script lang=\"ts\" setup>\n  const onSelect = (date, { source }) => {\n    if (source === 'date') {\n      console.log('Panel Select:', source);\n    }\n  };\n</script>\n<template>\n  <a-calendar @select=\"onSelect\" />\n</template>\n```\n"
  },
  {
    "path": "components/calendar/locale/ar_EG.ts",
    "content": "import arEG from '../../date-picker/locale/ar_EG';\n\nexport default arEG;\n"
  },
  {
    "path": "components/calendar/locale/az_AZ.ts",
    "content": "import azAZ from '../../date-picker/locale/az_AZ';\n\nexport default azAZ;\n"
  },
  {
    "path": "components/calendar/locale/bg_BG.ts",
    "content": "import bgBG from '../../date-picker/locale/bg_BG';\n\nexport default bgBG;\n"
  },
  {
    "path": "components/calendar/locale/bn_BD.ts",
    "content": "import bnBD from '../../date-picker/locale/bn_BD';\n\nexport default bnBD;\n"
  },
  {
    "path": "components/calendar/locale/by_BY.ts",
    "content": "import byBY from '../../date-picker/locale/by_BY';\n\nexport default byBY;\n"
  },
  {
    "path": "components/calendar/locale/ca_ES.ts",
    "content": "import caES from '../../date-picker/locale/ca_ES';\n\nexport default caES;\n"
  },
  {
    "path": "components/calendar/locale/ckb_IQ.ts",
    "content": "import ckbIQ from '../../date-picker/locale/ckb_IQ';\n\nexport default ckbIQ;\n"
  },
  {
    "path": "components/calendar/locale/cs_CZ.ts",
    "content": "import csCZ from '../../date-picker/locale/cs_CZ';\n\nexport default csCZ;\n"
  },
  {
    "path": "components/calendar/locale/da_DK.ts",
    "content": "import daDK from '../../date-picker/locale/da_DK';\n\nexport default daDK;\n"
  },
  {
    "path": "components/calendar/locale/de_DE.ts",
    "content": "import deDE from '../../date-picker/locale/de_DE';\n\nexport default deDE;\n"
  },
  {
    "path": "components/calendar/locale/el_GR.ts",
    "content": "import elGR from '../../date-picker/locale/el_GR';\n\nexport default elGR;\n"
  },
  {
    "path": "components/calendar/locale/en_GB.ts",
    "content": "import enGB from '../../date-picker/locale/en_GB';\n\nexport default enGB;\n"
  },
  {
    "path": "components/calendar/locale/en_US.ts",
    "content": "import enUS from '../../date-picker/locale/en_US';\n\nexport default enUS;\n"
  },
  {
    "path": "components/calendar/locale/es_ES.ts",
    "content": "import esES from '../../date-picker/locale/es_ES';\n\nexport default esES;\n"
  },
  {
    "path": "components/calendar/locale/et_EE.ts",
    "content": "import etEE from '../../date-picker/locale/et_EE';\n\nexport default etEE;\n"
  },
  {
    "path": "components/calendar/locale/fa_IR.ts",
    "content": "import faIR from '../../date-picker/locale/fa_IR';\n\nexport default faIR;\n"
  },
  {
    "path": "components/calendar/locale/fi_FI.ts",
    "content": "import fiFI from '../../date-picker/locale/fi_FI';\n\nexport default fiFI;\n"
  },
  {
    "path": "components/calendar/locale/fr_BE.ts",
    "content": "import frBE from '../../date-picker/locale/fr_BE';\n\nexport default frBE;\n"
  },
  {
    "path": "components/calendar/locale/fr_CA.ts",
    "content": "import frCA from '../../date-picker/locale/fr_CA';\n\nexport default frCA;\n"
  },
  {
    "path": "components/calendar/locale/fr_FR.ts",
    "content": "import frFR from '../../date-picker/locale/fr_FR';\n\nexport default frFR;\n"
  },
  {
    "path": "components/calendar/locale/ga_IE.ts",
    "content": "import gaIE from '../../date-picker/locale/ga_IE';\n\nexport default gaIE;\n"
  },
  {
    "path": "components/calendar/locale/gl_ES.ts",
    "content": "import glES from '../../date-picker/locale/gl_ES';\n\nexport default glES;\n"
  },
  {
    "path": "components/calendar/locale/he_IL.ts",
    "content": "import heIL from '../../date-picker/locale/he_IL';\n\nexport default heIL;\n"
  },
  {
    "path": "components/calendar/locale/hi_IN.ts",
    "content": "import hiIN from '../../date-picker/locale/hi_IN';\n\nexport default hiIN;\n"
  },
  {
    "path": "components/calendar/locale/hr_HR.ts",
    "content": "import hrHR from '../../date-picker/locale/hr_HR';\n\nexport default hrHR;\n"
  },
  {
    "path": "components/calendar/locale/hu_HU.ts",
    "content": "import huHU from '../../date-picker/locale/hu_HU';\n\nexport default huHU;\n"
  },
  {
    "path": "components/calendar/locale/id_ID.ts",
    "content": "import idID from '../../date-picker/locale/id_ID';\n\nexport default idID;\n"
  },
  {
    "path": "components/calendar/locale/is_IS.ts",
    "content": "import isIS from '../../date-picker/locale/is_IS';\n\nexport default isIS;\n"
  },
  {
    "path": "components/calendar/locale/it_IT.ts",
    "content": "import itIT from '../../date-picker/locale/it_IT';\n\nexport default itIT;\n"
  },
  {
    "path": "components/calendar/locale/ja_JP.ts",
    "content": "import jaJP from '../../date-picker/locale/ja_JP';\n\nexport default jaJP;\n"
  },
  {
    "path": "components/calendar/locale/ka_GE.ts",
    "content": "import kaGE from '../../date-picker/locale/ka_GE';\n\nexport default kaGE;\n"
  },
  {
    "path": "components/calendar/locale/kk_KZ.ts",
    "content": "import kkKZ from '../../date-picker/locale/kk_KZ';\n\nexport default kkKZ;\n"
  },
  {
    "path": "components/calendar/locale/km_KH.ts",
    "content": "import kmKH from '../../date-picker/locale/km_KH';\n\nexport default kmKH;\n"
  },
  {
    "path": "components/calendar/locale/kmr_IQ.ts",
    "content": "import kmrIQ from '../../date-picker/locale/kmr_IQ';\n\nexport default kmrIQ;\n"
  },
  {
    "path": "components/calendar/locale/kn_IN.ts",
    "content": "import knIN from '../../date-picker/locale/kn_IN';\n\nexport default knIN;\n"
  },
  {
    "path": "components/calendar/locale/ko_KR.ts",
    "content": "import koKR from '../../date-picker/locale/ko_KR';\n\nexport default koKR;\n"
  },
  {
    "path": "components/calendar/locale/lt_LT.ts",
    "content": "import ltLT from '../../date-picker/locale/lt_LT';\n\nexport default ltLT;\n"
  },
  {
    "path": "components/calendar/locale/lv_LV.ts",
    "content": "import lvLV from '../../date-picker/locale/lv_LV';\n\nexport default lvLV;\n"
  },
  {
    "path": "components/calendar/locale/mk_MK.ts",
    "content": "import mkMK from '../../date-picker/locale/mk_MK';\n\nexport default mkMK;\n"
  },
  {
    "path": "components/calendar/locale/ml_IN.ts",
    "content": "import mlIN from '../../date-picker/locale/ml_IN';\n\nexport default mlIN;\n"
  },
  {
    "path": "components/calendar/locale/mn_MN.ts",
    "content": "import mnMN from '../../date-picker/locale/mn_MN';\n\nexport default mnMN;\n"
  },
  {
    "path": "components/calendar/locale/ms_MY.ts",
    "content": "import msMY from '../../date-picker/locale/ms_MY';\n\nexport default msMY;\n"
  },
  {
    "path": "components/calendar/locale/nb_NO.ts",
    "content": "import nbNO from '../../date-picker/locale/nb_NO';\n\nexport default nbNO;\n"
  },
  {
    "path": "components/calendar/locale/nl_BE.ts",
    "content": "import nlBE from '../../date-picker/locale/nl_BE';\n\nexport default nlBE;\n"
  },
  {
    "path": "components/calendar/locale/nl_NL.ts",
    "content": "import nlNL from '../../date-picker/locale/nl_NL';\n\nexport default nlNL;\n"
  },
  {
    "path": "components/calendar/locale/pl_PL.ts",
    "content": "import plPL from '../../date-picker/locale/pl_PL';\n\nexport default plPL;\n"
  },
  {
    "path": "components/calendar/locale/pt_BR.ts",
    "content": "import ptBR from '../../date-picker/locale/pt_BR';\n\nexport default ptBR;\n"
  },
  {
    "path": "components/calendar/locale/pt_PT.ts",
    "content": "import ptPT from '../../date-picker/locale/pt_PT';\n\nexport default ptPT;\n"
  },
  {
    "path": "components/calendar/locale/ro_RO.ts",
    "content": "import roRO from '../../date-picker/locale/ro_RO';\n\nexport default roRO;\n"
  },
  {
    "path": "components/calendar/locale/ru_RU.ts",
    "content": "import ruRU from '../../date-picker/locale/ru_RU';\n\nexport default ruRU;\n"
  },
  {
    "path": "components/calendar/locale/sk_SK.ts",
    "content": "import skSK from '../../date-picker/locale/sk_SK';\n\nexport default skSK;\n"
  },
  {
    "path": "components/calendar/locale/sl_SI.ts",
    "content": "import slSI from '../../date-picker/locale/sl_SI';\n\nexport default slSI;\n"
  },
  {
    "path": "components/calendar/locale/sr_RS.ts",
    "content": "import srRS from '../../date-picker/locale/sr_RS';\n\nexport default srRS;\n"
  },
  {
    "path": "components/calendar/locale/sv_SE.ts",
    "content": "import svSE from '../../date-picker/locale/sv_SE';\n\nexport default svSE;\n"
  },
  {
    "path": "components/calendar/locale/ta_IN.ts",
    "content": "import taIN from '../../date-picker/locale/ta_IN';\n\nexport default taIN;\n"
  },
  {
    "path": "components/calendar/locale/th_TH.ts",
    "content": "import thTH from '../../date-picker/locale/th_TH';\n\nexport default thTH;\n"
  },
  {
    "path": "components/calendar/locale/tr_TR.ts",
    "content": "import trTR from '../../date-picker/locale/tr_TR';\n\nexport default trTR;\n"
  },
  {
    "path": "components/calendar/locale/uk_UA.ts",
    "content": "import ukUA from '../../date-picker/locale/uk_UA';\n\nexport default ukUA;\n"
  },
  {
    "path": "components/calendar/locale/ur_PK.ts",
    "content": "import urPK from '../../date-picker/locale/ur_PK';\n\nexport default urPK;\n"
  },
  {
    "path": "components/calendar/locale/vi_VN.ts",
    "content": "import viVN from '../../date-picker/locale/vi_VN';\n\nexport default viVN;\n"
  },
  {
    "path": "components/calendar/locale/zh_CN.ts",
    "content": "import zhCN from '../../date-picker/locale/zh_CN';\n\nexport default zhCN;\n"
  },
  {
    "path": "components/calendar/locale/zh_TW.ts",
    "content": "import zhTW from '../../date-picker/locale/zh_TW';\n\nexport default zhTW;\n"
  },
  {
    "path": "components/calendar/moment.tsx",
    "content": "import type { Moment } from 'moment';\nimport generateConfig from '../vc-picker/generate/moment';\nimport { withInstall } from '../_util/type';\nimport type { CalendarProps } from './generateCalendar';\nimport generateCalendar from './generateCalendar';\n\nconst Calendar = generateCalendar<Moment>(generateConfig);\n\nexport type { CalendarProps };\nexport default withInstall(Calendar);\n"
  },
  {
    "path": "components/calendar/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { resetComponent } from '../../style';\nimport type { PickerPanelToken } from '../../date-picker/style';\nimport { genPanelStyle, initPickerPanelToken } from '../../date-picker/style';\nimport type { InputToken } from '../../input/style';\nimport { initInputToken } from '../../input/style';\nimport type { FullToken } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\nexport interface ComponentToken {\n  yearControlWidth: number;\n  monthControlWidth: number;\n  miniContentHeight: number;\n}\n\ninterface CalendarToken extends InputToken<FullToken<'Calendar'>>, PickerPanelToken {\n  calendarCls: string;\n  calendarFullBg: string;\n  calendarFullPanelBg: string;\n  calendarItemActiveBg: string;\n  dateValueHeight: number;\n  weekHeight: number;\n  dateContentHeight: number;\n}\n\nexport const genCalendarStyles = (token: CalendarToken): CSSObject => {\n  const { calendarCls, componentCls, calendarFullBg, calendarFullPanelBg, calendarItemActiveBg } =\n    token;\n  return {\n    [calendarCls]: {\n      ...genPanelStyle(token),\n      ...resetComponent(token),\n      background: calendarFullBg,\n      '&-rtl': {\n        direction: 'rtl',\n      },\n      [`${calendarCls}-header`]: {\n        display: 'flex',\n        justifyContent: 'flex-end',\n        padding: `${token.paddingSM}px 0`,\n\n        [`${calendarCls}-year-select`]: {\n          minWidth: token.yearControlWidth,\n        },\n        [`${calendarCls}-month-select`]: {\n          minWidth: token.monthControlWidth,\n          marginInlineStart: token.marginXS,\n        },\n        [`${calendarCls}-mode-switch`]: {\n          marginInlineStart: token.marginXS,\n        },\n      },\n    },\n    [`${calendarCls} ${componentCls}-panel`]: {\n      background: calendarFullPanelBg,\n      border: 0,\n      borderTop: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n      borderRadius: 0,\n      [`${componentCls}-month-panel, ${componentCls}-date-panel`]: {\n        width: 'auto',\n      },\n      [`${componentCls}-body`]: {\n        padding: `${token.paddingXS}px 0`,\n      },\n      [`${componentCls}-content`]: {\n        width: '100%',\n      },\n    },\n    [`${calendarCls}-mini`]: {\n      borderRadius: token.borderRadiusLG,\n      [`${calendarCls}-header`]: {\n        paddingInlineEnd: token.paddingXS,\n        paddingInlineStart: token.paddingXS,\n      },\n      [`${componentCls}-panel`]: {\n        borderRadius: `0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px`,\n      },\n      [`${componentCls}-content`]: {\n        height: token.miniContentHeight,\n        th: {\n          height: 'auto',\n          padding: 0,\n          lineHeight: `${token.weekHeight}px`,\n        },\n      },\n      [`${componentCls}-cell::before`]: {\n        pointerEvents: 'none',\n      },\n    },\n    [`${calendarCls}${calendarCls}-full`]: {\n      [`${componentCls}-panel`]: {\n        display: 'block',\n        width: '100%',\n        textAlign: 'end',\n        background: calendarFullBg,\n        border: 0,\n        [`${componentCls}-body`]: {\n          'th, td': {\n            padding: 0,\n          },\n          th: {\n            height: 'auto',\n            paddingInlineEnd: token.paddingSM,\n            paddingBottom: token.paddingXXS,\n            lineHeight: `${token.weekHeight}px`,\n          },\n        },\n      },\n      [`${componentCls}-cell`]: {\n        '&::before': {\n          display: 'none',\n        },\n        '&:hover': {\n          [`${calendarCls}-date`]: {\n            background: token.controlItemBgHover,\n          },\n        },\n        [`${calendarCls}-date-today::before`]: {\n          display: 'none',\n        },\n        // >>> Selected\n        [`&-in-view${componentCls}-cell-selected`]: {\n          [`${calendarCls}-date, ${calendarCls}-date-today`]: {\n            background: calendarItemActiveBg,\n          },\n        },\n        '&-selected, &-selected:hover': {\n          [`${calendarCls}-date, ${calendarCls}-date-today`]: {\n            [`${calendarCls}-date-value`]: {\n              color: token.colorPrimary,\n            },\n          },\n        },\n      },\n      [`${calendarCls}-date`]: {\n        display: 'block',\n        width: 'auto',\n        height: 'auto',\n        margin: `0 ${token.marginXS / 2}px`,\n        padding: `${token.paddingXS / 2}px ${token.paddingXS}px 0`,\n        border: 0,\n        borderTop: `${token.lineWidthBold}px ${token.lineType} ${token.colorSplit}`,\n        borderRadius: 0,\n        transition: `background ${token.motionDurationSlow}`,\n        '&-value': {\n          lineHeight: `${token.dateValueHeight}px`,\n          transition: `color ${token.motionDurationSlow}`,\n        },\n        '&-content': {\n          position: 'static',\n          width: 'auto',\n          height: token.dateContentHeight,\n          overflowY: 'auto',\n          color: token.colorText,\n          lineHeight: token.lineHeight,\n          textAlign: 'start',\n        },\n        '&-today': {\n          borderColor: token.colorPrimary,\n          [`${calendarCls}-date-value`]: {\n            color: token.colorText,\n          },\n        },\n      },\n    },\n    [`@media only screen and (max-width: ${token.screenXS}px) `]: {\n      [`${calendarCls}`]: {\n        [`${calendarCls}-header`]: {\n          display: 'block',\n          [`${calendarCls}-year-select`]: {\n            width: '50%',\n          },\n          [`${calendarCls}-month-select`]: {\n            width: `calc(50% - ${token.paddingXS}px)`,\n          },\n          [`${calendarCls}-mode-switch`]: {\n            width: '100%',\n            marginTop: token.marginXS,\n            marginInlineStart: 0,\n            '> label': {\n              width: '50%',\n              textAlign: 'center',\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook(\n  'Calendar',\n  token => {\n    const calendarCls = `${token.componentCls}-calendar`;\n    const calendarToken = mergeToken<CalendarToken>(\n      initInputToken<FullToken<'Calendar'>>(token),\n      initPickerPanelToken(token),\n      {\n        calendarCls,\n        pickerCellInnerCls: `${token.componentCls}-cell-inner`,\n        calendarFullBg: token.colorBgContainer,\n        calendarFullPanelBg: token.colorBgContainer,\n        calendarItemActiveBg: token.controlItemBgActive,\n        dateValueHeight: token.controlHeightSM,\n        weekHeight: token.controlHeightSM * 0.75,\n        dateContentHeight:\n          (token.fontSizeSM * token.lineHeightSM + token.marginXS) * 3 + token.lineWidth * 2,\n      },\n    );\n\n    return [genCalendarStyles(calendarToken)];\n  },\n  {\n    yearControlWidth: 80,\n    monthControlWidth: 70,\n    miniContentHeight: 256,\n  },\n);\n"
  },
  {
    "path": "components/card/Card.tsx",
    "content": "import type { VNodeTypes, PropType, VNode, ExtractPropTypes, CSSProperties } from 'vue';\nimport { isVNode, defineComponent } from 'vue';\nimport Tabs from '../tabs';\nimport PropTypes from '../_util/vue-types';\nimport { flattenChildren, isEmptyElement, filterEmptyWithUndefined } from '../_util/props-util';\nimport type { SizeType } from '../config-provider';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport devWarning from '../vc-util/devWarning';\nimport useStyle from './style';\nimport Skeleton from '../skeleton';\nimport type { CustomSlotsType } from '../_util/type';\nimport { customRenderSlot } from '../_util/vnode';\n\nexport interface CardTabListType {\n  key: string;\n  tab: any;\n  /** @deprecated Please use `customTab` instead. */\n  slots?: { tab: string };\n  disabled?: boolean;\n}\n\nexport type CardType = 'inner';\nexport type CardSize = 'default' | 'small';\n\nconst { TabPane } = Tabs;\n\nexport const cardProps = () => ({\n  prefixCls: String,\n  title: PropTypes.any,\n  extra: PropTypes.any,\n  bordered: { type: Boolean, default: true },\n  bodyStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  headStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  loading: { type: Boolean, default: false },\n  hoverable: { type: Boolean, default: false },\n  type: { type: String as PropType<CardType> },\n  size: { type: String as PropType<CardSize> },\n  actions: PropTypes.any,\n  tabList: {\n    type: Array as PropType<CardTabListType[]>,\n  },\n  tabBarExtraContent: PropTypes.any,\n  activeTabKey: String,\n  defaultActiveTabKey: String,\n  cover: PropTypes.any,\n  onTabChange: {\n    type: Function as PropType<(key: string) => void>,\n  },\n});\n\nexport type CardProps = Partial<ExtractPropTypes<ReturnType<typeof cardProps>>>;\n\nconst Card = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACard',\n  inheritAttrs: false,\n  props: cardProps(),\n  slots: Object as CustomSlotsType<{\n    title: any;\n    extra: any;\n    tabBarExtraContent: any;\n    actions: any;\n    cover: any;\n    customTab: CardTabListType;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction, size } = useConfigInject('card', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const getAction = (actions: VNodeTypes[]) => {\n      const actionList = actions.map((action, index) =>\n        (isVNode(action) && !isEmptyElement(action)) || !isVNode(action) ? (\n          <li style={{ width: `${100 / actions.length}%` }} key={`action-${index}`}>\n            <span>{action}</span>\n          </li>\n        ) : null,\n      );\n      return actionList;\n    };\n    const triggerTabChange = (key: string) => {\n      props.onTabChange?.(key);\n    };\n    const isContainGrid = (obj: VNode[] = []) => {\n      let containGrid: boolean;\n      obj.forEach(element => {\n        if (element && isPlainObject(element.type) && (element.type as any).__ANT_CARD_GRID) {\n          containGrid = true;\n        }\n      });\n      return containGrid;\n    };\n\n    return () => {\n      const {\n        headStyle = {},\n        bodyStyle = {},\n        loading,\n        bordered = true,\n        type,\n        tabList,\n        hoverable,\n        activeTabKey,\n        defaultActiveTabKey,\n        tabBarExtraContent = filterEmptyWithUndefined(slots.tabBarExtraContent?.()),\n        title = filterEmptyWithUndefined(slots.title?.()),\n        extra = filterEmptyWithUndefined(slots.extra?.()),\n        actions = filterEmptyWithUndefined(slots.actions?.()),\n        cover = filterEmptyWithUndefined(slots.cover?.()),\n      } = props;\n      const children = flattenChildren(slots.default?.());\n      const pre = prefixCls.value;\n      const classString = {\n        [`${pre}`]: true,\n        [hashId.value]: true,\n        [`${pre}-loading`]: loading,\n        [`${pre}-bordered`]: bordered,\n        [`${pre}-hoverable`]: !!hoverable,\n        [`${pre}-contain-grid`]: isContainGrid(children),\n        [`${pre}-contain-tabs`]: tabList && tabList.length,\n        [`${pre}-${size.value}`]: size.value,\n        [`${pre}-type-${type}`]: !!type,\n        [`${pre}-rtl`]: direction.value === 'rtl',\n      };\n      const loadingBlock = (\n        <Skeleton loading active paragraph={{ rows: 4 }} title={false}>\n          {children}\n        </Skeleton>\n      );\n\n      const hasActiveTabKey = activeTabKey !== undefined;\n      const tabsProps = {\n        size: 'large' as SizeType,\n        [hasActiveTabKey ? 'activeKey' : 'defaultActiveKey']: hasActiveTabKey\n          ? activeTabKey\n          : defaultActiveTabKey,\n        onChange: triggerTabChange,\n        class: `${pre}-head-tabs`,\n      };\n\n      let head;\n      const tabs =\n        tabList && tabList.length ? (\n          <Tabs\n            {...tabsProps}\n            v-slots={{ rightExtra: tabBarExtraContent ? () => tabBarExtraContent : null }}\n          >\n            {tabList.map(item => {\n              const { tab: temp, slots: itemSlots } = item as CardTabListType;\n              const name = itemSlots?.tab;\n              devWarning(\n                !itemSlots,\n                'Card',\n                `tabList slots is deprecated, Please use \\`customTab\\` instead.`,\n              );\n              let tab = temp !== undefined ? temp : slots[name] ? slots[name](item) : null;\n              tab = customRenderSlot(slots, 'customTab', item as any, () => [tab]);\n              return <TabPane tab={tab} key={item.key} disabled={item.disabled} />;\n            })}\n          </Tabs>\n        ) : null;\n      if (title || extra || tabs) {\n        head = (\n          <div class={`${pre}-head`} style={headStyle}>\n            <div class={`${pre}-head-wrapper`}>\n              {title && <div class={`${pre}-head-title`}>{title}</div>}\n              {extra && <div class={`${pre}-extra`}>{extra}</div>}\n            </div>\n            {tabs}\n          </div>\n        );\n      }\n\n      const coverDom = cover ? <div class={`${pre}-cover`}>{cover}</div> : null;\n      const body = (\n        <div class={`${pre}-body`} style={bodyStyle}>\n          {loading ? loadingBlock : children}\n        </div>\n      );\n      const actionDom =\n        actions && actions.length ? <ul class={`${pre}-actions`}>{getAction(actions)}</ul> : null;\n\n      return wrapSSR(\n        <div ref=\"cardContainerRef\" {...attrs} class={[classString, attrs.class]}>\n          {head}\n          {coverDom}\n          {children && children.length ? body : null}\n          {actionDom}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default Card;\n"
  },
  {
    "path": "components/card/Grid.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nexport const cardGridProps = () => ({\n  prefixCls: String,\n  hoverable: { type: Boolean, default: true },\n});\nexport type CardGridProps = Partial<ExtractPropTypes<ReturnType<typeof cardGridProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACardGrid',\n  __ANT_CARD_GRID: true,\n  props: cardGridProps(),\n  setup(props, { slots }) {\n    const { prefixCls } = useConfigInject('card', props);\n    const classNames = computed(() => {\n      return {\n        [`${prefixCls.value}-grid`]: true,\n        [`${prefixCls.value}-grid-hoverable`]: props.hoverable,\n      };\n    });\n    return () => {\n      return <div class={classNames.value}>{slots.default?.()}</div>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/card/Meta.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport { getPropsSlot } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { vNodeType } from '../_util/type';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport const cardMetaProps = () => ({\n  prefixCls: String,\n  title: vNodeType(),\n  description: vNodeType(),\n  avatar: vNodeType(),\n});\nexport type CardGridProps = Partial<ExtractPropTypes<ReturnType<typeof cardMetaProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACardMeta',\n  props: cardMetaProps(),\n  slots: Object as CustomSlotsType<{\n    title: any;\n    description: any;\n    avatar: any;\n    default: any;\n  }>,\n  setup(props, { slots }) {\n    const { prefixCls } = useConfigInject('card', props);\n    return () => {\n      const classString = {\n        [`${prefixCls.value}-meta`]: true,\n      };\n      const avatar = getPropsSlot(slots, props, 'avatar');\n      const title = getPropsSlot(slots, props, 'title');\n      const description = getPropsSlot(slots, props, 'description');\n\n      const avatarDom = avatar ? (\n        <div class={`${prefixCls.value}-meta-avatar`}>{avatar}</div>\n      ) : null;\n      const titleDom = title ? <div class={`${prefixCls.value}-meta-title`}>{title}</div> : null;\n      const descriptionDom = description ? (\n        <div class={`${prefixCls.value}-meta-description`}>{description}</div>\n      ) : null;\n      const MetaDetail =\n        titleDom || descriptionDom ? (\n          <div class={`${prefixCls.value}-meta-detail`}>\n            {titleDom}\n            {descriptionDom}\n          </div>\n        ) : null;\n      return (\n        <div class={classString}>\n          {avatarDom}\n          {MetaDetail}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/card/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/card/demo/basic.vue correctly 1`] = `\n<div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Default size card</div>\n      <div class=\"ant-card-extra\"><a href=\"#\">more</a></div>\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <p>card content</p>\n    <p>card content</p>\n    <p>card content</p>\n  </div>\n  <!---->\n</div>\n<br>\n<div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered ant-card-small\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Small size card</div>\n      <div class=\"ant-card-extra\"><a href=\"#\">more</a></div>\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <p>card content</p>\n    <p>card content</p>\n    <p>card content</p>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/card/demo/border-less.vue correctly 1`] = `\n<div style=\"background: rgb(236, 236, 236); padding: 30px;\">\n  <div style=\"width: 300px;\" class=\"ant-card\">\n    <div class=\"ant-card-head\">\n      <div class=\"ant-card-head-wrapper\">\n        <div class=\"ant-card-head-title\">Card title</div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n    <!---->\n    <div class=\"ant-card-body\">\n      <p>Card content</p>\n      <p>Card content</p>\n      <p>Card content</p>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/card/demo/flexible-content.vue correctly 1`] = `\n<div style=\"width: 240px;\" class=\"ant-card  ant-card-bordered ant-card-hoverable\">\n  <!---->\n  <div class=\"ant-card-cover\"><img alt=\"example\" src=\"https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png\"></div>\n  <div class=\"ant-card-body\">\n    <div class=\"ant-card-meta\">\n      <!---->\n      <div class=\"ant-card-meta-detail\">\n        <div class=\"ant-card-meta-title\">Europe Street beat</div>\n        <div class=\"ant-card-meta-description\">www.instagram.com</div>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/card/demo/grid-card.vue correctly 1`] = `\n<div class=\"ant-card  ant-card-bordered ant-card-contain-grid\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Card Title</div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n    <div class=\"ant-card-grid ant-card-grid-hoverable\" style=\"width: 25%; text-align: center;\">Content</div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/card/demo/in-column.vue correctly 1`] = `\n<div style=\"background-color: rgb(236, 236, 236); padding: 20px;\">\n  <div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n    <div class=\"ant-col ant-col-8\" style=\"padding-left: 8px; padding-right: 8px;\">\n      <div class=\"ant-card\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Card title</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">\n          <p>card content</p>\n        </div>\n        <!---->\n      </div>\n    </div>\n    <div class=\"ant-col ant-col-8\" style=\"padding-left: 8px; padding-right: 8px;\">\n      <div class=\"ant-card\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Card title</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">\n          <p>card content</p>\n        </div>\n        <!---->\n      </div>\n    </div>\n    <div class=\"ant-col ant-col-8\" style=\"padding-left: 8px; padding-right: 8px;\">\n      <div class=\"ant-card\">\n        <div class=\"ant-card-head\">\n          <div class=\"ant-card-head-wrapper\">\n            <div class=\"ant-card-head-title\">Card title</div>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-card-body\">\n          <p>card content</p>\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/card/demo/inner.vue correctly 1`] = `\n<div class=\"ant-card  ant-card-bordered\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Card title</div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <p style=\"font-size: 14px; color: rgba(0, 0, 0, 0.85); margin-bottom: 16px; font-weight: 500;\"> Group title </p>\n    <div class=\"ant-card  ant-card-bordered\">\n      <div class=\"ant-card-head\">\n        <div class=\"ant-card-head-wrapper\">\n          <div class=\"ant-card-head-title\">Inner card title</div>\n          <div class=\"ant-card-extra\"><a href=\"#\">More</a></div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-card-body\"> Inner Card content </div>\n      <!---->\n    </div>\n    <div style=\"margin-top: 16px;\" class=\"ant-card  ant-card-bordered\">\n      <div class=\"ant-card-head\">\n        <div class=\"ant-card-head-wrapper\">\n          <div class=\"ant-card-head-title\">Inner card title</div>\n          <div class=\"ant-card-extra\"><a href=\"#\">More</a></div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-card-body\"> Inner Card content </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/card/demo/loading.vue correctly 1`] = `\n<div class=\"ant-card  ant-card-loading ant-card-bordered\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Card title</div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <div class=\"ant-skeleton ant-skeleton-active \">\n      <!---->\n      <div class=\"ant-skeleton-content\">\n        <!---->\n        <ul class=\"ant-skeleton-paragraph\">\n          <li></li>\n          <li></li>\n          <li></li>\n          <li style=\"width: 61%;\"></li>\n        </ul>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n<button style=\"margin-top: 16px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Toggle loading</span>\n</button>\n`;\n\nexports[`renders ./components/card/demo/meta.vue correctly 1`] = `\n<div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered ant-card-hoverable\">\n  <!---->\n  <div class=\"ant-card-cover\"><img alt=\"example\" src=\"https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png\"></div>\n  <div class=\"ant-card-body\">\n    <div class=\"ant-card-meta\">\n      <div class=\"ant-card-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n      <div class=\"ant-card-meta-detail\">\n        <div class=\"ant-card-meta-title\">Card title</div>\n        <div class=\"ant-card-meta-description\">This is the description</div>\n      </div>\n    </div>\n  </div>\n  <ul class=\"ant-card-actions\">\n    <li style=\"width: 33.333333333333336%;\"><span><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></span></li>\n    <li style=\"width: 33.333333333333336%;\"><span><span role=\"img\" aria-label=\"edit\" class=\"anticon anticon-edit\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></span></li>\n    <li style=\"width: 33.333333333333336%;\"><span><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span></li>\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/card/demo/simple.vue correctly 1`] = `\n<div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered\">\n  <!---->\n  <!---->\n  <div class=\"ant-card-body\">\n    <p>Card content</p>\n    <p>Card content</p>\n    <p>Card content</p>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/card/demo/tabs.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-card  ant-card-bordered ant-card-contain-tabs\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Card title</div>\n      <div class=\"ant-card-extra\"><a href=\"#\">More</a></div>\n    </div>\n    <div class=\"ant-tabs ant-tabs-top  ant-tabs-large ant-card-head-tabs\">\n      <div role=\"tablist\" class=\"ant-tabs-nav\">\n        <!---->\n        <div class=\"ant-tabs-nav-wrap\">\n          <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n            <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n              <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\"><span><span role=\"img\" aria-label=\"home\" class=\"anticon anticon-home\"><svg focusable=\"false\" class=\"\" data-icon=\"home\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 00-44.4 0L77.5 505a63.9 63.9 0 00-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0018.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\"></path></svg></span> tab1</span></div>\n              <!---->\n            </div>\n            <div class=\"ant-tabs-tab\">\n              <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">tab2</div>\n              <!---->\n            </div>\n            <!---->\n            <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n          </div>\n        </div>\n        <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n          <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n          <!---->\n        </div>\n        <!---->\n        <!---->\n      </div>\n      <div class=\"ant-tabs-content-holder\">\n        <div class=\"ant-tabs-content ant-tabs-content-top\">\n          <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">\n            <!---->\n          </div>\n          <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-card-body\"> content1</div>\n  <!---->\n</div>\n<br>\n<br>\n<div style=\"width: 100%;\" class=\"ant-card  ant-card-bordered ant-card-contain-tabs\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs ant-tabs-top  ant-tabs-large ant-card-head-tabs\">\n      <div role=\"tablist\" class=\"ant-tabs-nav\">\n        <!---->\n        <div class=\"ant-tabs-nav-wrap\">\n          <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n            <div class=\"ant-tabs-tab\">\n              <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">article</div>\n              <!---->\n            </div>\n            <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n              <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">app</div>\n              <!---->\n            </div>\n            <div class=\"ant-tabs-tab\">\n              <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">project</div>\n              <!---->\n            </div>\n            <!---->\n            <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n          </div>\n        </div>\n        <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n          <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-extra-content\"><a href=\"#\">More</a></div>\n        <!---->\n      </div>\n      <div class=\"ant-tabs-content-holder\">\n        <div class=\"ant-tabs-content ant-tabs-content-top\">\n          <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n            <!---->\n          </div>\n          <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">\n            <!---->\n          </div>\n          <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <p>app content</p>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/card/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Card should still have padding when card which set padding to 0 is loading 1`] = `\n<div class=\"ant-card  ant-card-loading ant-card-bordered\">\n  <!---->\n  <!---->\n  <div class=\"ant-card-body\" style=\"padding: 0px;\">\n    <div class=\"ant-skeleton ant-skeleton-active \">\n      <!---->\n      <div class=\"ant-skeleton-content\">\n        <!---->\n        <ul class=\"ant-skeleton-paragraph\">\n          <li></li>\n          <li></li>\n          <li></li>\n          <li style=\"width: 61%;\"></li>\n        </ul>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`Card title should be vertically aligned 1`] = `\n<div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered\">\n  <div class=\"ant-card-head\">\n    <div class=\"ant-card-head-wrapper\">\n      <div class=\"ant-card-head-title\">Card title</div>\n      <div class=\"ant-card-extra\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n          <!----><span>Button</span>\n        </button></div>\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-card-body\">\n    <p>Card content</p>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/card/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('card');\n"
  },
  {
    "path": "components/card/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Card from '../index';\nimport Button from '../../button/index';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Card', () => {\n  mountTest(Card);\n  beforeAll(() => {\n    jest.useFakeTimers();\n  });\n\n  afterAll(() => {\n    jest.useRealTimers();\n  });\n  it('should still have padding when card which set padding to 0 is loading', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Card loading bodyStyle={{ padding: 0 }}>\n            xxx\n          </Card>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('title should be vertically aligned', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Card title=\"Card title\" extra={<Button>Button</Button>} style={{ width: '300px' }}>\n            <p>Card content</p>\n          </Card>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('onTabChange should work', () => {\n    const tabList = [\n      {\n        key: 'tab1',\n        tab: 'tab1',\n      },\n      {\n        key: 'tab2',\n        tab: 'tab2',\n      },\n    ];\n    const onTabChange = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Card onTabChange={onTabChange} tabList={tabList}>\n              xxx\n            </Card>\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    wrapper.findAll('.ant-tabs-tab')[1].trigger('click');\n    expect(onTabChange).toHaveBeenCalledWith('tab2');\n  });\n\n  it('should not render when actions is number', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Card title=\"Card title\" actions={11}>\n            <p>Card content</p>\n          </Card>\n        );\n      },\n    });\n    expect(wrapper.findAll('.ant-card-actions').length).toBe(0);\n  });\n});\n"
  },
  {
    "path": "components/card/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 典型卡片\n  en-US: Basic card\n---\n\n## zh-CN\n\n包含标题、内容、操作区域。\n可通过设置size为`default`或者`small`，控制尺寸\n\n## en-US\n\nA basic card containing a title, content and an extra corner content.\nSupports two sizes: `default` and `small`.\n</docs>\n\n<template>\n  <a-card title=\"Default size card\" style=\"width: 300px\">\n    <template #extra><a href=\"#\">more</a></template>\n    <p>card content</p>\n    <p>card content</p>\n    <p>card content</p>\n  </a-card>\n  <br />\n  <a-card size=\"small\" title=\"Small size card\" style=\"width: 300px\">\n    <template #extra><a href=\"#\">more</a></template>\n    <p>card content</p>\n    <p>card content</p>\n    <p>card content</p>\n  </a-card>\n</template>\n"
  },
  {
    "path": "components/card/demo/border-less.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 无边框\n  en-US: No border\n---\n\n## zh-CN\n\n在灰色背景上使用无边框的卡片\n\n## en-US\n\nA borderless card on a gray background.\n</docs>\n\n<template>\n  <div style=\"background: #ececec; padding: 30px\">\n    <a-card title=\"Card title\" :bordered=\"false\" style=\"width: 300px\">\n      <p>Card content</p>\n      <p>Card content</p>\n      <p>Card content</p>\n    </a-card>\n  </div>\n</template>\n"
  },
  {
    "path": "components/card/demo/flexible-content.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 更灵活的内容展示\n  en-US: Customized content\n---\n\n## zh-CN\n\n可以利用 `Card.Meta` 支持更灵活的内容\n\n## en-US\n\nYou can use `Card.Meta` to support more flexible content.\n\n</docs>\n\n<template>\n  <a-card hoverable style=\"width: 240px\">\n    <template #cover>\n      <img alt=\"example\" src=\"https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png\" />\n    </template>\n    <a-card-meta title=\"Europe Street beat\">\n      <template #description>www.instagram.com</template>\n    </a-card-meta>\n  </a-card>\n</template>\n"
  },
  {
    "path": "components/card/demo/grid-card.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 网格型内嵌卡片\n  en-US: Grid card\n---\n\n## zh-CN\n\n一种常见的卡片内容区隔模式。\n\n## en-US\n\nGrid style card content.\n\n</docs>\n\n<template>\n  <a-card title=\"Card Title\">\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\" :hoverable=\"false\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n    <a-card-grid style=\"width: 25%; text-align: center\">Content</a-card-grid>\n  </a-card>\n</template>\n"
  },
  {
    "path": "components/card/demo/in-column.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 栅格卡片\n  en-US: Card in column\n---\n\n## zh-CN\n\n在系统概览页面常常和栅格进行配合。\n\n## en-US\n\nCards usually cooperate with grid column layout in overview page.\n\n</docs>\n\n<template>\n  <div style=\"background-color: #ececec; padding: 20px\">\n    <a-row :gutter=\"16\">\n      <a-col :span=\"8\">\n        <a-card title=\"Card title\" :bordered=\"false\">\n          <p>card content</p>\n        </a-card>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-card title=\"Card title\" :bordered=\"false\">\n          <p>card content</p>\n        </a-card>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-card title=\"Card title\" :bordered=\"false\">\n          <p>card content</p>\n        </a-card>\n      </a-col>\n    </a-row>\n  </div>\n</template>\n"
  },
  {
    "path": "components/card/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <BorderLess />\n    <FlexibleContent />\n    <GridCard />\n    <InColumn />\n    <Inner />\n    <Loading />\n    <Meta />\n    <Simple />\n    <Tabs />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport BorderLess from './border-less.vue';\nimport FlexibleContent from './flexible-content.vue';\nimport GridCard from './grid-card.vue';\nimport InColumn from './in-column.vue';\nimport Inner from './inner.vue';\nimport Loading from './loading.vue';\nimport Meta from './meta.vue';\nimport Simple from './simple.vue';\nimport Tabs from './tabs.vue';\n\nimport CN from './../index.zh-CN.md';\nimport US from './../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    BorderLess,\n    FlexibleContent,\n    GridCard,\n    InColumn,\n    Inner,\n    Loading,\n    Meta,\n    Simple,\n    Tabs,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/card/demo/inner.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 内部卡片\n  en-US: Inner card\n---\n\n## zh-CN\n\n可以放在普通卡片内部，展示多层级结构的信息\n\n## en-US\n\nIt can be placed inside the ordinary card to display the information of the multilevel structure\n\n</docs>\n\n<template>\n  <a-card title=\"Card title\">\n    <p style=\"font-size: 14px; color: rgba(0, 0, 0, 0.85); margin-bottom: 16px; font-weight: 500\">\n      Group title\n    </p>\n    <a-card title=\"Inner card title\">\n      <template #extra>\n        <a href=\"#\">More</a>\n      </template>\n      Inner Card content\n    </a-card>\n    <a-card title=\"Inner card title\" :style=\"{ marginTop: '16px' }\">\n      <template #extra>\n        <a href=\"#\">More</a>\n      </template>\n      Inner Card content\n    </a-card>\n  </a-card>\n</template>\n"
  },
  {
    "path": "components/card/demo/loading.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 预加载的卡片\n  en-US: Loading card\n---\n\n## zh-CN\n\n数据读入前会有文本块样式\n\n## en-US\n\nShows a loading indirector while the contents of the card is being featched\n\n</docs>\n\n<template>\n  <a-card :loading=\"loading\" title=\"Card title\">whatever content</a-card>\n  <a-button style=\"margin-top: 16px\" @click=\"handleClick\">Toggle loading</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst loading = ref(true);\n\nconst handleClick = () => {\n  loading.value = !loading.value;\n};\n</script>\n"
  },
  {
    "path": "components/card/demo/meta.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 支持更多内容配置\n  en-US: Support more content configuration\n---\n\n## zh-CN\n\n一种支持封面、头像、标题和描述信息的卡片。\n\n## en-US\n\nA Card that supports `cover`, `avatar`, `title` and `description`.\n\n</docs>\n\n<template>\n  <a-card hoverable style=\"width: 300px\">\n    <template #cover>\n      <img\n        alt=\"example\"\n        src=\"https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png\"\n      />\n    </template>\n    <template #actions>\n      <setting-outlined key=\"setting\" />\n      <edit-outlined key=\"edit\" />\n      <ellipsis-outlined key=\"ellipsis\" />\n    </template>\n    <a-card-meta title=\"Card title\" description=\"This is the description\">\n      <template #avatar>\n        <a-avatar src=\"https://joeschmoe.io/api/v1/random\" />\n      </template>\n    </a-card-meta>\n  </a-card>\n</template>\n\n<script lang=\"ts\" setup>\nimport { SettingOutlined, EditOutlined, EllipsisOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/card/demo/simple.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 简洁卡片\n  en-US: Simple card\n---\n\n## zh-CN\n\n只包含内容区域。\n\n## en-US\n\nA simple card only containing a content area.\n\n</docs>\n\n<template>\n  <a-card style=\"width: 300px\">\n    <p>Card content</p>\n    <p>Card content</p>\n    <p>Card content</p>\n  </a-card>\n</template>\n"
  },
  {
    "path": "components/card/demo/tabs.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 带页签的卡片\n  en-US: With tabs\n---\n\n## zh-CN\n\n可承载更多内容\n\n## en-US\n\nMore content can be hosted\n\n</docs>\n\n<template>\n  <a-card\n    style=\"width: 100%\"\n    title=\"Card title\"\n    :tab-list=\"tabList\"\n    :active-tab-key=\"key\"\n    @tabChange=\"key => onTabChange(key, 'key')\"\n  >\n    <template #customTab=\"item\">\n      <span v-if=\"item.key === 'tab1'\">\n        <home-outlined />\n        {{ item.key }}\n      </span>\n    </template>\n    <template #extra>\n      <a href=\"#\">More</a>\n    </template>\n    {{ contentList[key] }}\n  </a-card>\n  <br />\n  <br />\n  <a-card\n    style=\"width: 100%\"\n    :tab-list=\"tabListNoTitle\"\n    :active-tab-key=\"noTitleKey\"\n    @tabChange=\"key => onTabChange(key, 'noTitleKey')\"\n  >\n    <p v-if=\"noTitleKey === 'article'\">article content</p>\n    <p v-else-if=\"noTitleKey === 'app'\">app content</p>\n    <p v-else>project content</p>\n    <template #tabBarExtraContent>\n      <a href=\"#\">More</a>\n    </template>\n  </a-card>\n</template>\n\n<script lang=\"ts\" setup>\nimport { HomeOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst tabList = [\n  {\n    key: 'tab1',\n    tab: 'tab1',\n  },\n  {\n    key: 'tab2',\n    tab: 'tab2',\n  },\n];\nconst contentList = {\n  tab1: 'content1',\n  tab2: 'content2',\n};\nconst tabListNoTitle = [\n  {\n    key: 'article',\n    tab: 'article',\n  },\n  {\n    key: 'app',\n    tab: 'app',\n  },\n  {\n    key: 'project',\n    tab: 'project',\n  },\n];\nconst key = ref('tab1');\nconst noTitleKey = ref('app');\n\nconst onTabChange = (value: string, type: string) => {\n  console.log(value, type);\n  if (type === 'key') {\n    key.value = value;\n  } else if (type === 'noTitleKey') {\n    noTitleKey.value = value;\n  }\n};\n</script>\n"
  },
  {
    "path": "components/card/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Card\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*VXtCTp93KPAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a-8zR6rrupgAAAAAAAAAAAAADrJ8AQ/original\n---\n\nSimple rectangular container.\n\n## When To Use\n\nA card can be used to display content related to a single subject. The content can consist of multiple elements of varying types and sizes.\n\n## API\n\n### Card\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| activeTabKey | Current TabPane's key | string | - |  |\n| bodyStyle | Inline style to apply to the card content | object | - |  |\n| bordered | Toggles rendering of the border around the card | boolean | `true` |  |\n| defaultActiveTabKey | Initial active TabPane's key, if `activeTabKey` is not set. | string | - |  |\n| extra | Content to render in the top-right corner of the card | string\\|slot | - |  |\n| headStyle | Inline style to apply to the card head | object | - |  |\n| hoverable | Lift up when hovering card | boolean | false |  |\n| loading | Shows a loading indicator while the contents of the card are being fetched | boolean | false |  |\n| size | Size of card | `default` \\| `small` | `default` |  |\n| tabList | List of TabPane's head, Custom tabs with the customTab(v3.0) slot | Array&lt;{key: string, tab: any}> | - |  |\n| title | Card title | string\\|slot | - |  |\n| type | Card style type, can be set to `inner` or not set | string | - |  |\n\n### Card Slots\n\n| Slot Name | Description | Type |  |\n| --- | --- | --- | --- |\n| actions | The action list, shows at the bottom of the Card. | - |  |\n| cover | Card cover | - |  |\n| customTab | custom tabList tab | { item: tabList[number] } |  |\n| extra | Content to render in the top-right corner of the card | - |  |\n| tabBarExtraContent | Extra content in tab bar | - |  |\n| title | Card title | - |  |\n\n### events\n\n| Events Name | Description                   | Arguments     | Version |     |\n| ----------- | ----------------------------- | ------------- | ------- | --- |\n| tabChange   | Callback when tab is switched | (key) => void | -       |     |\n\n### Card.Grid\n\n### Card.Meta\n\n| Property    | Description         | Type         | Default | Version |\n| ----------- | ------------------- | ------------ | ------- | ------- |\n| avatar      | avatar or icon      | slot         | -       |         |\n| description | description content | string\\|slot | -       |         |\n| title       | title content       | string\\|slot | -       |         |\n"
  },
  {
    "path": "components/card/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Card from './Card';\nimport Meta from './Meta';\nimport Grid from './Grid';\n\nexport type { CardProps } from './Card';\n\nCard.Meta = Meta;\nCard.Grid = Grid;\n\n/* istanbul ignore next */\nCard.install = function (app: App) {\n  app.component(Card.name, Card);\n  app.component(Meta.name, Meta);\n  app.component(Grid.name, Grid);\n  return app;\n};\n\nexport { Meta as CardMeta, Grid as CardGrid };\n\nexport default Card as typeof Card &\n  Plugin & {\n    readonly Meta: typeof Meta;\n    readonly Grid: typeof Grid;\n  };\n"
  },
  {
    "path": "components/card/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Card\nsubtitle: 卡片\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*VXtCTp93KPAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a-8zR6rrupgAAAAAAAAAAAAADrJ8AQ/original\n---\n\n通用卡片容器\n\n## 何时使用\n\n最基础的卡片容器，可承载文字、列表、图片、段落，常用于后台概览页面。\n\n## API\n\n### Card\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| activeTabKey | 当前激活页签的 key | string | - |  |\n| bodyStyle | 内容区域自定义样式 | object | - |  |\n| bordered | 是否有边框 | boolean | true |  |\n| defaultActiveTabKey | 初始化选中页签的 key，如果没有设置 activeTabKey | string | 第一个页签 |  |\n| extra | 卡片右上角的操作区域 | string\\|slot | - |  |\n| headStyle | 自定义标题区域样式 | object | - |  |\n| hoverable | 鼠标移过时可浮起 | boolean | false |  |\n| loading | 当卡片内容还在加载中时，可以用 loading 展示一个占位 | boolean | false |  |\n| size | card 的尺寸 | `default` \\| `small` | `default` |  |\n| tabList | 页签标题列表, 可以通过 customTab(v3.0) 插槽自定义 tab | Array&lt;{key: string, tab: any}> | - |  |\n| title | 卡片标题 | string\\|slot | - |  |\n| type | 卡片类型，可设置为 `inner` 或 不设置 | string | - |  |\n\n### Card 插槽\n\n| 插槽名称           | 说明                       | 参数                      |     |\n| ------------------ | -------------------------- | ------------------------- | --- |\n| actions            | 卡片操作组，位置在卡片底部 | -                         |     |\n| cover              | 卡片封面                   | -                         |     |\n| customTab          | 自定义 tabList tab 标签    | { item: tabList[number] } |     |\n| extra              | 卡片右上角的操作区域       | -                         |     |\n| tabBarExtraContent | tab bar 上额外的元素       | -                         |     |\n| title              | 卡片标题                   | -                         |     |\n\n### 事件\n\n| 事件名称  | 说明           | 回调参数      | 版本 |     |\n| --------- | -------------- | ------------- | ---- | --- |\n| tabChange | 页签切换的回调 | (key) => void | -    |     |\n\n### Card.Grid\n\n### Card.Meta\n\n| 参数        | 说明      | 类型         | 默认值 | 版本 |\n| ----------- | --------- | ------------ | ------ | ---- |\n| avatar      | 头像/图标 | slot         | -      |      |\n| description | 描述内容  | string\\|slot | -      |      |\n| title       | 标题内容  | string\\|slot | -      |      |\n"
  },
  {
    "path": "components/card/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { clearFix, resetComponent, textEllipsis } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface CardToken extends FullToken<'Card'> {\n  cardHeadHeight: number;\n  cardHeadHeightSM: number;\n  cardShadow: string;\n  cardHeadPadding: number;\n  cardPaddingSM: number;\n  cardPaddingBase: number;\n  cardHeadTabsMarginBottom: number;\n  cardActionsLiMargin: string;\n  cardActionsIconSize: number;\n}\n\n// ============================== Styles ==============================\n\n// ============================== Head ==============================\nconst genCardHeadStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { antCls, componentCls, cardHeadHeight, cardPaddingBase, cardHeadTabsMarginBottom } = token;\n\n  return {\n    display: 'flex',\n    justifyContent: 'center',\n    flexDirection: 'column',\n    minHeight: cardHeadHeight,\n    marginBottom: -1, // Fix card grid overflow bug: https://gw.alipayobjects.com/zos/rmsportal/XonYxBikwpgbqIQBeuhk.png\n    padding: `0 ${cardPaddingBase}px`,\n    color: token.colorTextHeading,\n    fontWeight: token.fontWeightStrong,\n    fontSize: token.fontSizeLG,\n    background: 'transparent',\n    borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBorderSecondary}`,\n    borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n\n    ...clearFix(),\n\n    '&-wrapper': {\n      width: '100%',\n      display: 'flex',\n      alignItems: 'center',\n    },\n\n    '&-title': {\n      display: 'inline-block',\n      flex: 1,\n      ...textEllipsis,\n\n      [`\n          > ${componentCls}-typography,\n          > ${componentCls}-typography-edit-content\n        `]: {\n        insetInlineStart: 0,\n        marginTop: 0,\n        marginBottom: 0,\n      },\n    },\n\n    [`${antCls}-tabs-top`]: {\n      clear: 'both',\n      marginBottom: cardHeadTabsMarginBottom,\n      color: token.colorText,\n      fontWeight: 'normal',\n      fontSize: token.fontSize,\n\n      '&-bar': {\n        borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBorderSecondary}`,\n      },\n    },\n  };\n};\n\n// ============================== Grid ==============================\nconst genCardGridStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { cardPaddingBase, colorBorderSecondary, cardShadow, lineWidth } = token;\n  return {\n    width: '33.33%',\n    padding: cardPaddingBase,\n    border: 0,\n    borderRadius: 0,\n    boxShadow: `\n      ${lineWidth}px 0 0 0 ${colorBorderSecondary},\n      0 ${lineWidth}px 0 0 ${colorBorderSecondary},\n      ${lineWidth}px ${lineWidth}px 0 0 ${colorBorderSecondary},\n      ${lineWidth}px 0 0 0 ${colorBorderSecondary} inset,\n      0 ${lineWidth}px 0 0 ${colorBorderSecondary} inset;\n    `,\n    transition: `all ${token.motionDurationMid}`,\n\n    '&-hoverable:hover': {\n      position: 'relative',\n      zIndex: 1,\n      boxShadow: cardShadow,\n    },\n  };\n};\n\n// ============================== Actions ==============================\nconst genCardActionsStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { componentCls, iconCls, cardActionsLiMargin, cardActionsIconSize, colorBorderSecondary } =\n    token;\n  return {\n    margin: 0,\n    padding: 0,\n    listStyle: 'none',\n    background: token.colorBgContainer,\n    borderTop: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`,\n    display: 'flex',\n    borderRadius: `0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px `,\n    ...clearFix(),\n\n    '& > li': {\n      margin: cardActionsLiMargin,\n      color: token.colorTextDescription,\n      textAlign: 'center',\n\n      '> span': {\n        position: 'relative',\n        display: 'block',\n        minWidth: token.cardActionsIconSize * 2,\n        fontSize: token.fontSize,\n        lineHeight: token.lineHeight,\n        cursor: 'pointer',\n\n        '&:hover': {\n          color: token.colorPrimary,\n          transition: `color ${token.motionDurationMid}`,\n        },\n\n        [`a:not(${componentCls}-btn), > ${iconCls}`]: {\n          display: 'inline-block',\n          width: '100%',\n          color: token.colorTextDescription,\n          lineHeight: `${token.fontSize * token.lineHeight}px`,\n          transition: `color ${token.motionDurationMid}`,\n\n          '&:hover': {\n            color: token.colorPrimary,\n          },\n        },\n\n        [`> ${iconCls}`]: {\n          fontSize: cardActionsIconSize,\n          lineHeight: `${cardActionsIconSize * token.lineHeight}px`,\n        },\n      },\n\n      '&:not(:last-child)': {\n        borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`,\n      },\n    },\n  };\n};\n\n// ============================== Meta ==============================\nconst genCardMetaStyle: GenerateStyle<CardToken> = (token): CSSObject => ({\n  margin: `-${token.marginXXS}px 0`,\n  display: 'flex',\n  ...clearFix(),\n\n  '&-avatar': {\n    paddingInlineEnd: token.padding,\n  },\n\n  '&-detail': {\n    overflow: 'hidden',\n    flex: 1,\n\n    '> div:not(:last-child)': {\n      marginBottom: token.marginXS,\n    },\n  },\n\n  '&-title': {\n    color: token.colorTextHeading,\n    fontWeight: token.fontWeightStrong,\n    fontSize: token.fontSizeLG,\n    ...textEllipsis,\n  },\n\n  '&-description': {\n    color: token.colorTextDescription,\n  },\n});\n\n// ============================== Inner ==============================\nconst genCardTypeInnerStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { componentCls, cardPaddingBase, colorFillAlter } = token;\n\n  return {\n    [`${componentCls}-head`]: {\n      padding: `0 ${cardPaddingBase}px`,\n      background: colorFillAlter,\n\n      '&-title': {\n        fontSize: token.fontSize,\n      },\n    },\n\n    [`${componentCls}-body`]: {\n      padding: `${token.padding}px ${cardPaddingBase}px`,\n    },\n  };\n};\n\n// ============================== Loading ==============================\nconst genCardLoadingStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { componentCls } = token;\n\n  return {\n    overflow: 'hidden',\n\n    [`${componentCls}-body`]: {\n      userSelect: 'none',\n    },\n  };\n};\n\n// ============================== Basic ==============================\nconst genCardStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const {\n    componentCls,\n    cardShadow,\n    cardHeadPadding,\n    colorBorderSecondary,\n    boxShadow,\n    cardPaddingBase,\n  } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      position: 'relative',\n      background: token.colorBgContainer,\n      borderRadius: token.borderRadiusLG,\n\n      [`&:not(${componentCls}-bordered)`]: {\n        boxShadow,\n      },\n\n      [`${componentCls}-head`]: genCardHeadStyle(token),\n\n      [`${componentCls}-extra`]: {\n        // https://stackoverflow.com/a/22429853/3040605\n        marginInlineStart: 'auto',\n        color: '',\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n      },\n\n      [`${componentCls}-body`]: {\n        padding: cardPaddingBase,\n        borderRadius: ` 0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px`,\n        ...clearFix(),\n      },\n\n      [`${componentCls}-grid`]: genCardGridStyle(token),\n\n      [`${componentCls}-cover`]: {\n        '> *': {\n          display: 'block',\n          width: '100%',\n        },\n\n        img: {\n          borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n        },\n      },\n\n      [`${componentCls}-actions`]: genCardActionsStyle(token),\n\n      [`${componentCls}-meta`]: genCardMetaStyle(token),\n    },\n\n    [`${componentCls}-bordered`]: {\n      border: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`,\n\n      [`${componentCls}-cover`]: {\n        marginTop: -1,\n        marginInlineStart: -1,\n        marginInlineEnd: -1,\n      },\n    },\n\n    [`${componentCls}-hoverable`]: {\n      cursor: 'pointer',\n      transition: `box-shadow ${token.motionDurationMid}, border-color ${token.motionDurationMid}`,\n\n      '&:hover': {\n        borderColor: 'transparent',\n        boxShadow: cardShadow,\n      },\n    },\n\n    [`${componentCls}-contain-grid`]: {\n      [`${componentCls}-body`]: {\n        display: 'flex',\n        flexWrap: 'wrap',\n      },\n\n      [`&:not(${componentCls}-loading) ${componentCls}-body`]: {\n        marginBlockStart: -token.lineWidth,\n        marginInlineStart: -token.lineWidth,\n        padding: 0,\n      },\n    },\n\n    [`${componentCls}-contain-tabs`]: {\n      [`> ${componentCls}-head`]: {\n        [`${componentCls}-head-title, ${componentCls}-extra`]: {\n          paddingTop: cardHeadPadding,\n        },\n      },\n    },\n\n    [`${componentCls}-type-inner`]: genCardTypeInnerStyle(token),\n\n    [`${componentCls}-loading`]: genCardLoadingStyle(token),\n\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl',\n    },\n  };\n};\n\n// ============================== Size ==============================\nconst genCardSizeStyle: GenerateStyle<CardToken> = (token): CSSObject => {\n  const { componentCls, cardPaddingSM, cardHeadHeightSM } = token;\n\n  return {\n    [`${componentCls}-small`]: {\n      [`> ${componentCls}-head`]: {\n        minHeight: cardHeadHeightSM,\n        padding: `0 ${cardPaddingSM}px`,\n        fontSize: token.fontSize,\n\n        [`> ${componentCls}-head-wrapper`]: {\n          [`> ${componentCls}-extra`]: {\n            fontSize: token.fontSize,\n          },\n        },\n      },\n\n      [`> ${componentCls}-body`]: {\n        padding: cardPaddingSM,\n      },\n    },\n    [`${componentCls}-small${componentCls}-contain-tabs`]: {\n      [`> ${componentCls}-head`]: {\n        [`${componentCls}-head-title, ${componentCls}-extra`]: {\n          minHeight: cardHeadHeightSM,\n          paddingTop: 0,\n          display: 'flex',\n          alignItems: 'center',\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Card', token => {\n  const cardToken = mergeToken<CardToken>(token, {\n    cardShadow: token.boxShadowCard,\n    cardHeadHeight: token.fontSizeLG * token.lineHeightLG + token.padding * 2,\n    cardHeadHeightSM: token.fontSize * token.lineHeight + token.paddingXS * 2,\n    cardHeadPadding: token.padding,\n    cardPaddingBase: token.paddingLG,\n    cardHeadTabsMarginBottom: -token.padding - token.lineWidth,\n    cardActionsLiMargin: `${token.paddingSM}px 0`,\n    cardActionsIconSize: token.fontSize,\n    cardPaddingSM: 12, // Fixed padding.\n  });\n\n  return [\n    // Style\n    genCardStyle(cardToken),\n\n    // Size\n    genCardSizeStyle(cardToken),\n  ];\n});\n"
  },
  {
    "path": "components/carousel/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/carousel/demo/autoplay.vue correctly 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\">\n    <!---->\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div class=\"slick-slide slick-cloned\" tabindex=\"-1\" data-index=\"-1\" aria-hidden=\"true\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"4\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"5\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"6\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"7\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-bottom\">\n      <li class=\"slick-active\"><button>1</button></li>\n      <li class=\"\"><button>2</button></li>\n      <li class=\"\"><button>3</button></li>\n      <li class=\"\"><button>4</button></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/carousel/demo/basic.vue correctly 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\">\n    <!---->\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div class=\"slick-slide slick-cloned\" tabindex=\"-1\" data-index=\"-1\" aria-hidden=\"true\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"4\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"5\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"6\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"7\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-bottom\">\n      <li class=\"slick-active\"><button>1</button></li>\n      <li class=\"\"><button>2</button></li>\n      <li class=\"\"><button>3</button></li>\n      <li class=\"\"><button>4</button></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/carousel/demo/customArrows.vue correctly 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\">\n    <div class=\"custom-slick-arrow slick-arrow slick-prev\" style=\"left: 10px; z-index: 1; display: block;\"><span role=\"img\" aria-label=\"left-circle\" class=\"anticon anticon-left-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"left-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M603.3 327.5l-246 178a7.95 7.95 0 000 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z\"></path><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span></div>\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div class=\"slick-slide slick-cloned\" tabindex=\"-1\" data-index=\"-1\" aria-hidden=\"true\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"4\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"5\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"6\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"7\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"custom-slick-arrow slick-arrow slick-next\" style=\"right: 10px; display: block;\"><span role=\"img\" aria-label=\"right-circle\" class=\"anticon anticon-right-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"right-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M666.7 505.5l-246-178A8 8 0 00408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z\"></path><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span></div>\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-bottom\">\n      <li class=\"slick-active\"><button>1</button></li>\n      <li class=\"\"><button>2</button></li>\n      <li class=\"\"><button>3</button></li>\n      <li class=\"\"><button>4</button></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/carousel/demo/customPaging.vue correctly 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\"><button type=\"button\" data-role=\"none\" class=\"slick-arrow slick-prev\" style=\"display: block;\"> Previous</button>\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div class=\"slick-slide slick-cloned\" tabindex=\"-1\" data-index=\"-1\" aria-hidden=\"true\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract04.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract01.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract02.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract03.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract04.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"4\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract01.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"5\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract02.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"6\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract03.jpg\"></div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"7\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract04.jpg\"></div>\n          </div>\n        </div>\n      </div>\n    </div><button type=\"button\" data-role=\"none\" class=\"slick-arrow slick-next\" style=\"display: block;\"> Next</button>\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-bottom slick-dots slick-thumb\">\n      <li class=\"slick-active\"><a><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract01.jpg\"></a></li>\n      <li class=\"\"><a><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract02.jpg\"></a></li>\n      <li class=\"\"><a><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract03.jpg\"></a></li>\n      <li class=\"\"><a><img src=\"https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/abstract04.jpg\"></a></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/carousel/demo/fade.vue correctly 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\">\n    <!---->\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%; position: relative; left: 0px; opacity: 1; transition: opacity 500ms ease, visibility 500ms ease;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%; position: relative; left: -11px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%; position: relative; left: -22px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%; position: relative; left: -33px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-bottom\">\n      <li class=\"slick-active\"><button>1</button></li>\n      <li class=\"\"><button>2</button></li>\n      <li class=\"\"><button>3</button></li>\n      <li class=\"\"><button>4</button></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/carousel/demo/position.vue correctly 1`] = `\n<div style=\"margin-bottom: 8px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"top\"><span class=\"ant-radio-button-inner\"></span></span><span>Top</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottom\"><span class=\"ant-radio-button-inner\"></span></span><span>Bottom</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"left\"><span class=\"ant-radio-button-inner\"></span></span><span>Left</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"right\"><span class=\"ant-radio-button-inner\"></span></span><span>Right</span></label></div>\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\" dir=\"ltr\">\n    <!---->\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"width: 900%;\">\n        <div class=\"slick-slide slick-cloned\" tabindex=\"-1\" data-index=\"-1\" aria-hidden=\"true\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"1\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"2\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"3\" aria-hidden=\"true\" class=\"slick-slide\" style=\"outline: none; width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"4\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>1</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"5\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>2</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"6\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>3</h3>\n            </div>\n          </div>\n        </div>\n        <div tabindex=\"-1\" data-index=\"7\" aria-hidden=\"true\" class=\"slick-slide slick-cloned\" style=\"width: 11.11111111111111%;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\">\n              <h3>4</h3>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <ul style=\"display: block;\" class=\"slick-dots slick-dots-top\">\n      <li class=\"slick-active\"><button>1</button></li>\n      <li class=\"\"><button>2</button></li>\n      <li class=\"\"><button>3</button></li>\n      <li class=\"\"><button>4</button></li>\n    </ul>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/carousel/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Carousel should works for dotPosition bottom 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\">\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"opacity: 1; transform: translate3d(0px, 0px, 0px);\">\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 0px;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Carousel should works for dotPosition left 1`] = `\n<div class=\"ant-carousel ant-carousel-vertical\">\n  <div class=\"slick-slider slick-vertical slick-initialized\">\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"opacity: 1; transform: translate3d(0px, 0px, 0px);\">\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 0px;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Carousel should works for dotPosition right 1`] = `\n<div class=\"ant-carousel ant-carousel-vertical\">\n  <div class=\"slick-slider slick-vertical slick-initialized\">\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"opacity: 1; transform: translate3d(0px, 0px, 0px);\">\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 0px;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Carousel should works for dotPosition top 1`] = `\n<div class=\"ant-carousel\">\n  <div class=\"slick-slider slick-initialized\">\n    <div class=\"slick-list\">\n      <div class=\"slick-track\" style=\"opacity: 1; transform: translate3d(0px, 0px, 0px);\">\n        <div tabindex=\"-1\" data-index=\"0\" aria-hidden=\"false\" class=\"slick-slide slick-active slick-current\" style=\"outline: none; width: 0px;\">\n          <div>\n            <div tabindex=\"-1\" style=\"width: 100%; display: inline-block;\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/carousel/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('carousel');\n"
  },
  {
    "path": "components/carousel/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { h, createVNode } from 'vue';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport Carousel from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Carousel', () => {\n  mountTest(Carousel);\n  // beforeEach(() => {\n  //   jest.useFakeTimers();\n  // });\n\n  // afterEach(() => {\n  //   jest.useRealTimers();\n  // });\n  it('should has innerSlider', () => {\n    const props = {\n      slots: {\n        default: () => h('div'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Carousel, props);\n    const { innerSlider } = wrapper.componentVM;\n    expect(typeof innerSlider.slickNext).toBe('function');\n  });\n\n  it('should has prev, next and go function', async () => {\n    const props = {\n      slots: {\n        default: () => [\n          createVNode('div', null, '1'),\n          createVNode('div', null, '2'),\n          createVNode('div', null, '3'),\n        ],\n      },\n      sync: false,\n    };\n    const wrapper = mount(Carousel, props);\n    const { prev, next, goTo, innerSlider } = wrapper.componentVM;\n    expect(typeof prev).toBe('function');\n    expect(typeof next).toBe('function');\n    expect(typeof goTo).toBe('function');\n\n    expect(innerSlider.currentSlide).toBe(0);\n    wrapper.vm.goTo(2);\n    await asyncExpect(() => {\n      expect(innerSlider.currentSlide).toBe(2);\n    }, 1000);\n    prev();\n    await asyncExpect(() => {\n      expect(innerSlider.currentSlide).toBe(1);\n    }, 1000);\n\n    next();\n\n    await asyncExpect(() => {\n      expect(innerSlider.currentSlide).toBe(2);\n    }, 1000);\n  });\n  // TODO\n  // it('should trigger autoPlay after window resize', async () => {\n  //   const props = {\n  //     props: {\n  //       autoplay: true,\n  //     },\n  //     slots: {\n  //       default: () => [\n  //         createVNode('div', null, '1'),\n  //         createVNode('div', null, '2'),\n  //         createVNode('div', null, '3'),\n  //       ],\n  //     },\n  //     sync: false,\n  //   };\n  //   const wrapper = mount(Carousel, props);\n  //   await sleep(100);\n  //   const spy = jest.spyOn(wrapper.componentVM.innerSlider, 'handleAutoPlay');\n  //   window.resizeTo(1000);\n  //   expect(spy).not.toHaveBeenCalled();\n  //   await new Promise(resolve => setTimeout(resolve, 1000));\n  //   expect(spy).toHaveBeenCalled();\n  // });\n\n  it('cancel resize listener when unmount', async () => {\n    const props = {\n      props: {\n        autoplay: true,\n      },\n      slots: {\n        default: () => [\n          createVNode('div', null, '1'),\n          createVNode('div', null, '2'),\n          createVNode('div', null, '3'),\n        ],\n      },\n      sync: false,\n    };\n    const wrapper = mount(Carousel, props);\n    const spy = jest.spyOn(window, 'removeEventListener');\n    wrapper.unmount();\n    expect(spy).toHaveBeenCalled();\n  });\n\n  describe('should works for dotPosition', () => {\n    ['left', 'right', 'top', 'bottom'].forEach(dotPosition => {\n      it(dotPosition, async () => {\n        const wrapper = mount(\n          {\n            render() {\n              return (\n                <Carousel dotPosition={dotPosition}>\n                  <div />\n                </Carousel>\n              );\n            },\n          },\n          { sync: false, attachTo: 'body' },\n        );\n        await sleep(100);\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n  });\n\n  it('warning', () => {\n    const warnSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return (\n          <Carousel vertical>\n            <div />\n          </Carousel>\n        );\n      },\n    });\n    expect(warnSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Carousel] `vertical` is deprecated, please use `dotPosition` instead.',\n    );\n    warnSpy.mockRestore();\n  });\n});\n"
  },
  {
    "path": "components/carousel/demo/autoplay.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自动切换\n  en-US: Scroll automatically\n---\n\n## zh-CN\n\n定时切换下一张。\n\n## en-US\n\nTiming of scrolling to the next card/picture.\n\n</docs>\n\n<template>\n  <a-carousel autoplay>\n    <div><h3>1</h3></div>\n    <div><h3>2</h3></div>\n    <div><h3>3</h3></div>\n    <div><h3>4</h3></div>\n  </a-carousel>\n</template>\n\n<style scoped>\n/* For demo */\n:deep(.slick-slide) {\n  text-align: center;\n  height: 160px;\n  line-height: 160px;\n  background: #364d79;\n  overflow: hidden;\n}\n:deep(.slick-slide h3) {\n  color: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/carousel/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nBasic usage.\n\n</docs>\n\n<template>\n  <a-carousel :after-change=\"onChange\">\n    <div><h3>1</h3></div>\n    <div><h3>2</h3></div>\n    <div><h3>3</h3></div>\n    <div><h3>4</h3></div>\n  </a-carousel>\n</template>\n\n<script lang=\"ts\" setup>\nconst onChange = (current: number) => {\n  console.log(current);\n};\n</script>\n\n<style scoped>\n/* For demo */\n:deep(.slick-slide) {\n  text-align: center;\n  height: 160px;\n  line-height: 160px;\n  background: #364d79;\n  overflow: hidden;\n}\n\n:deep(.slick-slide h3) {\n  color: #fff;\n}\n</style>\n```\n"
  },
  {
    "path": "components/carousel/demo/customArrows.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义箭头\n  en-US: Custom Arrows\n---\n\n## zh-CN\n\n自定义箭头展示。\n\n## en-US\n\nCustom arrows display\n\n</docs>\n\n<template>\n  <a-carousel arrows>\n    <template #prevArrow>\n      <div class=\"custom-slick-arrow\" style=\"left: 10px; z-index: 1\">\n        <left-circle-outlined />\n      </div>\n    </template>\n    <template #nextArrow>\n      <div class=\"custom-slick-arrow\" style=\"right: 10px\">\n        <right-circle-outlined />\n      </div>\n    </template>\n    <div><h3>1</h3></div>\n    <div><h3>2</h3></div>\n    <div><h3>3</h3></div>\n    <div><h3>4</h3></div>\n  </a-carousel>\n</template>\n\n<script lang=\"ts\" setup>\nimport { LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons-vue';\n</script>\n\n<style scoped>\n/* For demo */\n:deep(.slick-slide) {\n  text-align: center;\n  height: 160px;\n  line-height: 160px;\n  background: #364d79;\n  overflow: hidden;\n}\n\n:deep(.slick-arrow.custom-slick-arrow) {\n  width: 25px;\n  height: 25px;\n  font-size: 25px;\n  color: #fff;\n  background-color: rgba(31, 45, 61, 0.11);\n  transition: ease all 0.3s;\n  opacity: 0.3;\n  z-index: 1;\n}\n:deep(.slick-arrow.custom-slick-arrow:before) {\n  display: none;\n}\n:deep(.slick-arrow.custom-slick-arrow:hover) {\n  color: #fff;\n  opacity: 0.5;\n}\n\n:deep(.slick-slide h3) {\n  color: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/carousel/demo/customPaging.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义分页\n  en-US: Custom Paging\n---\n\n## zh-CN\n\n自定义分页展示。\n\n## en-US\n\nCustom paging display\n\n</docs>\n\n<template>\n  <a-carousel arrows dots-class=\"slick-dots slick-thumb\">\n    <template #customPaging=\"props\">\n      <a>\n        <img :src=\"getImgUrl(props.i)\" />\n      </a>\n    </template>\n    <div v-for=\"item in 4\" :key=\"item\">\n      <img :src=\"getImgUrl(item - 1)\" />\n    </div>\n  </a-carousel>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\n\nconst baseUrl =\n  'https://raw.githubusercontent.com/vueComponent/ant-design-vue/main/components/carousel/demo/';\nexport default defineComponent({\n  setup() {\n    const getImgUrl = (i: number) => {\n      return `${baseUrl}abstract0${i + 1}.jpg`;\n    };\n    return {\n      getImgUrl,\n    };\n  },\n});\n</script>\n<style scoped>\n/* For demo */\n:deep(.slick-dots) {\n  position: relative;\n  height: auto;\n}\n:deep(.slick-slide img) {\n  border: 5px solid #fff;\n  display: block;\n  margin: auto;\n  max-width: 80%;\n}\n:deep(.slick-arrow) {\n  display: none !important;\n}\n:deep(.slick-thumb) {\n  bottom: 0px;\n}\n:deep(.slick-thumb li) {\n  width: 60px;\n  height: 45px;\n}\n:deep(.slick-thumb li img) {\n  width: 100%;\n  height: 100%;\n  filter: grayscale(100%);\n  display: block;\n}\n:deep .slick-thumb li.slick-active img {\n  filter: grayscale(0%);\n}\n</style>\n"
  },
  {
    "path": "components/carousel/demo/fade.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 渐显\n  en-US: Fade in\n---\n\n## zh-CN\n\n切换效果为渐显。\n\n## en-US\n\nSlides use fade for transition.\n\n</docs>\n\n<template>\n  <a-carousel effect=\"fade\">\n    <div><h3>1</h3></div>\n    <div><h3>2</h3></div>\n    <div><h3>3</h3></div>\n    <div><h3>4</h3></div>\n  </a-carousel>\n</template>\n\n<style scoped>\n/* For demo */\n:deep(.slick-slide) {\n  text-align: center;\n  height: 160px;\n  line-height: 160px;\n  background: #364d79;\n  overflow: hidden;\n}\n\n:deep(.slick-slide h3) {\n  color: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/carousel/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Position />\n    <Fade />\n    <Autoplay />\n    <CustomPaging />\n    <CustomArrows />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Fade from './fade.vue';\nimport Autoplay from './autoplay.vue';\nimport Position from './position.vue';\nimport CustomPaging from './customPaging.vue';\nimport CustomArrows from './customArrows.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Fade,\n    Autoplay,\n    Position,\n    CustomPaging,\n    CustomArrows,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/carousel/demo/position.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 位置\n  en-US: Position\n---\n\n## zh-CN\n\n位置有 4 个方向。\n\n## en-US\n\nThere are 4 position options available.\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"dotPosition\" style=\"margin-bottom: 8px\">\n    <a-radio-button value=\"top\">Top</a-radio-button>\n    <a-radio-button value=\"bottom\">Bottom</a-radio-button>\n    <a-radio-button value=\"left\">Left</a-radio-button>\n    <a-radio-button value=\"right\">Right</a-radio-button>\n  </a-radio-group>\n  <a-carousel :dot-position=\"dotPosition\">\n    <div><h3>1</h3></div>\n    <div><h3>2</h3></div>\n    <div><h3>3</h3></div>\n    <div><h3>4</h3></div>\n  </a-carousel>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CarouselProps } from 'ant-design-vue';\nconst dotPosition = ref<CarouselProps['dotPosition']>('top');\n</script>\n\n<style scoped>\n/* For demo */\n:deep(.slick-slide) {\n  text-align: center;\n  height: 160px;\n  line-height: 160px;\n  background: #364d79;\n  overflow: hidden;\n}\n\n:deep(.slick-slide h3) {\n  color: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/carousel/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Carousel\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*bPMSSqbaTMkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a-58QpYnqOsAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA carousel component. Scales with its container.\n\n## When To Use\n\n- When there is a group of content on the same level.\n- When there is insufficient content space, it can be used to save space in the form of a revolving door.\n- Commonly used for a group of pictures/cards.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autoplay | Whether to scroll automatically | boolean | `false` |  |\n| dotPosition | The position of the dots, which can be one of `top` `bottom` `left` `right` | string | `bottom` | 1.5.0 |\n| dots | Whether to show the dots at the bottom of the gallery | boolean | `true` |  |\n| dotsClass | Class name of the dots | string | `slick-dots` |  |\n| easing | Transition interpolation function name | string | `linear` |  |\n| effect | Transition effect | `scrollx` \\| `fade` | `scrollx` |  |\n| afterChange | Callback function called after the current index changes | function(current) | - |  |\n| beforeChange | Callback function called before the current index changes | function(from, to) | - |  |\n\n## Methods\n\n| Name | Description | Version |\n| --- | --- | --- |\n| goTo(slideNumber, dontAnimate) | Go to slide index, if dontAnimate=true, it happens without animation |  |\n| next() | Change current slide to next slide |  |\n| prev() | Change current slide to previous slide |  |\n\nFor more info on the props, refer to the [carousel props](https://github.com/vueComponent/ant-design-vue/blob/main/components/carousel/index.tsx)\n"
  },
  {
    "path": "components/carousel/index.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { ref, computed, watchEffect, defineComponent } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport warning from '../_util/warning';\nimport classNames from '../_util/classNames';\nimport SlickCarousel from '../vc-slick';\nimport { withInstall, booleanType, functionType, stringType } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport type SwipeDirection = 'left' | 'down' | 'right' | 'up' | string;\n\nexport type LazyLoadTypes = 'ondemand' | 'progressive';\n\nexport type CarouselEffect = 'scrollx' | 'fade';\nexport type DotPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface CarouselRef {\n  goTo: (slide: number, dontAnimate?: boolean) => void;\n  next: () => void;\n  prev: () => void;\n  autoplay: (palyType?: 'update' | 'leave' | 'blur') => void;\n  innerSlider: any;\n}\n\n// Carousel\nexport const carouselProps = () => ({\n  effect: stringType<CarouselEffect>(),\n  dots: booleanType(true),\n  vertical: booleanType(),\n  autoplay: booleanType(),\n  easing: String,\n  beforeChange: functionType<(currentSlide: number, nextSlide: number) => void>(),\n  afterChange: functionType<(currentSlide: number) => void>(),\n  // style: PropTypes.React.CSSProperties,\n  prefixCls: String,\n  accessibility: booleanType(),\n  nextArrow: PropTypes.any,\n  prevArrow: PropTypes.any,\n  pauseOnHover: booleanType(),\n  // className: String,\n  adaptiveHeight: booleanType(),\n  arrows: booleanType(false),\n  autoplaySpeed: Number,\n  centerMode: booleanType(),\n  centerPadding: String,\n  cssEase: String,\n  dotsClass: String,\n  draggable: booleanType(false),\n  fade: booleanType(),\n  focusOnSelect: booleanType(),\n  infinite: booleanType(),\n  initialSlide: Number,\n  lazyLoad: stringType<LazyLoadTypes>(),\n  rtl: booleanType(),\n  slide: String,\n  slidesToShow: Number,\n  slidesToScroll: Number,\n  speed: Number,\n  swipe: booleanType(),\n  swipeToSlide: booleanType(),\n  swipeEvent: functionType<(swipeDirection: SwipeDirection) => void>(),\n  touchMove: booleanType(),\n  touchThreshold: Number,\n  variableWidth: booleanType(),\n  useCSS: booleanType(),\n  slickGoTo: Number,\n  responsive: Array,\n  dotPosition: stringType<DotPosition>(),\n  verticalSwiping: booleanType(false),\n});\nexport type CarouselProps = Partial<ExtractPropTypes<ReturnType<typeof carouselProps>>>;\nconst Carousel = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACarousel',\n  inheritAttrs: false,\n  props: carouselProps(),\n  setup(props, { slots, attrs, expose }) {\n    const slickRef = ref();\n\n    const goTo = (slide: number, dontAnimate = false) => {\n      slickRef.value?.slickGoTo(slide, dontAnimate);\n    };\n\n    expose({\n      goTo,\n      autoplay: palyType => {\n        slickRef.value?.innerSlider?.handleAutoPlay(palyType);\n      },\n      prev: () => {\n        slickRef.value?.slickPrev();\n      },\n      next: () => {\n        slickRef.value?.slickNext();\n      },\n      innerSlider: computed(() => {\n        return slickRef.value?.innerSlider;\n      }),\n    } as CarouselRef);\n    watchEffect(() => {\n      warning(\n        props.vertical === undefined,\n        'Carousel',\n        '`vertical` is deprecated, please use `dotPosition` instead.',\n      );\n    });\n    const { prefixCls, direction } = useConfigInject('carousel', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const dotPosition = computed(() => {\n      if (props.dotPosition) return props.dotPosition;\n      if (props.vertical !== undefined) return props.vertical ? 'right' : 'bottom';\n      return 'bottom';\n    });\n    const vertical = computed(() => dotPosition.value === 'left' || dotPosition.value === 'right');\n    const dsClass = computed(() => {\n      const dotsClass = 'slick-dots';\n      return classNames({\n        [dotsClass]: true,\n        [`${dotsClass}-${dotPosition.value}`]: true,\n        [`${props.dotsClass}`]: !!props.dotsClass,\n      });\n    });\n    return () => {\n      const { dots, arrows, draggable, effect } = props;\n      const { class: cls, style, ...restAttrs } = attrs;\n      const fade = effect === 'fade' ? true : props.fade;\n      const className = classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-vertical`]: vertical.value,\n          [`${cls}`]: !!cls,\n        },\n        hashId.value,\n      );\n      return wrapSSR(\n        <div class={className} style={style as CSSProperties}>\n          <SlickCarousel\n            ref={slickRef}\n            {...props}\n            {...restAttrs}\n            dots={!!dots}\n            dotsClass={dsClass.value}\n            arrows={arrows}\n            draggable={draggable}\n            fade={fade}\n            vertical={vertical.value}\n            v-slots={slots}\n          />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Carousel);\n"
  },
  {
    "path": "components/carousel/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Carousel\nsubtitle: 走马灯\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*bPMSSqbaTMkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a-58QpYnqOsAAAAAAAAAAAAADrJ8AQ/original\n---\n\n旋转木马，一组轮播的区域。\n\n## 何时使用\n\n- 当有一组平级的内容。\n- 当内容空间不足时，可以用走马灯的形式进行收纳，进行轮播展现。\n- 常用于一组图片或卡片轮播。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autoplay | 是否自动切换 | boolean | false |  |\n| dotPosition | 面板指示点位置，可选 `top` `bottom` `left` `right` | string | `bottom` | 1.5.0 |\n| dots | 是否显示面板指示点 | boolean | true |  |\n| dotsClass | 面板指示点类名 | string | `slick-dots` |  |\n| easing | 动画效果 | string | `linear` |  |\n| effect | 动画效果函数 | `scrollx` \\| `fade` | `scrollx` |  |\n| afterChange | 切换面板的回调 | function(current) | - |  |\n| beforeChange | 切换面板的回调 | function(from, to) | - |  |\n\n## 方法\n\n| 名称                           | 描述                                              | 版本 |\n| ------------------------------ | ------------------------------------------------- | ---- |\n| goTo(slideNumber, dontAnimate) | 切换到指定面板, dontAnimate = true 时，不使用动画 |      |\n| next()                         | 切换到下一面板                                    |      |\n| prev()                         | 切换到上一面板                                    |      |\n\n更多属性可参考源码：[carousel props](https://github.com/vueComponent/ant-design-vue/blob/main/components/carousel/index.tsx)\n"
  },
  {
    "path": "components/carousel/style/index.tsx",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {\n  dotWidth: number;\n  dotHeight: number;\n  dotWidthActive: number;\n}\n\ninterface CarouselToken extends FullToken<'Carousel'> {\n  carouselArrowSize: number;\n  carouselDotOffset: number;\n  carouselDotInline: number;\n}\n\nconst genCarouselStyle: GenerateStyle<CarouselToken> = token => {\n  const { componentCls, antCls, carouselArrowSize, carouselDotOffset, marginXXS } = token;\n  const arrowOffset = -carouselArrowSize * 1.25;\n\n  const carouselDotMargin = marginXXS;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      '.slick-slider': {\n        position: 'relative',\n        display: 'block',\n        boxSizing: 'border-box',\n        touchAction: 'pan-y',\n        WebkitTouchCallout: 'none',\n        WebkitTapHighlightColor: 'transparent',\n\n        '.slick-track, .slick-list': {\n          transform: 'translate3d(0, 0, 0)',\n          touchAction: 'pan-y',\n        },\n      },\n\n      '.slick-list': {\n        position: 'relative',\n        display: 'block',\n        margin: 0,\n        padding: 0,\n        overflow: 'hidden',\n\n        '&:focus': {\n          outline: 'none',\n        },\n\n        '&.dragging': {\n          cursor: 'pointer',\n        },\n\n        '.slick-slide': {\n          pointerEvents: 'none',\n\n          // https://github.com/ant-design/ant-design/issues/23294\n          [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: {\n            visibility: 'hidden',\n          },\n\n          '&.slick-active': {\n            pointerEvents: 'auto',\n\n            [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: {\n              visibility: 'visible',\n            },\n          },\n\n          // fix Carousel content height not match parent node\n          // when children is empty node\n          // https://github.com/ant-design/ant-design/issues/25878\n          '> div > div': {\n            verticalAlign: 'bottom',\n          },\n        },\n      },\n\n      '.slick-track': {\n        position: 'relative',\n        top: 0,\n        insetInlineStart: 0,\n        display: 'block',\n\n        '&::before, &::after': {\n          display: 'table',\n          content: '\"\"',\n        },\n\n        '&::after': {\n          clear: 'both',\n        },\n      },\n\n      '.slick-slide': {\n        display: 'none',\n        float: 'left',\n        height: '100%',\n        minHeight: 1,\n\n        img: {\n          display: 'block',\n        },\n\n        '&.dragging img': {\n          pointerEvents: 'none',\n        },\n      },\n\n      '.slick-initialized .slick-slide': {\n        display: 'block',\n      },\n\n      '.slick-vertical .slick-slide': {\n        display: 'block',\n        height: 'auto',\n      },\n\n      '.slick-arrow.slick-hidden': {\n        display: 'none',\n      },\n\n      // Arrows\n      '.slick-prev, .slick-next': {\n        position: 'absolute',\n        top: '50%',\n        display: 'block',\n        width: carouselArrowSize,\n        height: carouselArrowSize,\n        marginTop: -carouselArrowSize / 2,\n        padding: 0,\n        color: 'transparent',\n        fontSize: 0,\n        lineHeight: 0,\n        background: 'transparent',\n        border: 0,\n        outline: 'none',\n        cursor: 'pointer',\n\n        '&:hover, &:focus': {\n          color: 'transparent',\n          background: 'transparent',\n          outline: 'none',\n\n          '&::before': {\n            opacity: 1,\n          },\n        },\n\n        '&.slick-disabled::before': {\n          opacity: 0.25,\n        },\n      },\n\n      '.slick-prev': {\n        insetInlineStart: arrowOffset,\n\n        '&::before': {\n          content: '\"←\"',\n        },\n      },\n\n      '.slick-next': {\n        insetInlineEnd: arrowOffset,\n\n        '&::before': {\n          content: '\"→\"',\n        },\n      },\n\n      // Dots\n      '.slick-dots': {\n        position: 'absolute',\n        insetInlineEnd: 0,\n        bottom: 0,\n        insetInlineStart: 0,\n        zIndex: 15,\n        display: 'flex !important',\n        justifyContent: 'center',\n        paddingInlineStart: 0,\n        listStyle: 'none',\n\n        '&-bottom': {\n          bottom: carouselDotOffset,\n        },\n\n        '&-top': {\n          top: carouselDotOffset,\n          bottom: 'auto',\n        },\n\n        li: {\n          position: 'relative',\n          display: 'inline-block',\n          flex: '0 1 auto',\n          boxSizing: 'content-box',\n          width: token.dotWidth,\n          height: token.dotHeight,\n          marginInline: carouselDotMargin,\n          padding: 0,\n          textAlign: 'center',\n          textIndent: -999,\n          verticalAlign: 'top',\n          transition: `all ${token.motionDurationSlow}`,\n\n          button: {\n            position: 'relative',\n            display: 'block',\n            width: '100%',\n            height: token.dotHeight,\n            padding: 0,\n            color: 'transparent',\n            fontSize: 0,\n            background: token.colorBgContainer,\n            border: 0,\n            borderRadius: 1,\n            outline: 'none',\n            cursor: 'pointer',\n            opacity: 0.3,\n            transition: `all ${token.motionDurationSlow}`,\n\n            '&: hover, &:focus': {\n              opacity: 0.75,\n            },\n\n            '&::after': {\n              position: 'absolute',\n              inset: -carouselDotMargin,\n              content: '\"\"',\n            },\n          },\n\n          '&.slick-active': {\n            width: token.dotWidthActive,\n\n            '& button': {\n              background: token.colorBgContainer,\n              opacity: 1,\n            },\n\n            '&: hover, &:focus': {\n              opacity: 1,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genCarouselVerticalStyle: GenerateStyle<CarouselToken> = token => {\n  const { componentCls, carouselDotOffset, marginXXS } = token;\n\n  const reverseSizeOfDot = {\n    width: token.dotHeight,\n    height: token.dotWidth,\n  };\n\n  return {\n    [`${componentCls}-vertical`]: {\n      '.slick-dots': {\n        top: '50%',\n        bottom: 'auto',\n        flexDirection: 'column',\n        width: token.dotHeight,\n        height: 'auto',\n        margin: 0,\n        transform: 'translateY(-50%)',\n\n        '&-left': {\n          insetInlineEnd: 'auto',\n          insetInlineStart: carouselDotOffset,\n        },\n\n        '&-right': {\n          insetInlineEnd: carouselDotOffset,\n          insetInlineStart: 'auto',\n        },\n\n        li: {\n          // reverse width and height in vertical situation\n          ...reverseSizeOfDot,\n          margin: `${marginXXS}px 0`,\n          verticalAlign: 'baseline',\n\n          button: reverseSizeOfDot,\n\n          '&.slick-active': {\n            ...reverseSizeOfDot,\n\n            button: reverseSizeOfDot,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genCarouselRtlStyle: GenerateStyle<CarouselToken> = token => {\n  const { componentCls } = token;\n\n  return [\n    {\n      [`${componentCls}-rtl`]: {\n        direction: 'rtl',\n\n        // Dots\n        '.slick-dots': {\n          [`${componentCls}-rtl&`]: {\n            flexDirection: 'row-reverse',\n          },\n        },\n      },\n    },\n    {\n      [`${componentCls}-vertical`]: {\n        '.slick-dots': {\n          [`${componentCls}-rtl&`]: {\n            flexDirection: 'column',\n          },\n        },\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Carousel',\n  token => {\n    const { controlHeightLG, controlHeightSM } = token;\n    const carouselToken = mergeToken<CarouselToken>(token, {\n      carouselArrowSize: controlHeightLG / 2,\n      carouselDotOffset: controlHeightSM / 2,\n    });\n\n    return [\n      genCarouselStyle(carouselToken),\n      genCarouselVerticalStyle(carouselToken),\n      genCarouselRtlStyle(carouselToken),\n    ];\n  },\n  {\n    dotWidth: 16,\n    dotHeight: 3,\n    dotWidthActive: 24,\n  },\n);\n"
  },
  {
    "path": "components/cascader/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/cascader/demo/basic.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/change-on-select.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/custom-render.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\"><span><span>Zhejiang /</span></span><span><span>Hangzhou /</span></span><span><span>West Lake ( <a>752100</a> ) </span></span></span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/custom-trigger.vue correctly 1`] = `<span>Unselect &nbsp; <!----><a href=\"#\">Change city</a></span>`;\n\nexports[`renders ./components/cascader/demo/disabled-option.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/fields-name.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/hover.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/lazy.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/multiple.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <h4>Cascader.SHOW_PARENT</h4>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-cascader ant-select-multiple ant-select-allow-clear\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <h4>Cascader.SHOW_CHILD</h4>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-cascader ant-select-multiple ant-select-allow-clear\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/search.vue correctly 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/size.vue correctly 1`] = `\n<div size=\"large\" class=\"ant-select ant-cascader ant-select-lg ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n<br>\n<br>\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n<br>\n<br>\n<div size=\"small\" class=\"ant-select ant-cascader ant-select-sm ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n<br>\n<br>\n`;\n\nexports[`renders ./components/cascader/demo/suffix.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"margin-top: 1rem;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile test\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div suffixicon=\"ab\" style=\"margin-top: 1rem;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\">ab<!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/cascader/demo/tagRender.vue correctly 1`] = `\n<div suffixicon=\"Shopping Around\" class=\"ant-select ant-cascader ant-select-multiple ant-select-allow-clear\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/cascader/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Cascader can be selected 1`] = `\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Zhejiang\" aria-checked=\"false\" data-path-key=\"zhejiang\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Zhejiang</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Jiangsu\" aria-checked=\"false\" data-path-key=\"jiangsu\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Jiangsu</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Hangzhou\" aria-checked=\"false\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Hangzhou</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`Cascader can be selected 2`] = `\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Zhejiang\" aria-checked=\"false\" data-path-key=\"zhejiang\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Zhejiang</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Jiangsu\" aria-checked=\"false\" data-path-key=\"jiangsu\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Jiangsu</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Hangzhou\" aria-checked=\"false\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Hangzhou</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item\" role=\"menuitemcheckbox\" title=\"West Lake\" aria-checked=\"false\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou__RC_CASCADER_SPLIT__xihu\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">West Lake</div>\n    <!---->\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`Cascader can be selected 3`] = `\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Zhejiang\" aria-checked=\"true\" data-path-key=\"zhejiang\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Zhejiang</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Jiangsu\" aria-checked=\"false\" data-path-key=\"jiangsu\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Jiangsu</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Hangzhou\" aria-checked=\"true\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">Hangzhou</div>\n    <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n    <!---->\n  </li>\n</ul>\n<ul class=\"ant-cascader-menu\" role=\"menu\">\n  <li class=\"ant-cascader-menu-item ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"West Lake\" aria-checked=\"true\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou__RC_CASCADER_SPLIT__xihu\">\n    <!---->\n    <div class=\"ant-cascader-menu-item-content\">West Lake</div>\n    <!---->\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`Cascader popup correctly when panel is open 1`] = `\n<div>\n  <div class=\"ant-cascader-menus\">\n    <ul class=\"ant-cascader-menu\" role=\"menu\">\n      <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Zhejiang\" aria-checked=\"false\" data-path-key=\"zhejiang\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">Zhejiang</div>\n        <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n        <!---->\n      </li>\n      <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Jiangsu\" aria-checked=\"false\" data-path-key=\"jiangsu\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">Jiangsu</div>\n        <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n        <!---->\n      </li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Cascader popup correctly with defaultValue 1`] = `\n<div>\n  <div class=\"ant-cascader-menus\">\n    <ul class=\"ant-cascader-menu\" role=\"menu\">\n      <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Zhejiang\" aria-checked=\"true\" data-path-key=\"zhejiang\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">Zhejiang</div>\n        <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n        <!---->\n      </li>\n      <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand\" role=\"menuitemcheckbox\" title=\"Jiangsu\" aria-checked=\"false\" data-path-key=\"jiangsu\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">Jiangsu</div>\n        <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n        <!---->\n      </li>\n    </ul>\n    <ul class=\"ant-cascader-menu\" role=\"menu\">\n      <li class=\"ant-cascader-menu-item ant-cascader-menu-item-expand ant-cascader-menu-item-active\" role=\"menuitemcheckbox\" title=\"Hangzhou\" aria-checked=\"true\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">Hangzhou</div>\n        <div class=\"ant-cascader-menu-item-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div>\n        <!---->\n      </li>\n    </ul>\n    <ul class=\"ant-cascader-menu\" role=\"menu\">\n      <li class=\"ant-cascader-menu-item\" role=\"menuitemcheckbox\" title=\"West Lake\" aria-checked=\"true\" data-path-key=\"zhejiang__RC_CASCADER_SPLIT__hangzhou__RC_CASCADER_SPLIT__xihu\">\n        <!---->\n        <div class=\"ant-cascader-menu-item-content\">West Lake</div>\n        <!---->\n        <!---->\n      </li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Cascader support controlled mode 1`] = `\n<div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" style=\"opacity: 0;\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" type=\"search\"></span><span class=\"ant-select-selection-item\" title=\"Zhejiang\">Zhejiang</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n</div>\n`;\n"
  },
  {
    "path": "components/cascader/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('cascader');\n"
  },
  {
    "path": "components/cascader/__tests__/index.test.js",
    "content": "import { asyncExpect } from '../../../tests/utils';\nimport { mount } from '@vue/test-utils';\nimport KeyCode from '../../_util/KeyCode';\nimport Cascader from '..';\nimport focusTest from '../../../tests/shared/focusTest';\n\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\nconst options = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\n\nfunction filter(inputValue, path) {\n  return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\n}\n\nfunction toggleOpen(wrapper) {\n  wrapper.find('.ant-select-selector').trigger('mousedown');\n}\n\nfunction isOpen(wrapper) {\n  return !!wrapper.findComponent({ name: 'Trigger' }).props().popupVisible;\n}\n\ndescribe('Cascader', () => {\n  focusTest(Cascader);\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  it('popup correctly when panel is hidden', async () => {\n    mount(Cascader, {\n      props: { options },\n      sync: false,\n      attachTo: 'body',\n    });\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus').length).toBe(0);\n    });\n  });\n\n  it('popup correctly when panel is open', async () => {\n    const wrapper = mount(Cascader, { props: { options }, sync: false, attachTo: 'body' });\n    await asyncExpect(() => {\n      toggleOpen(wrapper);\n    });\n    expect($$('.ant-cascader-menus').length).toBe(1);\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus')[0].parentNode.parentNode.innerHTML).toMatchSnapshot();\n    }, 1000);\n  });\n\n  it('support controlled mode', async () => {\n    const wrapper = mount(Cascader, { props: { options }, sync: false });\n    await asyncExpect(() => {\n      wrapper.setProps({\n        value: ['zhejiang', 'hangzhou', 'xihu'],\n      });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('popup correctly with defaultValue', async () => {\n    const wrapper = mount(Cascader, {\n      props: {\n        options,\n        defaultValue: ['zhejiang', 'hangzhou'],\n      },\n      sync: false,\n    });\n\n    await asyncExpect(() => {\n      toggleOpen(wrapper);\n    });\n    expect($$('.ant-cascader-menus').length).toBe(1);\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus')[0].parentNode.parentNode.innerHTML).toMatchSnapshot();\n    }, 0);\n  });\n\n  it('can be selected', async () => {\n    const wrapper = mount(Cascader, { props: { options }, sync: false });\n    await asyncExpect(() => {\n      toggleOpen(wrapper);\n    });\n    await asyncExpect(() => {\n      $$('.ant-cascader-menu')[0].querySelectorAll('.ant-cascader-menu-item')[0].click();\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus')[0].innerHTML).toMatchSnapshot();\n    });\n\n    await asyncExpect(() => {\n      $$('.ant-cascader-menu')[1].querySelectorAll('.ant-cascader-menu-item')[0].click();\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus')[0].innerHTML).toMatchSnapshot();\n    });\n\n    await asyncExpect(() => {\n      $$('.ant-cascader-menu')[2].querySelectorAll('.ant-cascader-menu-item')[0].click();\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-cascader-menus')[0].innerHTML).toMatchSnapshot();\n    });\n  });\n\n  fit('backspace should work with `Cascader[showSearch]`', async () => {\n    const wrapper = mount(Cascader, { props: { options, showSearch: true }, sync: false });\n    await asyncExpect(() => {\n      wrapper.find('input').element.value = '123';\n      wrapper.find('input').trigger('input');\n    });\n    await asyncExpect(() => {\n      expect(isOpen(wrapper)).toBeTruthy();\n    });\n    await asyncExpect(() => {\n      wrapper.find('input').element.keyCode = KeyCode.BACKSPACE;\n      wrapper.find('input').trigger('keydown');\n    });\n    await asyncExpect(() => {\n      expect(isOpen(wrapper)).toBeTruthy();\n    });\n    await asyncExpect(() => {\n      wrapper.find('input').element.value = '';\n      wrapper.find('input').trigger('input');\n    });\n    await asyncExpect(() => {\n      expect(isOpen(wrapper)).toBeTruthy();\n    });\n    // await asyncExpect(() => {\n    //   wrapper.find('input').element.keyCode = KeyCode.BACKSPACE;\n    //   wrapper.find('input').trigger('keydown');\n    // });\n    // await asyncExpect(() => {\n    //   expect(isOpen(wrapper)).toBeFalsy();\n    // }, 0);\n  });\n\n  describe('limit filtered item count', () => {\n    beforeEach(() => {\n      document.body.outerHTML = '';\n    });\n\n    afterEach(() => {\n      document.body.outerHTML = '';\n    });\n\n    it('limit with positive number', async () => {\n      const wrapper = mount(Cascader, {\n        props: { options, showSearch: { filter, limit: 1 } },\n        sync: false,\n        attachTo: 'body',\n      });\n      wrapper.find('input').trigger('click');\n      wrapper.find('input').element.value = 'a';\n      wrapper.find('input').trigger('input');\n      await asyncExpect(() => {\n        expect($$('.ant-cascader-menu-item').length).toBe(1);\n      }, 0);\n    });\n\n    it('not limit', async () => {\n      const wrapper = mount(Cascader, {\n        props: { options, showSearch: { filter, limit: false } },\n        sync: false,\n        attachTo: 'body',\n      });\n      wrapper.find('input').trigger('click');\n      wrapper.find('input').element.value = 'a';\n      wrapper.find('input').trigger('input');\n      await asyncExpect(() => {\n        expect($$('.ant-cascader-menu-item').length).toBe(2);\n      }, 0);\n    });\n\n    it('negative limit', async () => {\n      const wrapper = mount(Cascader, {\n        props: { options, showSearch: { filter, limit: -1 } },\n        sync: false,\n        attachTo: 'body',\n      });\n      wrapper.find('input').trigger('click');\n      wrapper.find('input').element.value = 'a';\n      wrapper.find('input').trigger('input');\n      await asyncExpect(() => {\n        expect($$('.ant-cascader-menu-item').length).toBe(2);\n      }, 0);\n    });\n  });\n});\n"
  },
  {
    "path": "components/cascader/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic\n---\n\n## zh-CN\n\n省市区级联。\n\n## en-US\n\nCascade selection box for selecting province/city/district.\n\n</docs>\n<template>\n  <a-cascader v-model:value=\"value\" :options=\"options\" placeholder=\"Please select\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/change-on-select.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 选择即改变\n  en-US: Change on select\n---\n\n## zh-CN\n\n这种交互允许只选中父级选项。\n\n## en-US\n\nAllow only select parent options.\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    :options=\"options\"\n    placeholder=\"Please select\"\n    change-on-select\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/custom-render.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 自定义已选项\n  en-US: Custom render\n---\n\n## zh-CN\n\n例如给最后一项加上邮编链接。\n\n## en-US\n\nFor instance, add an external link after the selected value.\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    placeholder=\"Please select\"\n    :options=\"options\"\n    style=\"width: 100%\"\n  >\n    <template #displayRender=\"{ labels, selectedOptions }\">\n      <span v-for=\"(label, index) in labels\" :key=\"selectedOptions[index].value\">\n        <span v-if=\"index === labels.length - 1\">\n          {{ label }} (\n          <a @click=\"e => handleAreaClick(e, label, selectedOptions[index])\">\n            {{ selectedOptions[index].code }}\n          </a>\n          )\n        </span>\n        <span v-else>{{ label }} /</span>\n      </span>\n    </template>\n  </a-cascader>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n            code: 752100,\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n            code: 453400,\n          },\n        ],\n      },\n    ],\n  },\n];\n\nconst handleAreaClick = (e: Event, label: string, option: CascaderProps['options'][number]) => {\n  e.stopPropagation();\n  console.log('clicked', label, option);\n};\n\nconst value = ref<string[]>(['zhejiang', 'hangzhou', 'xihu']);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/custom-trigger.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 可以自定义显示\n  en-US: Custom trigger\n---\n\n## zh-CN\n\n切换按钮和结果分开。\n\n## en-US\n\nSeparate trigger button and result.\n\n</docs>\n<template>\n  <span>\n    {{ text }} &nbsp;\n    <a-cascader\n      v-model:value=\"value\"\n      placeholder=\"Please select\"\n      :options=\"options\"\n      @change=\"onChange\"\n    >\n      <a href=\"#\">Change city</a>\n    </a-cascader>\n  </span>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\nconst text = ref<string>('Unselect');\n\nconst onChange: CascaderProps['onChange'] = (_value, selectedOptions) => {\n  text.value = selectedOptions.map(o => o.label).join(', ');\n};\n</script>\n"
  },
  {
    "path": "components/cascader/demo/disabled-option.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 禁用选项\n  en-US: Disabled option\n---\n\n## zh-CN\n\n通过指定 options 里的 `disabled` 字段。\n\n## en-US\n\nDisable option by specifying the `disabled` property in `options`.\n\n</docs>\n<template>\n  <a-cascader v-model:value=\"value\" placeholder=\"Please select\" :options=\"options\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    disabled: true,\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/fields-name.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 自定义字段名\n  en-US: Custom Field Names\n---\n\n## zh-CN\n\n自定义字段名。\n\n## en-US\n\nCustom Field Names\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    :field-names=\"{ label: 'name', value: 'code', children: 'items' }\"\n    :options=\"options\"\n    placeholder=\"Please select\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    code: 'zhejiang',\n    name: 'Zhejiang',\n    items: [\n      {\n        code: 'hangzhou',\n        name: 'Hangzhou',\n        items: [\n          {\n            code: 'xihu',\n            name: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    code: 'jiangsu',\n    name: 'Jiangsu',\n    items: [\n      {\n        code: 'nanjing',\n        name: 'Nanjing',\n        items: [\n          {\n            code: 'zhonghuamen',\n            name: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/hover.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 移入展开\n  en-US: Hover\n---\n\n## zh-CN\n\n通过移入展开下级菜单，点击完成选择。\n\n## en-US\n\nHover to expand sub menu, click to select option.\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    :options=\"options\"\n    expand-trigger=\"hover\"\n    placeholder=\"Please select\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\n\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <custom-trigger />\n    <hover />\n    <disabled-option />\n    <change-on-select />\n    <size />\n    <custom-render />\n    <search />\n    <lazy />\n    <fields-name />\n    <suffix />\n    <multipleVue />\n    <tagRender />\n  </demo-sort>\n</template>\n<script>\nimport Basic from './basic.vue';\nimport ChangeOnSelect from './change-on-select.vue';\nimport CustomRender from './custom-render.vue';\nimport CustomTrigger from './custom-trigger.vue';\nimport DisabledOption from './disabled-option.vue';\nimport Hover from './hover.vue';\nimport Lazy from './lazy.vue';\nimport Search from './search.vue';\nimport Size from './size.vue';\nimport FieldsName from './fields-name.vue';\nimport Suffix from './suffix.vue';\nimport multipleVue from './multiple.vue';\nimport tagRender from './tagRender.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    ChangeOnSelect,\n    CustomRender,\n    CustomTrigger,\n    DisabledOption,\n    Hover,\n    Lazy,\n    Search,\n    Size,\n    FieldsName,\n    Suffix,\n    multipleVue,\n    tagRender,\n  },\n});\n</script>\n<style>\n#components-cascader-demo .ant-cascader-picker {\n  width: 300px;\n}\n</style>\n"
  },
  {
    "path": "components/cascader/demo/lazy.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 动态加载选项\n  en-US: Load Options Lazily\n---\n\n## zh-CN\n\n使用 `loadData` 实现动态加载选项。\n> 注意：`loadData` 与 `showSearch` 无法一起使用。\n\n## en-US\n\nLoad options lazily with `loadData`.\n> Note: `loadData` cannot work with `showSearch`.\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    :options=\"options\"\n    :load-data=\"loadData\"\n    placeholder=\"Please select\"\n    change-on-select\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\n\nconst options = ref<CascaderProps['options']>([\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    isLeaf: false,\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    isLeaf: false,\n  },\n]);\n\nconst loadData: CascaderProps['loadData'] = selectedOptions => {\n  const targetOption = selectedOptions[selectedOptions.length - 1];\n  targetOption.loading = true;\n\n  // load options lazily\n  setTimeout(() => {\n    targetOption.loading = false;\n    targetOption.children = [\n      {\n        label: `${targetOption.label} Dynamic 1`,\n        value: 'dynamic1',\n      },\n      {\n        label: `${targetOption.label} Dynamic 2`,\n        value: 'dynamic2',\n      },\n    ];\n    options.value = [...options.value];\n  }, 1000);\n};\n\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/multiple.vue",
    "content": "<docs>\n---\norder: 5.1\nversion: 3.0.0\ntitle:\n  zh-CN: 多选\n  en-US: Multiple\n---\n\n## zh-CN\n\n一次性选择多个选项。\n\n## en-US\n\nSelect multiple options\n</docs>\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <h4>Cascader.SHOW_PARENT</h4>\n    <a-cascader\n      v-model:value=\"value\"\n      style=\"width: 100%\"\n      multiple\n      max-tag-count=\"responsive\"\n      :options=\"options\"\n      placeholder=\"Please select\"\n    ></a-cascader>\n    <h4>Cascader.SHOW_CHILD</h4>\n    <a-cascader\n      v-model:value=\"value\"\n      style=\"width: 100%\"\n      multiple\n      max-tag-count=\"responsive\"\n      :options=\"options\"\n      placeholder=\"Please select\"\n      :show-checked-strategy=\"Cascader.SHOW_CHILD\"\n    ></a-cascader>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nimport { Cascader } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    label: 'Light',\n    value: 'light',\n    children: new Array(20)\n      .fill(null)\n      .map((_, index) => ({ label: `Number ${index}`, value: index })),\n  },\n  {\n    label: 'Bamboo',\n    value: 'bamboo',\n    children: [\n      {\n        label: 'Little',\n        value: 'little',\n        children: [\n          {\n            label: 'Toy Fish',\n            value: 'fish',\n          },\n          {\n            label: 'Toy Cards',\n            value: 'cards',\n          },\n          {\n            label: 'Toy Bird',\n            value: 'bird',\n          },\n        ],\n      },\n    ],\n  },\n];\n\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/search.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 搜索\n  en-US: Search\n---\n\n## zh-CN\n\n可以直接搜索选项并选择。\n> `Cascader[showSearch]` 暂不支持服务端搜索，更多信息见 [#5547](https://github.com/ant-design/ant-design/issues/5547)\n\n## en-US\n\nSearch and select options directly.\n> Now, `Cascader[showSearch]` doesn't support search on server, more info [#5547](https://github.com/ant-design/ant-design/issues/5547)\n\n</docs>\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    :options=\"options\"\n    :show-search=\"{ filter }\"\n    placeholder=\"Please select\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nimport type { ShowSearchType } from 'ant-design-vue/es/cascader';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n          {\n            value: 'xiasha',\n            label: 'Xia Sha',\n            disabled: true,\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst filter: ShowSearchType['filter'] = (inputValue, path) => {\n  return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\n};\n\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/size.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 大小\n  en-US: Size\n---\n\n## zh-CN\n\n不同大小的级联选择器。\n\n## en-US\n\nCascade selection box of different sizes.\n\n</docs>\n<template>\n  <a-cascader v-model:value=\"value\" placeholder=\"Please select\" size=\"large\" :options=\"options\" />\n  <br />\n  <br />\n  <a-cascader v-model:value=\"value\" placeholder=\"Please select\" :options=\"options\" />\n  <br />\n  <br />\n  <a-cascader v-model:value=\"value\" placeholder=\"Please select\" size=\"small\" :options=\"options\" />\n  <br />\n  <br />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/suffix.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 后缀图标\n  en-US: Suffix\n---\n\n## zh-CN\n\n自定义后缀图标\n\n## en-US\n\nCustom suffix icon\n\n</docs>\n<template>\n  <a-space>\n    <a-cascader\n      v-model:value=\"value1\"\n      style=\"margin-top: 1rem\"\n      :options=\"options\"\n      placeholder=\"Please select\"\n    >\n      <template #suffixIcon><smile-outlined class=\"test\" /></template>\n    </a-cascader>\n    <a-cascader\n      v-model:value=\"value2\"\n      suffix-icon=\"ab\"\n      style=\"margin-top: 1rem\"\n      :options=\"options\"\n      placeholder=\"Please select\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value1 = ref<string[]>([]);\nconst value2 = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/demo/tagRender.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 自定义 tag 内容\n  en-US: The custom tag\n---\n\n</docs>\n\n<template>\n  <a-cascader\n    v-model:value=\"value\"\n    multiple\n    :options=\"options\"\n    placeholder=\"Please select\"\n    suffix-icon=\"Shopping Around\"\n  >\n    <template #tagRender=\"data\">\n      <a-tag :key=\"data.value\" color=\"blue\">{{ data.label }}</a-tag>\n    </template>\n  </a-cascader>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { CascaderProps } from 'ant-design-vue';\nconst options: CascaderProps['options'] = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'freezeKey',\n        label: 'freeze',\n        children: [\n          {\n            value: 'key1',\n            label: 'salmon',\n          },\n          {\n            value: 'key2',\n            label: 'beef',\n          },\n        ],\n      },\n      {\n        value: 'fruitsKey',\n        label: 'fruits',\n        children: [\n          {\n            value: 'key11',\n            label: 'apple',\n          },\n          {\n            value: 'key22',\n            label: 'banana',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'Chinese delicious food',\n    label: '中国美食',\n    children: [\n      {\n        value: 'key3',\n        label: '月饼',\n        children: [\n          {\n            value: 'key4',\n            label: '蛋黄馅',\n          },\n          {\n            value: 'key5',\n            label: '五仁馅',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value = ref<string[]>([]);\n</script>\n"
  },
  {
    "path": "components/cascader/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Cascader\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tokLTp73TsQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5-ArSLl5UBsAAAAAAAAAAAAADrJ8AQ/original\n---\n\nCascade selection box.\n\n## When To Use\n\n- When you need to select from a set of associated data set. Such as province/city/district, company level, things classification.\n- When selecting from a large data set, with multi-stage classification separated for easy selection.\n- Chooses cascade items in one float layer for better user experience.\n\n## API\n\n```html\n<a-cascader :options=\"options\" v-model:value=\"value\" />\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | whether allow clear | boolean | true |  |\n| autofocus | get focus when component mounted | boolean | false |  |\n| bordered | Whether has border style | boolean | true | 3.2 |\n| clearIcon | The custom clear icon | slot | - | 3.2 |\n| changeOnSelect | (Work on single select) change value on each selection if set to true, see above demo for details | boolean | false |  |\n| disabled | whether disabled select | boolean | false |  |\n| displayRender | render function of displaying selected options, you can use #displayRender=\"{labels, selectedOptions}\". | `({labels, selectedOptions}) => VNode` | `labels => labels.join(' / ')` |  |\n| popupClassName | additional className of popup overlay | string | - | 4.0 |\n| dropdownStyle | additional style of popup overlay | CSSProperties | {} | 3.0 |\n| expandIcon | Customize the current item expand icon | slot | - | 3.0 |\n| expandTrigger | expand current item when click or hover | `click` \\| `hover` | 'click' |  |\n| fieldNames | custom field name for label and value and children | object | `{ label: 'label', value: 'value', children: 'children' }` |  |\n| getPopupContainer | Parent Node which the selector should be rendered to. Default to `body`. When position issues happen, try to modify it into scrollable content and position it relative. | Function(triggerNode) | () => document.body |  |\n| loadData | To load option lazily, and it cannot work with `showSearch` | `(selectedOptions) => void` | - |  |\n| maxTagCount | Max tag count to show. `responsive` will cost render performance | number \\| `responsive` | - | 3.0 |\n| maxTagPlaceholder | Placeholder for not showing tags | v-slot \\| function(omittedValues) | - | 3.0 |\n| multiple | Support multiple or not | boolean | - | 3.0 |\n| notFoundContent | Specify content to show when no result matches. | string \\| slot | 'Not Found' |  |\n| open | set visible of cascader popup | boolean | - | 3.0 |\n| options | data options of cascade | [Option](#option)\\[] | - |  |\n| placeholder | input placeholder | string | 'Please select' |  |\n| placement | Use preset popup align config from builtinPlacements | `bottomLeft` \\| `bottomRight` \\| `topLeft` \\| `topRight` | `bottomLeft` | 3.0 |\n| removeIcon | The custom remove icon | slot | - | 3.2 |\n| searchValue | Set search value, Need work with `showSearch` | string | - | 3.0 |\n| showSearch | Whether show search input in single mode. | boolean \\| [object](#showsearch) | false |  |\n| size | input size | `large` \\| `default` \\| `small` | `default` |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | The custom suffix icon | string \\| VNode \\| slot | - |  |\n| showCheckedStrategy | The way show selected item in box. ** `SHOW_CHILD`: ** just show child treeNode. **`Cascader.SHOW_PARENT`:** just show parent treeNode (when all child treeNode under the parent treeNode are checked) | `Cascader.SHOW_PARENT` \\| `Cascader.SHOW_CHILD` | `Cascader.SHOW_PARENT` | 3.3.0 |\n| tagRender | Customize tag render when `multiple` | slot | - | 3.0 |\n| value(v-model) | selected value | string\\[] \\| number\\[] | - |  |\n\n### showSearch\n\nFields in `showSearch`:\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| filter | The function will receive two arguments, inputValue and option, if the function returns true, the option will be included in the filtered set; Otherwise, it will be excluded. | `function(inputValue, path): boolean` |  |\n| limit | Set the count of filtered items | number \\| false | 50 |\n| matchInputWidth | Whether the width of result list equals to input's | boolean |  |\n| render | Used to render filtered options, you can use #showSearchRender=\"{inputValue, path}\" | `function({inputValue, path}): VNode` |  |\n| sort | Used to sort filtered options. | `function(a, b, inputValue)` |  |\n\n### events\n\n| Events Name | Description | Arguments | version |  |\n| --- | --- | --- | --- | --- |\n| change | callback when finishing cascader select | `(value, selectedOptions) => void` | - |  |\n| dropdownVisibleChange | callback when popup shown or hidden | `(value) => void` | - | 3.0 |\n| search | callback when input value change | `(value) => void` | - | 1.5.4 |\n\n### Option\n\n```ts\ninterface Option {\n  value: string | number;\n  label?: VNode;\n  disabled?: boolean;\n  children?: Option[];\n  // Determines if this is a leaf node(effective when `loadData` is specified).\n  // `false` will force trade TreeNode as a parent node.\n  // Show expand icon even if the current node has no children.\n  isLeaf?: boolean;\n}\n```\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n"
  },
  {
    "path": "components/cascader/index.tsx",
    "content": "import type { ShowSearchType, FieldNames, BaseOptionType, DefaultOptionType } from '../vc-cascader';\nimport VcCascader, {\n  cascaderProps as vcCascaderProps,\n  SHOW_CHILD,\n  SHOW_PARENT,\n} from '../vc-cascader';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport LeftOutlined from '@ant-design/icons-vue/LeftOutlined';\nimport getIcons from '../select/utils/iconUtil';\nimport type { VueNode } from '../_util/type';\nimport { withInstall } from '../_util/type';\nimport omit from '../_util/omit';\nimport { computed, defineComponent, ref, watchEffect } from 'vue';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\nimport type { SizeType } from '../config-provider';\nimport devWarning from '../vc-util/devWarning';\nimport type { SelectCommonPlacement } from '../_util/transition';\nimport { getTransitionDirection, getTransitionName } from '../_util/transition';\nimport { useInjectFormItemContext } from '../form';\nimport type { ValueType } from '../vc-cascader/Cascader';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport { FormItemInputContext } from '../form/FormItemContext';\nimport { useCompactItemContext } from '../space/Compact';\n\nimport useSelectStyle from '../select/style';\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n// Align the design since we use `rc-select` in root. This help:\n// - List search content will show all content\n// - Hover opacity style\n// - Search filter match case\n\nexport type { BaseOptionType, DefaultOptionType, ShowSearchType };\n\nexport type FieldNamesType = FieldNames;\n\nexport type FilledFieldNamesType = Required<FieldNamesType>;\n\nfunction highlightKeyword(str: string, lowerKeyword: string, prefixCls?: string) {\n  const cells = str\n    .toLowerCase()\n    .split(lowerKeyword)\n    .reduce((list, cur, index) => (index === 0 ? [cur] : [...list, lowerKeyword, cur]), []);\n  const fillCells: VueNode[] = [];\n  let start = 0;\n\n  cells.forEach((cell, index) => {\n    const end = start + cell.length;\n    let originWorld: VueNode = str.slice(start, end);\n    start = end;\n\n    if (index % 2 === 1) {\n      originWorld = (\n        <span class={`${prefixCls}-menu-item-keyword`} key=\"seperator\">\n          {originWorld}\n        </span>\n      );\n    }\n\n    fillCells.push(originWorld);\n  });\n\n  return fillCells;\n}\n\nconst defaultSearchRender: ShowSearchType['render'] = ({\n  inputValue,\n  path,\n  prefixCls,\n  fieldNames,\n}) => {\n  const optionList: VueNode[] = [];\n\n  // We do lower here to save perf\n  const lower = inputValue.toLowerCase();\n\n  path.forEach((node, index) => {\n    if (index !== 0) {\n      optionList.push(' / ');\n    }\n\n    let label = (node as any)[fieldNames.label!];\n    const type = typeof label;\n    if (type === 'string' || type === 'number') {\n      label = highlightKeyword(String(label), lower, prefixCls);\n    }\n\n    optionList.push(label);\n  });\n  return optionList;\n};\n\nexport interface CascaderOptionType extends DefaultOptionType {\n  isLeaf?: boolean;\n  loading?: boolean;\n  children?: CascaderOptionType[];\n  [key: string]: any;\n}\nexport function cascaderProps<DataNodeType extends CascaderOptionType = CascaderOptionType>() {\n  return {\n    ...omit(vcCascaderProps(), ['customSlots', 'checkable', 'options']),\n    multiple: { type: Boolean, default: undefined },\n    size: String as PropType<SizeType>,\n    bordered: { type: Boolean, default: undefined },\n    placement: { type: String as PropType<SelectCommonPlacement> },\n    suffixIcon: PropTypes.any,\n    status: String as PropType<InputStatus>,\n    options: Array as PropType<DataNodeType[]>,\n    popupClassName: String,\n    /** @deprecated Please use `popupClassName` instead */\n    dropdownClassName: String,\n    'onUpdate:value': Function as PropType<(value: ValueType) => void>,\n  };\n}\n\nexport type CascaderProps = Partial<ExtractPropTypes<ReturnType<typeof cascaderProps>>>;\n\nexport interface CascaderRef {\n  focus: () => void;\n  blur: () => void;\n}\n\nconst Cascader = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACascader',\n  inheritAttrs: false,\n  props: initDefaultProps(cascaderProps(), {\n    bordered: true,\n    choiceTransitionName: '',\n    allowClear: true,\n  }),\n  setup(props, { attrs, expose, slots, emit }) {\n    // ====================== Warning ======================\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !props.dropdownClassName,\n        'Cascader',\n        '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n      );\n    }\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const {\n      prefixCls: cascaderPrefixCls,\n      rootPrefixCls,\n      getPrefixCls,\n      direction,\n      getPopupContainer,\n      renderEmpty,\n      size: contextSize,\n      disabled,\n    } = useConfigInject('cascader', props);\n    const prefixCls = computed(() => getPrefixCls('select', props.prefixCls));\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const mergedSize = computed(() => compactSize.value || contextSize.value);\n    const contextDisabled = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? contextDisabled.value);\n\n    const [wrapSelectSSR, hashId] = useSelectStyle(prefixCls);\n    const [wrapCascaderSSR] = useStyle(cascaderPrefixCls);\n\n    const isRtl = computed(() => direction.value === 'rtl');\n    // =================== Warning =====================\n    if (process.env.NODE_ENV !== 'production') {\n      watchEffect(() => {\n        devWarning(\n          !props.multiple || !props.displayRender || !slots.displayRender,\n          'Cascader',\n          '`displayRender` not work on `multiple`. Please use `tagRender` instead.',\n        );\n      });\n    }\n    // ==================== Search =====================\n    const mergedShowSearch = computed(() => {\n      if (!props.showSearch) {\n        return props.showSearch;\n      }\n\n      let searchConfig: ShowSearchType = {\n        render: defaultSearchRender,\n      };\n\n      if (typeof props.showSearch === 'object') {\n        searchConfig = {\n          ...searchConfig,\n          ...props.showSearch,\n        };\n      }\n\n      return searchConfig;\n    });\n\n    // =================== Dropdown ====================\n    const mergedDropdownClassName = computed(() =>\n      classNames(\n        props.popupClassName || props.dropdownClassName,\n        `${cascaderPrefixCls.value}-dropdown`,\n        {\n          [`${cascaderPrefixCls.value}-dropdown-rtl`]: isRtl.value,\n        },\n        hashId.value,\n      ),\n    );\n\n    const selectRef = ref<CascaderRef>();\n    expose({\n      focus() {\n        selectRef.value?.focus();\n      },\n      blur() {\n        selectRef.value?.blur();\n      },\n    } as CascaderRef);\n\n    const handleChange: CascaderProps['onChange'] = (...args) => {\n      emit('update:value', args[0]);\n      emit('change', ...args);\n      formItemContext.onFieldChange();\n    };\n    const handleBlur: CascaderProps['onBlur'] = (...args) => {\n      emit('blur', ...args);\n      formItemContext.onFieldBlur();\n    };\n    const mergedShowArrow = computed(() =>\n      props.showArrow !== undefined ? props.showArrow : props.loading || !props.multiple,\n    );\n    const placement = computed(() => {\n      if (props.placement !== undefined) {\n        return props.placement;\n      }\n      return direction.value === 'rtl'\n        ? ('bottomRight' as SelectCommonPlacement)\n        : ('bottomLeft' as SelectCommonPlacement);\n    });\n    return () => {\n      const {\n        notFoundContent = slots.notFoundContent?.(),\n        expandIcon = slots.expandIcon?.(),\n        multiple,\n        bordered,\n        allowClear,\n        choiceTransitionName,\n        transitionName,\n        id = formItemContext.id.value,\n        ...restProps\n      } = props;\n      // =================== No Found ====================\n      const mergedNotFoundContent = notFoundContent || renderEmpty('Cascader');\n\n      // ===================== Icon ======================\n      let mergedExpandIcon = expandIcon;\n      if (!expandIcon) {\n        mergedExpandIcon = isRtl.value ? <LeftOutlined /> : <RightOutlined />;\n      }\n\n      const loadingIcon = (\n        <span class={`${prefixCls.value}-menu-item-loading-icon`}>\n          <LoadingOutlined spin />\n        </span>\n      );\n\n      // ===================== Icons =====================\n      const { suffixIcon, removeIcon, clearIcon } = getIcons(\n        {\n          ...props,\n          hasFeedback: formItemInputContext.hasFeedback,\n          feedbackIcon: formItemInputContext.feedbackIcon,\n          multiple,\n          prefixCls: prefixCls.value,\n          showArrow: mergedShowArrow.value,\n        },\n        slots,\n      );\n      return wrapCascaderSSR(\n        wrapSelectSSR(\n          <VcCascader\n            {...restProps}\n            {...attrs}\n            id={id}\n            prefixCls={prefixCls.value}\n            class={[\n              cascaderPrefixCls.value,\n              {\n                [`${prefixCls.value}-lg`]: mergedSize.value === 'large',\n                [`${prefixCls.value}-sm`]: mergedSize.value === 'small',\n                [`${prefixCls.value}-rtl`]: isRtl.value,\n                [`${prefixCls.value}-borderless`]: !bordered,\n                [`${prefixCls.value}-in-form-item`]: formItemInputContext.isFormItemInput,\n              },\n              getStatusClassNames(\n                prefixCls.value,\n                mergedStatus.value,\n                formItemInputContext.hasFeedback,\n              ),\n              compactItemClassnames.value,\n              attrs.class,\n              hashId.value,\n            ]}\n            disabled={mergedDisabled.value}\n            direction={direction.value}\n            placement={placement.value}\n            notFoundContent={mergedNotFoundContent}\n            allowClear={allowClear}\n            showSearch={mergedShowSearch.value}\n            expandIcon={mergedExpandIcon}\n            inputIcon={suffixIcon}\n            removeIcon={removeIcon}\n            clearIcon={clearIcon}\n            loadingIcon={loadingIcon}\n            checkable={!!multiple}\n            dropdownClassName={mergedDropdownClassName.value}\n            dropdownPrefixCls={cascaderPrefixCls.value}\n            choiceTransitionName={getTransitionName(rootPrefixCls.value, '', choiceTransitionName)}\n            transitionName={getTransitionName(\n              rootPrefixCls.value,\n              getTransitionDirection(placement.value),\n              transitionName,\n            )}\n            getPopupContainer={getPopupContainer?.value}\n            customSlots={{\n              ...slots,\n              checkable: () => <span class={`${cascaderPrefixCls.value}-checkbox-inner`} />,\n            }}\n            tagRender={props.tagRender || slots.tagRender}\n            displayRender={props.displayRender || slots.displayRender}\n            maxTagPlaceholder={props.maxTagPlaceholder || slots.maxTagPlaceholder}\n            showArrow={formItemInputContext.hasFeedback || props.showArrow}\n            onChange={handleChange}\n            onBlur={handleBlur}\n            v-slots={slots}\n            ref={selectRef}\n          />,\n        ),\n      );\n    };\n  },\n});\nexport default withInstall<\n  typeof Cascader & {\n    SHOW_PARENT: typeof SHOW_PARENT;\n    SHOW_CHILD: typeof SHOW_CHILD;\n  }\n>(\n  Object.assign(Cascader, {\n    SHOW_CHILD,\n    SHOW_PARENT,\n  } as any),\n);\n"
  },
  {
    "path": "components/cascader/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Cascader\nsubtitle: 级联选择\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tokLTp73TsQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5-ArSLl5UBsAAAAAAAAAAAAADrJ8AQ/original\n---\n\n级联选择框。\n\n## 何时使用\n\n- 需要从一组相关联的数据集合进行选择，例如省市区，公司层级，事物分类等。\n- 从一个较大的数据集合中进行选择时，用多级分类进行分隔，方便选择。\n- 比起 Select 组件，可以在同一个浮层中完成选择，有较好的体验。\n\n## API\n\n```html\n<a-cascader :options=\"options\" v-model:value=\"value\" />\n```\n\n| 参数 | 说明 | 类型 | 默认值 | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | 是否支持清除 | boolean | true |  |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true | 3.2 |\n| clearIcon | 自定义的选择框清空图标 | slot | - | 3.2 |\n| changeOnSelect | （单选时生效）当此项为 true 时，点选每级菜单选项值都会发生变化，具体见上面的演示 | boolean | false |  |\n| defaultValue | 默认的选中项 | string\\[] \\| number\\[] | \\[] |  |\n| disabled | 禁用 | boolean | false |  |\n| displayRender | 选择后展示的渲染函数,可使用 #displayRender=\"{labels, selectedOptions}\" | `({labels, selectedOptions}) => VNode` | `labels => labels.join(' / ')` |  |\n| popupClassName | 自定义浮层类名 | string | - | 4.0 |\n| dropdownStyle | 自定义浮层样式 | CSSProperties | {} | 3.0 |\n| expandIcon | 自定义次级菜单展开图标 | slot | - | 3.0 |\n| expandTrigger | 次级菜单的展开方式 | `click` \\| `hover` | 'click' |  |\n| fieldNames | 自定义 options 中 `label` `value` `children` 的字段 | object | `{ label: 'label', value: 'value', children: 'children' }` |  |\n| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上，如果你遇到菜单滚动定位问题，试试修改为滚动的区域，并相对其定位。 | Function(triggerNode) | () => document.body |  |\n| loadData | 用于动态加载选项，无法与 `showSearch` 一起使用 | `(selectedOptions) => void` | - |  |\n| maxTagCount | 最多显示多少个 tag，响应式模式会对性能产生损耗 | number \\| `responsive` | - | 3.0 |\n| maxTagPlaceholder | 隐藏 tag 时显示的内容 | v-slot \\| function(omittedValues) | - | 3.0 |\n| multiple | 支持多选节点 | boolean | - | 3.0 |\n| notFoundContent | 当下拉列表为空时显示的内容 | string \\| slot | 'Not Found' |  |\n| open | 控制浮层显隐 | boolean | - | 3.0 |\n| options | 可选项数据源 | [Option](#option)\\[] | - |  |\n| placeholder | 输入框占位文本 | string | '请选择' |  |\n| placement | 浮层预设位置 | `bottomLeft` \\| `bottomRight` \\| `topLeft` \\| `topRight` | `bottomLeft` | 3.0 |\n| showCheckedStrategy | 定义选中项回填的方式。`Cascader.SHOW_CHILD`: 只显示选中的子节点。`Cascader.SHOW_PARENT`: 只显示父节点（当父节点下所有子节点都选中时）。 | `Cascader.SHOW_PARENT` \\| `Cascader.SHOW_CHILD` | `Cascader.SHOW_PARENT` | 3.3.0 |\n| removeIcon | 自定义的多选框清除图标 | slot | - | 3.2 |\n| searchValue | 设置搜索的值，需要与 `showSearch` 配合使用 | string | - | 3.0 |\n| showSearch | 在选择框中显示搜索框 | boolean \\| [object](#showsearch) | false |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| size | 输入框大小 | `large` \\| `default` \\| `small` | `default` |  |\n| suffixIcon | 自定义的选择框后缀图标 | string \\| VNode \\| slot | - |  |\n| tagRender | 自定义 tag 内容，多选时生效 | slot | - | 3.0 |\n| value(v-model) | 指定选中项 | string\\[] \\| number\\[] | - |  |\n\n### showSearch\n\n`showSearch` 为对象时，其中的字段：\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| filter | 接收 `inputValue` `path` 两个参数，当 `path` 符合筛选条件时，应返回 true，反之则返回 false。 | `function(inputValue, path): boolean` |  |\n| limit | 搜索结果展示数量 | number \\| false | 50 |\n| matchInputWidth | 搜索结果列表是否与输入框同宽 | boolean |  |\n| render | 用于渲染 filter 后的选项,可使用 #showSearchRender=\"{inputValue, path}\" | `function({inputValue, path}): VNode` |  |\n| sort | 用于排序 filter 后的选项 | `function(a, b, inputValue)` |  |\n\n### 事件\n\n| 事件名称              | 说明                   | 回调参数                           | 版本 |     |\n| --------------------- | ---------------------- | ---------------------------------- | ---- | --- |\n| change                | 选择完成后的回调       | `(value, selectedOptions) => void` | -    |     |\n| dropdownVisibleChange | 显示/隐藏浮层的回调    | `(value) => void`                  | -    | 3.0 |\n| search                | 监听搜索，返回输入的值 | `(value) => void`                  | -    | 3.0 |\n\n### Option\n\n```ts\ninterface Option {\n  value: string | number;\n  label?: any;\n  disabled?: boolean;\n  children?: Option[];\n  // 标记是否为叶子节点，设置了 `loadData` 时有效\n  // 设为 `false` 时会强制标记为父节点，即使当前节点没有 children，也会显示展开图标\n  isLeaf?: boolean;\n}\n```\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n> 注意，如果需要获得中国省市区数据，可以参考 react 组件的实现 [china-division](https://gist.github.com/afc163/7582f35654fd03d5be7009444345ea17)。\n"
  },
  {
    "path": "components/cascader/style/index.ts",
    "content": "import { getStyle as getCheckboxStyle } from '../../checkbox/style';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\nimport { textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\n\nexport interface ComponentToken {\n  controlWidth: number;\n  controlItemWidth: number;\n  dropdownHeight: number;\n}\n\ntype CascaderToken = FullToken<'Cascader'>;\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<CascaderToken> = token => {\n  const { prefixCls, componentCls, antCls } = token;\n  const cascaderMenuItemCls = `${componentCls}-menu-item`;\n  const iconCls = `\n    &${cascaderMenuItemCls}-expand ${cascaderMenuItemCls}-expand-icon,\n    ${cascaderMenuItemCls}-loading-icon\n  `;\n\n  const itemPaddingVertical = Math.round(\n    (token.controlHeight - token.fontSize * token.lineHeight) / 2,\n  );\n\n  return [\n    // =====================================================\n    // ==                     Control                     ==\n    // =====================================================\n    {\n      [componentCls]: {\n        width: token.controlWidth,\n      },\n    },\n    // =====================================================\n    // ==                      Popup                      ==\n    // =====================================================\n    {\n      [`${componentCls}-dropdown`]: [\n        // ==================== Checkbox ====================\n        getCheckboxStyle(`${prefixCls}-checkbox`, token),\n        {\n          [`&${antCls}-select-dropdown`]: {\n            padding: 0,\n          },\n        },\n        {\n          [componentCls]: {\n            // ================== Checkbox ==================\n            '&-checkbox': {\n              top: 0,\n              marginInlineEnd: token.paddingXS,\n            },\n\n            // ==================== Menu ====================\n            // >>> Menus\n            '&-menus': {\n              display: 'flex',\n              flexWrap: 'nowrap',\n              alignItems: 'flex-start',\n\n              [`&${componentCls}-menu-empty`]: {\n                [`${componentCls}-menu`]: {\n                  width: '100%',\n                  height: 'auto',\n\n                  [cascaderMenuItemCls]: {\n                    color: token.colorTextDisabled,\n                  },\n                },\n              },\n            },\n\n            // >>> Menu\n            '&-menu': {\n              flexGrow: 1,\n              minWidth: token.controlItemWidth,\n              height: token.dropdownHeight,\n              margin: 0,\n              padding: token.paddingXXS,\n              overflow: 'auto',\n              verticalAlign: 'top',\n              listStyle: 'none',\n              '-ms-overflow-style': '-ms-autohiding-scrollbar', // https://github.com/ant-design/ant-design/issues/11857\n\n              '&:not(:last-child)': {\n                borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n              },\n\n              '&-item': {\n                ...textEllipsis,\n                display: 'flex',\n                flexWrap: 'nowrap',\n                alignItems: 'center',\n                padding: `${itemPaddingVertical}px ${token.paddingSM}px`,\n                lineHeight: token.lineHeight,\n                cursor: 'pointer',\n                transition: `all ${token.motionDurationMid}`,\n                borderRadius: token.borderRadiusSM,\n\n                '&:hover': {\n                  background: token.controlItemBgHover,\n                },\n                '&-disabled': {\n                  color: token.colorTextDisabled,\n                  cursor: 'not-allowed',\n\n                  '&:hover': {\n                    background: 'transparent',\n                  },\n\n                  [iconCls]: {\n                    color: token.colorTextDisabled,\n                  },\n                },\n\n                [`&-active:not(${cascaderMenuItemCls}-disabled)`]: {\n                  [`&, &:hover`]: {\n                    fontWeight: token.fontWeightStrong,\n                    backgroundColor: token.controlItemBgActive,\n                  },\n                },\n\n                '&-content': {\n                  flex: 'auto',\n                },\n\n                [iconCls]: {\n                  marginInlineStart: token.paddingXXS,\n                  color: token.colorTextDescription,\n                  fontSize: token.fontSizeIcon,\n                },\n\n                '&-keyword': {\n                  color: token.colorHighlight,\n                },\n              },\n            },\n          },\n        },\n      ],\n    },\n    // =====================================================\n    // ==                       RTL                       ==\n    // =====================================================\n    {\n      [`${componentCls}-dropdown-rtl`]: {\n        direction: 'rtl',\n      },\n    },\n    // =====================================================\n    // ==             Space Compact                       ==\n    // =====================================================\n    genCompactItemStyle(token),\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Cascader', token => [genBaseStyle(token)], {\n  controlWidth: 184,\n  controlItemWidth: 111,\n  dropdownHeight: 180,\n});\n"
  },
  {
    "path": "components/checkbox/Checkbox.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport {\n  computed,\n  watchEffect,\n  onMounted,\n  defineComponent,\n  inject,\n  onBeforeUnmount,\n  ref,\n} from 'vue';\nimport classNames from '../_util/classNames';\nimport VcCheckbox from '../vc-checkbox/Checkbox';\nimport { flattenChildren } from '../_util/props-util';\nimport warning from '../_util/warning';\nimport type { EventHandler } from '../_util/EventInterface';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nimport type { CheckboxChangeEvent, CheckboxProps } from './interface';\nimport { CheckboxGroupContextKey, checkboxProps } from './interface';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACheckbox',\n  inheritAttrs: false,\n  __ANT_CHECKBOX: true,\n  props: checkboxProps(),\n  // emits: ['change', 'update:checked'],\n  setup(props, { emit, attrs, slots, expose }) {\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const { prefixCls, direction, disabled } = useConfigInject('checkbox', props);\n\n    const contextDisabled = useInjectDisabled();\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const checkboxGroup = inject(CheckboxGroupContextKey, undefined);\n    const uniId = Symbol('checkboxUniId');\n    const mergedDisabled = computed(() => {\n      return checkboxGroup?.disabled.value || disabled.value;\n    });\n    watchEffect(() => {\n      if (!props.skipGroup && checkboxGroup) {\n        checkboxGroup.registerValue(uniId, props.value);\n      }\n    });\n    onBeforeUnmount(() => {\n      if (checkboxGroup) {\n        checkboxGroup.cancelValue(uniId);\n      }\n    });\n    onMounted(() => {\n      warning(\n        !!(props.checked !== undefined || checkboxGroup || props.value === undefined),\n        'Checkbox',\n        '`value` is not validate prop, do you mean `checked`?',\n      );\n    });\n\n    const handleChange = (event: CheckboxChangeEvent) => {\n      const targetChecked = event.target.checked;\n      emit('update:checked', targetChecked);\n      emit('change', event);\n      formItemContext.onFieldChange();\n    };\n    const checkboxRef = ref();\n    const focus = () => {\n      checkboxRef.value?.focus();\n    };\n    const blur = () => {\n      checkboxRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n    return () => {\n      const children = flattenChildren(slots.default?.());\n      const { indeterminate, skipGroup, id = formItemContext.id.value, ...restProps } = props;\n      const { onMouseenter, onMouseleave, onInput, class: className, style, ...restAttrs } = attrs;\n      const checkboxProps: CheckboxProps = {\n        ...restProps,\n        id,\n        prefixCls: prefixCls.value,\n        ...restAttrs,\n        disabled: mergedDisabled.value,\n      };\n      if (checkboxGroup && !skipGroup) {\n        checkboxProps.onChange = (...args) => {\n          emit('change', ...args);\n          checkboxGroup.toggleOption({ label: children, value: props.value });\n        };\n        checkboxProps.name = checkboxGroup.name.value;\n        checkboxProps.checked = checkboxGroup.mergedValue.value.includes(props.value);\n        checkboxProps.disabled = mergedDisabled.value || contextDisabled.value;\n        checkboxProps.indeterminate = indeterminate;\n      } else {\n        checkboxProps.onChange = handleChange;\n      }\n      const classString = classNames(\n        {\n          [`${prefixCls.value}-wrapper`]: true,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-wrapper-checked`]: checkboxProps.checked,\n          [`${prefixCls.value}-wrapper-disabled`]: checkboxProps.disabled,\n          [`${prefixCls.value}-wrapper-in-form-item`]: formItemInputContext.isFormItemInput,\n        },\n        className,\n        hashId.value,\n      );\n      const checkboxClass = classNames(\n        {\n          [`${prefixCls.value}-indeterminate`]: indeterminate,\n        },\n        hashId.value,\n      );\n      const ariaChecked = indeterminate ? 'mixed' : undefined;\n      return wrapSSR(\n        <label\n          class={classString}\n          style={style as CSSProperties}\n          onMouseenter={onMouseenter as EventHandler}\n          onMouseleave={onMouseleave as EventHandler}\n        >\n          <VcCheckbox\n            aria-checked={ariaChecked}\n            {...checkboxProps}\n            class={checkboxClass}\n            ref={checkboxRef}\n          />\n          {children.length ? <span>{children}</span> : null}\n        </label>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/checkbox/Group.tsx",
    "content": "import { computed, ref, watch, defineComponent, provide } from 'vue';\nimport Checkbox from './Checkbox';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CheckboxOptionType } from './interface';\nimport { CheckboxGroupContextKey, checkboxGroupProps } from './interface';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACheckboxGroup',\n  inheritAttrs: false,\n  props: checkboxGroupProps(),\n  // emits: ['change', 'update:value'],\n  setup(props, { slots, attrs, emit, expose }) {\n    const formItemContext = useInjectFormItemContext();\n    const { prefixCls, direction } = useConfigInject('checkbox', props);\n    const groupPrefixCls = computed(() => `${prefixCls.value}-group`);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(groupPrefixCls);\n\n    const mergedValue = ref((props.value === undefined ? props.defaultValue : props.value) || []);\n    watch(\n      () => props.value,\n      () => {\n        mergedValue.value = props.value || [];\n      },\n    );\n    const options = computed(() => {\n      return props.options.map(option => {\n        if (typeof option === 'string' || typeof option === 'number') {\n          return {\n            label: option,\n            value: option,\n          };\n        }\n        return option;\n      });\n    });\n    const triggerUpdate = ref(Symbol());\n    const registeredValuesMap = ref(new Map<Symbol, string>());\n    const cancelValue = (id: Symbol) => {\n      registeredValuesMap.value.delete(id);\n      triggerUpdate.value = Symbol();\n    };\n    const registerValue = (id: Symbol, value: string) => {\n      registeredValuesMap.value.set(id, value);\n      triggerUpdate.value = Symbol();\n    };\n\n    const registeredValues = ref(new Map());\n    watch(triggerUpdate, () => {\n      const valuseMap = new Map();\n      for (const value of registeredValuesMap.value.values()) {\n        valuseMap.set(value, true);\n      }\n      registeredValues.value = valuseMap;\n    });\n\n    const toggleOption = (option: CheckboxOptionType) => {\n      const optionIndex = mergedValue.value.indexOf(option.value);\n      const value = [...mergedValue.value];\n      if (optionIndex === -1) {\n        value.push(option.value);\n      } else {\n        value.splice(optionIndex, 1);\n      }\n      if (props.value === undefined) {\n        mergedValue.value = value;\n      }\n      const val = value\n        .filter(val => registeredValues.value.has(val))\n        .sort((a, b) => {\n          const indexA = options.value.findIndex(opt => opt.value === a);\n          const indexB = options.value.findIndex(opt => opt.value === b);\n          return indexA - indexB;\n        });\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n    provide(CheckboxGroupContextKey, {\n      cancelValue,\n      registerValue,\n      toggleOption,\n      mergedValue,\n      name: computed(() => props.name),\n      disabled: computed(() => props.disabled),\n    });\n    expose({\n      mergedValue,\n    });\n    return () => {\n      const { id = formItemContext.id.value } = props;\n      let children = null;\n      if (options.value && options.value.length > 0) {\n        children = options.value.map(option => (\n          <Checkbox\n            prefixCls={prefixCls.value}\n            key={option.value.toString()}\n            disabled={'disabled' in option ? option.disabled : props.disabled}\n            indeterminate={option.indeterminate}\n            value={option.value}\n            checked={mergedValue.value.indexOf(option.value) !== -1}\n            onChange={option.onChange}\n            class={`${groupPrefixCls.value}-item`}\n          >\n            {slots.label !== undefined ? slots.label?.(option) : option.label}\n          </Checkbox>\n        ));\n      }\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            groupPrefixCls.value,\n            { [`${groupPrefixCls.value}-rtl`]: direction.value === 'rtl' },\n            attrs.class,\n            hashId.value,\n          ]}\n          id={id}\n        >\n          {children || slots.default?.()}\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/checkbox/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/checkbox/demo/basic.vue correctly 1`] = `<label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Checkbox</span></label>`;\n\nexports[`renders ./components/checkbox/demo/check-all.vue correctly 1`] = `\n<div><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox ant-checkbox-indeterminate\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-checked=\"mixed\"><span class=\"ant-checkbox-inner\"></span></span><span> Check all </span></label></div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Apple\"><span class=\"ant-checkbox-inner\"></span></span><span>Apple</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Pear\"><span class=\"ant-checkbox-inner\"></span></span><span>Pear</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Orange\"><span class=\"ant-checkbox-inner\"></span></span><span>Orange</span></label></div>\n`;\n\nexports[`renders ./components/checkbox/demo/controller.vue correctly 1`] = `\n<p style=\"margin-bottom: 20px;\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Unchecked-Enabled</span></label></p>\n<p><button class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\">\n    <!----><span>Check</span>\n  </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\">\n    <!----><span>Disable</span>\n  </button></p>\n`;\n\nexports[`renders ./components/checkbox/demo/disabled.vue correctly 1`] = `\n<label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n  <!---->\n</label>\n<br>\n<label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-checked ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n  <!---->\n</label>\n`;\n\nexports[`renders ./components/checkbox/demo/group.vue correctly 1`] = `\n<div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input name=\"checkboxgroup\" type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Apple\"><span class=\"ant-checkbox-inner\"></span></span><span>Apple</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input name=\"checkboxgroup\" type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Pear\"><span class=\"ant-checkbox-inner\"></span></span><span>Pear</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input name=\"checkboxgroup\" type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Orange\"><span class=\"ant-checkbox-inner\"></span></span><span>Orange</span></label></div>\n<br>\n<br>\n<div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Apple\"><span class=\"ant-checkbox-inner\"></span></span><span>Apple</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Pear\"><span class=\"ant-checkbox-inner\"></span></span><span>Pear</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Orange\"><span class=\"ant-checkbox-inner\"></span></span><span>Orange</span></label></div>\n<br>\n<br>\n<div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Apple\"><span class=\"ant-checkbox-inner\"></span></span><span>Apple</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Pear\"><span class=\"ant-checkbox-inner\"></span></span><span>Pear</span></label><label class=\"ant-checkbox-wrapper ant-checkbox-group-item\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"Orange\"><span class=\"ant-checkbox-inner\"></span></span><span>Orange</span></label></div>\n<br>\n<br>\n<div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-wrapper-disabled ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-checked ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\" value=\"Apple\"><span class=\"ant-checkbox-inner\"></span></span><span><span style=\"color: red;\">Apple</span></span></label><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\" value=\"Pear\"><span class=\"ant-checkbox-inner\"></span></span><span><span style=\"color: red;\">Pear</span></span></label><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-checkbox-group-item\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\" value=\"Orange\"><span class=\"ant-checkbox-inner\"></span></span><span><span style=\"color: red;\">Orange</span></span></label></div>\n`;\n\nexports[`renders ./components/checkbox/demo/layout.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-checkbox-group\">\n  <div class=\"ant-row\">\n    <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"A\"><span class=\"ant-checkbox-inner\"></span></span><span>A</span></label></div>\n    <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"B\"><span class=\"ant-checkbox-inner\"></span></span><span>B</span></label></div>\n    <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"C\"><span class=\"ant-checkbox-inner\"></span></span><span>C</span></label></div>\n    <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"D\"><span class=\"ant-checkbox-inner\"></span></span><span>D</span></label></div>\n    <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"E\"><span class=\"ant-checkbox-inner\"></span></span><span>E</span></label></div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/checkbox/__tests__/__snapshots__/group.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`CheckboxGroup passes prefixCls down to checkbox 1`] = `<div class=\"my-checkbox-group\"><label class=\"my-checkbox-wrapper my-checkbox-group-item\"><span class=\"my-checkbox\"><input type=\"checkbox\" class=\"my-checkbox-input\" value=\"Apple\"><span class=\"my-checkbox-inner\"></span></span><span>Apple</span></label><label class=\"my-checkbox-wrapper my-checkbox-group-item\"><span class=\"my-checkbox\"><input type=\"checkbox\" class=\"my-checkbox-input\" value=\"Orange\"><span class=\"my-checkbox-inner\"></span></span><span>Orange</span></label></div>`;\n"
  },
  {
    "path": "components/checkbox/__tests__/checkbox.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Checkbox from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport { resetWarned } from '../../_util/warning';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Checkbox', () => {\n  focusTest(Checkbox);\n  mountTest(Checkbox);\n  it('responses hover events', () => {\n    const onMouseEnter = jest.fn();\n    const onMouseLeave = jest.fn();\n\n    const wrapper = mount(Checkbox, {\n      props: {\n        onMouseenter: onMouseEnter,\n        onMouseleave: onMouseLeave,\n      },\n    });\n\n    wrapper.trigger('mouseenter');\n    expect(onMouseEnter).toHaveBeenCalled();\n\n    wrapper.trigger('mouseleave');\n    expect(onMouseLeave).toHaveBeenCalled();\n  });\n  it('warning if set `value`', () => {\n    resetWarned();\n\n    const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount(Checkbox, {\n      props: {\n        value: 'xxx',\n      },\n    });\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Checkbox] `value` is not validate prop, do you mean `checked`?',\n    );\n    errorSpy.mockRestore();\n  });\n});\n"
  },
  {
    "path": "components/checkbox/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('checkbox');\n"
  },
  {
    "path": "components/checkbox/__tests__/group.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport Checkbox from '../index';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('CheckboxGroup', () => {\n  mountTest(Checkbox.Group);\n  it('should work basically', async () => {\n    const onChange = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return <Checkbox.Group options={['Apple', 'Pear', 'Orange']} onChange={onChange} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    wrapper.findAll('.ant-checkbox-input')[0].trigger('change');\n    await sleep();\n    expect(onChange).toHaveBeenCalledWith(['Apple']);\n    wrapper.findAll('.ant-checkbox-input')[1].trigger('change');\n    await sleep();\n    expect(onChange).toHaveBeenCalledWith(['Apple', 'Pear']);\n    wrapper.findAll('.ant-checkbox-input')[2].trigger('change');\n    await sleep();\n    expect(onChange).toHaveBeenCalledWith(['Apple', 'Pear', 'Orange']);\n    wrapper.findAll('.ant-checkbox-input')[1].trigger('change');\n    await sleep();\n    expect(onChange).toHaveBeenCalledWith(['Apple', 'Orange']);\n  });\n\n  it('does not trigger onChange callback of both Checkbox and CheckboxGroup when CheckboxGroup is disabled', () => {\n    const onChangeGroup = jest.fn();\n\n    const options = [\n      { label: 'Apple', value: 'Apple' },\n      { label: 'Pear', value: 'Pear' },\n    ];\n\n    const groupWrapper = mount(\n      {\n        render() {\n          return <Checkbox.Group options={options} onChange={onChangeGroup} disabled />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    groupWrapper.findAll('.ant-checkbox-input')[0].trigger('change');\n    expect(onChangeGroup).not.toBeCalled();\n    groupWrapper.findAll('.ant-checkbox-input')[1].trigger('change');\n    expect(onChangeGroup).not.toBeCalled();\n  });\n\n  it('does not prevent onChange callback from Checkbox when CheckboxGroup is not disabled', () => {\n    const onChangeGroup = jest.fn();\n\n    const options = [\n      { label: 'Apple', value: 'Apple' },\n      { label: 'Orange', value: 'Orange', disabled: true },\n    ];\n\n    const groupWrapper = mount(\n      {\n        render() {\n          return <Checkbox.Group options={options} onChange={onChangeGroup} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    groupWrapper.findAll('.ant-checkbox-input')[0].trigger('change');\n    expect(onChangeGroup).toHaveBeenCalledWith(['Apple']);\n    groupWrapper.findAll('.ant-checkbox-input')[1].trigger('change');\n    expect(onChangeGroup).toHaveBeenCalledWith(['Apple']);\n  });\n\n  it('passes prefixCls down to checkbox', () => {\n    const options = [\n      { label: 'Apple', value: 'Apple' },\n      { label: 'Orange', value: 'Orange' },\n    ];\n\n    const wrapper = mount({\n      render() {\n        return <Checkbox.Group prefixCls=\"my-checkbox\" options={options} />;\n      },\n    });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  it('should be controlled by value', async () => {\n    const options = [\n      { label: 'Apple', value: 'Apple' },\n      { label: 'Orange', value: 'Orange' },\n    ];\n\n    const wrapper = mount(Checkbox.Group, {\n      props: { options },\n      sync: false,\n    });\n    expect(wrapper.vm.mergedValue).toEqual([]);\n    wrapper.setProps({ value: ['Apple'] });\n    await asyncExpect(() => {\n      expect(wrapper.vm.mergedValue).toEqual(['Apple']);\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/12642\n  it('should trigger onChange in sub Checkbox', () => {\n    const onChange = jest.fn();\n    const wrapper = mount({\n      render() {\n        return (\n          <Checkbox.Group>\n            <Checkbox value=\"my\" onChange={onChange} />\n          </Checkbox.Group>\n        );\n      },\n    });\n    wrapper.findAll('.ant-checkbox-input')[0].trigger('change');\n    expect(onChange).toBeCalled();\n    expect(onChange.mock.calls[0][0].target.value).toEqual('my');\n  });\n});\n"
  },
  {
    "path": "components/checkbox/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic\n---\n\n## zh-CN\n\n简单的 checkbox\n\n## en-US\n\nBasic usage of checkbox\n\n</docs>\n\n<template>\n  <a-checkbox v-model:checked=\"checked\">Checkbox</a-checkbox>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst checked = ref(false);\n</script>\n"
  },
  {
    "path": "components/checkbox/demo/check-all.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 全选\n  en-US: Check all\n---\n\n## zh-CN\n\n在实现全选效果时，你可能会用到 `indeterminate` 属性\n\n## en-US\n\nThe `indeterminate` property can help you to achieve a 'check all' effect.\n\n</docs>\n\n<template>\n  <div>\n    <a-checkbox\n      v-model:checked=\"state.checkAll\"\n      :indeterminate=\"state.indeterminate\"\n      @change=\"onCheckAllChange\"\n    >\n      Check all\n    </a-checkbox>\n  </div>\n  <a-divider />\n  <a-checkbox-group v-model:value=\"state.checkedList\" :options=\"plainOptions\" />\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, watch } from 'vue';\nconst plainOptions = ['Apple', 'Pear', 'Orange'];\nconst state = reactive({\n  indeterminate: true,\n  checkAll: false,\n  checkedList: ['Apple', 'Orange'],\n});\n\nconst onCheckAllChange = (e: any) => {\n  Object.assign(state, {\n    checkedList: e.target.checked ? plainOptions : [],\n    indeterminate: false,\n  });\n};\nwatch(\n  () => state.checkedList,\n  val => {\n    state.indeterminate = !!val.length && val.length < plainOptions.length;\n    state.checkAll = val.length === plainOptions.length;\n  },\n);\n</script>\n"
  },
  {
    "path": "components/checkbox/demo/controller.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 受控的 checkbox\n  en-US: Controlled Checkbox\n---\n\n## zh-CN\n\n联动checkbox\n\n## en-US\n\nCommunicated with other components\n\n</docs>\n\n<template>\n  <p :style=\"{ marginBottom: '20px' }\">\n    <a-checkbox v-model:checked=\"checked\" :disabled=\"disabled\">\n      {{ label }}\n    </a-checkbox>\n  </p>\n  <p>\n    <a-button type=\"primary\" size=\"small\" @click=\"toggleChecked\">\n      {{ !checked ? 'Check' : 'Uncheck' }}\n    </a-button>\n    <a-button :style=\"{ marginLeft: '10px' }\" type=\"primary\" size=\"small\" @click=\"toggleDisable\">\n      {{ !disabled ? 'Disable' : 'Enable' }}\n    </a-button>\n  </p>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\n\nconst checked = ref(false);\nconst disabled = ref(false);\n\nconst toggleChecked = () => {\n  checked.value = !checked.value;\n};\n\nconst toggleDisable = () => {\n  disabled.value = !disabled.value;\n};\n\nconst label = computed(() => {\n  return `${checked.value ? 'Checked' : 'Unchecked'}-${disabled.value ? 'Disabled' : 'Enabled'}`;\n});\n</script>\n"
  },
  {
    "path": "components/checkbox/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 不可用\n  en-US: Disabled\n---\n\n## zh-CN\n\ncheckbox 不可用\n\n## en-US\n\nDisabled checkbox\n\n</docs>\n\n<template>\n  <a-checkbox v-model:checked=\"state.checked1\" disabled />\n  <br />\n  <a-checkbox v-model:checked=\"state.checked2\" disabled />\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst state = reactive({\n  checked1: false,\n  checked2: true,\n});\n</script>\n"
  },
  {
    "path": "components/checkbox/demo/group.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: Checkbox 组\n  en-US: Checkbox group\n---\n\n## zh-CN\n\n方便的从数组生成 checkbox\n\n## en-US\n\nGenerate a group of checkboxes from an array\n\n</docs>\n\n<template>\n  <a-checkbox-group v-model:value=\"state.value1\" name=\"checkboxgroup\" :options=\"plainOptions\" />\n  <br />\n  <br />\n  <a-checkbox-group v-model:value=\"state.value2\" :options=\"plainOptions\" />\n  <br />\n  <br />\n  <a-checkbox-group v-model:value=\"state.value3\" :options=\"options\" />\n  <br />\n  <br />\n  <a-checkbox-group v-model:value=\"state.value4\" :options=\"optionsWithDisabled\" disabled>\n    <template #label=\"{ label }\">\n      <span style=\"color: red\">{{ label }}</span>\n    </template>\n  </a-checkbox-group>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\n\nconst plainOptions = ['Apple', 'Pear', 'Orange'];\nconst options = [\n  { label: 'Apple', value: 'Apple' },\n  { label: 'Pear', value: 'Pear' },\n  { label: 'Orange', value: 'Orange' },\n];\nconst optionsWithDisabled = [\n  { label: 'Apple', value: 'Apple' },\n  { label: 'Pear', value: 'Pear' },\n  { label: 'Orange', value: 'Orange', disabled: false },\n];\nconst state = reactive({\n  value1: [],\n  value2: ['Apple'],\n  value3: ['Pear'],\n  value4: ['Apple'],\n});\n</script>\n"
  },
  {
    "path": "components/checkbox/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <check-all />\n    <controller />\n    <disabled />\n    <group />\n    <layout />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport CheckAll from './check-all.vue';\nimport Controller from './controller.vue';\nimport Disabled from './disabled.vue';\nimport Group from './group.vue';\nimport Layout from './layout.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    CheckAll,\n    Controller,\n    Disabled,\n    Group,\n    Layout,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style scoped>\n[id^='components-button-demo-'] .ant-btn {\n  margin-right: 8px;\n  margin-bottom: 12px;\n}\n[id^='components-button-demo-'] .ant-btn-rtl {\n  margin-right: 0;\n  margin-left: 8px;\n}\n[id^='components-button-demo-'] .ant-btn-group > .ant-btn,\n[id^='components-button-demo-'] .ant-btn-group > span > .ant-btn {\n  margin-right: 0;\n}\n[data-theme='dark'] .site-button-ghost-wrapper {\n  background: rgba(255, 255, 255, 0.2);\n}\n</style>\n"
  },
  {
    "path": "components/checkbox/demo/layout.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 布局\n  en-US: Use with grid\n---\n\n## zh-CN\n\nCheckbox.Group 内嵌 Checkbox 并与 Grid 组件一起使用，可以实现灵活的布局\n\n## en-US\n\nWe can use Checkbox and Grid Checkbox.group, to implement complex layout\n\n</docs>\n\n<template>\n  <a-checkbox-group v-model:value=\"value\" style=\"width: 100%\">\n    <a-row>\n      <a-col :span=\"8\">\n        <a-checkbox value=\"A\">A</a-checkbox>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-checkbox value=\"B\">B</a-checkbox>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-checkbox value=\"C\">C</a-checkbox>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-checkbox value=\"D\">D</a-checkbox>\n      </a-col>\n      <a-col :span=\"8\">\n        <a-checkbox value=\"E\">E</a-checkbox>\n      </a-col>\n    </a-row>\n  </a-checkbox-group>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref([]);\n</script>\n"
  },
  {
    "path": "components/checkbox/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Checkbox\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DzgiRbW3khIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*G3MjTYXL6AIAAAAAAAAAAAAADrJ8AQ/original\n---\n\nCheckbox component.\n\n## When To Use\n\n- Used for selecting multiple values from several options.\n- If you use only one checkbox, it is the same as using Switch to toggle between two states. The difference is that Switch will trigger the state change directly, but Checkbox just marks the state as changed and this needs to be submitted.\n\n## API\n\n### Props\n\n#### Checkbox\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autofocus | get focus when component mounted | boolean | false |  |\n| checked(v-model) | Specifies whether the checkbox is selected. | boolean | false |  |\n| disabled | Disable checkbox | boolean | false |  |\n| indeterminate | indeterminate checked state of checkbox | boolean | false |  |\n| value | value of checkbox in CheckboxGroup | boolean \\| string \\| number | - |  |\n\n#### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| change | The callback function that is triggered when the state changes. | Function(e:Event) |  |\n\n#### Checkbox Group\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| disabled | Disable all checkboxes | boolean | false |  |\n| name | The `name` property of all `input[type=\"checkbox\"]` children | string | - | 1.5.0 |\n| options | Specifies options, you can customize `label` with slot = \"label\" slot-scope=\"option\" | string\\[] \\| Array&lt;{ label: string value: string disabled?: boolean, indeterminate?: boolean, onChange?: function }> | \\[] |  |\n| value(v-model) | Used for setting the currently selected value. | (boolean \\| string \\| number)\\[] | \\[] |  |\n\n#### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| change | The callback function that is triggered when the state changes. | Function(checkedValue) |  |\n\n### Methods\n\n#### Checkbox\n\n| Name    | Description  | Version |\n| ------- | ------------ | ------- |\n| blur()  | remove focus |         |\n| focus() | get focus    |         |\n"
  },
  {
    "path": "components/checkbox/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Checkbox from './Checkbox';\nimport CheckboxGroup from './Group';\nexport type { CheckboxProps, CheckboxGroupProps, CheckboxOptionType } from './interface';\nexport { checkboxProps, checkboxGroupProps } from './interface';\n\nCheckbox.Group = CheckboxGroup;\n\n/* istanbul ignore next */\nCheckbox.install = function (app: App) {\n  app.component(Checkbox.name, Checkbox);\n  app.component(CheckboxGroup.name, CheckboxGroup);\n  return app;\n};\nexport { CheckboxGroup };\nexport default Checkbox as typeof Checkbox &\n  Plugin & {\n    readonly Group: typeof CheckboxGroup;\n  };\n"
  },
  {
    "path": "components/checkbox/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 多选框\ntype: 数据录入\ntitle: Checkbox\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DzgiRbW3khIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*G3MjTYXL6AIAAAAAAAAAAAAADrJ8AQ/original\n---\n\n多选框。\n\n## 何时使用\n\n- 在一组可选项中进行多项选择时；\n- 单独使用可以表示两种状态之间的切换，和 `switch` 类似。区别在于切换 `switch` 会直接触发状态改变，而 `checkbox` 一般用于状态标记，需要和提交操作配合。\n\n## API\n\n### 属性\n\n#### Checkbox\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| checked(v-model) | 指定当前是否选中 | boolean | false |  |\n| disabled | 失效状态 | boolean | false |  |\n| indeterminate | 设置 indeterminate 状态，只负责样式控制 | boolean | false |  |\n| value | 与 CheckboxGroup 组合使用时的值 | boolean \\| string \\| number | - |  |\n\n#### 事件\n\n| 事件名称 | 说明           | 回调参数          | 版本 |     |\n| -------- | -------------- | ----------------- | ---- | --- |\n| change   | 变化时回调函数 | Function(e:Event) | -    |     |\n\n#### Checkbox Group\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| disabled | 整组失效 | boolean | false |  |\n| name | CheckboxGroup 下所有 `input[type=\"checkbox\"]` 的 `name` 属性 | string | - | 1.5.0 |\n| options | 指定可选项，可以通过 slot=\"label\" slot-scope=\"option\" 定制`label` | string\\[] \\| Array&lt;{ label: string value: string disabled?: boolean, indeterminate?: boolean, onChange?: function }> | \\[] |  |\n| value(v-model) | 指定选中的选项 | (boolean \\| string \\| number)\\[] | \\[] |  |\n\n#### 事件\n\n| 事件名称 | 说明           | 回调参数               | 版本 |     |\n| -------- | -------------- | ---------------------- | ---- | --- |\n| change   | 变化时回调函数 | Function(checkedValue) | -    |     |\n\n### 方法\n\n#### Checkbox\n\n| 名称    | 描述     | 版本 |\n| ------- | -------- | ---- |\n| blur()  | 移除焦点 |      |\n| focus() | 获取焦点 |      |\n"
  },
  {
    "path": "components/checkbox/interface.ts",
    "content": "import type { ExtractPropTypes, InjectionKey, Ref } from 'vue';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport type { VueNode } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\nimport { booleanType, functionType, stringType, arrayType } from '../_util/type';\n\nexport type CheckboxValueType = string | number | boolean;\nexport interface CheckboxOptionType {\n  label?: VueNode;\n  value: CheckboxValueType;\n  disabled?: boolean;\n  indeterminate?: boolean;\n  onChange?: (e: CheckboxChangeEvent) => void;\n}\n\nexport interface CheckboxChangeEvent {\n  target: CheckboxChangeEventTarget;\n  stopPropagation: () => void;\n  preventDefault: () => void;\n  nativeEvent: MouseEvent;\n}\n\nexport interface CheckboxChangeEventTarget extends CheckboxProps {\n  checked: boolean;\n}\n\nexport const abstractCheckboxGroupProps = () => {\n  return {\n    name: String,\n    prefixCls: String,\n    options: arrayType<Array<CheckboxOptionType | string | number>>(\n      [] as Array<CheckboxOptionType | string | number>,\n    ),\n    disabled: Boolean,\n    id: String,\n  };\n};\n\nexport const checkboxGroupProps = () => {\n  return {\n    ...abstractCheckboxGroupProps(),\n    defaultValue: arrayType<Array<CheckboxValueType>>(),\n    value: arrayType<Array<CheckboxValueType>>(),\n    onChange: functionType<(checkedValue: Array<CheckboxValueType>) => void>(),\n    'onUpdate:value': functionType<(checkedValue: Array<CheckboxValueType>) => void>(),\n  };\n};\n\nexport type CheckboxGroupProps = Partial<ExtractPropTypes<ReturnType<typeof checkboxGroupProps>>>;\n\nexport const abstractCheckboxProps = () => {\n  return {\n    prefixCls: String,\n    defaultChecked: booleanType(),\n    checked: booleanType(),\n    disabled: booleanType(),\n    isGroup: booleanType(),\n    value: PropTypes.any,\n    name: String,\n    id: String,\n    indeterminate: booleanType(),\n    type: stringType('checkbox'),\n    autofocus: booleanType(),\n    onChange: functionType<(e: CheckboxChangeEvent) => void>(),\n    'onUpdate:checked': functionType<(checked: boolean) => void>(),\n    onClick: functionType<MouseEventHandler>(),\n    skipGroup: booleanType(false),\n  };\n};\n\nexport const checkboxProps = () => {\n  return {\n    ...abstractCheckboxProps(),\n    indeterminate: booleanType(false),\n  };\n};\n\nexport type CheckboxProps = Partial<ExtractPropTypes<ReturnType<typeof checkboxProps>>>;\n\nexport type CheckboxGroupContext = {\n  cancelValue: (id: Symbol) => void;\n  registerValue: (id: Symbol, value: string) => void;\n  toggleOption: (option: CheckboxOptionType) => void;\n  name: Ref<string>;\n  disabled: Ref<boolean>;\n  mergedValue: Ref<CheckboxValueType[]>;\n};\nexport const CheckboxGroupContextKey: InjectionKey<CheckboxGroupContext> =\n  Symbol('CheckboxGroupContext');\n"
  },
  {
    "path": "components/checkbox/style/index.ts",
    "content": "import { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusOutline, resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface CheckboxToken extends FullToken<'Checkbox'> {\n  checkboxCls: string;\n  checkboxSize: number;\n}\n\n// ============================== Motion ==============================\nconst antCheckboxEffect = new Keyframes('antCheckboxEffect', {\n  '0%': {\n    transform: 'scale(1)',\n    opacity: 0.5,\n  },\n\n  '100%': {\n    transform: 'scale(1.6)',\n    opacity: 0,\n  },\n});\n\n// ============================== Styles ==============================\nexport const genCheckboxStyle: GenerateStyle<CheckboxToken> = token => {\n  const { checkboxCls } = token;\n  const wrapperCls = `${checkboxCls}-wrapper`;\n\n  return [\n    // ===================== Basic =====================\n    {\n      // Group\n      [`${checkboxCls}-group`]: {\n        ...resetComponent(token),\n\n        display: 'inline-flex',\n        flexWrap: 'wrap',\n        columnGap: token.marginXS,\n\n        // Group > Grid\n        [`> ${token.antCls}-row`]: {\n          flex: 1,\n        },\n      },\n\n      // Wrapper\n      [wrapperCls]: {\n        ...resetComponent(token),\n\n        display: 'inline-flex',\n        alignItems: 'baseline',\n        cursor: 'pointer',\n\n        // Fix checkbox & radio in flex align #30260\n        '&:after': {\n          display: 'inline-block',\n          width: 0,\n          overflow: 'hidden',\n          content: \"'\\\\a0'\",\n        },\n\n        // Checkbox near checkbox\n        [`& + ${wrapperCls}`]: {\n          marginInlineStart: 0,\n        },\n\n        [`&${wrapperCls}-in-form-item`]: {\n          'input[type=\"checkbox\"]': {\n            width: 14, // FIXME: magic\n            height: 14, // FIXME: magic\n          },\n        },\n      },\n\n      // Wrapper > Checkbox\n      [checkboxCls]: {\n        ...resetComponent(token),\n\n        position: 'relative',\n        whiteSpace: 'nowrap',\n        lineHeight: 1,\n        cursor: 'pointer',\n\n        // To make alignment right when `controlHeight` is changed\n        // Ref: https://github.com/ant-design/ant-design/issues/41564\n        alignSelf: 'center',\n\n        // Wrapper > Checkbox > input\n        [`${checkboxCls}-input`]: {\n          position: 'absolute',\n          // Since baseline align will get additional space offset,\n          // we need to move input to top to make it align with text.\n          // Ref: https://github.com/ant-design/ant-design/issues/38926#issuecomment-1486137799\n          inset: 0,\n          zIndex: 1,\n          cursor: 'pointer',\n          opacity: 0,\n          margin: 0,\n\n          [`&:focus-visible + ${checkboxCls}-inner`]: {\n            ...genFocusOutline(token),\n          },\n        },\n\n        // Wrapper > Checkbox > inner\n        [`${checkboxCls}-inner`]: {\n          boxSizing: 'border-box',\n          position: 'relative',\n          top: 0,\n          insetInlineStart: 0,\n          display: 'block',\n          width: token.checkboxSize,\n          height: token.checkboxSize,\n          direction: 'ltr',\n          backgroundColor: token.colorBgContainer,\n          border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n          borderRadius: token.borderRadiusSM,\n          borderCollapse: 'separate',\n          transition: `all ${token.motionDurationSlow}`,\n\n          '&:after': {\n            boxSizing: 'border-box',\n            position: 'absolute',\n            top: '50%',\n            insetInlineStart: '21.5%',\n            display: 'table',\n            width: (token.checkboxSize / 14) * 5,\n            height: (token.checkboxSize / 14) * 8,\n            border: `${token.lineWidthBold}px solid ${token.colorWhite}`,\n            borderTop: 0,\n            borderInlineStart: 0,\n            transform: 'rotate(45deg) scale(0) translate(-50%,-50%)',\n            opacity: 0,\n            content: '\"\"',\n            transition: `all ${token.motionDurationFast} ${token.motionEaseInBack}, opacity ${token.motionDurationFast}`,\n          },\n        },\n\n        // Wrapper > Checkbox + Text\n        '& + span': {\n          paddingInlineStart: token.paddingXS,\n          paddingInlineEnd: token.paddingXS,\n        },\n      },\n    },\n\n    // ================= Indeterminate =================\n    {\n      [checkboxCls]: {\n        '&-indeterminate': {\n          // Wrapper > Checkbox > inner\n          [`${checkboxCls}-inner`]: {\n            '&:after': {\n              top: '50%',\n              insetInlineStart: '50%',\n              width: token.fontSizeLG / 2,\n              height: token.fontSizeLG / 2,\n              backgroundColor: token.colorPrimary,\n              border: 0,\n              transform: 'translate(-50%, -50%) scale(1)',\n              opacity: 1,\n              content: '\"\"',\n            },\n          },\n        },\n      },\n    },\n\n    // ===================== Hover =====================\n    {\n      // Wrapper\n      [`${wrapperCls}:hover ${checkboxCls}:after`]: {\n        visibility: 'visible',\n      },\n\n      // Wrapper & Wrapper > Checkbox\n\n      [`\n        ${wrapperCls}:not(${wrapperCls}-disabled),\n        ${checkboxCls}:not(${checkboxCls}-disabled)\n      `]: {\n        [`&:hover ${checkboxCls}-inner`]: {\n          borderColor: token.colorPrimary,\n        },\n      },\n\n      [`${wrapperCls}:not(${wrapperCls}-disabled)`]: {\n        [`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled) ${checkboxCls}-inner`]: {\n          backgroundColor: token.colorPrimaryHover,\n          borderColor: 'transparent',\n        },\n        [`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled):after`]: {\n          borderColor: token.colorPrimaryHover,\n        },\n      },\n    },\n\n    // ==================== Checked ====================\n    {\n      // Wrapper > Checkbox\n      [`${checkboxCls}-checked`]: {\n        [`${checkboxCls}-inner`]: {\n          backgroundColor: token.colorPrimary,\n          borderColor: token.colorPrimary,\n\n          '&:after': {\n            opacity: 1,\n            transform: 'rotate(45deg) scale(1) translate(-50%,-50%)',\n            transition: `all ${token.motionDurationMid} ${token.motionEaseOutBack} ${token.motionDurationFast}`,\n          },\n        },\n\n        // Checked Effect\n        '&:after': {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          width: '100%',\n          height: '100%',\n          borderRadius: token.borderRadiusSM,\n          visibility: 'hidden',\n          border: `${token.lineWidthBold}px solid ${token.colorPrimary}`,\n          animationName: antCheckboxEffect,\n          animationDuration: token.motionDurationSlow,\n          animationTimingFunction: 'ease-in-out',\n          animationFillMode: 'backwards',\n          content: '\"\"',\n          transition: `all ${token.motionDurationSlow}`,\n        },\n      },\n\n      [`\n        ${wrapperCls}-checked:not(${wrapperCls}-disabled),\n        ${checkboxCls}-checked:not(${checkboxCls}-disabled)\n      `]: {\n        [`&:hover ${checkboxCls}-inner`]: {\n          backgroundColor: token.colorPrimaryHover,\n          borderColor: 'transparent',\n        },\n        [`&:hover ${checkboxCls}:after`]: {\n          borderColor: token.colorPrimaryHover,\n        },\n      },\n    },\n\n    // ==================== Disable ====================\n    {\n      // Wrapper\n      [`${wrapperCls}-disabled`]: {\n        cursor: 'not-allowed',\n      },\n\n      // Wrapper > Checkbox\n      [`${checkboxCls}-disabled`]: {\n        // Wrapper > Checkbox > input\n        [`&, ${checkboxCls}-input`]: {\n          cursor: 'not-allowed',\n          // Disabled for native input to enable Tooltip event handler\n          // ref: https://github.com/ant-design/ant-design/issues/39822#issuecomment-1365075901\n          pointerEvents: 'none',\n        },\n\n        // Wrapper > Checkbox > inner\n        [`${checkboxCls}-inner`]: {\n          background: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n\n          '&:after': {\n            borderColor: token.colorTextDisabled,\n          },\n        },\n\n        '&:after': {\n          display: 'none',\n        },\n\n        '& + span': {\n          color: token.colorTextDisabled,\n        },\n\n        [`&${checkboxCls}-indeterminate ${checkboxCls}-inner::after`]: {\n          background: token.colorTextDisabled,\n        },\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport function getStyle(prefixCls: string, token: FullToken<'Checkbox'>) {\n  const checkboxToken: CheckboxToken = mergeToken<CheckboxToken>(token, {\n    checkboxCls: `.${prefixCls}`,\n    checkboxSize: token.controlInteractiveSize,\n  });\n\n  return [genCheckboxStyle(checkboxToken)];\n}\n\nexport default genComponentStyleHook('Checkbox', (token, { prefixCls }) => [\n  getStyle(prefixCls, token),\n]);\n"
  },
  {
    "path": "components/col/index.ts",
    "content": "import { Col } from '../grid';\nimport { withInstall } from '../_util/type';\nexport type { ColProps, ColSize } from '../grid';\nexport default withInstall(Col);\n"
  },
  {
    "path": "components/col/style/index.ts",
    "content": "// Compatible for babel-plugin-import\n\n/* istanbul ignore next */\nexport default {};\n"
  },
  {
    "path": "components/collapse/Collapse.tsx",
    "content": "import {\n  isEmptyElement,\n  initDefaultProps,\n  flattenChildren,\n  isValidElement,\n} from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport type { CollapsibleType } from './commonProps';\nimport { collapseProps } from './commonProps';\nimport { getDataAndAriaProps } from '../_util/util';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { computed, defineComponent, ref, watch } from 'vue';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport firstNotUndefined from '../_util/firstNotUndefined';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CollapsePanelProps } from './CollapsePanel';\nimport collapseMotion from '../_util/collapseMotion';\nimport type { CustomSlotsType } from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\n\ntype Key = number | string;\n\nfunction getActiveKeysArray(activeKey: Key | Key[]) {\n  let currentActiveKey = activeKey;\n  if (!Array.isArray(currentActiveKey)) {\n    const activeKeyType = typeof currentActiveKey;\n    currentActiveKey =\n      activeKeyType === 'number' || activeKeyType === 'string' ? [currentActiveKey] : [];\n  }\n  return currentActiveKey.map(key => String(key));\n}\nexport { collapseProps };\nexport type CollapseProps = Partial<ExtractPropTypes<ReturnType<typeof collapseProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACollapse',\n  inheritAttrs: false,\n  props: initDefaultProps(collapseProps(), {\n    accordion: false,\n    destroyInactivePanel: false,\n    bordered: true,\n    expandIconPosition: 'start',\n  }),\n  slots: Object as CustomSlotsType<{\n    default?: any;\n    expandIcon?: CollapsePanelProps;\n  }>,\n  setup(props, { attrs, slots, emit }) {\n    const stateActiveKey = ref<Key[]>(\n      getActiveKeysArray(firstNotUndefined([props.activeKey, props.defaultActiveKey])),\n    );\n\n    watch(\n      () => props.activeKey,\n      () => {\n        stateActiveKey.value = getActiveKeysArray(props.activeKey);\n      },\n      { deep: true },\n    );\n    const { prefixCls, direction, rootPrefixCls } = useConfigInject('collapse', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const iconPosition = computed(() => {\n      const { expandIconPosition } = props;\n      if (expandIconPosition !== undefined) {\n        return expandIconPosition;\n      }\n      return direction.value === 'rtl' ? 'end' : 'start';\n    });\n\n    const renderExpandIcon = (panelProps: CollapsePanelProps) => {\n      const { expandIcon = slots.expandIcon } = props;\n      const icon = expandIcon ? (\n        expandIcon(panelProps)\n      ) : (\n        <RightOutlined rotate={panelProps.isActive ? 90 : undefined} />\n      );\n\n      return (\n        <div\n          class={[`${prefixCls.value}-expand-icon`, hashId.value]}\n          onClick={() =>\n            ['header', 'icon'].includes(props.collapsible) && onClickItem(panelProps.panelKey)\n          }\n        >\n          {isValidElement(Array.isArray(expandIcon) ? icon[0] : icon)\n            ? cloneElement(\n                icon,\n                {\n                  class: `${prefixCls.value}-arrow`,\n                },\n                false,\n              )\n            : icon}\n        </div>\n      );\n    };\n    const setActiveKey = (activeKey: Key[]) => {\n      if (props.activeKey === undefined) {\n        stateActiveKey.value = activeKey;\n      }\n      const newKey = props.accordion ? activeKey[0] : activeKey;\n      emit('update:activeKey', newKey);\n      emit('change', newKey);\n    };\n    const onClickItem = (key: Key) => {\n      let activeKey = stateActiveKey.value;\n      if (props.accordion) {\n        activeKey = activeKey[0] === key ? [] : [key];\n      } else {\n        activeKey = [...activeKey];\n        const index = activeKey.indexOf(key);\n        const isActive = index > -1;\n        if (isActive) {\n          // remove active state\n          activeKey.splice(index, 1);\n        } else {\n          activeKey.push(key);\n        }\n      }\n      setActiveKey(activeKey);\n    };\n\n    const getNewChild = (child, index) => {\n      if (isEmptyElement(child)) return;\n      const activeKey = stateActiveKey.value;\n      const { accordion, destroyInactivePanel, collapsible, openAnimation } = props;\n      const animation = openAnimation || collapseMotion(`${rootPrefixCls.value}-motion-collapse`);\n\n      // If there is no key provide, use the panel order as default key\n      const key = String(child.key ?? index);\n      const {\n        header = child.children?.header?.(),\n        headerClass,\n        collapsible: childCollapsible,\n        disabled,\n      } = child.props || {};\n      let isActive = false;\n\n      if (accordion) {\n        isActive = activeKey[0] === key;\n      } else {\n        isActive = activeKey.indexOf(key) > -1;\n      }\n\n      let mergeCollapsible: CollapsibleType = childCollapsible ?? collapsible;\n      // legacy 2.x\n      if (disabled || disabled === '') {\n        mergeCollapsible = 'disabled';\n      }\n      const newProps = {\n        key,\n        panelKey: key,\n        header,\n        headerClass,\n        isActive,\n        prefixCls: prefixCls.value,\n        destroyInactivePanel,\n        openAnimation: animation,\n        accordion,\n        onItemClick: mergeCollapsible === 'disabled' ? null : onClickItem,\n        expandIcon: renderExpandIcon,\n        collapsible: mergeCollapsible,\n      };\n\n      return cloneElement(child, newProps);\n    };\n\n    const getItems = () => {\n      return flattenChildren(slots.default?.()).map(getNewChild);\n    };\n\n    return () => {\n      const { accordion, bordered, ghost } = props;\n      const collapseClassName = classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-borderless`]: !bordered,\n          [`${prefixCls.value}-icon-position-${iconPosition.value}`]: true,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-ghost`]: !!ghost,\n          [attrs.class as string]: !!attrs.class,\n        },\n        hashId.value,\n      );\n      return wrapSSR(\n        <div\n          class={collapseClassName}\n          {...getDataAndAriaProps(attrs)}\n          style={attrs.style as CSSProperties}\n          role={accordion ? 'tablist' : null}\n        >\n          {getItems()}\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/collapse/CollapsePanel.tsx",
    "content": "import PanelContent from './PanelContent';\nimport { initDefaultProps } from '../_util/props-util';\nimport { collapsePanelProps } from './commonProps';\nimport type { ExtractPropTypes } from 'vue';\nimport { defineComponent, Transition } from 'vue';\nimport classNames from '../_util/classNames';\nimport devWarning from '../vc-util/devWarning';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CustomSlotsType } from '../_util/type';\nexport { collapsePanelProps };\nexport type CollapsePanelProps = Partial<ExtractPropTypes<ReturnType<typeof collapsePanelProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACollapsePanel',\n  inheritAttrs: false,\n  props: initDefaultProps(collapsePanelProps(), {\n    showArrow: true,\n    isActive: false,\n    onItemClick() {},\n    headerClass: '',\n    forceRender: false,\n  }),\n  slots: Object as CustomSlotsType<{\n    expandIcon?: any;\n    extra?: any;\n    header?: any;\n    default?: any;\n  }>,\n\n  // emits: ['itemClick'],\n  setup(props, { slots, emit, attrs }) {\n    devWarning(\n      props.disabled === undefined,\n      'Collapse.Panel',\n      '`disabled` is deprecated. Please use `collapsible=\"disabled\"` instead.',\n    );\n    const { prefixCls } = useConfigInject('collapse', props);\n    const handleItemClick = () => {\n      emit('itemClick', props.panelKey);\n    };\n    const handleKeyPress = (e: KeyboardEvent) => {\n      if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n        handleItemClick();\n      }\n    };\n    return () => {\n      const {\n        header = slots.header?.(),\n        headerClass,\n        isActive,\n        showArrow,\n        destroyInactivePanel,\n        accordion,\n        forceRender,\n        openAnimation,\n        expandIcon = slots.expandIcon,\n        extra = slots.extra?.(),\n        collapsible,\n      } = props;\n      const disabled = collapsible === 'disabled';\n      const prefixClsValue = prefixCls.value;\n      const headerCls = classNames(`${prefixClsValue}-header`, {\n        [headerClass]: headerClass,\n        [`${prefixClsValue}-header-collapsible-only`]: collapsible === 'header',\n        [`${prefixClsValue}-icon-collapsible-only`]: collapsible === 'icon',\n      });\n      const itemCls = classNames({\n        [`${prefixClsValue}-item`]: true,\n        [`${prefixClsValue}-item-active`]: isActive,\n        [`${prefixClsValue}-item-disabled`]: disabled,\n        [`${prefixClsValue}-no-arrow`]: !showArrow,\n        [`${attrs.class}`]: !!attrs.class,\n      });\n\n      let icon = <i class=\"arrow\" />;\n      if (showArrow && typeof expandIcon === 'function') {\n        icon = expandIcon(props);\n      }\n\n      const panelContent = (\n        <PanelContent\n          v-show={isActive}\n          prefixCls={prefixClsValue}\n          isActive={isActive}\n          forceRender={forceRender}\n          role={accordion ? 'tabpanel' : null}\n          v-slots={{ default: slots.default }}\n        ></PanelContent>\n      );\n      const transitionProps = {\n        appear: false,\n        css: false,\n        ...openAnimation,\n      };\n\n      return (\n        <div {...attrs} class={itemCls}>\n          <div\n            class={headerCls}\n            onClick={() => !['header', 'icon'].includes(collapsible) && handleItemClick()}\n            role={accordion ? 'tab' : 'button'}\n            tabindex={disabled ? -1 : 0}\n            aria-expanded={isActive}\n            onKeypress={handleKeyPress}\n          >\n            {showArrow && icon}\n            <span\n              onClick={() => collapsible === 'header' && handleItemClick()}\n              class={`${prefixClsValue}-header-text`}\n            >\n              {header}\n            </span>\n            {extra && <div class={`${prefixClsValue}-extra`}>{extra}</div>}\n          </div>\n          <Transition {...transitionProps}>\n            {!destroyInactivePanel || isActive ? panelContent : null}\n          </Transition>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/collapse/PanelContent.tsx",
    "content": "import { defineComponent, shallowRef, watchEffect } from 'vue';\nimport { collapsePanelProps } from './commonProps';\nimport classNames from '../_util/classNames';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PanelContent',\n  props: collapsePanelProps(),\n  setup(props, { slots }) {\n    const rendered = shallowRef(false);\n\n    watchEffect(() => {\n      if (props.isActive || props.forceRender) {\n        rendered.value = true;\n      }\n    });\n\n    return () => {\n      if (!rendered.value) return null;\n      const { prefixCls, isActive, role } = props;\n      return (\n        <div\n          class={classNames(`${prefixCls}-content`, {\n            [`${prefixCls}-content-active`]: isActive,\n            [`${prefixCls}-content-inactive`]: !isActive,\n          })}\n          role={role}\n        >\n          <div class={`${prefixCls}-content-box`}>{slots.default?.()}</div>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/collapse/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/collapse/demo/accordion.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\" role=\"tablist\">\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"tab\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"tab\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"tab\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/basic.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item ant-collapse-item-disabled\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"-1\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/borderless.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-borderless ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/collapsible.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-collapse ant-collapse-icon-position-start\">\n      <div class=\"ant-collapse-item ant-collapse-item-active\">\n        <div class=\"ant-collapse-header ant-collapse-header-collapsible-only\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n          <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This panel can only be collapsed by clicking text</span>\n          <!---->\n        </div>\n        <div class=\"ant-collapse-content ant-collapse-content-active\">\n          <div class=\"ant-collapse-content-box\">\n            <p>A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-collapse ant-collapse-icon-position-start\">\n      <div class=\"ant-collapse-item ant-collapse-item-active\">\n        <div class=\"ant-collapse-header ant-collapse-icon-collapsible-only\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n          <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This panel can only be collapsed by clicking icon</span>\n          <!---->\n        </div>\n        <div class=\"ant-collapse-content ant-collapse-content-active\">\n          <div class=\"ant-collapse-content-box\">\n            <p>A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-collapse ant-collapse-icon-position-start\">\n      <div class=\"ant-collapse-item ant-collapse-item-disabled\">\n        <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"-1\" aria-expanded=\"false\">\n          <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This panel can't be collapsed</span>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/custom.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-borderless ant-collapse-icon-position-start\" style=\"background: rgb(255, 255, 255);\">\n  <div style=\"background: rgb(247, 247, 247); border-radius: 4px; margin-bottom: 24px; border: 0px; overflow: hidden;\" class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"caret-right\" class=\"anticon anticon-caret-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"caret-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div style=\"background: rgb(247, 247, 247); border-radius: 4px; margin-bottom: 24px; border: 0px; overflow: hidden;\" class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"caret-right\" class=\"anticon anticon-caret-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div style=\"background: rgb(247, 247, 247); border-radius: 4px; margin-bottom: 24px; border: 0px; overflow: hidden;\" class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"caret-right\" class=\"anticon anticon-caret-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/extra.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <div class=\"ant-collapse-extra\"><span role=\"img\" aria-label=\"setting\" tabindex=\"-1\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></div>\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <div class=\"ant-collapse-extra\"><span role=\"img\" aria-label=\"setting\" tabindex=\"-1\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item ant-collapse-item-disabled\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"-1\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <div class=\"ant-collapse-extra\"><span role=\"img\" aria-label=\"setting\" tabindex=\"-1\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></div>\n    </div>\n    <!---->\n  </div>\n</div>\n<br>\n<span>Expand Icon Position:</span>\n<div class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">start</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/ghost.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start ant-collapse-ghost\">\n  <div class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item ant-collapse-item-disabled\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"-1\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/mix.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 1</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 2</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header 3</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/collapse/demo/noarrow.vue correctly 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item ant-collapse-item-active\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\">\n      <div class=\"ant-collapse-expand-icon\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right ant-collapse-arrow\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(90deg);\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></div><span class=\"ant-collapse-header-text\">This is panel header with arrow icon</span>\n      <!---->\n    </div>\n    <div class=\"ant-collapse-content ant-collapse-content-active\">\n      <div class=\"ant-collapse-content-box\">\n        <p>A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-collapse-item ant-collapse-no-arrow\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <!----><span class=\"ant-collapse-header-text\">This is panel header with no arrow icon</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/collapse/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Collapse should support remove expandIcon 1`] = `\n<div class=\"ant-collapse ant-collapse-icon-position-start\">\n  <div class=\"ant-collapse-item\">\n    <div class=\"ant-collapse-header\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n      <div class=\"ant-collapse-expand-icon\">\n        <!---->\n      </div><span class=\"ant-collapse-header-text\">header</span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/collapse/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('collapse');\n"
  },
  {
    "path": "components/collapse/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Collapse from '..';\n\ndescribe('Collapse', () => {\n  it('should support remove expandIcon', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Collapse expandIcon={() => null}>\n            <Collapse.Panel header=\"header\" />\n          </Collapse>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/collapse/commonProps.ts",
    "content": "import type { Key } from '../_util/type';\nimport { booleanType, someType, stringType, functionType } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\n\nexport type CollapsibleType = 'header' | 'icon' | 'disabled';\n\nexport type ActiveKeyType = Array<string | number> | string | number;\n\nexport interface PanelProps {\n  isActive?: boolean;\n  header?: any;\n  showArrow?: boolean;\n  forceRender?: boolean;\n  /** @deprecated Use `collapsible=\"disabled\"` instead */\n  disabled?: boolean;\n  extra?: any;\n  collapsible?: CollapsibleType;\n}\n\nconst collapseProps = () => ({\n  prefixCls: String,\n  activeKey: someType<ActiveKeyType>([Array, Number, String]),\n  defaultActiveKey: someType<ActiveKeyType>([Array, Number, String]),\n  accordion: booleanType(),\n  destroyInactivePanel: booleanType(),\n  bordered: booleanType(),\n  expandIcon: functionType<(panelProps: PanelProps) => any>(),\n  openAnimation: PropTypes.object,\n  expandIconPosition: stringType<'start' | 'end'>(),\n  collapsible: stringType<CollapsibleType>(),\n  ghost: booleanType(),\n  onChange: functionType<(key: Key | Key[]) => void>(),\n  'onUpdate:activeKey': functionType<(key: Key | Key[]) => void>(),\n});\n\nconst collapsePanelProps = () => ({\n  openAnimation: PropTypes.object,\n  prefixCls: String,\n  header: PropTypes.any,\n  headerClass: String,\n  showArrow: booleanType(),\n  isActive: booleanType(),\n  destroyInactivePanel: booleanType(),\n  /** @deprecated Use `collapsible=\"disabled\"` instead */\n  disabled: booleanType(),\n  accordion: booleanType(),\n  forceRender: booleanType(),\n  expandIcon: functionType<(panelProps: PanelProps) => any>(),\n  extra: PropTypes.any,\n  panelKey: someType<number | string>(),\n  collapsible: stringType<CollapsibleType>(),\n  role: String,\n  onItemClick: functionType<(panelKey: Key) => void>(),\n});\n\nexport { collapseProps, collapsePanelProps };\n"
  },
  {
    "path": "components/collapse/demo/accordion.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 手风琴\n  en-US: Accordion\n---\n\n## zh-CN\n\n手风琴，每次只打开一个 tab。\n\n## en-US\n\nIn accordion mode, only one panel can be expanded at a time.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\" accordion>\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref([]);\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\n</script>\n"
  },
  {
    "path": "components/collapse/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 折叠面板\n  en-US: Collapse\n---\n\n## zh-CN\n\n可以同时展开多个面板，这个例子默认展开了第一个。\n\n## en-US\n\nBy default, any number of panels can be expanded at a time. The first panel is expanded in this example.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\">\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\" collapsible=\"disabled\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\nconst activeKey = ref(['1']);\n\nwatch(activeKey, val => {\n  console.log(val);\n});\n</script>\n"
  },
  {
    "path": "components/collapse/demo/borderless.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 简洁风格\n  en-US: Borderless\n---\n\n## zh-CN\n\n一套没有边框的简洁样式。\n\n## en-US\n\nA borderless style of Collapse.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\" :bordered=\"false\">\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref(['1']);\nconst text = `A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.`;\n</script>\n"
  },
  {
    "path": "components/collapse/demo/collapsible.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 可折叠触发区域\n  en-US: Collapsible\n---\n\n## zh-CN\n\n通过 `collapsible` 属性，可以设置面板的可折叠触发区域。\n\n## en-US\n\nSpecify the trigger area of collapsible by `collapsible`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-collapse v-model:activeKey=\"activeKey\" collapsible=\"header\">\n      <a-collapse-panel key=\"1\" header=\"This panel can only be collapsed by clicking text\">\n        <p>{{ text }}</p>\n      </a-collapse-panel>\n    </a-collapse>\n    <a-collapse v-model:activeKey=\"activeKey\" collapsible=\"icon\">\n      <a-collapse-panel key=\"1\" header=\"This panel can only be collapsed by clicking icon\">\n        <p>{{ text }}</p>\n      </a-collapse-panel>\n    </a-collapse>\n    <a-collapse collapsible=\"disabled\">\n      <a-collapse-panel key=\"1\" header=\"This panel can't be collapsed\">\n        <p>{{ text }}</p>\n      </a-collapse-panel>\n    </a-collapse>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref(['1']);\nconst text = `A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome guest in many households across the world.`;\n</script>\n<style scoped>\n.ant-space {\n  width: 100%;\n}\n</style>\n"
  },
  {
    "path": "components/collapse/demo/custom.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义面板\n  en-US: Custom Panel\n---\n\n## zh-CN\n\n自定义各个面板的背景色、圆角、边距和图标。\n\n## en-US\n\nCustomize the background, border and margin styles and icon for each panel.\n\n</docs>\n\n<template>\n  <a-collapse\n    v-model:activeKey=\"activeKey\"\n    :bordered=\"false\"\n    style=\"background: rgb(255, 255, 255)\"\n  >\n    <template #expandIcon=\"{ isActive }\">\n      <caret-right-outlined :rotate=\"isActive ? 90 : 0\" />\n    </template>\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\" :style=\"customStyle\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\" :style=\"customStyle\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\" :style=\"customStyle\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { CaretRightOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\n\nconst activeKey = ref(['1']);\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\nconst customStyle =\n  'background: #f7f7f7;border-radius: 4px;margin-bottom: 24px;border: 0;overflow: hidden';\n</script>\n"
  },
  {
    "path": "components/collapse/demo/extra.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 额外节点\n  en-US: Extra node\n---\n\n## zh-CN\n\n可以同时展开多个面板，这个例子默认展开了第一个。\n\n## en-US\n\nMore than one panel can be expanded at a time, the first panel is initialized to be active in this case.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\" :expand-icon-position=\"expandIconPosition\">\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <p>{{ text }}</p>\n      <template #extra><setting-outlined @click=\"handleClick\" /></template>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n      <template #extra><setting-outlined @click=\"handleClick\" /></template>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\" collapsible=\"disabled\">\n      <p>{{ text }}</p>\n      <template #extra><setting-outlined @click=\"handleClick\" /></template>\n    </a-collapse-panel>\n  </a-collapse>\n  <br />\n  <span>Expand Icon Position:</span>\n  <a-select v-model:value=\"expandIconPosition\">\n    <a-select-option value=\"start\">start</a-select-option>\n    <a-select-option value=\"end\">end</a-select-option>\n  </a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { SettingOutlined } from '@ant-design/icons-vue';\nimport { ref, watch } from 'vue';\nimport type { CollapseProps } from 'ant-design-vue';\n\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\nconst activeKey = ref(['1']);\nconst expandIconPosition = ref<CollapseProps['expandIconPosition']>('start');\n\nconst handleClick = (event: MouseEvent) => {\n  // If you don't want click extra trigger collapse, you can prevent this:\n  event.stopPropagation();\n};\nwatch(activeKey, val => {\n  console.log(val);\n});\n</script>\n"
  },
  {
    "path": "components/collapse/demo/ghost.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 幽灵折叠面板\n  en-US: Ghost Collapse\n---\n\n## zh-CN\n\n将折叠面板的背景变成透明。\n\n## en-US\n\nMaking collapse's background to transparent.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\" ghost>\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\" collapsible=\"disabled\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\nconst activeKey = ref(['1']);\n\nwatch(activeKey, val => {\n  console.log(val);\n});\n</script>\n"
  },
  {
    "path": "components/collapse/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Accordion />\n    <Mix />\n    <Borderless />\n    <Custom />\n    <Noarrow />\n    <Extra />\n    <Ghost />\n    <Collapsible />\n  </demo-sort>\n</template>\n\n<script>\nimport Accordion from './accordion.vue';\nimport Basic from './basic.vue';\nimport Borderless from './borderless.vue';\nimport Custom from './custom.vue';\nimport Mix from './mix.vue';\nimport Noarrow from './noarrow.vue';\nimport Extra from './extra.vue';\nimport Ghost from './ghost.vue';\nimport Collapsible from './collapsible.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default {\n  CN,\n  US,\n  components: {\n    Accordion,\n    Basic,\n    Borderless,\n    Custom,\n    Mix,\n    Noarrow,\n    Extra,\n    Ghost,\n    Collapsible,\n  },\n};\n</script>\n"
  },
  {
    "path": "components/collapse/demo/mix.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 面板嵌套\n  en-US: Nested panel\n---\n\n## zh-CN\n\n嵌套折叠面板。\n\n## en-US\n\n`Collapse` is nested inside the `Collapse`.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\" @change=\"changeActivekey\">\n    <a-collapse-panel key=\"1\" header=\"This is panel header 1\">\n      <a-collapse default-active-key=\"4\">\n        <a-collapse-panel key=\"4\" header=\"This is panel nest panel\">\n          <p>{{ text }}</p>\n        </a-collapse-panel>\n      </a-collapse>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header 2\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"3\" header=\"This is panel header 3\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst activeKey = ref([]);\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\n\nconst changeActivekey = (key: string) => {\n  console.log(key);\n};\n</script>\n"
  },
  {
    "path": "components/collapse/demo/noarrow.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 隐藏箭头\n  en-US: No arrow\n---\n\n## zh-CN\n\n你可以通过 `:showArrow=\"false\"` 隐藏 `a-collapse-panel` 组件的箭头图标。\n\n## en-US\nYou can hide the arrow icon by passing `showArrow={false}` to `CollapsePanel` component.\n\n</docs>\n\n<template>\n  <a-collapse v-model:activeKey=\"activeKey\">\n    <a-collapse-panel key=\"1\" header=\"This is panel header with arrow icon\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n    <a-collapse-panel key=\"2\" header=\"This is panel header with no arrow icon\" :show-arrow=\"false\">\n      <p>{{ text }}</p>\n    </a-collapse-panel>\n  </a-collapse>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nconst activeKey = ref(['1']);\nconst text = `A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.`;\n\nwatch(activeKey, val => {\n  console.log('activeKey', val);\n});\n</script>\n"
  },
  {
    "path": "components/collapse/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Collapse\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*B7HKR5OBe8gAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sir-TK0HkWcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA content area which can be collapsed and expanded.\n\n## When To Use\n\n- Can be used to group or hide complex regions to keep the page clean.\n- 'Accordion' is a special kind of 'Collapse', which allows only one panel to be expanded at a time.\n\n## API\n\n### Collapse\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| accordion | If `true`, `Collapse` renders as `Accordion` | boolean | `false` |  |\n| activeKey(v-model) | Key of the active panel | string\\[] \\| string <br> number\\[] \\| number | No default value. In [accordion mode](#components-collapse-demo-accordion), it's the key of the first panel. |  |\n| bordered | Toggles rendering of the border around the collapse block | boolean | `true` |  |\n| collapsible | Specify whether the panels of children be collapsible or the trigger area of collapsible | `header` \\| `icon` \\| `disabled` | - | 4.0 |\n| destroyInactivePanel | Destroy Inactive Panel | boolean | `false` |  |\n| expandIcon | allow to customize collapse icon | Function(props):VNode \\| v-slot:expandIcon=\"props\" |  |  |\n| expandIconPosition | Set expand icon position | `start` \\| `end` | - | 4.0 |\n| ghost | Make the collapse borderless and its background transparent | boolean | false | 3.0 |\n\n### events\n\n| Events Name | Description                                             | Arguments     | Version |\n| ----------- | ------------------------------------------------------- | ------------- | ------- |\n| change      | Callback function executed when active panel is changed | function(key) |         |\n\n### Collapse.Panel\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| collapsible | Specify whether the panel be collapsible or the trigger area of collapsible | `header` \\| `disabled` | - | 3.0 |\n| disabled | If `true`, panel cannot be opened or closed | boolean | `false` |  |\n| extra | extra element in the corner | VNode \\| slot | - | 1.5.0 |\n| forceRender | Forced render of content on panel, instead of lazy rending after clicking on header | boolean | `false` |  |\n| header | Title of the panel | string \\| slot | - |  |\n| key | Unique key identifying the panel from among its siblings | string \\| number | - |  |\n| showArrow | If `false`, panel will not show arrow icon | boolean | `true` |  |\n"
  },
  {
    "path": "components/collapse/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Collapse, { collapseProps } from './Collapse';\nimport CollapsePanel, { collapsePanelProps } from './CollapsePanel';\nexport type { CollapseProps } from './Collapse';\nexport type { CollapsePanelProps } from './CollapsePanel';\n\nCollapse.Panel = CollapsePanel;\n\n/* istanbul ignore next */\nCollapse.install = function (app: App) {\n  app.component(Collapse.name, Collapse);\n  app.component(CollapsePanel.name, CollapsePanel);\n  return app;\n};\n\nexport { CollapsePanel, collapseProps, collapsePanelProps };\nexport default Collapse as typeof Collapse &\n  Plugin & {\n    readonly Panel: typeof CollapsePanel;\n  };\n"
  },
  {
    "path": "components/collapse/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Collapse\nsubtitle: 折叠面板\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*B7HKR5OBe8gAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sir-TK0HkWcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n可以折叠/展开的内容区域。\n\n## 何时使用\n\n- 对复杂区域进行分组和隐藏，保持页面的整洁。\n- '手风琴' 是一种特殊的折叠面板，只允许单个内容区域展开。\n\n## API\n\n### Collapse\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| accordion | 手风琴模式，始终只有一个面板处在激活状态 | boolean | `false` |  |\n| activeKey(v-model) | 当前激活 tab 面板的 key | string\\[] \\| string <br> number\\[] \\| number | 默认无，[手风琴模式](#components-collapse-demo-accordion)下默认第一个元素 |  |\n| bordered | 带边框风格的折叠面板 | boolean | `true` |  |\n| collapsible | 所有子面板是否可折叠或指定可折叠触发区域 | `header` \\| `icon` \\| `disabled` | - | 4.0 |\n| destroyInactivePanel | 销毁折叠隐藏的面板 | boolean | `false` |  |\n| expandIcon | 自定义切换图标 | Function(props):VNode \\| slot=\"expandIcon\" slot-scope=\"props\"\\|#expandIcon=\"props\" |  |  |\n| expandIconPosition | 设置图标位置 | `start` \\| `end` | - | 4.0 |\n| ghost | 使折叠面板透明且无边框 | boolean | false | 3.0 |\n\n### 事件\n\n| 事件名称 | 说明           | 回调参数      | 版本 |\n| -------- | -------------- | ------------- | ---- |\n| change   | 切换面板的回调 | function(key) |      |\n\n### Collapse.Panel\n\n| 参数        | 说明                           | 类型                   | 默认值 | 版本  |\n| ----------- | ------------------------------ | ---------------------- | ------ | ----- |\n| collapsible | 是否可折叠或指定可折叠触发区域 | `header` \\| `disabled` | -      | 3.0   |\n| extra       | 自定义渲染每个面板右上角的内容 | VNode \\| slot          | -      | 1.5.0 |\n| forceRender | 被隐藏时是否渲染 DOM 结构      | boolean                | false  |       |\n| header      | 面板头内容                     | string\\|slot           | -      |       |\n| key         | 对应 activeKey                 | string \\| number       | -      |       |\n| showArrow   | 是否展示当前面板上的箭头       | boolean                | `true` |       |\n"
  },
  {
    "path": "components/collapse/style/index.tsx",
    "content": "import { genCollapseMotion } from '../../style/motion';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, resetIcon } from '../../style';\n\nexport interface ComponentToken {}\n\ntype CollapseToken = FullToken<'Collapse'> & {\n  collapseContentBg: string;\n  collapseHeaderBg: string;\n  collapseHeaderPadding: string;\n  collapsePanelBorderRadius: number;\n  collapseContentPaddingHorizontal: number;\n};\n\nexport const genBaseStyle: GenerateStyle<CollapseToken> = token => {\n  const {\n    componentCls,\n    collapseContentBg,\n    padding,\n    collapseContentPaddingHorizontal,\n    collapseHeaderBg,\n    collapseHeaderPadding,\n    collapsePanelBorderRadius,\n\n    lineWidth,\n    lineType,\n    colorBorder,\n    colorText,\n    colorTextHeading,\n    colorTextDisabled,\n    fontSize,\n    lineHeight,\n    marginSM,\n    paddingSM,\n    motionDurationSlow,\n    fontSizeIcon,\n  } = token;\n\n  const borderBase = `${lineWidth}px ${lineType} ${colorBorder}`;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      backgroundColor: collapseHeaderBg,\n      border: borderBase,\n      borderBottom: 0,\n      borderRadius: `${collapsePanelBorderRadius}px`,\n\n      [`&-rtl`]: {\n        direction: 'rtl',\n      },\n\n      [`& > ${componentCls}-item`]: {\n        borderBottom: borderBase,\n        [`&:last-child`]: {\n          [`\n            &,\n            & > ${componentCls}-header`]: {\n            borderRadius: `0 0 ${collapsePanelBorderRadius}px ${collapsePanelBorderRadius}px`,\n          },\n        },\n\n        [`> ${componentCls}-header`]: {\n          position: 'relative', // Compatible with old version of antd, should remove in next version\n          display: 'flex',\n          flexWrap: 'nowrap',\n          alignItems: 'flex-start',\n          padding: collapseHeaderPadding,\n          color: colorTextHeading,\n          lineHeight,\n          cursor: 'pointer',\n          transition: `all ${motionDurationSlow}, visibility 0s`,\n\n          [`> ${componentCls}-header-text`]: {\n            flex: 'auto',\n          },\n\n          '&:focus': {\n            outline: 'none',\n          },\n\n          // >>>>> Arrow\n          [`${componentCls}-expand-icon`]: {\n            height: fontSize * lineHeight,\n            display: 'flex',\n            alignItems: 'center',\n            paddingInlineEnd: marginSM,\n          },\n\n          [`${componentCls}-arrow`]: {\n            ...resetIcon(),\n            fontSize: fontSizeIcon,\n\n            svg: {\n              transition: `transform ${motionDurationSlow}`,\n            },\n          },\n\n          // >>>>> Text\n          [`${componentCls}-header-text`]: {\n            marginInlineEnd: 'auto',\n          },\n        },\n\n        [`${componentCls}-header-collapsible-only`]: {\n          cursor: 'default',\n\n          [`${componentCls}-header-text`]: {\n            flex: 'none',\n            cursor: 'pointer',\n          },\n          [`${componentCls}-expand-icon`]: {\n            cursor: 'pointer',\n          },\n        },\n\n        [`${componentCls}-icon-collapsible-only`]: {\n          cursor: 'default',\n\n          [`${componentCls}-expand-icon`]: {\n            cursor: 'pointer',\n          },\n        },\n\n        [`&${componentCls}-no-arrow`]: {\n          [`> ${componentCls}-header`]: {\n            paddingInlineStart: paddingSM,\n          },\n        },\n      },\n\n      [`${componentCls}-content`]: {\n        color: colorText,\n        backgroundColor: collapseContentBg,\n        borderTop: borderBase,\n\n        [`& > ${componentCls}-content-box`]: {\n          padding: `${padding}px ${collapseContentPaddingHorizontal}px`,\n        },\n\n        [`&-hidden`]: {\n          display: 'none',\n        },\n      },\n\n      [`${componentCls}-item:last-child`]: {\n        [`> ${componentCls}-content`]: {\n          borderRadius: `0 0 ${collapsePanelBorderRadius}px ${collapsePanelBorderRadius}px`,\n        },\n      },\n\n      [`& ${componentCls}-item-disabled > ${componentCls}-header`]: {\n        [`\n          &,\n          & > .arrow\n        `]: {\n          color: colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n      },\n\n      // ========================== Icon Position ==========================\n      [`&${componentCls}-icon-position-end`]: {\n        [`& > ${componentCls}-item`]: {\n          [`> ${componentCls}-header`]: {\n            [`${componentCls}-expand-icon`]: {\n              order: 1,\n              paddingInlineEnd: 0,\n              paddingInlineStart: marginSM,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genArrowStyle: GenerateStyle<CollapseToken> = token => {\n  const { componentCls } = token;\n\n  const fixedSelector = `> ${componentCls}-item > ${componentCls}-header ${componentCls}-arrow svg`;\n\n  return {\n    [`${componentCls}-rtl`]: {\n      [fixedSelector]: {\n        transform: `rotate(180deg)`,\n      },\n    },\n  };\n};\n\nconst genBorderlessStyle: GenerateStyle<CollapseToken> = token => {\n  const {\n    componentCls,\n    collapseHeaderBg,\n    paddingXXS,\n\n    colorBorder,\n  } = token;\n\n  return {\n    [`${componentCls}-borderless`]: {\n      backgroundColor: collapseHeaderBg,\n      border: 0,\n\n      [`> ${componentCls}-item`]: {\n        borderBottom: `1px solid ${colorBorder}`,\n      },\n\n      [`\n        > ${componentCls}-item:last-child,\n        > ${componentCls}-item:last-child ${componentCls}-header\n      `]: {\n        borderRadius: 0,\n      },\n\n      [`> ${componentCls}-item:last-child`]: {\n        borderBottom: 0,\n      },\n\n      [`> ${componentCls}-item > ${componentCls}-content`]: {\n        backgroundColor: 'transparent',\n        borderTop: 0,\n      },\n\n      [`> ${componentCls}-item > ${componentCls}-content > ${componentCls}-content-box`]: {\n        paddingTop: paddingXXS,\n      },\n    },\n  };\n};\n\nconst genGhostStyle: GenerateStyle<CollapseToken> = token => {\n  const { componentCls, paddingSM } = token;\n\n  return {\n    [`${componentCls}-ghost`]: {\n      backgroundColor: 'transparent',\n      border: 0,\n      [`> ${componentCls}-item`]: {\n        borderBottom: 0,\n        [`> ${componentCls}-content`]: {\n          backgroundColor: 'transparent',\n          border: 0,\n          [`> ${componentCls}-content-box`]: {\n            paddingBlock: paddingSM,\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook('Collapse', token => {\n  const collapseToken = mergeToken<CollapseToken>(token, {\n    collapseContentBg: token.colorBgContainer,\n    collapseHeaderBg: token.colorFillAlter,\n    collapseHeaderPadding: `${token.paddingSM}px ${token.padding}px`,\n    collapsePanelBorderRadius: token.borderRadiusLG,\n    collapseContentPaddingHorizontal: 16, // Fixed value\n  });\n\n  return [\n    genBaseStyle(collapseToken),\n    genBorderlessStyle(collapseToken),\n    genGhostStyle(collapseToken),\n    genArrowStyle(collapseToken),\n    genCollapseMotion(collapseToken),\n  ];\n});\n"
  },
  {
    "path": "components/comment/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/comment/demo/basic.vue correctly 1`] = `\n<div class=\"ant-comment\">\n  <div class=\"ant-comment-inner\">\n    <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n    <div class=\"ant-comment-content\">\n      <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\"><a>Han Solo</a></span><span class=\"ant-comment-content-author-time\"><!----><span>a few seconds ago</span></span></div>\n      <div class=\"ant-comment-content-detail\">\n        <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently. </p>\n      </div>\n      <ul class=\"ant-comment-actions\">\n        <li><span><!----><span role=\"img\" aria-label=\"like\" tabindex=\"-1\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span><span style=\"padding-left: 8px; cursor: auto;\">0</span></span></li>\n        <li><span><!----><span role=\"img\" aria-label=\"dislike\" tabindex=\"-1\" class=\"anticon anticon-dislike\"><svg focusable=\"false\" class=\"\" data-icon=\"dislike\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 00-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 01-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0133.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0119.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0119.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0119.6 43c0 19.1-11 37.5-28.8 48.4z\"></path></svg></span><span style=\"padding-left: 8px; cursor: auto;\">0</span></span></li>\n        <li><span>Reply to</span></li>\n      </ul>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/comment/demo/editor.vue correctly 1`] = `\n<!--v-if-->\n<div class=\"ant-comment\">\n  <div class=\"ant-comment-inner\">\n    <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n    <div class=\"ant-comment-content\">\n      <div class=\"ant-comment-content-author\">\n        <!---->\n        <!---->\n      </div>\n      <div class=\"ant-comment-content-detail\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <!---->\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><textarea rows=\"4\" class=\"ant-input\"></textarea></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <!---->\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n                    <!----><span>Add Comment</span>\n                  </button></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/comment/demo/list.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split comment-list\">\n  <!---->\n  <div class=\"ant-list-header\">2 replies</div>\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">\n          <div class=\"ant-comment\">\n            <div class=\"ant-comment-inner\">\n              <div class=\"ant-comment-avatar\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"comment-avatar\"></div>\n              <div class=\"ant-comment-content\">\n                <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\">Han Solo</span><span class=\"ant-comment-content-author-time\"><!----><span>a day ago</span></span></div>\n                <div class=\"ant-comment-content-detail\">\n                  <p>We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.</p>\n                </div>\n                <ul class=\"ant-comment-actions\">\n                  <li><span>Reply to</span></li>\n                </ul>\n              </div>\n            </div>\n            <!---->\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-comment\">\n            <div class=\"ant-comment-inner\">\n              <div class=\"ant-comment-avatar\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"comment-avatar\"></div>\n              <div class=\"ant-comment-content\">\n                <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\">Han Solo</span><span class=\"ant-comment-content-author-time\"><!----><span>2 days ago</span></span></div>\n                <div class=\"ant-comment-content-detail\">\n                  <p>We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.</p>\n                </div>\n                <ul class=\"ant-comment-actions\">\n                  <li><span>Reply to</span></li>\n                </ul>\n              </div>\n            </div>\n            <!---->\n          </div>\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/comment/demo/nested.vue correctly 1`] = `\n<div class=\"ant-comment\">\n  <div class=\"ant-comment-inner\">\n    <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n    <div class=\"ant-comment-content\">\n      <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\"><a>Han Solo</a></span>\n        <!---->\n      </div>\n      <div class=\"ant-comment-content-detail\">\n        <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure). </p>\n      </div>\n      <ul class=\"ant-comment-actions\">\n        <li><span>Reply to</span></li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"ant-comment-nested\">\n    <div class=\"ant-comment\">\n      <div class=\"ant-comment-inner\">\n        <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n        <div class=\"ant-comment-content\">\n          <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\"><a>Han Solo</a></span>\n            <!---->\n          </div>\n          <div class=\"ant-comment-content-detail\">\n            <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure). </p>\n          </div>\n          <ul class=\"ant-comment-actions\">\n            <li><span>Reply to</span></li>\n          </ul>\n        </div>\n      </div>\n      <div class=\"ant-comment-nested\">\n        <div class=\"ant-comment\">\n          <div class=\"ant-comment-inner\">\n            <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n            <div class=\"ant-comment-content\">\n              <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\"><a>Han Solo</a></span>\n                <!---->\n              </div>\n              <div class=\"ant-comment-content-detail\">\n                <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure). </p>\n              </div>\n              <ul class=\"ant-comment-actions\">\n                <li><span>Reply to</span></li>\n              </ul>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-comment\">\n          <div class=\"ant-comment-inner\">\n            <div class=\"ant-comment-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\"></span></div>\n            <div class=\"ant-comment-content\">\n              <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\"><a>Han Solo</a></span>\n                <!---->\n              </div>\n              <div class=\"ant-comment-content-detail\">\n                <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure). </p>\n              </div>\n              <ul class=\"ant-comment-actions\">\n                <li><span>Reply to</span></li>\n              </ul>\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/comment/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Comment Comment can be used as editor, user can customize the editor component. 1`] = `\n<div>\n  <div class=\"ant-list ant-list-split\">\n    <!---->\n    <div class=\"ant-list-header\">1 reply</div>\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <ul class=\"ant-list-items\">\n          <li class=\"ant-list-item\">\n            <div class=\"ant-comment\">\n              <div class=\"ant-comment-inner\">\n                <div class=\"ant-comment-avatar\"><img src=\"https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png\" alt=\"comment-avatar\"></div>\n                <div class=\"ant-comment-content\">\n                  <div class=\"ant-comment-content-author\"><span class=\"ant-comment-content-author-name\">Han Solo</span><span class=\"ant-comment-content-author-time\">a few seconds ago</span></div>\n                  <div class=\"ant-comment-content-detail\">222</div>\n                  <!---->\n                </div>\n              </div>\n              <!---->\n            </div>\n            <!---->\n            <!---->\n          </li>\n        </ul>\n      </div>\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-comment\">\n    <div class=\"ant-comment-inner\">\n      <div class=\"ant-comment-avatar\">\n        <!---->\n      </div>\n      <div class=\"ant-comment-content\">\n        <div class=\"ant-comment-content-author\">\n          <!---->\n          <!---->\n        </div>\n        <div class=\"ant-comment-content-detail\">\n          <div>\n            <div class=\"ant-form-item\">\n              <div class=\"ant-row ant-form-row\">\n                <!---->\n                <div class=\"ant-col ant-form-item-control\">\n                  <div class=\"ant-form-item-control-input\">\n                    <div class=\"ant-form-item-control-input-content\"><textarea rows=\"4\" class=\"ant-input\"></textarea></div>\n                  </div>\n                  <!---->\n                  <!---->\n                </div>\n              </div>\n              <!---->\n            </div>\n            <div class=\"ant-form-item\">\n              <div class=\"ant-row ant-form-row\">\n                <!---->\n                <div class=\"ant-col ant-form-item-control\">\n                  <div class=\"ant-form-item-control-input\">\n                    <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n                        <!----><span>Add Comment</span>\n                      </button></div>\n                  </div>\n                  <!---->\n                  <!---->\n                </div>\n              </div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/comment/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('comment');\n"
  },
  {
    "path": "components/comment/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport dayjs from 'dayjs';\nimport { asyncExpect } from '../../../tests/utils';\nimport Comment from '..';\nimport List from '../../list';\nimport Form from '../../form';\nimport Button from '../../button';\nimport Input from '../../input';\nimport mountTest from '../../../tests/shared/mountTest';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\nconst CommentTest = {\n  data() {\n    return {\n      comments: [],\n      submitting: false,\n      value: '',\n      dayjs,\n    };\n  },\n  methods: {\n    handleSubmit() {\n      if (!this.value) {\n        return;\n      }\n\n      this.submitting = true;\n\n      setTimeout(() => {\n        this.submitting = false;\n        this.comments = [\n          {\n            author: 'Han Solo',\n            avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',\n            content: this.value,\n            datetime: dayjs().fromNow(),\n          },\n          ...this.comments,\n        ];\n        this.value = '';\n      }, 1000);\n    },\n    handleChange(e) {\n      this.value = e.target.value;\n    },\n  },\n  render() {\n    return (\n      <div>\n        {this.comments.length ? (\n          <List\n            dataSource={this.comments}\n            header={`${this.comments.length} ${this.comments.length > 1 ? 'replies' : 'reply'}`}\n            itemLayout=\"horizontal\"\n            renderItem={({ item }) => {\n              return (\n                <List.Item>\n                  <Comment\n                    author={item.author}\n                    avatar={item.avatar}\n                    content={item.content}\n                    datetime={item.datetime}\n                  />\n                </List.Item>\n              );\n            }}\n          />\n        ) : null}\n        <Comment\n          vSlots={{\n            content: () => (\n              <div>\n                <Form.Item>\n                  <Input.TextArea rows={4} onChange={this.handleChange} value={this.value} />\n                </Form.Item>\n                <Form.Item>\n                  <Button\n                    htmlType=\"submit\"\n                    loading={this.submitting}\n                    onClick={this.handleSubmit}\n                    type=\"primary\"\n                  >\n                    Add Comment\n                  </Button>\n                </Form.Item>\n              </div>\n            ),\n          }}\n        ></Comment>\n      </div>\n    );\n  },\n};\n\ndescribe('Comment', () => {\n  mountTest(Comment);\n  it('Comment can be used as editor, user can customize the editor component.', async () => {\n    const wrapper = mount(CommentTest, {\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('textarea').element.value = '222';\n      wrapper.find('textarea').trigger('input');\n    });\n    await asyncExpect(() => {\n      wrapper.find('.ant-btn').trigger('click');\n    });\n\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-list-header')[0].element.innerHTML).toBe('1 reply');\n      expect(wrapper.html()).toMatchSnapshot();\n    }, 2000);\n  });\n});\n"
  },
  {
    "path": "components/comment/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本评论\n  en-US: Basic comment\n---\n\n## zh-CN\n\n一个基本的评论组件，带有作者、头像、时间和操作。\n\n## en-US\n\nA basic comment with author, avatar, time and actions.\n\n</docs>\n\n<template>\n  <a-comment>\n    <template #actions>\n      <span key=\"comment-basic-like\">\n        <a-tooltip title=\"Like\">\n          <template v-if=\"action === 'liked'\">\n            <LikeFilled @click=\"like\" />\n          </template>\n          <template v-else>\n            <LikeOutlined @click=\"like\" />\n          </template>\n        </a-tooltip>\n        <span style=\"padding-left: 8px; cursor: auto\">\n          {{ likes }}\n        </span>\n      </span>\n      <span key=\"comment-basic-dislike\">\n        <a-tooltip title=\"Dislike\">\n          <template v-if=\"action === 'disliked'\">\n            <DislikeFilled @click=\"dislike\" />\n          </template>\n          <template v-else>\n            <DislikeOutlined @click=\"dislike\" />\n          </template>\n        </a-tooltip>\n        <span style=\"padding-left: 8px; cursor: auto\">\n          {{ dislikes }}\n        </span>\n      </span>\n      <span key=\"comment-basic-reply-to\">Reply to</span>\n    </template>\n    <template #author><a>Han Solo</a></template>\n    <template #avatar>\n      <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n    </template>\n    <template #content>\n      <p>\n        We supply a series of design principles, practical patterns and high quality design\n        resources (Sketch and Axure), to help people create their product prototypes beautifully and\n        efficiently.\n      </p>\n    </template>\n    <template #datetime>\n      <a-tooltip :title=\"dayjs().format('YYYY-MM-DD HH:mm:ss')\">\n        <span>{{ dayjs().fromNow() }}</span>\n      </a-tooltip>\n    </template>\n  </a-comment>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs from 'dayjs';\nimport { LikeFilled, LikeOutlined, DislikeFilled, DislikeOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\nconst likes = ref<number>(0);\nconst dislikes = ref<number>(0);\nconst action = ref<string>();\n\nconst like = () => {\n  likes.value = 1;\n  dislikes.value = 0;\n  action.value = 'liked';\n};\n\nconst dislike = () => {\n  likes.value = 0;\n  dislikes.value = 1;\n  action.value = 'disliked';\n};\n</script>\n"
  },
  {
    "path": "components/comment/demo/editor.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 回复框\n  en-US: Reply Editor\n---\n\n## zh-CN\n\n评论编辑器组件提供了相同样式的封装以支持自定义评论编辑器。\n\n## en-US\n\nComment can be used as editor, user can customize the editor component.\n\n</docs>\n\n<template>\n  <a-list\n    v-if=\"comments.length\"\n    :data-source=\"comments\"\n    :header=\"`${comments.length} ${comments.length > 1 ? 'replies' : 'reply'}`\"\n    item-layout=\"horizontal\"\n  >\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-comment\n          :author=\"item.author\"\n          :avatar=\"item.avatar\"\n          :content=\"item.content\"\n          :datetime=\"item.datetime\"\n        />\n      </a-list-item>\n    </template>\n  </a-list>\n  <a-comment>\n    <template #avatar>\n      <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n    </template>\n    <template #content>\n      <a-form-item>\n        <a-textarea v-model:value=\"value\" :rows=\"4\" />\n      </a-form-item>\n      <a-form-item>\n        <a-button html-type=\"submit\" :loading=\"submitting\" type=\"primary\" @click=\"handleSubmit\">\n          Add Comment\n        </a-button>\n      </a-form-item>\n    </template>\n  </a-comment>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\ntype Comment = Record<string, string>;\n\nconst comments = ref<Comment[]>([]);\nconst submitting = ref<boolean>(false);\nconst value = ref<string>('');\nconst handleSubmit = () => {\n  if (!value.value) {\n    return;\n  }\n\n  submitting.value = true;\n\n  setTimeout(() => {\n    submitting.value = false;\n    comments.value = [\n      {\n        author: 'Han Solo',\n        avatar: 'https://joeschmoe.io/api/v1/random',\n        content: value.value,\n        datetime: dayjs().fromNow(),\n      },\n      ...comments.value,\n    ];\n    value.value = '';\n  }, 1000);\n};\n</script>\n"
  },
  {
    "path": "components/comment/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <list />\n    <nested />\n    <editor />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport List from './list.vue';\nimport Nested from './nested.vue';\nimport Editor from './editor.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    List,\n    Nested,\n    Editor,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/comment/demo/list.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 配合 List 组件\n  en-US: Usage with list\n---\n\n## zh-CN\n\n配合 List 组件展现评论列表。\n\n## en-US\n\nDisplaying a series of comments using the `antd` List Component.\n\n</docs>\n\n<template>\n  <a-list\n    class=\"comment-list\"\n    :header=\"`${data.length} replies`\"\n    item-layout=\"horizontal\"\n    :data-source=\"data\"\n  >\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-comment :author=\"item.author\" :avatar=\"item.avatar\">\n          <template #actions>\n            <span v-for=\"(action, index) in item.actions\" :key=\"index\">{{ action }}</span>\n          </template>\n          <template #content>\n            <p>\n              {{ item.content }}\n            </p>\n          </template>\n          <template #datetime>\n            <a-tooltip :title=\"item.datetime.format('YYYY-MM-DD HH:mm:ss')\">\n              <span>{{ item.datetime.fromNow() }}</span>\n            </a-tooltip>\n          </template>\n        </a-comment>\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\nconst data = [\n  {\n    actions: ['Reply to'],\n    author: 'Han Solo',\n    avatar: 'https://joeschmoe.io/api/v1/random',\n    content:\n      'We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',\n    datetime: dayjs().subtract(1, 'days'),\n  },\n  {\n    actions: ['Reply to'],\n    author: 'Han Solo',\n    avatar: 'https://joeschmoe.io/api/v1/random',\n    content:\n      'We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',\n    datetime: dayjs().subtract(2, 'days'),\n  },\n];\n</script>\n"
  },
  {
    "path": "components/comment/demo/nested.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 嵌套评论\n  en-US: Nested comments\n---\n\n## zh-CN\n\n评论可以嵌套。\n\n## en-US\n\nComments can be nested.\n\n</docs>\n\n<template>\n  <a-comment>\n    <template #actions>\n      <span key=\"comment-nested-reply-to\">Reply to</span>\n    </template>\n    <template #author>\n      <a>Han Solo</a>\n    </template>\n    <template #avatar>\n      <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n    </template>\n    <template #content>\n      <p>\n        We supply a series of design principles, practical patterns and high quality design\n        resources (Sketch and Axure).\n      </p>\n    </template>\n    <a-comment>\n      <template #actions>\n        <span>Reply to</span>\n      </template>\n      <template #author>\n        <a>Han Solo</a>\n      </template>\n      <template #avatar>\n        <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n      </template>\n      <template #content>\n        <p>\n          We supply a series of design principles, practical patterns and high quality design\n          resources (Sketch and Axure).\n        </p>\n      </template>\n      <a-comment>\n        <template #actions>\n          <span>Reply to</span>\n        </template>\n        <template #author>\n          <a>Han Solo</a>\n        </template>\n        <template #avatar>\n          <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n        </template>\n        <template #content>\n          <p>\n            We supply a series of design principles, practical patterns and high quality design\n            resources (Sketch and Axure).\n          </p>\n        </template>\n      </a-comment>\n      <a-comment>\n        <template #actions>\n          <span>Reply to</span>\n        </template>\n        <template #author>\n          <a>Han Solo</a>\n        </template>\n        <template #avatar>\n          <a-avatar src=\"https://joeschmoe.io/api/v1/random\" alt=\"Han Solo\" />\n        </template>\n        <template #content>\n          <p>\n            We supply a series of design principles, practical patterns and high quality design\n            resources (Sketch and Axure).\n          </p>\n        </template>\n      </a-comment>\n    </a-comment>\n  </a-comment>\n</template>\n"
  },
  {
    "path": "components/comment/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Comment\ncover: https://gw.alipayobjects.com/zos/alicdn/ILhxpGzBO/Comment.svg\n---\n\nA comment displays user feedback and discussion to website content.\n\n## When To Use\n\nComments can be used to enable discussions on an entity such as a page, blog post, issue or other.\n\n## API\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| actions | List of action items rendered below the comment content | Array \\| slot | - |\n| author | The element to display as the comment author | string\\|slot | - |\n| avatar | The element to display as the comment avatar - generally an antd `Avatar` or src | string\\|slot | - |\n| content | The main content of the comment | string\\|slot | - |\n| datetime | A datetime element containing the time to be displayed | string\\|slot | - |\n"
  },
  {
    "path": "components/comment/index.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { flattenChildren } from '../_util/props-util';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\nimport { withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport const commentProps = () => ({\n  actions: Array,\n  /** The element to display as the comment author. */\n  author: PropTypes.any,\n  /** The element to display as the comment avatar - generally an antd Avatar */\n  avatar: PropTypes.any,\n  /** The main content of the comment */\n  content: PropTypes.any,\n  /** Comment prefix defaults to '.ant-comment' */\n  prefixCls: String,\n  /** A datetime element containing the time to be displayed */\n  datetime: PropTypes.any,\n});\n\nexport type CommentProps = Partial<ExtractPropTypes<ReturnType<typeof commentProps>>>;\n\nconst Comment = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AComment',\n  inheritAttrs: false,\n  props: commentProps(),\n  slots: Object as CustomSlotsType<{\n    actions: any;\n    author: any;\n    avatar: any;\n    content: any;\n    datetime: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('comment', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const renderNested = (prefixCls: string, children: VueNode) => {\n      return <div class={`${prefixCls}-nested`}>{children}</div>;\n    };\n    const getAction = (actions: VueNode[]) => {\n      if (!actions || !actions.length) {\n        return null;\n      }\n      const actionList = actions.map((action, index) => <li key={`action-${index}`}>{action}</li>);\n      return actionList;\n    };\n    return () => {\n      const pre = prefixCls.value;\n\n      const actions: any[] = props.actions ?? slots.actions?.();\n      const author = props.author ?? slots.author?.();\n      const avatar = props.avatar ?? slots.avatar?.();\n      const content = props.content ?? slots.content?.();\n      const datetime = props.datetime ?? slots.datetime?.();\n\n      const avatarDom = (\n        <div class={`${pre}-avatar`}>\n          {typeof avatar === 'string' ? <img src={avatar} alt=\"comment-avatar\" /> : avatar}\n        </div>\n      );\n\n      const actionDom = actions ? (\n        <ul class={`${pre}-actions`}>{getAction(Array.isArray(actions) ? actions : [actions])}</ul>\n      ) : null;\n\n      const authorContent = (\n        <div class={`${pre}-content-author`}>\n          {author && <span class={`${pre}-content-author-name`}>{author}</span>}\n          {datetime && <span class={`${pre}-content-author-time`}>{datetime}</span>}\n        </div>\n      );\n\n      const contentDom = (\n        <div class={`${pre}-content`}>\n          {authorContent}\n          <div class={`${pre}-content-detail`}>{content}</div>\n          {actionDom}\n        </div>\n      );\n\n      const comment = (\n        <div class={`${pre}-inner`}>\n          {avatarDom}\n          {contentDom}\n        </div>\n      );\n      const children = flattenChildren(slots.default?.());\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            pre,\n            {\n              [`${pre}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n            hashId.value,\n          ]}\n        >\n          {comment}\n          {children && children.length ? renderNested(pre, children) : null}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Comment);\n"
  },
  {
    "path": "components/comment/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Comment\nsubtitle: 评论\ncover: https://gw.alipayobjects.com/zos/alicdn/ILhxpGzBO/Comment.svg\n---\n\n对网站内容的反馈、评价和讨论。\n\n## 何时使用\n\n评论组件可用于对事物的讨论，例如页面、博客文章、问题等等。\n\n## API\n\n| Property | Description                                            | Type         | Default |\n| -------- | ------------------------------------------------------ | ------------ | ------- |\n| actions  | 在评论内容下面呈现的操作项列表                         | Array\\|slot  | -       |\n| author   | 要显示为注释作者的元素                                 | string\\|slot | -       |\n| avatar   | 要显示为评论头像的元素 - 通常是 antd `Avatar` 或者 src | string\\|slot | -       |\n| content  | 评论的主要内容                                         | string\\|slot | -       |\n| datetime | 展示时间描述                                           | string\\|slot | -       |\n"
  },
  {
    "path": "components/comment/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\nexport interface ComponentToken {}\n\ntype CommentToken = FullToken<'Comment'> & {\n  commentBg: string;\n  commentPaddingBase: string;\n  commentNestIndent: string;\n  commentFontSizeBase: number;\n  commentFontSizeSm: number;\n  commentAuthorNameColor: string;\n  commentAuthorTimeColor: string;\n  commentActionColor: string;\n  commentActionHoverColor: string;\n  commentActionsMarginBottom: string;\n  commentActionsMarginTop: number;\n  commentContentDetailPMarginBottom: string;\n};\n\nconst genBaseStyle: GenerateStyle<CommentToken> = token => {\n  const {\n    componentCls,\n    commentBg,\n    commentPaddingBase,\n    commentNestIndent,\n    commentFontSizeBase,\n    commentFontSizeSm,\n    commentAuthorNameColor,\n    commentAuthorTimeColor,\n    commentActionColor,\n    commentActionHoverColor,\n    commentActionsMarginBottom,\n    commentActionsMarginTop,\n    commentContentDetailPMarginBottom,\n  } = token;\n\n  return {\n    [componentCls]: {\n      position: 'relative',\n      backgroundColor: commentBg,\n\n      [`${componentCls}-inner`]: {\n        display: 'flex',\n        padding: commentPaddingBase,\n      },\n\n      [`${componentCls}-avatar`]: {\n        position: 'relative',\n        flexShrink: 0,\n        marginRight: token.marginSM,\n        cursor: 'pointer',\n\n        [`img`]: {\n          width: '32px',\n          height: '32px',\n          borderRadius: '50%',\n        },\n      },\n\n      [`${componentCls}-content`]: {\n        position: 'relative',\n        flex: `1 1 auto`,\n        minWidth: `1px`,\n        fontSize: commentFontSizeBase,\n        wordWrap: 'break-word',\n\n        [`&-author`]: {\n          display: 'flex',\n          flexWrap: 'wrap',\n          justifyContent: 'flex-start',\n          marginBottom: token.marginXXS,\n          fontSize: commentFontSizeBase,\n\n          [`& > a,& > span`]: {\n            paddingRight: token.paddingXS,\n            fontSize: commentFontSizeSm,\n            lineHeight: `18px`,\n          },\n\n          [`&-name`]: {\n            color: commentAuthorNameColor,\n            fontSize: commentFontSizeBase,\n            transition: `color ${token.motionDurationSlow}`,\n\n            [`> *`]: {\n              color: commentAuthorNameColor,\n\n              [`&:hover`]: {\n                color: commentAuthorNameColor,\n              },\n            },\n          },\n\n          [`&-time`]: {\n            color: commentAuthorTimeColor,\n            whiteSpace: 'nowrap',\n            cursor: 'auto',\n          },\n        },\n\n        [`&-detail p`]: {\n          marginBottom: commentContentDetailPMarginBottom,\n          whiteSpace: 'pre-wrap',\n        },\n      },\n\n      [`${componentCls}-actions`]: {\n        marginTop: commentActionsMarginTop,\n        marginBottom: commentActionsMarginBottom,\n        paddingLeft: 0,\n\n        [`> li`]: {\n          display: 'inline-block',\n          color: commentActionColor,\n\n          [`> span`]: {\n            marginRight: '10px',\n            color: commentActionColor,\n            fontSize: commentFontSizeSm,\n            cursor: 'pointer',\n            transition: `color ${token.motionDurationSlow}`,\n            userSelect: 'none',\n\n            [`&:hover`]: {\n              color: commentActionHoverColor,\n            },\n          },\n        },\n      },\n\n      [`${componentCls}-nested`]: {\n        marginLeft: commentNestIndent,\n      },\n\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook('Comment', token => {\n  const commentToken = mergeToken<CommentToken>(token, {\n    commentBg: 'inherit',\n    commentPaddingBase: `${token.paddingMD}px 0`,\n    commentNestIndent: `44px`,\n    commentFontSizeBase: token.fontSize,\n    commentFontSizeSm: token.fontSizeSM,\n    commentAuthorNameColor: token.colorTextTertiary,\n    commentAuthorTimeColor: token.colorTextPlaceholder,\n    commentActionColor: token.colorTextTertiary,\n    commentActionHoverColor: token.colorTextSecondary,\n    commentActionsMarginBottom: 'inherit',\n    commentActionsMarginTop: token.marginSM,\n    commentContentDetailPMarginBottom: 'inherit',\n  });\n\n  return [genBaseStyle(commentToken)];\n});\n"
  },
  {
    "path": "components/components.ts",
    "content": "export type { AffixProps } from './affix';\nexport { default as Affix } from './affix';\n\nexport type { AnchorProps, AnchorLinkProps } from './anchor';\nexport { default as Anchor, AnchorLink } from './anchor';\n\nexport type { AutoCompleteProps } from './auto-complete';\nexport { default as AutoComplete, AutoCompleteOptGroup, AutoCompleteOption } from './auto-complete';\n\nexport type { AlertProps } from './alert';\nexport { default as Alert } from './alert';\n\nexport type { AvatarProps } from './avatar';\nexport { default as Avatar, AvatarGroup } from './avatar';\n\nexport type { BadgeProps } from './badge';\nexport { default as Badge, BadgeRibbon } from './badge';\n\nexport type { BreadcrumbProps, BreadcrumbItemProps, BreadcrumbSeparatorProps } from './breadcrumb';\nexport { default as Breadcrumb, BreadcrumbItem, BreadcrumbSeparator } from './breadcrumb';\n\nexport type { ButtonProps } from './button';\nexport { default as Button, ButtonGroup } from './button';\n\nexport type { CalendarProps } from './calendar';\nexport { default as Calendar } from './calendar';\n\nexport type { CardProps } from './card';\nexport { default as Card, CardGrid, CardMeta } from './card';\n\nexport type { CollapseProps, CollapsePanelProps } from './collapse';\nexport { default as Collapse, CollapsePanel } from './collapse';\n\nexport type { CarouselProps } from './carousel';\nexport { default as Carousel } from './carousel';\n\nexport type { CascaderProps } from './cascader';\nexport { default as Cascader } from './cascader';\n\nexport type { CheckboxProps, CheckboxGroupProps, CheckboxOptionType } from './checkbox';\nexport { default as Checkbox, CheckboxGroup } from './checkbox';\n\nexport type { ColProps } from './col';\nexport { default as Col } from './col';\n\nexport type { CommentProps } from './comment';\nexport { default as Comment } from './comment';\n\nexport type { ConfigProviderProps } from './config-provider';\nexport { default as ConfigProvider } from './config-provider';\n\nexport type { DatePickerProps } from './date-picker';\nexport {\n  default as DatePicker,\n  MonthPicker,\n  WeekPicker,\n  RangePicker,\n  QuarterPicker,\n} from './date-picker';\n\nexport type { DescriptionsProps } from './descriptions';\nexport { default as Descriptions, DescriptionsItem } from './descriptions';\n\nexport type { DividerProps } from './divider';\nexport { default as Divider } from './divider';\n\nexport type { DropdownProps } from './dropdown';\nexport { default as Dropdown, DropdownButton } from './dropdown';\n\nexport type { DrawerProps } from './drawer';\nexport { default as Drawer } from './drawer';\n\nexport type { EmptyProps } from './empty';\nexport { default as Empty } from './empty';\n\nexport type {\n  FloatButtonProps,\n  FloatButtonGroupProps,\n  BackTopProps,\n} from './float-button/interface';\nexport { default as FloatButton, FloatButtonGroup, BackTop } from './float-button';\n\nexport type { FormProps, FormItemProps, FormInstance, FormItemInstance } from './form';\nexport { default as Form, FormItem, FormItemRest } from './form';\n\nexport { default as Grid } from './grid';\n\nexport type { InputProps, TextAreaProps } from './input';\nexport { default as Input, InputGroup, InputPassword, InputSearch, Textarea } from './input';\n\nexport type { ImageProps } from './image';\nexport { default as Image, ImagePreviewGroup } from './image';\n\nexport type { InputNumberProps } from './input-number';\nexport { default as InputNumber } from './input-number';\n\nexport type { LayoutProps, SiderProps } from './layout';\nexport {\n  default as Layout,\n  LayoutHeader,\n  LayoutSider,\n  LayoutFooter,\n  LayoutContent,\n} from './layout';\n\nexport type { ListProps, ListItemProps, ListItemMetaProps } from './list';\nexport { default as List, ListItem, ListItemMeta } from './list';\n\nexport type { MessageArgsProps } from './message';\nexport { default as message } from './message';\n\nexport type {\n  MenuProps,\n  MenuTheme,\n  SubMenuProps,\n  MenuItemProps,\n  MenuMode,\n  MenuDividerProps,\n  ItemType,\n} from './menu';\nexport { default as Menu, MenuDivider, MenuItem, MenuItemGroup, SubMenu } from './menu';\n\nexport type { MentionsProps } from './mentions';\nexport { default as Mentions, MentionsOption } from './mentions';\n\nexport type { ModalProps, ModalFuncProps } from './modal';\nexport { default as Modal } from './modal';\n\nexport type { StatisticProps } from './statistic';\nexport { default as Statistic, StatisticCountdown } from './statistic';\n\nexport type { NotificationPlacement } from './notification';\nexport { default as notification } from './notification';\n\nexport type { PageHeaderProps } from './page-header';\nexport { default as PageHeader } from './page-header';\n\nexport type { PaginationProps } from './pagination';\nexport { default as Pagination } from './pagination';\n\nexport type { PopconfirmProps } from './popconfirm';\nexport { default as Popconfirm } from './popconfirm';\n\nexport type { PopoverProps } from './popover';\nexport { default as Popover } from './popover';\n\nexport type { ProgressProps } from './progress';\nexport { default as Progress } from './progress';\n\nexport type { RadioProps, RadioChangeEvent, RadioGroupProps } from './radio';\nexport { default as Radio, RadioButton, RadioGroup } from './radio';\n\nexport type { RateProps } from './rate';\nexport { default as Rate } from './rate';\n\nexport type { ResultProps } from './result';\nexport { default as Result } from './result';\n\nexport type { RowProps } from './row';\nexport { default as Row } from './row';\n\nexport type { SelectProps } from './select';\nexport { default as Select, SelectOptGroup, SelectOption } from './select';\n\nexport type {\n  SkeletonProps,\n  SkeletonButtonProps,\n  SkeletonInputProps,\n  SkeletonImageProps,\n  SkeletonAvatarProps,\n  SkeletonTitleProps,\n} from './skeleton';\nexport {\n  default as Skeleton,\n  SkeletonButton,\n  SkeletonAvatar,\n  SkeletonInput,\n  SkeletonImage,\n  SkeletonTitle,\n} from './skeleton';\n\nexport type { SliderProps } from './slider';\nexport { default as Slider } from './slider';\n\nexport type { SpaceProps } from './space';\nexport { default as Space, Compact } from './space';\n\nexport type { SpinProps } from './spin';\nexport { default as Spin } from './spin';\n\nexport type { StepProps, StepsProps } from './steps';\nexport { default as Steps, Step } from './steps';\n\nexport type { SwitchProps } from './switch';\nexport { default as Switch } from './switch';\n\nexport type {\n  TableProps,\n  TablePaginationConfig,\n  ColumnGroupType as TableColumnGroupType,\n  ColumnType as TableColumnType,\n  ColumnProps as TableColumnProps,\n  ColumnsType as TableColumnsType,\n} from './table';\nexport {\n  default as Table,\n  TableColumn,\n  TableColumnGroup,\n  TableSummary,\n  TableSummaryRow,\n  TableSummaryCell,\n} from './table';\n\nexport type { TransferProps } from './transfer';\nexport { default as Transfer } from './transfer';\n\nexport type { TreeProps, DirectoryTreeProps } from './tree';\nexport { default as Tree, TreeNode, DirectoryTree } from './tree';\n\nexport type { TreeSelectProps } from './tree-select';\nexport { default as TreeSelect, TreeSelectNode } from './tree-select';\n\nexport type { TabsProps, TabPaneProps } from './tabs';\nexport { default as Tabs, TabPane } from './tabs';\n\nexport type { TagProps } from './tag';\nexport { default as Tag, CheckableTag } from './tag';\n\nexport type { TimePickerProps, TimeRangePickerProps } from './time-picker';\nexport { default as TimePicker, TimeRangePicker } from './time-picker';\n\nexport type { TimelineProps, TimelineItemProps } from './timeline';\nexport { default as Timeline, TimelineItem } from './timeline';\n\nexport type { TooltipProps } from './tooltip';\nexport { default as Tooltip } from './tooltip';\n\nexport type { TypographyProps } from './typography';\nexport {\n  default as Typography,\n  TypographyLink,\n  TypographyParagraph,\n  TypographyText,\n  TypographyTitle,\n} from './typography';\n\nexport type { UploadProps, UploadListProps, UploadChangeParam, UploadFile } from './upload';\n\nexport { default as Upload, UploadDragger } from './upload';\n\nexport { default as LocaleProvider } from './locale-provider';\n\nexport { default as Watermark } from './watermark';\nexport type { WatermarkProps } from './watermark';\n\nexport type { SegmentedProps } from './segmented';\nexport { default as Segmented } from './segmented';\n\nexport type { QRCodeProps } from './qrcode';\nexport { default as QRCode } from './qrcode';\n\nexport type { TourProps, TourStepProps } from './tour';\nexport { default as Tour } from './tour';\n\nexport type { AppProps } from './app';\nexport { default as App } from './app';\n\nexport type { FlexProps } from './flex';\nexport { default as Flex } from './flex';\n"
  },
  {
    "path": "components/config-provider/DisabledContext.ts",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { computed, inject, ref, provide } from 'vue';\n\nexport type DisabledType = boolean | undefined;\nconst DisabledContextKey: InjectionKey<Ref<DisabledType>> = Symbol('DisabledContextKey');\n\nexport const useInjectDisabled = () => {\n  return inject(DisabledContextKey, ref<DisabledType>(undefined));\n};\nexport const useProviderDisabled = (disabled: Ref<DisabledType>) => {\n  const parentDisabled = useInjectDisabled();\n  provide(\n    DisabledContextKey,\n    computed(() => disabled.value ?? parentDisabled.value),\n  );\n  return disabled;\n};\n"
  },
  {
    "path": "components/config-provider/SizeContext.ts",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { computed, inject, ref, provide } from 'vue';\nexport type SizeType = 'small' | 'middle' | 'large' | undefined;\nconst SizeContextKey: InjectionKey<Ref<SizeType>> = Symbol('SizeContextKey');\n\nexport const useInjectSize = () => {\n  return inject(SizeContextKey, ref(undefined as SizeType));\n};\nexport const useProviderSize = (size: Ref<SizeType>) => {\n  const parentSize = useInjectSize();\n  provide(\n    SizeContextKey,\n    computed(() => size.value || parentSize.value),\n  );\n  return size;\n};\n"
  },
  {
    "path": "components/config-provider/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport ConfigProvider from '..';\nimport Button from '../../button';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { sleep } from '../../../tests/utils';\n\ndescribe('ConfigProvider', () => {\n  mountTest({\n    render() {\n      return (\n        <>\n          <ConfigProvider>\n            <div />\n          </ConfigProvider>\n        </>\n      );\n    },\n  });\n\n  it('Content Security Policy', () => {\n    const csp = { nonce: 'test-antd' };\n    const wrapper = mount({\n      render() {\n        return (\n          <ConfigProvider csp={csp}>\n            <Button ref=\"button\" />\n          </ConfigProvider>\n        );\n      },\n    });\n    expect(wrapper.findComponent({ ref: 'button' }).vm.$refs.wave.csp.nonce).toBe(csp.nonce);\n  });\n\n  it('autoInsertSpaceInButton', async () => {\n    const wrapper = mount({\n      data() {\n        return {\n          autoInsertSpaceInButton: false,\n        };\n      },\n      render() {\n        return (\n          <ConfigProvider autoInsertSpaceInButton={this.autoInsertSpaceInButton}>\n            <Button ref=\"button\">确定</Button>\n          </ConfigProvider>\n        );\n      },\n    });\n\n    expect(wrapper.find('.ant-btn').text()).toBe('确定');\n    wrapper.vm.autoInsertSpaceInButton = true;\n    await sleep();\n    expect(wrapper.find('.ant-btn').text()).toBe('确 定');\n  });\n});\n"
  },
  {
    "path": "components/config-provider/context.ts",
    "content": "import type { ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue';\nimport { computed, inject, provide } from 'vue';\nimport type { ValidateMessages } from '../form/interface';\nimport type { RequiredMark } from '../form/Form';\nimport type { RenderEmptyHandler } from './renderEmpty';\nimport type { TransformCellTextProps } from '../table/interface';\nimport type { Locale } from '../locale-provider';\nimport type { DerivativeFunc } from '../_util/cssinjs';\nimport type { AliasToken, SeedToken } from '../theme/internal';\nimport type { MapToken, OverrideToken } from '../theme/interface';\nimport type { VueNode } from '../_util/type';\nimport { objectType } from '../_util/type';\n\nexport const defaultIconPrefixCls = 'anticon';\n\ntype GlobalFormCOntextProps = {\n  validateMessages?: Ref<ValidateMessages>;\n};\n\nexport type DirectionType = 'ltr' | 'rtl' | undefined;\n\nexport const GlobalFormContextKey: InjectionKey<GlobalFormCOntextProps> =\n  Symbol('GlobalFormContextKey');\n\nexport const useProvideGlobalForm = (state: GlobalFormCOntextProps) => {\n  provide(GlobalFormContextKey, state);\n};\n\nexport const useInjectGlobalForm = () => {\n  return inject(GlobalFormContextKey, { validateMessages: computed(() => undefined) });\n};\n\nexport const GlobalConfigContextKey: InjectionKey<GlobalFormCOntextProps> =\n  Symbol('GlobalConfigContextKey');\n\nexport interface CSPConfig {\n  nonce?: string;\n}\nexport interface Theme {\n  primaryColor?: string;\n  infoColor?: string;\n  successColor?: string;\n  processingColor?: string;\n  errorColor?: string;\n  warningColor?: string;\n}\n\nexport type SizeType = 'small' | 'middle' | 'large' | undefined;\n\nexport type Direction = 'ltr' | 'rtl';\n\nexport type MappingAlgorithm = DerivativeFunc<SeedToken, MapToken>;\n\nexport interface ThemeConfig {\n  token?: Partial<AliasToken>;\n  components?: OverrideToken;\n  algorithm?: MappingAlgorithm | MappingAlgorithm[];\n  hashed?: boolean;\n  inherit?: boolean;\n}\n\nexport const configProviderProps = () => ({\n  iconPrefixCls: String,\n  getTargetContainer: {\n    type: Function as PropType<() => HTMLElement | Window>,\n  },\n  getPopupContainer: {\n    type: Function as PropType<(triggerNode?: HTMLElement) => HTMLElement>,\n  },\n  prefixCls: String,\n  getPrefixCls: {\n    type: Function as PropType<(suffixCls?: string, customizePrefixCls?: string) => string>,\n  },\n  renderEmpty: {\n    type: Function as PropType<RenderEmptyHandler>,\n  },\n  transformCellText: {\n    type: Function as PropType<(tableProps: TransformCellTextProps) => any>,\n  },\n  csp: objectType<CSPConfig>(),\n  input: objectType<{ autocomplete?: string }>(),\n  autoInsertSpaceInButton: { type: Boolean, default: undefined },\n  locale: objectType<Locale>(),\n  pageHeader: objectType<{ ghost?: boolean }>(),\n  componentSize: {\n    type: String as PropType<SizeType>,\n  },\n  componentDisabled: { type: Boolean, default: undefined },\n  direction: {\n    type: String as PropType<'ltr' | 'rtl'>,\n    default: 'ltr',\n  },\n  space: objectType<{ size?: SizeType | number }>(),\n  virtual: { type: Boolean, default: undefined },\n  dropdownMatchSelectWidth: { type: [Number, Boolean], default: true },\n  form: objectType<{\n    validateMessages?: ValidateMessages;\n    requiredMark?: RequiredMark;\n    colon?: boolean;\n  }>(),\n  pagination: objectType<{\n    showSizeChanger?: boolean;\n  }>(),\n  theme: objectType<ThemeConfig>(),\n  select: objectType<{\n    showSearch?: boolean;\n  }>(),\n  wave: objectType<{\n    disabled?: boolean;\n  }>(),\n});\n\nexport type ConfigProviderProps = Partial<ExtractPropTypes<ReturnType<typeof configProviderProps>>>;\n\nexport interface ConfigProviderInnerProps {\n  csp?: ComputedRef<CSPConfig>;\n  autoInsertSpaceInButton?: ComputedRef<boolean>;\n  locale?: ComputedRef<Locale>;\n  direction?: ComputedRef<'ltr' | 'rtl'>;\n  space?: ComputedRef<{\n    size?: number | SizeType;\n  }>;\n  virtual?: ComputedRef<boolean>;\n  dropdownMatchSelectWidth?: ComputedRef<number | boolean>;\n  getPrefixCls: (suffixCls?: string, customizePrefixCls?: string) => string;\n  iconPrefixCls: ComputedRef<string>;\n  theme?: ComputedRef<ThemeConfig>;\n  renderEmpty?: (name?: string) => VueNode;\n  getTargetContainer?: ComputedRef<() => HTMLElement | Window>;\n  getPopupContainer?: ComputedRef<(triggerNode?: HTMLElement) => HTMLElement>;\n  pageHeader?: ComputedRef<{\n    ghost?: boolean;\n  }>;\n  input?: ComputedRef<{\n    autocomplete?: string;\n  }>;\n  pagination?: ComputedRef<{\n    showSizeChanger?: boolean;\n  }>;\n  form?: ComputedRef<{\n    validateMessages?: ValidateMessages;\n    requiredMark?: RequiredMark;\n    colon?: boolean;\n  }>;\n  select?: ComputedRef<{\n    showSearch?: boolean;\n  }>;\n  componentSize?: ComputedRef<SizeType>;\n  componentDisabled?: ComputedRef<boolean>;\n  transformCellText?: ComputedRef<(tableProps: TransformCellTextProps) => any>;\n  wave?: ComputedRef<{\n    disabled?: boolean;\n  }>;\n  flex?: ComputedRef<{\n    vertical?: boolean;\n  }>;\n}\n\nexport const configProviderKey: InjectionKey<ConfigProviderInnerProps> = Symbol('configProvider');\n\nexport const defaultConfigProvider: ConfigProviderInnerProps = {\n  getPrefixCls: (suffixCls?: string, customizePrefixCls?: string) => {\n    if (customizePrefixCls) return customizePrefixCls;\n    return suffixCls ? `ant-${suffixCls}` : 'ant';\n  },\n  iconPrefixCls: computed(() => defaultIconPrefixCls),\n  getPopupContainer: computed(() => () => document.body),\n  direction: computed(() => 'ltr'),\n};\n\nexport const useConfigContextInject = () => {\n  return inject(configProviderKey, defaultConfigProvider);\n};\n\nexport const useConfigContextProvider = (props: ConfigProviderInnerProps) => {\n  return provide(configProviderKey, props);\n};\n"
  },
  {
    "path": "components/config-provider/cssVariables.ts",
    "content": "/* eslint-disable import/prefer-default-export, prefer-destructuring */\n\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { generate } from '@ant-design/colors';\nimport type { Theme } from './context';\nimport { updateCSS } from '../vc-util/Dom/dynamicCSS';\nimport canUseDom from '../_util/canUseDom';\nimport warning from '../_util/warning';\n\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\n\nexport function getStyle(globalPrefixCls: string, theme: Theme) {\n  const variables: Record<string, string> = {};\n\n  const formatColor = (color: TinyColor, updater?: (cloneColor: TinyColor) => TinyColor) => {\n    let clone = color.clone();\n    clone = updater?.(clone) || clone;\n    return clone.toRgbString();\n  };\n\n  const fillColor = (colorVal: string, type: string) => {\n    const baseColor = new TinyColor(colorVal);\n    const colorPalettes = generate(baseColor.toRgbString());\n\n    variables[`${type}-color`] = formatColor(baseColor);\n    variables[`${type}-color-disabled`] = colorPalettes[1];\n    variables[`${type}-color-hover`] = colorPalettes[4];\n    variables[`${type}-color-active`] = colorPalettes[6];\n    variables[`${type}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();\n    variables[`${type}-color-deprecated-bg`] = colorPalettes[0];\n    variables[`${type}-color-deprecated-border`] = colorPalettes[2];\n  };\n\n  // ================ Primary Color ================\n  if (theme.primaryColor) {\n    fillColor(theme.primaryColor, 'primary');\n\n    const primaryColor = new TinyColor(theme.primaryColor);\n    const primaryColors = generate(primaryColor.toRgbString());\n\n    // Legacy - We should use semantic naming standard\n    primaryColors.forEach((color, index) => {\n      variables[`primary-${index + 1}`] = color;\n    });\n    // Deprecated\n    variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n    variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n    variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n    variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n    variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c =>\n      c.setAlpha(c.getAlpha() * 0.12),\n    );\n\n    const primaryActiveColor = new TinyColor(primaryColors[0]);\n    variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c =>\n      c.setAlpha(c.getAlpha() * 0.3),\n    );\n    variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c =>\n      c.darken(2),\n    );\n  }\n\n  // ================ Success Color ================\n  if (theme.successColor) {\n    fillColor(theme.successColor, 'success');\n  }\n\n  // ================ Warning Color ================\n  if (theme.warningColor) {\n    fillColor(theme.warningColor, 'warning');\n  }\n\n  // ================= Error Color =================\n  if (theme.errorColor) {\n    fillColor(theme.errorColor, 'error');\n  }\n\n  // ================= Info Color ==================\n  if (theme.infoColor) {\n    fillColor(theme.infoColor, 'info');\n  }\n\n  // Convert to css variables\n  const cssList = Object.keys(variables).map(\n    key => `--${globalPrefixCls}-${key}: ${variables[key]};`,\n  );\n\n  return `\n  :root {\n    ${cssList.join('\\n')}\n  }\n  `.trim();\n}\n\nexport function registerTheme(globalPrefixCls: string, theme: Theme) {\n  const style = getStyle(globalPrefixCls, theme);\n\n  if (canUseDom()) {\n    updateCSS(style, `${dynamicStyleMark}-dynamic-theme`);\n  } else {\n    warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.');\n  }\n}\n"
  },
  {
    "path": "components/config-provider/demo/direction.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 方向\n  en-US: Direction\n---\n\n## zh-CN\n\n这里列出了支持 `rtl` 方向的组件，您可以在演示中切换方向。\n\n## en-US\n\nComponents which support rtl direction are listed here, you can toggle the direction in the demo.\n\n</docs>\n\n<template>\n  <span style=\"margin-right: 16px\">Change direction of components:</span>\n  <a-radio-group v-model:value=\"state.direction\">\n    <a-radio-button value=\"ltr\">LTR</a-radio-button>\n    <a-radio-button value=\"rtl\">RTL</a-radio-button>\n  </a-radio-group>\n  <a-divider />\n  <a-config-provider :direction=\"state.direction\">\n    <a-space direction=\"vertical\" class=\"direction-components\">\n      <a-row>\n        <a-col :span=\"24\">\n          <a-divider orientation=\"left\">Cascader example</a-divider>\n          <a-cascader\n            :options=\"cascaderOptions\"\n            placeholder=\"یک مورد انتخاب کنید\"\n            :placement=\"state.popupPlacement\"\n            @change=\"onCascaderChange\"\n          >\n            <template #suffixIcon><SearchIcon /></template>\n          </a-cascader>\n          &nbsp;&nbsp;&nbsp;&nbsp; With search:\n          <a-cascader\n            :options=\"cascaderOptions\"\n            placeholder=\"Select an item\"\n            :placement=\"state.popupPlacement\"\n            :show-search=\"{ filter: cascaderFilter }\"\n            @change=\"onCascaderChange\"\n          >\n            <template #suffixIcon><SmileOutlined /></template>\n          </a-cascader>\n        </a-col>\n      </a-row>\n      <a-row>\n        <a-col :span=\"12\">\n          <a-divider orientation=\"left\">Switch example</a-divider>\n          <a-space>\n            <a-switch default-checked />\n            <a-switch loading default-checked />\n            <a-switch size=\"small\" loading />\n          </a-space>\n        </a-col>\n        <a-col :span=\"12\">\n          <a-divider orientation=\"left\">Radio Group example</a-divider>\n          <a-radio-group default-value=\"c\" button-style=\"solid\">\n            <a-radio-button value=\"a\">تهران</a-radio-button>\n            <a-radio-button value=\"b\" disabled>اصفهان</a-radio-button>\n            <a-radio-button value=\"c\">فارس</a-radio-button>\n            <a-radio-button value=\"d\">خوزستان</a-radio-button>\n          </a-radio-group>\n        </a-col>\n      </a-row>\n      <a-row>\n        <a-col :span=\"12\">\n          <a-divider orientation=\"left\">Button example</a-divider>\n          <div class=\"button-demo\">\n            <a-button type=\"primary\">\n              <template #icon><DownloadOutlined /></template>\n            </a-button>\n            <a-button type=\"primary\" shape=\"circle\">\n              <template #icon><DownloadOutlined /></template>\n            </a-button>\n            <a-button type=\"primary\" shape=\"round\">\n              <template #icon><DownloadOutlined /></template>\n            </a-button>\n            <a-button type=\"primary\" shape=\"round\">\n              <template #icon><DownloadOutlined /></template>\n              Download\n            </a-button>\n            <a-button type=\"primary\">\n              <template #icon><DownloadOutlined /></template>\n              Download\n            </a-button>\n            <br />\n            <a-button-group>\n              <a-button type=\"primary\">\n                <LeftOutlined />\n                Backward\n              </a-button>\n              <a-button type=\"primary\">\n                Forward\n                <RightOutlined />\n              </a-button>\n            </a-button-group>\n            <a-button type=\"primary\" loading>Loading</a-button>\n            <a-button type=\"primary\" size=\"small\" loading>Loading</a-button>\n          </div>\n        </a-col>\n        <a-col :span=\"12\">\n          <a-divider orientation=\"left\">Tree example</a-divider>\n          <a-tree\n            v-model:expandedKeys=\"expandedKeys\"\n            v-model:selectedKeys=\"selectedKeys\"\n            v-model:checkedKeys=\"checkedKeys\"\n            show-line\n            checkable\n            :tree-data=\"treeData\"\n          >\n            <template #title=\"{ title, key }\">\n              <span v-if=\"key === '0-0-1-0'\" style=\"color: #1890ff\">{{ title }}</span>\n              <template v-else>{{ title }}</template>\n            </template>\n          </a-tree>\n        </a-col>\n      </a-row>\n      <a-row>\n        <a-col :span=\"24\">\n          <a-divider orientation=\"left\">Input (Input Group) example</a-divider>\n          <a-space direction=\"vertical\" style=\"width: 100%\">\n            <a-input-group size=\"large\">\n              <a-row :gutter=\"8\">\n                <a-col :span=\"5\">\n                  <a-input default-value=\"0571\" />\n                </a-col>\n                <a-col :span=\"8\">\n                  <a-input default-value=\"26888888\" />\n                </a-col>\n              </a-row>\n            </a-input-group>\n            <a-input-group compact>\n              <a-input style=\"width: 20%\" default-value=\"0571\" />\n              <a-input style=\"width: 30%\" default-value=\"26888888\" />\n            </a-input-group>\n            <a-input-group compact>\n              <a-select default-value=\"Option1\">\n                <a-select-option value=\"Option1\">Option1</a-select-option>\n                <a-select-option value=\"Option2\">Option2</a-select-option>\n              </a-select>\n              <a-input style=\"width: 50%\" default-value=\"input content\" />\n              <a-inputNumber />\n            </a-input-group>\n            <a-input-search placeholder=\"input search text\" enter-button=\"Search\" size=\"large\" />\n            <div style=\"margin-bottom: 16px\">\n              <a-input default-value=\"mysite\">\n                <template #selectBefore>\n                  <a-select default-value=\"Http://\" style=\"width: 90px\">\n                    <a-select-option value=\"Http://\">Http://</a-select-option>\n                    <a-select-option value=\"Https://\">Https://</a-select-option>\n                  </a-select>\n                </template>\n                <template #selectAfter>\n                  <a-select default-value=\".com\" style=\"width: 80px\">\n                    <a-select-option value=\".com\">.com</a-select-option>\n                    <a-select-option value=\".jp\">.jp</a-select-option>\n                    <a-select-option value=\".cn\">.cn</a-select-option>\n                    <a-select-option value=\".org\">.org</a-select-option>\n                  </a-select>\n                </template>\n              </a-input>\n            </div>\n            <a-row>\n              <a-col :span=\"12\">\n                <a-divider orientation=\"left\">Select example</a-divider>\n                <a-space wrap>\n                  <a-select mode=\"multiple\" default-value=\"مورچه\" style=\"width: 120px\">\n                    <a-select-option value=\"jack\">Jack</a-select-option>\n                    <a-select-option value=\"مورچه\">مورچه</a-select-option>\n                    <a-select-option value=\"disabled\" disabled>Disabled</a-select-option>\n                    <a-select-option value=\"Yiminghe\">yiminghe</a-select-option>\n                  </a-select>\n                  <a-select default-value=\"مورچه\" style=\"width: 120px\" disabled>\n                    <a-select-option value=\"مورچه\">مورچه</a-select-option>\n                  </a-select>\n                  <a-select default-value=\"مورچه\" style=\"width: 120px\" loading>\n                    <a-select-option value=\"مورچه\">مورچه</a-select-option>\n                  </a-select>\n                  <a-select\n                    show-search\n                    style=\"width: 200px\"\n                    placeholder=\"Select a person\"\n                    option-filter-prop=\"children\"\n                    :filter-option=\"\n                      (input, option) =>\n                        option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n                    \"\n                  >\n                    <a-select-option value=\"jack\">Jack</a-select-option>\n                    <a-select-option value=\"سعید\">سعید</a-select-option>\n                    <a-select-option value=\"tom\">Tom</a-select-option>\n                  </a-select>\n                </a-space>\n              </a-col>\n              <a-col :span=\"12\">\n                <a-divider orientation=\"left\">TreeSelect example</a-divider>\n                <div>\n                  <a-tree-select\n                    show-search\n                    style=\"width: 100%\"\n                    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n                    placeholder=\"Please select\"\n                    allow-clear\n                    tree-default-expand-all\n                    :tree-data=\"treeSelectData\"\n                  ></a-tree-select>\n                </div>\n              </a-col>\n            </a-row>\n            <a-row>\n              <a-col :span=\"24\">\n                <a-divider orientation=\"left\">Modal example</a-divider>\n                <div>\n                  <a-button type=\"primary\" @click=\"showModal\">Open Modal</a-button>\n                  <a-modal v-model:open=\"state.modalVisible\" title=\"پنچره ساده\">\n                    <p>نگاشته‌های خود را اینجا قراردهید</p>\n                    <p>نگاشته‌های خود را اینجا قراردهید</p>\n                    <p>نگاشته‌های خود را اینجا قراردهید</p>\n                  </a-modal>\n                </div>\n              </a-col>\n            </a-row>\n            <a-row>\n              <a-col :span=\"24\">\n                <a-divider orientation=\"left\">Steps example</a-divider>\n                <div>\n                  <a-steps\n                    progress-dot\n                    :current=\"state.currentStep\"\n                    :items=\"[\n                      {\n                        title: 'Finished',\n                        description: 'This is a description.',\n                      },\n                      {\n                        title: 'In Progress',\n                        description: 'This is a description.',\n                      },\n                      {\n                        title: 'Waiting',\n                        description: 'This is a description.',\n                      },\n                    ]\"\n                  ></a-steps>\n                  <br />\n                  <a-steps\n                    :current=\"state.currentStep\"\n                    :items=\"[\n                      {\n                        title: 'Step 1',\n                        description: 'This is a description.',\n                      },\n                      {\n                        title: 'Step 2',\n                        description: 'This is a description.',\n                      },\n                      {\n                        title: 'Step 3',\n                        description: 'This is a description.',\n                      },\n                    ]\"\n                    @change=\"onStepsChange\"\n                  ></a-steps>\n                </div>\n              </a-col>\n            </a-row>\n            <a-row>\n              <a-col :span=\"12\">\n                <a-divider orientation=\"left\">Rate example</a-divider>\n                <div>\n                  <a-rate v-model:value=\"rateValue\" />\n                  <br />\n                  <strong>* Note:</strong>\n                  Half star not implemented in RTL direction.\n                </div>\n              </a-col>\n              <a-col :span=\"12\">\n                <a-divider orientation=\"left\">Badge example</a-divider>\n                <div>\n                  <div>\n                    <a-badge :count=\"state.badgeCount\">\n                      <a href=\"#\" class=\"head-example\" />\n                    </a-badge>\n                    <a-button-group>\n                      <a-button @click=\"declineBadge\">\n                        <MinusOutlined />\n                      </a-button>\n                      <a-button @click=\"increaseBadge\">\n                        <PlusOutlined />\n                      </a-button>\n                    </a-button-group>\n                  </div>\n                  <div style=\"margin-top: 10px\">\n                    <a-badge :dot=\"state.showBadge\">\n                      <a href=\"#\" class=\"head-example\" />\n                    </a-badge>\n                    <a-switch :checked=\"state.showBadge\" @change=\"onChangeBadge\" />\n                  </div>\n                </div>\n              </a-col>\n            </a-row>\n          </a-space>\n        </a-col>\n      </a-row>\n      <a-row>\n        <a-col :span=\"24\">\n          <a-divider orientation=\"left\">Pagination example</a-divider>\n          <a-pagination show-size-changer :default-current=\"3\" :total=\"500\" />\n        </a-col>\n      </a-row>\n      <a-row>\n        <a-col :span=\"24\">\n          <a-divider orientation=\"left\">Grid System example</a-divider>\n          <div class=\"grid-demo\">\n            <div class=\"code-box-demo\">\n              <p>\n                <strong>* Note:</strong>\n                Every calculation in RTL grid system is from right side (offset, push, etc.)\n              </p>\n              <a-row>\n                <a-col :span=\"8\">col-8</a-col>\n                <a-col :span=\"8\" :offset=\"8\">col-8</a-col>\n              </a-row>\n              <a-row>\n                <a-col :span=\"6\" :offset=\"6\">col-6 col-offset-6</a-col>\n                <a-col :span=\"6\" :offset=\"6\">col-6 col-offset-6</a-col>\n              </a-row>\n              <a-row>\n                <a-col :span=\"12\" :offset=\"6\">col-12 col-offset-6</a-col>\n              </a-row>\n              <a-row>\n                <a-col :span=\"18\" :push=\"6\">col-18 col-push-6</a-col>\n                <a-col :span=\"6\" :pull=\"18\">col-6 col-pull-18</a-col>\n              </a-row>\n            </div>\n          </div>\n        </a-col>\n      </a-row>\n    </a-space>\n  </a-config-provider>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, watch, ref } from 'vue';\n\nimport {\n  SearchOutlined as SearchIcon,\n  SmileOutlined,\n  DownloadOutlined,\n  LeftOutlined,\n  RightOutlined,\n  MinusOutlined,\n  PlusOutlined,\n} from '@ant-design/icons-vue';\nimport type { TreeProps, TreeSelectProps, CascaderProps } from 'ant-design-vue';\n\nconst state = reactive({\n  currentStep: 0,\n  modalVisible: false,\n\n  badgeCount: 5,\n  showBadge: true,\n  direction: 'ltr' as 'ltr' | 'rtl',\n  popupPlacement: 'bottomLeft' as CascaderProps['placement'],\n});\nconst expandedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\n\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        disabled: true,\n        children: [\n          { title: 'leaf', key: '0-0-0-0', disableCheckbox: true },\n          { title: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [{ key: '0-0-1-0', title: 'sss' }],\n      },\n    ],\n  },\n];\n\nconst treeSelectData = ref<TreeSelectProps['treeData']>([\n  {\n    title: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        title: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            title: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            title: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(\n  () => state.direction,\n  directionValue => {\n    if (directionValue === 'rtl') {\n      state.popupPlacement = 'bottomRight';\n    } else {\n      state.popupPlacement = 'bottomLeft';\n    }\n  },\n);\nconst cascaderOptions = [\n  {\n    value: 'tehran',\n    label: 'تهران',\n    children: [\n      {\n        value: 'tehran-c',\n        label: 'تهران',\n        children: [\n          {\n            value: 'saadat-abad',\n            label: 'سعادت آیاد',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'ardabil',\n    label: 'اردبیل',\n    children: [\n      {\n        value: 'ardabil-c',\n        label: 'اردبیل',\n        children: [\n          {\n            value: 'primadar',\n            label: 'پیرمادر',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'gilan',\n    label: 'گیلان',\n    children: [\n      {\n        value: 'rasht',\n        label: 'رشت',\n        children: [\n          {\n            value: 'district-3',\n            label: 'منطقه ۳',\n          },\n        ],\n      },\n    ],\n  },\n];\n\n// ==== Cascader ====\nconst cascaderFilter = (inputValue, path) =>\n  path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\n\nconst onCascaderChange = value => {\n  console.log(value);\n};\n// ==== End Cascader ====\n\n// ==== Modal ====\nconst showModal = () => {\n  state.modalVisible = true;\n};\n\n// ==== End Modal ====\n\nconst onStepsChange = currentStep => {\n  console.log('onChange:', currentStep);\n  state.currentStep = currentStep;\n};\n\n// ==== Badge ====\n\nconst increaseBadge = () => {\n  const badgeCount = state.badgeCount + 1;\n  state.badgeCount = badgeCount;\n};\n\nconst declineBadge = () => {\n  let badgeCount = state.badgeCount - 1;\n  if (badgeCount < 0) {\n    badgeCount = 0;\n  }\n  state.badgeCount = badgeCount;\n};\n\nconst onChangeBadge = showBadge => {\n  state.showBadge = showBadge;\n};\nconst rateValue = ref(2);\n</script>\n<style lang=\"less\" scoped>\n.direction-components {\n  width: 100%;\n  .button-demo .ant-btn,\n  .button-demo .ant-btn-group {\n    margin-right: 8px;\n    margin-bottom: 12px;\n  }\n  .button-demo .ant-btn-group > .ant-btn,\n  .button-demo .ant-btn-group > span > .ant-btn {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  .head-example {\n    display: inline-block;\n    width: 42px;\n    height: 42px;\n    vertical-align: middle;\n    background: #eee;\n    border-radius: 4px;\n  }\n\n  .ant-badge:not(.ant-badge-not-a-wrapper) {\n    margin-right: 20px;\n  }\n  .ant-badge-rtl:not(.ant-badge-not-a-wrapper) {\n    margin-right: 0;\n    margin-left: 20px;\n  }\n}\n\n[data-theme='dark'] .head-example {\n  background: rgba(255, 255, 255, 0.12);\n}\n</style>\n"
  },
  {
    "path": "components/config-provider/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Locale />\n    <Size />\n    <Direction />\n    <Theme />\n  </demo-sort>\n</template>\n\n<script>\nimport Locale from './locale.vue';\nimport Size from './size.vue';\nimport Direction from './direction.vue';\nimport Theme from './theme.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Locale,\n    Size,\n    Theme,\n    Direction,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/config-provider/demo/locale.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 国际化\n  en-US: Locale\n---\n\n## zh-CN\n\n此处列出 Ant Design Vue 中需要国际化支持的组件，你可以在演示里切换语言。\n\n## en-US\n\nComponents which need localization support are listed here, you can toggle the language in the demo.\n</docs>\n\n<template>\n  <div style=\"margin-bottom: 16px\">\n    <span style=\"margin-right: 16px\">Change locale of components:</span>\n    <a-radio-group v-model:value=\"locale\">\n      <a-radio-button key=\"en\" :value=\"enUS.locale\">English</a-radio-button>\n      <a-radio-button key=\"cn\" :value=\"zhCN.locale\">中文</a-radio-button>\n    </a-radio-group>\n  </div>\n  <a-config-provider :locale=\"locale === 'en' ? enUS : zhCN\">\n    <a-space\n      direction=\"vertical\"\n      :size=\"[0, 16]\"\n      :style=\"{ width: '100%', paddingTop: '16px', borderTop: `1px solid ${token.colorBorder}` }\"\n    >\n      <a-pagination :total=\"50\" show-size-changer />\n      <a-space wrap>\n        <a-select show-search style=\"width: 200px\">\n          <a-select-option value=\"jack\">jack</a-select-option>\n          <a-select-option value=\"lucy\">lucy</a-select-option>\n        </a-select>\n        <a-date-picker />\n        <a-time-picker />\n        <a-range-picker style=\"width: 200px\" />\n      </a-space>\n      <a-space wrap>\n        <a-button type=\"primary\" @click=\"visible = true\">Show Modal</a-button>\n        <a-button @click=\"info\">Show info</a-button>\n        <a-button @click=\"confirm\">Show confirm</a-button>\n        <a-popconfirm title=\"Question?\">\n          <a href=\"#\">Click to confirm</a>\n        </a-popconfirm>\n      </a-space>\n      <a-transfer :data-source=\"[]\" show-search :target-keys=\"[]\" :render=\"item => item.title\" />\n      <div\n        :style=\"{\n          width: '320px',\n          border: `1px solid ${token.colorBorder}`,\n          'border-radius': '8px',\n        }\"\n      >\n        <a-calendar :fullscreen=\"false\" />\n      </div>\n      <a-form\n        name=\"basic\"\n        :model=\"formModel\"\n        auto-complete=\"off\"\n        :label-col=\"{ sm: { span: 4 } }\"\n        :wrapper-col=\"{ span: 6 }\"\n      >\n        <a-form-item label=\"UserName\" name=\"username\" :rules=\"[{ required: true }]\">\n          <a-input v-model:value=\"formModel.username\" :width=\"200\" />\n        </a-form-item>\n        <a-form-item label=\"Age\" name=\"age\" :rules=\"[{ type: 'number', min: 0, max: 99 }]\">\n          <a-input-number v-model:value=\"formModel.age\" :width=\"200\" />\n        </a-form-item>\n        <a-form-item :wrapper-col=\"{ offset: 2, span: 6 }\">\n          <a-button type=\"primary\" html-type=\"submit\">submit</a-button>\n        </a-form-item>\n      </a-form>\n      <a-table :data-source=\"[]\" :columns=\"columns\" />\n      <a-modal v-model:open=\"visible\" title=\"Locale Modal\">\n        <p>Locale Modal</p>\n      </a-modal>\n      <a-space wrap :size=\"80\">\n        <a-qrcode\n          value=\"https://antdv.com\"\n          status=\"expired\"\n          @refresh=\"() => console.log('refresh')\"\n        />\n        <a-image\n          :width=\"160\"\n          src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n        />\n      </a-space>\n      <a-upload list-type=\"picture-card\" :file-list=\"fileList\" />\n      <a-divider orientation=\"left\">Tour</a-divider>\n      <a-button type=\"primary\" @click=\"() => (tourOpen = true)\">Begin Tour</a-button>\n      <a-space>\n        <a-button ref=\"ref1\">upload</a-button>\n        <a-button ref=\"ref2\" type=\"primary\">save</a-button>\n        <a-button ref=\"ref3\">\n          <template #icon>\n            <ellipsis-outlined />\n          </template>\n        </a-button>\n      </a-space>\n      <a-tour\n        v-model:current=\"current\"\n        :open=\"tourOpen\"\n        :steps=\"steps\"\n        @close=\"() => (tourOpen = false)\"\n      ></a-tour>\n    </a-space>\n  </a-config-provider>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport { Modal, theme } from 'ant-design-vue';\nimport type { TourProps, UploadFile } from 'ant-design-vue';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport enUS from 'ant-design-vue/es/locale/en_US';\nimport zhCN from 'ant-design-vue/es/locale/zh_CN';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/zh-cn';\n\ndayjs.locale('en');\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'filter1',\n        value: 'filter1',\n      },\n    ],\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n  },\n];\n\nconst visible = ref(false);\nconst locale = ref(enUS.locale);\nwatch(locale, val => {\n  dayjs.locale(val);\n});\nconst info = () => {\n  Modal.info({\n    title: 'some info',\n    content: 'some info',\n  });\n};\nconst confirm = () => {\n  Modal.confirm({\n    title: 'some info',\n    content: 'some info',\n  });\n};\n\nconst formModel = ref({\n  username: '',\n  age: '100',\n});\n\nconst { token } = theme.useToken();\n\nconst fileList: UploadFile[] = [\n  {\n    uid: '-1',\n    name: 'image.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-2',\n    percent: 50,\n    name: 'image.png',\n    status: 'uploading',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-3',\n    name: 'image.png',\n    status: 'error',\n  },\n];\n\nconst ref1 = ref(null);\nconst ref2 = ref(null);\nconst ref3 = ref(null);\nconst current = ref(0);\nconst tourOpen = ref(false);\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Upload File',\n    description: 'Put your files here.',\n    target: () => ref1.value && ref1.value.$el,\n  },\n  {\n    title: 'Save',\n    description: 'Save your changes.',\n    target: () => ref2.value && ref2.value.$el,\n  },\n  {\n    title: 'Other Actions',\n    description: 'Click to see other actions.',\n    target: () => ref3.value && ref3.value.$el,\n  },\n];\n</script>\n"
  },
  {
    "path": "components/config-provider/demo/size.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 组件尺寸\n  en-US: Component size\n---\n\n## zh-CN\n\n修改默认组件尺寸。\n\n## en-US\n\nConfig component default size.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"componentSize\">\n    <a-radio-button value=\"small\">Small</a-radio-button>\n    <a-radio-button value=\"middle\">Middle</a-radio-button>\n    <a-radio-button value=\"large\">Large</a-radio-button>\n  </a-radio-group>\n  <a-divider />\n  <a-config-provider :component-size=\"componentSize\">\n    <div class=\"example\">\n      <a-input />\n    </div>\n    <div class=\"example\">\n      <a-tabs>\n        <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of Tab Pane 1</a-tab-pane>\n        <a-tab-pane key=\"2\" tab=\"Tab 2\">Content of Tab Pane 2</a-tab-pane>\n        <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab Pane 3</a-tab-pane>\n      </a-tabs>\n    </div>\n    <div class=\"example\">\n      <a-input-search allow-clear />\n    </div>\n    <div class=\"example\">\n      <a-textarea allow-clear />\n    </div>\n    <div class=\"example\">\n      <a-select style=\"width: 100px\" placeholder=\"select value\" :options=\"[{ value: 'demo' }]\" />\n    </div>\n    <div class=\"example\">\n      <a-datePicker />\n    </div>\n    <div class=\"example\">\n      <a-range-picker />\n    </div>\n    <div class=\"example\">\n      <a-button>Button</a-button>\n    </div>\n    <div class=\"example\">\n      <a-card title=\"Card\">\n        <a-table :columns=\"columns\" :data-source=\"dataSource\" />\n      </a-card>\n    </div>\n  </a-config-provider>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ntype SizeType = 'small' | 'middle' | 'large';\n\nconst componentSize = ref<SizeType>('small');\nconst columns = [\n  { title: 'Name', dataIndex: 'name' },\n  { title: 'Age', dataIndex: 'age' },\n];\nconst dataSource = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n  },\n];\n</script>\n<style scoped>\n.example {\n  margin: 16px 0;\n}\n</style>\n"
  },
  {
    "path": "components/config-provider/demo/theme.vue",
    "content": "<docs>\n---\norder: 5\nversion: 3.0\ntitle:\n  zh-CN: 主题\n  en-US: Theme\n---\n\n## zh-CN\n\n通过 theme 修改主题。\n\n## en-US\n\nModify theme by `theme` prop.\n\n</docs>\n\n<template>\n  <a-config-provider\n    :theme=\"{ token: { colorPrimary: data.colorPrimary, borderRadius: `${data.borderRadius}px` } }\"\n  >\n    <a-form :model=\"data\" name=\"theme\" :label-col=\"{ span: 4 }\" :wrapper-col=\"{ span: 20 }\">\n      <a-form-item name=\"colorPrimary\" label=\"Primary Color\">\n        <input\n          type=\"color\"\n          :value=\"data.colorPrimary\"\n          @input=\"e => (data.colorPrimary = e.target.value)\"\n        />\n      </a-form-item>\n      <a-form-item name=\"borderRadius\" label=\"Border Radius\">\n        <a-input v-model:value=\"data.borderRadius\" />\n      </a-form-item>\n      <a-form-item name=\"submit\" :wrapper-col=\"{ offset: 4, span: 20 }\">\n        <a-button type=\"primary\">submit</a-button>\n      </a-form-item>\n    </a-form>\n  </a-config-provider>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { theme } from 'ant-design-vue';\n\nconst defaultData = {\n  borderRadius: 6,\n  colorPrimary: '#1677ff',\n};\nconst data = ref(defaultData);\nconst { token } = theme.useToken();\n</script>\n\n<style scoped>\ninput[type='color'] {\n  border: 1px solid v-bind('token.colorBorder');\n  background-color: v-bind('token.colorBgBase');\n}\n</style>\n"
  },
  {
    "path": "components/config-provider/hooks/useConfigInject.ts",
    "content": "import { computed, h, inject } from 'vue';\nimport type { SizeType } from '../context';\nimport { defaultConfigProvider, configProviderKey } from '../context';\nimport { useInjectDisabled } from '../DisabledContext';\nimport { DefaultRenderEmpty } from '../renderEmpty';\nimport { useInjectSize } from '../SizeContext';\nexport default (name: string, props: Record<any, any>) => {\n  const sizeContext = useInjectSize();\n  const disabledContext = useInjectDisabled();\n  const configProvider = inject(configProviderKey, {\n    ...defaultConfigProvider,\n    renderEmpty: (name?: string) => h(DefaultRenderEmpty, { componentName: name }),\n  });\n  const prefixCls = computed(() => configProvider.getPrefixCls(name, props.prefixCls));\n  const direction = computed(() => props.direction ?? configProvider.direction?.value);\n  const iconPrefixCls = computed(() => props.iconPrefixCls ?? configProvider.iconPrefixCls.value);\n  const rootPrefixCls = computed(() => configProvider.getPrefixCls());\n  const autoInsertSpaceInButton = computed(() => configProvider.autoInsertSpaceInButton?.value);\n  const renderEmpty = configProvider.renderEmpty;\n  const space = configProvider.space;\n  const pageHeader = configProvider.pageHeader;\n  const form = configProvider.form;\n  const getTargetContainer = computed(\n    () => props.getTargetContainer ?? configProvider.getTargetContainer?.value,\n  );\n  const getPopupContainer = computed(\n    () => props.getContainer ?? props.getPopupContainer ?? configProvider.getPopupContainer?.value,\n  );\n\n  const dropdownMatchSelectWidth = computed<boolean | number>(\n    () => props.dropdownMatchSelectWidth ?? configProvider.dropdownMatchSelectWidth?.value,\n  );\n  const virtual = computed(\n    () =>\n      (props.virtual === undefined\n        ? configProvider.virtual?.value !== false\n        : props.virtual !== false) && dropdownMatchSelectWidth.value !== false,\n  );\n  const size = computed(() => (props.size as SizeType) || sizeContext.value);\n  const autocomplete = computed(\n    () => props.autocomplete ?? configProvider.input?.value?.autocomplete,\n  );\n  const disabled = computed<boolean>(() => props.disabled ?? disabledContext.value);\n  const csp = computed(() => props.csp ?? configProvider.csp);\n  const wave = computed<{\n    disabled?: boolean;\n  }>(() => props.wave ?? configProvider.wave?.value);\n\n  return {\n    configProvider,\n    prefixCls,\n    direction,\n    size,\n    getTargetContainer,\n    getPopupContainer,\n    space,\n    pageHeader,\n    form,\n    autoInsertSpaceInButton,\n    renderEmpty,\n    virtual,\n    dropdownMatchSelectWidth,\n    rootPrefixCls,\n    getPrefixCls: configProvider.getPrefixCls,\n    autocomplete,\n    csp,\n    iconPrefixCls,\n    disabled,\n    select: configProvider.select,\n    wave,\n  };\n};\n"
  },
  {
    "path": "components/config-provider/hooks/useTheme.ts",
    "content": "import type { ThemeConfig } from '../context';\nimport { defaultConfig } from '../../theme/internal';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\n\nexport default function useTheme(theme?: Ref<ThemeConfig>, parentTheme?: Ref<ThemeConfig>) {\n  const themeConfig = computed(() => theme?.value || {});\n  const parentThemeConfig = computed<ThemeConfig>(() =>\n    themeConfig.value.inherit === false || !parentTheme?.value ? defaultConfig : parentTheme.value,\n  );\n\n  const mergedTheme = computed(() => {\n    if (!theme?.value) {\n      return parentTheme?.value;\n    }\n\n    // Override\n    const mergedComponents = {\n      ...parentThemeConfig.value.components,\n    };\n\n    Object.keys(theme.value.components || {}).forEach(componentName => {\n      mergedComponents[componentName] = {\n        ...mergedComponents[componentName],\n        ...theme.value.components![componentName],\n      } as any;\n    });\n\n    // Base token\n    return {\n      ...parentThemeConfig.value,\n      ...themeConfig.value,\n\n      token: {\n        ...parentThemeConfig.value.token,\n        ...themeConfig.value.token,\n      },\n      components: mergedComponents,\n    };\n  });\n\n  return mergedTheme;\n}\n"
  },
  {
    "path": "components/config-provider/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Other\ncols: 1\ntitle: ConfigProvider\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*NVKORa7BCVwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YC4ERpGAddoAAAAAAAAAAAAADrJ8AQ/original\n---\n\n`ConfigProvider` provides a uniform configuration support for components.\n\n## Usage\n\nThis component provides a configuration to all Vue components underneath itself via the [provide / inject](https://vuejs.org/v2/api/#provide-inject), In the render tree all components will have access to the provided config.\n\n```html\n<template>\n  <a-config-provider :getPopupContainer=\"getPopupContainer\">\n    <app />\n  </a-config-provider>\n</template>\n<script>\n  export default {\n    methods: {\n      getPopupContainer(el, dialogContext) {\n        if (dialogContext) {\n          return dialogContext.getDialogWrap();\n        } else {\n          return document.body;\n        }\n      },\n    },\n  };\n</script>\n```\n\n### Content Security Policy\n\nSome components use dynamic style to support wave effect. You can config `csp` prop if Content Security Policy (CSP) is enabled:\n\n```html\n<a-config-provider :csp=\"{ nonce: 'YourNonceCode' }\">\n  <a-button>My Button</a-button>\n</a-config-provider>\n```\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autoInsertSpaceInButton | Set `false` to remove space between 2 chinese characters on Button | boolean | true |  |\n| componentSize | Config antd component size | `small` \\| `middle` \\| `large` | - | 3.0 |\n| csp | Set [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) config | { nonce: string } | - |  |\n| direction | Set direction of layout. See [demo](#components-config-provider-demo-direction) | `ltr` \\| `rtl` | `ltr` | 3.0 |\n| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \\| number | - | 3.0 |\n| form | Set Form common props | { validateMessages?: [ValidateMessages](/components/form/#validatemessages), requiredMark?: boolean \\| `optional` } | - | 3.0 |\n| getPopupContainer | to set the container of the popup element. The default is to create a `div` element in `body`. | Function(triggerNode, dialogContext) | `() => document.body` |  |\n| getTargetContainer | Config Affix, Anchor scroll target container | () => HTMLElement | () => window | 3.0 |\n| input | Set Input common props | { autocomplete?: string } | - | 3.0 |\n| locale | language package setting, you can find the packages in [ant-design-vue/es/locale](http://unpkg.com/ant-design-vue/es/locale/) | object | - | 1.5.0 |\n| pageHeader | Unify the ghost of pageHeader ,Ref [pageHeader]\\(&lt;(/components/page-header)> | { ghost:boolean } | 'true' | 1.5.0 |\n| prefixCls | set prefix class | string | ant |  |\n| renderEmpty | set empty content of components. Ref [Empty](/components/empty/) | slot-scope \\| Function(componentName: string): VNode | - |  |\n| space | Set Space `size`, ref [Space](/components/space) | { size: `small` \\| `middle` \\| `large` \\| `number` } | - | 3.0 |\n| transformCellText | Table data can be changed again before rendering. The default configuration of general user empty data. | Function({ text, column, record, index }) => any | - | 1.5.4 |\n| virtual | Disable virtual scroll when set to false | boolean | true | 3.0 |\n| wave | Config wave effect | { disabled?: boolean } | - | 4.0.7 |\n\n### ConfigProvider.config() `3.0.0+`\n\nSetting `Modal`、`Message`、`Notification` rootPrefixCls.\n\n```jsx\nConfigProvider.config({\n  prefixCls: 'ant',\n});\n```\n\nor\n\n```jsx\n// some cinfig support reactively, you can change prefixCls.value = 'other'\nconst prefixCls = ref('ant');\nConfigProvider.config({\n  prefixCls,\n});\n```\n\n## FAQ\n\n#### Does the locale problem still exist in DatePicker even if ConfigProvider `locale` is used?\n\nPlease make sure you set dayjs locale by `dayjs.locale('zh-cn')` or that you don't have two different versions of dayjs.\n\n#### Modal throw error when setting `getPopupContainer`?\n\nWhen you config `getPopupContainer` to parentNode globally, Modal will throw error of `triggerNode is undefined` because it did not have a triggerNode.\n\n```diff\n <ConfigProvider\n-  getPopupContainer={triggerNode => triggerNode.parentNode}\n+  getPopupContainer={node => {\n+    if (node) {\n+      return node.parentNode;\n+    }\n+    return document.body;\n+  }}\n >\n   <App />\n </ConfigProvider>\n```\n\n#### Why can't ConfigProvider props (like `prefixCls` and `theme`) affect VueNode inside `message.info`, `notification.open`, `Modal.confirm`?\n\nantd will dynamic create Vue instance by `Vue.render` when call message methods. Whose context is different with origin code located context.\n"
  },
  {
    "path": "components/config-provider/index.tsx",
    "content": "import type { App, MaybeRef, Plugin, WatchStopHandle } from 'vue';\nimport { watch, computed, reactive, defineComponent, watchEffect } from 'vue';\nimport defaultRenderEmpty from './renderEmpty';\nimport type { RenderEmptyHandler } from './renderEmpty';\nimport type { Locale } from '../locale-provider';\nimport LocaleProvider, { ANT_MARK } from '../locale-provider';\n\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\n\nimport message from '../message';\nimport notification from '../notification';\nimport { registerTheme } from './cssVariables';\nimport defaultLocale from '../locale/en_US';\nimport type { ValidateMessages } from '../form/interface';\nimport useStyle from './style';\nimport useTheme from './hooks/useTheme';\nimport defaultSeedToken from '../theme/themes/seed';\nimport type { ConfigProviderInnerProps, ConfigProviderProps, Theme } from './context';\nimport {\n  useConfigContextProvider,\n  useConfigContextInject,\n  configProviderProps,\n  useProvideGlobalForm,\n  defaultIconPrefixCls,\n} from './context';\nimport { useProviderSize } from './SizeContext';\nimport { useProviderDisabled } from './DisabledContext';\nimport { createTheme } from '../_util/cssinjs';\nimport { DesignTokenProvider } from '../theme/internal';\n\nexport type {\n  ConfigProviderProps,\n  Theme,\n  SizeType,\n  Direction,\n  CSPConfig,\n  DirectionType,\n} from './context';\nexport const defaultPrefixCls = 'ant';\nexport { defaultIconPrefixCls };\nfunction getGlobalPrefixCls() {\n  return globalConfigForApi.prefixCls || defaultPrefixCls;\n}\n\nfunction getGlobalIconPrefixCls() {\n  return globalConfigForApi.iconPrefixCls || defaultIconPrefixCls;\n}\nconst globalConfigBySet = reactive<ConfigProviderProps>({}); // 权重最大\nexport const globalConfigForApi: ConfigProviderProps & {\n  getRootPrefixCls?: (rootPrefixCls?: string, customizePrefixCls?: string) => string;\n} = reactive({});\n\nexport const configConsumerProps = [\n  'getTargetContainer',\n  'getPopupContainer',\n  'rootPrefixCls',\n  'getPrefixCls',\n  'renderEmpty',\n  'csp',\n  'autoInsertSpaceInButton',\n  'locale',\n  'pageHeader',\n];\n\nwatchEffect(() => {\n  Object.assign(globalConfigForApi, globalConfigBySet);\n  globalConfigForApi.prefixCls = getGlobalPrefixCls();\n  globalConfigForApi.iconPrefixCls = getGlobalIconPrefixCls();\n  globalConfigForApi.getPrefixCls = (suffixCls?: string, customizePrefixCls?: string) => {\n    if (customizePrefixCls) return customizePrefixCls;\n    return suffixCls\n      ? `${globalConfigForApi.prefixCls}-${suffixCls}`\n      : globalConfigForApi.prefixCls;\n  };\n  globalConfigForApi.getRootPrefixCls = () => {\n    // If Global prefixCls provided, use this\n    if (globalConfigForApi.prefixCls) {\n      return globalConfigForApi.prefixCls;\n    }\n\n    // Fallback to default prefixCls\n    return getGlobalPrefixCls();\n  };\n});\n\ntype GlobalConfigProviderProps = {\n  prefixCls?: MaybeRef<ConfigProviderProps['prefixCls']>;\n  iconPrefixCls?: MaybeRef<ConfigProviderProps['iconPrefixCls']>;\n  getPopupContainer?: ConfigProviderProps['getPopupContainer'];\n};\n\nlet stopWatchEffect: WatchStopHandle;\nconst setGlobalConfig = (params: GlobalConfigProviderProps & { theme?: Theme }) => {\n  if (stopWatchEffect) {\n    stopWatchEffect();\n  }\n  stopWatchEffect = watchEffect(() => {\n    Object.assign(globalConfigBySet, reactive(params));\n    Object.assign(globalConfigForApi, reactive(params));\n  });\n  if (params.theme) {\n    registerTheme(getGlobalPrefixCls(), params.theme);\n  }\n};\n\nexport const globalConfig = () => ({\n  getPrefixCls: (suffixCls?: string, customizePrefixCls?: string) => {\n    if (customizePrefixCls) return customizePrefixCls;\n    return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls();\n  },\n  getIconPrefixCls: getGlobalIconPrefixCls,\n  getRootPrefixCls: () => {\n    // If Global prefixCls provided, use this\n    if (globalConfigForApi.prefixCls) {\n      return globalConfigForApi.prefixCls;\n    }\n\n    // Fallback to default prefixCls\n    return getGlobalPrefixCls();\n  },\n});\n\nconst ConfigProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AConfigProvider',\n  inheritAttrs: false,\n  props: configProviderProps(),\n  setup(props, { slots }) {\n    const parentContext = useConfigContextInject();\n    const getPrefixCls = (suffixCls?: string, customizePrefixCls?: string) => {\n      const { prefixCls = 'ant' } = props;\n      if (customizePrefixCls) return customizePrefixCls;\n      const mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n      return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;\n    };\n    const iconPrefixCls = computed(\n      () => props.iconPrefixCls || parentContext.iconPrefixCls.value || defaultIconPrefixCls,\n    );\n    const shouldWrapSSR = computed(() => iconPrefixCls.value !== parentContext.iconPrefixCls.value);\n    const csp = computed(() => props.csp || parentContext.csp?.value);\n\n    const wrapSSR = useStyle(iconPrefixCls);\n\n    const mergedTheme = useTheme(\n      computed(() => props.theme),\n      computed(() => parentContext.theme?.value),\n    );\n    const renderEmptyComponent = (name?: string) => {\n      const renderEmpty = (props.renderEmpty ||\n        slots.renderEmpty ||\n        parentContext.renderEmpty ||\n        defaultRenderEmpty) as RenderEmptyHandler;\n      return renderEmpty(name);\n    };\n    const autoInsertSpaceInButton = computed(\n      () => props.autoInsertSpaceInButton ?? parentContext.autoInsertSpaceInButton?.value,\n    );\n    const locale = computed(() => props.locale || parentContext.locale?.value);\n    watch(\n      locale,\n      () => {\n        globalConfigBySet.locale = locale.value;\n      },\n      { immediate: true },\n    );\n    const direction = computed(() => props.direction || parentContext.direction?.value);\n    const space = computed(() => props.space ?? parentContext.space?.value);\n    const virtual = computed(() => props.virtual ?? parentContext.virtual?.value);\n    const dropdownMatchSelectWidth = computed(\n      () => props.dropdownMatchSelectWidth ?? parentContext.dropdownMatchSelectWidth?.value,\n    );\n    const getTargetContainer = computed(() =>\n      props.getTargetContainer !== undefined\n        ? props.getTargetContainer\n        : parentContext.getTargetContainer?.value,\n    );\n    const getPopupContainer = computed(() =>\n      props.getPopupContainer !== undefined\n        ? props.getPopupContainer\n        : parentContext.getPopupContainer?.value,\n    );\n    const pageHeader = computed(() =>\n      props.pageHeader !== undefined ? props.pageHeader : parentContext.pageHeader?.value,\n    );\n    const input = computed(() =>\n      props.input !== undefined ? props.input : parentContext.input?.value,\n    );\n    const pagination = computed(() =>\n      props.pagination !== undefined ? props.pagination : parentContext.pagination?.value,\n    );\n    const form = computed(() =>\n      props.form !== undefined ? props.form : parentContext.form?.value,\n    );\n    const select = computed(() =>\n      props.select !== undefined ? props.select : parentContext.select?.value,\n    );\n    const componentSize = computed(() => props.componentSize);\n    const componentDisabled = computed(() => props.componentDisabled);\n    const wave = computed(() => props.wave ?? parentContext.wave?.value);\n    const configProvider: ConfigProviderInnerProps = {\n      csp,\n      autoInsertSpaceInButton,\n      locale,\n      direction,\n      space,\n      virtual,\n      dropdownMatchSelectWidth,\n      getPrefixCls,\n      iconPrefixCls,\n      theme: computed(() => {\n        return mergedTheme.value ?? parentContext.theme?.value;\n      }),\n      renderEmpty: renderEmptyComponent,\n      getTargetContainer,\n      getPopupContainer,\n      pageHeader,\n      input,\n      pagination,\n      form,\n      select,\n      componentSize,\n      componentDisabled,\n      transformCellText: computed(() => props.transformCellText),\n      wave,\n    };\n\n    // ================================ Dynamic theme ================================\n    const memoTheme = computed(() => {\n      const { algorithm, token, ...rest } = mergedTheme.value || {};\n      const themeObj =\n        algorithm && (!Array.isArray(algorithm) || algorithm.length > 0)\n          ? createTheme(algorithm)\n          : undefined;\n      return {\n        ...rest,\n        theme: themeObj,\n\n        token: {\n          ...defaultSeedToken,\n          ...token,\n        },\n      };\n    });\n    const validateMessagesRef = computed(() => {\n      // Additional Form provider\n      let validateMessages: ValidateMessages = {};\n\n      if (locale.value) {\n        validateMessages =\n          locale.value.Form?.defaultValidateMessages ||\n          defaultLocale.Form?.defaultValidateMessages ||\n          {};\n      }\n      if (props.form && props.form.validateMessages) {\n        validateMessages = { ...validateMessages, ...props.form.validateMessages };\n      }\n      return validateMessages;\n    });\n    useConfigContextProvider(configProvider);\n    useProvideGlobalForm({ validateMessages: validateMessagesRef });\n    useProviderSize(componentSize);\n    useProviderDisabled(componentDisabled);\n\n    const renderProvider = (legacyLocale: Locale) => {\n      let childNode = shouldWrapSSR.value ? wrapSSR(slots.default?.()) : slots.default?.();\n      if (props.theme)\n        childNode = <DesignTokenProvider value={memoTheme.value}>{childNode}</DesignTokenProvider>;\n      return (\n        <LocaleProvider locale={locale.value || legacyLocale} ANT_MARK__={ANT_MARK}>\n          {childNode}\n        </LocaleProvider>\n      );\n    };\n\n    watchEffect(() => {\n      if (direction.value) {\n        message.config({\n          rtl: direction.value === 'rtl',\n        });\n        notification.config({\n          rtl: direction.value === 'rtl',\n        });\n      }\n    });\n\n    return () => (\n      <LocaleReceiver children={(_, __, legacyLocale) => renderProvider(legacyLocale as Locale)} />\n    );\n  },\n});\n\nConfigProvider.config = setGlobalConfig;\n\nConfigProvider.install = function (app: App) {\n  app.component(ConfigProvider.name, ConfigProvider);\n};\n\nexport default ConfigProvider as typeof ConfigProvider &\n  Plugin & {\n    readonly config: typeof setGlobalConfig;\n  };\n"
  },
  {
    "path": "components/config-provider/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 全局化配置\ncols: 1\ntype: 其他\ntitle: ConfigProvider\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*NVKORa7BCVwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YC4ERpGAddoAAAAAAAAAAAAADrJ8AQ/original\n---\n\n为组件提供统一的全局化配置。\n\n## 使用\n\nConfigProvider 使用 Vue 的 [provide / inject](https://vuejs.org/v2/api/#provide-inject) 特性，只需在应用外围包裹一次即可全局生效。\n\n```html\n<template>\n  <a-config-provider :getPopupContainer=\"getPopupContainer\">\n    <app />\n  </a-config-provider>\n</template>\n<script>\n  export default {\n    methods: {\n      getPopupContainer(el, dialogContext) {\n        if (dialogContext) {\n          return dialogContext.getDialogWrap();\n        } else {\n          return document.body;\n        }\n      },\n    },\n  };\n</script>\n```\n\n### Content Security Policy\n\n部分组件为了支持波纹效果，使用了动态样式。如果开启了 Content Security Policy (CSP)，你可以通过 `csp` 属性来进行配置：\n\n```html\n<a-config-provider :csp=\"{ nonce: 'YourNonceCode' }\">\n  <a-button>My Button</a-button>\n</a-config-provider>\n```\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autoInsertSpaceInButton | 设置为 `false` 时，移除按钮中 2 个汉字之间的空格 | boolean | true |  |\n| componentSize | 设置 antd 组件大小 | `small` \\| `middle` \\| `large` | - | 3.0 |\n| csp | 设置 [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) 配置 | { nonce: string } | - |  |\n| direction | 设置文本展示方向。 [示例](#components-config-provider-demo-direction) | `ltr` \\| `rtl` | `ltr` | 3.0 |\n| dropdownMatchSelectWidth | 下拉菜单和选择器同宽。默认将设置 `min-width`，当值小于选择框宽度时会被忽略。`false` 时会关闭虚拟滚动 | boolean \\| number | - |  |\n| form | 设置 Form 组件的通用属性 | { validateMessages?: [ValidateMessages](/components/form/#validatemessages), requiredMark?: boolean \\| `optional`, colon?: boolean} | - | 3.0 |\n| getPopupContainer | 弹出框（Select, Tooltip, Menu 等等）渲染父节点，默认渲染到 body 上。 | Function(triggerNode, dialogContext) | () => document.body |  |\n| getTargetContainer | 配置 Affix、Anchor 滚动监听容器。 | () => HTMLElement | () => window | 3.0 |\n| input | 设置 Input 组件的通用属性 | { autocomplete?: string } | - | 3.0 |\n| locale | 语言包配置，语言包可到 [ant-design-vue/es/locale](http://unpkg.com/ant-design-vue/es/locale/) 目录下寻找 | object | - | 1.5.0 |\n| pageHeader | 统一设置 pageHeader 的 ghost，参考 [pageHeader](<(/components/page-header)>) | { ghost: boolean } | 'true' | 1.5.0 |\n| prefixCls | 设置统一样式前缀。注意：需要配合 `less` 变量 `@ant-prefix` 使用 | string | `ant` |  |\n| renderEmpty | 自定义组件空状态。参考 [空状态](/components/empty/) | slot \\| Function(componentName: string): VNode | - |  |\n| space | 设置 Space 的 `size`，参考 [Space](/components/space) | { size: `small` \\| `middle` \\| `large` \\| `number` } | - | 3.0 |\n| transformCellText | Table 数据渲染前可以再次改变，一般用户空数据的默认配置 | Function({ text, column, record, index }) => any | - | 1.5.4 |\n| virtual | 设置 `false` 时关闭虚拟滚动 | boolean | - | 3.0 |\n| wave | 设置水波纹特效 | { disabled?: boolean } | - | 4.0.7 |\n\n### ConfigProvider.config() `3.0.0+`\n\n设置 `Modal`、`Message`、`Notification` rootPrefixCls。\n\n```jsx\nConfigProvider.config({\n  prefixCls: 'ant',\n});\n```\n\nor\n\n```jsx\n// 如下配置支持响应式数据，你可以通过 prefixCls.value = 'other' 直接改变\nconst prefixCls = ref('ant');\nConfigProvider.config({\n  prefixCls,\n});\n```\n\n## FAQ\n\n#### 为什么我使用了 ConfigProvider `locale`，时间类组件的国际化还有问题？\n\n请检查是否设置了 `dayjs.locale('zh-cn')`，或者是否有两个版本的 dayjs 共存。\n\n#### 配置 `getPopupContainer` 导致 Modal 报错？\n\n当如下全局设置 `getPopupContainer` 为触发节点的 parentNode 时，由于 Modal 的用法不存在 `triggerNode`，这样会导致 `triggerNode is undefined` 的报错，需要增加一个判断条件。\n\n```diff\n <ConfigProvider\n-  getPopupContainer={triggerNode => triggerNode.parentNode}\n+  getPopupContainer={node => {\n+    if (node) {\n+      return node.parentNode;\n+    }\n+    return document.body;\n+  }}\n >\n   <App />\n </ConfigProvider>\n```\n\n#### 为什么 message.info、notification.open 或 Modal.confirm 等方法内的 VueNode 无法继承 ConfigProvider 的属性？比如 `prefixCls` 和 `theme`。\n\n静态方法是使用 Vue.render 重新渲染一个 Vue 根节点上，和主应用的 Vue 节点是脱离的。\n"
  },
  {
    "path": "components/config-provider/renderEmpty.tsx",
    "content": "import Empty from '../empty';\nimport type { VueNode } from '../_util/type';\nimport useConfigInject from './hooks/useConfigInject';\n\nexport interface RenderEmptyProps {\n  componentName?: string;\n}\n\nexport const DefaultRenderEmpty = (props: RenderEmptyProps) => {\n  const { prefixCls } = useConfigInject('empty', props);\n  const renderHtml = (componentName?: string) => {\n    switch (componentName) {\n      case 'Table':\n      case 'List':\n        return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />;\n      case 'Select':\n      case 'TreeSelect':\n      case 'Cascader':\n      case 'Transfer':\n      case 'Mentions':\n        return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} class={`${prefixCls.value}-small`} />;\n      default:\n        return <Empty />;\n    }\n  };\n  return renderHtml(props.componentName);\n};\n\nfunction renderEmpty(componentName?: string): VueNode {\n  return <DefaultRenderEmpty componentName={componentName} />;\n}\n\nexport type RenderEmptyHandler = typeof renderEmpty;\n\nexport default renderEmpty;\n"
  },
  {
    "path": "components/config-provider/style/index.ts",
    "content": "import { useStyleRegister } from '../../_util/cssinjs';\nimport { resetIcon } from '../../style';\nimport { useToken } from '../../theme/internal';\nimport { computed, Ref } from 'vue';\n\nconst useStyle = (iconPrefixCls: Ref<string>) => {\n  const [theme, token] = useToken();\n  // Generate style for icons\n  return useStyleRegister(\n    computed(() => ({\n      theme: theme.value,\n      token: token.value,\n      hashId: '',\n      path: ['ant-design-icons', iconPrefixCls.value],\n    })),\n    () => [\n      {\n        [`.${iconPrefixCls.value}`]: {\n          ...resetIcon(),\n          [`.${iconPrefixCls.value} .${iconPrefixCls.value}-icon`]: {\n            display: 'block',\n          },\n        },\n      },\n    ],\n  );\n};\n\nexport default useStyle;\n"
  },
  {
    "path": "components/date-picker/PickerButton.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\nimport type { ButtonProps } from '../button';\nimport Button from '../button';\n\nconst PickerButton: FunctionalComponent<ButtonProps> = (props: ButtonProps, { attrs, slots }) => {\n  return <Button size=\"small\" type=\"primary\" {...props} {...attrs} v-slots={slots}></Button>;\n};\nexport default PickerButton;\n"
  },
  {
    "path": "components/date-picker/PickerTag.tsx",
    "content": "import type { TagProps } from '../tag';\nimport Tag from '../tag';\n\nexport default function PickerTag(props: TagProps, { slots, attrs }) {\n  return <Tag color=\"blue\" {...props} {...attrs} v-slots={slots} />;\n}\n"
  },
  {
    "path": "components/date-picker/__tests__/DatePicker.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport dayjs from 'dayjs';\nimport MockDate from 'mockdate';\nimport DatePicker from '..';\nimport focusTest from '../../../tests/shared/focusTest';\njest.mock('../../_util/Portal');\ndescribe('DatePicker', () => {\n  focusTest(DatePicker);\n\n  beforeEach(() => {\n    document.body.outerHTML = '';\n    MockDate.set(dayjs('2016-11-22'));\n  });\n\n  afterEach(() => {\n    MockDate.reset();\n  });\n\n  it('prop locale should works', async () => {\n    const locale = {\n      lang: {\n        locale: 'mk',\n        placeholder: 'Избери дата',\n        rangePlaceholder: ['Начална дата', 'Крайна дата'],\n        today: 'Днес',\n        now: 'Сега',\n        backToToday: 'Към днес',\n        ok: 'Добре',\n        clear: 'Изчистване',\n        month: 'Месец',\n        year: 'Година',\n        timeSelect: 'Избор на час',\n        dateSelect: 'Избор на дата',\n        monthSelect: 'Избор на месец',\n        yearSelect: 'Избор на година',\n        decadeSelect: 'Десетилетие',\n        previousMonth: 'Предишен месец (PageUp)',\n        nextMonth: 'Следващ месец (PageDown)',\n        previousYear: 'Последна година (Control + left)',\n        nextYear: 'Следваща година (Control + right)',\n        previousDecade: 'Предишно десетилетие',\n        nextDecade: 'Следващо десетилетие',\n        previousCentury: 'Последен век',\n        nextCentury: 'Следващ век',\n        yearFormat: 'YYYY',\n        dateFormat: 'D M YYYY',\n        dayFormat: 'D',\n        dateTimeFormat: 'D M YYYY HH:mm:ss',\n        monthBeforeYear: true,\n      },\n      timePickerLocale: {\n        placeholder: 'Избор на час',\n      },\n    };\n    const birthday = dayjs('2000-01-01', 'YYYY-MM-DD');\n    const wrapper = mount({\n      render() {\n        return <DatePicker open locale={locale} value={birthday} />;\n      },\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/QuarterPicker.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport DatePicker from '..';\nimport focusTest from '../../../tests/shared/focusTest';\n\nconst { QuarterPicker } = DatePicker;\njest.mock('../../_util/Portal');\ndescribe('QuarterPicker', () => {\n  focusTest(QuarterPicker);\n  it('reset select item when popup close', async () => {\n    const wrapper = mount(DatePicker, {\n      props: { style: { width: '400px' }, picker: 'quarter' },\n      sync: false,\n      attachTo: 'body',\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('test QuarterPicker valueFormat', async () => {\n    const case1 = '2023-1';\n    const wrapper = mount(DatePicker, {\n      props: {\n        picker: 'quarter',\n        format: 'YYYY-Q',\n        valueFormat: 'YYYY-Q',\n        value: case1,\n      },\n      sync: false,\n      attachTo: 'body',\n    });\n    const input = wrapper.find('input');\n    expect(input.element.value).toBe(case1);\n  });\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/RangePicker.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, setMockDate, resetMockDate, sleep } from '../../../tests/utils';\nimport dayjs from 'dayjs';\nimport DatePicker from '../';\nimport { openPicker, selectCell, closePicker } from './utils';\nimport focusTest from '../../../tests/shared/focusTest';\njest.mock('../../_util/Portal');\nconst { RangePicker } = DatePicker;\n\ndescribe('RangePicker', () => {\n  focusTest(RangePicker);\n\n  beforeEach(() => {\n    document.body.outerHTML = '';\n    setMockDate();\n  });\n\n  afterEach(() => {\n    resetMockDate();\n  });\n  // issue: https://github.com/ant-design/ant-design/issues/5872\n  xit('should not throw error when value is reset to `[]`', async () => {\n    const birthday = dayjs('2000-01-01', 'YYYY-MM-DD');\n    const wrapper = mount(\n      {\n        props: ['value'],\n        setup(props) {\n          return () => <RangePicker value={props.value} open />;\n        },\n      },\n      { attachTo: 'body', sync: 'false' },\n    );\n    wrapper.setProps({ value: [birthday, birthday] });\n    wrapper.setProps({ value: [] });\n    await sleep(0);\n    expect(() => {\n      openPicker(wrapper);\n      selectCell(wrapper, 3);\n      closePicker(wrapper);\n\n      openPicker(wrapper, 1);\n      selectCell(wrapper, 5, 1);\n      closePicker(wrapper, 1);\n    }).not.toThrow();\n  });\n\n  it('show month panel according to value', async () => {\n    const birthday = dayjs('2000-01-01', 'YYYY-MM-DD').locale('zh-cn');\n    const wrapper = mount(RangePicker, {\n      props: {\n        getPopupContainer: trigger => trigger,\n        format: 'YYYY/MM/DD',\n        showTime: true,\n        open: true,\n      },\n      sync: false,\n      attachTo: 'body',\n    });\n    await asyncExpect(() => {\n      wrapper.setProps({ value: [birthday, birthday] });\n    });\n    await asyncExpect(() => {\n      expect(document.body.innerHTML).toMatchSnapshot();\n    });\n  });\n\n  fit('customize separator', async () => {\n    const wrapper = mount(RangePicker, { props: { separator: 'test' } });\n    await sleep();\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  fit('test WeekPicker valueFormat', async () => {\n    const case1 = ['2023-22', '2023-24'];\n    const case2 = ['2023-27', '2023-28'];\n    const wrapper = mount(RangePicker, {\n      props: {\n        picker: 'week',\n        format: 'YYYY-ww',\n        valueFormat: 'YYYY-ww',\n        value: case1,\n      },\n      sync: false,\n      attachTo: 'body',\n    });\n    const inputs = wrapper.findAll('input');\n    expect((inputs[0].element.value, inputs[1].element.value)).toBe((case1[0], case1[1]));\n    await asyncExpect(() => {\n      wrapper.setProps({ value: case2 });\n    });\n    expect((inputs[0].element.value, inputs[1].element.value)).toBe((case2[0], case2[1]));\n  });\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/WeekPicker.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, setMockDate } from '../../../tests/utils';\nimport DatePicker from '..';\nimport focusTest from '../../../tests/shared/focusTest';\n\nconst { WeekPicker } = DatePicker;\njest.mock('../../_util/Portal');\ndescribe('WeekPicker', () => {\n  beforeEach(() => {\n    setMockDate();\n  });\n  focusTest(WeekPicker);\n\n  it('should support style prop', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <WeekPicker style={{ width: '400px' }} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/DatePicker.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`DatePicker prop locale should works 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Избери дата\" title=\"2000-01-01\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <div>\n    <!---->\n    <div class=\"ant-picker-dropdown\" style=\"pointer-events: none; display: none;\">\n      <div class=\"ant-picker-panel-container\">\n        <div class=\"ant-picker-panel-layout\">\n          <!---->\n          <div tabindex=\"-1\" class=\"ant-picker-panel ant-picker-panel-focused\">\n            <div class=\"ant-picker-date-panel\">\n              <div class=\"ant-picker-header\"><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-super-prev-btn\"><span class=\"ant-picker-super-prev-icon\"></span></button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-prev-btn\"><span class=\"ant-picker-prev-icon\"></span></button>\n                <div class=\"ant-picker-header-view\"><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-month-btn\">Jan</button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-year-btn\">2000</button></div><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-next-btn\"><span class=\"ant-picker-next-icon\"></span></button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-super-next-btn\"><span class=\"ant-picker-super-next-icon\"></span></button>\n              </div>\n              <div class=\"ant-picker-body\">\n                <table class=\"ant-picker-content\">\n                  <thead>\n                    <tr>\n                      <th>Su</th>\n                      <th>Mo</th>\n                      <th>Tu</th>\n                      <th>We</th>\n                      <th>Th</th>\n                      <th>Fr</th>\n                      <th>Sa</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    <tr>\n                      <td title=\"1999-12-26\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">26</div>\n                      </td>\n                      <td title=\"1999-12-27\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">27</div>\n                      </td>\n                      <td title=\"1999-12-28\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">28</div>\n                      </td>\n                      <td title=\"1999-12-29\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">29</div>\n                      </td>\n                      <td title=\"1999-12-30\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">30</div>\n                      </td>\n                      <td title=\"1999-12-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                        <div class=\"ant-picker-cell-inner\">31</div>\n                      </td>\n                      <td title=\"2000-01-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view ant-picker-cell-selected\">\n                        <div class=\"ant-picker-cell-inner\">1</div>\n                      </td>\n                    </tr>\n                    <tr>\n                      <td title=\"2000-01-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">2</div>\n                      </td>\n                      <td title=\"2000-01-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">3</div>\n                      </td>\n                      <td title=\"2000-01-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">4</div>\n                      </td>\n                      <td title=\"2000-01-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">5</div>\n                      </td>\n                      <td title=\"2000-01-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">6</div>\n                      </td>\n                      <td title=\"2000-01-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">7</div>\n                      </td>\n                      <td title=\"2000-01-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">8</div>\n                      </td>\n                    </tr>\n                    <tr>\n                      <td title=\"2000-01-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">9</div>\n                      </td>\n                      <td title=\"2000-01-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">10</div>\n                      </td>\n                      <td title=\"2000-01-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">11</div>\n                      </td>\n                      <td title=\"2000-01-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">12</div>\n                      </td>\n                      <td title=\"2000-01-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">13</div>\n                      </td>\n                      <td title=\"2000-01-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">14</div>\n                      </td>\n                      <td title=\"2000-01-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">15</div>\n                      </td>\n                    </tr>\n                    <tr>\n                      <td title=\"2000-01-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">16</div>\n                      </td>\n                      <td title=\"2000-01-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">17</div>\n                      </td>\n                      <td title=\"2000-01-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">18</div>\n                      </td>\n                      <td title=\"2000-01-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">19</div>\n                      </td>\n                      <td title=\"2000-01-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">20</div>\n                      </td>\n                      <td title=\"2000-01-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">21</div>\n                      </td>\n                      <td title=\"2000-01-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">22</div>\n                      </td>\n                    </tr>\n                    <tr>\n                      <td title=\"2000-01-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">23</div>\n                      </td>\n                      <td title=\"2000-01-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">24</div>\n                      </td>\n                      <td title=\"2000-01-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">25</div>\n                      </td>\n                      <td title=\"2000-01-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">26</div>\n                      </td>\n                      <td title=\"2000-01-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">27</div>\n                      </td>\n                      <td title=\"2000-01-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">28</div>\n                      </td>\n                      <td title=\"2000-01-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">29</div>\n                      </td>\n                    </tr>\n                    <tr>\n                      <td title=\"2000-01-30\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">30</div>\n                      </td>\n                      <td title=\"2000-01-31\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                        <div class=\"ant-picker-cell-inner\">31</div>\n                      </td>\n                      <td title=\"2000-02-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                        <div class=\"ant-picker-cell-inner\">1</div>\n                      </td>\n                      <td title=\"2000-02-02\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">2</div>\n                      </td>\n                      <td title=\"2000-02-03\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">3</div>\n                      </td>\n                      <td title=\"2000-02-04\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">4</div>\n                      </td>\n                      <td title=\"2000-02-05\" class=\"ant-picker-cell\">\n                        <div class=\"ant-picker-cell-inner\">5</div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n            </div>\n            <div class=\"ant-picker-footer\">\n              <!---->\n              <!----><a class=\"ant-picker-today-btn\">Днес</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/QuarterPicker.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`QuarterPicker reset select item when popup close 1`] = `\n<div class=\"ant-picker\" style=\"width: 400px;\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select quarter\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/RangePicker.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`RangePicker customize separator 1`] = `\n<div class=\"ant-picker ant-picker-range\">\n  <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-range-separator\">test</div>\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n  <!----></span>\n  <!---->\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`RangePicker show month panel according to value 1`] = `\n<div data-v-app=\"\">\n  <div>\n    <!---->\n    <div class=\"ant-picker-dropdown ant-picker-dropdown-range\" style=\"pointer-events: none; display: none;\">\n      <div class=\"ant-picker-range-wrapper ant-picker-date-range-wrapper\" style=\"min-width: 0px;\">\n        <div class=\"ant-picker-range-arrow\" style=\"left: 0px;\"></div>\n        <div class=\"ant-picker-panel-container\" style=\"margin-left: 0px;\">\n          <div class=\"ant-picker-panels\">\n            <div tabindex=\"0\" class=\"ant-picker-panel ant-picker-panel-has-range ant-picker-panel-focused\">\n              <div class=\"ant-picker-datetime-panel\">\n                <div class=\"ant-picker-date-panel\">\n                  <div class=\"ant-picker-header\"><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-super-prev-btn\">«</button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-prev-btn\">‹</button>\n                    <div class=\"ant-picker-header-view\"><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-month-btn\">Jan</button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-year-btn\">2000</button></div><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-next-btn\">›</button><button type=\"button\" tabindex=\"-1\" class=\"ant-picker-header-super-next-btn\">»</button>\n                  </div>\n                  <div class=\"ant-picker-body\">\n                    <table class=\"ant-picker-content\">\n                      <thead>\n                        <tr>\n                          <th>Su</th>\n                          <th>Mo</th>\n                          <th>Tu</th>\n                          <th>We</th>\n                          <th>Th</th>\n                          <th>Fr</th>\n                          <th>Sa</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        <tr>\n                          <td title=\"1999-12-26\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">26</div>\n                          </td>\n                          <td title=\"1999-12-27\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">27</div>\n                          </td>\n                          <td title=\"1999-12-28\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">28</div>\n                          </td>\n                          <td title=\"1999-12-29\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">29</div>\n                          </td>\n                          <td title=\"1999-12-30\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">30</div>\n                          </td>\n                          <td title=\"1999-12-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                            <div class=\"ant-picker-cell-inner\">31</div>\n                          </td>\n                          <td title=\"2000-01-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view ant-picker-cell-range-start ant-picker-cell-range-end ant-picker-cell-selected\">\n                            <div class=\"ant-picker-cell-inner\">1</div>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td title=\"2000-01-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">2</div>\n                          </td>\n                          <td title=\"2000-01-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">3</div>\n                          </td>\n                          <td title=\"2000-01-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">4</div>\n                          </td>\n                          <td title=\"2000-01-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">5</div>\n                          </td>\n                          <td title=\"2000-01-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">6</div>\n                          </td>\n                          <td title=\"2000-01-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">7</div>\n                          </td>\n                          <td title=\"2000-01-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">8</div>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td title=\"2000-01-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">9</div>\n                          </td>\n                          <td title=\"2000-01-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">10</div>\n                          </td>\n                          <td title=\"2000-01-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">11</div>\n                          </td>\n                          <td title=\"2000-01-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">12</div>\n                          </td>\n                          <td title=\"2000-01-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">13</div>\n                          </td>\n                          <td title=\"2000-01-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">14</div>\n                          </td>\n                          <td title=\"2000-01-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">15</div>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td title=\"2000-01-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">16</div>\n                          </td>\n                          <td title=\"2000-01-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">17</div>\n                          </td>\n                          <td title=\"2000-01-18\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">18</div>\n                          </td>\n                          <td title=\"2000-01-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">19</div>\n                          </td>\n                          <td title=\"2000-01-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">20</div>\n                          </td>\n                          <td title=\"2000-01-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">21</div>\n                          </td>\n                          <td title=\"2000-01-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">22</div>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td title=\"2000-01-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">23</div>\n                          </td>\n                          <td title=\"2000-01-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">24</div>\n                          </td>\n                          <td title=\"2000-01-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">25</div>\n                          </td>\n                          <td title=\"2000-01-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">26</div>\n                          </td>\n                          <td title=\"2000-01-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">27</div>\n                          </td>\n                          <td title=\"2000-01-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">28</div>\n                          </td>\n                          <td title=\"2000-01-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">29</div>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td title=\"2000-01-30\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">30</div>\n                          </td>\n                          <td title=\"2000-01-31\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                            <div class=\"ant-picker-cell-inner\">31</div>\n                          </td>\n                          <td title=\"2000-02-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                            <div class=\"ant-picker-cell-inner\">1</div>\n                          </td>\n                          <td title=\"2000-02-02\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">2</div>\n                          </td>\n                          <td title=\"2000-02-03\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">3</div>\n                          </td>\n                          <td title=\"2000-02-04\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">4</div>\n                          </td>\n                          <td title=\"2000-02-05\" class=\"ant-picker-cell\">\n                            <div class=\"ant-picker-cell-inner\">5</div>\n                          </td>\n                        </tr>\n                      </tbody>\n                    </table>\n                  </div>\n                </div>\n                <div class=\"ant-picker-time-panel\">\n                  <div class=\"ant-picker-header\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-picker-header-view\">2000/01/01</div>\n                    <!---->\n                    <!---->\n                  </div>\n                  <div class=\"ant-picker-content\"></div>\n                </div>\n              </div>\n              <!---->\n            </div>\n          </div>\n          <div class=\"ant-picker-footer\">\n            <!---->\n            <ul class=\"ant-picker-ranges\">\n              <!---->\n              <li class=\"ant-picker-ok\"><button class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\">\n                  <!----><span>Ok</span>\n                </button></li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-picker ant-picker-range\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span></span><span class=\"ant-picker-clear\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/WeekPicker.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`WeekPicker should support style prop 1`] = `\n<div class=\"ant-picker\" style=\"width: 400px;\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/date-picker/demo/basic.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select quarter\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select year\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/bordered.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select quarter\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select year\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-borderless\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-borderless\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start week\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End week\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-borderless\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range ant-picker-borderless\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start year\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End year\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/date-render.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/disabled.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"2015-06-06\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-disabled\">\n      <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"Select month\" title=\"2015-06\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-disabled\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input disabled=\"\" readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/disabled-date.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\" style=\"width: 400px;\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/extra-footer.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/format.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"2015/01/01\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"01/01/2015\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"2015/01\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"custom format: 2015/01/01\" size=\"27\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"11/20 ~ 11/26\" size=\"15\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/mode.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/placement.vue correctly 1`] = `\n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>topLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topRight\"><span class=\"ant-radio-button-inner\"></span></span><span>topRight</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomRight\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomRight</span></label></div>\n<br>\n<br>\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/presetted-ranges.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\" style=\"width: 400px;\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/range-picker.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"21\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start week\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End week\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End month\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start year\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End year\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/select-in-range.vue correctly 1`] = `\n<div class=\"ant-picker ant-picker-range\">\n  <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n  <!----></span>\n  <!---->\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"large\"><span class=\"ant-radio-button-inner\"></span></span><span>Large</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"default\"><span class=\"ant-radio-button-inner\"></span></span><span>Default</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"small\"><span class=\"ant-radio-button-inner\"></span></span><span>Small</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-default\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-default\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select Month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-default\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-default\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select Week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/start-end.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Start\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-status-error\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-status-warning\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-status-error\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range ant-picker-status-warning\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/suffix.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\">ab</span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\">ab</span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\">ab</span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select week\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\">ab</span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/switchable.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Time</span>\n        <!---->\n      </div>\n      <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/text.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select Time\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/date-picker/demo/time.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select Time\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start Time\" size=\"18\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End Time\" size=\"18\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/__snapshots__/other.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`MonthPicker and WeekPicker render MonthPicker 1`] = `\"\"`;\n\nexports[`MonthPicker and WeekPicker render WeekPicker 1`] = `\"\"`;\n\nexports[`Picker format by locale date 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择日期\" title=\"2000-01-01\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`Picker format by locale dateTime 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择日期\" title=\"2000-01-01 00:00:00\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`Picker format by locale month 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择月份\" title=\"2000-01\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`Picker format by locale week 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择周\" title=\"2000-1st\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/date-picker/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('date-picker');\n"
  },
  {
    "path": "components/date-picker/__tests__/mount.test.js",
    "content": "import DatePicker from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\nconst { MonthPicker, WeekPicker, RangePicker } = DatePicker;\n\ndescribe('mount', () => {\n  mountTest(DatePicker);\n  mountTest(MonthPicker);\n  mountTest(WeekPicker);\n  mountTest(RangePicker);\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/other.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport dayjs from 'dayjs';\nimport DatePicker from '../';\nimport LocaleProvider from '../../locale-provider';\nimport locale from '../../locale/zh_CN';\njest.mock('../../_util/Portal');\nconst { MonthPicker, WeekPicker } = DatePicker;\n\ndescribe('Picker format by locale', () => {\n  const myLocale = {\n    ...locale,\n    DatePicker: {\n      ...locale.DatePicker,\n      dateFormat: 'YYYY 年 M 月 D 日',\n      dateTimeFormat: 'YYYY 年 M 月 D 日 H 时 m 分 s 秒',\n      weekFormat: 'YYYY 年 W 周',\n      monthFormat: 'YYYY 年 M 月',\n    },\n  };\n\n  const date = dayjs('2000-01-01', 'YYYY-MM-DD');\n  function matchPicker(name, Picker, props) {\n    it(name, async () => {\n      const wrapper = mount(\n        {\n          render() {\n            return (\n              <LocaleProvider locale={myLocale}>\n                <Picker value={date} {...props} />\n              </LocaleProvider>\n            );\n          },\n        },\n        { sync: false },\n      );\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n  }\n\n  matchPicker('date', DatePicker);\n  matchPicker('dateTime', DatePicker, { showTime: true });\n  matchPicker('week', WeekPicker);\n  matchPicker('month', MonthPicker);\n});\n\ndescribe('MonthPicker and WeekPicker', () => {\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  it('render MonthPicker', async () => {\n    const birthday = dayjs('2000-01-01', 'YYYY-MM-DD').locale('zh-cn');\n    const wrapper = mount(MonthPicker, { props: { open: true }, sync: false });\n    await asyncExpect(() => {\n      wrapper.setProps({ value: birthday });\n    });\n\n    await asyncExpect(() => {\n      expect(document.body.innerHTML).toMatchSnapshot();\n    });\n  });\n\n  it('render WeekPicker', async () => {\n    const birthday = dayjs('2000-01-01', 'YYYY-MM-DD').locale('zh-cn');\n    const wrapper = mount(WeekPicker, { props: { open: false }, sync: false });\n    await sleep(10);\n    wrapper.setProps({ value: birthday, open: true });\n    await sleep(1000);\n    expect(document.body.innerHTML).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/date-picker/__tests__/utils.js",
    "content": "export function $$(className) {\n  return document.body.querySelectorAll(className);\n}\nexport function hasSelected(wrapper, date) {\n  return document.body\n    .querySelector(`[title=\"${date.format('LL')}\"][role=\"gridcell\"]`)\n    .getAttribute('class')\n    .split(' ')\n    .includes('ant-calendar-selected-day');\n}\n\nexport function openPanel(wrapper) {\n  wrapper.find('.ant-calendar-picker-input').trigger('click');\n}\n\nexport function clearInput(wrapper) {\n  wrapper.find('.ant-calendar-picker-clear').trigger('click');\n}\n\nexport function nextYear() {\n  $$('.ant-calendar-next-year-btn')[0].click();\n}\n\nexport function nextMonth() {\n  $$('.ant-calendar-next-month-btn')[0].click();\n}\n\nexport function selectDateFromBody(date, index) {\n  let calendar = document.body;\n  if (index !== undefined) {\n    calendar = document.body.querySelectorAll('.ant-calendar-range-part')[index];\n  }\n  calendar.querySelector(`[title=\"${date.format('LL')}\"][role=\"gridcell\"]`).click();\n}\n\nexport function openPicker(wrapper, index = 0) {\n  wrapper.findAll('input')[index].trigger('mousedown');\n  wrapper.findAll('input')[index].trigger('focus');\n}\nexport function closePicker(wrapper, index = 0) {\n  wrapper.findAll('input')[index].trigger('blur');\n}\n\nexport function selectCell(wrapper, text, index = 0) {\n  let matchCell;\n  $$('table')\n    [index].querySelectorAll('td')\n    .forEach(td => {\n      if (td.textContent === String(text) && td.className.includes('-in-view')) {\n        matchCell = td;\n        td.click('click');\n      }\n    });\n\n  if (!matchCell) {\n    throw new Error('Cell not match in picker panel.');\n  }\n\n  return matchCell;\n}\n"
  },
  {
    "path": "components/date-picker/date-fns.tsx",
    "content": "import type { App } from 'vue';\nimport dataFnsGenerateConfig from '../vc-picker/generate/dateFns';\nimport type {\n  PickerProps,\n  PickerDateProps,\n  RangePickerProps as BaseRangePickerProps,\n} from './generatePicker';\nimport generatePicker from './generatePicker';\nimport type { ExtraDatePickerProps, ExtraRangePickerProps } from './generatePicker/props';\n\nexport type DatePickerProps = PickerProps<Date> & ExtraDatePickerProps<Date>;\nexport type MonthPickerProps = Omit<PickerDateProps<Date>, 'picker'> & ExtraDatePickerProps<Date>;\nexport type WeekPickerProps = Omit<PickerDateProps<Date>, 'picker'> & ExtraDatePickerProps<Date>;\nexport type RangePickerProps = BaseRangePickerProps<Date> & ExtraRangePickerProps<Date>;\n\nconst { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =\n  generatePicker<Date>(dataFnsGenerateConfig);\n\n/* istanbul ignore next */\nexport { RangePicker, WeekPicker, MonthPicker, QuarterPicker };\n\nexport default Object.assign(DatePicker, {\n  WeekPicker,\n  MonthPicker,\n  YearPicker,\n  RangePicker,\n  TimePicker,\n  QuarterPicker,\n  install: (app: App) => {\n    app.component(DatePicker.name, DatePicker);\n    app.component(RangePicker.name, RangePicker);\n    app.component(MonthPicker.name, MonthPicker);\n    app.component(WeekPicker.name, WeekPicker);\n    app.component(QuarterPicker.name, QuarterPicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/date-picker/dayjs.tsx",
    "content": "import type { Dayjs } from 'dayjs';\nimport type { App } from 'vue';\nimport dayjsGenerateConfig from '../vc-picker/generate/dayjs';\nimport type {\n  PickerProps,\n  PickerDateProps,\n  RangePickerProps as BaseRangePickerProps,\n} from './generatePicker';\nimport generatePicker from './generatePicker';\nimport type { ExtraDatePickerProps, ExtraRangePickerProps } from './generatePicker/props';\n\nexport type DatePickerProps = PickerProps<Dayjs> & ExtraDatePickerProps<Dayjs>;\nexport type MonthPickerProps = Omit<PickerDateProps<Dayjs>, 'picker'> & ExtraDatePickerProps<Dayjs>;\nexport type WeekPickerProps = Omit<PickerDateProps<Dayjs>, 'picker'> & ExtraDatePickerProps<Dayjs>;\nexport type RangePickerProps = BaseRangePickerProps<Dayjs> & ExtraRangePickerProps<Dayjs>;\n\nconst { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =\n  generatePicker<Dayjs>(dayjsGenerateConfig);\n\n/* istanbul ignore next */\nexport { RangePicker, WeekPicker, MonthPicker, QuarterPicker };\n\nexport default Object.assign(DatePicker, {\n  WeekPicker,\n  MonthPicker,\n  YearPicker,\n  RangePicker,\n  TimePicker,\n  QuarterPicker,\n  install: (app: App) => {\n    app.component(DatePicker.name, DatePicker);\n    app.component(RangePicker.name, RangePicker);\n    app.component(MonthPicker.name, MonthPicker);\n    app.component(WeekPicker.name, WeekPicker);\n    app.component(QuarterPicker.name, QuarterPicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/date-picker/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法，在浮层中可以选择或者输入日期。\n\n## en-US\n\nBasic use case. Users can select or input a date in panel.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"value1\" />\n    <a-date-picker v-model:value=\"value2\" picker=\"week\" />\n    <a-date-picker v-model:value=\"value3\" picker=\"month\" />\n    <a-date-picker v-model:value=\"value4\" picker=\"quarter\" />\n    <a-date-picker v-model:value=\"value5\" picker=\"year\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { Dayjs } from 'dayjs';\nconst value1 = ref<Dayjs>();\nconst value2 = ref<Dayjs>();\nconst value3 = ref<Dayjs>();\nconst value4 = ref<Dayjs>();\nconst value5 = ref<Dayjs>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/bordered.vue",
    "content": "<docs>\n---\norder: 23\ntitle:\n  zh-CN: 无边框\n  en-US: Bordered-less\n---\n\n## zh-CN\n\n无边框样式。\n\n## en-US\n\nBordered-less style component.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"value1\" :bordered=\"false\" />\n    <a-date-picker v-model:value=\"value2\" picker=\"week\" :bordered=\"false\" />\n    <a-date-picker v-model:value=\"value3\" picker=\"month\" :bordered=\"false\" />\n    <a-date-picker v-model:value=\"value4\" picker=\"quarter\" :bordered=\"false\" />\n    <a-date-picker v-model:value=\"value5\" picker=\"year\" :bordered=\"false\" />\n\n    <a-range-picker v-model:value=\"value6\" :bordered=\"false\" />\n    <a-range-picker v-model:value=\"value7\" picker=\"week\" :bordered=\"false\" />\n    <a-range-picker v-model:value=\"value8\" picker=\"month\" :bordered=\"false\" />\n    <a-range-picker v-model:value=\"value9\" picker=\"year\" :bordered=\"false\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { Dayjs } from 'dayjs';\nconst value1 = ref<Dayjs>();\nconst value2 = ref<Dayjs>();\nconst value3 = ref<Dayjs>();\nconst value4 = ref<Dayjs>();\nconst value5 = ref<Dayjs>();\nconst value6 = ref<[Dayjs, Dayjs]>();\nconst value7 = ref<[Dayjs, Dayjs]>();\nconst value8 = ref<[Dayjs, Dayjs]>();\nconst value9 = ref<[Dayjs, Dayjs]>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/date-render.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 定制日期单元格\n  en-US: Customized Date Rendering\n---\n\n## zh-CN\n\n使用 `dateRender` 可以自定义日期单元格的内容和样式。\n\n## en-US\n\nWe can customize the rendering of date cells in the calendar by providing a `dateRender` function to `DatePicker`.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"value1\">\n      <template #dateRender=\"{ current }\">\n        <div class=\"ant-picker-cell-inner\" :style=\"getCurrentStyle(current)\">\n          {{ current.date() }}\n        </div>\n      </template>\n    </a-date-picker>\n    <a-range-picker v-model:value=\"value2\">\n      <template #dateRender=\"{ current }\">\n        <div class=\"ant-picker-cell-inner\" :style=\"getCurrentStyle(current)\">\n          {{ current.date() }}\n        </div>\n      </template>\n    </a-range-picker>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport type { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nconst getCurrentStyle = (current: Dayjs) => {\n  const style: CSSProperties = {};\n\n  if (current.date() === 1) {\n    style.border = '1px solid #1890ff';\n    style.borderRadius = '50%';\n  }\n\n  return style;\n};\nconst value1 = ref<Dayjs>();\nconst value2 = ref<[Dayjs, Dayjs]>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/disabled-date.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 不可选择日期和时间\n  en-US: Disabled Date & Time\n---\n\n## zh-CN\n\n可用 `disabledDate` 和 `disabledTime` 分别禁止选择部分日期和时间，其中 `disabledTime` 需要和 `showTime` 一起使用。\n\n## en-US\n\nDisabled part of dates and time by `disabledDate` and `disabledTime` respectively, and `disabledTime` only works with `showTime`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-date-picker\n      v-model:value=\"value1\"\n      format=\"YYYY-MM-DD HH:mm:ss\"\n      :disabled-date=\"disabledDate\"\n      :disabled-time=\"disabledDateTime\"\n      :show-time=\"{ defaultValue: dayjs('00:00:00', 'HH:mm:ss') }\"\n    />\n    <a-date-picker v-model:value=\"value2\" :disabled-date=\"disabledDate\" picker=\"month\" />\n    <a-range-picker v-model:value=\"value3\" :disabled-date=\"disabledDate\" />\n    <a-range-picker\n      v-model:value=\"value4\"\n      style=\"width: 400px\"\n      :disabled-date=\"disabledDate\"\n      :disabled-time=\"disabledRangeTime\"\n      :show-time=\"{\n        hideDisabledOptions: true,\n        defaultValue: [dayjs('00:00:00', 'HH:mm:ss'), dayjs('11:59:59', 'HH:mm:ss')],\n      }\"\n      format=\"YYYY-MM-DD HH:mm:ss\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\nconst range = (start: number, end: number) => {\n  const result = [];\n\n  for (let i = start; i < end; i++) {\n    result.push(i);\n  }\n\n  return result;\n};\n\nconst disabledDate = (current: Dayjs) => {\n  // Can not select days before today and today\n  return current && current < dayjs().endOf('day');\n};\n\nconst disabledDateTime = () => {\n  return {\n    disabledHours: () => range(0, 24).splice(4, 20),\n    disabledMinutes: () => range(30, 60),\n    disabledSeconds: () => [55, 56],\n  };\n};\n\nconst disabledRangeTime = (_: Dayjs, type: 'start' | 'end') => {\n  if (type === 'start') {\n    return {\n      disabledHours: () => range(0, 60).splice(4, 20),\n      disabledMinutes: () => range(30, 60),\n      disabledSeconds: () => [55, 56],\n    };\n  }\n  return {\n    disabledHours: () => range(0, 60).splice(20, 4),\n    disabledMinutes: () => range(0, 31),\n    disabledSeconds: () => [55, 56],\n  };\n};\n\nconst value1 = ref<Dayjs>();\nconst value2 = ref<Dayjs>();\nconst value3 = ref<[Dayjs, Dayjs]>();\nconst value4 = ref<[Dayjs, Dayjs]>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 禁用\n  en-US: Disabled\n---\n\n## zh-CN\n\n选择框的不可用状态。\n\n## en-US\n\nA disabled state of the `DatePicker`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-date-picker v-model:value=\"value1\" />\n    <a-date-picker v-model:value=\"value2\" disabled picker=\"month\" />\n    <a-range-picker v-model:value=\"value3\" disabled />\n    <a-range-picker v-model:value=\"value4\" :disabled=\"[false, true]\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\nconst dateFormat = 'YYYY-MM-DD';\nconst value1 = ref<Dayjs>(dayjs('2015-06-06', dateFormat));\nconst value2 = ref<Dayjs>(dayjs('2015-06', 'YYYY-MM'));\nconst value3 = ref<[Dayjs, Dayjs]>([\n  dayjs('2015-06-06', dateFormat),\n  dayjs('2015-06-06', dateFormat),\n]);\nconst value4 = ref<[Dayjs, Dayjs]>([\n  dayjs('2019-09-03', dateFormat),\n  dayjs('2019-11-22', dateFormat),\n]);\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/extra-footer.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 额外的页脚\n  en-US: Extra Footer\n---\n\n## zh-CN\n\n在浮层中加入额外的页脚，以满足某些定制信息的需求。\n\n## en-US\n\nRender extra footer in panel for customized requirements.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-date-picker>\n      <template #renderExtraFooter>extra footer</template>\n    </a-date-picker>\n    <a-date-picker show-time>\n      <template #renderExtraFooter>extra footer</template>\n    </a-date-picker>\n    <a-range-picker>\n      <template #renderExtraFooter>extra footer</template>\n    </a-range-picker>\n    <a-range-picker show-time>\n      <template #renderExtraFooter>extra footer</template>\n    </a-range-picker>\n    <a-date-picker placeholder=\"Select month\" picker=\"month\">\n      <template #renderExtraFooter>extra footer</template>\n    </a-date-picker>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/date-picker/demo/format.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 日期格式\n  en-US: Date Format\n---\n\n## zh-CN\n\n使用 `format` 属性，可以自定义日期显示格式。\n\n## en-US\n\nWe can set the date format by `format`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"value1\" :format=\"dateFormat\" />\n    <a-date-picker v-model:value=\"value2\" :format=\"dateFormatList\" />\n    <a-date-picker v-model:value=\"value3\" :format=\"monthFormat\" picker=\"month\" />\n    <a-range-picker v-model:value=\"value4\" :format=\"dateFormat\" />\n    <a-date-picker v-model:value=\"value5\" :format=\"customFormat\" />\n    <a-date-picker v-model:value=\"value6\" :format=\"customWeekStartEndFormat\" picker=\"week\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\nconst dateFormat = 'YYYY/MM/DD';\nconst weekFormat = 'MM/DD';\nconst monthFormat = 'YYYY/MM';\nconst dateFormatList = ['DD/MM/YYYY', 'DD/MM/YY'];\n\nconst customWeekStartEndFormat = value =>\n  `${dayjs(value).startOf('week').format(weekFormat)} ~ ${dayjs(value)\n    .endOf('week')\n    .format(weekFormat)}`;\nconst value1 = ref<Dayjs>(dayjs('2015/01/01', dateFormat));\nconst value2 = ref<Dayjs>(dayjs('01/01/2015', dateFormatList[0]));\nconst value3 = ref<Dayjs>(dayjs('2015/01', monthFormat));\nconst value4 = ref<[Dayjs, Dayjs]>([\n  dayjs('2015/01/01', dateFormat),\n  dayjs('2015/01/01', dateFormat),\n]);\nconst value5 = ref<Dayjs>(dayjs('2015/01/01', dateFormat));\nconst value6 = ref<Dayjs>(dayjs());\nconst customFormat = value => `custom format: ${value.format(dateFormat)}`;\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <RangePicker />\n    <Bordered />\n    <Format />\n    <Time />\n    <Disabled />\n    <DisabledDate />\n    <SelectInRnage />\n    <PresettedRanges />\n    <ExtraFooter />\n    <Size />\n    <DateRender />\n    <Mode />\n    <Switchable />\n    <Suffix />\n    <statusVue />\n    <placementVue />\n  </demo-sort>\n</template>\n<script>\nimport Basic from './basic.vue';\nimport DateRender from './date-render.vue';\nimport DisabledDate from './disabled-date.vue';\nimport Disabled from './disabled.vue';\nimport ExtraFooter from './extra-footer.vue';\nimport Format from './format.vue';\nimport Mode from './mode.vue';\nimport PresettedRanges from './presetted-ranges.vue';\nimport SelectInRnage from './select-in-range.vue';\nimport Size from './size.vue';\nimport Switchable from './switchable.vue';\nimport Time from './time.vue';\nimport Suffix from './suffix.vue';\nimport Bordered from './bordered.vue';\nimport RangePicker from './range-picker.vue';\nimport placementVue from './placement.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    statusVue,\n    placementVue,\n    Basic,\n    DateRender,\n    DisabledDate,\n    Disabled,\n    ExtraFooter,\n    Format,\n    Mode,\n    PresettedRanges,\n    Size,\n    Switchable,\n    Time,\n    Suffix,\n    SelectInRnage,\n    Bordered,\n    RangePicker,\n  },\n});\n</script>\n<style>\n#components-date-picker-demo .ant-calendar-picker {\n  margin: 0 8px 12px 0;\n}\n</style>\n"
  },
  {
    "path": "components/date-picker/demo/mode.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 受控面板\n  en-US: Controlled Panels\n---\n\n## zh-CN\n\n通过组合 `mode` 与 `onPanelChange` 控制要展示的面板。\n\n## en-US\n\nDeterming which panel to show with `mode` and `onPanelChange`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker\n      :mode=\"mode1\"\n      show-time\n      @openChange=\"handleOpenChange1\"\n      @panelChange=\"handlePanelChange1\"\n    />\n    <a-range-picker\n      :placeholder=\"['Start month', 'End month']\"\n      format=\"YYYY-MM\"\n      :value=\"value\"\n      :mode=\"mode2\"\n      @panelChange=\"handlePanelChange2\"\n      @change=\"handleChange\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst mode1 = ref<any>('time');\nconst mode2 = ref<any>(['month', 'month']);\nconst value = ref<[Dayjs, Dayjs]>();\n\nconst handleOpenChange1 = (open: boolean) => {\n  if (open) {\n    mode1.value = 'time';\n  }\n};\n\nconst handleChange = (val: [Dayjs, Dayjs]) => {\n  value.value = val;\n};\n\nconst handlePanelChange1 = (_val: [Dayjs, Dayjs], mode: any) => {\n  mode1.value = mode;\n};\n\nconst handlePanelChange2 = (val: [Dayjs, Dayjs], mode: any[]) => {\n  value.value = val;\n  mode2.value = [mode[0] === 'date' ? 'month' : mode[0], mode[1] === 'date' ? 'month' : mode[1]];\n};\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/placement.vue",
    "content": "<docs>\n---\norder: 28\ntitle:\n  zh-CN: 弹出位置\n  en-US: Popup Placement\n---\n\n## zh-CN\n\n可以通过 `placement` 手动指定弹出的位置。\n\n## en-US\n\nYou can manually specify the position of the popup via `placement`.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\">\n    <a-radio-button value=\"topLeft\">topLeft</a-radio-button>\n    <a-radio-button value=\"topRight\">topRight</a-radio-button>\n    <a-radio-button value=\"bottomLeft\">bottomLeft</a-radio-button>\n    <a-radio-button value=\"bottomRight\">bottomRight</a-radio-button>\n  </a-radio-group>\n  <br />\n  <br />\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"value1\" :placement=\"placement\" />\n    <a-range-picker v-model:value=\"value2\" :placement=\"placement\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { Dayjs } from 'dayjs';\nconst placement = ref('topLeft' as const);\nconst value1 = ref<Dayjs>();\nconst value2 = ref<[Dayjs, Dayjs]>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/presetted-ranges.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 预设范围\n  en-US: Preset Ranges\n---\n\n## zh-CN\n\n可以预设常用的日期范围以提高用户体验。\n\n## en-US\n\nWe can set presetted ranges to RangePicker to improve user experience.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker :presets=\"presets\" @change=\"onChange\" />\n    <a-range-picker :presets=\"rangePresets\" @change=\"onRangeChange\" />\n    <a-range-picker\n      style=\"width: 400px\"\n      show-time\n      format=\"YYYY/MM/DD HH:mm:ss\"\n      :presets=\"rangePresets\"\n      @change=\"onRangeChange\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\ntype RangeValue = [Dayjs, Dayjs];\nconst onChange = (date: Dayjs) => {\n  if (date) {\n    console.log('Date: ', date);\n  } else {\n    console.log('Clear');\n  }\n};\nconst onRangeChange = (dates: RangeValue, dateStrings: string[]) => {\n  if (dates) {\n    console.log('From: ', dates[0], ', to: ', dates[1]);\n    console.log('From: ', dateStrings[0], ', to: ', dateStrings[1]);\n  } else {\n    console.log('Clear');\n  }\n};\n\nconst presets = ref([\n  { label: 'Yesterday', value: dayjs().add(-1, 'd') },\n  { label: 'Last Week', value: dayjs().add(-7, 'd') },\n  { label: 'Last Month', value: dayjs().add(-1, 'month') },\n]);\n\nconst rangePresets = ref([\n  { label: 'Last 7 Days', value: [dayjs().add(-7, 'd'), dayjs()] },\n  { label: 'Last 14 Days', value: [dayjs().add(-14, 'd'), dayjs()] },\n  { label: 'Last 30 Days', value: [dayjs().add(-30, 'd'), dayjs()] },\n  { label: 'Last 90 Days', value: [dayjs().add(-90, 'd'), dayjs()] },\n]);\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/range-picker.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 范围选择器\n  en-US: Range Picker\n---\n\n## zh-CN\n\n通过设置 `picker` 属性，指定范围选择器类型。\n\n## en-US\n\nSet range picker type by `picker` prop.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-range-picker v-model:value=\"value1\" />\n    <a-range-picker v-model:value=\"value2\" show-time />\n    <a-range-picker v-model:value=\"value3\" picker=\"week\" />\n    <a-range-picker v-model:value=\"value4\" picker=\"month\" />\n    <a-range-picker v-model:value=\"value5\" picker=\"year\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { Dayjs } from 'dayjs';\ntype RangeValue = [Dayjs, Dayjs];\nconst value1 = ref<RangeValue>();\nconst value2 = ref<RangeValue>();\nconst value3 = ref<RangeValue>();\nconst value4 = ref<RangeValue>();\nconst value5 = ref<RangeValue>();\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/select-in-range.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 选择不超过七天的范围\n  en-US: Select range dates in 7 days\n---\n\n## zh-CN\n\n这里举例如何用 `onCalendarChange` 和 `disabledDate` 来限制动态的日期区间选择。\n\n## en-US\n\nA example shows how to select a dynamic range by using `onCalendarChange` and `disabledDate`.\n\n</docs>\n<template>\n  <a-range-picker\n    :value=\"hackValue || value\"\n    :disabled-date=\"disabledDate\"\n    @change=\"onChange\"\n    @openChange=\"onOpenChange\"\n    @calendarChange=\"onCalendarChange\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\ntype RangeValue = [Dayjs, Dayjs];\nconst dates = ref<RangeValue>();\nconst value = ref<RangeValue>();\nconst hackValue = ref<RangeValue>();\n\nconst disabledDate = (current: Dayjs) => {\n  if (!dates.value || (dates.value as any).length === 0) {\n    return false;\n  }\n  const tooLate = dates.value[0] && current.diff(dates.value[0], 'days') > 7;\n  const tooEarly = dates.value[1] && dates.value[1].diff(current, 'days') > 7;\n  return tooEarly || tooLate;\n};\n\nconst onOpenChange = (open: boolean) => {\n  if (open) {\n    dates.value = [] as any;\n    hackValue.value = [] as any;\n  } else {\n    hackValue.value = undefined;\n  }\n};\n\nconst onChange = (val: RangeValue) => {\n  value.value = val;\n};\n\nconst onCalendarChange = (val: RangeValue) => {\n  dates.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/size.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 三种大小\n  en-US: Three Sizes\n---\n\n## zh-CN\n\n三种大小的输入框，若不设置，则为 `default`。\n\n## en-US\n\nThe input box comes in three sizes. `default` will be used if `size` is omitted.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-radio-group v-model:value=\"size\">\n      <a-radio-button value=\"large\">Large</a-radio-button>\n      <a-radio-button value=\"default\">Default</a-radio-button>\n      <a-radio-button value=\"small\">Small</a-radio-button>\n    </a-radio-group>\n    <a-date-picker :size=\"size\" />\n    <a-date-picker :size=\"size\" placeholder=\"Select Month\" picker=\"month\" />\n    <a-range-picker :size=\"size\" />\n    <a-date-picker :size=\"size\" placeholder=\"Select Week\" picker=\"week\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst size = ref<any>('default');\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/start-end.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 自定义日期范围选择\n  en-US: Customized Range Picker\n---\n\n## zh-CN\n\n当 `RangePicker` 无法满足业务需求时，可以使用两个 `DatePicker` 实现类似的功能。\n> - 通过设置 `disabledDate` 方法，来约束开始和结束日期。\n> - 通过 `open` `openChange` 来优化交互。\n\n## en-US\n\nWhen `RangePicker` does not satisfied your requirements, try to implement similar functionality with two `DatePicker`.\n> - Use the `disabledDate` property to limit the start and end dates.\n> - Improve user experience with `open` and `openChange`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-date-picker\n      v-model:value=\"startValue\"\n      :disabled-date=\"disabledStartDate\"\n      show-time\n      format=\"YYYY-MM-DD HH:mm:ss\"\n      placeholder=\"Start\"\n      @openChange=\"handleStartOpenChange\"\n    />\n    <a-date-picker\n      v-model:value=\"endValue\"\n      :disabled-date=\"disabledEndDate\"\n      show-time\n      format=\"YYYY-MM-DD HH:mm:ss\"\n      placeholder=\"End\"\n      :open=\"endOpen\"\n      @openChange=\"handleEndOpenChange\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { Dayjs } from 'dayjs';\nimport { ref, watch } from 'vue';\nconst startValue = ref<Dayjs>();\nconst endValue = ref<Dayjs>();\nconst endOpen = ref<boolean>(false);\n\nconst disabledStartDate = (startValue: Dayjs) => {\n  if (!startValue || !endValue.value) {\n    return false;\n  }\n\n  return startValue.valueOf() > endValue.value.valueOf();\n};\n\nconst disabledEndDate = (endValue: Dayjs) => {\n  if (!endValue || !startValue.value) {\n    return false;\n  }\n\n  return startValue.value.valueOf() >= endValue.valueOf();\n};\n\nconst handleStartOpenChange = (open: boolean) => {\n  if (!open) {\n    endOpen.value = true;\n  }\n};\n\nconst handleEndOpenChange = (open: boolean) => {\n  endOpen.value = open;\n};\n\nwatch(startValue, () => {\n  console.log('startValue', startValue.value);\n});\n\nwatch(endValue, () => {\n  console.log('endValue', endValue.value);\n});\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 DatePicker 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to DatePicker with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-date-picker status=\"error\" />\n    <a-date-picker status=\"warning\" />\n    <a-range-picker status=\"error\" />\n    <a-range-picker status=\"warning\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/date-picker/demo/suffix.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 后缀图标\n  en-US: Suffix\n---\n\n## zh-CN\n\n通过 `suffixIcon` 自定义后缀图标\n\n## en-US\n\nCustomize the suffix icon through `suffixIcon`\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-date-picker @change=\"onChange\">\n      <template #suffixIcon>\n        <SmileOutlined />\n      </template>\n    </a-date-picker>\n    <a-date-picker placeholder=\"Select month\" picker=\"month\" @change=\"onChange\">\n      <template #suffixIcon>\n        <SmileOutlined />\n      </template>\n    </a-date-picker>\n    <a-range-picker @change=\"onRangeChange\">\n      <template #suffixIcon>\n        <SmileOutlined />\n      </template>\n    </a-range-picker>\n    <a-date-picker placeholder=\"Select week\" picker=\"week\" @change=\"onChange\">\n      <template #suffixIcon>\n        <SmileOutlined />\n      </template>\n    </a-date-picker>\n    <a-date-picker suffix-icon=\"ab\" @change=\"onChange\" />\n    <a-date-picker suffix-icon=\"ab\" placeholder=\"Select month\" picker=\"month\" @change=\"onChange\" />\n    <a-range-picker suffix-icon=\"ab\" @change=\"onRangeChange\" />\n    <a-date-picker suffix-icon=\"ab\" placeholder=\"Select week\" picker=\"week\" @change=\"onChange\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\nimport { Dayjs } from 'dayjs';\nconst onChange = (date: Dayjs | string, dateString: string) => {\n  console.log(date, dateString);\n};\n\nconst onRangeChange = (date: [Dayjs, Dayjs], dateString: [string, string]) => {\n  console.log(date, dateString);\n};\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/switchable.vue",
    "content": "<docs>\n---\norder: 1.1\ntitle:\n  zh-CN: 切换不同的选择器\n  en-US: Switchable picker\n---\n\n## zh-CN\n\n提供选择器，自由切换不同类型的日期选择器，常用于日期筛选场合。\n\n## en-US\n\nSwitch in different types of pickers by Select.\n</docs>\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-select v-model:value=\"type\">\n      <a-select-option value=\"time\">Time</a-select-option>\n      <a-select-option value=\"date\">Date</a-select-option>\n      <a-select-option value=\"week\">Week</a-select-option>\n      <a-select-option value=\"month\">Month</a-select-option>\n      <a-select-option value=\"quarter\">Quarter</a-select-option>\n      <a-select-option value=\"year\">Year</a-select-option>\n    </a-select>\n    <template v-if=\"type === 'time'\">\n      <a-time-picker />\n    </template>\n    <template v-else>\n      <a-date-picker :picker=\"type\" />\n    </template>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst type = ref<any>('time');\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/text.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 自定义渲染\n  en-US: Custum Time\n---\n\n## zh-CN\n\n增加自定义渲染功能，在默认 `slot` 中，你可以设置任何你想渲染的组件。\n\n## en-US\n\nAdded custom rendering function, in the default `slot`, you can set any component you want to render.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker v-model:value=\"time1\" placeholder=\"Select Time\" @ok=\"onOk\">\n      <span>{{ time1 ? time1.toString() : 'SelectTime' }}</span>\n    </a-date-picker>\n    <a-range-picker v-model:value=\"time2\">\n      <span>\n        {{ time2 ? time2.toString() : '请选择' }}\n      </span>\n    </a-range-picker>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { Dayjs } from 'dayjs';\nimport { ref } from 'vue';\nconst time1 = ref<Dayjs>();\nconst time2 = ref<[Dayjs, Dayjs]>();\n\nconst onOk = (value: Dayjs) => {\n  console.log('onOk: ', value);\n};\n</script>\n"
  },
  {
    "path": "components/date-picker/demo/time.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 日期时间选择\n  en-US: Choose Time\n---\n\n## zh-CN\n\n增加选择时间功能，当 `showTime` 为一个对象时，其属性会传递给内建的 `TimePicker`。\n\n## en-US\n\nThis property provide an additional time selection. When `showTime` is an Object, its properties will be passed on to built-in `TimePicker`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-date-picker show-time placeholder=\"Select Time\" @change=\"onChange\" @ok=\"onOk\" />\n    <a-range-picker\n      :show-time=\"{ format: 'HH:mm' }\"\n      format=\"YYYY-MM-DD HH:mm\"\n      :placeholder=\"['Start Time', 'End Time']\"\n      @change=\"onRangeChange\"\n      @ok=\"onRangeOk\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { Dayjs } from 'dayjs';\n\nconst onChange = (value: Dayjs, dateString: string) => {\n  console.log('Selected Time: ', value);\n  console.log('Formatted Selected Time: ', dateString);\n};\n\nconst onOk = (value: Dayjs) => {\n  console.log('onOk: ', value);\n};\n\nconst onRangeChange = (value: [Dayjs, Dayjs], dateString: [string, string]) => {\n  console.log('Selected Time: ', value);\n  console.log('Formatted Selected Time: ', dateString);\n};\n\nconst onRangeOk = (value: [Dayjs, Dayjs]) => {\n  console.log('onOk: ', value);\n};\n</script>\n"
  },
  {
    "path": "components/date-picker/generatePicker/generateRangePicker.tsx",
    "content": "import CalendarOutlined from '@ant-design/icons-vue/CalendarOutlined';\nimport ClockCircleOutlined from '@ant-design/icons-vue/ClockCircleOutlined';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport SwapRightOutlined from '@ant-design/icons-vue/SwapRightOutlined';\nimport { RangePicker as VCRangePicker } from '../../vc-picker';\nimport type { GenerateConfig } from '../../vc-picker/generate/index';\nimport enUS from '../locale/en_US';\nimport { useLocaleReceiver } from '../../locale-provider/LocaleReceiver';\nimport { getRangePlaceholder, transPlacement2DropdownAlign } from '../util';\nimport { getTimeProps, Components } from '.';\nimport { computed, defineComponent, ref } from 'vue';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport classNames from '../../_util/classNames';\nimport type { CommonProps, RangePickerProps } from './props';\nimport { commonProps, rangePickerProps } from './props';\nimport type { PanelMode, RangeValue } from '../../vc-picker/interface';\nimport type { RangePickerSharedProps } from '../../vc-picker/RangePicker';\nimport { FormItemInputContext, useInjectFormItemContext } from '../../form/FormItemContext';\nimport omit from '../../_util/omit';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\n\n//CSSINJS\nimport useStyle from '../style';\nimport { useCompactItemContext } from '../../space/Compact';\nimport devWarning from '../../vc-util/devWarning';\nimport type { CustomSlotsType } from '../../_util/type';\n\nexport default function generateRangePicker<DateType, ExtraProps = {}>(\n  generateConfig: GenerateConfig<DateType>,\n  extraProps: ExtraProps,\n) {\n  const RangePicker = defineComponent({\n    compatConfig: { MODE: 3 },\n    name: 'ARangePicker',\n    inheritAttrs: false,\n    props: {\n      ...commonProps<DateType>(),\n      ...rangePickerProps<DateType>(),\n      ...extraProps,\n    },\n    slots: Object as CustomSlotsType<{\n      suffixIcon?: any;\n      prevIcon?: any;\n      nextIcon?: any;\n      superPrevIcon?: any;\n      superNextIcon?: any;\n      dateRender?: any;\n      renderExtraFooter?: any;\n      default?: any;\n      separator?: any;\n      clearIcon?: any;\n    }>,\n    setup(_props, { expose, slots, attrs, emit }) {\n      const props = _props as unknown as CommonProps<DateType> & RangePickerProps<DateType>;\n      const formItemContext = useInjectFormItemContext();\n      const formItemInputContext = FormItemInputContext.useInject();\n\n      // =================== Warning =====================\n      if (process.env.NODE_ENV !== 'production') {\n        devWarning(\n          !props.dropdownClassName,\n          'RangePicker',\n          '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n        );\n        devWarning(\n          !attrs.getCalendarContainer,\n          'DatePicker',\n          '`getCalendarContainer` is deprecated. Please use `getPopupContainer\"` instead.',\n        );\n      }\n\n      const { prefixCls, direction, getPopupContainer, size, rootPrefixCls, disabled } =\n        useConfigInject('picker', props);\n      const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n      const mergedSize = computed(() => compactSize.value || size.value);\n      // style\n      const [wrapSSR, hashId] = useStyle(prefixCls);\n      const pickerRef = ref();\n      expose({\n        focus: () => {\n          pickerRef.value?.focus();\n        },\n        blur: () => {\n          pickerRef.value?.blur();\n        },\n      });\n      const maybeToStrings = (dates: DateType[]) => {\n        return props.valueFormat ? generateConfig.toString(dates, props.valueFormat) : dates;\n      };\n      const onChange = (dates: RangeValue<DateType>, dateStrings: [string, string]) => {\n        const values = maybeToStrings(dates);\n        emit('update:value', values);\n        emit('change', values, dateStrings);\n        formItemContext.onFieldChange();\n      };\n      const onOpenChange = (open: boolean) => {\n        emit('update:open', open);\n        emit('openChange', open);\n      };\n      const onFocus = (e: FocusEvent) => {\n        emit('focus', e);\n      };\n      const onBlur = (e: FocusEvent) => {\n        emit('blur', e);\n        formItemContext.onFieldBlur();\n      };\n      const onPanelChange = (dates: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => {\n        const values = maybeToStrings(dates);\n        emit('panelChange', values, modes);\n      };\n      const onOk = (dates: DateType[]) => {\n        const value = maybeToStrings(dates);\n        emit('ok', value);\n      };\n      const onCalendarChange: RangePickerSharedProps<DateType>['onCalendarChange'] = (\n        dates: [DateType, DateType],\n        dateStrings: [string, string],\n        info,\n      ) => {\n        const values = maybeToStrings(dates);\n        emit('calendarChange', values, dateStrings, info);\n      };\n      const [contextLocale] = useLocaleReceiver('DatePicker', enUS);\n\n      const value = computed(() => {\n        if (props.value) {\n          return props.valueFormat\n            ? generateConfig.toDate(props.value, props.valueFormat)\n            : props.value;\n        }\n        return props.value;\n      });\n      const defaultValue = computed(() => {\n        if (props.defaultValue) {\n          return props.valueFormat\n            ? generateConfig.toDate(props.defaultValue, props.valueFormat)\n            : props.defaultValue;\n        }\n        return props.defaultValue;\n      });\n      const defaultPickerValue = computed(() => {\n        if (props.defaultPickerValue) {\n          return props.valueFormat\n            ? generateConfig.toDate(props.defaultPickerValue, props.valueFormat)\n            : props.defaultPickerValue;\n        }\n        return props.defaultPickerValue;\n      });\n      return () => {\n        const locale = { ...contextLocale.value, ...props.locale };\n        const p = { ...props, ...attrs };\n        const {\n          prefixCls: customizePrefixCls,\n          bordered = true,\n          placeholder,\n          suffixIcon = slots.suffixIcon?.(),\n          picker = 'date',\n          transitionName,\n          allowClear = true,\n          dateRender = slots.dateRender,\n          renderExtraFooter = slots.renderExtraFooter,\n          separator = slots.separator?.(),\n          clearIcon = slots.clearIcon?.(),\n          id = formItemContext.id.value,\n          ...restProps\n        } = p;\n        delete restProps['onUpdate:value'];\n        delete restProps['onUpdate:open'];\n        const { format, showTime } = p as any;\n\n        let additionalOverrideProps: any = {};\n        additionalOverrideProps = {\n          ...additionalOverrideProps,\n          ...(showTime ? getTimeProps({ format, picker, ...showTime }) : {}),\n          ...(picker === 'time'\n            ? getTimeProps({ format, ...omit(restProps, ['disabledTime']), picker })\n            : {}),\n        };\n        const pre = prefixCls.value;\n        const suffixNode = (\n          <>\n            {suffixIcon || (picker === 'time' ? <ClockCircleOutlined /> : <CalendarOutlined />)}\n            {formItemInputContext.hasFeedback && formItemInputContext.feedbackIcon}\n          </>\n        );\n        return wrapSSR(\n          <VCRangePicker\n            dateRender={dateRender}\n            renderExtraFooter={renderExtraFooter}\n            separator={\n              separator || (\n                <span aria-label=\"to\" class={`${pre}-separator`}>\n                  <SwapRightOutlined />\n                </span>\n              )\n            }\n            ref={pickerRef}\n            dropdownAlign={transPlacement2DropdownAlign(direction.value, props.placement)}\n            placeholder={getRangePlaceholder(locale, picker, placeholder as [string, string])}\n            suffixIcon={suffixNode}\n            clearIcon={clearIcon || <CloseCircleFilled />}\n            allowClear={allowClear}\n            transitionName={transitionName || `${rootPrefixCls.value}-slide-up`}\n            {...restProps}\n            {...additionalOverrideProps}\n            disabled={disabled.value}\n            id={id}\n            value={value.value}\n            defaultValue={defaultValue.value}\n            defaultPickerValue={defaultPickerValue.value}\n            picker={picker}\n            class={classNames(\n              {\n                [`${pre}-${mergedSize.value}`]: mergedSize.value,\n                [`${pre}-borderless`]: !bordered,\n              },\n              getStatusClassNames(\n                pre,\n                getMergedStatus(formItemInputContext.status, props.status),\n                formItemInputContext.hasFeedback,\n              ),\n              attrs.class,\n              hashId.value,\n              compactItemClassnames.value,\n            )}\n            locale={locale!.lang}\n            prefixCls={pre}\n            getPopupContainer={attrs.getCalendarContainer || getPopupContainer.value}\n            generateConfig={generateConfig}\n            prevIcon={slots.prevIcon?.() || <span class={`${pre}-prev-icon`} />}\n            nextIcon={slots.nextIcon?.() || <span class={`${pre}-next-icon`} />}\n            superPrevIcon={slots.superPrevIcon?.() || <span class={`${pre}-super-prev-icon`} />}\n            superNextIcon={slots.superNextIcon?.() || <span class={`${pre}-super-next-icon`} />}\n            components={Components}\n            direction={direction.value}\n            dropdownClassName={classNames(\n              hashId.value,\n              props.popupClassName,\n              props.dropdownClassName,\n            )}\n            onChange={onChange}\n            onOpenChange={onOpenChange}\n            onFocus={onFocus}\n            onBlur={onBlur}\n            onPanelChange={onPanelChange}\n            onOk={onOk}\n            onCalendarChange={onCalendarChange}\n          />,\n        );\n      };\n    },\n  });\n\n  return RangePicker;\n}\n"
  },
  {
    "path": "components/date-picker/generatePicker/generateSinglePicker.tsx",
    "content": "import CalendarOutlined from '@ant-design/icons-vue/CalendarOutlined';\nimport ClockCircleOutlined from '@ant-design/icons-vue/ClockCircleOutlined';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport RCPicker from '../../vc-picker';\nimport type { PanelMode, PickerMode } from '../../vc-picker/interface';\nimport type { GenerateConfig } from '../../vc-picker/generate/index';\nimport enUS from '../locale/en_US';\nimport { getPlaceholder, transPlacement2DropdownAlign } from '../util';\nimport { useLocaleReceiver } from '../../locale-provider/LocaleReceiver';\nimport { getTimeProps, Components } from '.';\nimport { computed, defineComponent, ref } from 'vue';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport classNames from '../../_util/classNames';\nimport type { CommonProps, DatePickerProps } from './props';\nimport { commonProps, datePickerProps } from './props';\n\nimport devWarning from '../../vc-util/devWarning';\nimport { FormItemInputContext, useInjectFormItemContext } from '../../form/FormItemContext';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\nimport { useCompactItemContext } from '../../space/Compact';\nimport type { CustomSlotsType } from '../../_util/type';\n//CSSINJS\nimport useStyle from '../style';\n\nexport default function generateSinglePicker<DateType, ExtraProps = {}>(\n  generateConfig: GenerateConfig<DateType>,\n  extraProps: ExtraProps,\n) {\n  function getPicker(picker?: PickerMode, displayName?: string) {\n    const comProps = {\n      ...commonProps<DateType>(),\n      ...datePickerProps<DateType>(),\n      ...extraProps,\n    };\n    return defineComponent({\n      compatConfig: { MODE: 3 },\n      name: displayName,\n      inheritAttrs: false,\n      props: comProps,\n      slots: Object as CustomSlotsType<{\n        suffixIcon?: any;\n        prevIcon?: any;\n        nextIcon?: any;\n        superPrevIcon?: any;\n        superNextIcon?: any;\n        dateRender?: any;\n        renderExtraFooter?: any;\n        monthCellRender?: any;\n        monthCellContentRender?: any;\n        clearIcon?: any;\n        default?: any;\n      }>,\n      setup(_props, { slots, expose, attrs, emit }) {\n        // 兼容 vue 3.2.7\n        const props = _props as unknown as CommonProps<DateType> &\n          DatePickerProps<DateType> &\n          ExtraProps;\n        const formItemContext = useInjectFormItemContext();\n        const formItemInputContext = FormItemInputContext.useInject();\n        // =================== Warning =====================\n        if (process.env.NODE_ENV !== 'production') {\n          devWarning(\n            picker !== 'quarter',\n            displayName || 'DatePicker',\n            `DatePicker.${displayName} is legacy usage. Please use DatePicker[picker='${picker}'] directly.`,\n          );\n\n          devWarning(\n            !props.dropdownClassName,\n            displayName || 'DatePicker',\n            '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n          );\n          devWarning(\n            !(props.monthCellContentRender || slots.monthCellContentRender),\n            displayName || 'DatePicker',\n            '`monthCellContentRender` is deprecated. Please use `monthCellRender\"` instead.',\n          );\n\n          devWarning(\n            !attrs.getCalendarContainer,\n            displayName || 'DatePicker',\n            '`getCalendarContainer` is deprecated. Please use `getPopupContainer\"` instead.',\n          );\n        }\n\n        const { prefixCls, direction, getPopupContainer, size, rootPrefixCls, disabled } =\n          useConfigInject('picker', props);\n        const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n        const mergedSize = computed(() => compactSize.value || size.value);\n        // style\n        const [wrapSSR, hashId] = useStyle(prefixCls);\n\n        const pickerRef = ref();\n        expose({\n          focus: () => {\n            pickerRef.value?.focus();\n          },\n          blur: () => {\n            pickerRef.value?.blur();\n          },\n        });\n        const maybeToString = (date: DateType) => {\n          return props.valueFormat ? generateConfig.toString(date, props.valueFormat) : date;\n        };\n        const onChange = (date: DateType, dateString: string) => {\n          const value = maybeToString(date);\n          emit('update:value', value);\n          emit('change', value, dateString);\n          formItemContext.onFieldChange();\n        };\n        const onOpenChange = (open: boolean) => {\n          emit('update:open', open);\n          emit('openChange', open);\n        };\n        const onFocus = (e: FocusEvent) => {\n          emit('focus', e);\n        };\n        const onBlur = (e: FocusEvent) => {\n          emit('blur', e);\n          formItemContext.onFieldBlur();\n        };\n        const onPanelChange = (date: DateType, mode: PanelMode | null) => {\n          const value = maybeToString(date);\n          emit('panelChange', value, mode);\n        };\n        const onOk = (date: DateType) => {\n          const value = maybeToString(date);\n          emit('ok', value);\n        };\n\n        const [contextLocale] = useLocaleReceiver('DatePicker', enUS);\n\n        const value = computed(() => {\n          if (props.value) {\n            return props.valueFormat\n              ? generateConfig.toDate(props.value as string | DateType, props.valueFormat)\n              : props.value;\n          }\n          return (props.value === '' ? undefined : props.value) as DateType;\n        });\n        const defaultValue = computed(() => {\n          if (props.defaultValue) {\n            return props.valueFormat\n              ? generateConfig.toDate(props.defaultValue as string | DateType, props.valueFormat)\n              : props.defaultValue;\n          }\n          return (props.defaultValue === '' ? undefined : props.defaultValue) as DateType;\n        });\n        const defaultPickerValue = computed(() => {\n          if (props.defaultPickerValue) {\n            return props.valueFormat\n              ? generateConfig.toDate(\n                  props.defaultPickerValue as string | DateType,\n                  props.valueFormat,\n                )\n              : props.defaultPickerValue;\n          }\n          return (\n            props.defaultPickerValue === '' ? undefined : props.defaultPickerValue\n          ) as DateType;\n        });\n\n        return () => {\n          const locale = { ...contextLocale.value, ...props.locale };\n          const p = { ...props, ...attrs };\n          const {\n            bordered = true,\n            placeholder,\n            suffixIcon = slots.suffixIcon?.(),\n            showToday = true,\n            transitionName,\n            allowClear = true,\n            dateRender = slots.dateRender,\n            renderExtraFooter = slots.renderExtraFooter,\n            monthCellRender = slots.monthCellRender ||\n              (props as any).monthCellContentRender ||\n              slots.monthCellContentRender,\n            clearIcon = slots.clearIcon?.(),\n            id = formItemContext.id.value,\n            ...restProps\n          } = p;\n          const showTime = (p.showTime as string) === '' ? true : p.showTime;\n          const { format } = p as any;\n\n          let additionalOverrideProps: any = {};\n          if (picker) {\n            additionalOverrideProps.picker = picker;\n          }\n          const mergedPicker = picker || p.picker || 'date';\n\n          additionalOverrideProps = {\n            ...additionalOverrideProps,\n            ...(showTime\n              ? getTimeProps({\n                  format,\n                  picker: mergedPicker,\n                  ...(typeof showTime === 'object' ? showTime : {}),\n                })\n              : {}),\n            ...(mergedPicker === 'time'\n              ? getTimeProps({ format, ...restProps, picker: mergedPicker })\n              : {}),\n          };\n          const pre = prefixCls.value;\n          const suffixNode = (\n            <>\n              {suffixIcon || (picker === 'time' ? <ClockCircleOutlined /> : <CalendarOutlined />)}\n              {formItemInputContext.hasFeedback && formItemInputContext.feedbackIcon}\n            </>\n          );\n          return wrapSSR(\n            <RCPicker\n              monthCellRender={monthCellRender}\n              dateRender={dateRender}\n              renderExtraFooter={renderExtraFooter}\n              ref={pickerRef}\n              placeholder={getPlaceholder(locale, mergedPicker, placeholder)}\n              suffixIcon={suffixNode}\n              dropdownAlign={transPlacement2DropdownAlign(direction.value, props.placement)}\n              clearIcon={clearIcon || <CloseCircleFilled />}\n              allowClear={allowClear}\n              transitionName={transitionName || `${rootPrefixCls.value}-slide-up`}\n              {...restProps}\n              {...additionalOverrideProps}\n              id={id}\n              picker={mergedPicker}\n              value={value.value}\n              defaultValue={defaultValue.value}\n              defaultPickerValue={defaultPickerValue.value}\n              showToday={showToday}\n              locale={locale!.lang}\n              class={classNames(\n                {\n                  [`${pre}-${mergedSize.value}`]: mergedSize.value,\n                  [`${pre}-borderless`]: !bordered,\n                },\n                getStatusClassNames(\n                  pre,\n                  getMergedStatus(formItemInputContext.status, props.status),\n                  formItemInputContext.hasFeedback,\n                ),\n                attrs.class,\n                hashId.value,\n                compactItemClassnames.value,\n              )}\n              disabled={disabled.value}\n              prefixCls={pre}\n              getPopupContainer={attrs.getCalendarContainer || getPopupContainer.value}\n              generateConfig={generateConfig}\n              prevIcon={slots.prevIcon?.() || <span class={`${pre}-prev-icon`} />}\n              nextIcon={slots.nextIcon?.() || <span class={`${pre}-next-icon`} />}\n              superPrevIcon={slots.superPrevIcon?.() || <span class={`${pre}-super-prev-icon`} />}\n              superNextIcon={slots.superNextIcon?.() || <span class={`${pre}-super-next-icon`} />}\n              components={Components}\n              direction={direction.value}\n              dropdownClassName={classNames(\n                hashId.value,\n                props.popupClassName,\n                props.dropdownClassName,\n              )}\n              onChange={onChange}\n              onOpenChange={onOpenChange}\n              onFocus={onFocus}\n              onBlur={onBlur}\n              onPanelChange={onPanelChange}\n              onOk={onOk}\n            />,\n          );\n        };\n      },\n    });\n  }\n\n  const DatePicker = getPicker(undefined, 'ADatePicker');\n  const WeekPicker = getPicker('week', 'AWeekPicker');\n  const MonthPicker = getPicker('month', 'AMonthPicker');\n  const YearPicker = getPicker('year', 'AYearPicker');\n  const TimePicker = getPicker('time', 'TimePicker'); // 给独立组件 TimePicker 使用，此处名称不用更改\n  const QuarterPicker = getPicker('quarter', 'AQuarterPicker');\n\n  return {\n    DatePicker,\n    WeekPicker,\n    MonthPicker,\n    YearPicker,\n    TimePicker,\n    QuarterPicker,\n  };\n}\n"
  },
  {
    "path": "components/date-picker/generatePicker/index.tsx",
    "content": "import type { GenerateConfig } from '../../vc-picker/generate';\nimport type { SharedTimeProps } from '../../vc-picker/panels/TimePanel';\nimport type { PickerMode } from '../../vc-picker/interface';\nimport PickerButton from '../PickerButton';\nimport PickerTag from '../PickerTag';\nimport generateSinglePicker from './generateSinglePicker';\nimport generateRangePicker from './generateRangePicker';\n\nexport * from './interface';\n\nexport const Components = { button: PickerButton, rangeItem: PickerTag };\n\nfunction toArray<T>(list: T | T[]): T[] {\n  if (!list) {\n    return [];\n  }\n  return Array.isArray(list) ? list : [list];\n}\n\nexport function getTimeProps<DateType, DisabledTime>(\n  props: { format?: string; picker?: PickerMode } & Omit<\n    SharedTimeProps<DateType>,\n    'disabledTime'\n  > & {\n      disabledTime?: DisabledTime;\n    },\n) {\n  const { format, picker, showHour, showMinute, showSecond, use12Hours } = props;\n\n  const firstFormat = toArray(format)[0];\n  const showTimeObj = { ...props };\n\n  if (firstFormat && typeof firstFormat === 'string') {\n    if (!firstFormat.includes('s') && showSecond === undefined) {\n      showTimeObj.showSecond = false;\n    }\n    if (!firstFormat.includes('m') && showMinute === undefined) {\n      showTimeObj.showMinute = false;\n    }\n    if (!firstFormat.includes('H') && !firstFormat.includes('h') && showHour === undefined) {\n      showTimeObj.showHour = false;\n    }\n\n    if ((firstFormat.includes('a') || firstFormat.includes('A')) && use12Hours === undefined) {\n      showTimeObj.use12Hours = true;\n    }\n  }\n\n  if (picker === 'time') {\n    return showTimeObj;\n  }\n\n  if (typeof firstFormat === 'function') {\n    // format of showTime should use default when format is custom format function\n    delete showTimeObj.format;\n  }\n\n  return {\n    showTime: showTimeObj,\n  };\n}\n\nfunction generatePicker<DateType, ExtraProps extends {} = {}>(\n  generateConfig: GenerateConfig<DateType>,\n  extraProps?: ExtraProps,\n) {\n  // =========================== Picker ===========================\n  const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker } =\n    generateSinglePicker<DateType, ExtraProps>(generateConfig, extraProps);\n\n  // ======================== Range Picker ========================\n  const RangePicker = generateRangePicker<DateType, ExtraProps>(generateConfig, extraProps);\n\n  return {\n    DatePicker,\n    WeekPicker,\n    MonthPicker,\n    YearPicker,\n    TimePicker,\n    QuarterPicker,\n    RangePicker,\n  };\n}\n\nexport default generatePicker;\n"
  },
  {
    "path": "components/date-picker/generatePicker/interface.ts",
    "content": "import type {\n  PickerBaseProps as RCPickerBaseProps,\n  PickerDateProps as RCPickerDateProps,\n  PickerTimeProps as RCPickerTimeProps,\n} from '../../vc-picker/Picker';\nimport type {\n  RangePickerBaseProps as RCRangePickerBaseProps,\n  RangePickerDateProps as RCRangePickerDateProps,\n  RangePickerTimeProps as RCRangePickerTimeProps,\n} from '../../vc-picker/RangePicker';\nimport type { Locale as RcPickerLocale } from '../../vc-picker/interface';\nimport type { TimePickerLocale } from '../../time-picker';\nimport type { SizeType } from '../../config-provider';\n\ntype InjectDefaultProps<Props> = Omit<\n  Props,\n  | 'locale'\n  | 'generateConfig'\n  | 'prevIcon'\n  | 'nextIcon'\n  | 'superPrevIcon'\n  | 'superNextIcon'\n  | 'hideHeader'\n  | 'components'\n> & {\n  locale?: PickerLocale;\n  size?: SizeType;\n  bordered?: boolean;\n};\n\nexport type PickerLocale = {\n  lang: RcPickerLocale & AdditionalPickerLocaleLangProps;\n  timePickerLocale: TimePickerLocale;\n} & AdditionalPickerLocaleProps;\n\nexport type AdditionalPickerLocaleProps = {\n  dateFormat?: string;\n  dateTimeFormat?: string;\n  weekFormat?: string;\n  monthFormat?: string;\n};\n\nexport type AdditionalPickerLocaleLangProps = {\n  placeholder: string;\n  yearPlaceholder?: string;\n  quarterPlaceholder?: string;\n  monthPlaceholder?: string;\n  weekPlaceholder?: string;\n  rangeYearPlaceholder?: [string, string];\n  rangeQuarterPlaceholder?: [string, string];\n  rangeMonthPlaceholder?: [string, string];\n  rangeWeekPlaceholder?: [string, string];\n  rangePlaceholder?: [string, string];\n};\n\n// Picker Props\nexport type PickerBaseProps<DateType> = InjectDefaultProps<RCPickerBaseProps<DateType>>;\nexport type PickerDateProps<DateType> = InjectDefaultProps<RCPickerDateProps<DateType>>;\nexport type PickerTimeProps<DateType> = InjectDefaultProps<RCPickerTimeProps<DateType>>;\n\nexport type PickerProps<DateType> =\n  | PickerBaseProps<DateType>\n  | PickerDateProps<DateType>\n  | PickerTimeProps<DateType>;\n\n// Range Picker Props\nexport type RangePickerBaseProps<DateType> = InjectDefaultProps<RCRangePickerBaseProps<DateType>>;\nexport type RangePickerDateProps<DateType> = InjectDefaultProps<RCRangePickerDateProps<DateType>>;\nexport type RangePickerTimeProps<DateType> = InjectDefaultProps<RCRangePickerTimeProps<DateType>>;\n\nexport type RangePickerProps<DateType> =\n  | RangePickerBaseProps<DateType>\n  | RangePickerDateProps<DateType>\n  | RangePickerTimeProps<DateType>;\n"
  },
  {
    "path": "components/date-picker/generatePicker/props.ts",
    "content": "import type { FocusEventHandler, MouseEventHandler } from '../../_util/EventInterface';\nimport type { CSSProperties } from 'vue';\nimport type { PickerLocale } from '.';\nimport type { SizeType } from '../../config-provider';\nimport type {\n  PresetDate,\n  CustomFormat,\n  DisabledTime,\n  DisabledTimes,\n  EventValue,\n  PanelMode,\n  PickerMode,\n  RangeValue,\n} from '../../vc-picker/interface';\nimport type { DateRender } from '../../vc-picker/panels/DatePanel/DateBody';\nimport type { MonthCellRender } from '../../vc-picker/panels/MonthPanel/MonthBody';\nimport type { SharedTimeProps } from '../../vc-picker/panels/TimePanel';\nimport type { RangeDateRender, RangeInfo, RangeType } from '../../vc-picker/RangePicker';\nimport type { VueNode } from '../../_util/type';\nimport {\n  stringType,\n  arrayType,\n  someType,\n  booleanType,\n  objectType,\n  functionType,\n} from '../../_util/type';\nimport type { InputStatus } from '../../_util/statusUtils';\n\nconst DataPickerPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'] as const;\ntype DataPickerPlacement = (typeof DataPickerPlacements)[number];\n\ntype RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultValue'> & {\n  defaultValue?: DateType[];\n};\n\nfunction commonProps<DateType = any>() {\n  return {\n    id: String,\n    /**\n     * @deprecated `dropdownClassName` is deprecated which will be removed in next major\n     *   version.Please use `popupClassName` instead.\n     */\n    dropdownClassName: String,\n    popupClassName: String,\n    popupStyle: objectType<CSSProperties>(),\n    transitionName: String,\n    placeholder: String,\n    allowClear: booleanType(),\n    autofocus: booleanType(),\n    disabled: booleanType(),\n    tabindex: Number,\n    open: booleanType(),\n    defaultOpen: booleanType(),\n    /** Make input readOnly to avoid popup keyboard in mobile */\n    inputReadOnly: booleanType(),\n    format: someType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>([\n      String,\n      Function,\n      Array,\n    ]),\n    // Value\n    // format:  string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];\n    // Render\n    // suffixIcon?: VueNode;\n    // clearIcon?: VueNode;\n    // prevIcon?: VueNode;\n    // nextIcon?: VueNode;\n    // superPrevIcon?: VueNode;\n    // superNextIcon?: VueNode;\n    getPopupContainer: functionType<(node: HTMLElement) => HTMLElement>(),\n    panelRender: functionType<(originPanel: VueNode) => VueNode>(),\n    // // Events\n    onChange: functionType<(value: DateType | string | null, dateString: string) => void>(),\n    'onUpdate:value': functionType<(value: DateType | string | null) => void>(),\n    onOk: functionType<(value: DateType | string | null) => void>(),\n    onOpenChange: functionType<(open: boolean) => void>(),\n    'onUpdate:open': functionType<(open: boolean) => void>(),\n    onFocus: functionType<FocusEventHandler>(),\n    onBlur: functionType<FocusEventHandler>(),\n    onMousedown: functionType<MouseEventHandler>(),\n    onMouseup: functionType<MouseEventHandler>(),\n    onMouseenter: functionType<MouseEventHandler>(),\n    onMouseleave: functionType<MouseEventHandler>(),\n    onClick: functionType<MouseEventHandler>(),\n    onContextmenu: functionType<MouseEventHandler>(),\n    onKeydown: functionType<(event: KeyboardEvent, preventDefault: () => void) => void>(),\n    // WAI-ARIA\n    role: String,\n    name: String,\n    autocomplete: String,\n    direction: stringType<'ltr' | 'rtl'>(),\n    showToday: booleanType(),\n    showTime: someType<boolean | SharedTimeProps<DateType>>([Boolean, Object]),\n    locale: objectType<PickerLocale>(),\n    size: stringType<SizeType>(),\n    bordered: booleanType(),\n    dateRender: functionType<DateRender<DateType>>(),\n    disabledDate: functionType<(date: DateType) => boolean>(),\n    mode: stringType<PanelMode>(),\n    picker: stringType<PickerMode>(),\n    valueFormat: String,\n    placement: stringType<DataPickerPlacement>(),\n    status: stringType<InputStatus>(),\n\n    /** @deprecated Please use `disabledTime` instead. */\n    disabledHours: functionType<DisabledTimes['disabledHours']>(),\n    /** @deprecated Please use `disabledTime` instead. */\n    disabledMinutes: functionType<DisabledTimes['disabledMinutes']>(),\n    /** @deprecated Please use `disabledTime` instead. */\n    disabledSeconds: functionType<DisabledTimes['disabledSeconds']>(),\n  };\n}\n\nexport interface CommonProps<DateType> {\n  id?: string;\n  prefixCls?: string;\n  /**\n   * @deprecated `dropdownClassName` is deprecated which will be removed in next major\n   *   version.Please use `popupClassName` instead.\n   */\n\n  dropdownClassName?: string;\n  popupClassName?: string;\n  popupStyle?: CSSProperties;\n  transitionName?: string;\n  placeholder?: string;\n  allowClear?: boolean;\n  autofocus?: boolean;\n  disabled?: boolean;\n  tabindex?: number;\n  open?: boolean;\n  defaultOpen?: boolean;\n  inputReadOnly?: boolean;\n  format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];\n  suffixIcon?: VueNode;\n  clearIcon?: VueNode;\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n  getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n  panelRender?: (originPanel: VueNode) => VueNode;\n  onChange?: (value: DateType | string | null, dateString: string) => void;\n  'onUpdate:value'?: (value: DateType | string | null) => void;\n  onOk?: (value: DateType | string | null) => void;\n  onOpenChange?: (open: boolean) => void;\n  'onUpdate:open'?: (open: boolean) => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n  onMousedown?: MouseEventHandler;\n  onMouseup?: MouseEventHandler;\n  onMouseenter?: MouseEventHandler;\n  onMouseleave?: MouseEventHandler;\n  onClick?: MouseEventHandler;\n  onContextmenu?: MouseEventHandler;\n  onKeydown?: (event: KeyboardEvent, preventDefault: () => void) => void;\n  role?: string;\n  name?: string;\n  autocomplete?: string;\n  direction?: 'ltr' | 'rtl';\n  showToday?: boolean;\n  showTime?: boolean | SharedTimeProps<DateType>;\n  locale?: PickerLocale;\n  size?: SizeType;\n  bordered?: boolean;\n  dateRender?: DateRender<DateType>;\n  disabledDate?: (date: DateType) => boolean;\n  mode?: PanelMode;\n  picker?: PickerMode;\n  valueFormat?: string;\n  placement?: DataPickerPlacement;\n  status?: InputStatus;\n}\n\nfunction datePickerProps<DateType = any>() {\n  return {\n    defaultPickerValue: someType<DateType | string>([Object, String]),\n    defaultValue: someType<DateType | string>([Object, String]),\n    value: someType<DateType | string>([Object, String]),\n    presets: arrayType<PresetDate<DateType>[]>(),\n    disabledTime: functionType<DisabledTime<DateType>>(),\n    renderExtraFooter: functionType<(mode: PanelMode) => VueNode>(),\n    showNow: booleanType(),\n    monthCellRender: functionType<MonthCellRender<DateType>>(),\n    // deprecated  Please use `monthCellRender\"` instead.',\n    monthCellContentRender: functionType<MonthCellRender<DateType>>(),\n  };\n}\n\nexport interface DatePickerProps<DateType> {\n  defaultPickerValue?: DateType | string;\n  defaultValue?: DateType | string;\n  value?: DateType | string;\n  presets?: PresetDate<DateType>[];\n  disabledTime?: DisabledTime<DateType>;\n  renderExtraFooter?: (mode: PanelMode) => VueNode;\n  showNow?: boolean;\n  monthCellRender?: MonthCellRender<DateType>;\n  // deprecated  Please use `monthCellRender\"` instead.',\n  monthCellContentRender?: MonthCellRender<DateType>;\n}\n\nfunction rangePickerProps<DateType>() {\n  return {\n    allowEmpty: arrayType<[boolean, boolean]>(),\n    dateRender: functionType<RangeDateRender<DateType>>(),\n    defaultPickerValue: arrayType<RangeValue<DateType> | RangeValue<string>>(),\n    defaultValue: arrayType<RangeValue<DateType> | RangeValue<string>>(),\n    value: arrayType<RangeValue<DateType> | RangeValue<string>>(),\n    presets: arrayType<PresetDate<Array<DateType>>[]>(),\n    disabledTime: functionType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>(),\n    disabled: someType<boolean | [boolean, boolean]>([Boolean, Array]),\n    renderExtraFooter: functionType<() => VueNode>(),\n    separator: { type: String },\n    showTime: someType<boolean | RangeShowTimeObject<DateType>>([Boolean, Object]),\n    ranges:\n      objectType<\n        Record<\n          string,\n          Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)\n        >\n      >(),\n    placeholder: arrayType<string[]>(),\n    mode: arrayType<[PanelMode, PanelMode]>(),\n    onChange:\n      functionType<\n        (\n          value: RangeValue<DateType> | RangeValue<string> | null,\n          dateString: [string, string],\n        ) => void\n      >(),\n    'onUpdate:value':\n      functionType<(value: RangeValue<DateType> | RangeValue<string> | null) => void>(),\n    onCalendarChange:\n      functionType<\n        (\n          values: RangeValue<DateType> | RangeValue<string>,\n          formatString: [string, string],\n          info: RangeInfo,\n        ) => void\n      >(),\n    onPanelChange:\n      functionType<\n        (values: RangeValue<DateType> | RangeValue<string>, modes: [PanelMode, PanelMode]) => void\n      >(),\n    onOk: functionType<(dates: RangeValue<DateType> | RangeValue<string>) => void>(),\n  };\n}\n\nexport interface RangePickerProps<DateType> {\n  allowEmpty?: [boolean, boolean];\n  dateRender?: RangeDateRender<DateType>;\n  defaultPickerValue?: RangeValue<DateType> | RangeValue<string>;\n  defaultValue?: RangeValue<DateType> | RangeValue<string>;\n  value?: RangeValue<DateType> | RangeValue<string>;\n  presets?: PresetDate<RangeValue<DateType>>[];\n  disabledTime?: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;\n  disabled?: [boolean, boolean];\n  renderExtraFooter?: () => VueNode;\n  separator?: string;\n  showTime?: boolean | RangeShowTimeObject<DateType>;\n  ranges?: Record<\n    string,\n    Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)\n  >;\n  placeholder?: [string, string];\n  mode?: [PanelMode, PanelMode];\n  onChange?: (\n    value: RangeValue<DateType> | RangeValue<string> | null,\n    dateString: [string, string],\n  ) => void;\n  'onUpdate:value'?: (value: RangeValue<DateType> | RangeValue<string> | null) => void;\n  onCalendarChange?: (\n    values: RangeValue<DateType> | RangeValue<string>,\n    formatString: [string, string],\n    info: RangeInfo,\n  ) => void;\n  onPanelChange?: (\n    values: RangeValue<DateType> | RangeValue<string>,\n    modes: [PanelMode, PanelMode],\n  ) => void;\n  onOk?: (dates: RangeValue<DateType> | RangeValue<string>) => void;\n}\n\nexport type ExtraDatePickerProps<DateType> = {\n  valueFormat?: string;\n  defaultPickerValue?: DateType | string;\n  defaultValue?: DateType | string;\n  value?: DateType | string;\n};\n\nexport type ExtraRangePickerProps<DateType> = {\n  valueFormat?: string;\n  defaultPickerValue?: RangeValue<DateType> | RangeValue<string>;\n  defaultValue?: RangeValue<DateType> | RangeValue<string>;\n  value?: RangeValue<DateType> | RangeValue<string>;\n};\n\nexport { commonProps, datePickerProps, rangePickerProps };\n"
  },
  {
    "path": "components/date-picker/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: DatePicker\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*xXA9TJ8BTioAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3OpRQKcygo8AAAAAAAAAAAAADrJ8AQ/original\n---\n\nTo select or input a date.\n\n## When To Use\n\nBy clicking the input box, you can select a date from a popup calendar.\n\n## API\n\nThere are five kinds of picker:\n\n- DatePicker\n- DatePicker\\[picker=\"month\"]\n- DatePicker\\[picker=\"week\"]\n- DatePicker\\[picker=\"year\"]\n- DatePicker\\[picker=\"quarter\"]\n- RangePicker\n\n### Localization\n\nThe default locale is en-US, if you need to use other languages, recommend to use internationalized components provided by us at the entrance. Look at: [ConfigProvider](/components/config-provider/).\n\nIf there are special needs (only modifying single component language), Please use the property: local. Example: [default](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json).\n\n```html\n<template>\n  <a-date-picker v-model:value=\"value\" :locale=\"locale\" />\n</template>\n<script>\n  import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';\n  import { defineComponent } from 'vue';\n  export default defineComponent({\n    setup() {\n      return {\n        locale,\n        value: null,\n      };\n    },\n  });\n</script>\n```\n\n```html\n<template>\n  <a-config-provider :locale=\"locale\">\n    <a-date-picker v-model:value=\"value\" />\n  </a-config-provider>\n</template>\n<script>\n  // The default locale is en-US, if you want to use other locale, just set locale in entry file globally.\n  import dayjs from 'dayjs';\n  import 'dayjs/locale/zh-cn';\n  import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';\n  import { defineComponent } from 'vue';\n  dayjs.locale('zh-cn');\n  export default defineComponent({\n    setup() {\n      return {\n        value: dayjs('2015-01-01', 'YYYY-MM-DD')\n        dayjs,\n        locale\n      };\n    },\n  });\n</script>\n```\n\n### Common API\n\nThe following APIs are shared by DatePicker, RangePicker.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | Whether to show clear button | boolean | true |  |\n| autofocus | If get focus when component mounted | boolean | false |  |\n| bordered | Whether has border style | boolean | true |  |\n| dateRender | Custom rendering function for date cells | v-slot:dateRender=\"{current, today}\" | - |  |\n| disabled | Determine whether the DatePicker is disabled | boolean | false |  |\n| disabledDate | Specify the date that cannot be selected | (currentDate: dayjs) => boolean | - |  |\n| format | To set the date format, refer to [dayjs](https://day.js.org/). When an array is provided, all values are used for parsing and first value is used for formatting, support [Custom Format](#components-date-picker-demo-format) | [formatType](#formattype) | `YYYY-MM-DD` |  |\n| popupClassName | To customize the className of the popup calendar | string | - |  |\n| getPopupContainer | To set the container of the floating layer, while the default is to create a `div` element in `body` | function(trigger) | - |  |\n| inputReadOnly | Set the `readonly` attribute of the input tag (avoids virtual keyboard on touch devices) | boolean | false |  |\n| locale | Localization configuration | object | [default](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json) |  |\n| mode | The picker panel mode | `time` \\| `date` \\| `month` \\| `year` \\| `decade` | - |  |\n| nextIcon | The custom next icon | slot | - | 3.0 |\n| open | The open state of picker | boolean | - |  |\n| picker | Set picker type | `date` \\| `week` \\| `month` \\| `quarter` \\| `year` | `date` | `quarter` |\n| placeholder | The placeholder of date input | string \\| \\[string,string] | - |  |\n| placement | The position where the selection box pops up | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| popupStyle | To customize the style of the popup calendar | CSSProperties | {} |  |\n| presets | The preset ranges for quick selection | { label: slot, value: [dayjs](https://day.js.org/) }[] | - | 4.0 |\n| prevIcon | The custom prev icon | slot | - | 3.0 |\n| size | To determine the size of the input box, the height of `large` and `small`, are 40px and 24px respectively, while default size is 32px | `large` \\| `middle` \\| `small` | - |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | The custom suffix icon | v-slot:suffixIcon | - |  |\n| superNextIcon | The custom super next icon | slot | - | 3.0 |\n| superPrevIcon | The custom super prev icon | slot | - | 3.0 |\n| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string, [date formats](https://day.js.org/docs/en/display/format) | - |  |\n\n### Common Events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| openChange | a callback function, can be executed whether the popup calendar is popped up or closed | function(status) |  |\n| panelChange | callback when picker panel mode is changed | function(value, mode) |  |\n\n### Common Methods\n\n| Name    | Description  | Version |\n| ------- | ------------ | ------- |\n| blur()  | remove focus |         |\n| focus() | get focus    |         |\n\n### DatePicker\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| defaultPickerValue | To set default picker date | [dayjs](https://day.js.org/) | - |  |\n| disabledTime | To specify the time that cannot be selected | function(date) | - |  |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY-MM-DD` |  |\n| renderExtraFooter | Render extra footer in panel | v-slot:renderExtraFooter=\"mode\" | - |  |\n| showNow | Whether to show 'Now' button on panel when `showTime` is set | boolean | - |  |\n| showTime | To provide an additional time selection | object \\| boolean | [TimePicker Options](/components/time-picker/#api) |  |\n| showTime.defaultValue | To set default time of selected date, [demo](#components-date-picker-demo-disabled-date) | [dayjs](https://day.js.org/) | dayjs() |  |\n| showToday | Whether to show `Today` button | boolean | true |  |\n| value(v-model) | To set date | [dayjs](https://day.js.org/) | - |  |\n\n### DatePicker Events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| change | a callback function, can be executed when the selected time is changing | function(date: dayjs \\| string, dateString: string) |  |\n| ok | callback when click ok button | function(date: dayjs \\| string) |  |\n\n### DatePicker\\[picker=year]\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY` |  |\n\n### DatePicker\\[picker=quarter]\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY-\\QQ` |  |\n\n### DatePicker\\[picker=month]\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY-MM` |  |\n| monthCellRender | Custom month cell content render method | v-slot:monthCellRender=\"{current, locale}\" | - |  |\n\n### DatePicker\\[picker=week]\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY-wo` |  |\n\n### RangePicker\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowEmpty | Allow start or end input leave empty | \\[boolean, boolean] | \\[false, false] |  |\n| dateRender | Customize date cell. | v-slot:dateRender=\"{current: dayjs, today: dayjs, info: { range: `start` \\| `end` }}\" | - |  |\n| defaultPickerValue | To set default picker date | \\[[dayjs](https://day.js.org/), [dayjs](https://day.js.org/)] | - |  |\n| disabled | If disable start or end | \\[boolean, boolean] | - |  |\n| disabledTime | To specify the time that cannot be selected | function(date: dayjs, partial: `start` \\| `end`) | - |  |\n| format | To set the date format, refer to [dayjs](https://day.js.org/) | [formatType](#formattype) | `YYYY-MM-DD HH:mm:ss` |  |\n| presets | The preset ranges for quick selection | { label: slot, value: [dayjs](https://day.js.org/)\\[] }[] | - | 4.0 |\n| ranges | The preseted ranges for quick selection | { \\[range: string]: [dayjs](https://day.js.org/)\\[] } \\| { \\[range: string]: () => [dayjs](https://day.js.org/)\\[] } | - |  |\n| renderExtraFooter | Render extra footer in panel | v-slot:renderExtraFooter=\"mode\" | - |  |\n| separator | Set separator between inputs | string \\| v-slot:separator | `<SwapRightOutlined />` |  |\n| showTime | To provide an additional time selection | object \\| boolean | [TimePicker Options](/components/time-picker/#api) |  |\n| showTime.defaultValue | To set default time of selected date, [demo](#components-date-picker-demo-disabled-date) | [dayjs](https://day.js.org/)\\[] | \\[dayjs(), dayjs()] |  |\n| value(v-model) | To set date | \\[[dayjs](https://day.js.org/), [dayjs](https://day.js.org/)] | - |  |\n\n### RangePicker Events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| calendarChange | Callback function, can be executed when the start time or the end time of the range is changing. | function(dates: \\[dayjs, dayjs], dateStrings: \\[string, string], info: { range:`start`\\|`end` }) | - |  |\n| change | a callback function, can be executed when the selected time is changing | function(dates: \\[dayjs, dayjs] \\| \\[string, string], dateStrings: \\[string, string]) |  |  |\n| ok | callback when click ok button | function(dates: \\[dayjs, dayjs] \\| \\[string, string]) |  |  |\n\n#### formatType\n\n```typescript\nimport type { Dayjs } from 'dayjs';\n\ntype Generic = string;\ntype GenericFn = (value: Dayjs) => string;\n\nexport type FormatType = Generic | GenericFn | Array<Generic | GenericFn>;\n```\n\n## FAQ\n\n### How to use DatePicker with customize date library（like moment.js \\| dayjs \\| date-fns）？\n\nPlease refer [replace date](/docs/vue/replace-date)\n\n### Why config dayjs.locale globally not work?\n\nDatePicker default set `locale` as `en` in v4. You can config DatePicker `locale` prop or [ConfigProvider `locale`](/components/config-provider) prop instead.\n\n### How to modify start day of week?\n\nPlease use correct [language](/docs/vue/i18n) ([#5605](https://github.com/ant-design/ant-design/issues/5605)), or update dayjs `locale` config:\n\n- Example: <https://codesandbox.io/s/dayjs-day-of-week-x9tuj2?file=/demo.tsx>\n\n```js\nimport dayjs from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport 'dayjs/locale/zh-cn';\n\ndayjs.extend(updateLocale);\ndayjs.updateLocale('zh-cn', {\n  weekStart: 0,\n});\n```\n"
  },
  {
    "path": "components/date-picker/index.tsx",
    "content": "import DatePicker from './dayjs';\nexport * from './dayjs';\n\nexport default DatePicker;\n"
  },
  {
    "path": "components/date-picker/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: DatePicker\nsubtitle: 日期选择框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*xXA9TJ8BTioAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3OpRQKcygo8AAAAAAAAAAAAADrJ8AQ/original\n---\n\n输入或选择日期的控件。\n\n## 何时使用\n\n当用户需要输入一个日期，可以点击标准输入框，弹出日期面板进行选择。\n\n## API\n\n日期类组件包括以下五种形式。\n\n- DatePicker\n- DatePicker\\[picker=\"month\"]\n- DatePicker\\[picker=\"week\"]\n- DatePicker\\[picker=\"year\"]\n- DatePicker\\[picker=\"quarter\"]\n- RangePicker\n\n### 国际化配置\n\n默认配置为 en-US，如果你需要设置其他语言，推荐在入口处使用我们提供的国际化组件，详见：[ConfigProvider 国际化](/components/config-provider-cn/)。\n\n如有特殊需求（仅修改单一组件的语言），请使用 locale 参数，参考：[默认配置](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json)。\n\n```html\n<template>\n  <a-date-picker v-model:value=\"value\" :locale=\"locale\" />\n</template>\n<script>\n  import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';\n  import { defineComponent } from 'vue';\n  export default defineComponent({\n    setup() {\n      return {\n        locale,\n        value: null,\n      };\n    },\n  });\n</script>\n```\n\n```html\n<template>\n  <a-config-provider :locale=\"locale\">\n    <a-date-picker v-model:value=\"value\" />\n  </a-config-provider>\n</template>\n<script>\n  // 默认语言为 en-US，如果你需要设置其他语言，推荐在入口文件全局设置 locale\n  import dayjs from 'dayjs';\n  import 'dayjs/locale/zh-cn';\n  import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';\n  import { defineComponent } from 'vue';\n  dayjs.locale('zh-cn');\n  export default defineComponent({\n    setup() {\n      return {\n        value: dayjs('2015-01-01', 'YYYY-MM-DD')\n        dayjs,\n        locale\n      };\n    },\n  });\n</script>\n```\n\n### 共同的 API\n\n以下 API 为 DatePicker、 RangePicker 共享的 API。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| allowClear | 是否显示清除按钮 | boolean | true |  |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true |  |\n| dateRender | 自定义日期单元格的内容 | v-slot:dateRender=\"{current, today}\" | - |  |\n| disabled | 禁用 | boolean | false |  |\n| disabledDate | 不可选择的日期 | (currentDate: dayjs) => boolean | - |  |\n| format | 设置日期格式，为数组时支持多格式匹配，展示以第一个为准。配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format)，支持[自定义格式](#components-date-picker-demo-format) | [formatType](#formattype) | `YYYY-MM-DD` |  |\n| popupClassName | 额外的弹出日历 className | string | - |  |\n| getPopupContainer | 定义浮层的容器，默认为 body 上新建 div | function(trigger) | - |  |\n| inputReadOnly | 设置输入框为只读（避免在移动设备上打开虚拟键盘） | boolean | false |  |\n| locale | 国际化配置 | object | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/main/components/date-picker/locale/example.json) | - |\n| mode | 日期面板的状态 | `time` \\| `date` \\| `month` \\| `year` \\| `decade` | - |  |\n| nextIcon | 自定义下一个图标 | slot | - | 3.0 |\n| open | 控制弹层是否展开 | boolean | - |  |\n| picker | 设置选择器类型 | `date` \\| `week` \\| `month` \\| `quarter` \\| `year` | `date` | `quarter` |\n| placeholder | 输入框提示文字 | string \\| \\[string, string] | - |  |\n| placement | 选择框弹出的位置 | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| popupStyle | 额外的弹出日历样式 | CSSProperties | {} |  |\n| prevIcon | 自定义上一个图标 | slot | - | 3.0 |\n| presets | 预设时间范围快捷选择 | { label: slot, value: [dayjs](https://day.js.org/) }[] | - | 4.0 |\n| size | 输入框大小，`large` 高度为 40px，`small` 为 24px，默认是 32px | `large` \\| `middle` \\| `small` | - |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | 自定义的选择框后缀图标 | v-slot:suffixIcon | - |  |\n| superNextIcon | 自定义 `<<` 切换图标 | slot | - | 3.0 |\n| superPrevIcon | 自定义 `>>` 切换图标 | slot | - | 3.0 |\n| valueFormat | 可选，绑定值的格式，对 value、defaultValue、defaultPickerValue 起作用。不指定则绑定值为 dayjs 对象 | string，[具体格式](https://day.js.org/docs/zh-CN/display/format) | - |  |\n\n### 共有的事件\n\n| 事件名称    | 说明                     | 回调参数              |     |\n| ----------- | ------------------------ | --------------------- | --- |\n| openChange  | 弹出日历和关闭日历的回调 | function(status)      |     |\n| panelChange | 日期面板变化时的回调     | function(value, mode) | -   |\n\n### 共同的方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n### DatePicker\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| defaultPickerValue | 默认面板日期 | [dayjs](https://day.js.org/) | - |  |\n| disabledTime | 不可选择的时间 | function(date) | - |  |\n| format | 展示的日期格式，配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format) | [formatType](#formattype) | `YYYY-MM-DD` |  |\n| renderExtraFooter | 在面板中添加额外的页脚 | v-slot:renderExtraFooter=\"mode\" | - |  |\n| showNow | 当设定了 `showTime` 的时候，面板是否显示“此刻”按钮 | boolean | - |  |\n| showTime | 增加时间选择功能 | Object \\| boolean | [TimePicker Options](/components/time-picker/#api) |  |\n| showTime.defaultValue | 设置用户选择日期时默认的时分秒，[例子](#components-date-picker-demo-disabled-date) | [dayjs](https://day.js.org/) | dayjs() |  |\n| showToday | 是否展示“今天”按钮 | boolean | true |  |\n| value(v-model) | 日期 | [dayjs](https://day.js.org/) | - |  |\n\n### DatePicker 事件\n\n| 事件名称 | 说明               | 回调参数                                            |\n| -------- | ------------------ | --------------------------------------------------- |\n| change   | 时间发生变化的回调 | function(date: dayjs \\| string, dateString: string) |\n| ok       | 点击确定按钮的回调 | function(date: dayjs \\| string)                     |\n\n### DatePicker\\[picker=year]\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| format | 展示的日期格式，配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format) | [formatType](#formattype) | `YYYY` |  |\n\n### DatePicker\\[picker=quarter]\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| format | 展示的日期格式，配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format) | [formatType](#formattype) | `YYYY-\\QQ` |  |\n\n### DatePicker\\[picker=month]\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| format | 展示的日期格式，配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format) | [formatType](#formattype) | `YYYY-MM` |  |\n| monthCellRender | 自定义的月份内容渲染方法 | v-slot:monthCellRender=\"{current, locale}\" | - |  |\n\n### DatePicker\\[picker=week]\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| format | 展示的日期格式，配置参考 [dayjs](https://day.js.org/docs/zh-CN/display/format) | [formatType](#formattype) | `YYYY-wo` |  |\n\n### RangePicker\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| allowEmpty | 允许起始项部分为空 | \\[boolean, boolean] | \\[false, false] |  |\n| dateRender | 自定义日期单元格的内容。 | v-slot:dateRender=\"{current: dayjs, today: dayjs, info: { range: `start` \\| `end` }}\" | - |  |\n| defaultPickerValue | 默认面板日期 | [dayjs](https://day.js.org/)\\[] | - |  |\n| disabled | 禁用起始项 | \\[boolean, boolean] | - |  |\n| disabledTime | 不可选择的时间 | function(date: dayjs, partial: `start` \\| `end`) | - |  |\n| format | 展示的日期格式 | [formatType](#formattype) | `YYYY-MM-DD HH:mm:ss` |  |\n| presets | 预设时间范围快捷选择 | { label: slot, value: [dayjs](https://day.js.org/)\\[] }[] | - | 4.0 |\n| ranges | 预设时间范围快捷选择 | { \\[range: string]: [dayjs](https://day.js.org/)\\[] } \\| { \\[range: string]: () => [dayjs](https://day.js.org/)\\[] } | - |  |\n| renderExtraFooter | 在面板中添加额外的页脚 | v-slot:renderExtraFooter=\"mode\" | - |  |\n| separator | 设置分隔符 | string \\| v-slot:separator | `<SwapRightOutlined />` |  |\n| showTime | 增加时间选择功能 | Object\\|boolean | [TimePicker Options](/components/time-picker/#api) |  |\n| showTime.defaultValue | 设置用户选择日期时默认的时分秒，[例子](#components-date-picker-demo-disabled-date) | [dayjs](https://day.js.org/)\\[] | \\[dayjs(), dayjs()] |  |\n| value(v-model) | 日期 | [dayjs](https://day.js.org/)\\[] | - |  |\n\n### RangePicker 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| calendarChange | 待选日期发生变化的回调 | function(dates: \\[dayjs, dayjs] \\| \\[string, string], dateStrings: \\[string, string], info: { range:`start`\\|`end` }) |\n| change | 日期范围发生变化的回调 | function(dates: \\[dayjs, dayjs] \\| \\[string, string], dateStrings: \\[string, string]) |\n| ok | 点击确定按钮的回调 | function(dates: \\[dayjs, dayjs] \\| \\[string, string]) |\n\n#### formatType\n\n```typescript\nimport type { Dayjs } from 'dayjs';\n\ntype Generic = string;\ntype GenericFn = (value: Dayjs) => string;\n\nexport type FormatType = Generic | GenericFn | Array<Generic | GenericFn>;\n```\n\n## FAQ\n\n### 如何在 DatePicker 中使用自定义日期库（如 moment.js \\| dayjs \\| date-fns）？\n\n请参考[《自定义日期库》](/docs/vue/replace-date-cn)\n\n### 为何全局修改 dayjs.locale 不生效？\n\nDatePicker 默认 `locale` 为 `en`。你可以通过 DatePicker 的 `locale` 属性来单独设置，也可以通过 [ConfigProvider `locale`](/components/config-provider-cn) 属性来配置。\n\n### 如何修改周的起始日？\n\n请使用正确的[语言包](/docs/vue/i18n-cn)（[#5605](https://github.com/ant-design/ant-design/issues/5605)），或者修改 dayjs 的 `locale` 配置：<https://codesandbox.io/s/dayjs-day-of-week-x9tuj2?file=/demo.tsx>\n\n```js\nimport dayjs from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport 'dayjs/locale/zh-cn';\n\ndayjs.extend(updateLocale);\ndayjs.updateLocale('zh-cn', {\n  weekStart: 0,\n});\n```\n"
  },
  {
    "path": "components/date-picker/locale/ar_EG.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ar_EG';\nimport TimePickerLocale from '../../time-picker/locale/ar_EG';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'اختيار التاريخ',\n    rangePlaceholder: ['البداية', 'النهاية'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n  dateFormat: 'DD-MM-YYYY',\n  monthFormat: 'MM-YYYY',\n  dateTimeFormat: 'DD-MM-YYYY HH:mm:ss',\n  weekFormat: 'wo-YYYY',\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/az_AZ.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/az_AZ';\nimport TimePickerLocale from '../../time-picker/locale/az_AZ';\nimport type { PickerLocale } from '../generatePicker';\n\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Tarix seçin',\n    rangePlaceholder: ['Başlama tarixi', 'Bitmə tarixi'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/bg_BG.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/bg_BG';\nimport TimePickerLocale from '../../time-picker/locale/bg_BG';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Избор на дата',\n    rangePlaceholder: ['Начална', 'Крайна'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/bn_BD.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/bn_BD';\nimport TimePickerLocale from '../../time-picker/locale/bn_BD';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'তারিখ নির্বাচন',\n    yearPlaceholder: 'বছর নির্বাচন',\n    quarterPlaceholder: 'কোয়ার্টার নির্বাচন',\n    monthPlaceholder: 'মাস নির্বাচন',\n    weekPlaceholder: 'সপ্তাহ নির্বাচন',\n    rangePlaceholder: ['শুরুর তারিখ', 'শেষ তারিখ'],\n    rangeYearPlaceholder: ['শুরুর বছর', 'শেষ বছর'],\n    rangeMonthPlaceholder: ['শুরুর মাস', 'শেষ মাস'],\n    rangeWeekPlaceholder: ['শুরুর সপ্তাহ', 'শেষ সপ্তাহ'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/by_BY.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/by_BY';\nimport TimePickerLocale from '../../time-picker/locale/by_BY';\nimport type { PickerLocale } from '../generatePicker';\n\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Выберыце дату',\n    yearPlaceholder: 'Выберыце год',\n    quarterPlaceholder: 'Выберыце квартал',\n    monthPlaceholder: 'Выберыце месяц',\n    weekPlaceholder: 'Выберыце тыдзень',\n    rangePlaceholder: ['Пачатковая дата', 'Канчатковая дата'],\n    rangeYearPlaceholder: ['Пачатковы год', 'Год заканчэння'],\n    rangeMonthPlaceholder: ['Пачатковы месяц', 'Канчатковы месяц'],\n    rangeWeekPlaceholder: ['Пачатковы тыдзень', 'Канчатковы тыдзень'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ca_ES.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ca_ES';\nimport TimePickerLocale from '../../time-picker/locale/ca_ES';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Seleccionar data',\n    rangePlaceholder: ['Data inicial', 'Data final'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ckb_IQ.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ckb_IQ';\nimport TimePickerLocale from '../../time-picker/locale/ckb_IQ';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'بەروار هەڵبژێرە',\n    yearPlaceholder: 'ساڵ هەڵبژێرە',\n    quarterPlaceholder: 'چارەک هەڵبژێرە',\n    monthPlaceholder: 'مانگ هەڵبژێرە',\n    weekPlaceholder: 'هەفتە هەڵبژێرە',\n    rangePlaceholder: ['بەرواری دەستپێک', 'بەرواری کۆتایی'],\n    rangeYearPlaceholder: ['ساڵی دەستپێک', 'ساڵی کۆتایی'],\n    rangeQuarterPlaceholder: ['چارەکی دەستپێک', 'چارەکی کۆتایی'],\n    rangeMonthPlaceholder: ['مانگی دەستپێک', 'مانگی کۆتایی'],\n    rangeWeekPlaceholder: ['هەفتەی دەستپێک', 'هەفتەی کۆتایی'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/cs_CZ.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/cs_CZ';\nimport TimePickerLocale from '../../time-picker/locale/cs_CZ';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Vybrat datum',\n    rangePlaceholder: ['Od', 'Do'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/da_DK.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/da_DK';\nimport TimePickerLocale from '../../time-picker/locale/da_DK';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Vælg dato',\n    rangePlaceholder: ['Startdato', 'Slutdato'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/de_DE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/de_DE';\nimport TimePickerLocale from '../../time-picker/locale/de_DE';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Datum auswählen',\n    rangePlaceholder: ['Startdatum', 'Enddatum'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/el_GR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/el_GR';\nimport TimePickerLocale from '../../time-picker/locale/el_GR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Επιλέξτε ημερομηνία',\n    rangePlaceholder: ['Αρχική ημερομηνία', 'Τελική ημερομηνία'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/en_GB.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/en_GB';\nimport TimePickerLocale from '../../time-picker/locale/en_GB';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Select date',\n    yearPlaceholder: 'Select year',\n    quarterPlaceholder: 'Select quarter',\n    monthPlaceholder: 'Select month',\n    weekPlaceholder: 'Select week',\n    rangePlaceholder: ['Start date', 'End date'],\n    rangeYearPlaceholder: ['Start year', 'End year'],\n    rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n    rangeMonthPlaceholder: ['Start month', 'End month'],\n    rangeWeekPlaceholder: ['Start week', 'End week'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/en_US.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/en_US';\nimport TimePickerLocale from '../../time-picker/locale/en_US';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Select date',\n    yearPlaceholder: 'Select year',\n    quarterPlaceholder: 'Select quarter',\n    monthPlaceholder: 'Select month',\n    weekPlaceholder: 'Select week',\n    rangePlaceholder: ['Start date', 'End date'],\n    rangeYearPlaceholder: ['Start year', 'End year'],\n    rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n    rangeMonthPlaceholder: ['Start month', 'End month'],\n    rangeWeekPlaceholder: ['Start week', 'End week'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/es_ES.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/es_ES';\nimport TimePickerLocale from '../../time-picker/locale/es_ES';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Seleccionar fecha',\n    rangePlaceholder: ['Fecha inicial', 'Fecha final'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/et_EE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/et_EE';\nimport TimePickerLocale from '../../time-picker/locale/et_EE';\nimport type { PickerLocale } from '../generatePicker';\n\n// 统一合并为完整的 Locale\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Vali kuupäev',\n    rangePlaceholder: ['Algus kuupäev', 'Lõpu kuupäev'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/example.json",
    "content": "{\n  \"lang\": {\n    \"locale\": \"en_US\",\n    \"placeholder\": \"Select date\",\n    \"rangePlaceholder\": [\"Start date\", \"End date\"],\n    \"today\": \"Today\",\n    \"now\": \"Now\",\n    \"backToToday\": \"Back to today\",\n    \"ok\": \"OK\",\n    \"clear\": \"Clear\",\n    \"month\": \"Month\",\n    \"year\": \"Year\",\n    \"timeSelect\": \"Select time\",\n    \"dateSelect\": \"Select date\",\n    \"monthSelect\": \"Choose a month\",\n    \"yearSelect\": \"Choose a year\",\n    \"decadeSelect\": \"Choose a decade\",\n    \"yearFormat\": \"YYYY\",\n    \"dateFormat\": \"M/D/YYYY\",\n    \"dayFormat\": \"D\",\n    \"dateTimeFormat\": \"M/D/YYYY HH:mm:ss\",\n    \"monthFormat\": \"MMMM\",\n    \"monthBeforeYear\": true,\n    \"previousMonth\": \"Previous month (PageUp)\",\n    \"nextMonth\": \"Next month (PageDown)\",\n    \"previousYear\": \"Last year (Control + left)\",\n    \"nextYear\": \"Next year (Control + right)\",\n    \"previousDecade\": \"Last decade\",\n    \"nextDecade\": \"Next decade\",\n    \"previousCentury\": \"Last century\",\n    \"nextCentury\": \"Next century\"\n  },\n  \"timePickerLocale\": {\n    \"placeholder\": \"Select time\"\n  },\n  \"dateFormat\": \"YYYY-MM-DD\",\n  \"dateTimeFormat\": \"YYYY-MM-DD HH:mm:ss\",\n  \"weekFormat\": \"YYYY-wo\",\n  \"monthFormat\": \"YYYY-MM\"\n}\n"
  },
  {
    "path": "components/date-picker/locale/fa_IR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/fa_IR';\nimport TimePickerLocale from '../../time-picker/locale/fa_IR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'انتخاب تاریخ',\n    yearPlaceholder: 'انتخاب سال',\n    quarterPlaceholder: 'انتخاب فصل',\n    monthPlaceholder: 'انتخاب ماه',\n    weekPlaceholder: 'انتخاب هفته',\n    rangePlaceholder: ['تاریخ شروع', 'تاریخ پایان'],\n    rangeYearPlaceholder: ['سال شروع', 'سال پایان'],\n    rangeMonthPlaceholder: ['ماه شروع', 'ماه پایان'],\n    rangeWeekPlaceholder: ['هفته شروع', 'هفته پایان'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/fi_FI.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/fi_FI';\nimport TimePickerLocale from '../../time-picker/locale/fi_FI';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Valitse päivä',\n    rangePlaceholder: ['Alkamispäivä', 'Päättymispäivä'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/fr_BE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/fr_BE';\nimport TimePickerLocale from '../../time-picker/locale/fr_BE';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Sélectionner une date',\n    rangePlaceholder: ['Date de début', 'Date de fin'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/fr_CA.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/fr_CA';\nimport TimePickerLocale from '../../time-picker/locale/fr_CA';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Sélectionner une date',\n    yearPlaceholder: 'Sélectionner une année',\n    quarterPlaceholder: 'Sélectionner un trimestre',\n    monthPlaceholder: 'Sélectionner un mois',\n    weekPlaceholder: 'Sélectionner une semaine',\n    rangePlaceholder: ['Date de début', 'Date de fin'],\n    rangeYearPlaceholder: ['Année de début', 'Année de fin'],\n    rangeMonthPlaceholder: ['Mois de début', 'Mois de fin'],\n    rangeWeekPlaceholder: ['Semaine de début', 'Semaine de fin'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/fr_FR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/fr_FR';\nimport TimePickerLocale from '../../time-picker/locale/fr_FR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Sélectionner une date',\n    yearPlaceholder: 'Sélectionner une année',\n    quarterPlaceholder: 'Sélectionner un trimestre',\n    monthPlaceholder: 'Sélectionner un mois',\n    weekPlaceholder: 'Sélectionner une semaine',\n    rangePlaceholder: ['Date de début', 'Date de fin'],\n    rangeYearPlaceholder: ['Année de début', 'Année de fin'],\n    rangeMonthPlaceholder: ['Mois de début', 'Mois de fin'],\n    rangeWeekPlaceholder: ['Semaine de début', 'Semaine de fin'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ga_IE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ga_IE';\nimport TimePickerLocale from '../../time-picker/locale/ga_IE';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Roghnaigh dáta',\n    yearPlaceholder: 'Roghnaigh bliain',\n    quarterPlaceholder: 'Roghnaigh ráithe',\n    monthPlaceholder: 'Roghnaigh mí',\n    weekPlaceholder: 'Roghnaigh seachtain',\n    rangePlaceholder: ['Dáta tosaigh', 'Dáta deiridh'],\n    rangeYearPlaceholder: ['Tús na bliana', 'Deireadh na bliana'],\n    rangeMonthPlaceholder: ['Tosaigh mhí', 'Deireadh mhí'],\n    rangeWeekPlaceholder: ['Tosaigh an tseachtain', 'Deireadh na seachtaine'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/gl_ES.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/gl_ES';\nimport TimePickerLocale from '../../time-picker/locale/gl_ES';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Escolla data',\n    rangePlaceholder: ['Data inicial', 'Data final'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/he_IL.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/he_IL';\nimport TimePickerLocale from '../../time-picker/locale/he_IL';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'בחר תאריך',\n    rangePlaceholder: ['תאריך התחלה', 'תאריך סיום'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/hi_IN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/hi_IN';\nimport TimePickerLocale from '../../time-picker/locale/hi_IN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'तारीख़ चुनें',\n    yearPlaceholder: 'वर्ष चुनें',\n    quarterPlaceholder: 'तिमाही चुनें',\n    monthPlaceholder: 'महीना चुनिए',\n    weekPlaceholder: 'सप्ताह चुनें',\n    rangePlaceholder: ['प्रारंभ तिथि', 'समाप्ति तिथि'],\n    rangeYearPlaceholder: ['आरंभिक वर्ष', 'अंत वर्ष'],\n    rangeMonthPlaceholder: ['आरंभिक महीना', 'अंत महीना'],\n    rangeWeekPlaceholder: ['आरंभिक सप्ताह', 'अंत सप्ताह'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/hr_HR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/hr_HR';\nimport TimePickerLocale from '../../time-picker/locale/hr_HR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Odaberite datum',\n    yearPlaceholder: 'Odaberite godinu',\n    quarterPlaceholder: 'Odaberite četvrtinu',\n    monthPlaceholder: 'Odaberite mjesec',\n    weekPlaceholder: 'Odaberite tjedan',\n    rangePlaceholder: ['Početni datum', 'Završni datum'],\n    rangeYearPlaceholder: ['Početna godina', 'Završna godina'],\n    rangeMonthPlaceholder: ['Početni mjesec', 'Završni mjesec'],\n    rangeWeekPlaceholder: ['Početni tjedan', 'Završni tjedan'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/hu_HU.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/hu_HU';\nimport TimePickerLocale from '../../time-picker/locale/hu_HU';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Válasszon dátumot',\n    rangePlaceholder: ['Kezdő dátum', 'Befejezés dátuma'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/id_ID.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/id_ID';\nimport TimePickerLocale from '../../time-picker/locale/id_ID';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Pilih tanggal',\n    rangePlaceholder: ['Mulai tanggal', 'Tanggal akhir'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/is_IS.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/is_IS';\nimport TimePickerLocale from '../../time-picker/locale/is_IS';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Veldu dag',\n    rangePlaceholder: ['Upphafsdagur', 'Lokadagur'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/it_IT.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/it_IT';\nimport TimePickerLocale from '../../time-picker/locale/it_IT';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Selezionare la data',\n    rangePlaceholder: [\"Data d'inizio\", 'Data di fine'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ja_JP.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ja_JP';\nimport TimePickerLocale from '../../time-picker/locale/ja_JP';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: '日付を選択',\n    yearPlaceholder: '年を選択',\n    quarterPlaceholder: '四半期を選択',\n    monthPlaceholder: '月を選択',\n    weekPlaceholder: '週を選択',\n    rangePlaceholder: ['開始日付', '終了日付'],\n    rangeYearPlaceholder: ['開始年', '終了年'],\n    rangeMonthPlaceholder: ['開始月', '終了月'],\n    rangeQuarterPlaceholder: ['開始四半期', '終了四半期'],\n    rangeWeekPlaceholder: ['開始週', '終了週'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ka_GE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ka_GE';\nimport TimePickerLocale from '../../time-picker/locale/ka_GE';\nimport type { PickerLocale } from '../generatePicker';\n\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'აირჩიეთ თარიღი',\n    yearPlaceholder: 'აირჩიეთ წელი',\n    quarterPlaceholder: 'აირჩიეთ მეოთხედი',\n    monthPlaceholder: 'აირჩიეთ თვე',\n    weekPlaceholder: 'აირჩიეთ კვირა',\n    rangePlaceholder: ['საწყისი თარიღი', 'საბოლოო თარიღი'],\n    rangeYearPlaceholder: ['საწყისი წელი', 'საბოლოო წელი'],\n    rangeMonthPlaceholder: ['საწყისი თვე', 'საბოლოო თვე'],\n    rangeWeekPlaceholder: ['საწყისი კვირა', 'საბოლოო კვირა'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/kk_KZ.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/kk_KZ';\nimport TimePickerLocale from '../../time-picker/locale/kk_KZ';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Күнді таңдаңыз',\n    yearPlaceholder: 'Жылды таңдаңыз',\n    quarterPlaceholder: 'Тоқсанды таңдаңыз',\n    monthPlaceholder: 'Айды таңдаңыз',\n    weekPlaceholder: 'Аптаны таңдаңыз',\n    rangePlaceholder: ['Бастау күні', 'Аяқталу күні'],\n    rangeYearPlaceholder: ['Бастау жылы', 'Аяқталу жылы'],\n    rangeMonthPlaceholder: ['Бастау айы', 'Аяқталу айы'],\n    rangeWeekPlaceholder: ['Бастау апта', 'Аяқталу апта'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/km_KH.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/km_KH';\nimport TimePickerLocale from '../../time-picker/locale/km_KH';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'រើសថ្ងៃ',\n    yearPlaceholder: 'រើសឆ្នាំ',\n    quarterPlaceholder: 'រើសត្រីមាស',\n    monthPlaceholder: 'រើសខែ',\n    weekPlaceholder: 'រើសសប្តាហ៍',\n    rangePlaceholder: ['ថ្ងៃចាប់ផ្ដើម', 'ថ្ងៃបញ្ចប់'],\n    rangeYearPlaceholder: ['ឆ្នាំចាប់ផ្ដើម', 'ឆ្នាំបញ្ចប់'],\n    rangeMonthPlaceholder: ['ខែចាប់ផ្ដើម', 'ខែបញ្ចប់'],\n    rangeWeekPlaceholder: ['សប្ដាហ៍ចាប់ផ្ដើម', 'សប្ដាហ៍បញ្ចប់'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/kmr_IQ.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/kmr_IQ';\nimport TimePickerLocale from '../../time-picker/locale/kmr_IQ';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Dîrok hilbijêre',\n    rangePlaceholder: ['Dîroka destpêkê', 'Dîroka dawîn'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/kn_IN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/kn_IN';\nimport TimePickerLocale from '../../time-picker/locale/kn_IN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'ದಿನಾಂಕ ಆಯ್ಕೆಮಾಡಿ',\n    rangePlaceholder: ['ಪ್ರಾರಂಭ ದಿನಾಂಕ', 'ಅಂತಿಮ ದಿನಾಂಕ'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ko_KR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ko_KR';\nimport TimePickerLocale from '../../time-picker/locale/ko_KR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: '날짜 선택',\n    rangePlaceholder: ['시작일', '종료일'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/lt_LT.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/lt_LT';\nimport TimePickerLocale from '../../time-picker/locale/lt_LT';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Pasirinkite datą',\n    yearPlaceholder: 'Pasirinkite metus',\n    quarterPlaceholder: 'Pasirinkite ketvirtį',\n    monthPlaceholder: 'Pasirinkite mėnesį',\n    weekPlaceholder: 'Pasirinkite savaitę',\n    rangePlaceholder: ['Pradžios data', 'Pabaigos data'],\n    rangeYearPlaceholder: ['Pradžios metai', 'Pabaigos metai'],\n    rangeMonthPlaceholder: ['Pradžios mėnesis', 'Pabaigos mėnesis'],\n    rangeWeekPlaceholder: ['Pradžios savaitė', 'Pabaigos savaitė'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/lv_LV.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/lv_LV';\nimport TimePickerLocale from '../../time-picker/locale/lv_LV';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Izvēlieties datumu',\n    rangePlaceholder: ['Sākuma datums', 'Beigu datums'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/mk_MK.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/mk_MK';\nimport TimePickerLocale from '../../time-picker/locale/mk_MK';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Избери датум',\n    rangePlaceholder: ['Од датум', 'До датум'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ml_IN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ml_IN';\nimport TimePickerLocale from '../../time-picker/locale/ml_IN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'തിയതി തിരഞ്ഞെടുക്കുക',\n    yearPlaceholder: 'വർഷം തിരഞ്ഞെടുക്കുക',\n    quarterPlaceholder: 'ത്രൈമാസം തിരഞ്ഞെടുക്കുക',\n    monthPlaceholder: 'മാസം തിരഞ്ഞെടുക്കുക',\n    weekPlaceholder: 'വാരം തിരഞ്ഞെടുക്കുക',\n    rangePlaceholder: ['ആരംഭ ദിനം', 'അവസാന ദിനം'],\n    rangeYearPlaceholder: ['ആരംഭ വർഷം', 'അവസാന വർഷം'],\n    rangeMonthPlaceholder: ['ആരംഭ മാസം', 'അവസാന മാസം'],\n    rangeWeekPlaceholder: ['ആരംഭ വാരം', 'അവസാന വാരം'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/mn_MN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/mn_MN';\nimport TimePickerLocale from '../../time-picker/locale/mn_MN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Огноо сонгох',\n    rangePlaceholder: ['Эхлэх огноо', 'Дуусах огноо'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ms_MY.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ms_MY';\nimport TimePickerLocale from '../../time-picker/locale/ms_MY';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Pilih tarikh',\n    rangePlaceholder: ['Tarikh mula', 'Tarikh akhir'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/nb_NO.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/nb_NO';\nimport TimePickerLocale from '../../time-picker/locale/nb_NO';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Velg dato',\n    yearPlaceholder: 'Velg år',\n    quarterPlaceholder: 'Velg kvartal',\n    monthPlaceholder: 'Velg måned',\n    weekPlaceholder: 'Velg uke',\n    rangePlaceholder: ['Startdato', 'Sluttdato'],\n    rangeYearPlaceholder: ['Startår', 'Sluttår'],\n    rangeMonthPlaceholder: ['Startmåned', 'Sluttmåned'],\n    rangeWeekPlaceholder: ['Start uke', 'Sluttuke'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/nl_BE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/nl_BE';\nimport TimePickerLocale from '../../time-picker/locale/nl_BE';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    monthPlaceholder: 'Selecteer maand',\n    placeholder: 'Selecteer datum',\n    quarterPlaceholder: 'Selecteer kwartaal',\n    rangeMonthPlaceholder: ['Begin maand', 'Eind maand'],\n    rangePlaceholder: ['Begin datum', 'Eind datum'],\n    rangeWeekPlaceholder: ['Begin week', 'Eind week'],\n    rangeYearPlaceholder: ['Begin jaar', 'Eind jaar'],\n    weekPlaceholder: 'Selecteer week',\n    yearPlaceholder: 'Selecteer jaar',\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/nl_NL.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/nl_NL';\nimport TimePickerLocale from '../../time-picker/locale/nl_NL';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    monthPlaceholder: 'Selecteer maand',\n    placeholder: 'Selecteer datum',\n    quarterPlaceholder: 'Selecteer kwartaal',\n    rangeMonthPlaceholder: ['Begin maand', 'Eind maand'],\n    rangePlaceholder: ['Begin datum', 'Eind datum'],\n    rangeWeekPlaceholder: ['Begin week', 'Eind week'],\n    rangeYearPlaceholder: ['Begin jaar', 'Eind jaar'],\n    weekPlaceholder: 'Selecteer week',\n    yearPlaceholder: 'Selecteer jaar',\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/issues/424\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/pl_PL.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/pl_PL';\nimport TimePickerLocale from '../../time-picker/locale/pl_PL';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Wybierz datę',\n    rangePlaceholder: ['Data początkowa', 'Data końcowa'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/pt_BR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/pt_BR';\nimport TimePickerLocale from '../../time-picker/locale/pt_BR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Selecionar data',\n    rangePlaceholder: ['Data inicial', 'Data final'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/pt_PT.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/pt_PT';\nimport TimePickerLocale from '../../time-picker/locale/pt_PT';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    ...CalendarLocale,\n    placeholder: 'Data',\n    rangePlaceholder: ['Data inicial', 'Data final'],\n    today: 'Hoje',\n    now: 'Agora',\n    backToToday: 'Hoje',\n    ok: 'OK',\n    clear: 'Limpar',\n    month: 'Mês',\n    year: 'Ano',\n    timeSelect: 'Hora',\n    dateSelect: 'Selecionar data',\n    monthSelect: 'Selecionar mês',\n    yearSelect: 'Selecionar ano',\n    decadeSelect: 'Selecionar década',\n    yearFormat: 'YYYY',\n    dateFormat: 'D/M/YYYY',\n    dayFormat: 'D',\n    dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n    monthFormat: 'MMMM',\n    monthBeforeYear: false,\n    previousMonth: 'Mês anterior (PageUp)',\n    nextMonth: 'Mês seguinte (PageDown)',\n    previousYear: 'Ano anterior (Control + left)',\n    nextYear: 'Ano seguinte (Control + right)',\n    previousDecade: 'Última década',\n    nextDecade: 'Próxima década',\n    previousCentury: 'Último século',\n    nextCentury: 'Próximo século',\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n    placeholder: 'Hora',\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ro_RO.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ro_RO';\nimport TimePickerLocale from '../../time-picker/locale/ro_RO';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Selectează data',\n    rangePlaceholder: ['Data start', 'Data sfârșit'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ru_RU.ts",
    "content": "/** Created by Andrey Gayvoronsky on 13/04/16. */\n\nimport CalendarLocale from '../../vc-picker/locale/ru_RU';\nimport TimePickerLocale from '../../time-picker/locale/ru_RU';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Выберите дату',\n    yearPlaceholder: 'Выберите год',\n    quarterPlaceholder: 'Выберите квартал',\n    monthPlaceholder: 'Выберите месяц',\n    weekPlaceholder: 'Выберите неделю',\n    rangePlaceholder: ['Начальная дата', 'Конечная дата'],\n    rangeYearPlaceholder: ['Начальный год', 'Год окончания'],\n    rangeMonthPlaceholder: ['Начальный месяц', 'Конечный месяц'],\n    rangeWeekPlaceholder: ['Начальная неделя', 'Конечная неделя'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/sk_SK.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/sk_SK';\nimport TimePickerLocale from '../../time-picker/locale/sk_SK';\nimport type { PickerLocale } from '../generatePicker';\n\n// 统一合并为完整的 Locale\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Vybrať dátum',\n    rangePlaceholder: ['Od', 'Do'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/sl_SI.ts",
    "content": "import TimePickerLocale from '../../time-picker/locale/sl_SI';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    locale: 'sl',\n    placeholder: 'Izberite datum',\n    rangePlaceholder: ['Začetni datum', 'Končni datum'],\n    today: 'Danes',\n    now: 'Trenutno',\n    backToToday: 'Nazaj na trenutni datum',\n    ok: 'OK',\n    clear: 'Počisti',\n    month: 'Mesec',\n    year: 'Leto',\n    timeSelect: 'Izberi čas',\n    dateSelect: 'Izberi datum',\n    monthSelect: 'Izberite mesec',\n    yearSelect: 'Izberite leto',\n    decadeSelect: 'Izberite desetletje',\n    yearFormat: 'YYYY',\n    dateFormat: 'D.M.YYYY',\n    dayFormat: 'D',\n    dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n    monthFormat: 'MMMM',\n    monthBeforeYear: true,\n    previousMonth: 'Prejšnji mesec (PageUp)',\n    nextMonth: 'Naslednji mesec (PageDown)',\n    previousYear: 'Lansko leto (Control + left)',\n    nextYear: 'Naslednje leto (Control + right)',\n    previousDecade: 'Prejšnje desetletje',\n    nextDecade: 'Naslednje desetletje',\n    previousCentury: 'Zadnje stoletje',\n    nextCentury: 'Naslednje stoletje',\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/sr_RS.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/sr_RS';\nimport TimePickerLocale from '../../time-picker/locale/sr_RS';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Izaberi datum',\n    yearPlaceholder: 'Izaberi godinu',\n    quarterPlaceholder: 'Izaberi tromesečje',\n    monthPlaceholder: 'Izaberi mesec',\n    weekPlaceholder: 'Izaberi sedmicu',\n    rangePlaceholder: ['Datum početka', 'Datum završetka'],\n    rangeYearPlaceholder: ['Godina početka', 'Godina završetka'],\n    rangeMonthPlaceholder: ['Mesec početka', 'Mesec završetka'],\n    rangeWeekPlaceholder: ['Sedmica početka', 'Sedmica završetka'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/sv_SE.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/sv_SE';\nimport TimePickerLocale from '../../time-picker/locale/sv_SE';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Välj datum',\n    yearPlaceholder: 'Välj år',\n    quarterPlaceholder: 'Välj kvartal',\n    monthPlaceholder: 'Välj månad',\n    weekPlaceholder: 'Välj vecka',\n    rangePlaceholder: ['Startdatum', 'Slutdatum'],\n    rangeYearPlaceholder: ['Startår', 'Slutår'],\n    rangeMonthPlaceholder: ['Startmånad', 'Slutmånad'],\n    rangeWeekPlaceholder: ['Startvecka', 'Slutvecka'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ta_IN.ts",
    "content": "// Tamil Locale added to rc-calendar\nimport CalendarLocale from '../../vc-picker/locale/ta_IN';\nimport TimePickerLocale from '../../time-picker/locale/ta_IN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'தேதியைத் தேர்ந்தெடுக்கவும்',\n    rangePlaceholder: ['தொடக்க தேதி', 'கடைசி தேதி'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/th_TH.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/th_TH';\nimport TimePickerLocale from '../../time-picker/locale/th_TH';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'เลือกวันที่',\n    yearPlaceholder: 'เลือกปี',\n    quarterPlaceholder: 'เลือกไตรมาส',\n    monthPlaceholder: 'เลือกเดือน',\n    weekPlaceholder: 'เลือกสัปดาห์',\n    rangePlaceholder: ['วันเริ่มต้น', 'วันสิ้นสุด'],\n    rangeYearPlaceholder: ['ปีเริ่มต้น', 'ปีสิ้นสุด'],\n    rangeMonthPlaceholder: ['เดือนเริ่มต้น', 'เดือนสิ้นสุด'],\n    rangeWeekPlaceholder: ['สัปดาห์เริ่มต้น', 'สัปดาห์สิ้นสุด'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/tr_TR.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/tr_TR';\nimport TimePickerLocale from '../../time-picker/locale/tr_TR';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Tarih seç',\n    yearPlaceholder: 'Yıl seç',\n    quarterPlaceholder: 'Çeyrek seç',\n    monthPlaceholder: 'Ay seç',\n    weekPlaceholder: 'Hafta seç',\n    rangePlaceholder: ['Başlangıç tarihi', 'Bitiş tarihi'],\n    rangeYearPlaceholder: ['Başlangıç yılı', 'Bitiş yılı'],\n    rangeMonthPlaceholder: ['Başlangıç ayı', 'Bitiş ayı'],\n    rangeWeekPlaceholder: ['Başlangıç haftası', 'Bitiş haftası'],\n\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/uk_UA.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/uk_UA';\nimport TimePickerLocale from '../../time-picker/locale/uk_UA';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Оберіть дату',\n    rangePlaceholder: ['Початкова дата', 'Кінцева дата'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/ur_PK.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/ur_PK';\nimport TimePickerLocale from '../../time-picker/locale/ur_PK';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'تاریخ منتخب کریں',\n    yearPlaceholder: 'سال کو منتخب کریں',\n    quarterPlaceholder: 'کوارٹر منتخب کریں',\n    monthPlaceholder: 'ماہ منتخب کریں',\n    weekPlaceholder: 'ہفتہ منتخب کریں',\n    rangePlaceholder: ['شروع کرنے کی تاریخ', 'آخری تاریخ'],\n    rangeYearPlaceholder: ['آغاز سال', 'آخر سال'],\n    rangeMonthPlaceholder: ['مہینہ شروع', 'اختتامی مہینہ'],\n    rangeWeekPlaceholder: ['ہفتے شروع کریں', 'اختتام ہفتہ'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/vi_VN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/vi_VN';\nimport TimePickerLocale from '../../time-picker/locale/vi_VN';\nimport type { PickerLocale } from '../generatePicker';\n\n// Merge into a locale object\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: 'Chọn thời điểm',\n    rangePlaceholder: ['Ngày bắt đầu', 'Ngày kết thúc'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/zh_CN.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/zh_CN';\nimport TimePickerLocale from '../../time-picker/locale/zh_CN';\nimport type { PickerLocale } from '../generatePicker';\n\n// 统一合并为完整的 Locale\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: '请选择日期',\n    yearPlaceholder: '请选择年份',\n    quarterPlaceholder: '请选择季度',\n    monthPlaceholder: '请选择月份',\n    weekPlaceholder: '请选择周',\n    rangePlaceholder: ['开始日期', '结束日期'],\n    rangeYearPlaceholder: ['开始年份', '结束年份'],\n    rangeMonthPlaceholder: ['开始月份', '结束月份'],\n    rangeQuarterPlaceholder: ['开始季度', '结束季度'],\n    rangeWeekPlaceholder: ['开始周', '结束周'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\n// should add whitespace between char in Button\nlocale.lang.ok = '确定';\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/locale/zh_TW.ts",
    "content": "import CalendarLocale from '../../vc-picker/locale/zh_TW';\nimport TimePickerLocale from '../../time-picker/locale/zh_TW';\nimport type { PickerLocale } from '../generatePicker';\n\n// 统一合并为完整的 Locale\nconst locale: PickerLocale = {\n  lang: {\n    placeholder: '請選擇日期',\n    yearPlaceholder: '請選擇年份',\n    quarterPlaceholder: '請選擇季度',\n    monthPlaceholder: '請選擇月份',\n    weekPlaceholder: '請選擇周',\n    rangePlaceholder: ['開始日期', '結束日期'],\n    rangeYearPlaceholder: ['開始年份', '結束年份'],\n    rangeMonthPlaceholder: ['開始月份', '結束月份'],\n    rangeQuarterPlaceholder: ['開始季度', '結束季度'],\n    rangeWeekPlaceholder: ['開始周', '結束周'],\n    ...CalendarLocale,\n  },\n  timePickerLocale: {\n    ...TimePickerLocale,\n  },\n};\n\nlocale.lang.ok = '確 定';\n\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\nexport default locale;\n"
  },
  {
    "path": "components/date-picker/moment.tsx",
    "content": "import type { Moment } from 'moment';\nimport type { App } from 'vue';\nimport momentGenerateConfig from '../vc-picker/generate/moment';\nimport type {\n  PickerProps,\n  PickerDateProps,\n  RangePickerProps as BaseRangePickerProps,\n} from './generatePicker';\nimport generatePicker from './generatePicker';\nimport type { ExtraDatePickerProps, ExtraRangePickerProps } from './generatePicker/props';\n\nexport type DatePickerProps = PickerProps<Moment> & ExtraDatePickerProps<Moment>;\nexport type MonthPickerProps = Omit<PickerDateProps<Moment>, 'picker'> &\n  ExtraDatePickerProps<Moment>;\nexport type WeekPickerProps = Omit<PickerDateProps<Moment>, 'picker'> &\n  ExtraDatePickerProps<Moment>;\nexport type RangePickerProps = BaseRangePickerProps<Moment> & ExtraRangePickerProps<Moment>;\n\nconst { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =\n  generatePicker<Moment>(momentGenerateConfig);\n\n/* istanbul ignore next */\nexport { RangePicker, WeekPicker, MonthPicker, QuarterPicker };\n\nexport default Object.assign(DatePicker, {\n  WeekPicker,\n  MonthPicker,\n  YearPicker,\n  RangePicker,\n  TimePicker,\n  QuarterPicker,\n  install: (app: App) => {\n    app.component(DatePicker.name, DatePicker);\n    app.component(RangePicker.name, RangePicker);\n    app.component(MonthPicker.name, MonthPicker);\n    app.component(WeekPicker.name, WeekPicker);\n    app.component(QuarterPicker.name, QuarterPicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/date-picker/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport type { InputToken } from '../../input/style';\nimport {\n  genActiveStyle,\n  genBasicInputStyle,\n  genHoverStyle,\n  initInputToken,\n} from '../../input/style';\nimport {\n  initSlideMotion,\n  initMoveMotion,\n  slideDownIn,\n  slideDownOut,\n  slideUpIn,\n  slideUpOut,\n} from '../../style/motion';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport type { GlobalToken } from '../../theme/interface';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { resetComponent, roundedArrow, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\n\nexport interface ComponentToken {\n  presetsWidth: number;\n  presetsMaxWidth: number;\n  zIndexPopup: number;\n}\n\nexport type PickerPanelToken = {\n  pickerCellCls: string;\n  pickerCellInnerCls: string;\n  pickerTextHeight: number;\n  pickerPanelCellWidth: number;\n  pickerPanelCellHeight: number;\n  pickerDateHoverRangeBorderColor: string;\n  pickerBasicCellHoverWithRangeColor: string;\n  pickerPanelWithoutTimeCellHeight: number;\n  pickerYearMonthCellWidth: number;\n  pickerTimePanelColumnHeight: number;\n  pickerTimePanelColumnWidth: number;\n  pickerTimePanelCellHeight: number;\n  pickerCellPaddingVertical: number;\n  pickerQuarterPanelContentHeight: number;\n  pickerCellBorderGap: number;\n  pickerControlIconSize: number;\n  pickerControlIconBorderWidth: number;\n};\n\ntype PickerToken = InputToken<FullToken<'DatePicker'>> & PickerPanelToken;\n\ntype SharedPickerToken = Omit<PickerToken, 'zIndexPopup' | 'presetsWidth' | 'presetsMaxWidth'>;\n\nconst genPikerPadding = (\n  token: PickerToken,\n  inputHeight: number,\n  fontSize: number,\n  paddingHorizontal: number,\n): CSSObject => {\n  const { lineHeight } = token;\n\n  const fontHeight = Math.floor(fontSize * lineHeight) + 2;\n  const paddingTop = Math.max((inputHeight - fontHeight) / 2, 0);\n  const paddingBottom = Math.max(inputHeight - fontHeight - paddingTop, 0);\n\n  return {\n    padding: `${paddingTop}px ${paddingHorizontal}px ${paddingBottom}px`,\n  };\n};\n\nconst genPickerCellInnerStyle = (token: SharedPickerToken): CSSObject => {\n  const {\n    componentCls,\n    pickerCellCls,\n    pickerCellInnerCls,\n    pickerPanelCellHeight,\n    motionDurationSlow,\n    borderRadiusSM,\n    motionDurationMid,\n    controlItemBgHover,\n    lineWidth,\n    lineType,\n    colorPrimary,\n    controlItemBgActive,\n    colorTextLightSolid,\n    controlHeightSM,\n    pickerDateHoverRangeBorderColor,\n    pickerCellBorderGap,\n    pickerBasicCellHoverWithRangeColor,\n    pickerPanelCellWidth,\n    colorTextDisabled,\n    colorBgContainerDisabled,\n  } = token;\n\n  return {\n    '&::before': {\n      position: 'absolute',\n      top: '50%',\n      insetInlineStart: 0,\n      insetInlineEnd: 0,\n      zIndex: 1,\n      height: pickerPanelCellHeight,\n      transform: 'translateY(-50%)',\n      transition: `all ${motionDurationSlow}`,\n      content: '\"\"',\n    },\n\n    // >>> Default\n    [pickerCellInnerCls]: {\n      position: 'relative',\n      zIndex: 2,\n      display: 'inline-block',\n      minWidth: pickerPanelCellHeight,\n      height: pickerPanelCellHeight,\n      lineHeight: `${pickerPanelCellHeight}px`,\n      borderRadius: borderRadiusSM,\n      transition: `background ${motionDurationMid}, border ${motionDurationMid}`,\n    },\n\n    // >>> Hover\n    [`&:hover:not(${pickerCellCls}-in-view),\n    &:hover:not(${pickerCellCls}-selected):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end):not(${pickerCellCls}-range-hover-start):not(${pickerCellCls}-range-hover-end)`]:\n      {\n        [pickerCellInnerCls]: {\n          background: controlItemBgHover,\n        },\n      },\n\n    // >>> Today\n    [`&-in-view${pickerCellCls}-today ${pickerCellInnerCls}`]: {\n      '&::before': {\n        position: 'absolute',\n        top: 0,\n        insetInlineEnd: 0,\n        bottom: 0,\n        insetInlineStart: 0,\n        zIndex: 1,\n        border: `${lineWidth}px ${lineType} ${colorPrimary}`,\n        borderRadius: borderRadiusSM,\n        content: '\"\"',\n      },\n    },\n\n    // >>> In Range\n    [`&-in-view${pickerCellCls}-in-range`]: {\n      position: 'relative',\n\n      '&::before': {\n        background: controlItemBgActive,\n      },\n    },\n\n    // >>> Selected\n    [`&-in-view${pickerCellCls}-selected ${pickerCellInnerCls},\n      &-in-view${pickerCellCls}-range-start ${pickerCellInnerCls},\n      &-in-view${pickerCellCls}-range-end ${pickerCellInnerCls}`]: {\n      color: colorTextLightSolid,\n      background: colorPrimary,\n    },\n\n    [`&-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single),\n      &-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single)`]: {\n      '&::before': {\n        background: controlItemBgActive,\n      },\n    },\n\n    [`&-in-view${pickerCellCls}-range-start::before`]: {\n      insetInlineStart: '50%',\n    },\n\n    [`&-in-view${pickerCellCls}-range-end::before`]: {\n      insetInlineEnd: '50%',\n    },\n\n    // >>> Range Hover\n    [`&-in-view${pickerCellCls}-range-hover-start:not(${pickerCellCls}-in-range):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end),\n      &-in-view${pickerCellCls}-range-hover-end:not(${pickerCellCls}-in-range):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end),\n      &-in-view${pickerCellCls}-range-hover-start${pickerCellCls}-range-start-single,\n      &-in-view${pickerCellCls}-range-hover-start${pickerCellCls}-range-start${pickerCellCls}-range-end${pickerCellCls}-range-end-near-hover,\n      &-in-view${pickerCellCls}-range-hover-end${pickerCellCls}-range-start${pickerCellCls}-range-end${pickerCellCls}-range-start-near-hover,\n      &-in-view${pickerCellCls}-range-hover-end${pickerCellCls}-range-end-single,\n      &-in-view${pickerCellCls}-range-hover:not(${pickerCellCls}-in-range)`]: {\n      '&::after': {\n        position: 'absolute',\n        top: '50%',\n        zIndex: 0,\n        height: controlHeightSM,\n        borderTop: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n        borderBottom: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n        transform: 'translateY(-50%)',\n        transition: `all ${motionDurationSlow}`,\n        content: '\"\"',\n      },\n    },\n\n    // Add space for stash\n    [`&-range-hover-start::after,\n      &-range-hover-end::after,\n      &-range-hover::after`]: {\n      insetInlineEnd: 0,\n      insetInlineStart: pickerCellBorderGap,\n    },\n\n    // Hover with in range\n    [`&-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover::before,\n      &-in-view${pickerCellCls}-range-start${pickerCellCls}-range-hover::before,\n      &-in-view${pickerCellCls}-range-end${pickerCellCls}-range-hover::before,\n      &-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single)${pickerCellCls}-range-hover-start::before,\n      &-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single)${pickerCellCls}-range-hover-end::before,\n      ${componentCls}-panel\n      > :not(${componentCls}-date-panel)\n      &-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover-start::before,\n      ${componentCls}-panel\n      > :not(${componentCls}-date-panel)\n      &-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover-end::before`]: {\n      background: pickerBasicCellHoverWithRangeColor,\n    },\n\n    // range start border-radius\n    [`&-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single):not(${pickerCellCls}-range-end) ${pickerCellInnerCls}`]:\n      {\n        borderStartStartRadius: borderRadiusSM,\n        borderEndStartRadius: borderRadiusSM,\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n      },\n\n    // range end border-radius\n    [`&-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single):not(${pickerCellCls}-range-start) ${pickerCellInnerCls}`]:\n      {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0,\n        borderStartEndRadius: borderRadiusSM,\n        borderEndEndRadius: borderRadiusSM,\n      },\n\n    [`&-range-hover${pickerCellCls}-range-end::after`]: {\n      insetInlineStart: '50%',\n    },\n\n    // Edge start\n    [`tr > &-in-view${pickerCellCls}-range-hover:first-child::after,\n      tr > &-in-view${pickerCellCls}-range-hover-end:first-child::after,\n      &-in-view${pickerCellCls}-start${pickerCellCls}-range-hover-edge-start${pickerCellCls}-range-hover-edge-start-near-range::after,\n      &-in-view${pickerCellCls}-range-hover-edge-start:not(${pickerCellCls}-range-hover-edge-start-near-range)::after,\n      &-in-view${pickerCellCls}-range-hover-start::after`]: {\n      insetInlineStart: (pickerPanelCellWidth - pickerPanelCellHeight) / 2,\n      borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n      borderStartStartRadius: lineWidth,\n      borderEndStartRadius: lineWidth,\n    },\n\n    // Edge end\n    [`tr > &-in-view${pickerCellCls}-range-hover:last-child::after,\n      tr > &-in-view${pickerCellCls}-range-hover-start:last-child::after,\n      &-in-view${pickerCellCls}-end${pickerCellCls}-range-hover-edge-end${pickerCellCls}-range-hover-edge-end-near-range::after,\n      &-in-view${pickerCellCls}-range-hover-edge-end:not(${pickerCellCls}-range-hover-edge-end-near-range)::after,\n      &-in-view${pickerCellCls}-range-hover-end::after`]: {\n      insetInlineEnd: (pickerPanelCellWidth - pickerPanelCellHeight) / 2,\n      borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n      borderStartEndRadius: lineWidth,\n      borderEndEndRadius: lineWidth,\n    },\n\n    // >>> Disabled\n    '&-disabled': {\n      color: colorTextDisabled,\n      pointerEvents: 'none',\n\n      [pickerCellInnerCls]: {\n        background: 'transparent',\n      },\n\n      '&::before': {\n        background: colorBgContainerDisabled,\n      },\n    },\n    [`&-disabled${pickerCellCls}-today ${pickerCellInnerCls}::before`]: {\n      borderColor: colorTextDisabled,\n    },\n  };\n};\n\nexport const genPanelStyle = (token: SharedPickerToken): CSSObject => {\n  const {\n    componentCls,\n    pickerCellInnerCls,\n    pickerYearMonthCellWidth,\n    pickerControlIconSize,\n    pickerPanelCellWidth,\n    paddingSM,\n    paddingXS,\n    paddingXXS,\n    colorBgContainer,\n    lineWidth,\n    lineType,\n    borderRadiusLG,\n    colorPrimary,\n    colorTextHeading,\n    colorSplit,\n    pickerControlIconBorderWidth,\n    colorIcon,\n    pickerTextHeight,\n    motionDurationMid,\n    colorIconHover,\n    fontWeightStrong,\n    pickerPanelCellHeight,\n    pickerCellPaddingVertical,\n    colorTextDisabled,\n    colorText,\n    fontSize,\n    pickerBasicCellHoverWithRangeColor,\n    motionDurationSlow,\n    pickerPanelWithoutTimeCellHeight,\n    pickerQuarterPanelContentHeight,\n    colorLink,\n    colorLinkActive,\n    colorLinkHover,\n    pickerDateHoverRangeBorderColor,\n    borderRadiusSM,\n    colorTextLightSolid,\n    borderRadius,\n    controlItemBgHover,\n    pickerTimePanelColumnHeight,\n    pickerTimePanelColumnWidth,\n    pickerTimePanelCellHeight,\n    controlItemBgActive,\n    marginXXS,\n  } = token;\n\n  const pickerPanelWidth = pickerPanelCellWidth * 7 + paddingSM * 2 + 4;\n\n  const hoverCellFixedDistance =\n    (pickerPanelWidth - paddingXS * 2) / 3 - pickerYearMonthCellWidth - paddingSM;\n\n  return {\n    [componentCls]: {\n      '&-panel': {\n        display: 'inline-flex',\n        flexDirection: 'column',\n        textAlign: 'center',\n        background: colorBgContainer,\n        border: `${lineWidth}px ${lineType} ${colorSplit}`,\n        borderRadius: borderRadiusLG,\n        outline: 'none',\n\n        '&-focused': {\n          borderColor: colorPrimary,\n        },\n\n        '&-rtl': {\n          direction: 'rtl',\n\n          [`${componentCls}-prev-icon,\n              ${componentCls}-super-prev-icon`]: {\n            transform: 'rotate(45deg)',\n          },\n\n          [`${componentCls}-next-icon,\n              ${componentCls}-super-next-icon`]: {\n            transform: 'rotate(-135deg)',\n          },\n        },\n      },\n\n      // ========================================================\n      // =                     Shared Panel                     =\n      // ========================================================\n      [`&-decade-panel,\n        &-year-panel,\n        &-quarter-panel,\n        &-month-panel,\n        &-week-panel,\n        &-date-panel,\n        &-time-panel`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        width: pickerPanelWidth,\n      },\n\n      // ======================= Header =======================\n      '&-header': {\n        display: 'flex',\n        padding: `0 ${paddingXS}px`,\n        color: colorTextHeading,\n        borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n\n        '> *': {\n          flex: 'none',\n        },\n\n        button: {\n          padding: 0,\n          color: colorIcon,\n          lineHeight: `${pickerTextHeight}px`,\n          background: 'transparent',\n          border: 0,\n          cursor: 'pointer',\n          transition: `color ${motionDurationMid}`,\n        },\n\n        '> button': {\n          minWidth: '1.6em',\n          fontSize,\n\n          '&:hover': {\n            color: colorIconHover,\n          },\n        },\n\n        '&-view': {\n          flex: 'auto',\n          fontWeight: fontWeightStrong,\n          lineHeight: `${pickerTextHeight}px`,\n\n          button: {\n            color: 'inherit',\n            fontWeight: 'inherit',\n            verticalAlign: 'top',\n\n            '&:not(:first-child)': {\n              marginInlineStart: paddingXS,\n            },\n\n            '&:hover': {\n              color: colorPrimary,\n            },\n          },\n        },\n      },\n      // Arrow button\n      [`&-prev-icon,\n        &-next-icon,\n        &-super-prev-icon,\n        &-super-next-icon`]: {\n        position: 'relative',\n        display: 'inline-block',\n        width: pickerControlIconSize,\n        height: pickerControlIconSize,\n\n        '&::before': {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          display: 'inline-block',\n          width: pickerControlIconSize,\n          height: pickerControlIconSize,\n          border: `0 solid currentcolor`,\n          borderBlockStartWidth: pickerControlIconBorderWidth,\n          borderBlockEndWidth: 0,\n          borderInlineStartWidth: pickerControlIconBorderWidth,\n          borderInlineEndWidth: 0,\n          content: '\"\"',\n        },\n      },\n\n      [`&-super-prev-icon,\n        &-super-next-icon`]: {\n        '&::after': {\n          position: 'absolute',\n          top: Math.ceil(pickerControlIconSize / 2),\n          insetInlineStart: Math.ceil(pickerControlIconSize / 2),\n          display: 'inline-block',\n          width: pickerControlIconSize,\n          height: pickerControlIconSize,\n          border: '0 solid currentcolor',\n          borderBlockStartWidth: pickerControlIconBorderWidth,\n          borderBlockEndWidth: 0,\n          borderInlineStartWidth: pickerControlIconBorderWidth,\n          borderInlineEndWidth: 0,\n          content: '\"\"',\n        },\n      },\n\n      [`&-prev-icon,\n        &-super-prev-icon`]: {\n        transform: 'rotate(-45deg)',\n      },\n\n      [`&-next-icon,\n        &-super-next-icon`]: {\n        transform: 'rotate(135deg)',\n      },\n\n      // ======================== Body ========================\n      '&-content': {\n        width: '100%',\n        tableLayout: 'fixed',\n        borderCollapse: 'collapse',\n\n        'th, td': {\n          position: 'relative',\n          minWidth: pickerPanelCellHeight,\n          fontWeight: 'normal',\n        },\n\n        th: {\n          height: pickerPanelCellHeight + pickerCellPaddingVertical * 2,\n          color: colorText,\n          verticalAlign: 'middle',\n        },\n      },\n\n      '&-cell': {\n        padding: `${pickerCellPaddingVertical}px 0`,\n        color: colorTextDisabled,\n        cursor: 'pointer',\n\n        // In view\n        '&-in-view': {\n          color: colorText,\n        },\n\n        ...genPickerCellInnerStyle(token),\n      },\n\n      // DatePanel only\n      [`&-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-start ${pickerCellInnerCls},\n        &-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-end ${pickerCellInnerCls}`]:\n        {\n          '&::after': {\n            position: 'absolute',\n            top: 0,\n            bottom: 0,\n            zIndex: -1,\n            background: pickerBasicCellHoverWithRangeColor,\n            transition: `all ${motionDurationSlow}`,\n            content: '\"\"',\n          },\n        },\n\n      [`&-date-panel\n        ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-start\n        ${pickerCellInnerCls}::after`]: {\n        insetInlineEnd: -(pickerPanelCellWidth - pickerPanelCellHeight) / 2,\n        insetInlineStart: 0,\n      },\n\n      [`&-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-end ${pickerCellInnerCls}::after`]:\n        {\n          insetInlineEnd: 0,\n          insetInlineStart: -(pickerPanelCellWidth - pickerPanelCellHeight) / 2,\n        },\n\n      // Hover with range start & end\n      [`&-range-hover${componentCls}-range-start::after`]: {\n        insetInlineEnd: '50%',\n      },\n\n      [`&-decade-panel,\n        &-year-panel,\n        &-quarter-panel,\n        &-month-panel`]: {\n        [`${componentCls}-content`]: {\n          height: pickerPanelWithoutTimeCellHeight * 4,\n        },\n\n        [pickerCellInnerCls]: {\n          padding: `0 ${paddingXS}px`,\n        },\n      },\n\n      '&-quarter-panel': {\n        [`${componentCls}-content`]: {\n          height: pickerQuarterPanelContentHeight,\n        },\n      },\n\n      // ======================== Footer ========================\n      [`&-panel ${componentCls}-footer`]: {\n        borderTop: `${lineWidth}px ${lineType} ${colorSplit}`,\n      },\n\n      '&-footer': {\n        width: 'min-content',\n        minWidth: '100%',\n        lineHeight: `${pickerTextHeight - 2 * lineWidth}px`,\n        textAlign: 'center',\n\n        '&-extra': {\n          padding: `0 ${paddingSM}`,\n          lineHeight: `${pickerTextHeight - 2 * lineWidth}px`,\n          textAlign: 'start',\n\n          '&:not(:last-child)': {\n            borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n          },\n        },\n      },\n\n      '&-now': {\n        textAlign: 'start',\n      },\n\n      '&-today-btn': {\n        color: colorLink,\n\n        '&:hover': {\n          color: colorLinkHover,\n        },\n\n        '&:active': {\n          color: colorLinkActive,\n        },\n\n        [`&${componentCls}-today-btn-disabled`]: {\n          color: colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n      },\n\n      // ========================================================\n      // =                       Special                        =\n      // ========================================================\n\n      // ===================== Decade Panel =====================\n      '&-decade-panel': {\n        [pickerCellInnerCls]: {\n          padding: `0 ${paddingXS / 2}px`,\n        },\n\n        [`${componentCls}-cell::before`]: {\n          display: 'none',\n        },\n      },\n\n      // ============= Year & Quarter & Month Panel =============\n      [`&-year-panel,\n        &-quarter-panel,\n        &-month-panel`]: {\n        [`${componentCls}-body`]: {\n          padding: `0 ${paddingXS}px`,\n        },\n\n        [pickerCellInnerCls]: {\n          width: pickerYearMonthCellWidth,\n        },\n\n        [`${componentCls}-cell-range-hover-start::after`]: {\n          insetInlineStart: hoverCellFixedDistance,\n          borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n          borderStartStartRadius: borderRadiusSM,\n          borderBottomStartRadius: borderRadiusSM,\n          borderStartEndRadius: 0,\n          borderBottomEndRadius: 0,\n\n          [`${componentCls}-panel-rtl &`]: {\n            insetInlineEnd: hoverCellFixedDistance,\n            borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n            borderStartStartRadius: 0,\n            borderBottomStartRadius: 0,\n            borderStartEndRadius: borderRadiusSM,\n            borderBottomEndRadius: borderRadiusSM,\n          },\n        },\n        [`${componentCls}-cell-range-hover-end::after`]: {\n          insetInlineEnd: hoverCellFixedDistance,\n          borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n          borderStartStartRadius: 0,\n          borderEndStartRadius: 0,\n          borderStartEndRadius: borderRadius,\n          borderEndEndRadius: borderRadius,\n\n          [`${componentCls}-panel-rtl &`]: {\n            insetInlineStart: hoverCellFixedDistance,\n            borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`,\n            borderStartStartRadius: borderRadius,\n            borderEndStartRadius: borderRadius,\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0,\n          },\n        },\n      },\n\n      // ====================== Week Panel ======================\n      '&-week-panel': {\n        [`${componentCls}-body`]: {\n          padding: `${paddingXS}px ${paddingSM}px`,\n        },\n\n        // Clear cell style\n        [`${componentCls}-cell`]: {\n          [`&:hover ${pickerCellInnerCls},\n            &-selected ${pickerCellInnerCls},\n            ${pickerCellInnerCls}`]: {\n            background: 'transparent !important',\n          },\n        },\n\n        '&-row': {\n          td: {\n            transition: `background ${motionDurationMid}`,\n\n            '&:first-child': {\n              borderStartStartRadius: borderRadiusSM,\n              borderEndStartRadius: borderRadiusSM,\n            },\n\n            '&:last-child': {\n              borderStartEndRadius: borderRadiusSM,\n              borderEndEndRadius: borderRadiusSM,\n            },\n          },\n\n          '&:hover td': {\n            background: controlItemBgHover,\n          },\n\n          [`&-selected td,\n            &-selected:hover td`]: {\n            background: colorPrimary,\n\n            [`&${componentCls}-cell-week`]: {\n              color: new TinyColor(colorTextLightSolid).setAlpha(0.5).toHexString(),\n            },\n\n            [`&${componentCls}-cell-today ${pickerCellInnerCls}::before`]: {\n              borderColor: colorTextLightSolid,\n            },\n\n            [pickerCellInnerCls]: {\n              color: colorTextLightSolid,\n            },\n          },\n        },\n      },\n\n      // ====================== Date Panel ======================\n      '&-date-panel': {\n        [`${componentCls}-body`]: {\n          padding: `${paddingXS}px ${paddingSM}px`,\n        },\n\n        [`${componentCls}-content`]: {\n          width: pickerPanelCellWidth * 7,\n\n          th: {\n            width: pickerPanelCellWidth,\n          },\n        },\n      },\n\n      // ==================== Datetime Panel ====================\n      '&-datetime-panel': {\n        display: 'flex',\n\n        [`${componentCls}-time-panel`]: {\n          borderInlineStart: `${lineWidth}px ${lineType} ${colorSplit}`,\n        },\n\n        [`${componentCls}-date-panel,\n          ${componentCls}-time-panel`]: {\n          transition: `opacity ${motionDurationSlow}`,\n        },\n\n        // Keyboard\n        '&-active': {\n          [`${componentCls}-date-panel,\n            ${componentCls}-time-panel`]: {\n            opacity: 0.3,\n\n            '&-active': {\n              opacity: 1,\n            },\n          },\n        },\n      },\n\n      // ====================== Time Panel ======================\n      '&-time-panel': {\n        width: 'auto',\n        minWidth: 'auto',\n        direction: 'ltr',\n\n        [`${componentCls}-content`]: {\n          display: 'flex',\n          flex: 'auto',\n          height: pickerTimePanelColumnHeight,\n        },\n\n        '&-column': {\n          flex: '1 0 auto',\n          width: pickerTimePanelColumnWidth,\n          margin: `${paddingXXS}px 0`,\n          padding: 0,\n          overflowY: 'hidden',\n          textAlign: 'start',\n          listStyle: 'none',\n          transition: `background ${motionDurationMid}`,\n          overflowX: 'hidden',\n\n          '&::after': {\n            display: 'block',\n            height: pickerTimePanelColumnHeight - pickerTimePanelCellHeight,\n            content: '\"\"',\n          },\n\n          '&:not(:first-child)': {\n            borderInlineStart: `${lineWidth}px ${lineType} ${colorSplit}`,\n          },\n\n          '&-active': {\n            background: new TinyColor(controlItemBgActive).setAlpha(0.2).toHexString(),\n          },\n\n          '&:hover': {\n            overflowY: 'auto',\n          },\n\n          '> li': {\n            margin: 0,\n            padding: 0,\n\n            [`&${componentCls}-time-panel-cell`]: {\n              marginInline: marginXXS,\n              [`${componentCls}-time-panel-cell-inner`]: {\n                display: 'block',\n                width: pickerTimePanelColumnWidth - 2 * marginXXS,\n                height: pickerTimePanelCellHeight,\n                margin: 0,\n                paddingBlock: 0,\n                paddingInlineEnd: 0,\n                paddingInlineStart: (pickerTimePanelColumnWidth - pickerTimePanelCellHeight) / 2,\n                color: colorText,\n                lineHeight: `${pickerTimePanelCellHeight}px`,\n                borderRadius: borderRadiusSM,\n                cursor: 'pointer',\n                transition: `background ${motionDurationMid}`,\n\n                '&:hover': {\n                  background: controlItemBgHover,\n                },\n              },\n\n              '&-selected': {\n                [`${componentCls}-time-panel-cell-inner`]: {\n                  background: controlItemBgActive,\n                },\n              },\n\n              '&-disabled': {\n                [`${componentCls}-time-panel-cell-inner`]: {\n                  color: colorTextDisabled,\n                  background: 'transparent',\n                  cursor: 'not-allowed',\n                },\n              },\n            },\n          },\n        },\n      },\n      // https://github.com/ant-design/ant-design/issues/39227\n      [`&-datetime-panel ${componentCls}-time-panel-column:after`]: {\n        height: pickerTimePanelColumnHeight - pickerTimePanelCellHeight + paddingXXS * 2,\n      },\n    },\n  };\n};\n\nconst genPickerStatusStyle: GenerateStyle<PickerToken> = token => {\n  const {\n    componentCls,\n    colorBgContainer,\n    colorError,\n    colorErrorOutline,\n    colorWarning,\n    colorWarningOutline,\n  } = token;\n\n  return {\n    [componentCls]: {\n      [`&-status-error${componentCls}`]: {\n        '&, &:not([disabled]):hover': {\n          backgroundColor: colorBgContainer,\n          borderColor: colorError,\n        },\n\n        '&-focused, &:focus': {\n          ...genActiveStyle(\n            mergeToken<PickerToken>(token, {\n              inputBorderActiveColor: colorError,\n              inputBorderHoverColor: colorError,\n              controlOutline: colorErrorOutline,\n            }),\n          ),\n        },\n\n        [`${componentCls}-active-bar`]: {\n          background: colorError,\n        },\n      },\n\n      [`&-status-warning${componentCls}`]: {\n        '&, &:not([disabled]):hover': {\n          backgroundColor: colorBgContainer,\n          borderColor: colorWarning,\n        },\n\n        '&-focused, &:focus': {\n          ...genActiveStyle(\n            mergeToken<PickerToken>(token, {\n              inputBorderActiveColor: colorWarning,\n              inputBorderHoverColor: colorWarning,\n              controlOutline: colorWarningOutline,\n            }),\n          ),\n        },\n\n        [`${componentCls}-active-bar`]: {\n          background: colorWarning,\n        },\n      },\n    },\n  };\n};\n\nconst genPickerStyle: GenerateStyle<PickerToken> = token => {\n  const {\n    componentCls,\n    antCls,\n    boxShadowPopoverArrow,\n    controlHeight,\n    fontSize,\n    inputPaddingHorizontal,\n    colorBgContainer,\n    lineWidth,\n    lineType,\n    colorBorder,\n    borderRadius,\n    motionDurationMid,\n    colorBgContainerDisabled,\n    colorTextDisabled,\n    colorTextPlaceholder,\n    controlHeightLG,\n    fontSizeLG,\n    controlHeightSM,\n    inputPaddingHorizontalSM,\n    paddingXS,\n    marginXS,\n    colorTextDescription,\n    lineWidthBold,\n    lineHeight,\n    colorPrimary,\n    motionDurationSlow,\n    zIndexPopup,\n    paddingXXS,\n    paddingSM,\n    pickerTextHeight,\n    controlItemBgActive,\n    colorPrimaryBorder,\n    sizePopupArrow,\n    borderRadiusXS,\n    borderRadiusOuter,\n    colorBgElevated,\n    borderRadiusLG,\n    boxShadowSecondary,\n    borderRadiusSM,\n    colorSplit,\n    controlItemBgHover,\n    presetsWidth,\n    presetsMaxWidth,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        ...genPikerPadding(token, controlHeight, fontSize, inputPaddingHorizontal),\n        position: 'relative',\n        display: 'inline-flex',\n        alignItems: 'center',\n        background: colorBgContainer,\n        lineHeight: 1,\n        border: `${lineWidth}px ${lineType} ${colorBorder}`,\n        borderRadius,\n        transition: `border ${motionDurationMid}, box-shadow ${motionDurationMid}`,\n\n        '&:hover, &-focused': {\n          ...genHoverStyle(token),\n        },\n\n        '&-focused': {\n          ...genActiveStyle(token),\n        },\n\n        [`&${componentCls}-disabled`]: {\n          background: colorBgContainerDisabled,\n          borderColor: colorBorder,\n          cursor: 'not-allowed',\n\n          [`${componentCls}-suffix`]: {\n            color: colorTextDisabled,\n          },\n        },\n\n        [`&${componentCls}-borderless`]: {\n          backgroundColor: 'transparent !important',\n          borderColor: 'transparent !important',\n          boxShadow: 'none !important',\n        },\n\n        // ======================== Input =========================\n        [`${componentCls}-input`]: {\n          position: 'relative',\n          display: 'inline-flex',\n          alignItems: 'center',\n          width: '100%',\n\n          '> input': {\n            ...genBasicInputStyle(token),\n            flex: 'auto',\n\n            // Fix Firefox flex not correct:\n            // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n            minWidth: 1,\n            height: 'auto',\n            padding: 0,\n            background: 'transparent',\n            border: 0,\n\n            '&:focus': {\n              boxShadow: 'none',\n            },\n\n            '&[disabled]': {\n              background: 'transparent',\n            },\n          },\n\n          '&:hover': {\n            [`${componentCls}-clear`]: {\n              opacity: 1,\n            },\n          },\n\n          '&-placeholder': {\n            '> input': {\n              color: colorTextPlaceholder,\n            },\n          },\n        },\n\n        // Size\n        '&-large': {\n          ...genPikerPadding(token, controlHeightLG, fontSizeLG, inputPaddingHorizontal),\n\n          [`${componentCls}-input > input`]: {\n            fontSize: fontSizeLG,\n          },\n        },\n\n        '&-small': {\n          ...genPikerPadding(token, controlHeightSM, fontSize, inputPaddingHorizontalSM),\n        },\n\n        [`${componentCls}-suffix`]: {\n          display: 'flex',\n          flex: 'none',\n          alignSelf: 'center',\n          marginInlineStart: paddingXS / 2,\n          color: colorTextDisabled,\n          lineHeight: 1,\n          pointerEvents: 'none',\n\n          '> *': {\n            verticalAlign: 'top',\n\n            '&:not(:last-child)': {\n              marginInlineEnd: marginXS,\n            },\n          },\n        },\n\n        [`${componentCls}-clear`]: {\n          position: 'absolute',\n          top: '50%',\n          insetInlineEnd: 0,\n          color: colorTextDisabled,\n          lineHeight: 1,\n          background: colorBgContainer,\n          transform: 'translateY(-50%)',\n          cursor: 'pointer',\n          opacity: 0,\n          transition: `opacity ${motionDurationMid}, color ${motionDurationMid}`,\n\n          '> *': {\n            verticalAlign: 'top',\n          },\n\n          '&:hover': {\n            color: colorTextDescription,\n          },\n        },\n\n        [`${componentCls}-separator`]: {\n          position: 'relative',\n          display: 'inline-block',\n          width: '1em',\n          height: fontSizeLG,\n          color: colorTextDisabled,\n          fontSize: fontSizeLG,\n          verticalAlign: 'top',\n          cursor: 'default',\n\n          [`${componentCls}-focused &`]: {\n            color: colorTextDescription,\n          },\n\n          [`${componentCls}-range-separator &`]: {\n            [`${componentCls}-disabled &`]: {\n              cursor: 'not-allowed',\n            },\n          },\n        },\n\n        // ======================== Range =========================\n        '&-range': {\n          position: 'relative',\n          display: 'inline-flex',\n\n          // Clear\n          [`${componentCls}-clear`]: {\n            insetInlineEnd: inputPaddingHorizontal,\n          },\n\n          '&:hover': {\n            [`${componentCls}-clear`]: {\n              opacity: 1,\n            },\n          },\n\n          // Active bar\n          [`${componentCls}-active-bar`]: {\n            bottom: -lineWidth,\n            height: lineWidthBold,\n            marginInlineStart: inputPaddingHorizontal,\n            background: colorPrimary,\n            opacity: 0,\n            transition: `all ${motionDurationSlow} ease-out`,\n            pointerEvents: 'none',\n          },\n\n          [`&${componentCls}-focused`]: {\n            [`${componentCls}-active-bar`]: {\n              opacity: 1,\n            },\n          },\n\n          [`${componentCls}-range-separator`]: {\n            alignItems: 'center',\n            padding: `0 ${paddingXS}px`,\n            lineHeight: 1,\n          },\n\n          [`&${componentCls}-small`]: {\n            [`${componentCls}-clear`]: {\n              insetInlineEnd: inputPaddingHorizontalSM,\n            },\n\n            [`${componentCls}-active-bar`]: {\n              marginInlineStart: inputPaddingHorizontalSM,\n            },\n          },\n        },\n\n        // ======================= Dropdown =======================\n        '&-dropdown': {\n          ...resetComponent(token),\n          ...genPanelStyle(token),\n          position: 'absolute',\n          // Fix incorrect position of picker popup\n          // https://github.com/ant-design/ant-design/issues/35590\n          top: -9999,\n          left: {\n            _skip_check_: true,\n            value: -9999,\n          },\n          zIndex: zIndexPopup,\n\n          [`&${componentCls}-dropdown-hidden`]: {\n            display: 'none',\n          },\n\n          [`&${componentCls}-dropdown-placement-bottomLeft`]: {\n            [`${componentCls}-range-arrow`]: {\n              top: 0,\n              display: 'block',\n              transform: 'translateY(-100%)',\n            },\n          },\n\n          [`&${componentCls}-dropdown-placement-topLeft`]: {\n            [`${componentCls}-range-arrow`]: {\n              bottom: 0,\n              display: 'block',\n              transform: 'translateY(100%) rotate(180deg)',\n            },\n          },\n\n          [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topLeft,\n          &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topRight,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topLeft,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topRight`]:\n            {\n              animationName: slideDownIn,\n            },\n\n          [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomLeft,\n          &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomRight,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomLeft,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomRight`]:\n            {\n              animationName: slideUpIn,\n            },\n\n          [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topLeft,\n          &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topRight`]:\n            {\n              animationName: slideDownOut,\n            },\n\n          [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomLeft,\n          &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomRight`]:\n            {\n              animationName: slideUpOut,\n            },\n\n          // Time picker with additional style\n          [`${componentCls}-panel > ${componentCls}-time-panel`]: {\n            paddingTop: paddingXXS,\n          },\n\n          // ======================== Ranges ========================\n          [`${componentCls}-ranges`]: {\n            marginBottom: 0,\n            padding: `${paddingXXS}px ${paddingSM}px`,\n            overflow: 'hidden',\n            lineHeight: `${pickerTextHeight - 2 * lineWidth - paddingXS / 2}px`,\n            textAlign: 'start',\n            listStyle: 'none',\n            display: 'flex',\n            justifyContent: 'space-between',\n\n            '> li': {\n              display: 'inline-block',\n            },\n\n            // https://github.com/ant-design/ant-design/issues/23687\n            [`${componentCls}-preset > ${antCls}-tag-blue`]: {\n              color: colorPrimary,\n              background: controlItemBgActive,\n              borderColor: colorPrimaryBorder,\n              cursor: 'pointer',\n            },\n\n            [`${componentCls}-ok`]: {\n              marginInlineStart: 'auto',\n            },\n          },\n\n          [`${componentCls}-range-wrapper`]: {\n            display: 'flex',\n            position: 'relative',\n          },\n\n          [`${componentCls}-range-arrow`]: {\n            position: 'absolute',\n            zIndex: 1,\n            display: 'none',\n            marginInlineStart: inputPaddingHorizontal * 1.5,\n            transition: `left ${motionDurationSlow} ease-out`,\n            ...roundedArrow(\n              sizePopupArrow,\n              borderRadiusXS,\n              borderRadiusOuter,\n              colorBgElevated,\n              boxShadowPopoverArrow,\n            ),\n          },\n\n          [`${componentCls}-panel-container`]: {\n            overflow: 'hidden',\n            verticalAlign: 'top',\n            background: colorBgElevated,\n            borderRadius: borderRadiusLG,\n            boxShadow: boxShadowSecondary,\n            transition: `margin ${motionDurationSlow}`,\n\n            // ======================== Layout ========================\n            [`${componentCls}-panel-layout`]: {\n              display: 'flex',\n              flexWrap: 'nowrap',\n              alignItems: 'stretch',\n            },\n\n            // ======================== Preset ========================\n            [`${componentCls}-presets`]: {\n              display: 'flex',\n              flexDirection: 'column',\n              minWidth: presetsWidth,\n              maxWidth: presetsMaxWidth,\n\n              ul: {\n                height: 0,\n                flex: 'auto',\n                listStyle: 'none',\n                overflow: 'auto',\n                margin: 0,\n                padding: paddingXS,\n                borderInlineEnd: `${lineWidth}px ${lineType} ${colorSplit}`,\n\n                li: {\n                  ...textEllipsis,\n                  borderRadius: borderRadiusSM,\n                  paddingInline: paddingXS,\n                  paddingBlock: (controlHeightSM - Math.round(fontSize * lineHeight)) / 2,\n                  cursor: 'pointer',\n                  transition: `all ${motionDurationSlow}`,\n\n                  '+ li': {\n                    marginTop: marginXS,\n                  },\n\n                  '&:hover': {\n                    background: controlItemBgHover,\n                  },\n                },\n              },\n            },\n\n            // ======================== Panels ========================\n            [`${componentCls}-panels`]: {\n              display: 'inline-flex',\n              flexWrap: 'nowrap',\n              direction: 'ltr',\n\n              [`${componentCls}-panel`]: {\n                borderWidth: `0 0 ${lineWidth}px`,\n              },\n\n              '&:last-child': {\n                [`${componentCls}-panel`]: {\n                  borderWidth: 0,\n                },\n              },\n            },\n\n            [`${componentCls}-panel`]: {\n              verticalAlign: 'top',\n              background: 'transparent',\n              borderRadius: 0,\n              borderWidth: 0,\n\n              [`${componentCls}-content,\n            table`]: {\n                textAlign: 'center',\n              },\n\n              '&-focused': {\n                borderColor: colorBorder,\n              },\n            },\n          },\n        },\n\n        '&-dropdown-range': {\n          padding: `${(sizePopupArrow * 2) / 3}px 0`,\n\n          '&-hidden': {\n            display: 'none',\n          },\n        },\n\n        '&-rtl': {\n          direction: 'rtl',\n\n          [`${componentCls}-separator`]: {\n            transform: 'rotate(180deg)',\n          },\n\n          [`${componentCls}-footer`]: {\n            '&-extra': {\n              direction: 'rtl',\n            },\n          },\n        },\n      },\n    },\n\n    // Follow code may reuse in other components\n    initSlideMotion(token, 'slide-up'),\n    initSlideMotion(token, 'slide-down'),\n    initMoveMotion(token, 'move-up'),\n    initMoveMotion(token, 'move-down'),\n  ];\n};\n\nexport const initPickerPanelToken = (token: TokenWithCommonCls<GlobalToken>): PickerPanelToken => {\n  const pickerTimePanelCellHeight = 28;\n  const { componentCls, controlHeightLG, controlHeightSM, colorPrimary, paddingXXS } = token;\n\n  return {\n    pickerCellCls: `${componentCls}-cell`,\n    pickerCellInnerCls: `${componentCls}-cell-inner`,\n    pickerTextHeight: controlHeightLG,\n    pickerPanelCellWidth: controlHeightSM * 1.5,\n    pickerPanelCellHeight: controlHeightSM,\n    pickerDateHoverRangeBorderColor: new TinyColor(colorPrimary).lighten(20).toHexString(),\n    pickerBasicCellHoverWithRangeColor: new TinyColor(colorPrimary).lighten(35).toHexString(),\n    pickerPanelWithoutTimeCellHeight: controlHeightLG * 1.65,\n    pickerYearMonthCellWidth: controlHeightLG * 1.5,\n    pickerTimePanelColumnHeight: pickerTimePanelCellHeight * 8,\n    pickerTimePanelColumnWidth: controlHeightLG * 1.4,\n    pickerTimePanelCellHeight,\n    pickerQuarterPanelContentHeight: controlHeightLG * 1.4,\n    pickerCellPaddingVertical: paddingXXS,\n    pickerCellBorderGap: 2, // Magic for gap between cells\n    pickerControlIconSize: 7,\n    pickerControlIconBorderWidth: 1.5,\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'DatePicker',\n  token => {\n    const pickerToken = mergeToken<PickerToken>(\n      initInputToken<FullToken<'DatePicker'>>(token),\n      initPickerPanelToken(token),\n    );\n\n    return [\n      genPickerStyle(pickerToken),\n      genPickerStatusStyle(pickerToken),\n      // =====================================================\n      // ==             Space Compact                       ==\n      // =====================================================\n      genCompactItemStyle(token, {\n        focusElCls: `${token.componentCls}-focused`,\n      }),\n    ];\n  },\n  token => ({\n    presetsWidth: 120,\n    presetsMaxWidth: 200,\n    zIndexPopup: token.zIndexPopupBase + 50,\n  }),\n);\n"
  },
  {
    "path": "components/date-picker/util.ts",
    "content": "import type { PickerMode } from '../vc-picker/interface';\nimport type { SelectCommonPlacement } from '../_util/transition';\nimport type { PickerLocale } from './generatePicker';\nimport type { DirectionType } from '../config-provider';\n\nexport function getPlaceholder(\n  locale: PickerLocale,\n  picker: PickerMode,\n  customizePlaceholder?: string,\n): string {\n  if (customizePlaceholder !== undefined) {\n    return customizePlaceholder;\n  }\n\n  if (picker === 'year' && locale.lang.yearPlaceholder) {\n    return locale.lang.yearPlaceholder;\n  }\n  if (picker === 'quarter' && locale.lang.quarterPlaceholder) {\n    return locale.lang.quarterPlaceholder;\n  }\n  if (picker === 'month' && locale.lang.monthPlaceholder) {\n    return locale.lang.monthPlaceholder;\n  }\n  if (picker === 'week' && locale.lang.weekPlaceholder) {\n    return locale.lang.weekPlaceholder;\n  }\n  if (picker === 'time' && locale.timePickerLocale.placeholder) {\n    return locale!.timePickerLocale.placeholder;\n  }\n  return locale.lang.placeholder;\n}\n\nexport function getRangePlaceholder(\n  locale: PickerLocale,\n  picker: PickerMode,\n  customizePlaceholder?: [string, string],\n) {\n  if (customizePlaceholder !== undefined) {\n    return customizePlaceholder;\n  }\n\n  if (picker === 'year' && locale.lang.yearPlaceholder) {\n    return locale.lang.rangeYearPlaceholder;\n  }\n  if (picker === 'month' && locale.lang.monthPlaceholder) {\n    return locale.lang.rangeMonthPlaceholder;\n  }\n  if (picker === 'week' && locale.lang.weekPlaceholder) {\n    return locale.lang.rangeWeekPlaceholder;\n  }\n  if (picker === 'time' && locale.timePickerLocale.placeholder) {\n    return locale!.timePickerLocale.rangePlaceholder;\n  }\n  return locale.lang.rangePlaceholder;\n}\n\nexport function transPlacement2DropdownAlign(\n  direction: DirectionType,\n  placement?: SelectCommonPlacement,\n) {\n  const overflow = {\n    adjustX: 1,\n    adjustY: 1,\n  };\n  switch (placement) {\n    case 'bottomLeft': {\n      return {\n        points: ['tl', 'bl'],\n        offset: [0, 4],\n        overflow,\n      };\n    }\n    case 'bottomRight': {\n      return {\n        points: ['tr', 'br'],\n        offset: [0, 4],\n        overflow,\n      };\n    }\n    case 'topLeft': {\n      return {\n        points: ['bl', 'tl'],\n        offset: [0, -4],\n        overflow,\n      };\n    }\n    case 'topRight': {\n      return {\n        points: ['br', 'tr'],\n        offset: [0, -4],\n        overflow,\n      };\n    }\n    default: {\n      return {\n        points: direction === 'rtl' ? ['tr', 'br'] : ['tl', 'bl'],\n        offset: [0, 4],\n        overflow,\n      };\n    }\n  }\n}\n"
  },
  {
    "path": "components/descriptions/Cell.tsx",
    "content": "import type { VNodeTypes, HTMLAttributes, FunctionalComponent, CSSProperties } from 'vue';\n\nfunction notEmpty(val: any) {\n  return val !== undefined && val !== null;\n}\n\ninterface CellProps extends HTMLAttributes {\n  itemPrefixCls: string;\n  span: number;\n  component: string;\n  labelStyle?: CSSProperties;\n  contentStyle?: CSSProperties;\n  bordered?: boolean;\n  label?: number | VNodeTypes;\n  content?: number | VNodeTypes;\n  colon?: boolean;\n}\n\nconst Cell: FunctionalComponent<CellProps> = props => {\n  const {\n    itemPrefixCls,\n    component,\n    span,\n    labelStyle,\n    contentStyle,\n    bordered,\n    label,\n    content,\n    colon,\n  } = props;\n  const Component = component as any;\n  if (bordered) {\n    return (\n      <Component\n        class={[\n          {\n            [`${itemPrefixCls}-item-label`]: notEmpty(label),\n            [`${itemPrefixCls}-item-content`]: notEmpty(content),\n          },\n        ]}\n        colSpan={span}\n      >\n        {notEmpty(label) && <span style={labelStyle}>{label}</span>}\n        {notEmpty(content) && <span style={contentStyle}>{content}</span>}\n      </Component>\n    );\n  }\n\n  return (\n    <Component class={[`${itemPrefixCls}-item`]} colSpan={span}>\n      <div class={`${itemPrefixCls}-item-container`}>\n        {(label || label === 0) && (\n          <span\n            class={[\n              `${itemPrefixCls}-item-label`,\n              {\n                [`${itemPrefixCls}-item-no-colon`]: !colon,\n              },\n            ]}\n            style={labelStyle}\n          >\n            {label}\n          </span>\n        )}\n        {(content || content === 0) && (\n          <span class={`${itemPrefixCls}-item-content`} style={contentStyle}>\n            {content}\n          </span>\n        )}\n      </div>\n    </Component>\n  );\n};\n\nexport default Cell;\n"
  },
  {
    "path": "components/descriptions/Row.tsx",
    "content": "import Cell from './Cell';\nimport { getSlot, getClass, getStyle } from '../_util/props-util';\nimport type { CSSProperties, FunctionalComponent, VNode } from 'vue';\nimport { inject, ref } from 'vue';\nimport { descriptionsContext } from './index';\n\ninterface CellConfig {\n  component: string | [string, string];\n  type: string;\n  showLabel?: boolean;\n  showContent?: boolean;\n}\n\nexport interface RowProps {\n  prefixCls: string;\n  vertical: boolean;\n  row: any[];\n  bordered: boolean;\n  colon: boolean;\n  index: number;\n}\n\nconst Row: FunctionalComponent<RowProps> = props => {\n  const renderCells = (\n    items: VNode[],\n    { colon, prefixCls, bordered },\n    {\n      component,\n      type,\n      showLabel,\n      showContent,\n      labelStyle: rootLabelStyle,\n      contentStyle: rootContentStyle,\n    }: CellConfig & { labelStyle?: CSSProperties; contentStyle?: CSSProperties },\n  ) => {\n    return items.map((item, index) => {\n      const itemProps = item.props || {};\n      const {\n        prefixCls: itemPrefixCls = prefixCls,\n        span = 1,\n        labelStyle = itemProps['label-style'],\n        contentStyle = itemProps['content-style'],\n        label = (item.children as any)?.label?.(),\n      } = itemProps;\n      const children = getSlot(item);\n      const className = getClass(item);\n      const style = getStyle(item);\n      const { key } = item;\n      if (typeof component === 'string') {\n        return (\n          <Cell\n            key={`${type}-${String(key) || index}`}\n            class={className}\n            style={style}\n            labelStyle={{ ...rootLabelStyle, ...labelStyle }}\n            contentStyle={{ ...rootContentStyle, ...contentStyle }}\n            span={span}\n            colon={colon}\n            component={component}\n            itemPrefixCls={itemPrefixCls}\n            bordered={bordered}\n            label={showLabel ? label : null}\n            content={showContent ? children : null}\n          />\n        );\n      }\n\n      return [\n        <Cell\n          key={`label-${String(key) || index}`}\n          class={className}\n          style={{ ...rootLabelStyle, ...style, ...labelStyle }}\n          span={1}\n          colon={colon}\n          component={component[0]}\n          itemPrefixCls={itemPrefixCls}\n          bordered={bordered}\n          label={label}\n        />,\n        <Cell\n          key={`content-${String(key) || index}`}\n          class={className}\n          style={{ ...rootContentStyle, ...style, ...contentStyle }}\n          span={span * 2 - 1}\n          component={component[1]}\n          itemPrefixCls={itemPrefixCls}\n          bordered={bordered}\n          content={children}\n        />,\n      ];\n    });\n  };\n\n  const { prefixCls, vertical, row, index, bordered } = props;\n  const { labelStyle, contentStyle } = inject(descriptionsContext, {\n    labelStyle: ref({}),\n    contentStyle: ref({}),\n  });\n  if (vertical) {\n    return (\n      <>\n        <tr key={`label-${index}`} class={`${prefixCls}-row`}>\n          {renderCells(row, props, {\n            component: 'th',\n            type: 'label',\n            showLabel: true,\n            labelStyle: labelStyle.value,\n            contentStyle: contentStyle.value,\n          })}\n        </tr>\n        <tr key={`content-${index}`} class={`${prefixCls}-row`}>\n          {renderCells(row, props, {\n            component: 'td',\n            type: 'content',\n            showContent: true,\n            labelStyle: labelStyle.value,\n            contentStyle: contentStyle.value,\n          })}\n        </tr>\n      </>\n    );\n  }\n\n  return (\n    <tr key={index} class={`${prefixCls}-row`}>\n      {renderCells(row, props, {\n        component: bordered ? ['th', 'td'] : 'td',\n        type: 'item',\n        showLabel: true,\n        showContent: true,\n        labelStyle: labelStyle.value,\n        contentStyle: contentStyle.value,\n      })}\n    </tr>\n  );\n};\n\nexport default Row;\n"
  },
  {
    "path": "components/descriptions/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/descriptions/demo/basic.vue correctly 1`] = `\n<div class=\"ant-descriptions\">\n  <div class=\"ant-descriptions-header\">\n    <div class=\"ant-descriptions-title\">User Info</div>\n    <!---->\n  </div>\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">UserName</span><span class=\"ant-descriptions-item-content\">Zhou Maomao</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Telephone</span><span class=\"ant-descriptions-item-content\">1810000000</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Live</span><span class=\"ant-descriptions-item-content\">Hangzhou, Zhejiang</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Remark</span><span class=\"ant-descriptions-item-content\">empty</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Address</span><span class=\"ant-descriptions-item-content\"> No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China </span></div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/descriptions/demo/border.vue correctly 1`] = `\n<div class=\"ant-descriptions ant-descriptions-bordered\">\n  <div class=\"ant-descriptions-header\">\n    <div class=\"ant-descriptions-title\">User Info</div>\n    <!---->\n  </div>\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Product</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Cloud Database</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Billing Mode</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Prepaid</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Automatic Renewal</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>YES</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Order time</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>2018-04-24 18:00:00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Usage Time</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>2019-04-24 18:00:00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Status</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-processing\"></span><span class=\"ant-badge-status-text\">Running</span></span></span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Negotiated Amount</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$80.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Discount</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$20.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Official Receipts</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$60.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Config Info</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span> Data disk type: MongoDB <br> Database version: 3.4 <br> Package: dds.mongo.mid <br> Storage space: 10 GB <br> Replication factor: 3 <br> Region: East China 1 <br></span>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/descriptions/demo/responsive.vue correctly 1`] = `\n<div class=\"ant-descriptions ant-descriptions-bordered\">\n  <div class=\"ant-descriptions-header\">\n    <div class=\"ant-descriptions-title\">Responsive Descriptions</div>\n    <!---->\n  </div>\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Product</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Cloud Database</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Billing</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Prepaid</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Time</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>18:00:00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Amount</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$80.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Discount</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$20.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Official</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$60.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Config Info</span>\n            <!---->\n          </th>\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span> Data disk type: MongoDB <br> Database version: 3.4 <br> Package: dds.mongo.mid <br> Storage space: 10 GB <br> Replication factor: 3 <br> Region: East China 1 </span>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/descriptions/demo/size.vue correctly 1`] = `\n<div>\n  <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"default\"><span class=\"ant-radio-inner\"></span></span><span>default</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"middle\"><span class=\"ant-radio-inner\"></span></span><span>middle</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"small\"><span class=\"ant-radio-inner\"></span></span><span>small</span></label></div><br><br>\n  <div class=\"ant-descriptions ant-descriptions-bordered\">\n    <div class=\"ant-descriptions-header\">\n      <div class=\"ant-descriptions-title\">Custom Size</div>\n      <div class=\"ant-descriptions-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Edit</span>\n        </button></div>\n    </div>\n    <div class=\"ant-descriptions-view\">\n      <table>\n        <tbody>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Product</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>Cloud Database</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Billing</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>Prepaid</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Time</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>18:00:00</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Amount</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>$80.00</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Discount</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>$20.00</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Official</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span>$60.00</span>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Config Info</span>\n              <!---->\n            </th>\n            <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n              <!----><span> Data disk type: MongoDB <br> Database version: 3.4 <br> Package: dds.mongo.mid <br> Storage space: 10 GB <br> Replication factor: 3 <br> Region: East China 1 <br></span>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </div><br><br>\n  <div class=\"ant-descriptions\">\n    <div class=\"ant-descriptions-header\">\n      <div class=\"ant-descriptions-title\">Custom Size</div>\n      <div class=\"ant-descriptions-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Edit</span>\n        </button></div>\n    </div>\n    <div class=\"ant-descriptions-view\">\n      <table>\n        <tbody>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Product</span><span class=\"ant-descriptions-item-content\">Cloud Database</span></div>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Billing</span><span class=\"ant-descriptions-item-content\">Prepaid</span></div>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Time</span><span class=\"ant-descriptions-item-content\">18:00:00</span></div>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Amount</span><span class=\"ant-descriptions-item-content\">$80.00</span></div>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Discount</span><span class=\"ant-descriptions-item-content\">$20.00</span></div>\n            </td>\n          </tr>\n          <tr class=\"ant-descriptions-row\">\n            <td class=\"ant-descriptions-item\" colspan=\"1\">\n              <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Official</span><span class=\"ant-descriptions-item-content\">$60.00</span></div>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/descriptions/demo/vertical.vue correctly 1`] = `\n<div class=\"ant-descriptions\">\n  <div class=\"ant-descriptions-header\">\n    <div class=\"ant-descriptions-title\">User Info</div>\n    <!---->\n  </div>\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">UserName</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">Zhou Maomao</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Telephone</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">1810000000</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Live</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">Hangzhou, Zhejiang</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Address</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\"> No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China </span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Remark</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">empty</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/descriptions/demo/vertical-border.vue correctly 1`] = `\n<div class=\"ant-descriptions ant-descriptions-bordered\">\n  <div class=\"ant-descriptions-header\">\n    <div class=\"ant-descriptions-title\">User Info</div>\n    <!---->\n  </div>\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Product</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Cloud Database</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Billing Mode</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>Prepaid</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Automatic Renewal</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>YES</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Order time</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>2018-04-24 18:00:00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Usage Time</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>2019-04-24 18:00:00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Status</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span><span class=\"ant-badge ant-badge-status ant-badge-not-a-wrapper\"><span class=\"ant-badge-status-dot ant-badge-status-processing\"></span><span class=\"ant-badge-status-text\">Running</span></span></span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Negotiated Amount</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$80.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Discount</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$20.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Official Receipts</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span>$60.00</span>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item-label\" colspan=\"1\"><span>Config Info</span>\n            <!---->\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item-content\" colspan=\"1\">\n            <!----><span> Data disk type: MongoDB <br> Database version: 3.4 <br> Package: dds.mongo.mid <br> Storage space: 10 GB <br> Replication factor: 3 <br> Region: East China 1 <br></span>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/descriptions/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Descriptions Descriptions support colon 1`] = `\n<div class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label ant-descriptions-item-no-colon\">Product</span><span class=\"ant-descriptions-item-content\">Cloud Database</span></div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`Descriptions Descriptions support style 1`] = `\n<div style=\"background-color: rgb(232, 232, 232);\" class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">Cloud Database</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`Descriptions Descriptions.Item support className 1`] = `\n<div class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item my-class\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Product</span><span class=\"ant-descriptions-item-content\">Cloud Database</span></div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`Descriptions column is number 1`] = `\n<div class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Product</span><span class=\"ant-descriptions-item-content\">Cloud Database</span></div>\n          </td>\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Billing</span><span class=\"ant-descriptions-item-content\">Prepaid</span></div>\n          </td>\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">time</span><span class=\"ant-descriptions-item-content\">18:00:00</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"3\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Amount</span><span class=\"ant-descriptions-item-content\">$80.00</span></div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`Descriptions vertical layout 1`] = `\n<div class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Product</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">Cloud Database</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Billing</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">Prepaid</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">time</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">18:00:00</span>\n            </div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <th class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Amount</span>\n              <!---->\n            </div>\n          </th>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\">\n              <!----><span class=\"ant-descriptions-item-content\">$80.00</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n\nexports[`Descriptions when item is rendered conditionally 1`] = `\n<div class=\"ant-descriptions\">\n  <!---->\n  <div class=\"ant-descriptions-view\">\n    <table>\n      <tbody>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Product</span><span class=\"ant-descriptions-item-content\">Cloud Database</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Billing</span><span class=\"ant-descriptions-item-content\">Prepaid</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">time</span><span class=\"ant-descriptions-item-content\">18:00:00</span></div>\n          </td>\n        </tr>\n        <tr class=\"ant-descriptions-row\">\n          <td class=\"ant-descriptions-item\" colspan=\"1\">\n            <div class=\"ant-descriptions-item-container\"><span class=\"ant-descriptions-item-label\">Amount</span><span class=\"ant-descriptions-item-content\">$80.00</span></div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/descriptions/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('descriptions');\n"
  },
  {
    "path": "components/descriptions/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { h } from 'vue';\nimport MockDate from 'mockdate';\nimport Descriptions from '..';\nimport { resetWarned } from '../../_util/warning';\nimport { asyncExpect } from '../../../tests/utils';\n\ndescribe('Descriptions', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n\n  afterEach(() => {\n    MockDate.reset();\n    errorSpy.mockReset();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n\n  it('when typeof column is object', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Descriptions ref=\"descriptions\" column={{ xs: 8, sm: 16, md: 24 }}>\n              <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n              <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n              <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n              <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n            </Descriptions>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      expect(\n        wrapper.findAll('td').reduce((total, td) => total + parseInt(td.attributes().colspan), 0),\n      ).toBe(8);\n    }, 100);\n    wrapper.unmount();\n  });\n\n  it('column is number', () => {\n    // eslint-disable-next-line global-require\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions column={3}>\n            <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n            <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n            <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n            <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n    wrapper.unmount();\n  });\n\n  it('warning if ecceed the row span', () => {\n    resetWarned();\n\n    mount({\n      render() {\n        return (\n          <Descriptions column={3}>\n            <Descriptions.Item label=\"Product\" span={2}>\n              Cloud Database\n            </Descriptions.Item>\n            <Descriptions.Item label=\"Billing\" span={2}>\n              Prepaid\n            </Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [antdv: Descriptions] Sum of column `span` in a line not match `column` of Descriptions.',\n    );\n  });\n\n  it('when item is rendered conditionally', () => {\n    const hasDiscount = false;\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions>\n            <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n            <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n            <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n            <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n            {hasDiscount && <Descriptions.Item label=\"Discount\">$20.00</Descriptions.Item>}\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n    wrapper.unmount();\n  });\n\n  it('vertical layout', () => {\n    // eslint-disable-next-line global-require\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions layout=\"vertical\">\n            <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n            <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n            <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n            <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n    wrapper.unmount();\n  });\n\n  it('Descriptions.Item support className', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions>\n            <Descriptions.Item label=\"Product\" class=\"my-class\">\n              Cloud Database\n            </Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('Descriptions support colon', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions colon={false}>\n            <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('Descriptions support style', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions style={{ backgroundColor: '#e8e8e8' }}>\n            <Descriptions.Item>Cloud Database</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('when max-width: 575px，column=1', async () => {\n    // eslint-disable-next-line global-require\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Descriptions>\n              <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n              <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n              <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n              <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n              <Descriptions.Item>No-Label</Descriptions.Item>\n            </Descriptions>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('tr')).toHaveLength(5);\n      expect(wrapper.findAll('.ant-descriptions-item-label')).toHaveLength(4);\n    });\n\n    wrapper.unmount();\n  });\n\n  it('when max-width: 575px，column=2', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Descriptions column={{ xs: 2 }}>\n              <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n              <Descriptions.Item label=\"Billing\">Prepaid</Descriptions.Item>\n              <Descriptions.Item label=\"time\">18:00:00</Descriptions.Item>\n              <Descriptions.Item label=\"Amount\">$80.00</Descriptions.Item>\n            </Descriptions>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('tr')).toHaveLength(2);\n    });\n    wrapper.unmount();\n  });\n\n  it('columns 5 with customize', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions layout=\"vertical\" column={4}>\n            {/* 1 1 1 1 */}\n            <Descriptions.Item label=\"bamboo\">bamboo</Descriptions.Item>\n            <Descriptions.Item label=\"bamboo\">bamboo</Descriptions.Item>\n            <Descriptions.Item label=\"bamboo\">bamboo</Descriptions.Item>\n            <Descriptions.Item label=\"bamboo\">bamboo</Descriptions.Item>\n            {/* 2 2 */}\n            <Descriptions.Item label=\"bamboo\" span={2}>\n              bamboo\n            </Descriptions.Item>\n            <Descriptions.Item label=\"bamboo\" span={2}>\n              bamboo\n            </Descriptions.Item>\n            {/* 3 1 */}\n            <Descriptions.Item label=\"bamboo\" span={3}>\n              bamboo\n            </Descriptions.Item>\n            <Descriptions.Item label=\"bamboo\">bamboo</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n\n    function matchSpan(rowIndex, spans) {\n      const tr = wrapper.findAll('tr')[rowIndex];\n      const tds = tr.findAll('th');\n      expect(tds.length).toEqual(spans.length);\n      tds.forEach((td, index) => {\n        expect(parseInt(td.attributes().colspan)).toEqual(spans[index]);\n      });\n    }\n\n    matchSpan(0, [1, 1, 1, 1]);\n    matchSpan(2, [2, 2]);\n    matchSpan(4, [3, 1]);\n  });\n\n  it('number value should render correct', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Descriptions bordered>\n            <Descriptions.Item label={0}>{0}</Descriptions.Item>\n          </Descriptions>\n        );\n      },\n    });\n\n    expect(wrapper.find('th').classes()).toContain('ant-descriptions-item-label');\n    expect(wrapper.find('td').classes()).toContain('ant-descriptions-item-content');\n  });\n\n  it('Descriptions support extra', async () => {\n    const wrapper = mount(Descriptions, {\n      props: {\n        extra: 'Edit',\n      },\n      slots: {\n        default: h(\n          Descriptions.Item,\n          {\n            label: 'UserName',\n          },\n          'Zhou Maomao',\n        ),\n      },\n    });\n\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-descriptions-extra').exists()).toBe(true);\n    });\n\n    wrapper.setProps({ extra: undefined });\n\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-descriptions-extra').exists()).toBe(false);\n    });\n  });\n});\n"
  },
  {
    "path": "components/descriptions/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle: \n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n简单的展示。\n\n## en-US\nSimplest Usage.\n\n</docs>\n\n<template>\n  <a-descriptions title=\"User Info\">\n    <a-descriptions-item label=\"UserName\">Zhou Maomao</a-descriptions-item>\n    <a-descriptions-item label=\"Telephone\">1810000000</a-descriptions-item>\n    <a-descriptions-item label=\"Live\">Hangzhou, Zhejiang</a-descriptions-item>\n    <a-descriptions-item label=\"Remark\">empty</a-descriptions-item>\n    <a-descriptions-item label=\"Address\">\n      No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China\n    </a-descriptions-item>\n  </a-descriptions>\n</template>\n"
  },
  {
    "path": "components/descriptions/demo/border.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 带边框的\n  en-US: Bordered\n---\n\n## zh-CN\n\n带边框和背景颜色列表。\n\n## en-US\n\nDescriptions with border and background color.\n\n</docs>\n\n<template>\n  <a-descriptions title=\"User Info\" bordered>\n    <a-descriptions-item label=\"Product\">Cloud Database</a-descriptions-item>\n    <a-descriptions-item label=\"Billing Mode\">Prepaid</a-descriptions-item>\n    <a-descriptions-item label=\"Automatic Renewal\">YES</a-descriptions-item>\n    <a-descriptions-item label=\"Order time\">2018-04-24 18:00:00</a-descriptions-item>\n    <a-descriptions-item label=\"Usage Time\" :span=\"2\">2019-04-24 18:00:00</a-descriptions-item>\n    <a-descriptions-item label=\"Status\" :span=\"3\">\n      <a-badge status=\"processing\" text=\"Running\" />\n    </a-descriptions-item>\n    <a-descriptions-item label=\"Negotiated Amount\">$80.00</a-descriptions-item>\n    <a-descriptions-item label=\"Discount\">$20.00</a-descriptions-item>\n    <a-descriptions-item label=\"Official Receipts\">$60.00</a-descriptions-item>\n    <a-descriptions-item label=\"Config Info\">\n      Data disk type: MongoDB\n      <br />\n      Database version: 3.4\n      <br />\n      Package: dds.mongo.mid\n      <br />\n      Storage space: 10 GB\n      <br />\n      Replication factor: 3\n      <br />\n      Region: East China 1\n      <br />\n    </a-descriptions-item>\n  </a-descriptions>\n</template>\n"
  },
  {
    "path": "components/descriptions/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Border />\n    <Size />\n    <Responsive />\n    <Vertical />\n    <VerticalBorder />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Border from './border.vue';\nimport Responsive from './responsive.vue';\nimport Size from './size.vue';\nimport VerticalBorder from './vertical-border.vue';\nimport Vertical from './vertical.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  category: 'Components',\n  type: 'Data Display',\n  zhType: '数据展示',\n  title: 'Descriptions',\n  subtitle: '描述列表',\n  cols: 1,\n  CN,\n  US,\n  components: {\n    Basic,\n    Border,\n    Size,\n    Responsive,\n    Vertical,\n    VerticalBorder,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/descriptions/demo/responsive.vue",
    "content": "<docs>\n---\norder: 3\ntitle: \n  zh-CN: 响应式\n  en-US: Responsive\n---\n\n## zh-CN\n\n通过响应式的配置可以实现在小屏幕设备上的完美呈现。\n\n## en-US\n\nResponsive configuration enables perfect presentation on small screen devices.\n\n</docs>\n\n<template>\n  <a-descriptions\n    title=\"Responsive Descriptions\"\n    bordered\n    :column=\"{ xxl: 4, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }\"\n  >\n    <a-descriptions-item label=\"Product\">Cloud Database</a-descriptions-item>\n    <a-descriptions-item label=\"Billing\">Prepaid</a-descriptions-item>\n    <a-descriptions-item label=\"Time\">18:00:00</a-descriptions-item>\n    <a-descriptions-item label=\"Amount\">$80.00</a-descriptions-item>\n    <a-descriptions-item label=\"Discount\">$20.00</a-descriptions-item>\n    <a-descriptions-item label=\"Official\">$60.00</a-descriptions-item>\n    <a-descriptions-item label=\"Config Info\">\n      Data disk type: MongoDB\n      <br />\n      Database version: 3.4\n      <br />\n      Package: dds.mongo.mid\n      <br />\n      Storage space: 10 GB\n      <br />\n      Replication factor: 3\n      <br />\n      Region: East China 1\n    </a-descriptions-item>\n  </a-descriptions>\n</template>\n"
  },
  {
    "path": "components/descriptions/demo/size.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义尺寸\n  en-US: Custom Size\n---\n\n## zh-CN\n\n自定义尺寸，适应在各种容器中展示。\n\n## en-US\n\nCustom sizes to fit in a variety of containers.\n\n</docs>\n\n<template>\n  <div>\n    <a-radio-group v-model:value=\"size\" @change=\"onChange\">\n      <a-radio value=\"default\">default</a-radio>\n      <a-radio value=\"middle\">middle</a-radio>\n      <a-radio value=\"small\">small</a-radio>\n    </a-radio-group>\n    <br />\n    <br />\n    <a-descriptions bordered title=\"Custom Size\" :size=\"size\">\n      <template #extra>\n        <a-button type=\"primary\">Edit</a-button>\n      </template>\n      <a-descriptions-item label=\"Product\">Cloud Database</a-descriptions-item>\n      <a-descriptions-item label=\"Billing\">Prepaid</a-descriptions-item>\n      <a-descriptions-item label=\"Time\">18:00:00</a-descriptions-item>\n      <a-descriptions-item label=\"Amount\">$80.00</a-descriptions-item>\n      <a-descriptions-item label=\"Discount\">$20.00</a-descriptions-item>\n      <a-descriptions-item label=\"Official\">$60.00</a-descriptions-item>\n      <a-descriptions-item label=\"Config Info\">\n        Data disk type: MongoDB\n        <br />\n        Database version: 3.4\n        <br />\n        Package: dds.mongo.mid\n        <br />\n        Storage space: 10 GB\n        <br />\n        Replication factor: 3\n        <br />\n        Region: East China 1\n        <br />\n      </a-descriptions-item>\n    </a-descriptions>\n    <br />\n    <br />\n    <a-descriptions title=\"Custom Size\" :size=\"size\">\n      <template #extra>\n        <a-button type=\"primary\">Edit</a-button>\n      </template>\n      <a-descriptions-item label=\"Product\">Cloud Database</a-descriptions-item>\n      <a-descriptions-item label=\"Billing\">Prepaid</a-descriptions-item>\n      <a-descriptions-item label=\"Time\">18:00:00</a-descriptions-item>\n      <a-descriptions-item label=\"Amount\">$80.00</a-descriptions-item>\n      <a-descriptions-item label=\"Discount\">$20.00</a-descriptions-item>\n      <a-descriptions-item label=\"Official\">$60.00</a-descriptions-item>\n    </a-descriptions>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { DescriptionsProps } from 'ant-design-vue';\nconst size = ref<DescriptionsProps['size']>('default');\nconst onChange = (e: any) => {\n  console.log('size checked', e.target.value);\n  size.value = e.target.value;\n};\n</script>\n"
  },
  {
    "path": "components/descriptions/demo/vertical-border.vue",
    "content": "<docs>\n---\norder: 5\ntitle: \n  zh-CN: 垂直带边框的\n  en-US: Vertical Border\n---\n\n## zh-CN\n\n垂直带边框和背景颜色的列表。\n\n## en-US\n\nDescriptions with border and background color.\n\n</docs>\n\n<template>\n  <a-descriptions title=\"User Info\" layout=\"vertical\" bordered>\n    <a-descriptions-item label=\"Product\">Cloud Database</a-descriptions-item>\n    <a-descriptions-item label=\"Billing Mode\">Prepaid</a-descriptions-item>\n    <a-descriptions-item label=\"Automatic Renewal\">YES</a-descriptions-item>\n    <a-descriptions-item label=\"Order time\">2018-04-24 18:00:00</a-descriptions-item>\n    <a-descriptions-item label=\"Usage Time\" :span=\"2\">2019-04-24 18:00:00</a-descriptions-item>\n    <a-descriptions-item label=\"Status\" :span=\"3\">\n      <a-badge status=\"processing\" text=\"Running\" />\n    </a-descriptions-item>\n    <a-descriptions-item label=\"Negotiated Amount\">$80.00</a-descriptions-item>\n    <a-descriptions-item label=\"Discount\">$20.00</a-descriptions-item>\n    <a-descriptions-item label=\"Official Receipts\">$60.00</a-descriptions-item>\n    <a-descriptions-item label=\"Config Info\">\n      Data disk type: MongoDB\n      <br />\n      Database version: 3.4\n      <br />\n      Package: dds.mongo.mid\n      <br />\n      Storage space: 10 GB\n      <br />\n      Replication factor: 3\n      <br />\n      Region: East China 1\n      <br />\n    </a-descriptions-item>\n  </a-descriptions>\n</template>\n"
  },
  {
    "path": "components/descriptions/demo/vertical.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 垂直\n  en-US: Vertical\n---\n\n## zh-CN\n\n垂直的列表。\n\n## en-US\n\nSimplest Usage.\n\n</docs>\n\n<template>\n  <a-descriptions title=\"User Info\" layout=\"vertical\">\n    <a-descriptions-item label=\"UserName\">Zhou Maomao</a-descriptions-item>\n    <a-descriptions-item label=\"Telephone\">1810000000</a-descriptions-item>\n    <a-descriptions-item label=\"Live\">Hangzhou, Zhejiang</a-descriptions-item>\n    <a-descriptions-item label=\"Address\" :span=\"2\">\n      No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China\n    </a-descriptions-item>\n    <a-descriptions-item label=\"Remark\">empty</a-descriptions-item>\n  </a-descriptions>\n</template>\n"
  },
  {
    "path": "components/descriptions/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Descriptions\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*fHdlTpif6XQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*d27AQJrowGAAAAAAAAAAAAAADrJ8AQ/original\n---\n\nDisplay multiple read-only fields in groups.\n\n## When To Use\n\nCommonly displayed on the details page.\n\n## API\n\n### Descriptions props\n\n| Property | Description | Type | Default | Version |  |  |\n| --- | --- | --- | --- | --- | --- | --- |\n| bordered | whether to display the border | boolean | false |  |  |  |\n| colon | change default props `colon` value of `Descriptions.Item` | boolean | true |  |  |  |\n| column | the number of `DescriptionItems` in a row,could be a number or a object like `{ xs: 8, sm: 16, md: 24}`,(Only set `bordered={true}` to take effect) | number | 3 |  |  |  |\n| contentStyle | Customize content style | CSSProperties | - | 2.2.0 |  |  |\n| extra | The action area of the description list, placed at the top-right | string \\| VNode \\| slot | - | 2.0.0 |  |  |\n| labelStyle | Customize label style | CSSProperties | - | 2.2.0 |  |  |\n| layout | Define description layout | `horizontal` \\| `vertical` | `horizontal` |  |  |\n| size | set the size of the list. Can be set to `middle`,`small`, or not filled | `default` \\| `middle` \\| `small` | `default` |  |\n| title | The title of the description list, placed at the top | string \\| VNode \\| slot | - |  |  |  |\n\n### Item props\n\n| Property     | Description                    | Type                    | Default | Version |\n| ------------ | ------------------------------ | ----------------------- | ------- | ------- |\n| contentStyle | Customize content style        | CSSProperties           | -       | 2.2.0   |\n| label        | description of the content     | string \\| VNode \\| slot | -       |         |\n| labelStyle   | Customize label style          | CSSProperties           | -       | 2.2.0   |\n| span         | The number of columns included | number                  | 1       |         |\n\n> The number of span Descriptions.Item. span={2} takes up the width of two DescriptionsItems.\n"
  },
  {
    "path": "components/descriptions/index.tsx",
    "content": "import type {\n  Ref,\n  App,\n  PropType,\n  VNode,\n  HTMLAttributes,\n  ExtractPropTypes,\n  Plugin,\n  CSSProperties,\n  InjectionKey,\n} from 'vue';\nimport {\n  onBeforeMount,\n  ref,\n  defineComponent,\n  onBeforeUnmount,\n  provide,\n  toRef,\n  computed,\n} from 'vue';\nimport warning from '../_util/warning';\nimport type { Breakpoint, ScreenMap } from '../_util/responsiveObserve';\nimport useResponsiveObserve, { responsiveArray } from '../_util/responsiveObserve';\nimport Row from './Row';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport { flattenChildren } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CustomSlotsType } from '../_util/type';\nimport useStyle from './style';\n\nexport const DescriptionsItemProps = {\n  prefixCls: String,\n  label: PropTypes.any,\n  span: Number,\n};\n\nconst descriptionsItemProp = () => ({\n  prefixCls: String,\n  label: PropTypes.any,\n  labelStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  contentStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  span: { type: Number, default: 1 },\n});\n\nexport type DescriptionsItemProp = Partial<\n  ExtractPropTypes<ReturnType<typeof descriptionsItemProp>>\n>;\n\nexport const DescriptionsItem = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADescriptionsItem',\n  props: descriptionsItemProp(),\n  setup(_, { slots }) {\n    return () => slots.default?.();\n  },\n});\n\nconst DEFAULT_COLUMN_MAP: Partial<Record<Breakpoint, number>> = {\n  xxxl: 3,\n  xxl: 3,\n  xl: 3,\n  lg: 3,\n  md: 3,\n  sm: 2,\n  xs: 1,\n};\n\nfunction getColumn(column: DescriptionsProps['column'], screens: ScreenMap): number {\n  if (typeof column === 'number') {\n    return column;\n  }\n\n  if (typeof column === 'object') {\n    for (let i = 0; i < responsiveArray.length; i++) {\n      const breakpoint: Breakpoint = responsiveArray[i];\n      if (screens[breakpoint] && column[breakpoint] !== undefined) {\n        return column[breakpoint] || DEFAULT_COLUMN_MAP[breakpoint];\n      }\n    }\n  }\n\n  return 3;\n}\n\nfunction getFilledItem(node: VNode, rowRestCol: number, span?: number): VNode {\n  let clone = node;\n\n  if (span === undefined || span > rowRestCol) {\n    clone = cloneElement(node, {\n      span: rowRestCol,\n    });\n    warning(\n      span === undefined,\n      'Descriptions',\n      'Sum of column `span` in a line not match `column` of Descriptions.',\n    );\n  }\n\n  return clone;\n}\n\nfunction getRows(children: VNode[], column: number) {\n  const childNodes = flattenChildren(children);\n  const rows: VNode[][] = [];\n\n  let tmpRow: VNode[] = [];\n  let rowRestCol = column;\n  childNodes.forEach((node, index) => {\n    const span: number = node.props?.span;\n    const mergedSpan = span || 1;\n\n    // Additional handle last one\n    if (index === childNodes.length - 1) {\n      tmpRow.push(getFilledItem(node, rowRestCol, span));\n      rows.push(tmpRow);\n      return;\n    }\n\n    if (mergedSpan < rowRestCol) {\n      rowRestCol -= mergedSpan;\n      tmpRow.push(node);\n    } else {\n      tmpRow.push(getFilledItem(node, rowRestCol, mergedSpan));\n      rows.push(tmpRow);\n      rowRestCol = column;\n      tmpRow = [];\n    }\n  });\n\n  return rows;\n}\n\nexport const descriptionsProps = () => ({\n  prefixCls: String,\n  bordered: { type: Boolean, default: undefined },\n  size: { type: String as PropType<'default' | 'middle' | 'small'>, default: 'default' },\n  title: PropTypes.any,\n  extra: PropTypes.any,\n  column: {\n    type: [Number, Object] as PropType<number | Partial<Record<Breakpoint, number>>>,\n    default: (): number | Partial<Record<Breakpoint, number>> => DEFAULT_COLUMN_MAP,\n  },\n  layout: String as PropType<'horizontal' | 'vertical'>,\n  colon: { type: Boolean, default: undefined },\n  labelStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  contentStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n});\n\nexport type DescriptionsProps = HTMLAttributes &\n  Partial<ExtractPropTypes<ReturnType<typeof descriptionsProps>>>;\n\nexport interface DescriptionsContextProp {\n  labelStyle?: Ref<CSSProperties>;\n  contentStyle?: Ref<CSSProperties>;\n}\n\nexport const descriptionsContext: InjectionKey<DescriptionsContextProp> =\n  Symbol('descriptionsContext');\n\nconst Descriptions = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADescriptions',\n  inheritAttrs: false,\n  props: descriptionsProps(),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    extra?: any;\n    default?: any;\n  }>,\n  Item: DescriptionsItem,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('descriptions', props);\n    let token: number;\n    const screens = ref<ScreenMap>({});\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const responsiveObserve = useResponsiveObserve();\n\n    onBeforeMount(() => {\n      token = responsiveObserve.value.subscribe(screen => {\n        if (typeof props.column !== 'object') {\n          return;\n        }\n        screens.value = screen;\n      });\n    });\n\n    onBeforeUnmount(() => {\n      responsiveObserve.value.unsubscribe(token);\n    });\n\n    provide(descriptionsContext, {\n      labelStyle: toRef(props, 'labelStyle'),\n      contentStyle: toRef(props, 'contentStyle'),\n    });\n\n    const mergeColumn = computed(() => getColumn(props.column, screens.value));\n\n    return () => {\n      const {\n        size,\n        bordered = false,\n        layout = 'horizontal',\n        colon = true,\n        title = slots.title?.(),\n        extra = slots.extra?.(),\n      } = props;\n\n      const children = slots.default?.();\n      const rows = getRows(children, mergeColumn.value);\n\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            prefixCls.value,\n            {\n              [`${prefixCls.value}-${size}`]: size !== 'default',\n              [`${prefixCls.value}-bordered`]: !!bordered,\n              [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n            hashId.value,\n          ]}\n        >\n          {(title || extra) && (\n            <div class={`${prefixCls.value}-header`}>\n              {title && <div class={`${prefixCls.value}-title`}>{title}</div>}\n              {extra && <div class={`${prefixCls.value}-extra`}>{extra}</div>}\n            </div>\n          )}\n          <div class={`${prefixCls.value}-view`}>\n            <table>\n              <tbody>\n                {rows.map((row, index) => (\n                  <Row\n                    key={index}\n                    index={index}\n                    colon={colon}\n                    prefixCls={prefixCls.value}\n                    vertical={layout === 'vertical'}\n                    bordered={bordered}\n                    row={row}\n                  />\n                ))}\n              </tbody>\n            </table>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nDescriptions.install = function (app: App) {\n  app.component(Descriptions.name, Descriptions);\n  app.component(Descriptions.Item.name, Descriptions.Item);\n  return app;\n};\nexport default Descriptions as typeof Descriptions &\n  Plugin & {\n    readonly Item: typeof DescriptionsItem;\n  };\n"
  },
  {
    "path": "components/descriptions/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Descriptions\nsubtitle: 描述列表\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*fHdlTpif6XQAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*d27AQJrowGAAAAAAAAAAAAAADrJ8AQ/original\n---\n\n成组展示多个只读字段。\n\n## 何时使用\n\n常见于详情页的信息展示。\n\n## API\n\n### Descriptions props\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |  |\n| --- | --- | --- | --- | --- | --- | --- |\n| bordered | 是否展示边框 | boolean | false |  |  |  |\n| colon | 配置 `Descriptions.Item` 的 `colon` 的默认值 | boolean | true |  |  |  |\n| column | 一行的 `DescriptionItems` 数量，可以写成像素值或支持响应式的对象写法 `{ xs: 8, sm: 16, md: 24}` | number | 3 |  |  |  |\n| contentStyle | 自定义内容样式 | CSSProperties | - | 2.2.0 |  |  |\n| extra | 描述列表的操作区域，显示在右上方 | string \\| VNode \\| slot | - | 2.0.0 |  |  |\n| labelStyle | 自定义标签样式 | CSSProperties | - | 2.2.0 |  |  |\n| layout | 描述布局 | `horizontal` \\| `vertical` | `horizontal` |  |  |\n| size | 设置列表的大小。可以设置为 `middle` 、`small`, 或不填（只有设置 `bordered={true}` 生效） | `default` \\| `middle` \\| `small` | `default` |  |\n| title | 描述列表的标题，显示在最顶部 | string \\| VNode \\| slot | - |  |  |  |\n\n### Item props\n\n| 参数         | 说明           | 类型                    | 默认值 | 版本  |\n| ------------ | -------------- | ----------------------- | ------ | ----- |\n| contentStyle | 自定义内容样式 | CSSProperties           | -      | 2.2.0 |\n| label        | 内容的描述     | string \\| VNode \\| slot | -      |       |\n| labelStyle   | 自定义标签样式 | CSSProperties           | -      | 2.2.0 |\n| span         | 包含列的数量   | number                  | 1      |       |\n\n> span 是 Descriptions.Item 的数量。 span={2} 会占用两个 DescriptionsItem 的宽度。\n"
  },
  {
    "path": "components/descriptions/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\ninterface DescriptionsToken extends FullToken<'Descriptions'> {\n  descriptionsTitleMarginBottom: number;\n  descriptionsExtraColor: string;\n  descriptionItemPaddingBottom: number;\n  descriptionsDefaultPadding: string;\n  descriptionsBg: string;\n  descriptionsMiddlePadding: string;\n  descriptionsSmallPadding: string;\n  descriptionsItemLabelColonMarginRight: number;\n  descriptionsItemLabelColonMarginLeft: number;\n}\n\nconst genBorderedStyle = (token: DescriptionsToken): CSSObject => {\n  const {\n    componentCls,\n    descriptionsSmallPadding,\n    descriptionsDefaultPadding,\n    descriptionsMiddlePadding,\n    descriptionsBg,\n  } = token;\n  return {\n    [`&${componentCls}-bordered`]: {\n      [`${componentCls}-view`]: {\n        border: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n        '> table': {\n          tableLayout: 'auto',\n          borderCollapse: 'collapse',\n        },\n      },\n      [`${componentCls}-item-label, ${componentCls}-item-content`]: {\n        padding: descriptionsDefaultPadding,\n        borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n        '&:last-child': {\n          borderInlineEnd: 'none',\n        },\n      },\n      [`${componentCls}-item-label`]: {\n        backgroundColor: descriptionsBg,\n        '&::after': {\n          display: 'none',\n        },\n      },\n      [`${componentCls}-row`]: {\n        borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n        '&:last-child': {\n          borderBottom: 'none',\n        },\n      },\n      [`&${componentCls}-middle`]: {\n        [`${componentCls}-item-label, ${componentCls}-item-content`]: {\n          padding: descriptionsMiddlePadding,\n        },\n      },\n      [`&${componentCls}-small`]: {\n        [`${componentCls}-item-label, ${componentCls}-item-content`]: {\n          padding: descriptionsSmallPadding,\n        },\n      },\n    },\n  };\n};\n\nconst genDescriptionStyles: GenerateStyle<DescriptionsToken> = (token: DescriptionsToken) => {\n  const {\n    componentCls,\n    descriptionsExtraColor,\n    descriptionItemPaddingBottom,\n    descriptionsItemLabelColonMarginRight,\n    descriptionsItemLabelColonMarginLeft,\n    descriptionsTitleMarginBottom,\n  } = token;\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      ...genBorderedStyle(token),\n      [`&-rtl`]: {\n        direction: 'rtl',\n      },\n      [`${componentCls}-header`]: {\n        display: 'flex',\n        alignItems: 'center',\n        marginBottom: descriptionsTitleMarginBottom,\n      },\n      [`${componentCls}-title`]: {\n        ...textEllipsis,\n        flex: 'auto',\n        color: token.colorText,\n        fontWeight: token.fontWeightStrong,\n        fontSize: token.fontSizeLG,\n        lineHeight: token.lineHeightLG,\n      },\n      [`${componentCls}-extra`]: {\n        marginInlineStart: 'auto',\n        color: descriptionsExtraColor,\n        fontSize: token.fontSize,\n      },\n      [`${componentCls}-view`]: {\n        width: '100%',\n        borderRadius: token.borderRadiusLG,\n        table: {\n          width: '100%',\n          tableLayout: 'fixed',\n        },\n      },\n      [`${componentCls}-row`]: {\n        '> th, > td': {\n          paddingBottom: descriptionItemPaddingBottom,\n        },\n        '&:last-child': {\n          borderBottom: 'none',\n        },\n      },\n      [`${componentCls}-item-label`]: {\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n        lineHeight: token.lineHeight,\n        textAlign: `start`,\n\n        '&::after': {\n          content: '\":\"',\n          position: 'relative',\n          top: -0.5, // magic for position\n          marginInline: `${descriptionsItemLabelColonMarginLeft}px ${descriptionsItemLabelColonMarginRight}px`,\n        },\n\n        [`&${componentCls}-item-no-colon::after`]: {\n          content: '\"\"',\n        },\n      },\n      [`${componentCls}-item-no-label`]: {\n        '&::after': {\n          margin: 0,\n          content: '\"\"',\n        },\n      },\n      [`${componentCls}-item-content`]: {\n        display: 'table-cell',\n        flex: 1,\n        color: token.colorText,\n        fontSize: token.fontSize,\n        lineHeight: token.lineHeight,\n        wordBreak: 'break-word',\n        overflowWrap: 'break-word',\n      },\n      [`${componentCls}-item`]: {\n        paddingBottom: 0,\n        verticalAlign: 'top',\n        '&-container': {\n          display: 'flex',\n          [`${componentCls}-item-label`]: {\n            display: 'inline-flex',\n            alignItems: 'baseline',\n          },\n          [`${componentCls}-item-content`]: {\n            display: 'inline-flex',\n            alignItems: 'baseline',\n          },\n        },\n      },\n      '&-middle': {\n        [`${componentCls}-row`]: {\n          '> th, > td': {\n            paddingBottom: token.paddingSM,\n          },\n        },\n      },\n      '&-small': {\n        [`${componentCls}-row`]: {\n          '> th, > td': {\n            paddingBottom: token.paddingXS,\n          },\n        },\n      },\n    },\n  };\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Descriptions', token => {\n  const descriptionsBg = token.colorFillAlter;\n  const descriptionsTitleMarginBottom = token.fontSizeSM * token.lineHeightSM;\n  const descriptionsExtraColor = token.colorText;\n  const descriptionsSmallPadding = `${token.paddingXS}px ${token.padding}px`;\n  const descriptionsDefaultPadding = `${token.padding}px ${token.paddingLG}px`;\n  const descriptionsMiddlePadding = `${token.paddingSM}px ${token.paddingLG}px`;\n  const descriptionItemPaddingBottom = token.padding;\n  const descriptionsItemLabelColonMarginRight = token.marginXS;\n  const descriptionsItemLabelColonMarginLeft = token.marginXXS / 2;\n\n  const descriptionToken = mergeToken<DescriptionsToken>(token, {\n    descriptionsBg,\n    descriptionsTitleMarginBottom,\n    descriptionsExtraColor,\n    descriptionItemPaddingBottom,\n    descriptionsSmallPadding,\n    descriptionsDefaultPadding,\n    descriptionsMiddlePadding,\n    descriptionsItemLabelColonMarginRight,\n    descriptionsItemLabelColonMarginLeft,\n  });\n\n  return [genDescriptionStyles(descriptionToken)];\n});\n"
  },
  {
    "path": "components/divider/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/divider/demo/customize-style.vue correctly 1`] = `\n<div style=\"height: 2px; background-color: rgb(124, 179, 5);\" class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div style=\"border-color: #7cb305;\" class=\"ant-divider ant-divider-horizontal ant-divider-dashed\" role=\"separator\">\n  <!---->\n</div>\n<div style=\"height: 60px; background-color: rgb(124, 179, 5);\" class=\"ant-divider ant-divider-vertical\" role=\"separator\">\n  <!---->\n</div>\n<div style=\"height: 60px; border-color: #7cb305;\" class=\"ant-divider ant-divider-vertical ant-divider-dashed\" role=\"separator\">\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/divider/demo/horizontal.vue correctly 1`] = `\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-center\" role=\"separator\"><span class=\"ant-divider-inner-text\">With Text</span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-dashed\" role=\"separator\">\n  <!---->\n</div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n`;\n\nexports[`renders ./components/divider/demo/vertical.vue correctly 1`] = `\n<div> Text <div class=\"ant-divider ant-divider-vertical\" role=\"separator\">\n    <!---->\n  </div><a href=\"#\">Link</a>\n  <div class=\"ant-divider ant-divider-vertical\" role=\"separator\">\n    <!---->\n  </div><a href=\"#\">Link</a>\n</div>\n`;\n\nexports[`renders ./components/divider/demo/with-text.vue correctly 1`] = `\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-center\" role=\"separator\"><span class=\"ant-divider-inner-text\">Text</span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Left Text</span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-right\" role=\"separator\"><span class=\"ant-divider-inner-text\">Right Text</span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-no-default-orientation-margin-left ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\" style=\"margin-left: 0px;\"> Left Text with 0 orientationMargin </span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-no-default-orientation-margin-right ant-divider-with-text ant-divider-with-text-right\" role=\"separator\"><span class=\"ant-divider-inner-text\" style=\"margin-right: 50px;\"> Right Text with 50px orientationMargin </span></div>\n<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista probare, quae sunt a te dicta? Refert tamen, quo modo. </p>\n`;\n"
  },
  {
    "path": "components/divider/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('divider');\n"
  },
  {
    "path": "components/divider/__tests__/index.test.js",
    "content": "import Divider from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Divider', () => {\n  mountTest(Divider);\n});\n"
  },
  {
    "path": "components/divider/demo/customize-style.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 样式自定义\n  en-US: Style Customization\n---\n\n## zh-CN\n\n测试一些 `style` 修改样式的行为。\n\n## en-US\n\nUse `style` to change default style.\n</docs>\n\n<template>\n  <a-divider style=\"height: 2px; background-color: #7cb305\" />\n  <a-divider style=\"border-color: #7cb305\" dashed />\n  <a-divider type=\"vertical\" style=\"height: 60px; background-color: #7cb305\" />\n  <a-divider type=\"vertical\" style=\"height: 60px; border-color: #7cb305\" dashed />\n</template>\n"
  },
  {
    "path": "components/divider/demo/horizontal.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 水平分割线\n  en-US: Horizontal\n---\n\n## zh-CN\n\n默认为水平分割线，可在中间加入文字。\n\n## en-US\n\nDivider is `horizontal` by default. You can add text within Divider.\n</docs>\n\n<template>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider />\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider>With Text</a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider dashed />\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n</template>\n"
  },
  {
    "path": "components/divider/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <horizontal />\n    <with-text />\n    <vertical />\n    <customize-style />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Horizontal from './horizontal.vue';\nimport WithText from './with-text.vue';\nimport Vertical from './vertical.vue';\nimport CustomizeStyle from './customize-style.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Horizontal,\n    WithText,\n    Vertical,\n    CustomizeStyle,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/divider/demo/vertical.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 垂直分割线\n  en-US: Vertical\n---\n\n## zh-CN\n\n使用 `type=\"vertical\"` 设置为行内的垂直分割线。\n\n## en-US\n\nUse `type=\"vertical\"` make it vertical.\n</docs>\n\n<template>\n  <div>\n    Text\n    <a-divider type=\"vertical\" />\n    <a href=\"#\">Link</a>\n    <a-divider type=\"vertical\" />\n    <a href=\"#\">Link</a>\n  </div>\n</template>\n"
  },
  {
    "path": "components/divider/demo/with-text.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 带文字的分割线\n  en-US: Divider with title\n---\n\n## zh-CN\n\n分割线中带有文字，可以用 `orientation` 指定文字位置。\n\n## en-US\n\nDivider with inner title, set `orientation=\"left/right\"` to align it.\n</docs>\n\n<template>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider>Text</a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider orientation=\"left\">Left Text</a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider orientation=\"right\">Right Text</a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider orientation=\"left\" orientation-margin=\"0px\">\n    Left Text with 0 orientationMargin\n  </a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n  <a-divider orientation=\"right\" orientation-margin=\"50px\">\n    Right Text with 50px orientationMargin\n  </a-divider>\n  <p>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista\n    probare, quae sunt a te dicta? Refert tamen, quo modo.\n  </p>\n</template>\n"
  },
  {
    "path": "components/divider/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Layout\ntitle: Divider\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*7sMiTbzvaDoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*KPSEQ74PLg4AAAAAAAAAAAAADrJ8AQ/original\n---\n\nA divider line separates different content.\n\n## When To Use\n\n- Divide sections of article.\n- Divide inline text and links such as the operation column of table.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| dashed | whether line is dashed | boolean | false |  |\n| orientation | position of title inside divider | `left` \\| `right` \\| `center` | `center` |  |\n| orientationMargin | The margin-left/right between the title and its closest border, while the `orientation` must be `left` or `right` | string \\| number | - | 3.0 |\n| plain | Divider text show as plain style | boolean | true | 2.2.0 |\n| type | direction type of divider | `horizontal` \\| `vertical` | `horizontal` |  |\n"
  },
  {
    "path": "components/divider/index.tsx",
    "content": "import { flattenChildren } from '../_util/props-util';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport { withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\n\nexport const dividerProps = () => ({\n  prefixCls: String,\n  type: {\n    type: String as PropType<'horizontal' | 'vertical' | ''>,\n    default: 'horizontal',\n  },\n  dashed: {\n    type: Boolean,\n    default: false,\n  },\n  orientation: {\n    type: String as PropType<'left' | 'right' | 'center'>,\n    default: 'center',\n  },\n  plain: {\n    type: Boolean,\n    default: false,\n  },\n  orientationMargin: [String, Number],\n});\nexport type DividerProps = Partial<ExtractPropTypes<ReturnType<typeof dividerProps>>>;\n\nconst Divider = defineComponent({\n  name: 'ADivider',\n  inheritAttrs: false,\n  compatConfig: { MODE: 3 },\n  props: dividerProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls: prefixClsRef, direction } = useConfigInject('divider', props);\n    const [wrapSSR, hashId] = useStyle(prefixClsRef);\n    const hasCustomMarginLeft = computed(\n      () => props.orientation === 'left' && props.orientationMargin != null,\n    );\n    const hasCustomMarginRight = computed(\n      () => props.orientation === 'right' && props.orientationMargin != null,\n    );\n    const classString = computed(() => {\n      const { type, dashed, plain } = props;\n      const prefixCls = prefixClsRef.value;\n      return {\n        [prefixCls]: true,\n        [hashId.value]: !!hashId.value,\n        [`${prefixCls}-${type}`]: true,\n        [`${prefixCls}-dashed`]: !!dashed,\n        [`${prefixCls}-plain`]: !!plain,\n        [`${prefixCls}-rtl`]: direction.value === 'rtl',\n        [`${prefixCls}-no-default-orientation-margin-left`]: hasCustomMarginLeft.value,\n        [`${prefixCls}-no-default-orientation-margin-right`]: hasCustomMarginRight.value,\n      };\n    });\n    const innerStyle = computed(() => {\n      const marginValue =\n        typeof props.orientationMargin === 'number'\n          ? `${props.orientationMargin}px`\n          : props.orientationMargin;\n      return {\n        ...(hasCustomMarginLeft.value && { marginLeft: marginValue }),\n        ...(hasCustomMarginRight.value && { marginRight: marginValue }),\n      };\n    });\n    const orientationPrefix = computed(() =>\n      props.orientation.length > 0 ? '-' + props.orientation : props.orientation,\n    );\n\n    return () => {\n      const children = flattenChildren(slots.default?.());\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            classString.value,\n            children.length\n              ? `${prefixClsRef.value}-with-text ${prefixClsRef.value}-with-text${orientationPrefix.value}`\n              : '',\n            attrs.class,\n          ]}\n          role=\"separator\"\n        >\n          {children.length ? (\n            <span class={`${prefixClsRef.value}-inner-text`} style={innerStyle.value}>\n              {children}\n            </span>\n          ) : null}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Divider);\n"
  },
  {
    "path": "components/divider/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 布局\ntitle: Divider\nsubtitle: 分割线\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*7sMiTbzvaDoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*KPSEQ74PLg4AAAAAAAAAAAAADrJ8AQ/original\n---\n\n区隔内容的分割线。\n\n## 何时使用\n\n- 对不同章节的文本段落进行分割。\n- 对行内文字/链接进行分割，例如表格的操作列。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| dashed | 是否虚线 | boolean | false |  |\n| orientation | 分割线标题的位置 | `left` \\| `right` \\| `center` | `center` |\n| orientationMargin | 标题和最近 left/right 边框之间的距离，去除了分割线，同时 `orientation` 必须为 `left` 或 `right` | string \\| number | - | 3.0 |\n| plain | 文字是否显示为普通正文样式 | boolean | false | 2.2.0 |\n| type | 水平还是垂直类型 | `horizontal` \\| `vertical` | `horizontal` |  |\n"
  },
  {
    "path": "components/divider/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  sizePaddingEdgeHorizontal: number;\n}\n\ninterface DividerToken extends FullToken<'Divider'> {\n  dividerVerticalGutterMargin: number;\n  dividerHorizontalWithTextGutterMargin: number;\n  dividerHorizontalGutterMargin: number;\n}\n\n// ============================== Shared ==============================\nconst genSharedDividerStyle: GenerateStyle<DividerToken> = (token): CSSObject => {\n  const { componentCls, sizePaddingEdgeHorizontal, colorSplit, lineWidth } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      borderBlockStart: `${lineWidth}px solid ${colorSplit}`,\n\n      // vertical\n      '&-vertical': {\n        position: 'relative',\n        top: '-0.06em',\n        display: 'inline-block',\n        height: '0.9em',\n        margin: `0 ${token.dividerVerticalGutterMargin}px`,\n        verticalAlign: 'middle',\n        borderTop: 0,\n        borderInlineStart: `${lineWidth}px solid ${colorSplit}`,\n      },\n\n      '&-horizontal': {\n        display: 'flex',\n        clear: 'both',\n        width: '100%',\n        minWidth: '100%', // Fix https://github.com/ant-design/ant-design/issues/10914\n        margin: `${token.dividerHorizontalGutterMargin}px 0`,\n      },\n\n      [`&-horizontal${componentCls}-with-text`]: {\n        display: 'flex',\n        alignItems: 'center',\n        margin: `${token.dividerHorizontalWithTextGutterMargin}px 0`,\n        color: token.colorTextHeading,\n        fontWeight: 500,\n        fontSize: token.fontSizeLG,\n        whiteSpace: 'nowrap',\n        textAlign: 'center',\n        borderBlockStart: `0 ${colorSplit}`,\n\n        '&::before, &::after': {\n          position: 'relative',\n          width: '50%',\n          borderBlockStart: `${lineWidth}px solid transparent`,\n          // Chrome not accept `inherit` in `border-top`\n          borderBlockStartColor: 'inherit',\n          borderBlockEnd: 0,\n          transform: 'translateY(50%)',\n          content: \"''\",\n        },\n      },\n\n      [`&-horizontal${componentCls}-with-text-left`]: {\n        '&::before': {\n          width: '5%',\n        },\n\n        '&::after': {\n          width: '95%',\n        },\n      },\n\n      [`&-horizontal${componentCls}-with-text-right`]: {\n        '&::before': {\n          width: '95%',\n        },\n\n        '&::after': {\n          width: '5%',\n        },\n      },\n\n      [`${componentCls}-inner-text`]: {\n        display: 'inline-block',\n        padding: '0 1em',\n      },\n\n      '&-dashed': {\n        background: 'none',\n        borderColor: colorSplit,\n        borderStyle: 'dashed',\n        borderWidth: `${lineWidth}px 0 0`,\n      },\n\n      [`&-horizontal${componentCls}-with-text${componentCls}-dashed`]: {\n        '&::before, &::after': {\n          borderStyle: 'dashed none none',\n        },\n      },\n\n      [`&-vertical${componentCls}-dashed`]: {\n        borderInlineStartWidth: lineWidth,\n        borderInlineEnd: 0,\n        borderBlockStart: 0,\n        borderBlockEnd: 0,\n      },\n\n      [`&-plain${componentCls}-with-text`]: {\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n      },\n\n      [`&-horizontal${componentCls}-with-text-left${componentCls}-no-default-orientation-margin-left`]:\n        {\n          '&::before': {\n            width: 0,\n          },\n\n          '&::after': {\n            width: '100%',\n          },\n\n          [`${componentCls}-inner-text`]: {\n            paddingInlineStart: sizePaddingEdgeHorizontal,\n          },\n        },\n\n      [`&-horizontal${componentCls}-with-text-right${componentCls}-no-default-orientation-margin-right`]:\n        {\n          '&::before': {\n            width: '100%',\n          },\n\n          '&::after': {\n            width: 0,\n          },\n\n          [`${componentCls}-inner-text`]: {\n            paddingInlineEnd: sizePaddingEdgeHorizontal,\n          },\n        },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Divider',\n  token => {\n    const dividerToken = mergeToken<DividerToken>(token, {\n      dividerVerticalGutterMargin: token.marginXS,\n      dividerHorizontalWithTextGutterMargin: token.margin,\n      dividerHorizontalGutterMargin: token.marginLG,\n    });\n    return [genSharedDividerStyle(dividerToken)];\n  },\n  {\n    sizePaddingEdgeHorizontal: 0,\n  },\n);\n"
  },
  {
    "path": "components/drawer/__tests__/Drawer.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Drawer from '..';\n\nconst DrawerCom = {\n  props: {\n    visible: {\n      type: Boolean,\n      default: false,\n    },\n    destroyOnClose: {\n      type: Boolean,\n      default: false,\n    },\n    getContainer: {\n      type: Boolean,\n      default: false,\n    },\n    class: {\n      type: String,\n      default: '',\n    },\n  },\n  render() {\n    return <Drawer {...this.$props}>Here is content of Drawer</Drawer>;\n  },\n};\n\ndescribe('Drawer', () => {\n  it('render correctly', async () => {\n    const props = {\n      props: {\n        visible: true,\n        width: 400,\n        getContainer: false,\n      },\n      slots: {\n        default: () => ['Here is content of Drawer'],\n      },\n      sync: false,\n    };\n    const wrapper = mount(Drawer, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render top drawer', async () => {\n    const props = {\n      props: {\n        visible: true,\n        height: 400,\n        placement: 'top',\n        getContainer: false,\n      },\n      slots: {\n        default: () => 'Here is content of Drawer',\n      },\n      sync: false,\n    };\n    const wrapper = mount(Drawer, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('have a title', async () => {\n    const props = {\n      props: {\n        visible: true,\n        title: 'Test Title',\n        getContainer: false,\n      },\n      slots: {\n        default: () => 'Here is content of Drawer',\n      },\n      sync: false,\n    };\n    const wrapper = mount(Drawer, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('closable is false', async () => {\n    const props = {\n      props: {\n        visible: true,\n        closable: false,\n        getContainer: false,\n      },\n      slots: {\n        default: () => 'Here is content of Drawer',\n      },\n      sync: false,\n    };\n    const wrapper = mount(Drawer, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('destroyOnClose is true', async () => {\n    const props = {\n      props: {\n        destroyOnClose: true,\n        closable: false,\n        getContainer: false,\n        visible: true,\n      },\n      slots: {\n        default: () => 'Here is content of Drawer',\n      },\n      sync: false,\n    };\n    const wrapper = mount(Drawer, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('class is test_drawer', async () => {\n    const props = {\n      props: {\n        class: 'test_drawer',\n        visible: true,\n      },\n      sync: false,\n    };\n    const wrapper = mount(DrawerCom, props);\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/drawer/__tests__/DrawerEvent.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Drawer from '..';\nimport Button from '../../button';\nimport { asyncExpect } from '../../../tests/utils';\n\nconst DrawerEventTester = {\n  props: {\n    maskClosable: {\n      type: Boolean,\n      default: true,\n    },\n    destroyOnClose: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      visible: false,\n    };\n  },\n  mounted() {\n    this.$nextTick(() => {\n      this.visible = true;\n    });\n  },\n  methods: {\n    onClose() {\n      this.visible = false;\n    },\n    open() {\n      this.visible = true;\n    },\n  },\n  render() {\n    const drawerProps = {\n      visible: this.visible,\n      getContainer: false,\n      ...this.$props,\n      onClose: this.onClose,\n    };\n    return (\n      <div>\n        <Button onClick={this.open}>open</Button>\n        <Drawer {...drawerProps}>Here is content of Drawer</Drawer>\n      </div>\n    );\n  },\n};\n\ndescribe('Drawer', () => {\n  it('render correctly', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      sync: false,\n    });\n    await asyncExpect(() => {\n      const body = wrapper.find('.ant-drawer-body').exists();\n      expect(body).toBe(true);\n      wrapper.find('.ant-btn').trigger('click');\n      const content = wrapper.find('.ant-drawer-body').element.innerHTML;\n      expect(content).toBe('Here is content of Drawer');\n\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  }, 1000);\n\n  it('mask trigger onClose', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      sync: false,\n    });\n\n    await asyncExpect(() => {\n      wrapper.find('button.ant-btn').trigger('click');\n      expect(wrapper.vm.visible).toBe(true);\n\n      wrapper.find('.ant-drawer-mask').trigger('click');\n      expect(wrapper.vm.visible).toBe(false);\n    });\n  });\n\n  it('close button trigger onClose', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('button.ant-btn').trigger('click');\n      expect(wrapper.vm.visible).toBe(true);\n\n      wrapper.find('.ant-drawer-close').trigger('click');\n      expect(wrapper.vm.visible).toBe(false);\n    });\n  });\n\n  it('maskClosable no trigger onClose', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      props: {\n        maskClosable: false,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('button.ant-btn').trigger('click');\n      expect(wrapper.vm.visible).toBe(true);\n\n      wrapper.find('.ant-drawer-mask').trigger('click');\n      expect(wrapper.vm.visible).toBe(true);\n    });\n  });\n\n  fit('destroyOnClose is true onClose', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      props: {\n        destroyOnClose: true,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('button.ant-btn').trigger('click');\n      expect(wrapper.find('.ant-drawer-wrapper-body').exists()).toBe(true);\n\n      wrapper.vm.visible = false;\n      wrapper\n        .find('.ant-drawer-content-wrapper')\n        .trigger('transitionend', { propertyName: 'transform' });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-drawer-wrapper-body').exists()).toBe(false);\n    });\n  });\n\n  it('no mask and no closable', async () => {\n    const wrapper = mount(DrawerEventTester, {\n      props: {\n        destroyOnClose: true,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('button.ant-btn').trigger('click');\n      expect(wrapper.vm.visible).toBe(true);\n\n      wrapper.find('.ant-drawer-close').trigger('click');\n      expect(wrapper.vm.visible).toBe(false);\n    });\n  });\n});\n"
  },
  {
    "path": "components/drawer/__tests__/MultiDrawer.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Drawer from '..';\nimport Button from '../../button';\nimport { asyncExpect } from '../../../tests/utils';\nexport function $$(className) {\n  return document.body.querySelectorAll(className);\n}\nconst MultiDrawer = {\n  props: {\n    placement: {\n      type: String,\n      default: 'right',\n    },\n  },\n  data() {\n    return {\n      visible: false,\n      childrenDrawer: false,\n    };\n  },\n  methods: {\n    showDrawer() {\n      this.visible = true;\n    },\n    onClose() {\n      this.visible = false;\n    },\n    showChildrenDrawer() {\n      this.childrenDrawer = true;\n    },\n    onChildrenDrawerClose() {\n      this.childrenDrawer = false;\n    },\n  },\n  render() {\n    const drawerProps = {\n      title: 'Multi-level drawer',\n      width: 520,\n      visible: this.visible,\n      getContainer: false,\n      class: 'test_drawer',\n      placement: this.placement,\n      onClose: this.onClose,\n    };\n    const childrenDrawerProps = {\n      title: 'Two-level Drawer',\n      width: 320,\n      class: 'Two-level',\n      visible: this.childrenDrawer,\n      getContainer: false,\n      placement: this.placement,\n      onClose: this.onChildrenDrawerClose,\n    };\n    const buttonProps = {\n      type: 'primary',\n      id: 'open_drawer',\n      onClick: this.showDrawer,\n    };\n    return (\n      <div>\n        <Button {...buttonProps}>open</Button>\n        <Drawer {...drawerProps}>\n          <Button type=\"primary\" id=\"open_two_drawer\" onClick={this.showChildrenDrawer}>\n            Two-level drawer\n          </Button>\n          <Drawer {...childrenDrawerProps}>\n            <div id=\"two_drawer_text\">This is two-level drawer</div>\n          </Drawer>\n          <div\n            style={{\n              position: 'absolute',\n              bottom: 0,\n              width: '100%',\n              borderTop: '1px solid #e8e8e8',\n              padding: '10px 16px',\n              textAlign: 'right',\n              left: 0,\n              background: '#fff',\n              borderRadius: '0 0 4px 4px',\n            }}\n          >\n            <Button\n              style={{\n                marginRight: 8,\n              }}\n              onClick={this.onClose}\n            >\n              Cancel\n            </Button>\n            <Button onClick={this.onClose} type=\"primary\">\n              Submit\n            </Button>\n          </div>\n        </Drawer>\n      </div>\n    );\n  },\n};\n\ndescribe('Drawer', () => {\n  it('render right MultiDrawer', async () => {\n    const wrapper = mount(MultiDrawer, {\n      props: {\n        placement: 'right',\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('#open_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      wrapper.find('#open_two_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      const translateX = wrapper.find('.test_drawer').element.style.transform;\n      expect(translateX).toEqual('translateX(-180px)');\n      expect(wrapper.find('#two_drawer_text').exists()).toBe(true);\n    }, 1000);\n  });\n\n  it('render left MultiDrawer', async () => {\n    document.body.innerHTML = '';\n    const wrapper = mount(MultiDrawer, {\n      props: {\n        placement: 'left',\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('#open_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      wrapper.find('#open_two_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      const translateX = wrapper.find('.test_drawer').element.style.transform;\n      expect(translateX).toEqual('translateX(180px)');\n      expect(wrapper.find('#two_drawer_text').exists()).toBe(true);\n    }, 1000);\n  });\n\n  it('render top MultiDrawer', async () => {\n    const wrapper = mount(MultiDrawer, {\n      props: {\n        placement: 'top',\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      wrapper.find('#open_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      wrapper.find('#open_two_drawer').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      const translateY = wrapper.find('.test_drawer').element.style.transform;\n      expect(translateY).toEqual('translateY(180px)');\n      expect(wrapper.find('#two_drawer_text').exists()).toBe(true);\n    }, 1000);\n  });\n});\n"
  },
  {
    "path": "components/drawer/__tests__/__snapshots__/Drawer.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Drawer class is test_drawer 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 378px; display: none;\">\n    <div class=\"ant-drawer-content test_drawer\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <div class=\"ant-drawer-header ant-drawer-header-close-only\">\n          <div class=\"ant-drawer-header-title\"><button aria-label=\"Close\" class=\"ant-drawer-close\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Drawer closable is false 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 378px; display: none;\">\n    <div class=\"ant-drawer-content\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <!---->\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Drawer destroyOnClose is true 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 378px; display: none;\">\n    <div class=\"ant-drawer-content\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <!---->\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Drawer have a title 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 378px; display: none;\">\n    <div class=\"ant-drawer-content\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <div class=\"ant-drawer-header\">\n          <div class=\"ant-drawer-header-title\"><button aria-label=\"Close\" class=\"ant-drawer-close\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n            <div class=\"ant-drawer-title\">Test Title</div>\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Drawer render correctly 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 400px; display: none;\">\n    <div class=\"ant-drawer-content\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <div class=\"ant-drawer-header ant-drawer-header-close-only\">\n          <div class=\"ant-drawer-header-title\"><button aria-label=\"Close\" class=\"ant-drawer-close\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Drawer render top drawer 1`] = `\n<div tabindex=\"-1\" class=\"ant-drawer ant-drawer-top ant-drawer-inline \">\n  <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n  <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-top-enter ant-drawer-panel-motion-top-enter-prepare ant-drawer-panel-motion-top-enter-start\" style=\"height: 400px; display: none;\">\n    <div class=\"ant-drawer-content\">\n      <div class=\"ant-drawer-wrapper-body\">\n        <div class=\"ant-drawer-header ant-drawer-header-close-only\">\n          <div class=\"ant-drawer-header-title\"><button aria-label=\"Close\" class=\"ant-drawer-close\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n            <!---->\n          </div>\n          <!---->\n        </div>\n        <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/drawer/__tests__/__snapshots__/DrawerEvent.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Drawer render correctly 1`] = `\n<div><button class=\"ant-btn\" type=\"button\" ant-click-animating-without-extra-node=\"false\">\n    <!----><span>open</span>\n  </button>\n  <div class=\"\">\n    <div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right\">\n      <div class=\"ant-drawer-mask\"></div>\n      <div class=\"ant-drawer-content-wrapper\" style=\"transform: translateX(100%); width: 378px;\">\n        <div class=\"ant-drawer-content\">\n          <div class=\"ant-drawer-wrapper-body\">\n            <div class=\"ant-drawer-header ant-drawer-header-close-only\">\n              <div class=\"ant-drawer-header-title\"><button aria-label=\"Close\" class=\"ant-drawer-close\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n                <!---->\n              </div>\n              <!---->\n            </div>\n            <div class=\"ant-drawer-body\">Here is content of Drawer</div>\n            <!---->\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/drawer/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/drawer/demo/basic.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open</span>\n</button>\n`;\n\nexports[`renders ./components/drawer/demo/extra.vue correctly 1`] = `\n<div style=\"margin-right: 8px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"top\"><span class=\"ant-radio-inner\"></span></span><span>top</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"right\"><span class=\"ant-radio-inner\"></span></span><span>right</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"bottom\"><span class=\"ant-radio-inner\"></span></span><span>bottom</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"left\"><span class=\"ant-radio-inner\"></span></span><span>left</span></label></div>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open</span>\n</button>\n`;\n\nexports[`renders ./components/drawer/demo/form-in-drawer.vue correctly 1`] = `<button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span><span>New account</span></button>`;\n\nexports[`renders ./components/drawer/demo/multi-level-drawer.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open</span>\n</button>\n`;\n\nexports[`renders ./components/drawer/demo/placement.vue correctly 1`] = `\n<div style=\"margin-right: 8px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"top\"><span class=\"ant-radio-inner\"></span></span><span>top</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"right\"><span class=\"ant-radio-inner\"></span></span><span>right</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"bottom\"><span class=\"ant-radio-inner\"></span></span><span>bottom</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"left\"><span class=\"ant-radio-inner\"></span></span><span>left</span></label></div>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open</span>\n</button>\n`;\n\nexports[`renders ./components/drawer/demo/render-in-current.vue correctly 1`] = `\n<div style=\"height: 200px; overflow: hidden; position: relative; border: 1px solid #ebedf0; border-radius: 2px; padding: 48px; text-align: center; background: rgb(250, 250, 250); width: 100%;\"> Render in this <div style=\"margin-top: 16px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Open</span>\n    </button></div>\n  <div tabindex=\"-1\" class=\"ant-drawer ant-drawer-right ant-drawer-inline \">\n    <div class=\"ant-drawer-mask ant-drawer-mask-motion-enter ant-drawer-mask-motion-enter-prepare ant-drawer-mask-motion-enter-start\" style=\"display: none;\"></div>\n    <div class=\"ant-drawer-content-wrapper ant-drawer-panel-motion-right-enter ant-drawer-panel-motion-right-enter-prepare ant-drawer-panel-motion-right-enter-start\" style=\"width: 378px; display: none;\">\n      <div class=\"ant-drawer-content\" style=\"position: absolute;\">\n        <div class=\"ant-drawer-wrapper-body\">\n          <div class=\"ant-drawer-header\">\n            <div class=\"ant-drawer-header-title\">\n              <!---->\n              <div class=\"ant-drawer-title\">Basic Drawer</div>\n            </div>\n            <!---->\n          </div>\n          <div class=\"ant-drawer-body\">\n            <p>Some contents...</p>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/drawer/demo/size.vue correctly 1`] = `\n<button style=\"margin-right: 8px;\" class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open Default Size (378px)</span>\n</button>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open Large Size (736px)</span>\n</button>\n`;\n\nexports[`renders ./components/drawer/demo/user-profile.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split ant-list-bordered\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Lily</a></h4>\n              <div class=\"ant-list-item-meta-description\">Progresser XTech</div>\n            </div>\n          </div>\n          <ul class=\"ant-list-item-action\">\n            <li><a>View Profile</a>\n              <!---->\n            </li>\n          </ul>\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Lily</a></h4>\n              <div class=\"ant-list-item-meta-description\">Progresser XTech</div>\n            </div>\n          </div>\n          <ul class=\"ant-list-item-action\">\n            <li><a>View Profile</a>\n              <!---->\n            </li>\n          </ul>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/drawer/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('drawer');\n"
  },
  {
    "path": "components/drawer/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n基础抽屉，点击触发按钮抽屉从右滑出，点击遮罩区关闭。\n\n## en-US\n\nBasic drawer.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"showDrawer\">Open</a-button>\n  <a-drawer\n    v-model:open=\"open\"\n    class=\"custom-class\"\n    root-class-name=\"root-class-name\"\n    :root-style=\"{ color: 'blue' }\"\n    style=\"color: red\"\n    title=\"Basic Drawer\"\n    placement=\"right\"\n    @after-open-change=\"afterOpenChange\"\n  >\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst open = ref<boolean>(false);\n\nconst afterOpenChange = (bool: boolean) => {\n  console.log('open', bool);\n};\n\nconst showDrawer = () => {\n  open.value = true;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/descriptionItem/index.vue",
    "content": "<template>\n  <div style=\"font-size: 14px; line-height: 22px; margin-bottom: 7px; color: rgba(0, 0, 0, 0.65)\">\n    <p style=\"margin-right: 8px; display: inline-block; color: rgba(0, 0, 0, 0.85)\">\n      {{ title }}：\n    </p>\n    <template v-if=\"content\">\n      {{ content }}\n    </template>\n    <slot v-else name=\"content\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\ninterface Props {\n  title: string;\n  content?: string;\n}\ndefineProps<Props>();\n</script>\n"
  },
  {
    "path": "components/drawer/demo/extra.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 额外操作\n  en-US: Extra Actions\n---\n\n## zh-CN\n\n在 Ant Design 规范中，操作按钮建议放在抽屉的右上角，可以使用 extra 属性来实现。\n\n## en-US\n\nExtra actions should be placed at corner of drawer in Ant Design, you can using `extra` prop for that.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\" style=\"margin-right: 8px\">\n    <a-radio value=\"top\">top</a-radio>\n    <a-radio value=\"right\">right</a-radio>\n    <a-radio value=\"bottom\">bottom</a-radio>\n    <a-radio value=\"left\">left</a-radio>\n  </a-radio-group>\n  <a-button type=\"primary\" @click=\"showDrawer\">Open</a-button>\n  <a-drawer :width=\"500\" title=\"Basic Drawer\" :placement=\"placement\" :open=\"open\" @close=\"onClose\">\n    <template #extra>\n      <a-button style=\"margin-right: 8px\" @click=\"onClose\">Cancel</a-button>\n      <a-button type=\"primary\" @click=\"onClose\">Submit</a-button>\n    </template>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { DrawerProps } from 'ant-design-vue';\nconst placement = ref<DrawerProps['placement']>('left');\nconst open = ref<boolean>(false);\n\nconst showDrawer = () => {\n  open.value = true;\n};\n\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/form-in-drawer.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 抽屉表单\n  en-US: Submit form in drawer\n---\n\n## zh-CN\n\n在抽屉中使用表单。\n\n## en-US\n\nUse form in drawer with submit button.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"showDrawer\">\n    <template #icon><PlusOutlined /></template>\n    New account\n  </a-button>\n  <a-drawer\n    title=\"Create a new account\"\n    :width=\"720\"\n    :open=\"open\"\n    :body-style=\"{ paddingBottom: '80px' }\"\n    :footer-style=\"{ textAlign: 'right' }\"\n    @close=\"onClose\"\n  >\n    <a-form :model=\"form\" :rules=\"rules\" layout=\"vertical\">\n      <a-row :gutter=\"16\">\n        <a-col :span=\"12\">\n          <a-form-item label=\"Name\" name=\"name\">\n            <a-input v-model:value=\"form.name\" placeholder=\"Please enter user name\" />\n          </a-form-item>\n        </a-col>\n        <a-col :span=\"12\">\n          <a-form-item label=\"Url\" name=\"url\">\n            <a-input\n              v-model:value=\"form.url\"\n              style=\"width: 100%\"\n              addon-before=\"http://\"\n              addon-after=\".com\"\n              placeholder=\"please enter url\"\n            />\n          </a-form-item>\n        </a-col>\n      </a-row>\n      <a-row :gutter=\"16\">\n        <a-col :span=\"12\">\n          <a-form-item label=\"Owner\" name=\"owner\">\n            <a-select v-model:value=\"form.owner\" placeholder=\"Please a-s an owner\">\n              <a-select-option value=\"xiao\">Xiaoxiao Fu</a-select-option>\n              <a-select-option value=\"mao\">Maomao Zhou</a-select-option>\n            </a-select>\n          </a-form-item>\n        </a-col>\n        <a-col :span=\"12\">\n          <a-form-item label=\"Type\" name=\"type\">\n            <a-select v-model:value=\"form.type\" placeholder=\"Please choose the type\">\n              <a-select-option value=\"private\">Private</a-select-option>\n              <a-select-option value=\"public\">Public</a-select-option>\n            </a-select>\n          </a-form-item>\n        </a-col>\n      </a-row>\n      <a-row :gutter=\"16\">\n        <a-col :span=\"12\">\n          <a-form-item label=\"Approver\" name=\"approver\">\n            <a-select v-model:value=\"form.approver\" placeholder=\"Please choose the approver\">\n              <a-select-option value=\"jack\">Jack Ma</a-select-option>\n              <a-select-option value=\"tom\">Tom Liu</a-select-option>\n            </a-select>\n          </a-form-item>\n        </a-col>\n        <a-col :span=\"12\">\n          <a-form-item label=\"DateTime\" name=\"dateTime\">\n            <a-date-picker\n              v-model:value=\"form.dateTime\"\n              style=\"width: 100%\"\n              :get-popup-container=\"trigger => trigger.parentElement\"\n            />\n          </a-form-item>\n        </a-col>\n      </a-row>\n      <a-row :gutter=\"16\">\n        <a-col :span=\"24\">\n          <a-form-item label=\"Description\" name=\"description\">\n            <a-textarea\n              v-model:value=\"form.description\"\n              :rows=\"4\"\n              placeholder=\"please enter url description\"\n            />\n          </a-form-item>\n        </a-col>\n      </a-row>\n    </a-form>\n    <template #extra>\n      <a-space>\n        <a-button @click=\"onClose\">Cancel</a-button>\n        <a-button type=\"primary\" @click=\"onClose\">Submit</a-button>\n      </a-space>\n    </template>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport { PlusOutlined } from '@ant-design/icons-vue';\nimport type { Rule } from 'ant-design-vue/es/form';\nconst form = reactive({\n  name: '',\n  url: '',\n  owner: '',\n  type: '',\n  approver: '',\n  dateTime: null,\n  description: '',\n});\n\nconst rules: Record<string, Rule[]> = {\n  name: [{ required: true, message: 'Please enter user name' }],\n  url: [{ required: true, message: 'please enter url' }],\n  owner: [{ required: true, message: 'Please select an owner' }],\n  type: [{ required: true, message: 'Please choose the type' }],\n  approver: [{ required: true, message: 'Please choose the approver' }],\n  dateTime: [{ required: true, message: 'Please choose the dateTime', type: 'object' }],\n  description: [{ required: true, message: 'Please enter url description' }],\n};\n\nconst open = ref<boolean>(false);\n\nconst showDrawer = () => {\n  open.value = true;\n};\n\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <extra />\n    <placement />\n    <render-in-current />\n    <form-in-drawer />\n    <multi-level-drawer />\n    <user-profile />\n    <size />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Extra from './extra.vue';\nimport Placement from './placement.vue';\nimport UserProfile from './user-profile.vue';\nimport MultiLevelDrawer from './multi-level-drawer.vue';\nimport FormInDrawer from './form-in-drawer.vue';\nimport RenderInCurrent from './render-in-current.vue';\nimport Size from './size.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Extra,\n    Placement,\n    UserProfile,\n    MultiLevelDrawer,\n    FormInDrawer,\n    RenderInCurrent,\n    Size,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/drawer/demo/multi-level-drawer.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 多层抽屉\n  en-US: Multi-level drawer\n---\n\n## zh-CN\n\n在抽屉内打开新的抽屉，用以解决多分支任务的复杂状况。\n\n## en-US\n\nOpen a new drawer on top of an existing drawer to handle multi branch tasks.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"showDrawer\">Open</a-button>\n  <a-drawer\n    v-model:open=\"open\"\n    title=\"Multi-level drawer\"\n    width=\"520\"\n    :closable=\"false\"\n    :footer-style=\"{ textAlign: 'right' }\"\n    @close=\"onClose\"\n  >\n    <a-button type=\"primary\" @click=\"showChildrenDrawer\">Two-level drawer</a-button>\n    <a-drawer v-model:open=\"childrenDrawer\" title=\"Two-level Drawer\" width=\"320\" :closable=\"false\">\n      <a-button type=\"primary\" @click=\"showChildrenDrawer\">This is two-level drawer</a-button>\n    </a-drawer>\n\n    <template #footer>\n      <a-button style=\"margin-right: 8px\" @click=\"onClose\">Cancel</a-button>\n      <a-button type=\"primary\" @click=\"onClose\">Submit</a-button>\n    </template>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst open = ref<boolean>(false);\n\nconst childrenDrawer = ref<boolean>(false);\n\nconst showDrawer = () => {\n  open.value = true;\n};\nconst onClose = () => {\n  open.value = false;\n};\nconst showChildrenDrawer = () => {\n  childrenDrawer.value = true;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/placement.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 自定义位置\n  en-US: Custom Placement\n---\n\n## zh-CN\n\n自定义位置，点击触发按钮抽屉从相应的位置滑出，点击遮罩区关闭\n\n## en-US\n\nThe Drawer can appear from any edge of the screen.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\" style=\"margin-right: 8px\">\n    <a-radio value=\"top\">top</a-radio>\n    <a-radio value=\"right\">right</a-radio>\n    <a-radio value=\"bottom\">bottom</a-radio>\n    <a-radio value=\"left\">left</a-radio>\n  </a-radio-group>\n  <a-button type=\"primary\" @click=\"showDrawer\">Open</a-button>\n  <a-drawer\n    title=\"Basic Drawer\"\n    :placement=\"placement\"\n    :closable=\"false\"\n    :open=\"open\"\n    @close=\"onClose\"\n  >\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { DrawerProps } from 'ant-design-vue';\nconst placement = ref<DrawerProps['placement']>('left');\nconst open = ref<boolean>(false);\n\nconst showDrawer = () => {\n  open.value = true;\n};\n\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/render-in-current.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 渲染在当前 DOM\n  en-US: Render in current dom\n---\n\n## zh-CN\n\n渲染在当前 dom 里。自定义容器，查看 `getContainer`。\n\n## en-US\n\nRender in current dom. custom container, check `getContainer`.\n\n</docs>\n\n<template>\n  <div\n    :style=\"{\n      height: '200px',\n      overflow: 'hidden',\n      position: 'relative',\n      border: '1px solid #ebedf0',\n      borderRadius: '2px',\n      padding: '48px',\n      textAlign: 'center',\n      background: '#fafafa',\n    }\"\n  >\n    Render in this\n    <div style=\"margin-top: 16px\">\n      <a-button type=\"primary\" @click=\"showDrawer\">Open</a-button>\n    </div>\n    <a-drawer\n      title=\"Basic Drawer\"\n      placement=\"right\"\n      :closable=\"false\"\n      :open=\"open\"\n      :get-container=\"false\"\n      :style=\"{ position: 'absolute' }\"\n      @close=\"onClose\"\n    >\n      <p>Some contents...</p>\n    </a-drawer>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst open = ref(false);\n\nconst showDrawer = () => {\n  open.value = true;\n};\n\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/size.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 预设宽度\n  en-US: Presetted size\n---\n\n## zh-CN\n\n抽屉的默认宽度为 `378px`，另外还提供一个大号抽屉 `736px`，可以用 size 属性来设置。\n\n## en-US\n\nThe default width (or height) of Drawer is `378px`, and there is a presetted large size `736px`.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" style=\"margin-right: 8px\" @click=\"showDrawer('default')\">\n    Open Default Size (378px)\n  </a-button>\n  <a-button type=\"primary\" @click=\"showDrawer('large')\">Open Large Size (736px)</a-button>\n  <a-drawer title=\"Basic Drawer\" :size=\"size\" :open=\"open\" @close=\"onClose\">\n    <template #extra>\n      <a-button style=\"margin-right: 8px\" @click=\"onClose\">Cancel</a-button>\n      <a-button type=\"primary\" @click=\"onClose\">Submit</a-button>\n    </template>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n    <p>Some contents...</p>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { DrawerProps } from 'ant-design-vue';\nconst open = ref<boolean>(false);\nconst size = ref<DrawerProps['size']>('default');\n\nconst showDrawer = (val: DrawerProps['size']) => {\n  size.value = val;\n  open.value = true;\n};\n\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/demo/user-profile.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 信息预览抽屉\n  en-US: Preview drawer\n---\n\n## zh-CN\n\n需要快速预览对象概要时使用，点击遮罩区关闭。\n\n## en-US\n\nUse Drawer to quickly preview details of an object, such as those in a list.\n\n</docs>\n\n<template>\n  <a-list\n    :data-source=\"[\n      {\n        name: 'Lily',\n      },\n      {\n        name: 'Lily',\n      },\n    ]\"\n    bordered\n  >\n    <template #renderItem=\"{ item }\">\n      <a-list-item :key=\"`a-${item.id}`\">\n        <template #actions><a @click=\"showDrawer\">View Profile</a></template>\n        <a-list-item-meta description=\"Progresser XTech\">\n          <template #title>\n            <a href=\"https://www.antdv.com/\">{{ item.name }}</a>\n          </template>\n          <template #avatar>\n            <a-avatar src=\"https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png\" />\n          </template>\n        </a-list-item-meta>\n      </a-list-item>\n    </template>\n  </a-list>\n  <a-drawer width=\"640\" placement=\"right\" :closable=\"false\" :open=\"open\" @close=\"onClose\">\n    <p :style=\"[pStyle, pStyle2]\">User Profile</p>\n    <p :style=\"pStyle\">Personal</p>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"Full Name\" content=\"Lily\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Account\" content=\"AntDesign@example.com\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"City\" content=\"HangZhou\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Country\" content=\"China🇨🇳\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"Birthday\" content=\"February 2,1900\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Website\" content=\"-\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item\n          title=\"Message\"\n          content=\"Make things as simple as possible but no simpler.\"\n        />\n      </a-col>\n    </a-row>\n    <a-divider />\n    <p :style=\"pStyle\">Company</p>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"Position\" content=\"Programmer\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Responsibilities\" content=\"Coding\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"Department\" content=\"XTech\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Supervisor\">\n          <template #content><a>Lin</a></template>\n        </description-item>\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"24\">\n        <description-item\n          title=\"Skills\"\n          content=\"C / C + +, data structures, software engineering, operating systems, computer networks, databases, compiler theory, computer architecture, Microcomputer Principle and Interface Technology, Computer English, Java, ASP, etc.\"\n        />\n      </a-col>\n    </a-row>\n    <a-divider />\n    <p :style=\"pStyle\">Contacts</p>\n    <a-row>\n      <a-col :span=\"12\">\n        <description-item title=\"Email\" content=\"ant-design-vue@example.com\" />\n      </a-col>\n      <a-col :span=\"12\">\n        <description-item title=\"Phone Number\" content=\"+86 181 0000 0000\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"24\">\n        <description-item title=\"Github\">\n          <template #content>\n            <a href=\"https://github.com/vueComponent/ant-design-vue\">\n              github.com/vueComponent/ant-design-vue\n            </a>\n          </template>\n        </description-item>\n      </a-col>\n    </a-row>\n  </a-drawer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport descriptionItem from './descriptionItem/index.vue';\nconst open = ref<boolean>(false);\nconst pStyle = {\n  fontSize: '16px',\n  color: 'rgba(0,0,0,0.85)',\n  lineHeight: '24px',\n  display: 'block',\n  marginBottom: '16px',\n};\nconst pStyle2 = {\n  marginBottom: '24px',\n};\n\nconst showDrawer = () => {\n  open.value = true;\n};\nconst onClose = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/drawer/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Drawer\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*v3TvSq2E0HAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*4wzwRIBLuqEAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA panel which slides in from the edge of the screen.\n\n## When To Use\n\nA Drawer is a panel that is typically overlaid on top of a page and slides in from the side. It contains a set of information or actions. Since the user can interact with the Drawer without leaving the current page, tasks can be achieved more efficiently within the same context.\n\n- Use a Form to create or edit a set of information.\n- Processing subtasks. When subtasks are too heavy for a Popover and we still want to keep the subtasks in the context of the main task, Drawer comes very handy.\n- When the same Form is needed in multiple places.\n\n## API\n\n**🚨 Note:** v4 use `rootClassName` & `rootStyle` to config wrapper style instead of `class` & `style` in v4 to align the API with Modal.\n\n| Props | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autofocus | Whether Drawer should get focused after open | boolean | true | 3.0.0 |\n| bodyStyle | Style of the drawer content part | CSSProperties | - |  |\n| class | Config Drawer Panel className. Use `rootClassName` if want to config top dom style | string | - |  |\n| closable | Whether a close (x) button is visible on top left of the Drawer dialog or not | boolean | true |  |\n| closeIcon | Custom close icon | VNode \\| slot | `<CloseOutlined />` | 3.0.0 |\n| contentWrapperStyle | Style of the drawer wrapper of content part | CSSProperties | - | 3.0.0 |\n| destroyOnClose | Whether to unmount child components on closing drawer or not | boolean | false |  |\n| extra | Extra actions area at corner | VNode \\| slot | - | 3.0.0 |\n| footer | The footer for Drawer | VNode \\| slot | - | 3.0.0 |\n| footerStyle | Style of the drawer footer part | CSSProperties | - | 3.0.0 |\n| forceRender | Prerender Drawer component forcely | boolean | false | 3.0.0 |\n| getContainer | mounted node and display window for Drawer | HTMLElement \\| `() => HTMLElement` \\| Selectors | 'body' |  |\n| headerStyle | Style of the drawer header part | CSSProperties | - | 3.0.0 |\n| height | Placement is `top` or `bottom`, height of the Drawer dialog | string \\| number | 378 |  |\n| keyboard | Whether support press esc to close | boolean | true |  |\n| mask | Whether to show mask or not | Boolean | true |  |\n| maskClosable | Clicking on the mask (area outside the Drawer) to close the Drawer or not | boolean | true |  |\n| maskStyle | Style for Drawer's mask element | CSSProperties | {} |  |\n| placement | The placement of the Drawer | 'top' \\| 'right' \\| 'bottom' \\| 'left' | 'right' |  |\n| push | Nested drawers push behavior | boolean \\| {distance: string \\| number} | { distance: 180 } | 3.0.0 |\n| rootClassName | The class name of the container of the Drawer dialog | string | - | 4.0 |\n| rootStyle | Style of wrapper element which **contains mask** compare to `style` | CSSProperties | - | 4.0 |\n| style | Style of Drawer panel. Use `bodyStyle` if want to config body only | CSSProperties | - |  |\n| size | presetted size of drawer, default `378px` and large `736px` | `default` \\| `large` | `default` | 3.0.0 |\n| style | Style of wrapper element which contains mask compare to drawerStyle | CSSProperties | - |  |\n| title | The title for Drawer | string \\| slot | - |  |\n| open(v-model) | Whether the Drawer dialog is visible or not | boolean | - | 4.0 |\n| width | Width of the Drawer dialog | string \\| number | 378 |  |\n| zIndex | The `z-index` of the Drawer | Number | 1000 |  |\n\n## Events\n\n| Events Name | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| afterOpenChange | Callback after the animation ends when switching drawers. | function(open) | - | 4.0 |\n| close | Specify a callback that will be called when a user clicks mask, close button or Cancel button. | function(e) | - |  |\n"
  },
  {
    "path": "components/drawer/index.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport {\n  inject,\n  nextTick,\n  defineComponent,\n  shallowRef,\n  onMounted,\n  provide,\n  onUnmounted,\n  watch,\n  computed,\n} from 'vue';\nimport { getPropsSlot, initDefaultProps } from '../_util/props-util';\nimport classnames from '../_util/classNames';\nimport VcDrawer from '../vc-drawer';\nimport PropTypes from '../_util/vue-types';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { objectType, withInstall } from '../_util/type';\nimport type { CustomSlotsType } from '../_util/type';\nimport omit from '../_util/omit';\nimport devWarning from '../vc-util/devWarning';\nimport type { KeyboardEventHandler, MouseEventHandler } from '../_util/EventInterface';\nimport useStyle from './style';\nimport { NoCompactStyle } from '../space/Compact';\n\nimport isNumeric from '../_util/isNumeric';\nimport { getTransitionName, getTransitionProps } from '../_util/transition';\n\ntype ILevelMove = number | [number, number];\n\nconst PlacementTypes = ['top', 'right', 'bottom', 'left'] as const;\nexport type placementType = (typeof PlacementTypes)[number];\n\nconst SizeTypes = ['default', 'large'] as const;\nexport type sizeType = (typeof SizeTypes)[number];\n\nexport interface PushState {\n  distance: string | number;\n}\n\nconst defaultPushState: PushState = { distance: 180 };\ntype getContainerFunc = () => HTMLElement;\nexport const drawerProps = () => ({\n  autofocus: { type: Boolean, default: undefined },\n  closable: { type: Boolean, default: undefined },\n  closeIcon: PropTypes.any,\n  destroyOnClose: { type: Boolean, default: undefined },\n  forceRender: { type: Boolean, default: undefined },\n  getContainer: {\n    type: [String, Function, Boolean, Object] as PropType<\n      string | HTMLElement | getContainerFunc | false\n    >,\n    default: undefined as string | HTMLElement | getContainerFunc | false,\n  },\n  maskClosable: { type: Boolean, default: undefined },\n  mask: { type: Boolean, default: undefined },\n  maskStyle: objectType<CSSProperties>(),\n  rootClassName: String,\n  rootStyle: objectType<CSSProperties>(),\n  size: {\n    type: String as PropType<sizeType>,\n  },\n  drawerStyle: objectType<CSSProperties>(),\n  headerStyle: objectType<CSSProperties>(),\n  bodyStyle: objectType<CSSProperties>(),\n  contentWrapperStyle: {\n    type: Object as PropType<CSSProperties>,\n    default: undefined as CSSProperties,\n  },\n  title: PropTypes.any,\n  /** @deprecated Please use `open` instead */\n  visible: { type: Boolean, default: undefined },\n  open: { type: Boolean, default: undefined },\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  zIndex: Number,\n  prefixCls: String,\n  push: PropTypes.oneOfType([PropTypes.looseBool, { type: Object as PropType<PushState> }]),\n  placement: PropTypes.oneOf(PlacementTypes),\n  keyboard: { type: Boolean, default: undefined },\n  extra: PropTypes.any,\n  footer: PropTypes.any,\n  footerStyle: objectType<CSSProperties>(),\n  level: PropTypes.any,\n  levelMove: {\n    type: [Number, Array, Function] as PropType<\n      ILevelMove | ((e: { target: HTMLElement; open: boolean }) => ILevelMove)\n    >,\n  },\n  handle: PropTypes.any,\n  /** @deprecated Use `@afterVisibleChange` instead */\n  afterVisibleChange: Function as PropType<(visible: boolean) => void>,\n  /** @deprecated Please use `@afterOpenChange` instead */\n  onAfterVisibleChange: Function as PropType<(visible: boolean) => void>,\n  onAfterOpenChange: Function as PropType<(open: boolean) => void>,\n  /** @deprecated Please use `onUpdate:open` instead */\n  'onUpdate:visible': Function as PropType<(visible: boolean) => void>,\n  'onUpdate:open': Function as PropType<(open: boolean) => void>,\n  onClose: Function as PropType<MouseEventHandler | KeyboardEventHandler>,\n});\n\nexport type DrawerProps = Partial<ExtractPropTypes<ReturnType<typeof drawerProps>>>;\n\nconst Drawer = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADrawer',\n  inheritAttrs: false,\n  props: initDefaultProps(drawerProps(), {\n    closable: true,\n    placement: 'right',\n    maskClosable: true,\n    mask: true,\n    level: null,\n    keyboard: true,\n    push: defaultPushState,\n  }),\n  slots: Object as CustomSlotsType<{\n    closeIcon: any;\n    title: any;\n    extra: any;\n    footer: any;\n    handle: any;\n    default: any;\n  }>,\n  // emits: ['update:visible', 'close', 'afterVisibleChange'],\n  setup(props, { emit, slots, attrs }) {\n    const sPush = shallowRef(false);\n    const destroyClose = shallowRef(false);\n    const vcDrawer = shallowRef(null);\n    const load = shallowRef(false);\n    const visible = shallowRef(false);\n    const mergedOpen = computed(() => props.open ?? props.visible);\n    watch(\n      mergedOpen,\n      () => {\n        if (mergedOpen.value) {\n          load.value = true;\n        } else {\n          visible.value = false;\n        }\n      },\n      { immediate: true },\n    );\n    watch(\n      [mergedOpen, load],\n      () => {\n        if (mergedOpen.value && load.value) {\n          visible.value = true;\n        }\n      },\n      { immediate: true },\n    );\n    const parentDrawerOpts = inject('parentDrawerOpts', null);\n    const { prefixCls, getPopupContainer, direction } = useConfigInject('drawer', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const getContainer = computed(() =>\n      // 有可能为 false，所以不能直接判断\n      props.getContainer === undefined && getPopupContainer?.value\n        ? () => getPopupContainer.value(document.body)\n        : props.getContainer,\n    );\n\n    devWarning(\n      !props.afterVisibleChange,\n      'Drawer',\n      '`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead',\n    );\n    // ========================== Warning ===========================\n    if (process.env.NODE_ENV !== 'production') {\n      [\n        ['visible', 'open'],\n        ['onUpdate:visible', 'onUpdate:open'],\n        ['onAfterVisibleChange', 'onAfterOpenChange'],\n      ].forEach(([deprecatedName, newName]) => {\n        devWarning(\n          !props[deprecatedName],\n          'Drawer',\n          `\\`${deprecatedName}\\` is deprecated, please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n\n    const setPush = () => {\n      sPush.value = true;\n    };\n\n    const setPull = () => {\n      sPush.value = false;\n      nextTick(() => {\n        domFocus();\n      });\n    };\n    provide('parentDrawerOpts', {\n      setPush,\n      setPull,\n    });\n\n    onMounted(() => {\n      if (mergedOpen.value && parentDrawerOpts) {\n        parentDrawerOpts.setPush();\n      }\n    });\n\n    onUnmounted(() => {\n      if (parentDrawerOpts) {\n        parentDrawerOpts.setPull();\n      }\n    });\n\n    watch(\n      visible,\n      () => {\n        if (parentDrawerOpts) {\n          if (visible.value) {\n            parentDrawerOpts.setPush();\n          } else {\n            parentDrawerOpts.setPull();\n          }\n        }\n      },\n      { flush: 'post' },\n    );\n\n    const domFocus = () => {\n      vcDrawer.value?.domFocus?.();\n    };\n\n    const close = (e: Event) => {\n      emit('update:visible', false);\n      emit('update:open', false);\n      emit('close', e);\n    };\n\n    const afterVisibleChange = (open: boolean) => {\n      if (!open) {\n        if (destroyClose.value === false) {\n          // set true only once\n          destroyClose.value = true;\n        }\n        if (props.destroyOnClose) {\n          load.value = false;\n        }\n      }\n      props.afterVisibleChange?.(open);\n      emit('afterVisibleChange', open);\n      emit('afterOpenChange', open);\n    };\n\n    const pushTransform = computed(() => {\n      const { push, placement } = props;\n      let distance: number | string;\n      if (typeof push === 'boolean') {\n        distance = push ? defaultPushState.distance : 0;\n      } else {\n        distance = push!.distance;\n      }\n\n      distance = parseFloat(String(distance || 0));\n\n      if (placement === 'left' || placement === 'right') {\n        return `translateX(${placement === 'left' ? distance : -distance}px)`;\n      }\n      if (placement === 'top' || placement === 'bottom') {\n        return `translateY(${placement === 'top' ? distance : -distance}px)`;\n      }\n      return null;\n    });\n    // ============================ Size ============================\n    const mergedWidth = computed(() => props.width ?? (props.size === 'large' ? 736 : 378));\n    const mergedHeight = computed(() => props.height ?? (props.size === 'large' ? 736 : 378));\n    const offsetStyle = computed(() => {\n      // https://github.com/ant-design/ant-design/issues/24287\n      const { mask, placement } = props;\n      if (!visible.value && !mask) {\n        return {};\n      }\n      const val: CSSProperties = {};\n      if (placement === 'left' || placement === 'right') {\n        val.width = isNumeric(mergedWidth.value) ? `${mergedWidth.value}px` : mergedWidth.value;\n      } else {\n        val.height = isNumeric(mergedHeight.value) ? `${mergedHeight.value}px` : mergedHeight.value;\n      }\n      return val;\n    });\n\n    const wrapperStyle = computed(() => {\n      const { zIndex, contentWrapperStyle } = props;\n      const val = offsetStyle.value;\n      return [\n        { zIndex, transform: sPush.value ? pushTransform.value : undefined },\n        { ...contentWrapperStyle },\n        val,\n      ];\n    });\n\n    const renderHeader = (prefixCls: string) => {\n      const { closable, headerStyle } = props;\n      const extra = getPropsSlot(slots, props, 'extra');\n      const title = getPropsSlot(slots, props, 'title');\n      if (!title && !closable) {\n        return null;\n      }\n\n      return (\n        <div\n          class={classnames(`${prefixCls}-header`, {\n            [`${prefixCls}-header-close-only`]: closable && !title && !extra,\n          })}\n          style={headerStyle}\n        >\n          <div class={`${prefixCls}-header-title`}>\n            {renderCloseIcon(prefixCls)}\n            {title && <div class={`${prefixCls}-title`}>{title}</div>}\n          </div>\n          {extra && <div class={`${prefixCls}-extra`}>{extra}</div>}\n        </div>\n      );\n    };\n\n    const renderCloseIcon = (prefixCls: string) => {\n      const { closable } = props;\n      const $closeIcon = slots.closeIcon ? slots.closeIcon?.() : props.closeIcon;\n      return (\n        closable && (\n          <button key=\"closer\" onClick={close} aria-label=\"Close\" class={`${prefixCls}-close`}>\n            {$closeIcon === undefined ? <CloseOutlined></CloseOutlined> : $closeIcon}\n          </button>\n        )\n      );\n    };\n\n    const renderBody = (prefixCls: string) => {\n      if (destroyClose.value && !props.forceRender && !load.value) {\n        return null;\n      }\n\n      const { bodyStyle, drawerStyle } = props;\n\n      return (\n        <div class={`${prefixCls}-wrapper-body`} style={drawerStyle}>\n          {renderHeader(prefixCls)}\n          <div key=\"body\" class={`${prefixCls}-body`} style={bodyStyle}>\n            {slots.default?.()}\n          </div>\n          {renderFooter(prefixCls)}\n        </div>\n      );\n    };\n\n    const renderFooter = (prefixCls: string) => {\n      const footer = getPropsSlot(slots, props, 'footer');\n      if (!footer) {\n        return null;\n      }\n\n      const footerClassName = `${prefixCls}-footer`;\n      return (\n        <div class={footerClassName} style={props.footerStyle}>\n          {footer}\n        </div>\n      );\n    };\n    const drawerClassName = computed(() =>\n      classnames(\n        {\n          'no-mask': !props.mask,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        props.rootClassName,\n        hashId.value,\n      ),\n    );\n    // =========================== Motion ===========================\n    const maskMotion = computed(() => {\n      return getTransitionProps(getTransitionName(prefixCls.value, 'mask-motion'));\n    });\n    const panelMotion = (motionPlacement: string) => {\n      return getTransitionProps(\n        getTransitionName(prefixCls.value, `panel-motion-${motionPlacement}`),\n      );\n    };\n\n    return () => {\n      const { width, height, placement, mask, forceRender, ...rest } = props;\n\n      const vcDrawerProps: any = {\n        ...attrs,\n        ...omit(rest, [\n          'size',\n          'closeIcon',\n          'closable',\n          'destroyOnClose',\n          'drawerStyle',\n          'headerStyle',\n          'bodyStyle',\n          'title',\n          'push',\n          'onAfterVisibleChange',\n          'onClose',\n          'onUpdate:visible',\n          'onUpdate:open',\n          'visible',\n        ]),\n        forceRender,\n        onClose: close,\n        afterVisibleChange,\n        handler: false,\n        prefixCls: prefixCls.value,\n        open: visible.value,\n        showMask: mask,\n        placement,\n        ref: vcDrawer,\n      };\n      return wrapSSR(\n        <NoCompactStyle>\n          <VcDrawer\n            {...vcDrawerProps}\n            maskMotion={maskMotion.value}\n            motion={panelMotion}\n            width={mergedWidth.value}\n            height={mergedHeight.value}\n            getContainer={getContainer.value}\n            rootClassName={drawerClassName.value}\n            rootStyle={props.rootStyle}\n            contentWrapperStyle={wrapperStyle.value}\n            v-slots={{\n              handler: props.handle ? () => props.handle : slots.handle,\n              default: () => renderBody(prefixCls.value),\n            }}\n          ></VcDrawer>\n        </NoCompactStyle>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Drawer);\n"
  },
  {
    "path": "components/drawer/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Drawer\nsubtitle: 抽屉\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*v3TvSq2E0HAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*4wzwRIBLuqEAAAAAAAAAAAAADrJ8AQ/original\n---\n\n屏幕边缘滑出的浮层面板。\n\n## 何时使用\n\n抽屉从父窗体边缘滑入，覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务，操作完成后，可以平滑地回到原任务。\n\n- 当需要一个附加的面板来控制父窗体内容，这个面板在需要时呼出。比如，控制界面展示样式，往界面中添加内容。\n- 当需要在当前任务流中插入临时任务，创建或预览附加内容。比如展示协议条款，创建子对象。\n\n## API\n\n**🚨 注意：** v4 使用 `rootClassName` 与 `rootStyle` 来配置最外层元素样式。原 v4 `class` 与 `style` 改至配置 Drawer 窗体样式以和 Modal 对齐。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autofocus | 抽屉展开后是否将焦点切换至其 Dom 节点 | boolean | true | 3.0.0 |\n| bodyStyle | 可用于设置 Drawer 内容部分的样式 | CSSProperties | - |  |\n| class | Drawer 容器外层 className 设置，如果需要设置最外层，请使用 rootClassName | string | - |  |\n| closable | 是否显示左上角的关闭按钮 | boolean | true |  |\n| closeIcon | 自定义关闭图标 | VNode \\| slot | `<CloseOutlined />` | 3.0.0 |\n| contentWrapperStyle | 可用于设置 Drawer 包裹内容部分的样式 | CSSProperties | - | 3.0.0 |\n| destroyOnClose | 关闭时销毁 Drawer 里的子元素 | boolean | false |  |\n| extra | 抽屉右上角的操作区域 | VNode \\| slot | - | 3.0.0 |\n| footer | 抽屉的页脚 | VNode \\| slot | - | 3.0.0 |\n| footerStyle | 抽屉页脚部件的样式 | CSSProperties | - | 3.0.0 |\n| forceRender | 预渲染 Drawer 内元素 | boolean | false | 3.0.0 |\n| getContainer | 指定 Drawer 挂载的节点，**并在容器内展现** \\| `() => HTMLElement` \\| Selectors | 'body' |  |\n| headerStyle | 用于设置 Drawer 头部的样式 | CSSProperties | - | 3.0.0 |\n| height | 高度, 在 `placement` 为 `top` 或 `bottom` 时使用 | string \\| number | 378 |  |\n| keyboard | 是否支持键盘 esc 关闭 | boolean | true |  |\n| mask | 是否展示遮罩 | Boolean | true |  |\n| maskClosable | 点击蒙层是否允许关闭 | boolean | true |  |\n| maskStyle | 遮罩样式 | CSSProperties | {} |  |\n| placement | 抽屉的方向 | 'top' \\| 'right' \\| 'bottom' \\| 'left' | 'right' |  |\n| push | 用于设置多层 Drawer 的推动行为 | boolean \\| {distance: string \\| number} | { distance: 180 } | 3.0.0 |\n| rootClassName | 对话框外层容器的类名 | string | - | 4.0 |\n| rootStyle | 可用于设置 Drawer 最外层容器的样式，和 `style` 的区别是作用节点包括 `mask` | CSSProperties | - | 4.0 |\n| size | 预设抽屉宽度（或高度），default `378px` 和 large `736px` | `default` \\| `large` | `default` | 3.0.0 |\n| style | 设计 Drawer 容器样式，如果你只需要设置内容部分请使用 `bodyStyle` | CSSProperties | - |  |\n| title | 标题 | string \\| slot | - |  |\n| open(v-model) | Drawer 是否可见 | boolean | - | 4.0 |\n| width | 宽度 | string \\| number | 378 |  |\n| zIndex | 设置 Drawer 的 `z-index` | Number | 1000 |  |\n\n## 事件\n\n| 事件名称            | 描述                                 | 类型           | 默认值 | 版本 |\n| --------------- | ------------------------------------ | -------------- | ------ | ---- |\n| afterOpenChange | 切换抽屉时动画结束后的回调           | function(open) | 无     | 4.0  |\n| close           | 点击遮罩层或左上角叉或取消按钮的回调 | function(e)    | 无     |      |\n"
  },
  {
    "path": "components/drawer/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\nexport interface DrawerToken extends FullToken<'Drawer'> {\n  drawerFooterPaddingVertical: number;\n  drawerFooterPaddingHorizontal: number;\n}\n\n// =============================== Base ===============================\nconst genDrawerStyle: GenerateStyle<DrawerToken> = (token: DrawerToken) => {\n  const {\n    componentCls,\n    zIndexPopup,\n    colorBgMask,\n    colorBgElevated,\n    motionDurationSlow,\n    motionDurationMid,\n    padding,\n    paddingLG,\n    fontSizeLG,\n    lineHeightLG,\n    lineWidth,\n    lineType,\n    colorSplit,\n    marginSM,\n    colorIcon,\n    colorIconHover,\n    colorText,\n    fontWeightStrong,\n    drawerFooterPaddingVertical,\n    drawerFooterPaddingHorizontal,\n  } = token;\n\n  const wrapperCls = `${componentCls}-content-wrapper`;\n\n  return {\n    [componentCls]: {\n      position: 'fixed',\n      inset: 0,\n      zIndex: zIndexPopup,\n      pointerEvents: 'none',\n\n      '&-pure': {\n        position: 'relative',\n        background: colorBgElevated,\n\n        [`&${componentCls}-left`]: {\n          boxShadow: token.boxShadowDrawerLeft,\n        },\n        [`&${componentCls}-right`]: {\n          boxShadow: token.boxShadowDrawerRight,\n        },\n        [`&${componentCls}-top`]: {\n          boxShadow: token.boxShadowDrawerUp,\n        },\n        [`&${componentCls}-bottom`]: {\n          boxShadow: token.boxShadowDrawerDown,\n        },\n      },\n\n      '&-inline': {\n        position: 'absolute',\n      },\n\n      // ====================== Mask ======================\n      [`${componentCls}-mask`]: {\n        position: 'absolute',\n        inset: 0,\n        zIndex: zIndexPopup,\n        background: colorBgMask,\n        pointerEvents: 'auto',\n      },\n\n      // ==================== Content =====================\n      [wrapperCls]: {\n        position: 'absolute',\n        zIndex: zIndexPopup,\n        transition: `all ${motionDurationSlow}`,\n\n        '&-hidden': {\n          display: 'none',\n        },\n      },\n\n      // Placement\n      [`&-left > ${wrapperCls}`]: {\n        top: 0,\n        bottom: 0,\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        boxShadow: token.boxShadowDrawerLeft,\n      },\n      [`&-right > ${wrapperCls}`]: {\n        top: 0,\n        right: {\n          _skip_check_: true,\n          value: 0,\n        },\n        bottom: 0,\n        boxShadow: token.boxShadowDrawerRight,\n      },\n      [`&-top > ${wrapperCls}`]: {\n        top: 0,\n        insetInline: 0,\n        boxShadow: token.boxShadowDrawerUp,\n      },\n      [`&-bottom > ${wrapperCls}`]: {\n        bottom: 0,\n        insetInline: 0,\n        boxShadow: token.boxShadowDrawerDown,\n      },\n\n      [`${componentCls}-content`]: {\n        width: '100%',\n        height: '100%',\n        overflow: 'auto',\n        background: colorBgElevated,\n        pointerEvents: 'auto',\n      },\n\n      // ===================== Panel ======================\n      [`${componentCls}-wrapper-body`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        width: '100%',\n        height: '100%',\n      },\n\n      // Header\n      [`${componentCls}-header`]: {\n        display: 'flex',\n        flex: 0,\n        alignItems: 'center',\n        padding: `${padding}px ${paddingLG}px`,\n        fontSize: fontSizeLG,\n        lineHeight: lineHeightLG,\n        borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n\n        '&-title': {\n          display: 'flex',\n          flex: 1,\n          alignItems: 'center',\n          minWidth: 0,\n          minHeight: 0,\n        },\n      },\n\n      [`${componentCls}-extra`]: {\n        flex: 'none',\n      },\n\n      [`${componentCls}-close`]: {\n        display: 'inline-block',\n        marginInlineEnd: marginSM,\n        color: colorIcon,\n        fontWeight: fontWeightStrong,\n        fontSize: fontSizeLG,\n        fontStyle: 'normal',\n        lineHeight: 1,\n        textAlign: 'center',\n        textTransform: 'none',\n        textDecoration: 'none',\n        background: 'transparent',\n        border: 0,\n        outline: 0,\n        cursor: 'pointer',\n        transition: `color ${motionDurationMid}`,\n        textRendering: 'auto',\n\n        '&:focus, &:hover': {\n          color: colorIconHover,\n          textDecoration: 'none',\n        },\n      },\n\n      [`${componentCls}-title`]: {\n        flex: 1,\n        margin: 0,\n        color: colorText,\n        fontWeight: token.fontWeightStrong,\n        fontSize: fontSizeLG,\n        lineHeight: lineHeightLG,\n      },\n\n      // Body\n      [`${componentCls}-body`]: {\n        flex: 1,\n        minWidth: 0,\n        minHeight: 0,\n        padding: paddingLG,\n        overflow: 'auto',\n      },\n\n      // Footer\n      [`${componentCls}-footer`]: {\n        flexShrink: 0,\n        padding: `${drawerFooterPaddingVertical}px ${drawerFooterPaddingHorizontal}px`,\n        borderTop: `${lineWidth}px ${lineType} ${colorSplit}`,\n      },\n\n      // ====================== RTL =======================\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Drawer',\n  token => {\n    const drawerToken = mergeToken<DrawerToken>(token, {\n      drawerFooterPaddingVertical: token.paddingXS,\n      drawerFooterPaddingHorizontal: token.padding,\n    });\n\n    return [genDrawerStyle(drawerToken), genMotionStyle(drawerToken)];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase,\n  }),\n);\n"
  },
  {
    "path": "components/drawer/style/motion.ts",
    "content": "import type { DrawerToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genMotionStyle: GenerateStyle<DrawerToken> = (token: DrawerToken) => {\n  const { componentCls, motionDurationSlow } = token;\n\n  const sharedPanelMotion = {\n    '&-enter, &-appear, &-leave': {\n      '&-start': {\n        transition: 'none',\n      },\n\n      '&-active': {\n        transition: `all ${motionDurationSlow}`,\n      },\n    },\n  };\n\n  return {\n    [componentCls]: {\n      // ======================== Mask ========================\n      [`${componentCls}-mask-motion`]: {\n        '&-enter, &-appear, &-leave': {\n          '&-active': {\n            transition: `all ${motionDurationSlow}`,\n          },\n        },\n\n        '&-enter, &-appear': {\n          opacity: 0,\n          '&-active': {\n            opacity: 1,\n          },\n        },\n\n        '&-leave': {\n          opacity: 1,\n          '&-active': {\n            opacity: 0,\n          },\n        },\n      },\n\n      // ======================= Panel ========================\n      [`${componentCls}-panel-motion`]: {\n        // Left\n        '&-left': [\n          sharedPanelMotion,\n          {\n            '&-enter, &-appear': {\n              '&-start': {\n                transform: 'translateX(-100%) !important',\n              },\n              '&-active': {\n                transform: 'translateX(0)',\n              },\n            },\n            '&-leave': {\n              transform: 'translateX(0)',\n              '&-active': {\n                transform: 'translateX(-100%)',\n              },\n            },\n          },\n        ],\n\n        // Right\n        '&-right': [\n          sharedPanelMotion,\n          {\n            '&-enter, &-appear': {\n              '&-start': {\n                transform: 'translateX(100%) !important',\n              },\n              '&-active': {\n                transform: 'translateX(0)',\n              },\n            },\n            '&-leave': {\n              transform: 'translateX(0)',\n              '&-active': {\n                transform: 'translateX(100%)',\n              },\n            },\n          },\n        ],\n\n        // Top\n        '&-top': [\n          sharedPanelMotion,\n          {\n            '&-enter, &-appear': {\n              '&-start': {\n                transform: 'translateY(-100%) !important',\n              },\n              '&-active': {\n                transform: 'translateY(0)',\n              },\n            },\n            '&-leave': {\n              transform: 'translateY(0)',\n              '&-active': {\n                transform: 'translateY(-100%)',\n              },\n            },\n          },\n        ],\n\n        // Bottom\n        '&-bottom': [\n          sharedPanelMotion,\n          {\n            '&-enter, &-appear': {\n              '&-start': {\n                transform: 'translateY(100%) !important',\n              },\n              '&-active': {\n                transform: 'translateY(0)',\n              },\n            },\n            '&-leave': {\n              transform: 'translateY(0)',\n              '&-active': {\n                transform: 'translateY(100%)',\n              },\n            },\n          },\n        ],\n      },\n    },\n  };\n};\n\nexport default genMotionStyle;\n"
  },
  {
    "path": "components/dropdown/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/dropdown/demo/arrow.vue correctly 1`] = `\n<div style=\"display: flex; flex-wrap: wrap;\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>topLeft</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>top</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>topRight</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottomLeft</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottom</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottomRight</span>\n    </button>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/dropdown/demo/arrow-center.vue correctly 1`] = `\n<div style=\"display: flex; flex-wrap: wrap;\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>topLeft</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>top</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>topRight</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottomLeft</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottom</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span>bottomRight</span>\n    </button>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/dropdown/demo/basic.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Hover me <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n\nexports[`renders ./components/dropdown/demo/context-menu.vue correctly 1`] = `<div style=\"text-align: center; background: rgb(247, 247, 247); height: 200px; line-height: 200px; color: rgb(119, 119, 119);\" class=\"ant-dropdown-trigger\"> Right Click on here </div>`;\n\nexports[`renders ./components/dropdown/demo/dropdown-button.vue correctly 1`] = `\n<div class=\"demo-dropdown-wrap\">\n  <div class=\"ant-btn-group ant-dropdown-button\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Dropdown</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n  </div>\n  <div class=\"ant-btn-group ant-dropdown-button\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Dropdown</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></button>\n  </div>\n  <div class=\"ant-btn-group ant-dropdown-button\"><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Dropdown</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger ant-btn-icon-only\" disabled=\"\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n  </div>\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>Button</span><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/dropdown/demo/event.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Hover me, Click menu item <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n\nexports[`renders ./components/dropdown/demo/item.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Hover me <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n\nexports[`renders ./components/dropdown/demo/loading.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-btn-group ant-dropdown-button\"><button class=\"ant-btn ant-btn-primary ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>Submit</span></button>\n      <!----><button class=\"ant-btn ant-btn-primary ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-btn-group ant-btn-group-sm ant-dropdown-button\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-loading\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span>Submit</span></button>\n      <!----><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-btn-group ant-dropdown-button\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Submit</span>\n      </button>\n      <!----><button class=\"ant-btn ant-btn-primary ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-btn-group ant-dropdown-button\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Submit</span>\n      </button>\n      <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></button>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/dropdown/demo/overlay-visible.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Hover me <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n\nexports[`renders ./components/dropdown/demo/placement.vue correctly 1`] = `\n<div id=\"components-dropdown-demo-placement\">\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>bottomLeft</span>\n  </button>\n  <!--v-if-->\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>bottom</span>\n  </button>\n  <!--v-if-->\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>bottomRight</span>\n  </button><br>\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>topLeft</span>\n  </button>\n  <!--v-if-->\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>top</span>\n  </button>\n  <!--v-if-->\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n    <!----><span>topRight</span>\n  </button>\n  <!--v-if-->\n</div>\n`;\n\nexports[`renders ./components/dropdown/demo/sub-menu.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Cascading menu <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n\nexports[`renders ./components/dropdown/demo/trigger.vue correctly 1`] = `<a class=\"ant-dropdown-link ant-dropdown-trigger\"> Click me <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a>`;\n"
  },
  {
    "path": "components/dropdown/__tests__/__snapshots__/dropdown-button.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`DropdownButton should support href like Button 1`] = `\n<div class=\"ant-btn-group ant-dropdown-button\"><a class=\"ant-btn ant-btn-default\" href=\"https://ant.design\">\n    <!---->\n  </a>\n  <!----><button class=\"ant-btn ant-btn-default ant-dropdown-trigger ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n</div>\n`;\n"
  },
  {
    "path": "components/dropdown/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('dropdown');\n"
  },
  {
    "path": "components/dropdown/__tests__/dropdown-button.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Dropdown from '..';\nimport Menu from '../../menu';\n\ndescribe('DropdownButton', () => {\n  it('pass appropriate props to Dropdown', () => {\n    const props = {\n      align: {\n        offset: [10, 20],\n      },\n      disabled: false,\n      trigger: ['hover'],\n      visible: true,\n    };\n\n    const wrapper = mount(Dropdown.Button, {\n      props,\n    });\n    const dropdownProps = wrapper.findComponent({ name: 'ADropdown' }).props();\n    Object.keys(props).forEach(key => {\n      expect(dropdownProps[key]).toStrictEqual(props[key]);\n    });\n  });\n\n  it(\"don't pass visible to Dropdown if it's not exits\", () => {\n    const wrapper = mount(Dropdown.Button, {\n      slots: {\n        overlay: () => (\n          <Menu>\n            <Menu.Item>foo</Menu.Item>\n          </Menu>\n        ),\n      },\n    });\n    const dropdownProps = wrapper.findComponent({ name: 'ADropdown' }).props();\n\n    expect(dropdownProps.visible).toBe(undefined);\n  });\n\n  it('should support href like Button', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Dropdown.Button\n            href=\"https://ant.design\"\n            v-slots={{\n              overlay: () => (\n                <Menu>\n                  <Menu.Item>foo</Menu.Item>\n                </Menu>\n              ),\n            }}\n          />\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/dropdown/demo/arrow-center.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 箭头指向\n  en-US: Arrow pointing at the center\n---\n\n## zh-CN\n\n设置 `arrow` 为 `{ pointAtCenter: true }` 后，箭头将指向目标元素的中心。\n\n## en-US\n\nBy specifying `arrow` prop with `{ pointAtCenter: true }`, the arrow will point to the center of the target element.\n\n</docs>\n\n<template>\n  <a-space style=\"display: flex; flex-wrap: wrap\">\n    <template v-for=\"placement in placements\" :key=\"placement\">\n      <a-dropdown :placement=\"placement\" :arrow=\"{ pointAtCenter: true }\">\n        <a-button>{{ placement }}</a-button>\n        <template #overlay>\n          <a-menu>\n            <a-menu-item>\n              <a href=\"javascript:;\">1st menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">2nd menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">3rd menu item</a>\n            </a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n    </template>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nconst placements = ['topLeft', 'top', 'topRight', 'bottomLeft', 'bottom', 'bottomRight'] as const;\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/arrow.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 箭头\n  en-US: Arrow\n---\n\n## zh-CN\n\n可以展示一个箭头。\n\n## en-US\n\nYou could display an arrow.\n\n</docs>\n\n<template>\n  <a-space style=\"display: flex; flex-wrap: wrap\">\n    <template v-for=\"placement in placements\" :key=\"placement\">\n      <a-dropdown :placement=\"placement\" arrow>\n        <a-button>{{ placement }}</a-button>\n        <template #overlay>\n          <a-menu>\n            <a-menu-item>\n              <a href=\"javascript:;\">1st menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">2nd menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">3rd menu item</a>\n            </a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n    </template>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nconst placements = ['topLeft', 'top', 'topRight', 'bottomLeft', 'bottom', 'bottomRight'] as const;\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的下拉菜单。\n\n## en-US\n\nThe most basic dropdown menu.\n\n</docs>\n\n<template>\n  <a-dropdown>\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Hover me\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu>\n        <a-menu-item>\n          <a href=\"javascript:;\">1st menu item</a>\n        </a-menu-item>\n        <a-menu-item>\n          <a href=\"javascript:;\">2nd menu item</a>\n        </a-menu-item>\n        <a-menu-item>\n          <a href=\"javascript:;\">3rd menu item</a>\n        </a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/context-menu.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 右键菜单\n  en-US: Context Menu\n---\n\n## zh-CN\n\n默认是移入触发菜单，可以点击鼠标右键触发。\n\n## en-US\n\nThe default trigger mode is `hover`, you can change it to `contextMenu`.\n\n</docs>\n\n<template>\n  <a-dropdown :trigger=\"['contextmenu']\">\n    <div\n      :style=\"{\n        textAlign: 'center',\n        background: '#f7f7f7',\n        height: '200px',\n        lineHeight: '200px',\n        color: '#777',\n      }\"\n    >\n      Right Click on here\n    </div>\n    <template #overlay>\n      <a-menu>\n        <a-menu-item key=\"1\">1st menu item</a-menu-item>\n        <a-menu-item key=\"2\">2nd menu item</a-menu-item>\n        <a-menu-item key=\"3\">3rd menu item</a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n"
  },
  {
    "path": "components/dropdown/demo/dropdown-button.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 带下拉框的按钮\n  en-US: Button with dropdown menu\n---\n\n## zh-CN\n\n左边是按钮，右边是额外的相关功能菜单。可设置 `icon` 属性来修改右边的图标。\n\n## en-US\n\nA button is on the left, and a related functional menu is on the right. You can set the icon property to modify the icon of right.\n\n</docs>\n\n<template>\n  <div class=\"demo-dropdown-wrap\">\n    <a-dropdown-button @click=\"handleButtonClick\">\n      Dropdown\n      <template #overlay>\n        <a-menu @click=\"handleMenuClick\">\n          <a-menu-item key=\"1\">\n            <UserOutlined />\n            1st menu item\n          </a-menu-item>\n          <a-menu-item key=\"2\">\n            <UserOutlined />\n            2nd menu item\n          </a-menu-item>\n          <a-menu-item key=\"3\">\n            <UserOutlined />\n            3rd item\n          </a-menu-item>\n        </a-menu>\n      </template>\n    </a-dropdown-button>\n    <a-dropdown-button>\n      Dropdown\n      <template #overlay>\n        <a-menu @click=\"handleMenuClick\">\n          <a-menu-item key=\"1\">\n            <UserOutlined />\n            1st menu item\n          </a-menu-item>\n          <a-menu-item key=\"2\">\n            <UserOutlined />\n            2nd menu item\n          </a-menu-item>\n          <a-menu-item key=\"3\">\n            <UserOutlined />\n            3rd item\n          </a-menu-item>\n        </a-menu>\n      </template>\n      <template #icon><UserOutlined /></template>\n    </a-dropdown-button>\n    <a-dropdown-button disabled @click=\"handleButtonClick\">\n      Dropdown\n      <template #overlay>\n        <a-menu @click=\"handleMenuClick\">\n          <a-menu-item key=\"1\">\n            <UserOutlined />\n            1st menu item\n          </a-menu-item>\n          <a-menu-item key=\"2\">\n            <UserOutlined />\n            2nd menu item\n          </a-menu-item>\n          <a-menu-item key=\"3\">\n            <UserOutlined />\n            3rd item\n          </a-menu-item>\n        </a-menu>\n      </template>\n    </a-dropdown-button>\n    <a-dropdown>\n      <template #overlay>\n        <a-menu @click=\"handleMenuClick\">\n          <a-menu-item key=\"1\">\n            <UserOutlined />\n            1st menu item\n          </a-menu-item>\n          <a-menu-item key=\"2\">\n            <UserOutlined />\n            2nd menu item\n          </a-menu-item>\n          <a-menu-item key=\"3\">\n            <UserOutlined />\n            3rd item\n          </a-menu-item>\n        </a-menu>\n      </template>\n      <a-button>\n        Button\n        <DownOutlined />\n      </a-button>\n    </a-dropdown>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { UserOutlined, DownOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\nconst handleButtonClick = (e: Event) => {\n  console.log('click left button', e);\n};\nconst handleMenuClick: MenuProps['onClick'] = e => {\n  console.log('click', e);\n};\n</script>\n<style lang=\"less\" scoped>\n.demo-dropdown-wrap :deep(.ant-dropdown-button) {\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/dropdown/demo/event.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 触发事件\n  en-US: Click event\n---\n\n## zh-CN\n\n点击菜单项后会触发事件，用户可以通过相应的菜单项 key 进行不同的操作。\n\n## en-US\n\nAn event will be triggered when you click menu items, in which you can make different operations according to item's key.\n\n</docs>\n\n<template>\n  <a-dropdown>\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Hover me, Click menu item\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu @click=\"onClick\">\n        <a-menu-item key=\"1\">1st menu item</a-menu-item>\n        <a-menu-item key=\"2\">2nd menu item</a-menu-item>\n        <a-menu-item key=\"3\">3rd menu item</a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\n\nconst onClick: MenuProps['onClick'] = ({ key }) => {\n  console.log(`Click on item ${key}`);\n};\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <context-menu />\n    <dropdown-button />\n    <event />\n    <item />\n    <overlay-visible />\n    <placement />\n    <arrow-vue />\n    <arrow-center-vue></arrow-center-vue>\n    <sub-menu />\n    <trigger />\n    <loadingVue />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport US from '../index.en-US.md';\nimport CN from '../index.zh-CN.md';\nimport Basic from './basic.vue';\nimport ContextMenu from './context-menu.vue';\nimport DropdownButton from './dropdown-button.vue';\nimport Event from './event.vue';\nimport Item from './item.vue';\nimport OverlayVisible from './overlay-visible.vue';\nimport Placement from './placement.vue';\nimport SubMenu from './sub-menu.vue';\nimport Trigger from './trigger.vue';\nimport loadingVue from './loading.vue';\nimport arrowVue from './arrow.vue';\nimport arrowCenterVue from './arrow-center.vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    arrowCenterVue,\n    arrowVue,\n    loadingVue,\n    Basic,\n    ContextMenu,\n    DropdownButton,\n    Event,\n    Item,\n    OverlayVisible,\n    Placement,\n    SubMenu,\n    Trigger,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/item.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 其他元素\n  en-US: Other elements\n---\n\n## zh-CN\n\n分割线和不可用菜单项。\n\n## en-US\n\nDivider and disabled menu item.\n\n</docs>\n\n<template>\n  <a-dropdown>\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Hover me\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu>\n        <a-menu-item key=\"0\">\n          <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.alipay.com/\">\n            1st menu item\n          </a>\n        </a-menu-item>\n        <a-menu-item key=\"1\">\n          <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.taobao.com/\">\n            2nd menu item\n          </a>\n        </a-menu-item>\n        <a-menu-divider />\n        <a-menu-item key=\"3\" disabled>3rd menu item（disabled）</a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/loading.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 加载中状态\n  en-US: Loading\n---\n\n## zh-CN\n\n添加 `loading` 属性即可让按钮处于加载状态，最后两个按钮演示点击后进入加载状态。\n\n## en-US\n\nA loading indicator can be added to a button by setting the `loading` property on the `a-dropdown-button`.\n\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-dropdown-button type=\"primary\" loading>\n      <template #overlay>\n        <a-menu>\n          <a-menu-item key=\"1\">Submit and continue</a-menu-item>\n        </a-menu>\n      </template>\n      Submit\n    </a-dropdown-button>\n    <a-dropdown-button type=\"primary\" size=\"small\" loading>\n      <template #overlay>\n        <a-menu>\n          <a-menu-item key=\"1\">Submit and continue</a-menu-item>\n        </a-menu>\n      </template>\n      Submit\n    </a-dropdown-button>\n    <a-dropdown-button type=\"primary\" :loading=\"loading1\" @click=\"enterLoading1\">\n      <template #overlay>\n        <a-menu>\n          <a-menu-item key=\"1\">Submit and continue</a-menu-item>\n        </a-menu>\n      </template>\n      Submit\n    </a-dropdown-button>\n    <a-dropdown-button :loading=\"loading2\" @click=\"enterLoading2\">\n      Submit\n      <template #overlay>\n        <a-menu>\n          <a-menu-item key=\"1\">Submit and continue</a-menu-item>\n        </a-menu>\n      </template>\n      <template #icon><DownOutlined /></template>\n    </a-dropdown-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { Ref, ref } from 'vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\nconst loading1 = ref(false);\nconst loading2 = ref(false);\nconst enterLoading = (loading: Ref<boolean>) => {\n  loading.value = true;\n  setTimeout(() => {\n    loading.value = false;\n  }, 6000);\n};\nfunction enterLoading1() {\n  enterLoading(loading1);\n}\nfunction enterLoading2() {\n  enterLoading(loading2);\n}\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/overlay-visible.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 菜单隐藏方式\n  en-US: The way of hiding menu.\n---\n\n## zh-CN\n\n默认是点击关闭菜单，可以关闭此功能。\n\n## en-US\n\nThe default is to close the menu when you click on menu items, this feature can be turned off.\n\n</docs>\n\n<template>\n  <a-dropdown v-model:open=\"visible\">\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Hover me\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu @click=\"handleMenuClick\">\n        <a-menu-item key=\"1\">Clicking me will not close the menu.</a-menu-item>\n        <a-menu-item key=\"2\">Clicking me will not close the menu also.</a-menu-item>\n        <a-menu-item key=\"3\">Clicking me will close the menu</a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\nconst visible = ref(false);\nconst handleMenuClick: MenuProps['onClick'] = e => {\n  if (e.key === '3') {\n    visible.value = false;\n  }\n};\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/placement.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 弹出位置\n  en-US: Placement\n---\n\n## zh-CN\n\n支持 6 个弹出位置。\n\n## en-US\n\nSupport 6 placements.\n\n</docs>\n\n<template>\n  <div id=\"components-dropdown-demo-placement\">\n    <template v-for=\"(placement, index) in placements\" :key=\"placement\">\n      <a-dropdown :placement=\"placement\">\n        <a-button>{{ placement }}</a-button>\n        <template #overlay>\n          <a-menu>\n            <a-menu-item>\n              <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.alipay.com/\">\n                1st menu item\n              </a>\n            </a-menu-item>\n            <a-menu-item>\n              <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.taobao.com/\">\n                2nd menu item\n              </a>\n            </a-menu-item>\n            <a-menu-item>\n              <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.tmall.com/\">\n                3rd menu item\n              </a>\n            </a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n      <br v-if=\"index === 2\" />\n    </template>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport type { DropdownProps } from 'ant-design-vue';\nconst placements = [\n  'bottomLeft',\n  'bottom',\n  'bottomRight',\n  'topLeft',\n  'top',\n  'topRight',\n] as DropdownProps['placement'][];\n</script>\n<style scoped>\n#components-dropdown-demo-placement .ant-btn {\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/dropdown/demo/sub-menu.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 多级菜单\n  en-US: Cascading menu\n---\n\n## zh-CN\n\n传入的菜单里有多个层级。\n\n## en-US\n\nThe menu has multiple levels.\n\n</docs>\n\n<template>\n  <a-dropdown>\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Cascading menu\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu>\n        <a-menu-item>1st menu item</a-menu-item>\n        <a-menu-item>2nd menu item</a-menu-item>\n        <a-sub-menu key=\"sub1\" title=\"sub menu\">\n          <a-menu-item>3rd menu item</a-menu-item>\n          <a-menu-item>4th menu item</a-menu-item>\n        </a-sub-menu>\n        <a-sub-menu key=\"sub2\" title=\"disabled sub menu\" disabled>\n          <a-menu-item>5d menu item</a-menu-item>\n          <a-menu-item>6th menu item</a-menu-item>\n        </a-sub-menu>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/dropdown/demo/trigger.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 触发方式\n  en-US: Trigger mode\n---\n\n## zh-CN\n\n默认是移入触发菜单，可以点击触发。\n\n## en-US\n\nThe default trigger mode is `hover`, you can change it to `click`.\n</docs>\n\n<template>\n  <a-dropdown :trigger=\"['click']\">\n    <a class=\"ant-dropdown-link\" @click.prevent>\n      Click me\n      <DownOutlined />\n    </a>\n    <template #overlay>\n      <a-menu>\n        <a-menu-item key=\"0\">\n          <a href=\"http://www.alipay.com/\">1st menu item</a>\n        </a-menu-item>\n        <a-menu-item key=\"1\">\n          <a href=\"http://www.taobao.com/\">2nd menu item</a>\n        </a-menu-item>\n        <a-menu-divider />\n        <a-menu-item key=\"3\">3rd menu item</a-menu-item>\n      </a-menu>\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/dropdown/dropdown-button.tsx",
    "content": "import type { ExtractPropTypes, HTMLAttributes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport Button from '../button';\nimport Dropdown from './dropdown';\nimport classNames from '../_util/classNames';\nimport { initDefaultProps } from '../_util/props-util';\nimport { dropdownButtonProps } from './props';\nimport EllipsisOutlined from '@ant-design/icons-vue/EllipsisOutlined';\n\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nimport type { CustomSlotsType } from '../_util/type';\n\nconst ButtonGroup = Button.Group;\n\nexport type DropdownButtonProps = Partial<ExtractPropTypes<ReturnType<typeof dropdownButtonProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADropdownButton',\n  inheritAttrs: false,\n  __ANT_BUTTON: true,\n  props: initDefaultProps(dropdownButtonProps(), {\n    trigger: 'hover',\n    placement: 'bottomRight',\n    type: 'default',\n  }),\n  // emits: ['click', 'visibleChange', 'update:visible'],s\n  slots: Object as CustomSlotsType<{\n    icon: any;\n    leftButton: { button: any };\n    rightButton: { button: any };\n    overlay: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs, emit }) {\n    const handleVisibleChange = (val: boolean) => {\n      emit('update:visible', val);\n      emit('visibleChange', val);\n      emit('update:open', val);\n      emit('openChange', val);\n    };\n\n    const { prefixCls, direction, getPopupContainer } = useConfigInject('dropdown', props);\n    const buttonPrefixCls = computed(() => `${prefixCls.value}-button`);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    return () => {\n      const {\n        type = 'default',\n        disabled,\n        danger,\n        loading,\n        htmlType,\n        class: className = '',\n        overlay = slots.overlay?.(),\n        trigger,\n        align,\n        open,\n        visible,\n        onVisibleChange: _onVisibleChange,\n        placement = direction.value === 'rtl' ? 'bottomLeft' : 'bottomRight',\n        href,\n        title,\n        icon = slots.icon?.() || <EllipsisOutlined />,\n        mouseEnterDelay,\n        mouseLeaveDelay,\n        overlayClassName,\n        overlayStyle,\n        destroyPopupOnHide,\n        onClick,\n        'onUpdate:open': _updateVisible,\n        ...restProps\n      } = { ...props, ...attrs } as DropdownButtonProps & HTMLAttributes;\n\n      const dropdownProps = {\n        align,\n        disabled,\n        trigger: disabled ? [] : trigger,\n        placement,\n        getPopupContainer: getPopupContainer?.value,\n        onOpenChange: handleVisibleChange,\n        mouseEnterDelay,\n        mouseLeaveDelay,\n        open: open ?? visible,\n        overlayClassName,\n        overlayStyle,\n        destroyPopupOnHide,\n      };\n\n      const leftButton = (\n        <Button\n          danger={danger}\n          type={type}\n          disabled={disabled}\n          loading={loading}\n          onClick={onClick}\n          htmlType={htmlType}\n          href={href}\n          title={title}\n          v-slots={{ default: slots.default }}\n        ></Button>\n      );\n\n      const rightButton = <Button danger={danger} type={type} icon={icon} />;\n\n      return wrapSSR(\n        <ButtonGroup\n          {...restProps}\n          class={classNames(buttonPrefixCls.value, className, hashId.value)}\n        >\n          {slots.leftButton ? slots.leftButton({ button: leftButton }) : leftButton}\n          <Dropdown {...dropdownProps} v-slots={{ overlay: () => overlay }}>\n            {slots.rightButton ? slots.rightButton({ button: rightButton }) : rightButton}\n          </Dropdown>\n        </ButtonGroup>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/dropdown/dropdown.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport RcDropdown from '../vc-dropdown';\nimport DropdownButton from './dropdown-button';\nimport { cloneElement } from '../_util/vnode';\nimport classNames from '../_util/classNames';\nimport { isValidElement, initDefaultProps } from '../_util/props-util';\nimport { dropdownProps } from './props';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport devWarning from '../vc-util/devWarning';\nimport omit from '../_util/omit';\nimport getPlacements from '../_util/placements';\nimport warning from '../_util/warning';\nimport useStyle from './style';\nimport { useProvideOverride } from '../menu/src/OverrideContext';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport type DropdownProps = Partial<ExtractPropTypes<ReturnType<typeof dropdownProps>>>;\n\nconst Dropdown = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADropdown',\n  inheritAttrs: false,\n  props: initDefaultProps(dropdownProps(), {\n    mouseEnterDelay: 0.15,\n    mouseLeaveDelay: 0.1,\n    placement: 'bottomLeft',\n    trigger: 'hover',\n  }),\n  // emits: ['visibleChange', 'update:visible'],\n  slots: Object as CustomSlotsType<{\n    default?: any;\n    overlay?: any;\n  }>,\n  setup(props, { slots, attrs, emit }) {\n    const { prefixCls, rootPrefixCls, direction, getPopupContainer } = useConfigInject(\n      'dropdown',\n      props,\n    );\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    // Warning for deprecated usage\n    if (process.env.NODE_ENV !== 'production') {\n      [\n        ['visible', 'open'],\n        ['onVisibleChange', 'onOpenChange'],\n        ['onUpdate:visible', 'onUpdate:open'],\n      ].forEach(([deprecatedName, newName]) => {\n        warning(\n          props[deprecatedName] === undefined,\n          'Dropdown',\n          `\\`${deprecatedName}\\` is deprecated which will be removed in next major version, please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n\n    const transitionName = computed(() => {\n      const { placement = '', transitionName } = props;\n      if (transitionName !== undefined) {\n        return transitionName;\n      }\n      if (placement.includes('top')) {\n        return `${rootPrefixCls.value}-slide-down`;\n      }\n      return `${rootPrefixCls.value}-slide-up`;\n    });\n    useProvideOverride({\n      prefixCls: computed(() => `${prefixCls.value}-menu`),\n      expandIcon: computed(() => {\n        return (\n          <span class={`${prefixCls.value}-menu-submenu-arrow`}>\n            <RightOutlined class={`${prefixCls.value}-menu-submenu-arrow-icon`} />\n          </span>\n        );\n      }),\n      mode: computed(() => 'vertical'),\n      selectable: computed(() => false),\n      onClick: () => {},\n      validator: ({ mode }) => {\n        // Warning if use other mode\n        warning(\n          !mode || mode === 'vertical',\n          'Dropdown',\n          `mode=\"${mode}\" is not supported for Dropdown's Menu.`,\n        );\n      },\n    });\n    const renderOverlay = () => {\n      // rc-dropdown already can process the function of overlay, but we have check logic here.\n      // So we need render the element to check and pass back to rc-dropdown.\n      const overlay = props.overlay || slots.overlay?.();\n      const overlayNode = Array.isArray(overlay) ? overlay[0] : overlay;\n\n      if (!overlayNode) return null;\n      const overlayProps = overlayNode.props || {};\n\n      // Warning if use other mode\n      devWarning(\n        !overlayProps.mode || overlayProps.mode === 'vertical',\n        'Dropdown',\n        `mode=\"${overlayProps.mode}\" is not supported for Dropdown's Menu.`,\n      );\n\n      // menu cannot be selectable in dropdown defaultly\n      const { selectable = false, expandIcon = (overlayNode.children as any)?.expandIcon?.() } =\n        overlayProps;\n\n      const overlayNodeExpandIcon =\n        typeof expandIcon !== 'undefined' && isValidElement(expandIcon) ? (\n          expandIcon\n        ) : (\n          <span class={`${prefixCls.value}-menu-submenu-arrow`}>\n            <RightOutlined class={`${prefixCls.value}-menu-submenu-arrow-icon`} />\n          </span>\n        );\n\n      const fixedModeOverlay = isValidElement(overlayNode)\n        ? cloneElement(overlayNode, {\n            mode: 'vertical',\n            selectable,\n            expandIcon: () => overlayNodeExpandIcon,\n          })\n        : overlayNode;\n\n      return fixedModeOverlay;\n    };\n\n    const placement = computed(() => {\n      const placement = props.placement;\n      if (!placement) {\n        return direction.value === 'rtl' ? 'bottomRight' : 'bottomLeft';\n      }\n\n      if (placement.includes('Center')) {\n        const newPlacement = placement.slice(0, placement.indexOf('Center'));\n        devWarning(\n          !placement.includes('Center'),\n          'Dropdown',\n          `You are using '${placement}' placement in Dropdown, which is deprecated. Try to use '${newPlacement}' instead.`,\n        );\n        return newPlacement;\n      }\n      return placement;\n    });\n\n    const mergedVisible = computed(() => {\n      return typeof props.visible === 'boolean' ? props.visible : props.open;\n    });\n\n    const handleVisibleChange = (val: boolean) => {\n      emit('update:visible', val);\n      emit('visibleChange', val);\n      emit('update:open', val);\n      emit('openChange', val);\n    };\n\n    return () => {\n      const { arrow, trigger, disabled, overlayClassName } = props;\n      const child = slots.default?.()[0];\n      const dropdownTrigger = cloneElement(\n        child,\n        Object.assign(\n          {\n            class: classNames(\n              child?.props?.class,\n              {\n                [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n              },\n              `${prefixCls.value}-trigger`,\n            ),\n          },\n          disabled ? { disabled } : {},\n        ),\n      );\n\n      const overlayClassNameCustomized = classNames(overlayClassName, hashId.value, {\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      });\n\n      const triggerActions = disabled ? [] : trigger;\n      let alignPoint: boolean;\n      if (triggerActions && triggerActions.includes('contextmenu')) {\n        alignPoint = true;\n      }\n\n      const builtinPlacements = getPlacements({\n        arrowPointAtCenter: typeof arrow === 'object' && arrow.pointAtCenter,\n        autoAdjustOverflow: true,\n      });\n      const dropdownProps = omit(\n        {\n          ...props,\n          ...attrs,\n          visible: mergedVisible.value,\n          builtinPlacements,\n          overlayClassName: overlayClassNameCustomized,\n          arrow: !!arrow,\n          alignPoint,\n          prefixCls: prefixCls.value,\n          getPopupContainer: getPopupContainer?.value,\n          transitionName: transitionName.value,\n          trigger: triggerActions,\n          onVisibleChange: handleVisibleChange,\n          placement: placement.value,\n        },\n        ['overlay', 'onUpdate:visible'],\n      );\n      return wrapSSR(\n        <RcDropdown {...dropdownProps} v-slots={{ overlay: renderOverlay }}>\n          {dropdownTrigger}\n        </RcDropdown>,\n      );\n    };\n  },\n});\nDropdown.Button = DropdownButton;\nexport default Dropdown;\n"
  },
  {
    "path": "components/dropdown/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ntitle: Dropdown\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*mBBcQ6goljkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5qm4S4Zgh2QAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA dropdown list.\n\n## When To Use\n\nWhen there are more than a few options to choose from, you can wrap them in a `Dropdown`. By hovering or clicking on the trigger, a dropdown menu will appear, which allows you to choose an option and execute the relevant action.\n\n## API\n\n### Dropdown\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| align | this value will be merged into placement's config, please refer to the settings [dom-align](https://github.com/yiminghe/dom-align) | Object | - |  |\n| arrow | Whether the dropdown arrow should be open | boolean \\| { pointAtCenter: boolean } | false | 3.3.0 |\n| destroyPopupOnHide | Whether destroy dropdown when hidden | boolean | false |  |\n| disabled | whether the dropdown menu is disabled | boolean | - |  |\n| getPopupContainer | to set the container of the dropdown menu. The default is to create a `div` element in `body`, you can reset it to the scrolling area and make a relative reposition. [example](https://codepen.io/afc163/pen/zEjNOy?editors=0010) | Function(triggerNode) | `() => document.body` |  |\n| overlay(v-slot) | the dropdown menu | [Menu](/components/menu) | - |  |\n| overlayClassName | Class name of the dropdown root element | string | - |  |\n| overlayStyle | Style of the dropdown root element | object | - |  |\n| placement | placement of pop menu: `bottomLeft` `bottom` `bottomRight` `topLeft` `top` `topRight` | String | `bottomLeft` |  |\n| trigger | the trigger mode which executes the drop-down action, hover doesn't work on mobile device | Array&lt;`click`\\|`hover`\\|`contextmenu`> | `['hover']` |  |\n| open(v-model) | whether the dropdown menu is open | boolean | - | 4.0 |\n\n### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| openChange | a callback function takes an argument: `open`, is executed when the open state is changed. Not trigger when hidden by click item | function(open) | 4.0 |\n\nYou should use [Menu](/components/menu/) as `overlay`. The menu items and dividers are also available by using `Menu.Item` and `Menu.Divider`.\n\n> Warning: You must set a unique `key` for `Menu.Item`.\n>\n> Menu of Dropdown is unselectable by default, you can make it selectable via `<Menu selectable>`.\n\n### Dropdown.Button\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| disabled | whether the dropdown menu is disabled | boolean | - |  |\n| icon | Icon (appears on the right) | vNode \\| slot | - | 1.5.0 |\n| loading | Set the loading status of button | boolean \\| { delay: number } | false | 3.0 |\n| overlay(v-slot) | the dropdown menu | [Menu](/components/menu) | - |  |\n| placement | placement of pop menu: `bottomLeft` `bottom` `bottomRight` `topLeft` `top` `topRight` | String | `bottomLeft` |  |\n| size | size of the button, the same as [Button](/components/button) | string | `default` |  |\n| trigger | the trigger mode which executes the drop-down action | Array&lt;`click`\\|`hover`\\|`contextmenu`> | `['hover']` |  |\n| type | type of the button, the same as [Button](/components/button) | string | `default` |  |\n| open(v-model) | whether the dropdown menu is open | boolean | - |  |\n\n### Dropdown.Button events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| click | a callback function, the same as [Button](/components/button), which will be executed when you click the button on the left | Function |  |\n| openChange | a callback function takes an argument: `open`, is executed when the open state is changed. Not trigger when hidden by click item | Function | 4.0 |\n"
  },
  {
    "path": "components/dropdown/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Dropdown from './dropdown';\nimport DropdownButton from './dropdown-button';\nimport { dropdownProps, dropdownButtonProps } from './props';\nexport type { DropdownProps } from './dropdown';\nexport type { DropdownButtonProps } from './dropdown-button';\n\nDropdown.Button = DropdownButton;\n\n/* istanbul ignore next */\nDropdown.install = function (app: App) {\n  app.component(Dropdown.name, Dropdown);\n  app.component(DropdownButton.name, DropdownButton);\n  return app;\n};\n\nexport { DropdownButton, dropdownProps, dropdownButtonProps };\n\nexport default Dropdown as typeof Dropdown &\n  Plugin & {\n    readonly Button: typeof DropdownButton;\n  };\n"
  },
  {
    "path": "components/dropdown/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 下拉菜单\ntype: 导航\ntitle: Dropdown\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*mBBcQ6goljkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5qm4S4Zgh2QAAAAAAAAAAAAADrJ8AQ/original\n---\n\n向下弹出的列表。\n\n## 何时使用\n\n当页面上的操作命令过多时，用此组件可以收纳操作元素。点击或移入触点，会出现一个下拉菜单。可在列表中进行选择，并执行相应的命令。\n\n- 用于收罗一组命令操作。\n- Select 用于选择，而 Dropdown 是命令集合。\n\n## API\n\n属性如下\n\n| 参数 | 说明 | 类型 | 默认值 |  |\n| --- | --- | --- | --- | --- |\n| align | 该值将合并到 placement 的配置中，设置参考 [dom-align](https://github.com/yiminghe/dom-align) | Object | - |  |\n| arrow | 下拉框箭头是否显示 | boolean \\| { pointAtCenter: boolean } | false | 3.3.0 |\n| destroyPopupOnHide | 关闭后是否销毁 Dropdown | boolean | false | 3.0 |\n| disabled | 菜单是否禁用 | boolean | - |  |\n| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上，如果你遇到菜单滚动定位问题，试试修改为滚动的区域，并相对其定位。 | Function(triggerNode) | `() => document.body` |  |\n| overlay(v-slot) | 菜单 | [Menu](/components/menu-cn) | - |  |\n| overlayClassName | 下拉根元素的类名称 | string | - |  |\n| overlayStyle | 下拉根元素的样式 | object | - |  |\n| placement | 菜单弹出位置 | `bottomLeft` \\| `bottom` \\| `bottomRight` \\| `topLeft` \\| `top` \\| `topRight` | `bottomLeft` |  |\n| trigger | 触发下拉的行为, 移动端不支持 hover | Array&lt;`click`\\|`hover`\\|`contextmenu`> | `['hover']` |  |\n| open(v-model) | 菜单是否显示 | boolean | - |  |\n\n`overlay` 菜单使用 [Menu](/components/menu-cn/)，还包括菜单项 `Menu.Item`，分割线 `Menu.Divider`。\n\n> 注意： Menu.Item 必须设置唯一的 key 属性。\n>\n> Dropdown 下的 Menu 默认不可选中。如果需要菜单可选中，可以指定 `<Menu selectable>`.\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- |\n| openChange | 菜单显示状态改变时调用，参数为 visible。点击菜单按钮导致的消失不会触发 | function(open) | 4.0 |\n\n### Dropdown.Button\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| disabled | 菜单是否禁用 | boolean | - |  |\n| icon | 右侧的 icon | VNode \\| slot | - | 1.5.0 |\n| loading | 设置按钮载入状态 | boolean \\| { delay: number } | false | 3.0 |\n| overlay(v-slot) | 菜单 | [Menu](/components/menu-cn/) | - |  |\n| placement | 菜单弹出位置 | `bottomLeft` \\| `bottom` \\| `bottomRight` \\| `topLeft` \\| `top` \\| `topRight` | `bottomLeft` |  |\n| size | 按钮大小，和 [Button](/components/button-cn/) 一致 | string | 'default' |  |\n| trigger | 触发下拉的行为 | Array&lt;`click`\\|`hover`\\|`contextmenu`> | `['hover']` |  |\n| type | 按钮类型，和 [Button](/components/button-cn/) 一致 | string | 'default' |  |\n| open(v-model) | 菜单是否显示 | boolean | - |  |\n\n### Dropdown.Button 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- |\n| click | 点击左侧按钮的回调，和 [Button](/components/button-cn/) 一致 | Function |\n| openChange | 菜单显示状态改变时调用，参数为 visible。点击菜单按钮导致的消失不会触发 | function(open) | 4.0 |\n"
  },
  {
    "path": "components/dropdown/props.ts",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\n\nimport buttonTypes from '../button/buttonTypes';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport type { MenuProps } from '../menu';\nimport { booleanType, eventType, objectType, someType } from '../_util/type';\n\nexport type Align = {\n  points?: [string, string];\n  offset?: [number, number];\n  targetOffset?: [number, number];\n  overflow?: {\n    adjustX?: boolean;\n    adjustY?: boolean;\n  };\n  useCssRight?: boolean;\n  useCssBottom?: boolean;\n  useCssTransform?: boolean;\n};\n\nexport type Trigger = 'click' | 'hover' | 'contextmenu';\n\nexport type DropdownArrowOptions = {\n  pointAtCenter?: boolean;\n};\nconst dropdownProps = () => ({\n  arrow: someType<boolean | DropdownArrowOptions>([Boolean, Object]),\n  trigger: {\n    type: [Array, String] as PropType<Trigger[] | Trigger>,\n  },\n  menu: objectType<MenuProps>(),\n  overlay: PropTypes.any,\n  /** @deprecated Please use `open` instead */\n  visible: booleanType(),\n  open: booleanType(),\n  disabled: booleanType(),\n  danger: booleanType(),\n  autofocus: booleanType(),\n  align: objectType<Align>(),\n  getPopupContainer: Function as PropType<(triggerNode: HTMLElement) => HTMLElement>,\n  prefixCls: String,\n  transitionName: String,\n  placement: String as PropType<\n    | 'topLeft'\n    | 'topCenter'\n    | 'top'\n    | 'topRight'\n    | 'bottomLeft'\n    | 'bottomCenter'\n    | 'bottom'\n    | 'bottomRight'\n  >,\n  overlayClassName: String,\n  overlayStyle: objectType<CSSProperties>(),\n  forceRender: booleanType(),\n  mouseEnterDelay: Number,\n  mouseLeaveDelay: Number,\n  openClassName: String,\n  minOverlayWidthMatchTrigger: booleanType(),\n  destroyPopupOnHide: booleanType(),\n  /** @deprecated Please use `onOpenChange` instead */\n  onVisibleChange: {\n    type: Function as PropType<(val: boolean) => void>,\n  },\n  /** @deprecated Please use `onUpdate:open` instead */\n  'onUpdate:visible': {\n    type: Function as PropType<(val: boolean) => void>,\n  },\n  onOpenChange: {\n    type: Function as PropType<(val: boolean) => void>,\n  },\n  'onUpdate:open': {\n    type: Function as PropType<(val: boolean) => void>,\n  },\n});\n\nconst buttonTypesProps = buttonTypes();\nconst dropdownButtonProps = () => ({\n  ...dropdownProps(),\n  type: buttonTypesProps.type,\n  size: String as PropType<'small' | 'large'>,\n  htmlType: buttonTypesProps.htmlType,\n  href: String,\n  disabled: booleanType(),\n  prefixCls: String,\n  icon: PropTypes.any,\n  title: String,\n  loading: buttonTypesProps.loading,\n  onClick: eventType<MouseEventHandler>(),\n});\n\nexport { dropdownProps, dropdownButtonProps };\n\nexport default dropdownProps;\n"
  },
  {
    "path": "components/dropdown/style/button.ts",
    "content": "import type { DropdownToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genButtonStyle: GenerateStyle<DropdownToken> = token => {\n  const { componentCls, antCls, paddingXS, opacityLoading } = token;\n\n  return {\n    [`${componentCls}-button`]: {\n      whiteSpace: 'nowrap',\n\n      [`&${antCls}-btn-group > ${antCls}-btn`]: {\n        [`&-loading, &-loading + ${antCls}-btn`]: {\n          cursor: 'default',\n          pointerEvents: 'none',\n          opacity: opacityLoading,\n        },\n\n        [`&:last-child:not(:first-child):not(${antCls}-btn-icon-only)`]: {\n          paddingInline: paddingXS,\n        },\n      },\n    },\n  };\n};\n\nexport default genButtonStyle;\n"
  },
  {
    "path": "components/dropdown/style/index.ts",
    "content": "import { getArrowOffset } from '../../style/placementArrow';\nimport {\n  initMoveMotion,\n  initSlideMotion,\n  initZoomMotion,\n  slideDownIn,\n  slideDownOut,\n  slideUpIn,\n  slideUpOut,\n} from '../../style/motion';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genButtonStyle from './button';\nimport genStatusStyle from './status';\nimport { genFocusStyle, resetComponent, roundedArrow } from '../../style';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\nexport interface DropdownToken extends FullToken<'Dropdown'> {\n  rootPrefixCls: string;\n  dropdownArrowDistance: number;\n  dropdownArrowOffset: number;\n  dropdownPaddingVertical: number;\n  dropdownEdgeChildPadding: number;\n  menuCls: string;\n}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<DropdownToken> = token => {\n  const {\n    componentCls,\n    menuCls,\n    zIndexPopup,\n    dropdownArrowDistance,\n    dropdownArrowOffset,\n    sizePopupArrow,\n    antCls,\n    iconCls,\n    motionDurationMid,\n    dropdownPaddingVertical,\n    fontSize,\n    dropdownEdgeChildPadding,\n    colorTextDisabled,\n    fontSizeIcon,\n    controlPaddingHorizontal,\n    colorBgElevated,\n    boxShadowPopoverArrow,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n\n        position: 'absolute',\n        top: -9999,\n        left: {\n          _skip_check_: true,\n          value: -9999,\n        },\n        zIndex: zIndexPopup,\n        display: 'block',\n\n        // A placeholder out of dropdown visible range to avoid close when user moving\n        '&::before': {\n          position: 'absolute',\n          insetBlock: -dropdownArrowDistance + sizePopupArrow / 2,\n          // insetInlineStart: -7, // FIXME: Seems not work for hidden element\n          zIndex: -9999,\n          opacity: 0.0001,\n          content: '\"\"',\n        },\n\n        [`${componentCls}-wrap`]: {\n          position: 'relative',\n\n          [`${antCls}-btn > ${iconCls}-down`]: {\n            fontSize: fontSizeIcon,\n          },\n\n          [`${iconCls}-down::before`]: {\n            transition: `transform ${motionDurationMid}`,\n          },\n        },\n\n        [`${componentCls}-wrap-open`]: {\n          [`${iconCls}-down::before`]: {\n            transform: `rotate(180deg)`,\n          },\n        },\n\n        [`\n        &-hidden,\n        &-menu-hidden,\n        &-menu-submenu-hidden\n      `]: {\n          display: 'none',\n        },\n\n        // =============================================================\n        // ==                          Arrow                          ==\n        // =============================================================\n        // Offset the popover to account for the dropdown arrow\n        [`\n        &-show-arrow${componentCls}-placement-topLeft,\n        &-show-arrow${componentCls}-placement-top,\n        &-show-arrow${componentCls}-placement-topRight\n      `]: {\n          paddingBottom: dropdownArrowDistance,\n        },\n\n        [`\n        &-show-arrow${componentCls}-placement-bottomLeft,\n        &-show-arrow${componentCls}-placement-bottom,\n        &-show-arrow${componentCls}-placement-bottomRight\n      `]: {\n          paddingTop: dropdownArrowDistance,\n        },\n\n        // Note: .popover-arrow is outer, .popover-arrow:after is inner\n        [`${componentCls}-arrow`]: {\n          position: 'absolute',\n          zIndex: 1, // lift it up so the menu wouldn't cask shadow on it\n          display: 'block',\n\n          ...roundedArrow(\n            sizePopupArrow,\n            token.borderRadiusXS,\n            token.borderRadiusOuter,\n            colorBgElevated,\n            boxShadowPopoverArrow,\n          ),\n        },\n\n        [`\n        &-placement-top > ${componentCls}-arrow,\n        &-placement-topLeft > ${componentCls}-arrow,\n        &-placement-topRight > ${componentCls}-arrow\n      `]: {\n          bottom: dropdownArrowDistance,\n          transform: 'translateY(100%) rotate(180deg)',\n        },\n\n        [`&-placement-top > ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: '50%',\n          },\n          transform: 'translateX(-50%) translateY(100%) rotate(180deg)',\n        },\n\n        [`&-placement-topLeft > ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: dropdownArrowOffset,\n          },\n        },\n\n        [`&-placement-topRight > ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: dropdownArrowOffset,\n          },\n        },\n\n        [`\n          &-placement-bottom > ${componentCls}-arrow,\n          &-placement-bottomLeft > ${componentCls}-arrow,\n          &-placement-bottomRight > ${componentCls}-arrow\n        `]: {\n          top: dropdownArrowDistance,\n          transform: `translateY(-100%)`,\n        },\n\n        [`&-placement-bottom > ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: '50%',\n          },\n          transform: `translateY(-100%) translateX(-50%)`,\n        },\n\n        [`&-placement-bottomLeft > ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: dropdownArrowOffset,\n          },\n        },\n\n        [`&-placement-bottomRight > ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: dropdownArrowOffset,\n          },\n        },\n\n        // =============================================================\n        // ==                         Motion                          ==\n        // =============================================================\n        // When position is not enough for dropdown, the placement will revert.\n        // We will handle this with revert motion name.\n        [`&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomLeft,\n          &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomLeft,\n          &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottom,\n          &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottom,\n          &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomRight,\n          &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomRight`]:\n          {\n            animationName: slideUpIn,\n          },\n\n        [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topLeft,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topLeft,\n          &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-top,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-top,\n          &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topRight,\n          &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topRight`]:\n          {\n            animationName: slideDownIn,\n          },\n\n        [`&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomLeft,\n          &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottom,\n          &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomRight`]:\n          {\n            animationName: slideUpOut,\n          },\n\n        [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topLeft,\n          &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,\n          &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]:\n          {\n            animationName: slideDownOut,\n          },\n      },\n    },\n\n    {\n      // =============================================================\n      // ==                          Menu                           ==\n      // =============================================================\n      [`${componentCls} ${menuCls}`]: {\n        position: 'relative',\n        margin: 0,\n      },\n\n      [`${menuCls}-submenu-popup`]: {\n        position: 'absolute',\n        zIndex: zIndexPopup,\n        background: 'transparent',\n        boxShadow: 'none',\n        transformOrigin: '0 0',\n\n        'ul,li': {\n          listStyle: 'none',\n        },\n\n        ul: {\n          marginInline: '0.3em',\n        },\n      },\n\n      [`${componentCls}, ${componentCls}-menu-submenu`]: {\n        [menuCls]: {\n          padding: dropdownEdgeChildPadding,\n          listStyleType: 'none',\n          backgroundColor: colorBgElevated,\n          backgroundClip: 'padding-box',\n          borderRadius: token.borderRadiusLG,\n          outline: 'none',\n          boxShadow: token.boxShadowSecondary,\n          ...genFocusStyle(token),\n\n          [`${menuCls}-item-group-title`]: {\n            padding: `${dropdownPaddingVertical}px ${controlPaddingHorizontal}px`,\n            color: token.colorTextDescription,\n            transition: `all ${motionDurationMid}`,\n          },\n\n          // ======================= Item Content =======================\n          [`${menuCls}-item`]: {\n            position: 'relative',\n            display: 'flex',\n            alignItems: 'center',\n            borderRadius: token.borderRadiusSM,\n          },\n\n          [`${menuCls}-item-icon`]: {\n            minWidth: fontSize,\n            marginInlineEnd: token.marginXS,\n            fontSize: token.fontSizeSM,\n          },\n\n          [`${menuCls}-title-content`]: {\n            flex: 'auto',\n\n            '> a': {\n              color: 'inherit',\n              transition: `all ${motionDurationMid}`,\n\n              '&:hover': {\n                color: 'inherit',\n              },\n\n              '&::after': {\n                position: 'absolute',\n                inset: 0,\n                content: '\"\"',\n              },\n            },\n          },\n\n          // =========================== Item ===========================\n          [`${menuCls}-item, ${menuCls}-submenu-title`]: {\n            clear: 'both',\n            margin: 0,\n            padding: `${dropdownPaddingVertical}px ${controlPaddingHorizontal}px`,\n            color: token.colorText,\n            fontWeight: 'normal',\n            fontSize,\n            lineHeight: token.lineHeight,\n            cursor: 'pointer',\n            transition: `all ${motionDurationMid}`,\n\n            [`&:hover, &-active`]: {\n              backgroundColor: token.controlItemBgHover,\n            },\n\n            ...genFocusStyle(token),\n\n            '&-selected': {\n              color: token.colorPrimary,\n              backgroundColor: token.controlItemBgActive,\n              '&:hover, &-active': {\n                backgroundColor: token.controlItemBgActiveHover,\n              },\n            },\n\n            '&-disabled': {\n              color: colorTextDisabled,\n              cursor: 'not-allowed',\n\n              '&:hover': {\n                color: colorTextDisabled,\n                backgroundColor: colorBgElevated,\n                cursor: 'not-allowed',\n              },\n\n              a: {\n                pointerEvents: 'none',\n              },\n            },\n\n            '&-divider': {\n              height: 1, // By design\n              margin: `${token.marginXXS}px 0`,\n              overflow: 'hidden',\n              lineHeight: 0,\n              backgroundColor: token.colorSplit,\n            },\n\n            [`${componentCls}-menu-submenu-expand-icon`]: {\n              position: 'absolute',\n              insetInlineEnd: token.paddingXS,\n\n              [`${componentCls}-menu-submenu-arrow-icon`]: {\n                marginInlineEnd: '0 !important',\n                color: token.colorTextDescription,\n                fontSize: fontSizeIcon,\n                fontStyle: 'normal',\n              },\n            },\n          },\n\n          [`${menuCls}-item-group-list`]: {\n            margin: `0 ${token.marginXS}px`,\n            padding: 0,\n            listStyle: 'none',\n          },\n\n          [`${menuCls}-submenu-title`]: {\n            paddingInlineEnd: controlPaddingHorizontal + token.fontSizeSM,\n          },\n\n          [`${menuCls}-submenu-vertical`]: {\n            position: 'relative',\n          },\n\n          [`${menuCls}-submenu${menuCls}-submenu-disabled ${componentCls}-menu-submenu-title`]: {\n            [`&, ${componentCls}-menu-submenu-arrow-icon`]: {\n              color: colorTextDisabled,\n              backgroundColor: colorBgElevated,\n              cursor: 'not-allowed',\n            },\n          },\n\n          // https://github.com/ant-design/ant-design/issues/19264\n          [`${menuCls}-submenu-selected ${componentCls}-menu-submenu-title`]: {\n            color: token.colorPrimary,\n          },\n        },\n      },\n    },\n\n    // Follow code may reuse in other components\n    [\n      initSlideMotion(token, 'slide-up'),\n      initSlideMotion(token, 'slide-down'),\n      initMoveMotion(token, 'move-up'),\n      initMoveMotion(token, 'move-down'),\n      initZoomMotion(token, 'zoom-big'),\n    ],\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Dropdown',\n  (token, { rootPrefixCls }) => {\n    const {\n      marginXXS,\n      sizePopupArrow,\n      controlHeight,\n      fontSize,\n      lineHeight,\n      paddingXXS,\n      componentCls,\n      borderRadiusOuter,\n      borderRadiusLG,\n    } = token;\n\n    const dropdownPaddingVertical = (controlHeight - fontSize * lineHeight) / 2;\n    const { dropdownArrowOffset } = getArrowOffset({\n      sizePopupArrow,\n      contentRadius: borderRadiusLG,\n      borderRadiusOuter,\n    });\n\n    const dropdownToken = mergeToken<DropdownToken>(token, {\n      menuCls: `${componentCls}-menu`,\n      rootPrefixCls,\n      dropdownArrowDistance: sizePopupArrow / 2 + marginXXS,\n      dropdownArrowOffset,\n      dropdownPaddingVertical,\n      dropdownEdgeChildPadding: paddingXXS,\n    });\n    return [\n      genBaseStyle(dropdownToken),\n      genButtonStyle(dropdownToken),\n      genStatusStyle(dropdownToken),\n    ];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase + 50,\n  }),\n);\n"
  },
  {
    "path": "components/dropdown/style/status.ts",
    "content": "import type { DropdownToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStatusStyle: GenerateStyle<DropdownToken> = token => {\n  const { componentCls, menuCls, colorError, colorTextLightSolid } = token;\n\n  const itemCls = `${menuCls}-item`;\n\n  return {\n    [`${componentCls}, ${componentCls}-menu-submenu`]: {\n      [`${menuCls} ${itemCls}`]: {\n        [`&${itemCls}-danger:not(${itemCls}-disabled)`]: {\n          color: colorError,\n\n          '&:hover': {\n            color: colorTextLightSolid,\n            backgroundColor: colorError,\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genStatusStyle;\n"
  },
  {
    "path": "components/empty/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/empty/demo/basic.vue correctly 1`] = `\n<div class=\"ant-empty\">\n  <div class=\"ant-empty-image\"><svg width=\"184\" height=\"152\" viewBox=\"0 0 184 152\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(24 31.67)\">\n          <ellipse fill-opacity=\".8\" fill=\"#F5F5F7\" cx=\"67.797\" cy=\"106.89\" rx=\"67.797\" ry=\"12.668\"></ellipse>\n          <path d=\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\" fill=\"#AEB8C2\"></path>\n          <path d=\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\" fill=\"url(#linearGradient-1)\" transform=\"translate(13.56)\"></path>\n          <path d=\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\" fill=\"#F5F5F7\"></path>\n          <path d=\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\" fill=\"#DCE0E6\"></path>\n        </g>\n        <path d=\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\" fill=\"#DCE0E6\"></path>\n        <g transform=\"translate(149.65 15.383)\" fill=\"#FFF\">\n          <ellipse cx=\"20.654\" cy=\"3.167\" rx=\"2.849\" ry=\"2.815\"></ellipse>\n          <path d=\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"></path>\n        </g>\n      </g>\n    </svg></div>\n  <p class=\"ant-empty-description\">No data</p>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/empty/demo/config-provider.vue correctly 1`] = `\n<button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n  <div class=\"ant-switch-handle\">\n    <!---->\n  </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">customize</span><span class=\"ant-switch-inner-unchecked\">default</span></span>\n</button>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"config-provider\">\n  <h3>Select</h3>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <h3>TreeSelect</h3>\n  <div style=\"width: 200px;\" class=\"ant-select ant-tree-select ant-select-single ant-select-show-arrow\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <h3>Cascader</h3>\n  <div style=\"width: 200px;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <h3>Transfer</h3>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <h3>Table</h3>\n  <div class=\"ant-table-wrapper\" style=\"margin-top: 8px;\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\" style=\"margin-top: 8px;\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->Name\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">No data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <h3>List</h3>\n  <div class=\"ant-list ant-list-split\">\n    <!---->\n    <!---->\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <div class=\"ant-list-empty-text\">\n          <div class=\"ant-empty ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/empty/demo/customize.vue correctly 1`] = `\n<div class=\"ant-empty\">\n  <div class=\"ant-empty-image\" style=\"height: 60px;\"><img alt=\"empty\" src=\"https://gw.alipayobjects.com/mdn/miniapp_social/afts/img/A*pevERLJC9v0AAAAAAAAAAABjAQAAAQ/original\"></div>\n  <p class=\"ant-empty-description\"><span> Customize <a href=\"#api\">Description</a></span></p>\n  <div class=\"ant-empty-footer\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Create Now</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/empty/demo/description.vue correctly 1`] = `\n<div class=\"ant-empty\">\n  <div class=\"ant-empty-image\"><svg width=\"184\" height=\"152\" viewBox=\"0 0 184 152\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(24 31.67)\">\n          <ellipse fill-opacity=\".8\" fill=\"#F5F5F7\" cx=\"67.797\" cy=\"106.89\" rx=\"67.797\" ry=\"12.668\"></ellipse>\n          <path d=\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\" fill=\"#AEB8C2\"></path>\n          <path d=\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\" fill=\"url(#linearGradient-1)\" transform=\"translate(13.56)\"></path>\n          <path d=\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\" fill=\"#F5F5F7\"></path>\n          <path d=\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\" fill=\"#DCE0E6\"></path>\n        </g>\n        <path d=\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\" fill=\"#DCE0E6\"></path>\n        <g transform=\"translate(149.65 15.383)\" fill=\"#FFF\">\n          <ellipse cx=\"20.654\" cy=\"3.167\" rx=\"2.849\" ry=\"2.815\"></ellipse>\n          <path d=\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"></path>\n        </g>\n      </g>\n    </svg></div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/empty/demo/simple.vue correctly 1`] = `\n<div class=\"ant-empty ant-empty-normal\">\n  <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n        <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n        <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n          <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n          <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n        </g>\n      </g>\n    </svg></div>\n  <p class=\"ant-empty-description\">No data</p>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/empty/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('empty');\n"
  },
  {
    "path": "components/empty/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Empty from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Empty', () => {\n  mountTest(Empty);\n\n  it('image size should change', () => {\n    const wrapper = mount({\n      render() {\n        return <Empty imageStyle={{ height: '20px' }} />;\n      },\n    });\n    expect(wrapper.find('.ant-empty-image').element.style.height).toBe('20px');\n  });\n\n  it('description can be false', () => {\n    const wrapper = mount({\n      render() {\n        return <Empty description={false} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-empty-description').length).toBe(0);\n  });\n});\n"
  },
  {
    "path": "components/empty/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n简单的展示。\n\n## en-US\n\nSimplest Usage.\n\n</docs>\n\n<template>\n  <a-empty />\n</template>\n"
  },
  {
    "path": "components/empty/demo/config-provider.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 全局化配置\n  en-US: ConfigProvider\n---\n\n## zh-CN\n\n自定义全局组件的 Empty 样式。\n\n## en-US\n\nUse ConfigProvider set global Empty style.\n\n</docs>\n\n<template>\n  <a-switch\n    v-model:checked=\"customize\"\n    un-checked-children=\"default\"\n    checked-children=\"customize\"\n  />\n  <a-divider />\n  <a-config-provider>\n    <template v-if=\"customize\" #renderEmpty>\n      <div style=\"text-align: center\">\n        <smile-outlined style=\"font-size: 20px\" />\n        <p>Data Not Found</p>\n      </div>\n    </template>\n    <div class=\"config-provider\">\n      <h3>Select</h3>\n      <a-select :style=\"style\" :options=\"[]\" />\n\n      <h3>TreeSelect</h3>\n      <a-tree-select :style=\"style\" :tree-data=\"[]\" />\n\n      <h3>Cascader</h3>\n      <a-cascader :style=\"style\" :options=\"[]\" :show-search=\"true\" />\n\n      <h3>Transfer</h3>\n      <a-transfer :data-source=\"[]\" />\n\n      <h3>Table</h3>\n      <a-table style=\"margin-top: 8px\" :columns=\"columns\" :data-source=\"[]\" />\n      <h3>List</h3>\n      <a-list :data-source=\"[]\" />\n    </div>\n  </a-config-provider>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { SmileOutlined } from '@ant-design/icons-vue';\nconst customize = ref<boolean>(false);\n\nconst style = { width: '200px' };\nconst columns = [{ title: 'Name' }, { title: 'Age' }];\n</script>\n<style scoped>\n.code-box-demo .config-provider h3 {\n  font-size: inherit;\n  margin: 16px 0 8px 0;\n}\n</style>\n"
  },
  {
    "path": "components/empty/demo/customize.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义\n  en-US: Customize\n---\n\n## zh-CN\n\n自定义图片、描述、附属内容。\n\n## en-US\n\nCustomize image, description and extra content.\n\n</docs>\n\n<template>\n  <a-empty\n    image=\"https://gw.alipayobjects.com/mdn/miniapp_social/afts/img/A*pevERLJC9v0AAAAAAAAAAABjAQAAAQ/original\"\n    :image-style=\"{\n      height: '60px',\n    }\"\n  >\n    <template #description>\n      <span>\n        Customize\n        <a href=\"#api\">Description</a>\n      </span>\n    </template>\n    <a-button type=\"primary\">Create Now</a-button>\n  </a-empty>\n</template>\n"
  },
  {
    "path": "components/empty/demo/description.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 无描述\n  en-US: No description\n---\n\n## zh-CN\n\n无描述展示。\n\n## en-US\n\nSimplest Usage with no description.\n\n</docs>\n\n<template>\n  <a-empty :description=\"null\" />\n</template>\n"
  },
  {
    "path": "components/empty/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n    <simple />\n    <customize />\n    <config-provider />\n    <description />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Simple from './simple.vue';\nimport Customize from './customize.vue';\nimport ConfigProvider from './config-provider.vue';\nimport Description from './description.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Simple,\n    Customize,\n    ConfigProvider,\n    Description,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/empty/demo/simple.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 选择图片\n  en-US: Chose image\n---\n\n## zh-CN\n\n可以通过设置 `image` 为 `Empty.PRESENTED_IMAGE_SIMPLE` 选择另一种风格的图片。\n\n## en-US\n\nYou can choose another style of `image` by setting image to `Empty.PRESENTED_IMAGE_SIMPLE`.\n\n</docs>\n<template>\n  <a-empty :image=\"simpleImage\" />\n</template>\n<script lang=\"ts\" setup>\nimport { Empty } from 'ant-design-vue';\nconst simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;\n</script>\n"
  },
  {
    "path": "components/empty/empty.tsx",
    "content": "import { useToken } from '../theme/internal';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport type { CSSProperties } from 'vue';\nimport { defineComponent, computed } from 'vue';\n\nconst Empty = defineComponent({\n  compatConfig: { MODE: 3 },\n  setup() {\n    const [, token] = useToken();\n\n    const themeStyle = computed<CSSProperties>(() => {\n      const bgColor = new TinyColor(token.value.colorBgBase);\n\n      // Dark Theme need more dark of this\n      if (bgColor.toHsl().l < 0.5) {\n        return {\n          opacity: 0.65,\n        };\n      }\n      return {};\n    });\n\n    return () => (\n      <svg\n        style={themeStyle.value}\n        width=\"184\"\n        height=\"152\"\n        viewBox=\"0 0 184 152\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g fill=\"none\" fill-rule=\"evenodd\">\n          <g transform=\"translate(24 31.67)\">\n            <ellipse\n              fill-opacity=\".8\"\n              fill=\"#F5F5F7\"\n              cx=\"67.797\"\n              cy=\"106.89\"\n              rx=\"67.797\"\n              ry=\"12.668\"\n            />\n            <path\n              d=\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\"\n              fill=\"#AEB8C2\"\n            />\n            <path\n              d=\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\"\n              fill=\"url(#linearGradient-1)\"\n              transform=\"translate(13.56)\"\n            />\n            <path\n              d=\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\"\n              fill=\"#F5F5F7\"\n            />\n            <path\n              d=\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\"\n              fill=\"#DCE0E6\"\n            />\n          </g>\n          <path\n            d=\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\"\n            fill=\"#DCE0E6\"\n          />\n          <g transform=\"translate(149.65 15.383)\" fill=\"#FFF\">\n            <ellipse cx=\"20.654\" cy=\"3.167\" rx=\"2.849\" ry=\"2.815\" />\n            <path d=\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\" />\n          </g>\n        </g>\n      </svg>\n    );\n  },\n});\n\nEmpty.PRESENTED_IMAGE_DEFAULT = true;\n\nexport default Empty;\n"
  },
  {
    "path": "components/empty/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Empty\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ZdiZSLzEV0wAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*obM7S5lIxeMAAAAAAAAAAAAADrJ8AQ/original\n---\n\nEmpty state placeholder.\n\n## When To Use\n\n- When there is no data provided, display for friendly tips.\n- User tutorial to create something in fresh new situation.\n\n## API\n\n```jsx\n<Empty>\n  <Button>Create</Button>\n</Empty>\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| description | Customize description | string \\| v-slot | - |  |\n| image | Customize image. Will tread as image url when string provided | string \\| v-slot | false |  |\n| imageStyle | style of image | CSSProperties | - |  |\n\n## Built-in images\n\n- Empty.PRESENTED_IMAGE_SIMPLE\n\n  <img src=\"https://user-images.githubusercontent.com/507615/54591679-b0ceb580-4a65-11e9-925c-ad15b4eae93d.png\" height=\"35px\" />\n\n- Empty.PRESENTED_IMAGE_DEFAULT\n\n  <img src=\"https://user-images.githubusercontent.com/507615/54591670-ac0a0180-4a65-11e9-846c-e55ffce0fe7b.png\" height=\"100px\" />\n"
  },
  {
    "path": "components/empty/index.tsx",
    "content": "import { defineComponent, h } from 'vue';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport classNames from '../_util/classNames';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport { filterEmpty } from '../_util/props-util';\nimport type { VueNode } from '../_util/type';\nimport { anyType, objectType, withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nimport useStyle from './style';\n\ninterface Locale {\n  description?: string;\n}\n\nexport const emptyProps = () => ({\n  prefixCls: String,\n  imageStyle: objectType<CSSProperties>(),\n  image: anyType<VueNode>(),\n  description: anyType<VueNode>(),\n});\n\nexport type EmptyProps = Partial<ExtractPropTypes<ReturnType<typeof emptyProps>>>;\n\nconst Empty = defineComponent({\n  name: 'AEmpty',\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: emptyProps(),\n  setup(props, { slots = {}, attrs }) {\n    const { direction, prefixCls: prefixClsRef } = useConfigInject('empty', props);\n\n    const [wrapSSR, hashId] = useStyle(prefixClsRef);\n\n    return () => {\n      const prefixCls = prefixClsRef.value;\n      const {\n        image: mergedImage = slots.image?.() || h(DefaultEmptyImg),\n        description = slots.description?.() || undefined,\n        imageStyle,\n        class: className = '',\n        ...restProps\n      } = { ...props, ...attrs };\n      const image =\n        typeof mergedImage === 'function' ? (mergedImage as () => VueNode)() : mergedImage;\n      const isNormal =\n        typeof image === 'object' && 'type' in image && (image.type as any).PRESENTED_IMAGE_SIMPLE;\n      return wrapSSR(\n        <LocaleReceiver\n          componentName=\"Empty\"\n          children={(locale: Locale) => {\n            const des = typeof description !== 'undefined' ? description : locale.description;\n            const alt = typeof des === 'string' ? des : 'empty';\n            let imageNode: EmptyProps['image'] = null;\n\n            if (typeof image === 'string') {\n              imageNode = <img alt={alt} src={image} />;\n            } else {\n              imageNode = image;\n            }\n\n            return (\n              <div\n                class={classNames(prefixCls, className, hashId.value, {\n                  [`${prefixCls}-normal`]: isNormal,\n                  [`${prefixCls}-rtl`]: direction.value === 'rtl',\n                })}\n                {...restProps}\n              >\n                <div class={`${prefixCls}-image`} style={imageStyle}>\n                  {imageNode}\n                </div>\n                {des && <p class={`${prefixCls}-description`}>{des}</p>}\n                {slots.default && (\n                  <div class={`${prefixCls}-footer`}>{filterEmpty(slots.default())}</div>\n                )}\n              </div>\n            );\n          }}\n        />,\n      );\n    };\n  },\n});\n\nEmpty.PRESENTED_IMAGE_DEFAULT = () => h(DefaultEmptyImg);\nEmpty.PRESENTED_IMAGE_SIMPLE = () => h(SimpleEmptyImg);\n\nexport default withInstall(Empty);\n"
  },
  {
    "path": "components/empty/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Empty\nsubtitle: 空状态\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ZdiZSLzEV0wAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*obM7S5lIxeMAAAAAAAAAAAAADrJ8AQ/original\n---\n\n空状态时的展示占位图。\n\n## 何时使用\n\n- 当目前没有数据时，用于显式的用户提示。\n- 初始化场景时的引导创建流程。\n\n## API\n\n```jsx\n<Empty>\n  <Button>创建</Button>\n</Empty>\n```\n\n| 参数        | 说明                                         | 类型             | 默认值 | 版本 |\n| ----------- | -------------------------------------------- | ---------------- | ------ | ---- |\n| description | 自定义描述内容                               | string \\| v-slot | -      |      |\n| image       | 设置显示图片，为 string 时表示自定义图片地址 | string \\| v-slot | false  |      |\n| imageStyle  | 图片样式                                     | CSSProperties    | -      |      |\n\n## 内置图片\n\n- Empty.PRESENTED_IMAGE_SIMPLE\n\n  <img src=\"https://user-images.githubusercontent.com/507615/54591679-b0ceb580-4a65-11e9-925c-ad15b4eae93d.png\" height=\"35px\" />\n\n- Empty.PRESENTED_IMAGE_DEFAULT\n\n  <img src=\"https://user-images.githubusercontent.com/507615/54591670-ac0a0180-4a65-11e9-846c-e55ffce0fe7b.png\" height=\"100px\" />\n"
  },
  {
    "path": "components/empty/simple.tsx",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport { computed, defineComponent } from 'vue';\nimport { useToken } from '../theme/internal';\n\nconst Simple = defineComponent({\n  compatConfig: { MODE: 3 },\n  setup() {\n    const [, token] = useToken();\n\n    const color = computed(() => {\n      const { colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer } = token.value;\n\n      return {\n        borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexString(),\n        shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(),\n        contentColor: new TinyColor(colorFillQuaternary)\n          .onBackground(colorBgContainer)\n          .toHexString(),\n      };\n    });\n\n    return () => (\n      <svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n          <ellipse fill={color.value.shadowColor} cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\" />\n          <g fill-rule=\"nonzero\" stroke={color.value.borderColor}>\n            <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\" />\n            <path\n              d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\"\n              fill={color.value.contentColor}\n            />\n          </g>\n        </g>\n      </svg>\n    );\n  },\n});\n\nSimple.PRESENTED_IMAGE_SIMPLE = true;\nexport default Simple;\n"
  },
  {
    "path": "components/empty/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {}\n\ninterface EmptyToken extends FullToken<'Empty'> {\n  emptyImgCls: string;\n  emptyImgHeight: number;\n  emptyImgHeightSM: number;\n  emptyImgHeightMD: number;\n}\n\n// ============================== Shared ==============================\nconst genSharedEmptyStyle: GenerateStyle<EmptyToken> = (token): CSSObject => {\n  const { componentCls, margin, marginXS, marginXL, fontSize, lineHeight } = token;\n\n  return {\n    [componentCls]: {\n      marginInline: marginXS,\n      fontSize,\n      lineHeight,\n      textAlign: 'center',\n\n      // 原来 &-image 没有父子结构，现在为了外层承担我们的hashId，改成父子结果\n      [`${componentCls}-image`]: {\n        height: token.emptyImgHeight,\n        marginBottom: marginXS,\n        opacity: token.opacityImage,\n\n        img: {\n          height: '100%',\n        },\n\n        svg: {\n          height: '100%',\n          margin: 'auto',\n        },\n      },\n\n      // 原来 &-footer 没有父子结构，现在为了外层承担我们的hashId，改成父子结果\n      [`${componentCls}-footer`]: {\n        marginTop: margin,\n      },\n\n      '&-normal': {\n        marginBlock: marginXL,\n        color: token.colorTextDisabled,\n\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightMD,\n        },\n      },\n\n      '&-small': {\n        marginBlock: marginXS,\n        color: token.colorTextDisabled,\n\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightSM,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Empty', token => {\n  const { componentCls, controlHeightLG } = token;\n\n  const emptyToken: EmptyToken = mergeToken<EmptyToken>(token, {\n    emptyImgCls: `${componentCls}-img`,\n    emptyImgHeight: controlHeightLG * 2.5,\n    emptyImgHeightMD: controlHeightLG,\n    emptyImgHeightSM: controlHeightLG * 0.875,\n  });\n\n  return [genSharedEmptyStyle(emptyToken)];\n});\n"
  },
  {
    "path": "components/flex/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/flex/demo/align.vue correctly 1`] = `\n<div class=\"ant-flex ant-flex-align-start ant-flex-gap-middle ant-flex-vertical\">\n  <p>Select justify :</p>\n  <div class=\"ant-segmented \">\n    <div class=\"ant-segmented-group\">\n      <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"flex-start\">flex-start</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"center\">center</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"flex-end\">flex-end</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"space-between\">space-between</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"space-around\">space-around</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"space-evenly\">space-evenly</div>\n      </label>\n    </div>\n  </div>\n  <p>Select align :</p>\n  <div class=\"ant-segmented \">\n    <div class=\"ant-segmented-group\">\n      <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"flex-start\">flex-start</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"center\">center</div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"flex-end\">flex-end</div>\n      </label>\n    </div>\n  </div>\n  <div class=\"ant-flex ant-flex-align-flex-start ant-flex-justify-flex-start\" style=\"width: 100%; height: 120px; border-radius: 6px; border: 1px solid #40a9ff;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/flex/demo/basic.vue correctly 1`] = `\n<div class=\"ant-flex ant-flex-align-stretch ant-flex-gap-middle ant-flex-vertical\">\n  <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"horizontal\"><span class=\"ant-radio-inner\"></span></span><span>horizontal</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"vertical\"><span class=\"ant-radio-inner\"></span></span><span>vertical</span></label></div>\n  <div class=\"ant-flex\">\n    <div style=\"width: 25%; height: 54px; background: rgba(22, 119, 255, 0.749);\"></div>\n    <div style=\"width: 25%; height: 54px; background: rgb(22, 119, 255);\"></div>\n    <div style=\"width: 25%; height: 54px; background: rgba(22, 119, 255, 0.749);\"></div>\n    <div style=\"width: 25%; height: 54px; background: rgb(22, 119, 255);\"></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/flex/demo/combination.vue correctly 1`] = `\n<div style=\"width: 620px;\" class=\"ant-card  ant-card-bordered\">\n  <!---->\n  <!---->\n  <div class=\"ant-card-body\" style=\"padding: 0px; overflow: hidden;\">\n    <div class=\"ant-flex ant-flex-justify-space-between\"><img alt=\"avatar\" src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" style=\"display: block; width: 273px;\">\n      <div class=\"ant-flex ant-flex-align-flex-end ant-flex-justify-space-between ant-flex-vertical\" style=\"padding: 32px;\">\n        <article class=\"ant-typography\">\n          <h3 class=\"ant-typography\"> “antd is an enterprise-class UI design language and Vue UI library.”\n            <!---->\n          </h3>\n        </article><a class=\"ant-btn ant-btn-primary\" href=\"https://antdv.com\" target=\"_blank\">\n          <!----><span>Get Start</span>\n        </a>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/flex/demo/gap.vue correctly 1`] = `\n<div class=\"ant-flex ant-flex-align-stretch ant-flex-gap-middle ant-flex-vertical\">\n  <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"small\"><span class=\"ant-radio-inner\"></span></span><span>small</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"middle\"><span class=\"ant-radio-inner\"></span></span><span>middle</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"large\"><span class=\"ant-radio-inner\"></span></span><span>large</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"customize\"><span class=\"ant-radio-inner\"></span></span><span>customize</span></label></div>\n  <!--v-if-->\n  <div class=\"ant-flex ant-flex-gap-small\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Primary</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Default</span>\n    </button><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>Dashed</span>\n    </button><button class=\"ant-btn ant-btn-link\" type=\"button\">\n      <!----><span>Link</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/flex/demo/wrap.vue correctly 1`] = `\n<div class=\"ant-flex ant-flex-wrap-wrap ant-flex-gap-small\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Button</span>\n  </button></div>\n`;\n"
  },
  {
    "path": "components/flex/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('flex');\n"
  },
  {
    "path": "components/flex/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Flex from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Flex', () => {\n  mountTest(Flex);\n\n  it('Flex', () => {\n    const wrapper = mount({\n      render() {\n        return <Flex justify=\"center\">test</Flex>;\n      },\n    });\n    const wrapper2 = mount({\n      render() {\n        return <Flex gap={100}>test</Flex>;\n      },\n    });\n    expect(wrapper.classes('ant-flex')).toBeTruthy();\n    expect(wrapper.find('.ant-flex-justify-center')).toBeTruthy();\n    expect(wrapper2.classes('ant-flex')).toBeTruthy();\n    expect(wrapper2.element.style.gap).toBe('100px');\n  });\n\n  it('Component work', () => {\n    const wrapper = mount({\n      render() {\n        return <Flex>test</Flex>;\n      },\n    });\n    const wrapper2 = mount({\n      render() {\n        return <Flex component=\"span\">test</Flex>;\n      },\n    });\n    expect(wrapper.find('.ant-flex').element.tagName).toBe('DIV');\n    expect(wrapper2.find('.ant-flex').element.tagName).toBe('SPAN');\n  });\n\n  it('when vertical=true should stretch work', () => {\n    const wrapper = mount({\n      render() {\n        return <Flex vertical>test</Flex>;\n      },\n    });\n    const wrapper2 = mount({\n      render() {\n        return (\n          <Flex vertical align=\"center\">\n            test\n          </Flex>\n        );\n      },\n    });\n    expect(wrapper.find('.ant-flex-align-stretch')).toBeTruthy();\n    expect(wrapper2.find('.ant-flex-align-center')).toBeTruthy();\n  });\n});\n"
  },
  {
    "path": "components/flex/demo/align.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 对齐方式\n  en-US: Align\n---\n\n## zh-CN\n\n设置对齐方式。\n\n## en-US\n\nSet align.\n\n</docs>\n\n<template>\n  <a-flex gap=\"middle\" align=\"start\" vertical>\n    <p>Select justify :</p>\n    <a-segmented v-model:value=\"justify\" :options=\"justifyOptions\" />\n    <p>Select align :</p>\n    <a-segmented v-model:value=\"alignItems\" :options=\"alignOptions\" />\n    <a-flex :style=\"{ ...boxStyle }\" :justify=\"justify\" :align=\"alignItems\">\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button type=\"primary\">Primary</a-button>\n    </a-flex>\n  </a-flex>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive, ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport type { FlexProps } from 'ant-design-vue';\nconst justifyOptions = reactive<FlexProps['justify'][]>([\n  'flex-start',\n  'center',\n  'flex-end',\n  'space-between',\n  'space-around',\n  'space-evenly',\n]);\n\nconst alignOptions = reactive<FlexProps['align'][]>(['flex-start', 'center', 'flex-end']);\nconst justify = ref(justifyOptions[0]);\nconst alignItems = ref(alignOptions[0]);\nconst boxStyle: CSSProperties = {\n  width: '100%',\n  height: '120px',\n  borderRadius: '6px',\n  border: '1px solid #40a9ff',\n};\n</script>\n"
  },
  {
    "path": "components/flex/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本布局\n  en-US: Basic\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe basic usage.\n\n</docs>\n\n<template>\n  <a-flex gap=\"middle\" vertical>\n    <a-radio-group v-model:value=\"value\">\n      <a-radio value=\"horizontal\">horizontal</a-radio>\n      <a-radio value=\"vertical\">vertical</a-radio>\n    </a-radio-group>\n    <a-flex :vertical=\"value === 'vertical'\">\n      <div\n        v-for=\"(item, index) in new Array(4)\"\n        :key=\"item\"\n        :style=\"{ ...baseStyle, background: `${index % 2 ? '#1677ff' : '#1677ffbf'}` }\"\n      />\n    </a-flex>\n  </a-flex>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nconst value = ref('horizontal');\nconst baseStyle: CSSProperties = {\n  width: '25%',\n  height: '54px',\n};\n</script>\n"
  },
  {
    "path": "components/flex/demo/combination.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 组合使用\n  en-US: combination\n---\n\n## zh-CN\n\n嵌套使用，可以实现更复杂的布局。\n\n## en-US\n\nNesting can achieve more complex layouts.\n\n</docs>\n\n<template>\n  <a-card :style=\"cardStyle\" :body-style=\"{ padding: 0, overflow: 'hidden' }\">\n    <a-flex justify=\"space-between\">\n      <img\n        alt=\"avatar\"\n        src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n        :style=\"imgStyle\"\n      />\n      <a-flex vertical align=\"flex-end\" justify=\"space-between\" :style=\"{ padding: '32px' }\">\n        <a-typography>\n          <a-typography-title :level=\"3\">\n            “antd is an enterprise-class UI design language and Vue UI library.”\n          </a-typography-title>\n        </a-typography>\n        <a-button type=\"primary\" href=\"https://antdv.com\" target=\"_blank\">Get Start</a-button>\n      </a-flex>\n    </a-flex>\n  </a-card>\n</template>\n\n<script setup lang=\"ts\">\nimport type { CSSProperties } from 'vue';\nconst cardStyle: CSSProperties = {\n  width: '620px',\n};\nconst imgStyle: CSSProperties = {\n  display: 'block',\n  width: '273px',\n};\n</script>\n"
  },
  {
    "path": "components/flex/demo/gap.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 设置间隙\n  en-US: gap\n---\n\n## zh-CN\n\n使用 `gap` 设置元素之间的间距，预设了 `small`、`middle`、`large` 三种尺寸，也可以自定义间距。\n\n## en-US\n\nSet the `gap` between elements, which has three preset sizes: `small`, `middle`, `large`, You can also customize the gap size.\n\n</docs>\n\n<template>\n  <a-flex gap=\"middle\" vertical>\n    <a-radio-group v-model:value=\"gapSize\">\n      <a-radio value=\"small\">small</a-radio>\n      <a-radio value=\"middle\">middle</a-radio>\n      <a-radio value=\"large\">large</a-radio>\n      <a-radio value=\"customize\">customize</a-radio>\n    </a-radio-group>\n    <template v-if=\"gapSize === 'customize'\">\n      <a-slider v-model:value=\"customGapSize\" />\n    </template>\n    <a-flex :gap=\"gapSize !== 'customize' ? gapSize : customGapSize\">\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button>Default</a-button>\n      <a-button type=\"dashed\">Dashed</a-button>\n      <a-button type=\"link\">Link</a-button>\n    </a-flex>\n  </a-flex>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\n\ntype SizeType = 'small' | 'middle' | 'large' | undefined;\n\nconst gapSize = ref<SizeType | 'customize'>('small');\n\nconst customGapSize = ref<number>(0);\n</script>\n"
  },
  {
    "path": "components/flex/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Align />\n    <Gap />\n    <Wrap />\n    <Combination />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Align from './align.vue';\nimport Basic from './basic.vue';\nimport Combination from './combination.vue';\nimport Gap from './gap.vue';\nimport Wrap from './wrap.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Align,\n    Basic,\n    Combination,\n    Gap,\n    Wrap,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/flex/demo/wrap.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自动换行\n  en-US: Wrap\n---\n\n## zh-CN\n\n自动换行。\n\n## en-US\n\nAuto wrap line.\n\n</docs>\n\n<template>\n  <a-flex wrap=\"wrap\" gap=\"small\">\n    <a-button v-for=\"item in new Array(24)\" :key=\"item\" type=\"primary\">Button</a-button>\n  </a-flex>\n</template>\n"
  },
  {
    "path": "components/flex/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Layout\ntitle: Flex\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*SMzgSJZE_AwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8yArQ43EGccAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n## When To Use\n\n- Good for setting spacing between elements.\n- Suitable for setting various horizontal and vertical alignments.\n\n### Difference with Space component\n\n- Space is used to set the spacing between inline elements. It will add a wrapper element for each child element for inline alignment. Suitable for equidistant arrangement of multiple child elements in rows and columns.\n- Flex is used to set the layout of block-level elements. It does not add a wrapper element. Suitable for layout of child elements in vertical or horizontal direction, and provides more flexibility and control.\n\n## API\n\n> This component is available since `ant-design-vue@4.0.7`. The default behavior of Flex in horizontal mode is to align upward, In vertical mode, aligns the stretch, You can adjust this via properties.\n\n| Property | Description | type | Default | Version |\n| --- | --- | --- | --- | --- |\n| vertical | Is direction of the flex vertical, use `flex-direction: column` | boolean | `false` |  |\n| wrap | Set whether the element is displayed in a single line or in multiple lines | reference [flex-wrap](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap) | nowrap |  |\n| justify | Sets the alignment of elements in the direction of the main axis | reference [justify-content](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) | normal |  |\n| align | Sets the alignment of elements in the direction of the cross axis | reference [align-items](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) | normal |  |\n| flex | flex CSS shorthand properties | reference [flex](https://developer.mozilla.org/en-US/docs/Web/CSS/flex) | normal |  |\n| gap | Sets the gap between grids | `small` \\| `middle` \\| `large` \\| string \\| number | - |  |\n| component | custom element type | Component | `div` |  |\n"
  },
  {
    "path": "components/flex/index.tsx",
    "content": "import { computed, defineComponent } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport { useConfigContextInject } from '../config-provider/context';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nimport { isPresetSize } from '../_util/gapSize';\nimport omit from '../_util/omit';\nimport { withInstall } from '../_util/type';\nimport type { FlexProps } from './interface';\nimport { flexProps } from './interface';\nimport createFlexClassNames from './utils';\n\nconst AFlex = defineComponent({\n  name: 'AFlex',\n  inheritAttrs: false,\n  props: flexProps(),\n  setup(props, { slots, attrs }) {\n    const { flex: ctxFlex, direction: ctxDirection } = useConfigContextInject();\n    const { prefixCls } = useConfigInject('flex', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const mergedCls = computed(() => [\n      prefixCls.value,\n      hashId.value,\n      createFlexClassNames(prefixCls.value, props),\n      {\n        [`${prefixCls.value}-rtl`]: ctxDirection.value === 'rtl',\n        [`${prefixCls.value}-gap-${props.gap}`]: isPresetSize(props.gap),\n        [`${prefixCls.value}-vertical`]: props.vertical ?? ctxFlex?.value.vertical,\n      },\n    ]);\n    return () => {\n      const { flex, gap, component: Component = 'div', ...othersProps } = props;\n\n      const mergedStyle: CSSProperties = {};\n\n      if (flex) {\n        mergedStyle.flex = flex;\n      }\n\n      if (gap && !isPresetSize(gap)) {\n        mergedStyle.gap = `${gap}px`;\n      }\n\n      return wrapSSR(\n        <Component\n          class={[attrs.class, mergedCls.value]}\n          style={[attrs.style as CSSProperties, mergedStyle]}\n          {...omit(othersProps, ['justify', 'wrap', 'align', 'vertical'])}\n        >\n          {slots.default?.()}\n        </Component>,\n      );\n    };\n  },\n});\n\nexport default withInstall(AFlex);\nexport type { FlexProps };\n"
  },
  {
    "path": "components/flex/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 弹性布局\ntype: 布局\ntitle: Flex\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*SMzgSJZE_AwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8yArQ43EGccAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n## 何时使用\n\n- 适合设置元素之间的间距。\n- 适合设置各种水平、垂直对齐方式。\n\n### 与 Space 组件的区别\n\n- Space 为内联元素提供间距，其本身会为每一个子元素添加包裹元素用于内联对齐。适用于行、列中多个子元素的等距排列。\n- Flex 为块级元素提供间距，其本身不会添加包裹元素。适用于垂直或水平方向上的子元素布局，并提供了更多的灵活性和控制能力。\n\n## API\n\n> 自 `ant-design-vue@4.0.7` 版本开始提供该组件。Flex 组件默认行为在水平模式下，为向上对齐，在垂直模式下，为拉伸对齐，你可以通过属性进行调整。\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| vertical | flex 主轴的方向是否垂直，使用 `flex-direction: column` | boolean | `false` |\n| wrap | 设置元素单行显示还是多行显示 | 参考 [flex-wrap](https://developer.mozilla.org/zh-CN/docs/Web/CSS/flex-wrap) | nowrap |  |\n| justify | 设置元素在主轴方向上的对齐方式 | 参考 [justify-content](https://developer.mozilla.org/zh-CN/docs/Web/CSS/justify-content) | normal |  |\n| align | 设置元素在交叉轴方向上的对齐方式 | 参考 [align-items](https://developer.mozilla.org/zh-CN/docs/Web/CSS/align-items) | normal |  |\n| flex | flex CSS 简写属性 | 参考 [flex](https://developer.mozilla.org/zh-CN/docs/Web/CSS/flex) | normal |  |\n| gap | 设置网格之间的间隙 | `small` \\| `middle` \\| `large` \\| string \\| number | - |  |\n| component | 自定义元素类型 | Component | `div` |  |\n"
  },
  {
    "path": "components/flex/interface.ts",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport type { SizeType } from '../config-provider/SizeContext';\nimport { anyType, booleanType, someType, stringType } from '../_util/type';\n\nexport const flexProps = () => ({\n  prefixCls: stringType(),\n  vertical: booleanType(),\n  wrap: stringType<CSSProperties['flex-wrap']>(),\n  justify: stringType<CSSProperties['justify-content']>(),\n  align: stringType<CSSProperties['align-items']>(),\n  flex: someType<CSSProperties['flex']>([Number, String]),\n  gap: someType<CSSProperties['gap'] | SizeType>([Number, String]),\n  component: anyType(),\n});\n\nexport type FlexProps = Partial<ExtractPropTypes<ReturnType<typeof flexProps>> & HTMLElement>;\n"
  },
  {
    "path": "components/flex/style/index.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\n\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { alignItemsValues, flexWrapValues, justifyContentValues } from '../utils';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  // Component token here\n}\n\nexport interface FlexToken extends FullToken<'Flex'> {\n  /**\n   * @nameZH 小间隙\n   * @nameEN Small Gap\n   * @desc 控制元素的小间隙。\n   * @descEN Control the small gap of the element.\n   */\n  flexGapSM: number;\n  /**\n   * @nameZH 间隙\n   * @nameEN Gap\n   * @desc 控制元素的间隙。\n   * @descEN Control the gap of the element.\n   */\n  flexGap: number;\n  /**\n   * @nameZH 大间隙\n   * @nameEN Large Gap\n   * @desc 控制元素的大间隙。\n   * @descEN Control the large gap of the element.\n   */\n  flexGapLG: number;\n}\n\nconst genFlexStyle: GenerateStyle<FlexToken> = token => {\n  const { componentCls } = token;\n  return {\n    [componentCls]: {\n      display: 'flex',\n      '&-vertical': {\n        flexDirection: 'column',\n      },\n      '&-rtl': {\n        direction: 'rtl',\n      },\n      '&:empty': {\n        display: 'none',\n      },\n    },\n  };\n};\n\nconst genFlexGapStyle: GenerateStyle<FlexToken> = token => {\n  const { componentCls } = token;\n  return {\n    [componentCls]: {\n      '&-gap-small': {\n        gap: token.flexGapSM,\n      },\n      '&-gap-middle': {\n        gap: token.flexGap,\n      },\n      '&-gap-large': {\n        gap: token.flexGapLG,\n      },\n    },\n  };\n};\n\nconst genFlexWrapStyle: GenerateStyle<FlexToken> = token => {\n  const { componentCls } = token;\n  const wrapStyle: CSSInterpolation = {};\n  flexWrapValues.forEach(value => {\n    wrapStyle[`${componentCls}-wrap-${value}`] = { flexWrap: value };\n  });\n  return wrapStyle;\n};\n\nconst genAlignItemsStyle: GenerateStyle<FlexToken> = token => {\n  const { componentCls } = token;\n  const alignStyle: CSSInterpolation = {};\n  alignItemsValues.forEach(value => {\n    alignStyle[`${componentCls}-align-${value}`] = { alignItems: value };\n  });\n  return alignStyle;\n};\n\nconst genJustifyContentStyle: GenerateStyle<FlexToken> = token => {\n  const { componentCls } = token;\n  const justifyStyle: CSSInterpolation = {};\n  justifyContentValues.forEach(value => {\n    justifyStyle[`${componentCls}-justify-${value}`] = { justifyContent: value };\n  });\n  return justifyStyle;\n};\n\nexport default genComponentStyleHook<'Flex'>('Flex', token => {\n  const flexToken = mergeToken<FlexToken>(token, {\n    flexGapSM: token.paddingXS,\n    flexGap: token.padding,\n    flexGapLG: token.paddingLG,\n  });\n  return [\n    genFlexStyle(flexToken),\n    genFlexGapStyle(flexToken),\n    genFlexWrapStyle(flexToken),\n    genAlignItemsStyle(flexToken),\n    genJustifyContentStyle(flexToken),\n  ];\n});\n"
  },
  {
    "path": "components/flex/utils.ts",
    "content": "import classNames from '../_util/classNames';\n\nimport type { FlexProps } from './interface';\n\nexport const flexWrapValues = ['wrap', 'nowrap', 'wrap-reverse'] as const;\n\nexport const justifyContentValues = [\n  'flex-start',\n  'flex-end',\n  'start',\n  'end',\n  'center',\n  'space-between',\n  'space-around',\n  'space-evenly',\n  'stretch',\n  'normal',\n  'left',\n  'right',\n] as const;\n\nexport const alignItemsValues = [\n  'center',\n  'start',\n  'end',\n  'flex-start',\n  'flex-end',\n  'self-start',\n  'self-end',\n  'baseline',\n  'normal',\n  'stretch',\n] as const;\n\nconst genClsWrap = (prefixCls: string, props: FlexProps) => {\n  const wrapCls: Record<PropertyKey, boolean> = {};\n  flexWrapValues.forEach(cssKey => {\n    wrapCls[`${prefixCls}-wrap-${cssKey}`] = props.wrap === cssKey;\n  });\n  return wrapCls;\n};\n\nconst genClsAlign = (prefixCls: string, props: FlexProps) => {\n  const alignCls: Record<PropertyKey, boolean> = {};\n  alignItemsValues.forEach(cssKey => {\n    alignCls[`${prefixCls}-align-${cssKey}`] = props.align === cssKey;\n  });\n  alignCls[`${prefixCls}-align-stretch`] = !props.align && !!props.vertical;\n  return alignCls;\n};\n\nconst genClsJustify = (prefixCls: string, props: FlexProps) => {\n  const justifyCls: Record<PropertyKey, boolean> = {};\n  justifyContentValues.forEach(cssKey => {\n    justifyCls[`${prefixCls}-justify-${cssKey}`] = props.justify === cssKey;\n  });\n  return justifyCls;\n};\n\nfunction createFlexClassNames(prefixCls: string, props: FlexProps) {\n  return classNames({\n    ...genClsWrap(prefixCls, props),\n    ...genClsAlign(prefixCls, props),\n    ...genClsJustify(prefixCls, props),\n  });\n}\n\nexport default createFlexClassNames;\n"
  },
  {
    "path": "components/float-button/BackTop.tsx",
    "content": "import VerticalAlignTopOutlined from '@ant-design/icons-vue/VerticalAlignTopOutlined';\nimport { getTransitionProps } from '../_util/transition';\nimport {\n  defineComponent,\n  nextTick,\n  onActivated,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  ref,\n  watch,\n  onDeactivated,\n  Transition,\n} from 'vue';\nimport FloatButton, { floatButtonPrefixCls } from './FloatButton';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport getScroll from '../_util/getScroll';\nimport scrollTo from '../_util/scrollTo';\nimport throttleByAnimationFrame from '../_util/throttleByAnimationFrame';\nimport { initDefaultProps } from '../_util/props-util';\nimport { backTopProps } from './interface';\n\nimport useStyle from './style';\nimport { useInjectFloatButtonGroupContext } from './context';\n\nconst BackTop = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABackTop',\n  inheritAttrs: false,\n  props: initDefaultProps(backTopProps(), {\n    visibilityHeight: 400,\n    target: () => window,\n    duration: 450,\n    type: 'default',\n    shape: 'circle',\n  }),\n  // emits: ['click'],\n  setup(props, { slots, attrs, emit }) {\n    const { prefixCls, direction } = useConfigInject(floatButtonPrefixCls, props);\n\n    const [wrapSSR] = useStyle(prefixCls);\n\n    const domRef = ref();\n    const state = reactive({\n      visible: props.visibilityHeight === 0,\n      scrollEvent: null,\n    });\n\n    const getDefaultTarget = () =>\n      domRef.value && domRef.value.ownerDocument ? domRef.value.ownerDocument : window;\n\n    const scrollToTop = (e: Event) => {\n      const { target = getDefaultTarget, duration } = props;\n      scrollTo(0, {\n        getContainer: target,\n        duration,\n      });\n      emit('click', e);\n    };\n\n    const handleScroll = throttleByAnimationFrame((e: Event | { target: any }) => {\n      const { visibilityHeight } = props;\n      const scrollTop = getScroll(e.target, true);\n      state.visible = scrollTop >= visibilityHeight;\n    });\n\n    const bindScrollEvent = () => {\n      const { target } = props;\n      const getTarget = target || getDefaultTarget;\n      const container = getTarget();\n      handleScroll({ target: container });\n      container?.addEventListener('scroll', handleScroll);\n    };\n\n    const scrollRemove = () => {\n      const { target } = props;\n      const getTarget = target || getDefaultTarget;\n      const container = getTarget();\n      handleScroll.cancel();\n      container?.removeEventListener('scroll', handleScroll);\n    };\n\n    watch(\n      () => props.target,\n      () => {\n        scrollRemove();\n        nextTick(() => {\n          bindScrollEvent();\n        });\n      },\n    );\n\n    onMounted(() => {\n      nextTick(() => {\n        bindScrollEvent();\n      });\n    });\n\n    onActivated(() => {\n      nextTick(() => {\n        bindScrollEvent();\n      });\n    });\n\n    onDeactivated(() => {\n      scrollRemove();\n    });\n\n    onBeforeUnmount(() => {\n      scrollRemove();\n    });\n    const floatButtonGroupContext = useInjectFloatButtonGroupContext();\n    return () => {\n      const { description, type, shape, tooltip, badge } = props;\n\n      const floatButtonProps = {\n        ...attrs,\n        shape: floatButtonGroupContext?.shape.value || shape,\n        onClick: scrollToTop,\n        class: {\n          [`${prefixCls.value}`]: true,\n          [`${attrs.class}`]: attrs.class,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        description,\n        type,\n        tooltip,\n        badge,\n      };\n\n      const transitionProps = getTransitionProps('fade');\n      return wrapSSR(\n        <Transition {...transitionProps}>\n          <FloatButton v-show={state.visible} {...floatButtonProps} ref={domRef}>\n            {{\n              icon: () => slots.icon?.() || <VerticalAlignTopOutlined />,\n            }}\n          </FloatButton>\n        </Transition>,\n      );\n    };\n  },\n});\n\nexport default BackTop;\n"
  },
  {
    "path": "components/float-button/FloatButton.tsx",
    "content": "import classNames from '../_util/classNames';\nimport { defineComponent, computed, ref } from 'vue';\nimport Tooltip from '../tooltip';\nimport Badge from '../badge';\nimport Content from './FloatButtonContent';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectFloatButtonGroupContext } from './context';\nimport warning from '../_util/warning';\nimport { initDefaultProps } from '../_util/props-util';\nimport { floatButtonProps } from './interface';\n// import { useCompactItemContext } from '../space/Compact';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport const floatButtonPrefixCls = 'float-btn';\n\nconst FloatButton = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFloatButton',\n  inheritAttrs: false,\n  props: initDefaultProps(floatButtonProps(), { type: 'default', shape: 'circle' }),\n  setup(props, { attrs, slots }) {\n    const { prefixCls, direction } = useConfigInject(floatButtonPrefixCls, props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const { shape: groupShape } = useInjectFloatButtonGroupContext();\n\n    const floatButtonRef = ref<HTMLAnchorElement | HTMLButtonElement>(null);\n\n    const mergeShape = computed(() => {\n      return groupShape?.value || props.shape;\n    });\n\n    return () => {\n      const {\n        prefixCls: customPrefixCls,\n        type = 'default',\n        shape = 'circle',\n        description = slots.description?.(),\n        tooltip,\n        badge = {},\n        ...restProps\n      } = props;\n\n      const classString = classNames(\n        prefixCls.value,\n        `${prefixCls.value}-${type}`,\n        `${prefixCls.value}-${mergeShape.value}`,\n        {\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      const buttonNode = (\n        <Tooltip\n          placement=\"left\"\n          v-slots={{\n            title:\n              slots.tooltip || tooltip\n                ? () => (slots.tooltip && slots.tooltip()) || tooltip\n                : undefined,\n            default: () => (\n              <Badge {...badge}>\n                <div class={`${prefixCls.value}-body`}>\n                  <Content\n                    prefixCls={prefixCls.value}\n                    v-slots={{\n                      icon: slots.icon,\n                      description: () => description,\n                    }}\n                  ></Content>\n                </div>\n              </Badge>\n            ),\n          }}\n        ></Tooltip>\n      );\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          !(shape === 'circle' && description),\n          'FloatButton',\n          'supported only when `shape` is `square`. Due to narrow space for text, short sentence is recommended.',\n        );\n      }\n\n      return wrapSSR(\n        props.href ? (\n          <a ref={floatButtonRef} {...attrs} {...(restProps as any)} class={classString}>\n            {buttonNode}\n          </a>\n        ) : (\n          <button ref={floatButtonRef} {...attrs} {...restProps} class={classString} type=\"button\">\n            {buttonNode}\n          </button>\n        ),\n      );\n    };\n  },\n});\n\nexport default FloatButton;\n"
  },
  {
    "path": "components/float-button/FloatButtonContent.tsx",
    "content": "import { defineComponent } from 'vue';\nimport FileTextOutlined from '@ant-design/icons-vue/FileTextOutlined';\nimport { floatButtonContentProps } from './interface';\nimport { filterEmpty } from '../_util/props-util';\n\nconst FloatButtonContent = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFloatButtonContent',\n  inheritAttrs: false,\n  props: floatButtonContentProps(),\n  setup(props, { attrs, slots }) {\n    return () => {\n      const { prefixCls } = props;\n      const description = filterEmpty(slots.description?.());\n\n      return (\n        <div {...attrs} class={[attrs.class, `${prefixCls}-content`]}>\n          {slots.icon || description.length ? (\n            <>\n              {slots.icon && <div class={`${prefixCls}-icon`}>{slots.icon()}</div>}\n              {description.length ? (\n                <div class={`${prefixCls}-description`}>{description}</div>\n              ) : null}\n            </>\n          ) : (\n            <div class={`${prefixCls}-icon`}>\n              <FileTextOutlined />\n            </div>\n          )}\n        </div>\n      );\n    };\n  },\n});\n\nexport default FloatButtonContent;\n"
  },
  {
    "path": "components/float-button/FloatButtonGroup.tsx",
    "content": "import { defineComponent, ref, computed, watch, onBeforeUnmount, Transition } from 'vue';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport FileTextOutlined from '@ant-design/icons-vue/FileTextOutlined';\nimport classNames from '../_util/classNames';\nimport { getTransitionProps } from '../_util/transition';\nimport FloatButton, { floatButtonPrefixCls } from './FloatButton';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useProvideFloatButtonGroupContext } from './context';\nimport { findDOMNode, initDefaultProps } from '../_util/props-util';\nimport { floatButtonGroupProps } from './interface';\nimport type { FloatButtonGroupProps } from './interface';\nimport canUseDom from '../_util/canUseDom';\n\n// CSSINJS\nimport useStyle from './style';\nimport useMergedState from '../_util/hooks/useMergedState';\n\nconst FloatButtonGroup = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFloatButtonGroup',\n  inheritAttrs: false,\n  props: initDefaultProps(floatButtonGroupProps(), {\n    type: 'default',\n    shape: 'circle',\n  } as FloatButtonGroupProps),\n  setup(props, { attrs, slots, emit }) {\n    const { prefixCls, direction } = useConfigInject(floatButtonPrefixCls, props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const [open, setOpen] = useMergedState(false, { value: computed(() => props.open) });\n\n    const floatButtonGroupRef = ref<HTMLDivElement>(null);\n    const floatButtonRef = ref<HTMLButtonElement | HTMLAnchorElement>(null);\n\n    useProvideFloatButtonGroupContext({\n      shape: computed(() => props.shape),\n    });\n    const hoverTypeAction = {\n      onMouseenter() {\n        setOpen(true);\n        emit('update:open', true);\n        props.onOpenChange?.(true);\n      },\n      onMouseleave() {\n        setOpen(false);\n        emit('update:open', false);\n        props.onOpenChange?.(false);\n      },\n    };\n    const hoverAction = computed(() => {\n      return props.trigger === 'hover' ? hoverTypeAction : {};\n    });\n\n    const handleOpenChange = () => {\n      const nextOpen = !open.value;\n      emit('update:open', nextOpen);\n      props.onOpenChange?.(nextOpen);\n      setOpen(nextOpen);\n    };\n\n    const onClick = (e: MouseEvent) => {\n      if (floatButtonGroupRef.value?.contains(e.target as Node)) {\n        if (findDOMNode(floatButtonRef.value)?.contains(e.target as Node)) {\n          handleOpenChange();\n        }\n        return;\n      }\n      setOpen(false);\n      emit('update:open', false);\n      props.onOpenChange?.(false);\n    };\n\n    watch(\n      computed(() => props.trigger),\n      value => {\n        if (!canUseDom()) {\n          return;\n        }\n        document.removeEventListener('click', onClick);\n        if (value === 'click') {\n          document.addEventListener('click', onClick);\n        }\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      document.removeEventListener('click', onClick);\n    });\n\n    return () => {\n      const { shape = 'circle', type = 'default', tooltip, description, trigger } = props;\n\n      const groupPrefixCls = `${prefixCls.value}-group`;\n\n      const groupCls = classNames(groupPrefixCls, hashId.value, attrs.class, {\n        [`${groupPrefixCls}-rtl`]: direction.value === 'rtl',\n        [`${groupPrefixCls}-${shape}`]: shape,\n        [`${groupPrefixCls}-${shape}-shadow`]: !trigger,\n      });\n\n      const wrapperCls = classNames(hashId.value, `${groupPrefixCls}-wrap`);\n\n      const transitionProps = getTransitionProps(`${groupPrefixCls}-wrap`);\n\n      return wrapSSR(\n        <div ref={floatButtonGroupRef} {...attrs} class={groupCls} {...hoverAction.value}>\n          {trigger && ['click', 'hover'].includes(trigger) ? (\n            <>\n              <Transition {...transitionProps}>\n                <div v-show={open.value} class={wrapperCls}>\n                  {slots.default && slots.default()}\n                </div>\n              </Transition>\n              <FloatButton\n                ref={floatButtonRef}\n                type={type}\n                shape={shape}\n                tooltip={tooltip}\n                description={description}\n                v-slots={{\n                  icon: () =>\n                    open.value\n                      ? slots.closeIcon?.() || <CloseOutlined />\n                      : slots.icon?.() || <FileTextOutlined />,\n                  tooltip: slots.tooltip,\n                  description: slots.description,\n                }}\n              ></FloatButton>\n            </>\n          ) : (\n            slots.default?.()\n          )}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default FloatButtonGroup;\n"
  },
  {
    "path": "components/float-button/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/float-button/demo/back-top.vue correctly 1`] = `\n<div style=\"height: 500vh; padding: 10px;\">\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div>\n  <div>Scroll to bottom</div><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle fade-enter fade-enter-prepare fade-enter-start\" type=\"button\" style=\"display: none;\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"vertical-align-top\" class=\"anticon anticon-vertical-align-top\"><svg focusable=\"false\" class=\"\" data-icon=\"vertical-align-top\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/float-button/demo/badge.vue correctly 1`] = `\n<button style=\"right: 164px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n  </div>\n  </div><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-dot\"></sup>\n  <!----></span>\n  <!---->\n</button>\n<div style=\"right: 94px;\" class=\"ant-float-btn-group ant-float-btn-group-circle ant-float-btn-group-circle-shadow\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n</div>\n</div><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-color-blue\" title=\"5\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n<!----></span>\n<!----></button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n  </div>\n  </div><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count\" title=\"5\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">5</p></span></sup>\n  <!----></span>\n  <!---->\n</button></div>\n<div class=\"ant-float-btn-group ant-float-btn-group-circle ant-float-btn-group-circle-shadow\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"question-circle\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"></path></svg></span></div>\n<!---->\n</div>\n</div><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"12\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">2</p></span></sup>\n<!----></span>\n<!----></button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n  </div>\n  </div><sup data-show=\"true\" class=\"ant-scroll-number ant-badge-count ant-badge-multiple-words\" title=\"123\"><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">1</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">2</p></span><span class=\"ant-scroll-number-only\" style=\"transition: none;\"><p class=\"ant-scroll-number-only-unit current\">3</p></span></sup>\n  <!----></span>\n  <!---->\n</button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle fade-enter fade-enter-prepare fade-enter-start\" type=\"button\"><span class=\"ant-badge\"><div class=\"ant-float-btn-body\"><div class=\"ant-float-btn-content\"><div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"vertical-align-top\" class=\"anticon anticon-vertical-align-top\"><svg focusable=\"false\" class=\"\" data-icon=\"vertical-align-top\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"></path></svg></span></div>\n  <!---->\n  </div>\n  </div><sup data-show=\"false\" class=\"ant-scroll-number ant-badge-count\" style=\"display: none;\">\n    <!---->\n  </sup>\n  <!----></span>\n  <!---->\n</button></div>\n`;\n\nexports[`renders ./components/float-button/demo/basic.vue correctly 1`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`renders ./components/float-button/demo/description.vue correctly 1`] = `\n<button style=\"right: 24px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n      <div class=\"ant-float-btn-description\">HELP INFO</div>\n    </div>\n  </div>\n</button>\n<button style=\"right: 94px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <!---->\n      <div class=\"ant-float-btn-description\">HELP INFO</div>\n    </div>\n  </div>\n</button>\n<button style=\"right: 164px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n      <div class=\"ant-float-btn-description\">HELP</div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`renders ./components/float-button/demo/group.vue correctly 1`] = `\n<div style=\"right: 24px;\" class=\"ant-float-btn-group ant-float-btn-group-circle ant-float-btn-group-circle-shadow\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"question-circle\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n      </div>\n    </div>\n  </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle fade-enter fade-enter-prepare fade-enter-start\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"vertical-align-top\" class=\"anticon anticon-vertical-align-top\"><svg focusable=\"false\" class=\"\" data-icon=\"vertical-align-top\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button></div>\n<div style=\"right: 94px;\" class=\"ant-float-btn-group ant-float-btn-group-square ant-float-btn-group-square-shadow\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"question-circle\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n      </div>\n    </div>\n  </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-square\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"sync\" class=\"anticon anticon-sync\"><svg focusable=\"false\" class=\"\" data-icon=\"sync\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-square fade-enter fade-enter-prepare fade-enter-start\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"vertical-align-top\" class=\"anticon anticon-vertical-align-top\"><svg focusable=\"false\" class=\"\" data-icon=\"vertical-align-top\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button></div>\n`;\n\nexports[`renders ./components/float-button/demo/group-menu.vue correctly 1`] = `\n<div style=\"right: 24px;\" class=\"ant-float-btn-group ant-float-btn-group-circle\">\n  <div class=\"ant-float-btn-group-wrap ant-float-btn-group-wrap-enter ant-float-btn-group-wrap-enter-prepare ant-float-btn-group-wrap-enter-start\" style=\"display: none;\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n      <!---->\n      <div class=\"ant-float-btn-body\">\n        <div class=\"ant-float-btn-content\">\n          <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n        </div>\n      </div>\n    </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n      <!---->\n      <div class=\"ant-float-btn-body\">\n        <div class=\"ant-float-btn-content\">\n          <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"comment\" class=\"anticon anticon-comment\"><svg focusable=\"false\" class=\"\" data-icon=\"comment\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M573 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40zm-280 0c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path><path d=\"M894 345a343.92 343.92 0 00-189-130v.1c-17.1-19-36.4-36.5-58-52.1-163.7-119-393.5-82.7-513 81-96.3 133-92.2 311.9 6 439l.8 132.6c0 3.2.5 6.4 1.5 9.4a31.95 31.95 0 0040.1 20.9L309 806c33.5 11.9 68.1 18.7 102.5 20.6l-.5.4c89.1 64.9 205.9 84.4 313 49l127.1 41.4c3.2 1 6.5 1.6 9.9 1.6 17.7 0 32-14.3 32-32V753c88.1-119.6 90.4-284.9 1-408zM323 735l-12-5-99 31-1-104-8-9c-84.6-103.2-90.2-251.9-11-361 96.4-132.2 281.2-161.4 413-66 132.2 96.1 161.5 280.6 66 412-80.1 109.9-223.5 150.5-348 102zm505-17l-8 10 1 104-98-33-12 5c-56 20.8-115.7 22.5-171 7l-.2-.1A367.31 367.31 0 00729 676c76.4-105.3 88.8-237.6 44.4-350.4l.6.4c23 16.5 44.1 37.1 62 62 72.6 99.6 68.5 235.2-8 330z\"></path><path d=\"M433 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path></svg></span></div>\n          <!---->\n        </div>\n      </div>\n    </button></div><button class=\"ant-float-btn ant-float-btn-primary ant-float-btn-circle\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"customer-service\" class=\"anticon anticon-customer-service\"><svg focusable=\"false\" class=\"\" data-icon=\"customer-service\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button>\n</div>\n<div style=\"right: 94px;\" class=\"ant-float-btn-group ant-float-btn-group-circle\">\n  <div class=\"ant-float-btn-group-wrap ant-float-btn-group-wrap-enter ant-float-btn-group-wrap-enter-prepare ant-float-btn-group-wrap-enter-start\" style=\"display: none;\"><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n      <!---->\n      <div class=\"ant-float-btn-body\">\n        <div class=\"ant-float-btn-content\">\n          <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n        </div>\n      </div>\n    </button><button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n      <!---->\n      <div class=\"ant-float-btn-body\">\n        <div class=\"ant-float-btn-content\">\n          <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"comment\" class=\"anticon anticon-comment\"><svg focusable=\"false\" class=\"\" data-icon=\"comment\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M573 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40zm-280 0c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path><path d=\"M894 345a343.92 343.92 0 00-189-130v.1c-17.1-19-36.4-36.5-58-52.1-163.7-119-393.5-82.7-513 81-96.3 133-92.2 311.9 6 439l.8 132.6c0 3.2.5 6.4 1.5 9.4a31.95 31.95 0 0040.1 20.9L309 806c33.5 11.9 68.1 18.7 102.5 20.6l-.5.4c89.1 64.9 205.9 84.4 313 49l127.1 41.4c3.2 1 6.5 1.6 9.9 1.6 17.7 0 32-14.3 32-32V753c88.1-119.6 90.4-284.9 1-408zM323 735l-12-5-99 31-1-104-8-9c-84.6-103.2-90.2-251.9-11-361 96.4-132.2 281.2-161.4 413-66 132.2 96.1 161.5 280.6 66 412-80.1 109.9-223.5 150.5-348 102zm505-17l-8 10 1 104-98-33-12 5c-56 20.8-115.7 22.5-171 7l-.2-.1A367.31 367.31 0 00729 676c76.4-105.3 88.8-237.6 44.4-350.4l.6.4c23 16.5 44.1 37.1 62 62 72.6 99.6 68.5 235.2-8 330z\"></path><path d=\"M433 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path></svg></span></div>\n          <!---->\n        </div>\n      </div>\n    </button></div><button class=\"ant-float-btn ant-float-btn-primary ant-float-btn-circle\" type=\"button\">\n    <!---->\n    <div class=\"ant-float-btn-body\">\n      <div class=\"ant-float-btn-content\">\n        <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"customer-service\" class=\"anticon anticon-customer-service\"><svg focusable=\"false\" class=\"\" data-icon=\"customer-service\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"></path></svg></span></div>\n        <!---->\n      </div>\n    </div>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/float-button/demo/shape.vue correctly 1`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n<button style=\"right: 94px;\" class=\"ant-float-btn ant-float-btn-primary ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"customer-service\" class=\"anticon anticon-customer-service\"><svg focusable=\"false\" class=\"\" data-icon=\"customer-service\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"></path></svg></span></div>\n      <!---->\n    </div>\n  </div>\n</button>\n<button style=\"right: 24px;\" class=\"ant-float-btn ant-float-btn-primary ant-float-btn-square\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"customer-service\" class=\"anticon anticon-customer-service\"><svg focusable=\"false\" class=\"\" data-icon=\"customer-service\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"></path></svg></span></div>\n      <!---->\n    </div>\n  </div>\n</button>\n`;\n\nexports[`renders ./components/float-button/demo/tooltip.vue correctly 1`] = `\n<button style=\"right: 24px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n<button style=\"right: 94px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`renders ./components/float-button/demo/type.vue correctly 1`] = `\n<button style=\"right: 24px;\" class=\"ant-float-btn ant-float-btn-primary ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"question-circle\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"></path></svg></span></div>\n      <!---->\n    </div>\n  </div>\n</button>\n<button style=\"right: 94px;\" class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"question-circle\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\"></path></svg></span></div>\n      <!---->\n    </div>\n  </div>\n</button>\n`;\n"
  },
  {
    "path": "components/float-button/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`FloatButton fixbug renders {0} , 0 and {false} 1`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`FloatButton fixbug renders {0} , 0 and {false} 2`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`FloatButton fixbug renders {0} , 0 and {false} 3`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n\nexports[`FloatButton renders correctly 1`] = `\n<button class=\"ant-float-btn ant-float-btn-default ant-float-btn-circle\" type=\"button\">\n  <!---->\n  <div class=\"ant-float-btn-body\">\n    <div class=\"ant-float-btn-content\">\n      <div class=\"ant-float-btn-icon\"><span role=\"img\" aria-label=\"file-text\" class=\"anticon anticon-file-text\"><svg focusable=\"false\" class=\"\" data-icon=\"file-text\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"></path></svg></span></div>\n    </div>\n  </div>\n</button>\n`;\n"
  },
  {
    "path": "components/float-button/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('float-button');\n"
  },
  {
    "path": "components/float-button/__tests__/index.test.js",
    "content": "import FloatButton from '../index';\nimport { mount } from '@vue/test-utils';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('FloatButton', () => {\n  mountTest(FloatButton);\n  mountTest(FloatButton.Group);\n  it('renders correctly', () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton></FloatButton>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('create primary button', () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton type=\"primary\">按钮</FloatButton>;\n      },\n    });\n    expect(wrapper.find('.ant-float-btn-primary').exists()).toBe(true);\n  });\n\n  it('fixbug renders {0} , 0 and {false}', () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton>{0}</FloatButton>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n\n    const wrapper1 = mount({\n      render() {\n        return <FloatButton>0</FloatButton>;\n      },\n    });\n    expect(wrapper1.html()).toMatchSnapshot();\n\n    const wrapper2 = mount({\n      render() {\n        return <FloatButton>{false}</FloatButton>;\n      },\n    });\n    expect(wrapper2.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/float-button/__tests__/wave.test.js",
    "content": "import FloatButton from '../index';\nimport { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\n\ndescribe('click wave effect', () => {\n  async function clickFloatButton(wrapper) {\n    await asyncExpect(() => {\n      wrapper.find('.ant-float-btn').trigger('click');\n    });\n    wrapper.find('.ant-float-btn').element.dispatchEvent(new Event('transitionstart'));\n    await sleep(20);\n    wrapper.find('.ant-float-btn').element.dispatchEvent(new Event('animationend'));\n    await sleep(20);\n  }\n\n  it('should have click wave effect for primary button', async () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton type=\"primary\"></FloatButton>;\n      },\n    });\n    await clickFloatButton(wrapper);\n    expect(\n      wrapper.find('.ant-float-btn').attributes('ant-click-animating-without-extra-node'),\n    ).toBe('true');\n  });\n\n  it('should have click wave effect for default button', async () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton>button</FloatButton>;\n      },\n    });\n    await clickFloatButton(wrapper);\n    expect(\n      wrapper.find('.ant-float-btn').attributes('ant-click-animating-without-extra-node'),\n    ).toBe('true');\n  });\n\n  it('should not have click wave effect for link type button', async () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton type=\"link\">button</FloatButton>;\n      },\n    });\n    await clickFloatButton(wrapper);\n    expect(\n      wrapper.find('.ant-float-btn').attributes('ant-click-animating-without-extra-node'),\n    ).toBe(undefined);\n  });\n\n  it('should not have click wave effect for text type button', async () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton type=\"text\">button</FloatButton>;\n      },\n    });\n    await clickFloatButton(wrapper);\n    expect(\n      wrapper.find('.ant-float-btn').attributes('ant-click-animating-without-extra-node'),\n    ).toBe(undefined);\n  });\n\n  it('should handle transitionstart', async () => {\n    const wrapper = mount({\n      render() {\n        return <FloatButton type=\"primary\">button</FloatButton>;\n      },\n    });\n    await clickFloatButton(wrapper);\n    const buttonNode = wrapper.find('.ant-float-btn').element;\n    buttonNode.dispatchEvent(new Event('transitionstart'));\n    expect(\n      wrapper.find('.ant-float-btn').attributes('ant-click-animating-without-extra-node'),\n    ).toBe('true');\n    wrapper.unmount();\n    buttonNode.dispatchEvent(new Event('transitionstart'));\n  });\n});\n"
  },
  {
    "path": "components/float-button/context.ts",
    "content": "import type { Ref, InjectionKey } from 'vue';\nimport { inject, provide, ref } from 'vue';\n\nimport type { FloatButtonShape } from './interface';\n\ninterface FloatButtonGroupContext {\n  shape: Ref<FloatButtonShape>;\n}\nconst contextKey: InjectionKey<FloatButtonGroupContext> = Symbol('floatButtonGroupContext');\n\nexport const useProvideFloatButtonGroupContext = (props: FloatButtonGroupContext) => {\n  provide(contextKey, props);\n\n  return props;\n};\n\nexport const useInjectFloatButtonGroupContext = () => {\n  return inject(contextKey, { shape: ref() } as FloatButtonGroupContext);\n};\n"
  },
  {
    "path": "components/float-button/demo/back-top.vue",
    "content": "<docs>\n---\norder: 7\niframe: 360\ntitle:\n  zh-CN: 回到顶部\n  en-US: BackTop\n---\n\n## zh-CN\n\n返回页面顶部的操作按钮。\n\n## en-US\n\n`BackTop` makes it easy to go back to the top of the page.\n\n</docs>\n\n<template>\n  <div :style=\"{ height: '500vh', padding: '10px' }\">\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <div>Scroll to bottom</div>\n    <a-back-top />\n  </div>\n</template>\n"
  },
  {
    "path": "components/float-button/demo/badge.vue",
    "content": "<docs>\n---\norder: 8\niframe: 360\ntitle:\n  zh-CN: 徽标数\n  en-US: Badge\n---\n\n## zh-CN\n\n右上角附带圆形徽标数字的悬浮按钮。\n\n## en-US\n\nFloatButton with Badge.\n\n</docs>\n\n<template>\n  <a-float-button shape=\"circle\" :badge=\"{ dot: true }\" :style=\"{ right: '164px' }\" />\n  <a-float-button-group shape=\"circle\" :style=\"{ right: '94px' }\">\n    <a-float-button :badge=\"{ count: 5, color: 'blue' }\">\n      <template #tooltip>\n        <div>custom badge color</div>\n      </template>\n    </a-float-button>\n    <a-float-button :badge=\"{ count: 5 }\"></a-float-button>\n  </a-float-button-group>\n  <a-float-button-group shape=\"circle\">\n    <a-float-button :badge=\"{ count: 12 }\">\n      <template #icon>\n        <QuestionCircleOutlined />\n      </template>\n    </a-float-button>\n    <a-float-button :badge=\"{ count: 123, overflowCount: 999 }\"></a-float-button>\n    <a-back-top :visibility-height=\"0\" />\n  </a-float-button-group>\n</template>\n<script setup>\nimport { QuestionCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/float-button/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\niframe: 360\ntitle:\n  zh-CN: 基本\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n</docs>\n\n<template>\n  <a-float-button @click=\"handleClick\" />\n</template>\n\n<script lang=\"ts\" setup>\nconst handleClick = () => console.log('click');\n</script>\n"
  },
  {
    "path": "components/float-button/demo/description.vue",
    "content": "<docs>\n---\norder: 3\niframe: 360\ntitle:\n  zh-CN: 描述\n  en-US: Description\n---\n\n## zh-CN\n\n可以通过 `description` 设置文字内容。\n\n> 仅当 `shape` 属性为 `square` 时支持。由于空间较小，推荐使用比较精简的双数文字。\n\n## en-US\n\nSetting `description` prop to show FloatButton with description.\n\n> supported only when `shape` is `square`. Due to narrow space for text, short sentence is recommended.\n\n\n</docs>\n\n<template>\n  <a-float-button\n    shape=\"square\"\n    description=\"HELP INFO\"\n    :style=\"{\n      right: '24px',\n    }\"\n  >\n    <template #icon>\n      <FileTextOutlined />\n    </template>\n  </a-float-button>\n\n  <a-float-button\n    shape=\"square\"\n    description=\"HELP INFO\"\n    :style=\"{\n      right: '94px',\n    }\"\n  ></a-float-button>\n\n  <a-float-button\n    shape=\"square\"\n    description=\"HELP\"\n    :style=\"{\n      right: '164px',\n    }\"\n  >\n    <template #icon>\n      <FileTextOutlined />\n    </template>\n  </a-float-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { FileTextOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/float-button/demo/group-menu.vue",
    "content": "<docs>\n---\norder: 6\niframe: 360\ntitle:\n  zh-CN: 菜单模式\n  en-US: Menu mode\n---\n\n## zh-CN\n\n设置 `trigger` 属性即可开启菜单模式。提供 `hover` 和 `click` 两种触发方式。\n\n## en-US\n\nOpen menu mode with `trigger`, which could be `hover` or `click`.\n\n\n</docs>\n\n<template>\n  <a-float-button-group trigger=\"click\" type=\"primary\" :style=\"{ right: '24px' }\">\n    <template #icon>\n      <CustomerServiceOutlined />\n    </template>\n    <a-float-button />\n    <a-float-button>\n      <template #icon>\n        <CommentOutlined />\n      </template>\n    </a-float-button>\n  </a-float-button-group>\n  <a-float-button-group trigger=\"hover\" type=\"primary\" :style=\"{ right: '94px' }\">\n    <template #icon>\n      <CustomerServiceOutlined />\n    </template>\n    <a-float-button />\n    <a-float-button>\n      <template #icon>\n        <CommentOutlined />\n      </template>\n    </a-float-button>\n  </a-float-button-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { CustomerServiceOutlined, CommentOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/float-button/demo/group.vue",
    "content": "<docs>\n---\norder: 5\niframe: 360\ntitle:\n  zh-CN: 浮动按钮组\n  en-US: FloatButton Group\n---\n\n## zh-CN\n\n按钮组合使用时，推荐使用 `<FloatButton.Group />`，并通过设置 `shape` 属性改变悬浮按钮组的形状。悬浮按钮组的 `shape` 会覆盖内部 FloatButton 的 `shape` 属性。\n\n## en-US\n\nWhen multiple buttons are used together, `<FloatButton.Group />` is recommended. By setting `shape` of FloatButton.Group, you can change the shape of group. `shape` of FloatButton.Group will override `shape` of FloatButton inside.\n\n</docs>\n\n<template>\n  <a-float-button-group shape=\"circle\" :style=\"{ right: '24px' }\">\n    <a-float-button>\n      <template #icon>\n        <QuestionCircleOutlined />\n      </template>\n    </a-float-button>\n    <a-float-button />\n    <a-back-top :visibility-height=\"0\" />\n  </a-float-button-group>\n  <a-float-button-group shape=\"square\" :style=\"{ right: '94px' }\">\n    <a-float-button>\n      <template #icon>\n        <QuestionCircleOutlined />\n      </template>\n    </a-float-button>\n    <a-float-button />\n\n    <a-float-button>\n      <template #icon>\n        <SyncOutlined />\n      </template>\n    </a-float-button>\n    <a-back-top :visibility-height=\"0\" />\n  </a-float-button-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport { QuestionCircleOutlined, SyncOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/float-button/demo/index.vue",
    "content": "<template>\n  <template v-if=\"iframeName === 'basic-usage'\">\n    <basic></basic>\n  </template>\n  <template v-else-if=\"iframeName === 'type'\">\n    <type></type>\n  </template>\n  <template v-else-if=\"iframeName === 'shape'\">\n    <shape></shape>\n  </template>\n  <template v-else-if=\"iframeName === 'description'\">\n    <description></description>\n  </template>\n  <template v-else-if=\"iframeName === 'floatbutton-with-tooltip'\">\n    <tooltip></tooltip>\n  </template>\n  <template v-else-if=\"iframeName === 'floatbutton-group'\">\n    <group></group>\n  </template>\n  <template v-else-if=\"iframeName === 'menu-mode'\">\n    <group-menu></group-menu>\n  </template>\n  <template v-else-if=\"iframeName === 'backtop'\">\n    <back-top></back-top>\n  </template>\n  <template v-else-if=\"iframeName === 'badge'\">\n    <badge></badge>\n  </template>\n  <demo-sort v-else>\n    <basic></basic>\n    <type></type>\n    <shape></shape>\n    <description></description>\n    <tooltip></tooltip>\n    <group></group>\n    <group-menu></group-menu>\n    <back-top></back-top>\n    <badge></badge>\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Type from './type.vue';\nimport Shape from './shape.vue';\nimport Description from './description.vue';\nimport Tooltip from './tooltip.vue';\nimport group from './group.vue';\nimport GroupMenu from './group-menu.vue';\nimport BackTop from './back-top.vue';\nimport Badge from './badge.vue';\n\nimport { defineComponent, provide } from 'vue';\nimport US from '../index.en-US.md';\nimport CN from '../index.zh-CN.md';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Type,\n    Shape,\n    Description,\n    Tooltip,\n    group,\n    GroupMenu,\n    BackTop,\n    Badge,\n  },\n  props: {\n    iframeName: String,\n  },\n  setup(props) {\n    provide(\n      'iframeDemo',\n      !props.iframeName\n        ? {\n            type: '/iframe/float-button/#type',\n            'basic-usage': '/iframe/float-button/#basic-usage',\n            shape: '/iframe/float-button/#shape',\n            description: '/iframe/float-button/#description',\n            'floatbutton-with-tooltip': '/iframe/float-button/#floatbutton-with-tooltip',\n            'floatbutton-group': '/iframe/float-button/#floatbutton-group',\n            'menu-mode': '/iframe/float-button/#menu-mode',\n            backtop: '/iframe/float-button/#backtop',\n            badge: '/iframe/float-button/#badge',\n          }\n        : {},\n    );\n  },\n});\n</script>\n"
  },
  {
    "path": "components/float-button/demo/shape.vue",
    "content": "<docs>\n---\norder: 2\niframe: 360\ntitle:\n  zh-CN: 形状\n  en-US: Shape\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n</docs>\n\n<template>\n  <a-float-button @click=\"handleClick\" />\n\n  <a-float-button\n    shape=\"circle\"\n    type=\"primary\"\n    :style=\"{\n      right: '94px',\n    }\"\n  >\n    <template #icon>\n      <CustomerServiceOutlined />\n    </template>\n  </a-float-button>\n\n  <a-float-button\n    shape=\"square\"\n    type=\"primary\"\n    :style=\"{\n      right: '24px',\n    }\"\n  >\n    <template #icon>\n      <CustomerServiceOutlined />\n    </template>\n  </a-float-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { CustomerServiceOutlined } from '@ant-design/icons-vue';\nconst handleClick = () => console.log('click');\n</script>\n"
  },
  {
    "path": "components/float-button/demo/tooltip.vue",
    "content": "<docs>\n---\norder: 4\niframe: 360\ntitle:\n  zh-CN: 含有气泡卡片的悬浮按钮\n  en-US: FloatButton with tooltip\n---\n\n## zh-CN\n\n设置 tooltip 属性，即可开启气泡卡片。\n\n## en-US\n\nSetting `tooltip` prop to show FloatButton with tooltip.\n\n</docs>\n\n<template>\n  <a-float-button\n    tooltip=\"HELP INFO\"\n    :style=\"{\n      right: '24px',\n    }\"\n  ></a-float-button>\n\n  <a-float-button\n    :style=\"{\n      right: '94px',\n    }\"\n  >\n    <template #tooltip>\n      <div>Documents</div>\n    </template>\n  </a-float-button>\n</template>\n"
  },
  {
    "path": "components/float-button/demo/type.vue",
    "content": "<docs>\n---\norder: 1\niframe: 360\ntitle:\n  zh-CN: 类型\n  en-US: Type\n---\n\n## zh-CN\n\n通过 `type` 改变悬浮按钮的类型。\n\n## en-US\n\nChange the type of the FloatButton with `type`.\n\n</docs>\n\n<template>\n  <a-float-button\n    type=\"primary\"\n    :style=\"{\n      right: '24px',\n    }\"\n  >\n    <template #icon>\n      <QuestionCircleOutlined />\n    </template>\n  </a-float-button>\n\n  <a-float-button\n    type=\"default\"\n    :style=\"{\n      right: '94px',\n    }\"\n  >\n    <template #icon>\n      <QuestionCircleOutlined />\n    </template>\n  </a-float-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { QuestionCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/float-button/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Other\ntitle: FloatButton\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HS-wTIIwu0kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a0hwTY_rOSUAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\nFloatButton. Available since `4.0.0`.\n\n## When To Use\n\n- For global functionality on the site.\n- Buttons that can be seen wherever you browse.\n\n## API\n\n> This component is available since `ant-design-vue@4.0.0`.\n\n### common API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| icon | Set the icon component of button | slot | - |  |\n| description | Text and other | string \\| slot | - |  |\n| tooltip | The text shown in the tooltip | string \\| slot |  |  |\n| type | Setting button type | `default` \\| `primary` | `default` |  |\n| shape | Setting button shape | `circle` \\| `square` | `circle` |  |\n| href | The target of hyperlink | string | - |  |\n| target | Specifies where to display the linked URL | string | - |  |\n| badge | Attach Badge to FloatButton. `status` and other props related are not supported. | [BadgeProps](/components/badge#api) | - |  |\n\n### common events\n\n| Events Name | Description                             | Arguments         | Version |\n| ----------- | --------------------------------------- | ----------------- | ------- |\n| click       | Set the handler to handle `click` event | `(event) => void` | -       |\n\n### FloatButton.Group\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| shape | Setting button shape of children | `circle` \\| `square` | `circle` |  |\n| trigger | Which action can trigger menu open/close | `click` \\| `hover` | - |  |\n| open(v-model) | Whether the menu is visible or not | boolean | - |  |\n\n### FloatButton.Group Events\n\n| Events Name | Description                                   | Arguments               | Version |\n| ----------- | --------------------------------------------- | ----------------------- | ------- |\n| openChange  | Callback executed when active menu is changed | (open: boolean) => void | -       |\n\n### FloatButton.BackTop\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| duration | Time to return to top（ms） | number | 450 |  |\n| target | Specifies the scrollable area dom node | () => HTMLElement | () => window |  |\n| visibilityHeight | The BackTop button will not show until the scroll height reaches this value | number | 400 |  |\n"
  },
  {
    "path": "components/float-button/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport FloatButton from './FloatButton';\nimport FloatButtonGroup from './FloatButtonGroup';\nimport BackTop from './BackTop';\n\nimport type {\n  FloatButtonProps,\n  FloatButtonShape,\n  FloatButtonType,\n  FloatButtonGroupProps,\n  BackTopProps,\n} from './interface';\n\nimport type { SizeType as FloatButtonSize } from '../config-provider';\n\nexport type {\n  FloatButtonProps,\n  FloatButtonShape,\n  FloatButtonType,\n  FloatButtonGroupProps,\n  BackTopProps,\n  FloatButtonSize,\n};\n\nFloatButton.Group = FloatButtonGroup;\nFloatButton.BackTop = BackTop;\n\n/* istanbul ignore next */\nFloatButton.install = function (app: App) {\n  app.component(FloatButton.name, FloatButton);\n  app.component(FloatButtonGroup.name, FloatButtonGroup);\n  app.component(BackTop.name, BackTop);\n  return app;\n};\n\nexport { FloatButtonGroup, BackTop };\n\nexport default FloatButton as typeof FloatButton &\n  Plugin & {\n    readonly Group: typeof FloatButtonGroup;\n    readonly BackTop: typeof BackTop;\n  };\n"
  },
  {
    "path": "components/float-button/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 悬浮按钮\ntype: 其他\ntitle: FloatButton\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HS-wTIIwu0kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a0hwTY_rOSUAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n悬浮按钮。自 `4.0.0` 版本开始提供该组件。\n\n## 何时使用\n\n- 用于网站上的全局功能；\n- 无论浏览到何处都可以看见的按钮。\n\n## API\n\n> 自 `ant-design-vue@4.0.0` 版本开始提供该组件。\n\n### 共同的 API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| icon | 自定义图标 | slot | - |  |\n| description | 文字及其它内容 | string \\| slot | - |  |\n| tooltip | 气泡卡片的内容 | string \\| slot | - |  |\n| type | 设置按钮类型 | `default` \\| `primary` | `default` |  |\n| shape | 设置按钮形状 | `circle` \\| `square` | `circle` |  |\n| onClick | 点击按钮时的回调 | (event) => void | - |  |\n| href | 点击跳转的地址，指定此属性 button 的行为和 a 链接一致 | string | - |  |\n| target | 相当于 a 标签的 target 属性，href 存在时生效 | string | - |  |\n| badge | 带徽标数字的悬浮按钮（不支持 status 以及相关属性） | [BadgeProps](/components/badge-cn#api) | - |  |\n\n### 共同的事件\n\n| 事件名称 | 说明                          | 回调参数          | 版本 |\n| -------- | ----------------------------- | ----------------- | ---- |\n| click    | 设置处理 `click` 事件的处理器 | `(event) => void` | -    |\n\n### FloatButton.Group\n\n| 参数          | 说明                             | 类型                 | 默认值   | 版本 |\n| ------------- | -------------------------------- | -------------------- | -------- | ---- |\n| shape         | 设置包含的 FloatButton 按钮形状  | `circle` \\| `square` | `circle` |      |\n| trigger       | 触发方式（有触发方式为菜单模式） | `click` \\| `hover`   | -        |      |\n| open(v-model) | 受控展开                         | boolean              | -        |      |\n\n### FloatButton.Group 事件\n\n| 事件名称   | 说明             | 回调参数                | 版本 |\n| ---------- | ---------------- | ----------------------- | ---- |\n| openChange | 展开收起时的回调 | (open: boolean) => void | -    |\n\n### FloatButton.BackTop\n\n| 参数             | 说明                               | 类型              | 默认值       | 版本 |\n| ---------------- | ---------------------------------- | ----------------- | ------------ | ---- |\n| duration         | 回到顶部所需时间（ms）             | number            | 450          |      |\n| target           | 设置需要监听其滚动事件的元素       | () => HTMLElement | () => window |      |\n| visibilityHeight | 滚动高度达到此参数值才出现 BackTop | number            | 400          |      |\n| onClick          | 点击按钮的回调函数                 | () => void        | -            |      |\n"
  },
  {
    "path": "components/float-button/interface.ts",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { stringType, booleanType, functionType, objectType } from '../_util/type';\nimport type { BadgeProps } from '../badge';\n\nexport type FloatButtonType = 'default' | 'primary';\n\nexport type FloatButtonShape = 'circle' | 'square';\n\nexport type FloatButtonGroupTrigger = 'click' | 'hover';\n\nexport type FloatButtonBadgeProps = Omit<BadgeProps, 'status' | 'text' | 'title' | 'children'>;\n\nexport const floatButtonProps = () => {\n  return {\n    prefixCls: String,\n    description: PropTypes.any,\n    type: stringType<FloatButtonType>('default'),\n    shape: stringType<FloatButtonShape>('circle'),\n    tooltip: PropTypes.any,\n    href: String,\n    target: String,\n    badge: objectType<FloatButtonBadgeProps>(),\n    onClick: functionType<MouseEventHandler>(),\n  };\n};\n\nexport type FloatButtonProps = Partial<ExtractPropTypes<ReturnType<typeof floatButtonProps>>>;\n\nexport const floatButtonContentProps = () => {\n  return {\n    prefixCls: stringType<FloatButtonProps['prefixCls']>(),\n  };\n};\n\nexport type FloatButtonContentProps = Partial<\n  ExtractPropTypes<ReturnType<typeof floatButtonContentProps>>\n>;\n\nexport const floatButtonGroupProps = () => {\n  return {\n    ...floatButtonProps(),\n    // 包含的 Float Button\n    // 触发方式 (有触发方式为菜单模式）\n    trigger: stringType<FloatButtonGroupTrigger>(),\n    // 受控展开\n    open: booleanType(),\n    // 展开收起的回调\n    onOpenChange: functionType<(open: boolean) => void>(),\n    'onUpdate:open': functionType<(open: boolean) => void>(),\n  };\n};\n\nexport type FloatButtonGroupProps = Partial<\n  ExtractPropTypes<ReturnType<typeof floatButtonGroupProps>>\n>;\n\nexport const backTopProps = () => {\n  return {\n    ...floatButtonProps(),\n    prefixCls: String,\n    duration: Number,\n    target: functionType<() => HTMLElement | Window | Document>(),\n    visibilityHeight: Number,\n    onClick: functionType<MouseEventHandler>(),\n  };\n};\n\nexport type BackTopProps = Partial<ExtractPropTypes<ReturnType<typeof backTopProps>>>;\n"
  },
  {
    "path": "components/float-button/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { initFadeMotion } from '../../style/motion/fade';\nimport { resetComponent } from '../../style';\nimport { initMotion } from '../../style/motion/motion';\nimport getOffset from '../util';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\ntype FloatButtonToken = FullToken<'FloatButton'> & {\n  floatButtonColor: string;\n  floatButtonBackgroundColor: string;\n  floatButtonHoverBackgroundColor: string;\n  floatButtonFontSize: number;\n  floatButtonSize: number;\n  floatButtonIconSize: number;\n  floatButtonBodySize: number;\n  floatButtonBodyPadding: number;\n  badgeOffset: number;\n  dotOffsetInCircle: number;\n  dotOffsetInSquare: number;\n\n  // Position\n  floatButtonInsetBlockEnd: number;\n  floatButtonInsetInlineEnd: number;\n};\n\nconst initFloatButtonGroupMotion = (token: FloatButtonToken) => {\n  const { componentCls, floatButtonSize, motionDurationSlow, motionEaseInOutCirc } = token;\n  const groupPrefixCls = `${componentCls}-group`;\n  const moveDownIn = new Keyframes('antFloatButtonMoveDownIn', {\n    '0%': {\n      transform: `translate3d(0, ${floatButtonSize}px, 0)`,\n      transformOrigin: '0 0',\n      opacity: 0,\n    },\n\n    '100%': {\n      transform: 'translate3d(0, 0, 0)',\n      transformOrigin: '0 0',\n      opacity: 1,\n    },\n  });\n  const moveDownOut = new Keyframes('antFloatButtonMoveDownOut', {\n    '0%': {\n      transform: 'translate3d(0, 0, 0)',\n      transformOrigin: '0 0',\n      opacity: 1,\n    },\n\n    '100%': {\n      transform: `translate3d(0, ${floatButtonSize}px, 0)`,\n      transformOrigin: '0 0',\n      opacity: 0,\n    },\n  });\n\n  return [\n    {\n      [`${groupPrefixCls}-wrap`]: {\n        ...initMotion(`${groupPrefixCls}-wrap`, moveDownIn, moveDownOut, motionDurationSlow, true),\n      },\n    },\n    {\n      [`${groupPrefixCls}-wrap`]: {\n        [`\n          &${groupPrefixCls}-wrap-enter,\n          &${groupPrefixCls}-wrap-appear\n        `]: {\n          opacity: 0,\n          animationTimingFunction: motionEaseInOutCirc,\n        },\n\n        [`&${groupPrefixCls}-wrap-leave`]: {\n          animationTimingFunction: motionEaseInOutCirc,\n        },\n      },\n    },\n  ];\n};\n\n// ============================== Group ==============================\nconst floatButtonGroupStyle: GenerateStyle<FloatButtonToken, CSSObject> = token => {\n  const {\n    antCls,\n    componentCls,\n    floatButtonSize,\n    margin,\n    borderRadiusLG,\n    borderRadiusSM,\n    badgeOffset,\n    floatButtonBodyPadding,\n  } = token;\n  const groupPrefixCls = `${componentCls}-group`;\n  return {\n    [groupPrefixCls]: {\n      ...resetComponent(token),\n      zIndex: 99,\n      display: 'block',\n      border: 'none',\n      position: 'fixed',\n      width: floatButtonSize,\n      height: 'auto',\n      boxShadow: 'none',\n      minHeight: floatButtonSize,\n      insetInlineEnd: token.floatButtonInsetInlineEnd,\n      insetBlockEnd: token.floatButtonInsetBlockEnd,\n      borderRadius: borderRadiusLG,\n\n      [`${groupPrefixCls}-wrap`]: {\n        zIndex: -1,\n        display: 'block',\n        position: 'relative',\n        marginBottom: margin,\n      },\n      [`&${groupPrefixCls}-rtl`]: {\n        direction: 'rtl',\n      },\n      [componentCls]: {\n        position: 'static',\n      },\n    },\n    [`${groupPrefixCls}-circle`]: {\n      [`${componentCls}-circle:not(:last-child)`]: {\n        marginBottom: token.margin,\n        [`${componentCls}-body`]: {\n          width: floatButtonSize,\n          height: floatButtonSize,\n          borderRadius: '50%',\n        },\n      },\n    },\n    [`${groupPrefixCls}-square`]: {\n      [`${componentCls}-square`]: {\n        borderRadius: 0,\n        padding: 0,\n        '&:first-child': {\n          borderStartStartRadius: borderRadiusLG,\n          borderStartEndRadius: borderRadiusLG,\n        },\n        '&:last-child': {\n          borderEndStartRadius: borderRadiusLG,\n          borderEndEndRadius: borderRadiusLG,\n        },\n        '&:not(:last-child)': {\n          borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n        },\n        [`${antCls}-badge`]: {\n          [`${antCls}-badge-count`]: {\n            top: -(floatButtonBodyPadding + badgeOffset),\n            insetInlineEnd: -(floatButtonBodyPadding + badgeOffset),\n          },\n        },\n      },\n      [`${groupPrefixCls}-wrap`]: {\n        display: 'block',\n        borderRadius: borderRadiusLG,\n        boxShadow: token.boxShadowSecondary,\n        [`${componentCls}-square`]: {\n          boxShadow: 'none',\n          marginTop: 0,\n          borderRadius: 0,\n          padding: floatButtonBodyPadding,\n          '&:first-child': {\n            borderStartStartRadius: borderRadiusLG,\n            borderStartEndRadius: borderRadiusLG,\n          },\n          '&:last-child': {\n            borderEndStartRadius: borderRadiusLG,\n            borderEndEndRadius: borderRadiusLG,\n          },\n          '&:not(:last-child)': {\n            borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n          },\n          [`${componentCls}-body`]: {\n            width: token.floatButtonBodySize,\n            height: token.floatButtonBodySize,\n          },\n        },\n      },\n    },\n\n    [`${groupPrefixCls}-circle-shadow`]: {\n      boxShadow: 'none',\n    },\n    [`${groupPrefixCls}-square-shadow`]: {\n      boxShadow: token.boxShadowSecondary,\n      [`${componentCls}-square`]: {\n        boxShadow: 'none',\n        padding: floatButtonBodyPadding,\n        [`${componentCls}-body`]: {\n          width: token.floatButtonBodySize,\n          height: token.floatButtonBodySize,\n          borderRadius: borderRadiusSM,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Shared ==============================\nconst sharedFloatButtonStyle: GenerateStyle<FloatButtonToken, CSSObject> = token => {\n  const {\n    antCls,\n    componentCls,\n    floatButtonBodyPadding,\n    floatButtonIconSize,\n    floatButtonSize,\n    borderRadiusLG,\n    badgeOffset,\n    dotOffsetInSquare,\n    dotOffsetInCircle,\n  } = token;\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      border: 'none',\n      position: 'fixed',\n      cursor: 'pointer',\n      zIndex: 99,\n      display: 'block',\n      justifyContent: 'center',\n      alignItems: 'center',\n      width: floatButtonSize,\n      height: floatButtonSize,\n      insetInlineEnd: token.floatButtonInsetInlineEnd,\n      insetBlockEnd: token.floatButtonInsetBlockEnd,\n      boxShadow: token.boxShadowSecondary,\n\n      // Pure Panel\n      '&-pure': {\n        position: 'relative',\n        inset: 'auto',\n      },\n\n      '&:empty': {\n        display: 'none',\n      },\n      [`${antCls}-badge`]: {\n        width: '100%',\n        height: '100%',\n        [`${antCls}-badge-count`]: {\n          transform: 'translate(0, 0)',\n          transformOrigin: 'center',\n          top: -badgeOffset,\n          insetInlineEnd: -badgeOffset,\n        },\n      },\n      [`${componentCls}-body`]: {\n        width: '100%',\n        height: '100%',\n        display: 'flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n        transition: `all ${token.motionDurationMid}`,\n        [`${componentCls}-content`]: {\n          overflow: 'hidden',\n          textAlign: 'center',\n          minHeight: floatButtonSize,\n          display: 'flex',\n          flexDirection: 'column',\n          justifyContent: 'center',\n          alignItems: 'center',\n          padding: `${floatButtonBodyPadding / 2}px ${floatButtonBodyPadding}px`,\n          [`${componentCls}-icon`]: {\n            textAlign: 'center',\n            margin: 'auto',\n            width: floatButtonIconSize,\n            fontSize: floatButtonIconSize,\n            lineHeight: 1,\n          },\n        },\n      },\n    },\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl',\n    },\n    [`${componentCls}-circle`]: {\n      height: floatButtonSize,\n      borderRadius: '50%',\n      [`${antCls}-badge`]: {\n        [`${antCls}-badge-dot`]: {\n          top: dotOffsetInCircle,\n          insetInlineEnd: dotOffsetInCircle,\n        },\n      },\n      [`${componentCls}-body`]: {\n        borderRadius: '50%',\n      },\n    },\n    [`${componentCls}-square`]: {\n      height: 'auto',\n      minHeight: floatButtonSize,\n      borderRadius: borderRadiusLG,\n      [`${antCls}-badge`]: {\n        [`${antCls}-badge-dot`]: {\n          top: dotOffsetInSquare,\n          insetInlineEnd: dotOffsetInSquare,\n        },\n      },\n      [`${componentCls}-body`]: {\n        height: 'auto',\n        borderRadius: borderRadiusLG,\n      },\n    },\n    [`${componentCls}-default`]: {\n      backgroundColor: token.floatButtonBackgroundColor,\n      transition: `background-color ${token.motionDurationMid}`,\n      [`${componentCls}-body`]: {\n        backgroundColor: token.floatButtonBackgroundColor,\n        transition: `background-color ${token.motionDurationMid}`,\n        '&:hover': {\n          backgroundColor: token.colorFillContent,\n        },\n        [`${componentCls}-content`]: {\n          [`${componentCls}-icon`]: {\n            color: token.colorText,\n          },\n          [`${componentCls}-description`]: {\n            display: 'flex',\n            alignItems: 'center',\n            lineHeight: `${token.fontSizeLG}px`,\n            color: token.colorText,\n            fontSize: token.fontSizeSM,\n          },\n        },\n      },\n    },\n    [`${componentCls}-primary`]: {\n      backgroundColor: token.colorPrimary,\n      [`${componentCls}-body`]: {\n        backgroundColor: token.colorPrimary,\n        transition: `background-color ${token.motionDurationMid}`,\n        '&:hover': {\n          backgroundColor: token.colorPrimaryHover,\n        },\n        [`${componentCls}-content`]: {\n          [`${componentCls}-icon`]: {\n            color: token.colorTextLightSolid,\n          },\n          [`${componentCls}-description`]: {\n            display: 'flex',\n            alignItems: 'center',\n            lineHeight: `${token.fontSizeLG}px`,\n            color: token.colorTextLightSolid,\n            fontSize: token.fontSizeSM,\n          },\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook<'FloatButton'>('FloatButton', token => {\n  const {\n    colorTextLightSolid,\n    colorBgElevated,\n    controlHeightLG,\n    marginXXL,\n    marginLG,\n    fontSize,\n    fontSizeIcon,\n    controlItemBgHover,\n    paddingXXS,\n    borderRadiusLG,\n  } = token;\n  const floatButtonToken = mergeToken<FloatButtonToken>(token, {\n    floatButtonBackgroundColor: colorBgElevated,\n    floatButtonColor: colorTextLightSolid,\n    floatButtonHoverBackgroundColor: controlItemBgHover,\n    floatButtonFontSize: fontSize,\n    floatButtonIconSize: fontSizeIcon * 1.5,\n    floatButtonSize: controlHeightLG,\n\n    floatButtonInsetBlockEnd: marginXXL,\n    floatButtonInsetInlineEnd: marginLG,\n    floatButtonBodySize: controlHeightLG - paddingXXS * 2,\n    // 这里的 paddingXXS 是简写，完整逻辑是 (controlHeightLG - (controlHeightLG - paddingXXS * 2)) / 2,\n    floatButtonBodyPadding: paddingXXS,\n    badgeOffset: paddingXXS * 1.5,\n    dotOffsetInCircle: getOffset(controlHeightLG / 2),\n    dotOffsetInSquare: getOffset(borderRadiusLG),\n  });\n  return [\n    floatButtonGroupStyle(floatButtonToken),\n    sharedFloatButtonStyle(floatButtonToken),\n    initFadeMotion(token),\n    initFloatButtonGroupMotion(floatButtonToken),\n  ];\n});\n"
  },
  {
    "path": "components/float-button/util.ts",
    "content": "const getOffset = (radius: number): number => {\n  if (radius === 0) {\n    return 0;\n  }\n  // 如果要考虑通用性，这里应该用三角函数 Math.sin(45)\n  // 但是这个场景比较特殊，始终是等腰直角三角形，所以直接用 Math.sqrt() 开方即可\n  return radius - Math.sqrt(radius ** 2 / 2);\n};\n\nexport default getOffset;\n"
  },
  {
    "path": "components/form/ErrorList.tsx",
    "content": "import { useInjectFormItemPrefix } from './context';\nimport type { VueNode } from '../_util/type';\nimport { computed, defineComponent, ref, Transition, watch, TransitionGroup } from 'vue';\nimport { getTransitionGroupProps, getTransitionProps } from '../_util/transition';\n\nimport collapseMotion from '../_util/collapseMotion';\nimport useStyle from './style';\n\nexport interface ErrorListProps {\n  errors?: VueNode[];\n  /** @private Internal Usage. Do not use in your production */\n  help?: VueNode;\n  onErrorVisibleChanged?: (visible: boolean) => void;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ErrorList',\n  inheritAttrs: false,\n  props: ['errors', 'help', 'onErrorVisibleChanged', 'helpStatus', 'warnings'],\n  setup(props, { attrs }) {\n    const { prefixCls, status } = useInjectFormItemPrefix();\n    const baseClassName = computed(() => `${prefixCls.value}-item-explain`);\n    const visible = computed(() => !!(props.errors && props.errors.length));\n    const innerStatus = ref(status.value);\n    const [, hashId] = useStyle(prefixCls);\n    // Memo status in same visible\n    watch([visible, status], () => {\n      if (visible.value) {\n        innerStatus.value = status.value;\n      }\n    });\n\n    return () => {\n      const colMItem = collapseMotion(`${prefixCls.value}-show-help-item`);\n      const transitionGroupProps = getTransitionGroupProps(\n        `${prefixCls.value}-show-help-item`,\n        colMItem,\n      );\n      (transitionGroupProps as any).role = 'alert';\n      (transitionGroupProps as any).class = [\n        hashId.value,\n        baseClassName.value,\n        attrs.class,\n        `${prefixCls.value}-show-help`,\n      ];\n      return (\n        <Transition\n          {...getTransitionProps(`${prefixCls.value}-show-help`)}\n          onAfterEnter={() => props.onErrorVisibleChanged(true)}\n          onAfterLeave={() => props.onErrorVisibleChanged(false)}\n        >\n          <TransitionGroup {...transitionGroupProps} tag=\"div\" v-show={!!props.errors?.length}>\n            {props.errors?.map((error: any, index: number) => (\n              <div\n                key={index}\n                class={innerStatus.value ? `${baseClassName.value}-${innerStatus.value}` : ''}\n              >\n                {error}\n              </div>\n            ))}\n          </TransitionGroup>\n        </Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/form/Form.tsx",
    "content": "import type { ExtractPropTypes, HTMLAttributes, ComponentPublicInstance } from 'vue';\nimport { defineComponent, computed, watch, ref } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport warning from '../_util/warning';\nimport type { FieldExpose } from './FormItem';\nimport FormItem from './FormItem';\nimport { getNamePath, containsNamePath, cloneByNamePathList } from './utils/valueUtil';\nimport { defaultValidateMessages } from './utils/messages';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport { toArray } from './utils/typeUtil';\nimport isEqual from 'lodash-es/isEqual';\nimport type { Options } from 'scroll-into-view-if-needed';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport {\n  anyType,\n  booleanType,\n  functionType,\n  objectType,\n  someType,\n  stringType,\n  tuple,\n} from '../_util/type';\nimport type { ColProps } from '../grid/Col';\nimport type {\n  InternalNamePath,\n  NamePath,\n  RuleError,\n  ValidateErrorEntity,\n  ValidateOptions,\n  Callbacks,\n  ValidateMessages,\n  Rule,\n  FormLabelAlign,\n} from './interface';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useProvideForm } from './context';\nimport type { SizeType } from '../config-provider';\nimport useForm from './useForm';\nimport { useInjectGlobalForm } from '../config-provider/context';\nimport useStyle from './style';\nimport { useProviderSize } from '../config-provider/SizeContext';\nimport { useProviderDisabled } from '../config-provider/DisabledContext';\nexport type RequiredMark = boolean | 'optional';\nexport type FormLayout = 'horizontal' | 'inline' | 'vertical';\n\nexport const formProps = () => ({\n  layout: PropTypes.oneOf(tuple('horizontal', 'inline', 'vertical')),\n  labelCol: objectType<ColProps & HTMLAttributes>(),\n  wrapperCol: objectType<ColProps & HTMLAttributes>(),\n  colon: booleanType(),\n  labelAlign: stringType<FormLabelAlign>(),\n  labelWrap: booleanType(),\n  prefixCls: String,\n  requiredMark: someType<RequiredMark | ''>([String, Boolean]),\n  /** @deprecated Will warning in future branch. Pls use `requiredMark` instead. */\n  hideRequiredMark: booleanType(),\n  model: PropTypes.object,\n  rules: objectType<{ [k: string]: Rule[] | Rule }>(),\n  validateMessages: objectType<ValidateMessages>(),\n  validateOnRuleChange: booleanType(),\n  // 提交失败自动滚动到第一个错误字段\n  scrollToFirstError: anyType<boolean | Options>(),\n  onSubmit: functionType<(e: Event) => void>(),\n  name: String,\n  validateTrigger: someType<string | string[]>([String, Array]),\n  size: stringType<SizeType>(),\n  disabled: booleanType(),\n  onValuesChange: functionType<Callbacks['onValuesChange']>(),\n  onFieldsChange: functionType<Callbacks['onFieldsChange']>(),\n  onFinish: functionType<Callbacks['onFinish']>(),\n  onFinishFailed: functionType<Callbacks['onFinishFailed']>(),\n  onValidate: functionType<Callbacks['onValidate']>(),\n});\n\nexport type FormProps = Partial<ExtractPropTypes<ReturnType<typeof formProps>>>;\n\nexport type FormExpose = {\n  resetFields: (name?: NamePath) => void;\n  clearValidate: (name?: NamePath) => void;\n  validateFields: (\n    nameList?: NamePath[] | string,\n    options?: ValidateOptions,\n  ) => Promise<{\n    [key: string]: any;\n  }>;\n  getFieldsValue: (nameList?: InternalNamePath[] | true) => {\n    [key: string]: any;\n  };\n  validate: (\n    nameList?: NamePath[] | string,\n    options?: ValidateOptions,\n  ) => Promise<{\n    [key: string]: any;\n  }>;\n  scrollToField: (name: NamePath, options?: {}) => void;\n};\n\nexport type FormInstance = ComponentPublicInstance<FormProps, FormExpose>;\n\nfunction isEqualName(name1: NamePath, name2: NamePath) {\n  return isEqual(toArray(name1), toArray(name2));\n}\n\nconst Form = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AForm',\n  inheritAttrs: false,\n  props: initDefaultProps(formProps(), {\n    layout: 'horizontal',\n    hideRequiredMark: false,\n    colon: true,\n  }),\n  Item: FormItem,\n  useForm,\n  // emits: ['finishFailed', 'submit', 'finish', 'validate'],\n  setup(props, { emit, slots, expose, attrs }) {\n    const {\n      prefixCls,\n      direction,\n      form: contextForm,\n      size,\n      disabled,\n    } = useConfigInject('form', props);\n    const requiredMark = computed(() => props.requiredMark === '' || props.requiredMark);\n    const mergedRequiredMark = computed(() => {\n      if (requiredMark.value !== undefined) {\n        return requiredMark.value;\n      }\n\n      if (contextForm && contextForm.value?.requiredMark !== undefined) {\n        return contextForm.value.requiredMark;\n      }\n\n      if (props.hideRequiredMark) {\n        return false;\n      }\n      return true;\n    });\n    useProviderSize(size);\n    useProviderDisabled(disabled);\n    const mergedColon = computed(() => props.colon ?? contextForm.value?.colon);\n    const { validateMessages: globalValidateMessages } = useInjectGlobalForm();\n    const validateMessages = computed(() => {\n      return {\n        ...defaultValidateMessages,\n        ...globalValidateMessages.value,\n        ...props.validateMessages,\n      };\n    });\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const formClassName = computed(() =>\n      classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-${props.layout}`]: true,\n          [`${prefixCls.value}-hide-required-mark`]: mergedRequiredMark.value === false,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-${size.value}`]: size.value,\n        },\n        hashId.value,\n      ),\n    );\n    const lastValidatePromise = ref();\n    const fields: Record<string, FieldExpose> = {};\n    const addField = (eventKey: string, field: FieldExpose) => {\n      fields[eventKey] = field;\n    };\n    const removeField = (eventKey: string) => {\n      delete fields[eventKey];\n    };\n\n    const getFieldsByNameList = (nameList: NamePath | NamePath[]) => {\n      const provideNameList = !!nameList;\n      const namePathList = provideNameList ? toArray(nameList).map(getNamePath) : [];\n      if (!provideNameList) {\n        return Object.values(fields);\n      } else {\n        return Object.values(fields).filter(\n          field =>\n            namePathList.findIndex(namePath => isEqualName(namePath, field.fieldName.value)) > -1,\n        );\n      }\n    };\n    const resetFields = (name?: NamePath | NamePath[]) => {\n      if (!props.model) {\n        warning(false, 'Form', 'model is required for resetFields to work.');\n        return;\n      }\n      getFieldsByNameList(name).forEach(field => {\n        field.resetField();\n      });\n    };\n    const clearValidate = (name?: NamePath | NamePath[]) => {\n      getFieldsByNameList(name).forEach(field => {\n        field.clearValidate();\n      });\n    };\n    const handleFinishFailed = (errorInfo: ValidateErrorEntity) => {\n      const { scrollToFirstError } = props;\n      emit('finishFailed', errorInfo);\n      if (scrollToFirstError && errorInfo.errorFields.length) {\n        let scrollToFieldOptions: Options = {};\n        if (typeof scrollToFirstError === 'object') {\n          scrollToFieldOptions = scrollToFirstError;\n        }\n        scrollToField(errorInfo.errorFields[0].name, scrollToFieldOptions);\n      }\n    };\n    const validate = (...args: any[]) => {\n      return validateField(...args);\n    };\n    const scrollToField = (name?: NamePath, options = {}) => {\n      const fields = getFieldsByNameList(name ? [name] : undefined);\n      if (fields.length) {\n        const fieldId = fields[0].fieldId.value;\n        const node = fieldId ? document.getElementById(fieldId) : null;\n\n        if (node) {\n          scrollIntoView(node, {\n            scrollMode: 'if-needed',\n            block: 'nearest',\n            ...options,\n          });\n        }\n      }\n    };\n    // eslint-disable-next-line no-unused-vars\n    const getFieldsValue = (nameList: InternalNamePath[] | true = true) => {\n      if (nameList === true) {\n        const allNameList = [];\n        Object.values(fields).forEach(({ namePath }) => {\n          allNameList.push(namePath.value);\n        });\n        return cloneByNamePathList(props.model, allNameList);\n      } else {\n        return cloneByNamePathList(props.model, nameList);\n      }\n    };\n    const validateFields = (nameList?: NamePath[], options?: ValidateOptions) => {\n      warning(\n        !(nameList instanceof Function),\n        'Form',\n        'validateFields/validateField/validate not support callback, please use promise instead',\n      );\n      if (!props.model) {\n        warning(false, 'Form', 'model is required for validateFields to work.');\n        return Promise.reject('Form `model` is required for validateFields to work.');\n      }\n      const provideNameList = !!nameList;\n      const namePathList: InternalNamePath[] = provideNameList\n        ? toArray(nameList).map(getNamePath)\n        : [];\n\n      // Collect result in promise list\n      const promiseList: Promise<{\n        name: InternalNamePath;\n        errors: string[];\n      }>[] = [];\n\n      Object.values(fields).forEach(field => {\n        // Add field if not provide `nameList`\n        if (!provideNameList) {\n          namePathList.push(field.namePath.value);\n        }\n\n        // Skip if without rule\n        if (!field.rules?.value.length) {\n          return;\n        }\n\n        const fieldNamePath = field.namePath.value;\n\n        // Add field validate rule in to promise list\n        if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n          const promise = field.validateRules({\n            validateMessages: validateMessages.value,\n            ...options,\n          });\n\n          // Wrap promise with field\n          promiseList.push(\n            promise\n              .then<any, RuleError>(() => ({ name: fieldNamePath, errors: [], warnings: [] }))\n              .catch((ruleErrors: RuleError[]) => {\n                const mergedErrors: string[] = [];\n                const mergedWarnings: string[] = [];\n\n                ruleErrors.forEach(({ rule: { warningOnly }, errors }) => {\n                  if (warningOnly) {\n                    mergedWarnings.push(...errors);\n                  } else {\n                    mergedErrors.push(...errors);\n                  }\n                });\n\n                if (mergedErrors.length) {\n                  return Promise.reject({\n                    name: fieldNamePath,\n                    errors: mergedErrors,\n                    warnings: mergedWarnings,\n                  });\n                }\n\n                return {\n                  name: fieldNamePath,\n                  errors: mergedErrors,\n                  warnings: mergedWarnings,\n                };\n              }),\n          );\n        }\n      });\n\n      const summaryPromise = allPromiseFinish(promiseList);\n      lastValidatePromise.value = summaryPromise;\n\n      const returnPromise = summaryPromise\n        .then(() => {\n          if (lastValidatePromise.value === summaryPromise) {\n            return Promise.resolve(getFieldsValue(namePathList));\n          }\n          return Promise.reject([]);\n        })\n        .catch(results => {\n          const errorList = results.filter(result => result && result.errors.length);\n          return Promise.reject({\n            values: getFieldsValue(namePathList),\n            errorFields: errorList,\n            outOfDate: lastValidatePromise.value !== summaryPromise,\n          });\n        });\n\n      // Do not throw in console\n      returnPromise.catch(e => e);\n\n      return returnPromise;\n    };\n    const validateField = (...args: any[]) => {\n      return validateFields(...args);\n    };\n\n    const handleSubmit = (e: Event) => {\n      e.preventDefault();\n      e.stopPropagation();\n      emit('submit', e);\n      if (props.model) {\n        const res = validateFields();\n        res\n          .then(values => {\n            emit('finish', values);\n          })\n          .catch(errors => {\n            handleFinishFailed(errors);\n          });\n      }\n    };\n    expose({\n      resetFields,\n      clearValidate,\n      validateFields,\n      getFieldsValue,\n      validate,\n      scrollToField,\n    } as FormExpose);\n\n    useProvideForm({\n      model: computed(() => props.model),\n      name: computed(() => props.name),\n      labelAlign: computed(() => props.labelAlign),\n      labelCol: computed(() => props.labelCol),\n      labelWrap: computed(() => props.labelWrap),\n      wrapperCol: computed(() => props.wrapperCol),\n      vertical: computed(() => props.layout === 'vertical'),\n      colon: mergedColon,\n      requiredMark: mergedRequiredMark,\n      validateTrigger: computed(() => props.validateTrigger),\n      rules: computed(() => props.rules),\n      addField,\n      removeField,\n      onValidate: (name, status, errors) => {\n        emit('validate', name, status, errors);\n      },\n      validateMessages,\n    });\n\n    watch(\n      () => props.rules,\n      () => {\n        if (props.validateOnRuleChange) {\n          validateFields();\n        }\n      },\n    );\n\n    return () => {\n      return wrapSSR(\n        <form {...attrs} onSubmit={handleSubmit} class={[formClassName.value, attrs.class]}>\n          {slots.default?.()}\n        </form>,\n      );\n    };\n  },\n});\n\nexport default Form as typeof Form & {\n  readonly Item: typeof FormItem;\n  readonly useForm: typeof useForm;\n};\n"
  },
  {
    "path": "components/form/FormItem.tsx",
    "content": "import type {\n  PropType,\n  ExtractPropTypes,\n  ComputedRef,\n  Ref,\n  ComponentPublicInstance,\n  HTMLAttributes,\n} from 'vue';\nimport {\n  onMounted,\n  reactive,\n  watch,\n  defineComponent,\n  computed,\n  nextTick,\n  shallowRef,\n  watchEffect,\n  onBeforeUnmount,\n  toRaw,\n} from 'vue';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport PropTypes from '../_util/vue-types';\nimport Row from '../grid/Row';\nimport type { ColProps } from '../grid/Col';\nimport { filterEmpty } from '../_util/props-util';\nimport { validateRules as validateRulesUtil } from './utils/validateUtil';\nimport { getNamePath } from './utils/valueUtil';\nimport { toArray } from './utils/typeUtil';\nimport { warning } from '../vc-util/warning';\nimport find from 'lodash-es/find';\nimport type { CustomSlotsType } from '../_util/type';\nimport { tuple } from '../_util/type';\nimport type {\n  FormLabelAlign,\n  InternalNamePath,\n  Rule,\n  RuleError,\n  RuleObject,\n  ValidateOptions,\n} from './interface';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectForm } from './context';\nimport FormItemLabel from './FormItemLabel';\nimport FormItemInput from './FormItemInput';\nimport type { FormItemStatusContextProps } from './FormItemContext';\nimport { FormItemInputContext, useProvideFormItemContext } from './FormItemContext';\nimport useDebounce from './utils/useDebounce';\nimport classNames from '../_util/classNames';\nimport useStyle from './style';\n\nconst ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');\nexport type ValidateStatus = (typeof ValidateStatuses)[number];\n\nexport interface FieldExpose {\n  fieldValue: Ref<any>;\n  fieldId: ComputedRef<any>;\n  fieldName: ComputedRef<any>;\n  resetField: () => void;\n  clearValidate: () => void;\n  namePath: ComputedRef<InternalNamePath>;\n  rules?: ComputedRef<Rule[]>;\n  validateRules: (options: ValidateOptions) => Promise<void> | Promise<RuleError[]>;\n}\n\nconst iconMap: { [key: string]: any } = {\n  success: CheckCircleFilled,\n  warning: ExclamationCircleFilled,\n  error: CloseCircleFilled,\n  validating: LoadingOutlined,\n};\n\nfunction getPropByPath(obj: any, namePathList: any, strict?: boolean) {\n  let tempObj = obj;\n\n  const keyArr = namePathList;\n  let i = 0;\n  try {\n    for (let len = keyArr.length; i < len - 1; ++i) {\n      if (!tempObj && !strict) break;\n      const key = keyArr[i];\n      if (key in tempObj) {\n        tempObj = tempObj[key];\n      } else {\n        if (strict) {\n          throw Error('please transfer a valid name path to form item!');\n        }\n        break;\n      }\n    }\n    if (strict && !tempObj) {\n      throw Error('please transfer a valid name path to form item!');\n    }\n  } catch (error) {\n    console.error('please transfer a valid name path to form item!');\n  }\n\n  return {\n    o: tempObj,\n    k: keyArr[i],\n    v: tempObj ? tempObj[keyArr[i]] : undefined,\n  };\n}\nexport const formItemProps = () => ({\n  htmlFor: String,\n  prefixCls: String,\n  label: PropTypes.any,\n  help: PropTypes.any,\n  extra: PropTypes.any,\n  labelCol: { type: Object as PropType<ColProps & HTMLAttributes> },\n  wrapperCol: { type: Object as PropType<ColProps & HTMLAttributes> },\n  hasFeedback: { type: Boolean, default: false },\n  colon: { type: Boolean, default: undefined },\n  labelAlign: String as PropType<FormLabelAlign>,\n  prop: { type: [String, Number, Array] as PropType<string | number | Array<string | number>> },\n  name: { type: [String, Number, Array] as PropType<string | number | Array<string | number>> },\n  rules: [Array, Object] as PropType<Rule[] | Rule>,\n  autoLink: { type: Boolean, default: true },\n  required: { type: Boolean, default: undefined },\n  validateFirst: { type: Boolean, default: undefined },\n  validateStatus: PropTypes.oneOf(tuple('', 'success', 'warning', 'error', 'validating')),\n  validateTrigger: { type: [String, Array] as PropType<string | string[]> },\n  messageVariables: { type: Object as PropType<Record<string, string>> },\n  hidden: Boolean,\n  noStyle: Boolean,\n  tooltip: String,\n});\n\nexport type FormItemProps = Partial<ExtractPropTypes<ReturnType<typeof formItemProps>>>;\n\nexport type FormItemExpose = {\n  onFieldBlur: () => void;\n  onFieldChange: () => void;\n  clearValidate: () => void;\n  resetField: () => void;\n};\n\nexport type FormItemInstance = ComponentPublicInstance<FormItemProps, FormItemExpose>;\n\nlet indexGuid = 0;\n\n// default form item id prefix.\nconst defaultItemNamePrefixCls = 'form_item';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFormItem',\n  inheritAttrs: false,\n  __ANT_NEW_FORM_ITEM: true,\n  props: formItemProps(),\n  slots: Object as CustomSlotsType<{\n    help: any;\n    label: any;\n    extra: any;\n    default: any;\n    tooltip: any;\n  }>,\n  setup(props, { slots, attrs, expose }) {\n    warning(props.prop === undefined, `\\`prop\\` is deprecated. Please use \\`name\\` instead.`);\n    const eventKey = `form-item-${++indexGuid}`;\n    const { prefixCls } = useConfigInject('form', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const itemRef = shallowRef<HTMLDivElement>();\n    const formContext = useInjectForm();\n    const fieldName = computed(() => props.name || props.prop);\n    const errors = shallowRef([]);\n    const validateDisabled = shallowRef(false);\n    const inputRef = shallowRef();\n    const namePath = computed(() => {\n      const val = fieldName.value;\n      return getNamePath(val);\n    });\n\n    const fieldId = computed(() => {\n      if (!namePath.value.length) {\n        return undefined;\n      } else {\n        const formName = formContext.name.value;\n        const mergedId = namePath.value.join('_');\n        return formName ? `${formName}_${mergedId}` : `${defaultItemNamePrefixCls}_${mergedId}`;\n      }\n    });\n    const getNewFieldValue = () => {\n      const model = formContext.model.value;\n      if (!model || !fieldName.value) {\n        return;\n      } else {\n        return getPropByPath(model, namePath.value, true).v;\n      }\n    };\n    const fieldValue = computed(() => getNewFieldValue());\n\n    const initialValue = shallowRef(cloneDeep(fieldValue.value));\n    const mergedValidateTrigger = computed(() => {\n      let validateTrigger =\n        props.validateTrigger !== undefined\n          ? props.validateTrigger\n          : formContext.validateTrigger.value;\n      validateTrigger = validateTrigger === undefined ? 'change' : validateTrigger;\n      return toArray(validateTrigger);\n    });\n    const rulesRef = computed<Rule[]>(() => {\n      let formRules = formContext.rules.value;\n      const selfRules = props.rules;\n      const requiredRule =\n        props.required !== undefined\n          ? { required: !!props.required, trigger: mergedValidateTrigger.value }\n          : [];\n      const prop = getPropByPath(formRules, namePath.value);\n      formRules = formRules ? prop.o[prop.k] || prop.v : [];\n      const rules = [].concat(selfRules || formRules || []);\n      if (find(rules, rule => rule.required)) {\n        return rules;\n      } else {\n        return rules.concat(requiredRule);\n      }\n    });\n    const isRequired = computed(() => {\n      const rules = rulesRef.value;\n      let isRequired = false;\n      if (rules && rules.length) {\n        rules.every(rule => {\n          if (rule.required) {\n            isRequired = true;\n            return false;\n          }\n          return true;\n        });\n      }\n      return isRequired || props.required;\n    });\n\n    const validateState = shallowRef();\n    watchEffect(() => {\n      validateState.value = props.validateStatus;\n    });\n    const messageVariables = computed(() => {\n      let variables: Record<string, string> = {};\n      if (typeof props.label === 'string') {\n        variables.label = props.label;\n      } else if (props.name) {\n        variables.label = String(props.name);\n      }\n      if (props.messageVariables) {\n        variables = { ...variables, ...props.messageVariables };\n      }\n      return variables;\n    });\n    const validateRules = (options: ValidateOptions) => {\n      // no name, no value, so the validate result is incorrect\n      if (namePath.value.length === 0) {\n        return;\n      }\n      const { validateFirst = false } = props;\n      const { triggerName } = options || {};\n\n      let filteredRules = rulesRef.value;\n      if (triggerName) {\n        filteredRules = filteredRules.filter(rule => {\n          const { trigger } = rule;\n          if (!trigger && !mergedValidateTrigger.value.length) {\n            return true;\n          }\n          const triggerList = toArray(trigger || mergedValidateTrigger.value);\n          return triggerList.includes(triggerName);\n        });\n      }\n      if (!filteredRules.length) {\n        return Promise.resolve();\n      }\n      const promise = validateRulesUtil(\n        namePath.value,\n        fieldValue.value,\n        filteredRules as RuleObject[],\n        {\n          validateMessages: formContext.validateMessages.value,\n          ...options,\n        },\n        validateFirst,\n        messageVariables.value,\n      );\n      validateState.value = 'validating';\n      errors.value = [];\n\n      promise\n        .catch(e => e)\n        .then((results: RuleError[] = []) => {\n          if (validateState.value === 'validating') {\n            const res = results.filter(result => result && result.errors.length);\n            validateState.value = res.length ? 'error' : 'success';\n\n            errors.value = res.map(r => r.errors);\n\n            formContext.onValidate(\n              fieldName.value,\n              !errors.value.length,\n              errors.value.length ? toRaw(errors.value[0]) : null,\n            );\n          }\n        });\n\n      return promise;\n    };\n\n    const onFieldBlur = () => {\n      validateRules({ triggerName: 'blur' });\n    };\n    const onFieldChange = () => {\n      if (validateDisabled.value) {\n        validateDisabled.value = false;\n        return;\n      }\n      validateRules({ triggerName: 'change' });\n    };\n    const clearValidate = () => {\n      validateState.value = props.validateStatus;\n      validateDisabled.value = false;\n      errors.value = [];\n    };\n\n    const resetField = () => {\n      validateState.value = props.validateStatus;\n      validateDisabled.value = true;\n      errors.value = [];\n      const model = formContext.model.value || {};\n      const value = fieldValue.value;\n      const prop = getPropByPath(model, namePath.value, true);\n      if (Array.isArray(value)) {\n        prop.o[prop.k] = [].concat(initialValue.value ?? []);\n      } else {\n        prop.o[prop.k] = initialValue.value;\n      }\n      // reset validateDisabled after onFieldChange triggered\n      nextTick(() => {\n        validateDisabled.value = false;\n      });\n    };\n    const htmlFor = computed(() => {\n      return props.htmlFor === undefined ? fieldId.value : props.htmlFor;\n    });\n    const onLabelClick = () => {\n      const id = htmlFor.value;\n      if (!id || !inputRef.value) {\n        return;\n      }\n      const control = inputRef.value.$el.querySelector(`[id=\"${id}\"]`);\n      if (control && control.focus) {\n        control.focus();\n      }\n    };\n    expose({\n      onFieldBlur,\n      onFieldChange,\n      clearValidate,\n      resetField,\n    });\n\n    useProvideFormItemContext(\n      {\n        id: fieldId,\n        onFieldBlur: () => {\n          if (props.autoLink) {\n            onFieldBlur();\n          }\n        },\n        onFieldChange: () => {\n          if (props.autoLink) {\n            onFieldChange();\n          }\n        },\n        clearValidate,\n      },\n      computed(() => {\n        return !!(props.autoLink && formContext.model.value && fieldName.value);\n      }),\n    );\n    let registered = false;\n    watch(\n      fieldName,\n      val => {\n        if (val) {\n          if (!registered) {\n            registered = true;\n            formContext.addField(eventKey, {\n              fieldValue,\n              fieldId,\n              fieldName,\n              resetField,\n              clearValidate,\n              namePath,\n              validateRules,\n              rules: rulesRef,\n            });\n          }\n        } else {\n          registered = false;\n          formContext.removeField(eventKey);\n        }\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      formContext.removeField(eventKey);\n    });\n    const debounceErrors = useDebounce(errors);\n    const mergedValidateStatus = computed(() => {\n      if (props.validateStatus !== undefined) {\n        return props.validateStatus;\n      } else if (debounceErrors.value.length) {\n        return 'error';\n      }\n      return validateState.value;\n    });\n    const itemClassName = computed(() => ({\n      [`${prefixCls.value}-item`]: true,\n      [hashId.value]: true,\n      // Status\n      [`${prefixCls.value}-item-has-feedback`]: mergedValidateStatus.value && props.hasFeedback,\n      [`${prefixCls.value}-item-has-success`]: mergedValidateStatus.value === 'success',\n      [`${prefixCls.value}-item-has-warning`]: mergedValidateStatus.value === 'warning',\n      [`${prefixCls.value}-item-has-error`]: mergedValidateStatus.value === 'error',\n      [`${prefixCls.value}-item-is-validating`]: mergedValidateStatus.value === 'validating',\n      [`${prefixCls.value}-item-hidden`]: props.hidden,\n    }));\n    const formItemInputContext = reactive<FormItemStatusContextProps>({});\n    FormItemInputContext.useProvide(formItemInputContext);\n    watchEffect(() => {\n      let feedbackIcon: any;\n      if (props.hasFeedback) {\n        const IconNode = mergedValidateStatus.value && iconMap[mergedValidateStatus.value];\n        feedbackIcon = IconNode ? (\n          <span\n            class={classNames(\n              `${prefixCls.value}-item-feedback-icon`,\n              `${prefixCls.value}-item-feedback-icon-${mergedValidateStatus.value}`,\n            )}\n          >\n            <IconNode />\n          </span>\n        ) : null;\n      }\n      Object.assign(formItemInputContext, {\n        status: mergedValidateStatus.value,\n        hasFeedback: props.hasFeedback,\n        feedbackIcon,\n        isFormItemInput: true,\n      });\n    });\n\n    const marginBottom = shallowRef<number>(null);\n    const showMarginOffset = shallowRef(false);\n    const updateMarginBottom = () => {\n      if (itemRef.value) {\n        const itemStyle = getComputedStyle(itemRef.value);\n        marginBottom.value = parseInt(itemStyle.marginBottom, 10);\n      }\n    };\n    onMounted(() => {\n      watch(\n        showMarginOffset,\n        () => {\n          if (showMarginOffset.value) {\n            updateMarginBottom();\n          }\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n\n    const onErrorVisibleChanged = (nextVisible: boolean) => {\n      if (!nextVisible) {\n        marginBottom.value = null;\n      }\n    };\n    return () => {\n      if (props.noStyle) return slots.default?.();\n      const help = props.help ?? (slots.help ? filterEmpty(slots.help()) : null);\n      const withHelp = !!(\n        (help !== undefined && help !== null && Array.isArray(help) && help.length) ||\n        debounceErrors.value.length\n      );\n      showMarginOffset.value = withHelp;\n      return wrapSSR(\n        <div\n          class={[\n            itemClassName.value,\n            withHelp ? `${prefixCls.value}-item-with-help` : '',\n            attrs.class,\n          ]}\n          ref={itemRef}\n        >\n          <Row\n            {...attrs}\n            class={`${prefixCls.value}-item-row`}\n            key=\"row\"\n            v-slots={{\n              default: () => (\n                <>\n                  {/* Label */}\n                  <FormItemLabel\n                    {...props}\n                    htmlFor={htmlFor.value}\n                    required={isRequired.value}\n                    requiredMark={formContext.requiredMark.value}\n                    prefixCls={prefixCls.value}\n                    onClick={onLabelClick}\n                    label={props.label}\n                    v-slots={{ label: slots.label, tooltip: slots.tooltip }}\n                  />\n                  {/* Input Group */}\n                  <FormItemInput\n                    {...props}\n                    errors={\n                      help !== undefined && help !== null ? toArray(help) : debounceErrors.value\n                    }\n                    marginBottom={marginBottom.value}\n                    prefixCls={prefixCls.value}\n                    status={mergedValidateStatus.value}\n                    ref={inputRef}\n                    help={help}\n                    extra={props.extra ?? slots.extra?.()}\n                    v-slots={{ default: slots.default }}\n                    onErrorVisibleChanged={onErrorVisibleChanged}\n                  ></FormItemInput>\n                </>\n              ),\n            }}\n          ></Row>\n          {!!marginBottom.value && (\n            <div\n              class={`${prefixCls.value}-margin-offset`}\n              style={{\n                marginBottom: `-${marginBottom.value}px`,\n              }}\n            />\n          )}\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/form/FormItemContext.ts",
    "content": "import type { ComputedRef, InjectionKey, ConcreteComponent } from 'vue';\nimport {\n  watch,\n  computed,\n  inject,\n  provide,\n  ref,\n  onBeforeUnmount,\n  getCurrentInstance,\n  defineComponent,\n} from 'vue';\nimport devWarning from '../vc-util/devWarning';\nimport createContext from '../_util/createContext';\nimport type { ValidateStatus } from './FormItem';\n\nexport type FormItemContext = {\n  id: ComputedRef<string>;\n  onFieldBlur: () => void;\n  onFieldChange: () => void;\n  clearValidate: () => void;\n};\n\ntype InternalFormItemContext = {\n  addFormItemField: (key: Symbol, type: ConcreteComponent) => void;\n  removeFormItemField: (key: Symbol) => void;\n};\n\nconst ContextKey: InjectionKey<FormItemContext> = Symbol('ContextProps');\n\nconst InternalContextKey: InjectionKey<InternalFormItemContext> = Symbol('InternalContextProps');\n\nexport const useProvideFormItemContext = (\n  props: FormItemContext,\n  useValidation: ComputedRef<boolean> = computed(() => true),\n) => {\n  const formItemFields = ref(new Map<Symbol, ConcreteComponent>());\n  const addFormItemField = (key: Symbol, type: ConcreteComponent) => {\n    formItemFields.value.set(key, type);\n    formItemFields.value = new Map(formItemFields.value);\n  };\n  const removeFormItemField = (key: Symbol) => {\n    formItemFields.value.delete(key);\n    formItemFields.value = new Map(formItemFields.value);\n  };\n  const instance = getCurrentInstance();\n  watch([useValidation, formItemFields], () => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (useValidation.value && formItemFields.value.size > 1) {\n        devWarning(\n          false,\n          'Form.Item',\n          `FormItem can only collect one field item, you haved set ${[\n            ...formItemFields.value.values(),\n          ]\n            .map(v => `\\`${v.name}\\``)\n            .join(', ')} ${formItemFields.value.size} field items.\n        You can set not need to be collected fields into \\`a-form-item-rest\\``,\n        );\n        let cur = instance;\n        while (cur.parent) {\n          console.warn('at', cur.type);\n          cur = cur.parent;\n        }\n      }\n    }\n  });\n  provide(ContextKey, props);\n  provide(InternalContextKey, {\n    addFormItemField,\n    removeFormItemField,\n  });\n};\n\nconst defaultContext: FormItemContext = {\n  id: computed(() => undefined),\n  onFieldBlur: () => {},\n  onFieldChange: () => {},\n  clearValidate: () => {},\n};\nconst defaultInternalContext: InternalFormItemContext = {\n  addFormItemField: () => {},\n  removeFormItemField: () => {},\n};\nexport const useInjectFormItemContext = () => {\n  const internalContext = inject(InternalContextKey, defaultInternalContext);\n  const formItemFieldKey = Symbol('FormItemFieldKey');\n  const instance = getCurrentInstance();\n  internalContext.addFormItemField(formItemFieldKey, instance.type);\n  onBeforeUnmount(() => {\n    internalContext.removeFormItemField(formItemFieldKey);\n  });\n  // We should prevent the passing of context for children\n  provide(InternalContextKey, defaultInternalContext);\n  provide(ContextKey, defaultContext);\n  return inject(ContextKey, defaultContext);\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFormItemRest',\n  setup(_, { slots }) {\n    provide(InternalContextKey, defaultInternalContext);\n    provide(ContextKey, defaultContext);\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n\nexport interface FormItemStatusContextProps {\n  isFormItemInput?: boolean;\n  status?: ValidateStatus;\n  hasFeedback?: boolean;\n  feedbackIcon?: any;\n}\n\nexport const FormItemInputContext = createContext<FormItemStatusContextProps>({});\n\nexport const NoFormStatus = defineComponent({\n  name: 'NoFormStatus',\n  setup(_, { slots }) {\n    FormItemInputContext.useProvide({});\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n"
  },
  {
    "path": "components/form/FormItemInput.tsx",
    "content": "import type { ColProps } from '../grid/Col';\nimport Col from '../grid/Col';\nimport { useProvideForm, useInjectForm, useProvideFormItemPrefix } from './context';\nimport ErrorList from './ErrorList';\nimport classNames from '../_util/classNames';\nimport type { ValidateStatus } from './FormItem';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\nimport type { HTMLAttributes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport { filterEmpty } from '../_util/props-util';\n\nexport interface FormItemInputMiscProps {\n  prefixCls: string;\n  errors: VueNode[];\n  hasFeedback?: boolean;\n  validateStatus?: ValidateStatus;\n}\n\nexport interface FormItemInputProps {\n  wrapperCol?: ColProps;\n  help?: VueNode;\n  extra?: VueNode;\n  status?: ValidateStatus;\n}\n\nconst FormItemInput = defineComponent({\n  compatConfig: { MODE: 3 },\n  slots: Object as CustomSlotsType<{\n    help: any;\n    errors: any;\n    extra: any;\n    default: any;\n  }>,\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'errors',\n    'hasFeedback',\n    'onDomErrorVisibleChange',\n    'wrapperCol',\n    'help',\n    'extra',\n    'status',\n    'marginBottom',\n    'onErrorVisibleChanged',\n  ],\n  setup(props, { slots }) {\n    const formContext = useInjectForm();\n    const { wrapperCol: contextWrapperCol } = formContext;\n\n    // Pass to sub FormItem should not with col info\n    const subFormContext = { ...formContext };\n    delete subFormContext.labelCol;\n    delete subFormContext.wrapperCol;\n    useProvideForm(subFormContext);\n    useProvideFormItemPrefix({\n      prefixCls: computed(() => props.prefixCls),\n      status: computed(() => props.status),\n    });\n\n    return () => {\n      const {\n        prefixCls,\n        wrapperCol,\n        marginBottom,\n        onErrorVisibleChanged,\n        help = slots.help?.(),\n        errors = filterEmpty(slots.errors?.()),\n        // hasFeedback,\n        // status,\n        extra = slots.extra?.(),\n      } = props;\n      const baseClassName = `${prefixCls}-item`;\n\n      const mergedWrapperCol: ColProps & HTMLAttributes =\n        wrapperCol || contextWrapperCol?.value || {};\n\n      const className = classNames(`${baseClassName}-control`, mergedWrapperCol.class);\n\n      // Should provides additional icon if `hasFeedback`\n      // const IconNode = status && iconMap[status];\n      return (\n        <Col\n          {...mergedWrapperCol}\n          class={className}\n          v-slots={{\n            default: () => (\n              <>\n                <div class={`${baseClassName}-control-input`}>\n                  <div class={`${baseClassName}-control-input-content`}>{slots.default?.()}</div>\n                </div>\n                {marginBottom !== null || errors.length ? (\n                  <div style={{ display: 'flex', flexWrap: 'nowrap' }}>\n                    <ErrorList\n                      errors={errors}\n                      help={help}\n                      class={`${baseClassName}-explain-connected`}\n                      onErrorVisibleChanged={onErrorVisibleChanged}\n                    />\n                    {!!marginBottom && <div style={{ width: 0, height: `${marginBottom}px` }} />}\n                  </div>\n                ) : null}\n                {extra ? <div class={`${baseClassName}-extra`}>{extra}</div> : null}\n              </>\n            ),\n          }}\n        ></Col>\n      );\n    };\n  },\n});\n\nexport default FormItemInput;\n"
  },
  {
    "path": "components/form/FormItemLabel.tsx",
    "content": "import type { ColProps } from '../grid/Col';\nimport Col from '../grid/Col';\nimport type { FormLabelAlign } from './interface';\nimport { useInjectForm } from './context';\nimport type { RequiredMark } from './Form';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale/en_US';\nimport classNames from '../_util/classNames';\nimport type { VueNode } from '../_util/type';\nimport type { FunctionalComponent, HTMLAttributes } from 'vue';\nimport Tooltip from '../tooltip';\nimport QuestionCircleOutlined from '@ant-design/icons-vue/QuestionCircleOutlined';\n\nexport interface FormItemLabelProps {\n  colon?: boolean;\n  htmlFor?: string;\n  label?: VueNode;\n  labelAlign?: FormLabelAlign;\n  labelCol?: ColProps & HTMLAttributes;\n  requiredMark?: RequiredMark;\n  required?: boolean;\n  prefixCls: string;\n  onClick: Function;\n  tooltip: string;\n}\n\nconst FormItemLabel: FunctionalComponent<FormItemLabelProps> = (props, { slots, emit, attrs }) => {\n  const { prefixCls, htmlFor, labelCol, labelAlign, colon, required, requiredMark } = {\n    ...props,\n    ...attrs,\n  };\n  const [formLocale] = useLocaleReceiver('Form');\n  const label = props.label ?? slots.label?.();\n  if (!label) return null;\n  const {\n    vertical,\n    labelAlign: contextLabelAlign,\n    labelCol: contextLabelCol,\n    labelWrap,\n    colon: contextColon,\n  } = useInjectForm();\n  const mergedLabelCol: FormItemLabelProps['labelCol'] = labelCol || contextLabelCol?.value || {};\n\n  const mergedLabelAlign: FormLabelAlign | undefined = labelAlign || contextLabelAlign?.value;\n\n  const labelClsBasic = `${prefixCls}-item-label`;\n  const labelColClassName = classNames(\n    labelClsBasic,\n    mergedLabelAlign === 'left' && `${labelClsBasic}-left`,\n    mergedLabelCol.class,\n    {\n      [`${labelClsBasic}-wrap`]: !!labelWrap.value,\n    },\n  );\n\n  let labelChildren = label;\n  // Keep label is original where there should have no colon\n  const computedColon = colon === true || (contextColon?.value !== false && colon !== false);\n  const haveColon = computedColon && !vertical.value;\n  // Remove duplicated user input colon\n  if (haveColon && typeof label === 'string' && (label as string).trim() !== '') {\n    labelChildren = (label as string).replace(/[:|：]\\s*$/, '');\n  }\n\n  // Tooltip\n  if (props.tooltip || slots.tooltip) {\n    const tooltipNode = (\n      <span class={`${prefixCls}-item-tooltip`}>\n        <Tooltip title={props.tooltip}>\n          <QuestionCircleOutlined />\n        </Tooltip>\n      </span>\n    );\n\n    labelChildren = (\n      <>\n        {labelChildren}\n        {slots.tooltip ? slots.tooltip?.({ class: `${prefixCls}-item-tooltip` }) : tooltipNode}\n      </>\n    );\n  }\n\n  // Add required mark if optional\n  if (requiredMark === 'optional' && !required) {\n    labelChildren = (\n      <>\n        {labelChildren}\n        <span class={`${prefixCls}-item-optional`}>\n          {formLocale.value?.optional || defaultLocale.Form?.optional}\n        </span>\n      </>\n    );\n  }\n  const labelClassName = classNames({\n    [`${prefixCls}-item-required`]: required,\n    [`${prefixCls}-item-required-mark-optional`]: requiredMark === 'optional',\n    [`${prefixCls}-item-no-colon`]: !computedColon,\n  });\n  return (\n    <Col {...mergedLabelCol} class={labelColClassName}>\n      <label\n        for={htmlFor}\n        class={labelClassName}\n        title={typeof label === 'string' ? label : ''}\n        onClick={e => emit('click', e)}\n      >\n        {labelChildren}\n      </label>\n    </Col>\n  );\n};\n\nFormItemLabel.displayName = 'FormItemLabel';\nFormItemLabel.inheritAttrs = false;\n\nexport default FormItemLabel;\n"
  },
  {
    "path": "components/form/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/form/demo/advanced-search.vue correctly 1`] = `\n<div>\n  <form class=\"ant-form ant-form-horizontal ant-advanced-search-form\">\n    <div class=\"ant-row\" style=\"margin-left: -12px; margin-right: -12px;\">\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-1\" class=\"ant-form-item-required\" title=\"field-1\">field-1\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-1\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-2\" class=\"ant-form-item-required\" title=\"field-2\">field-2\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-2\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-3\" class=\"ant-form-item-required\" title=\"field-3\">field-3\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-3\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-4\" class=\"ant-form-item-required\" title=\"field-4\">field-4\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-4\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-5\" class=\"ant-form-item-required\" title=\"field-5\">field-5\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-5\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-6\" class=\"ant-form-item-required\" title=\"field-6\">field-6\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-6\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px; display: none;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-7\" class=\"ant-form-item-required\" title=\"field-7\">field-7\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-7\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px; display: none;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-8\" class=\"ant-form-item-required\" title=\"field-8\">field-8\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-8\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px; display: none;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-9\" class=\"ant-form-item-required\" title=\"field-9\">field-9\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-9\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n      <div class=\"ant-col ant-col-8\" style=\"padding-left: 12px; padding-right: 12px; display: none;\">\n        <div class=\"ant-form-item\">\n          <div class=\"ant-row ant-form-row\">\n            <div class=\"ant-col ant-form-item-label\"><label for=\"advanced_search_field-10\" class=\"ant-form-item-required\" title=\"field-10\">field-10\n                <!---->\n              </label></div>\n            <div class=\"ant-col ant-form-item-control\">\n              <div class=\"ant-form-item-control-input\">\n                <div class=\"ant-form-item-control-input-content\"><input placeholder=\"placeholder\" id=\"advanced_search_field-10\" type=\"text\" class=\"ant-input\"></div>\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-row\">\n      <div style=\"text-align: right;\" class=\"ant-col ant-col-24\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n          <!----><span>Search</span>\n        </button><button style=\"margin: 0px 8px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n          <!----><span>Clear</span>\n        </button><a style=\"font-size: 12px;\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span> Collapse </a></div>\n    </div>\n  </form>\n  <div class=\"search-result-list\">Search Result List</div>\n</div>\n`;\n\nexports[`renders ./components/form/demo/basic.vue correctly 1`] = `\n<form autocomplete=\"off\" class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"basic_username\" class=\"ant-form-item-required\" title=\"Username\">Username\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"basic_username\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"basic_password\" class=\"ant-form-item-required\" title=\"Password\">Password\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input id=\"basic_password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-16 ant-col-offset-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\"><span class=\"ant-checkbox ant-checkbox-checked\"><input id=\"basic_remember\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Remember me</span></label></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-16 ant-col-offset-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/custom-validation.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label for=\"custom-validation_pass\" class=\"ant-form-item-required\" title=\"Password\">Password\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input autocomplete=\"off\" id=\"custom-validation_pass\" type=\"password\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label for=\"custom-validation_checkPass\" class=\"\" title=\"Confirm\">Confirm\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input autocomplete=\"off\" id=\"custom-validation_checkPass\" type=\"password\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label for=\"custom-validation_age\" class=\"\" title=\"Age\">Age\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-number\">\n              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" id=\"custom-validation_age\" class=\"ant-input-number-input\"></div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/customized-form-controls.vue correctly 1`] = `\n<form class=\"ant-form ant-form-inline\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"customized_form_controls_price\" class=\"\" title=\"Price\">Price\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span><input type=\"text\" style=\"width: 100px;\" class=\"ant-input\"><div style=\"width: 80px; margin: 0px 8px;\" class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"RMB\">RMB</span>\n            <!---->\n          </div>\n          <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n          <!----></span>\n          <!---->\n        </div></span>\n      </div>\n    </div>\n    <!---->\n    <!---->\n  </div>\n  </div>\n  <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/disabled.vue correctly 1`] = `\n<label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span> Form disabled </span></label>\n<form style=\"max-width: 600px;\" class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Checkbox\">Checkbox\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>checkbox</span></label></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Radio\">Radio\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-checked ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"apple\"><span class=\"ant-radio-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"pear\"><span class=\"ant-radio-inner\"></span></span><span>Pear</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Input\">Input\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input disabled=\"\" type=\"text\" class=\"ant-input ant-input-disabled\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Select\">Select\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow ant-select-disabled\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"TreeSelect\">TreeSelect\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-tree-select ant-select-single ant-select-show-arrow ant-select-disabled\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Cascader\">Cascader\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-disabled\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"DatePicker\">DatePicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker ant-picker-disabled\">\n              <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"RangePicker\">RangePicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker ant-picker-range ant-picker-disabled\">\n              <div class=\"ant-picker-input ant-picker-input-active\"><input disabled=\"\" readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n              <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n              <!----></span>\n              <!---->\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"InputNumber\">InputNumber\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-number ant-input-number-disabled\">\n              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" class=\"ant-input-number-input\" disabled=\"\"></div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"TextArea\">TextArea\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><textarea rows=\"4\" disabled=\"\" class=\"ant-input ant-input-disabled\"></textarea></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Switch\">Switch\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button disabled=\"\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch-disabled ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Upload\">Upload\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-upload-wrapper ant-upload-picture-card-wrapper\"><div class=\"ant-upload-list ant-upload-list-picture-card\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture-card ant-upload-disabled\"><span class=\"ant-upload ant-upload-disabled\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><div><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span>\n            <div style=\"margin-top: 8px;\">Upload</div>\n          </div></span>\n        </div>\n      </div></span>\n    </div>\n  </div>\n  <!---->\n  <!---->\n  </div>\n  </div>\n  <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Button\">Button\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button disabled=\"\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Button</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/dynamic-form-item.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-xs-24 ant-col-xs-offset-0 ant-col-sm-20 ant-col-sm-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button style=\"width: 60%;\" class=\"ant-btn ant-btn-dashed\" type=\"button\">\n              <!----><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span><span>Add field</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-xs-24 ant-col-xs-offset-0 ant-col-sm-20 ant-col-sm-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/dynamic-form-items.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-dashed ant-btn-block\" type=\"button\">\n              <!----><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span><span>Add user</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/dynamic-form-items-complex.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"dynamic_form_nest_item_area\" class=\"ant-form-item-required\" title=\"Area\">Area\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"dynamic_form_nest_item_area\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"dynamic_form_nest_item_area_list\" aria-autocomplete=\"list\" aria-controls=\"dynamic_form_nest_item_area_list\" aria-activedescendant=\"dynamic_form_nest_item_area_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-dashed ant-btn-block\" type=\"button\">\n              <!----><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span><span>Add sights</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/dynamic-rule.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label for=\"dynamic_rule_username\" class=\"ant-form-item-required\" title=\"Username\">Username\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"dynamic_rule_username\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label for=\"dynamic_rule_nickname\" class=\"\" title=\"Nickname\">Nickname\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"dynamic_rule_nickname\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-8 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input id=\"dynamic_rule_checkNick\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Nickname is required</span></label></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-8 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Check</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/form-context.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"form_context_group\" class=\"ant-form-item-required\" title=\"Group Name\">Group Name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"form_context_group\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label class=\"\" title=\"User List\">User List\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-typography ant-typography-secondary ant-form-text\"> ( <span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span> No user yet. )\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-16 ant-col-offset-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button><button style=\"margin: 0px 8px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Add User</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/form-in-modal.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>New Collection</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/form/demo/horizontal-login.vue correctly 1`] = `\n<form class=\"ant-form ant-form-inline\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"user\" style=\"color: rgba(0, 0, 0, 0.25);\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><input placeholder=\"Username\" type=\"text\" class=\"ant-input\">\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"lock\" style=\"color: rgba(0, 0, 0, 0.25);\" class=\"anticon anticon-lock\"><svg focusable=\"false\" class=\"\" data-icon=\"lock\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z\"></path></svg></span></span><input placeholder=\"Password\" type=\"password\" class=\"ant-input\">\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button disabled=\"\" class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Log in</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/inline-login.vue correctly 1`] = `\n<form autocomplete=\"off\" class=\"ant-form ant-form-inline\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"horizontal_login_username\" class=\"ant-form-item-required\" title=\"Username\">Username\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user site-form-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><input id=\"horizontal_login_username\" type=\"text\" class=\"ant-input\">\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"horizontal_login_password\" class=\"ant-form-item-required\" title=\"Password\">Password\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper ant-input-password\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"lock\" class=\"anticon anticon-lock site-form-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"lock\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z\"></path></svg></span></span><input id=\"horizontal_login_password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button disabled=\"\" class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Log in</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/label-width.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Instant delivery\">Instant delivery\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Activity type\">Activity type\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"1\"><span class=\"ant-checkbox-inner\"></span></span><span>Online</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"2\"><span class=\"ant-checkbox-inner\"></span></span><span>Promotion</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"3\"><span class=\"ant-checkbox-inner\"></span></span><span>Offline</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Resources\">Resources\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"1\"><span class=\"ant-radio-inner\"></span></span><span>Sponsor</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"2\"><span class=\"ant-radio-inner\"></span></span><span>Venue</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div style=\"width: 150px;\" class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Activity form\">Activity form\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><textarea class=\"ant-input\"></textarea></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Cancel</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/layout.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"\" title=\"Form Layout\">Form Layout\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"horizontal\"><span class=\"ant-radio-button-inner\"></span></span><span>Horizontal</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"vertical\"><span class=\"ant-radio-button-inner\"></span></span><span>Vertical</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"inline\"><span class=\"ant-radio-button-inner\"></span></span><span>Inline</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"\" title=\"Field A\">Field A\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"input placeholder\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"\" title=\"Field B\">Field B\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"input placeholder\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/nest-messages.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"nest-messages_user_name\" class=\"ant-form-item-required\" title=\"Name\">Name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"nest-messages_user_name\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"nest-messages_user_email\" class=\"\" title=\"Email\">Email\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"nest-messages_user_email\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"nest-messages_user_age\" class=\"\" title=\"Age\">Age\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-number\">\n              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" id=\"nest-messages_user_age\" class=\"ant-input-number-input\"></div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"nest-messages_user_website\" class=\"\" title=\"Website\">Website\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"nest-messages_user_website\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-8 ant-form-item-label\"><label for=\"nest-messages_user_introduction\" class=\"\" title=\"Introduction\">Introduction\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><textarea id=\"nest-messages_user_introduction\" class=\"ant-input\"></textarea></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-16 ant-col-offset-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/normal-login.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal login-form\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"normal_login_username\" class=\"ant-form-item-required\" title=\"Username\">Username\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user site-form-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><input id=\"normal_login_username\" type=\"text\" class=\"ant-input\">\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label for=\"normal_login_password\" class=\"ant-form-item-required\" title=\"Password\">Password\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper ant-input-password\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"lock\" class=\"anticon anticon-lock site-form-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"lock\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z\"></path></svg></span></span><input id=\"normal_login_password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\"><span class=\"ant-checkbox ant-checkbox-checked\"><input id=\"normal_login_remember\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Remember me</span></label><a class=\"login-form-forgot\" href=\"\">Forgot password</a></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary login-form-button\" disabled=\"\" type=\"submit\">\n              <!----><span>Log in</span>\n            </button> Or <a href=\"\">register now!</a></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/time-related-controls.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_date-picker\" class=\"ant-form-item-required\" title=\"DatePicker\">DatePicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\">\n              <div class=\"ant-picker-input\"><input id=\"time_related_controls_date-picker\" readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_date-time-picker\" class=\"ant-form-item-required\" title=\"DatePicker[showTime]\">DatePicker[showTime]\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\">\n              <div class=\"ant-picker-input\"><input id=\"time_related_controls_date-time-picker\" readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_month-picker\" class=\"ant-form-item-required\" title=\"MonthPicker\">MonthPicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\">\n              <div class=\"ant-picker-input\"><input id=\"time_related_controls_month-picker\" readonly=\"\" placeholder=\"Select month\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_range-picker\" class=\"ant-form-item-required\" title=\"RangePicker\">RangePicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker ant-picker-range\">\n              <div class=\"ant-picker-input ant-picker-input-active\"><input id=\"time_related_controls_range-picker\" readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n              <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n              <!----></span>\n              <!---->\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_range-time-picker\" class=\"ant-form-item-required\" title=\"RangePicker[showTime]\">RangePicker[showTime]\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker ant-picker-range\">\n              <div class=\"ant-picker-input ant-picker-input-active\"><input id=\"time_related_controls_range-time-picker\" readonly=\"\" placeholder=\"Start date\" size=\"21\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n              <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"21\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n              <!----></span>\n              <!---->\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-8 ant-form-item-label\"><label for=\"time_related_controls_time-picker\" class=\"ant-form-item-required\" title=\"TimePicker\">TimePicker\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-16 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\">\n              <div class=\"ant-picker-input\"><input id=\"time_related_controls_time-picker\" readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-xs-24 ant-col-xs-offset-0 ant-col-sm-16 ant-col-sm-offset-8 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/useForm-basic.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity zone\">Activity zone\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">please select your zone</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity type\">Activity type\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"1\"><span class=\"ant-checkbox-inner\"></span></span><span>Online</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"2\"><span class=\"ant-checkbox-inner\"></span></span><span>Promotion</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"3\"><span class=\"ant-checkbox-inner\"></span></span><span>Offline</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/useForm-merge.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity zone\">Activity zone\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">please select your zone</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity type\">Activity type\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-checkbox-group\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"1\"><span class=\"ant-checkbox-inner\"></span></span><span>Online</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"2\"><span class=\"ant-checkbox-inner\"></span></span><span>Promotion</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"3\"><span class=\"ant-checkbox-inner\"></span></span><span>Offline</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item error-infos\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/useForm-nested.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Sub name\">Sub name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/useForm-trigger.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-4 ant-form-item-label\"><label class=\"ant-form-item-required\" title=\"Activity zone\">Activity zone\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">please select your zone</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/validate-other.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label class=\"\" title=\"Plain Text\">Plain Text\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-form-text\">China</span></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_select\" class=\"ant-form-item-required\" title=\"Select\">Select\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"validate_other_select\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"validate_other_select_list\" aria-autocomplete=\"list\" aria-controls=\"validate_other_select_list\" aria-activedescendant=\"validate_other_select_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">Please select a country</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_select-multiple\" class=\"ant-form-item-required\" title=\"Select[multiple]\">Select[multiple]\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-multiple ant-select-show-search\">\n              <!---->\n              <div class=\"ant-select-selector\">\n                <div class=\"ant-select-selection-overflow\">\n                  <!---->\n                  <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n                    <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"validate_other_select-multiple\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"validate_other_select-multiple_list\" aria-autocomplete=\"list\" aria-controls=\"validate_other_select-multiple_list\" aria-activedescendant=\"validate_other_select-multiple_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n                  </div>\n                  <!---->\n                </div><span class=\"ant-select-selection-placeholder\">Please select favourite colors</span>\n              </div>\n              <!---->\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label class=\"\" title=\"InputNumber\">InputNumber\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-number\">\n              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" id=\"validate_other_input-number\" class=\"ant-input-number-input\"></div>\n            </div><span class=\"ant-form-text\">machines</span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_switch\" class=\"\" title=\"Switch\">Switch\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button id=\"validate_other_switch\" type=\"button\" role=\"switch\" class=\"ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_slider\" class=\"\" title=\"Slider\">Slider\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div id=\"validate_other_slider\" tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n              <div class=\"ant-slider-rail\"></div>\n              <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n              <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot\" style=\"left: 20%;\"></span><span class=\"ant-slider-dot\" style=\"left: 40%;\"></span><span class=\"ant-slider-dot\" style=\"left: 60%;\"></span><span class=\"ant-slider-dot\" style=\"left: 80%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n              <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n              <!---->\n              <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">A</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 20%;\">B</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 40%;\">C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 60%;\">D</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 80%;\">E</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%;\">F</span></div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_radio-group\" class=\"\" title=\"Radio.Group\">Radio.Group\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\" id=\"validate_other_radio-group\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"a\"><span class=\"ant-radio-inner\"></span></span><span>item 1</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"b\"><span class=\"ant-radio-inner\"></span></span><span>item 2</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"c\"><span class=\"ant-radio-inner\"></span></span><span>item 3</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_radio-button\" class=\"ant-form-item-required\" title=\"Radio.Button\">Radio.Button\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\" id=\"validate_other_radio-button\"><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>item 1</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>item 2</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>item 3</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_checkbox-group\" class=\"\" title=\"Checkbox.Group\">Checkbox.Group\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-checkbox-group\" id=\"validate_other_checkbox-group\">\n              <div class=\"ant-row\">\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\" style=\"line-height: 32px;\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"A\"><span class=\"ant-checkbox-inner\"></span></span><span>A</span></label></div>\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-checkbox-wrapper-disabled\" style=\"line-height: 32px;\"><span class=\"ant-checkbox ant-checkbox-checked ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\" value=\"B\"><span class=\"ant-checkbox-inner\"></span></span><span>B</span></label></div>\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\" style=\"line-height: 32px;\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"C\"><span class=\"ant-checkbox-inner\"></span></span><span>C</span></label></div>\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\" style=\"line-height: 32px;\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"D\"><span class=\"ant-checkbox-inner\"></span></span><span>D</span></label></div>\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\" style=\"line-height: 32px;\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"E\"><span class=\"ant-checkbox-inner\"></span></span><span>E</span></label></div>\n                <div class=\"ant-col ant-col-8\"><label class=\"ant-checkbox-wrapper\" style=\"line-height: 32px;\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"F\"><span class=\"ant-checkbox-inner\"></span></span><span>F</span></label></div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_rate\" class=\"\" title=\"Rate\">Rate\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <ul id=\"validate_other_rate\" class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n              <li class=\"ant-rate-star ant-rate-star-full\">\n                <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n                  <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                  <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                </div>\n              </li>\n              <li class=\"ant-rate-star ant-rate-star-full\">\n                <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n                  <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                  <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                </div>\n              </li>\n              <li class=\"ant-rate-star ant-rate-star-full\">\n                <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n                  <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                  <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                </div>\n              </li>\n              <li class=\"ant-rate-star ant-rate-star-half ant-rate-star-active\">\n                <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n                  <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                  <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                </div>\n              </li>\n              <li class=\"ant-rate-star ant-rate-star-zero\">\n                <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n                  <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                  <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n                </div>\n              </li>\n            </ul>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"validate_other_upload\" class=\"\" title=\"Upload\">Upload\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input id=\"validate_other_upload\" type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Click to upload</span></button></span></div>\n          <div class=\"ant-upload-list ant-upload-list-picture\"></div></span>\n        </div>\n      </div>\n      <!---->\n      <div class=\"ant-form-item-extra\">longgggggggggggggggggggggggggggggggggg</div>\n    </div>\n  </div>\n  <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label class=\"\" title=\"Dragger\">Dragger\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-drag\"><span tabindex=\"0\" class=\"ant-upload ant-upload-btn\" role=\"button\"><input id=\"validate_other_dragger\" type=\"file\" style=\"display: none;\" accept=\"\"><p class=\"ant-upload-drag-icon\"><span role=\"img\" aria-label=\"inbox\" class=\"anticon anticon-inbox\"><svg focusable=\"false\" class=\"\" data-icon=\"inbox\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z\"></path></svg></span></p>\n            <p class=\"ant-upload-text\">Click or drag file to this area to upload</p>\n            <p class=\"ant-upload-hint\">Support for a single or bulk upload.</p></span>\n          </div>\n          <div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n        </div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-12 ant-col-offset-6 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"submit\">\n              <!----><span>Submit</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/validate-static.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item  ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Fail\">Fail\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"unavailable choice\" id=\"error\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-error ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Should be combination of numbers &amp; alphabets</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-warning\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Warning\">Warning\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></span><input placeholder=\"Warning\" id=\"warning\" type=\"text\" class=\"ant-input\">\n            <!----></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-is-validating\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Validating\">Validating\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"I'm the content is being validated\" id=\"validating\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-validating ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">The information is being validated...</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-success\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Success\">Success\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"I'm the content\" id=\"success\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-warning\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Warning\">Warning\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"Warning\" id=\"warning2\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Fail\">Fail\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input placeholder=\"unavailable choice\" id=\"error2\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-error ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Should be combination of numbers &amp; alphabets</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-success\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Success\">Success\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\" style=\"width: 100%;\">\n              <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-warning\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Warning\">Warning\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\" style=\"width: 100%;\">\n              <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Error\">Error\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker ant-picker-range\" style=\"width: 100%;\">\n              <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n              <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n              <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n              <!----></span>\n              <!---->\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Error\">Error\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">I'm Select</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Validating\">Validating\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">I'm Cascader</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-error ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Something breaks the rule.</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-warning\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Warning\">Warning\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">I'm TreeSelect</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-warning ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Need to be checked</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div style=\"margin-bottom: 0px;\" class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"inline\">inline\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-form-item  ant-form-item-has-error\">\n              <div style=\"display: inline-block; width: calc(50% - 12px);\" class=\"ant-row ant-form-row\">\n                <!---->\n                <div class=\"ant-col ant-form-item-control\">\n                  <div class=\"ant-form-item-control-input\">\n                    <div class=\"ant-form-item-control-input-content\">\n                      <div class=\"ant-picker\">\n                        <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                          <!----></span>\n                          <!---->\n                        </div>\n                        <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n                        <!---->\n                      </div>\n                    </div>\n                  </div>\n                  <div style=\"display: flex; flex-wrap: nowrap;\">\n                    <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n                      <div class=\"ant-form-item-explain-error ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Please select right date</div>\n                    </div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n              </div>\n              <!---->\n            </div><span style=\"display: inline-block, width: 24px; line-height: 32px; text-align: center;\"> - </span>\n            <div class=\"ant-form-item\">\n              <div style=\"display: inline-block; width: calc(50% - 12px);\" class=\"ant-row ant-form-row\">\n                <!---->\n                <div class=\"ant-col ant-form-item-control\">\n                  <div class=\"ant-form-item-control-input\">\n                    <div class=\"ant-form-item-control-input-content\">\n                      <div class=\"ant-picker\">\n                        <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                          <!----></span>\n                          <!---->\n                        </div>\n                        <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n                        <!---->\n                      </div>\n                    </div>\n                  </div>\n                  <!---->\n                  <!---->\n                </div>\n              </div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-success\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Success\">Success\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-number\" style=\"width: 100%;\">\n              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" class=\"ant-input-number-input\"></div>\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-success\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Success\">Success\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper\"><!----><input placeholder=\"with allowClear\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-warning\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Warning\">Warning\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input placeholder=\"with input password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Error\">Error\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input placeholder=\"with input password and allowClear\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon-has-suffix ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n            <!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n            <!----></span></span>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Fail\">Fail\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\"></textarea>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item  ant-form-item-has-feedback ant-form-item-has-error\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-6 ant-form-item-label\"><label class=\"\" title=\"Fail\">Fail\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-xs-24 ant-col-sm-14 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-input-textarea ant-input-textarea-show-count ant-input-textarea-show-count\" data-count=\"0\"><span class=\"ant-input-affix-wrapper ant-input-affix-wrapper-textarea-with-clear-btn\"><textarea class=\"ant-input\"></textarea><span role=\"button\" aria-label=\"close-circle\" tabindex=\"-1\" class=\"anticon anticon-close-circle ant-input-clear-icon-hidden ant-input-clear-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"display: flex; flex-wrap: nowrap;\">\n          <div role=\"alert\" class=\"ant-form-item-explain ant-form-item-explain-connected ant-form-show-help ant-form-show-help-enter ant-form-show-help-enter-prepare ant-form-show-help-enter-start\">\n            <div class=\"ant-form-item-explain-error ant-form-show-help-item ant-form-show-help-item-appear ant-form-show-help-item-enter ant-form-show-help-item-appear-prepare ant-form-show-help-item-enter-prepare\" style=\"height: 0px; opacity: 0;\">Should have something</div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/form/demo/validation.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_name\" class=\"ant-form-item-required\" title=\"Activity name\">Activity name\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><input id=\"form_item_name\" type=\"text\" class=\"ant-input\"></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_region\" class=\"ant-form-item-required\" title=\"Activity zone\">Activity zone\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-select ant-select-single ant-select-show-arrow\">\n              <!---->\n              <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"form_item_region\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"form_item_region_list\" aria-autocomplete=\"list\" aria-controls=\"form_item_region_list\" aria-activedescendant=\"form_item_region_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n                <!----><span class=\"ant-select-selection-placeholder\">please select your zone</span>\n              </div>\n              <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n              <!----></span>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_date1\" class=\"ant-form-item-required\" title=\"Activity time\">Activity time\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-picker\" style=\"width: 100%;\">\n              <div class=\"ant-picker-input\"><input id=\"form_item_date1\" readonly=\"\" placeholder=\"Pick a date\" title=\"\" size=\"21\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n                <!----></span>\n                <!---->\n              </div>\n              <div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_delivery\" class=\"\" title=\"Instant delivery\">Instant delivery\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button id=\"form_item_delivery\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_type\" class=\"ant-form-item-required\" title=\"Activity type\">Activity type\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-checkbox-group\" id=\"form_item_type\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"1\"><span class=\"ant-checkbox-inner\"></span></span><span>Online</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"2\"><span class=\"ant-checkbox-inner\"></span></span><span>Promotion</span></label><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"3\"><span class=\"ant-checkbox-inner\"></span></span><span>Offline</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_resource\" class=\"ant-form-item-required\" title=\"Resources\">Resources\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\" id=\"form_item_resource\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"1\"><span class=\"ant-radio-inner\"></span></span><span>Sponsor</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"2\"><span class=\"ant-radio-inner\"></span></span><span>Venue</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-5 ant-form-item-label\"><label for=\"form_item_desc\" class=\"ant-form-item-required\" title=\"Activity form\">Activity form\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-13 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><textarea id=\"form_item_desc\" class=\"ant-input\"></textarea></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-14 ant-col-offset-4 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Create</span>\n            </button><button style=\"margin-left: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n"
  },
  {
    "path": "components/form/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('form', { skip: ['price-input'] });\n"
  },
  {
    "path": "components/form/context.ts",
    "content": "import type { InjectionKey, ComputedRef } from 'vue';\nimport { inject, provide, computed } from 'vue';\nimport type { ColProps } from '../grid';\nimport type { RequiredMark } from './Form';\nimport type { ValidateStatus, FieldExpose } from './FormItem';\nimport type { FormLabelAlign, Rule, ValidateMessages } from './interface';\nimport { defaultValidateMessages } from './utils/messages';\n\nexport interface FormContextProps {\n  model?: ComputedRef<any>;\n  vertical: ComputedRef<boolean>;\n  name?: ComputedRef<string>;\n  colon?: ComputedRef<boolean>;\n  labelAlign?: ComputedRef<FormLabelAlign>;\n  labelWrap?: ComputedRef<boolean>;\n  labelCol?: ComputedRef<ColProps>;\n  wrapperCol?: ComputedRef<ColProps>;\n  requiredMark?: ComputedRef<RequiredMark>;\n  //itemRef: (name: (string | number)[]) => (node: React.ReactElement) => void;\n  addField: (eventKey: string, field: FieldExpose) => void;\n  removeField: (eventKey: string) => void;\n  validateTrigger?: ComputedRef<string | string[]>;\n  rules?: ComputedRef<{ [k: string]: Rule[] | Rule }>;\n  onValidate: (\n    name: string | number | Array<string | number>,\n    status: boolean,\n    errors: string[] | null,\n  ) => void;\n  validateMessages: ComputedRef<ValidateMessages>;\n}\n\nexport const FormContextKey: InjectionKey<FormContextProps> = Symbol('formContextKey');\n\nexport const useProvideForm = (state: FormContextProps) => {\n  provide(FormContextKey, state);\n};\n\nexport const useInjectForm = () => {\n  return inject(FormContextKey, {\n    name: computed(() => undefined),\n    labelAlign: computed(() => 'right' as FormLabelAlign),\n    vertical: computed(() => false),\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    addField: (_eventKey: string, _field: FieldExpose) => {},\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    removeField: (_eventKey: string) => {},\n    model: computed(() => undefined),\n    rules: computed(() => undefined),\n    colon: computed(() => undefined),\n    labelWrap: computed(() => undefined),\n    labelCol: computed(() => undefined),\n    requiredMark: computed(() => false),\n    validateTrigger: computed(() => undefined),\n    onValidate: () => {},\n    validateMessages: computed(() => defaultValidateMessages),\n  } as FormContextProps);\n};\n\n/** Used for ErrorList only */\nexport interface FormItemPrefixContextProps {\n  prefixCls: ComputedRef<string>;\n  status?: ComputedRef<ValidateStatus>;\n}\n\nexport const FormItemPrefixContextKey: InjectionKey<FormItemPrefixContextProps> = Symbol(\n  'formItemPrefixContextKey',\n);\n\nexport const useProvideFormItemPrefix = (state: FormItemPrefixContextProps) => {\n  provide(FormItemPrefixContextKey, state);\n};\n\nexport const useInjectFormItemPrefix = () => {\n  return inject(FormItemPrefixContextKey, {\n    prefixCls: computed(() => ''),\n  });\n};\n"
  },
  {
    "path": "components/form/demo/advanced-search.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 高级搜索\n  en-US: Advanced search\n---\n\n## zh-CN\n\n三列栅格式的表单排列方式，常用于数据表格的高级搜索。\n\n有部分定制的样式代码，由于输入标签长度不确定，需要根据具体情况自行调整。\n\n## en-US\n\nThree columns layout is often used for advanced searching of data table.\n\nBecause the width of label is not fixed, you may need to adjust it by customizing its style.\n\n</docs>\n<template>\n  <div>\n    <a-form\n      ref=\"formRef\"\n      name=\"advanced_search\"\n      class=\"ant-advanced-search-form\"\n      :model=\"formState\"\n      @finish=\"onFinish\"\n    >\n      <a-row :gutter=\"24\">\n        <template v-for=\"i in 10\" :key=\"i\">\n          <a-col v-show=\"expand || i <= 6\" :span=\"8\">\n            <a-form-item\n              :name=\"`field-${i}`\"\n              :label=\"`field-${i}`\"\n              :rules=\"[{ required: true, message: 'input something' }]\"\n            >\n              <a-input v-model:value=\"formState[`field-${i}`]\" placeholder=\"placeholder\"></a-input>\n            </a-form-item>\n          </a-col>\n        </template>\n      </a-row>\n      <a-row>\n        <a-col :span=\"24\" style=\"text-align: right\">\n          <a-button type=\"primary\" html-type=\"submit\">Search</a-button>\n          <a-button style=\"margin: 0 8px\" @click=\"() => formRef.resetFields()\">Clear</a-button>\n          <a style=\"font-size: 12px\" @click=\"expand = !expand\">\n            <template v-if=\"expand\">\n              <UpOutlined />\n            </template>\n            <template v-else>\n              <DownOutlined />\n            </template>\n            Collapse\n          </a>\n        </a-col>\n      </a-row>\n    </a-form>\n    <div class=\"search-result-list\">Search Result List</div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport { DownOutlined, UpOutlined } from '@ant-design/icons-vue';\nimport type { FormInstance } from 'ant-design-vue';\nconst expand = ref(false);\nconst formRef = ref<FormInstance>();\nconst formState = reactive({});\nconst onFinish = (values: any) => {\n  console.log('Received values of form: ', values);\n  console.log('formState: ', formState);\n};\n</script>\n\n<style scoped>\n#components-form-demo-advanced-search .ant-form {\n  max-width: none;\n}\n#components-form-demo-advanced-search .search-result-list {\n  margin-top: 16px;\n  border: 1px dashed #e9e9e9;\n  border-radius: 2px;\n  background-color: #fafafa;\n  min-height: 200px;\n  text-align: center;\n  padding-top: 80px;\n}\n[data-theme='dark'] .ant-advanced-search-form {\n  background: rgba(255, 255, 255, 0.04);\n  border: 1px solid #434343;\n  padding: 24px;\n  border-radius: 2px;\n}\n[data-theme='dark'] #components-form-demo-advanced-search .search-result-list {\n  border: 1px dashed #434343;\n  background: rgba(255, 255, 255, 0.04);\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n基本的表单数据域控制展示，包含布局、初始化、验证、提交。\n\n## en-US\n\nBasic Form data control. Includes layout, initial values, validation and submit.\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    name=\"basic\"\n    :label-col=\"{ span: 8 }\"\n    :wrapper-col=\"{ span: 16 }\"\n    autocomplete=\"off\"\n    @finish=\"onFinish\"\n    @finishFailed=\"onFinishFailed\"\n  >\n    <a-form-item\n      label=\"Username\"\n      name=\"username\"\n      :rules=\"[{ required: true, message: 'Please input your username!' }]\"\n    >\n      <a-input v-model:value=\"formState.username\" />\n    </a-form-item>\n\n    <a-form-item\n      label=\"Password\"\n      name=\"password\"\n      :rules=\"[{ required: true, message: 'Please input your password!' }]\"\n    >\n      <a-input-password v-model:value=\"formState.password\" />\n    </a-form-item>\n\n    <a-form-item name=\"remember\" :wrapper-col=\"{ offset: 8, span: 16 }\">\n      <a-checkbox v-model:checked=\"formState.remember\">Remember me</a-checkbox>\n    </a-form-item>\n\n    <a-form-item :wrapper-col=\"{ offset: 8, span: 16 }\">\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\n\ninterface FormState {\n  username: string;\n  password: string;\n  remember: boolean;\n}\n\nconst formState = reactive<FormState>({\n  username: '',\n  password: '',\n  remember: true,\n});\nconst onFinish = (values: any) => {\n  console.log('Success:', values);\n};\n\nconst onFinishFailed = (errorInfo: any) => {\n  console.log('Failed:', errorInfo);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/custom-validation.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 自定义校验规则\n  en-US: Custom validation rules\n---\n\n## zh-CN\n\n这个例子中展示了如何使用自定义验证规则来完成密码的二次验证。本例还使用 `has-feedback` 属性为输入框添加了表示校验结果的反馈图标。\n更多高级用法可参考 [async-validator](https://github.com/yiminghe/async-validator)\n\n## en-US\n\nThis example shows how to customize your own validation rules to finish a two-factor password verification.\nYou can use `has-feedback` to reflect validation result as an icon.\nSee more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).\n</docs>\n\n<template>\n  <a-form\n    ref=\"formRef\"\n    name=\"custom-validation\"\n    :model=\"formState\"\n    :rules=\"rules\"\n    v-bind=\"layout\"\n    @finish=\"handleFinish\"\n    @validate=\"handleValidate\"\n    @finishFailed=\"handleFinishFailed\"\n  >\n    <a-form-item has-feedback label=\"Password\" name=\"pass\">\n      <a-input v-model:value=\"formState.pass\" type=\"password\" autocomplete=\"off\" />\n    </a-form-item>\n    <a-form-item has-feedback label=\"Confirm\" name=\"checkPass\">\n      <a-input v-model:value=\"formState.checkPass\" type=\"password\" autocomplete=\"off\" />\n    </a-form-item>\n    <a-form-item has-feedback label=\"Age\" name=\"age\">\n      <a-input-number v-model:value=\"formState.age\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetForm\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport type { Rule } from 'ant-design-vue/es/form';\nimport type { FormInstance } from 'ant-design-vue';\ninterface FormState {\n  pass: string;\n  checkPass: string;\n  age: number | undefined;\n}\nconst formRef = ref<FormInstance>();\nconst formState = reactive<FormState>({\n  pass: '',\n  checkPass: '',\n  age: undefined,\n});\nconst checkAge = async (_rule: Rule, value: number) => {\n  if (!value) {\n    return Promise.reject('Please input the age');\n  }\n  if (!Number.isInteger(value)) {\n    return Promise.reject('Please input digits');\n  } else {\n    if (value < 18) {\n      return Promise.reject('Age must be greater than 18');\n    } else {\n      return Promise.resolve();\n    }\n  }\n};\nconst validatePass = async (_rule: Rule, value: string) => {\n  if (value === '') {\n    return Promise.reject('Please input the password');\n  } else {\n    if (formState.checkPass !== '') {\n      formRef.value.validateFields('checkPass');\n    }\n    return Promise.resolve();\n  }\n};\nconst validatePass2 = async (_rule: Rule, value: string) => {\n  if (value === '') {\n    return Promise.reject('Please input the password again');\n  } else if (value !== formState.pass) {\n    return Promise.reject(\"Two inputs don't match!\");\n  } else {\n    return Promise.resolve();\n  }\n};\n\nconst rules: Record<string, Rule[]> = {\n  pass: [{ required: true, validator: validatePass, trigger: 'change' }],\n  checkPass: [{ validator: validatePass2, trigger: 'change' }],\n  age: [{ validator: checkAge, trigger: 'change' }],\n};\nconst layout = {\n  labelCol: { span: 4 },\n  wrapperCol: { span: 14 },\n};\nconst handleFinish = (values: FormState) => {\n  console.log(values, formState);\n};\nconst handleFinishFailed = errors => {\n  console.log(errors);\n};\nconst resetForm = () => {\n  formRef.value.resetFields();\n};\nconst handleValidate = (...args) => {\n  console.log(args);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/customized-form-controls.vue",
    "content": "<docs>\n---\norder: 6.1\ntitle:\n  zh-CN: 自定义表单控件\n  en-US: Customized Form Controls\n---\n\n## zh-CN\n\n自定义或第三方的表单控件，也可以与 Form 组件一起使用。只要该组件注入 `useInjectFormItemContext` 并调用相应方法。\n\n## en-US\n\nCustomized or third-party form controls can be used in Form, too.\n\nControls must injects `useInjectFormItemContext` and calls the corresponding method.\n</docs>\n<template>\n  <a-form name=\"customized_form_controls\" layout=\"inline\" :model=\"formState\" @finish=\"onFinish\">\n    <a-form-item name=\"price\" label=\"Price\" :rules=\"[{ validator: checkPrice }]\">\n      <price-input v-model:value=\"formState.price\" />\n    </a-form-item>\n    <a-form-item>\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\n// sourceCode https://github.com/vueComponent/ant-design-vue/blob/cb3c002e17f0f4f5b3e8d01846069da0e2645aff/components/form/demo/price-input.vue\nimport PriceInput from './price-input.vue';\nimport type { Currency } from './price-input.vue';\n\nconst formState = reactive({\n  price: {\n    number: 0,\n    currency: 'rmb' as Currency,\n  },\n});\nconst onFinish = (values: any) => {\n  console.log('Received values from form: ', values);\n};\nconst checkPrice = (_: any, value: { number: number }) => {\n  if (value.number > 0) {\n    return Promise.resolve();\n  }\n  return Promise.reject(new Error('Price must be greater than zero!'));\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/disabled.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 表单禁用\n  en-US: Form disabled\n---\n\n## zh-CN\n\n设置表单组件禁用，仅对 antd 组件有效。\n\n## en-US\n\nSet component disabled, only works for antd components.\n</docs>\n\n<template>\n  <a-checkbox :checked=\"componentDisabled\" @change=\"e => (componentDisabled = e.target.checked)\">\n    Form disabled\n  </a-checkbox>\n  <a-form\n    :label-col=\"labelCol\"\n    :wrapper-col=\"wrapperCol\"\n    layout=\"horizontal\"\n    :disabled=\"componentDisabled\"\n    style=\"max-width: 600px\"\n  >\n    <a-form-item label=\"Checkbox\">\n      <a-checkbox>checkbox</a-checkbox>\n    </a-form-item>\n    <a-form-item label=\"Radio\">\n      <a-radio-group v-model:value=\"radioValue\">\n        <a-radio value=\"apple\">Apple</a-radio>\n        <a-radio value=\"pear\">Pear</a-radio>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Input\">\n      <a-input />\n    </a-form-item>\n    <a-form-item label=\"Select\">\n      <a-select>\n        <a-select-option value=\"demo\">Demo</a-select-option>\n      </a-select>\n    </a-form-item>\n    <a-form-item label=\"TreeSelect\">\n      <a-tree-select :tree-data=\"treeData\" />\n    </a-form-item>\n    <a-form-item label=\"Cascader\">\n      <a-cascader :options=\"options\" />\n    </a-form-item>\n    <a-form-item label=\"DatePicker\">\n      <a-date-picker />\n    </a-form-item>\n    <a-form-item label=\"RangePicker\">\n      <a-range-picker />\n    </a-form-item>\n    <a-form-item label=\"InputNumber\">\n      <a-input-number />\n    </a-form-item>\n    <a-form-item label=\"TextArea\">\n      <a-textarea :rows=\"4\" />\n    </a-form-item>\n    <a-form-item label=\"Switch\">\n      <a-switch v-model:checked=\"checked\" />\n    </a-form-item>\n    <a-form-item label=\"Upload\">\n      <a-upload action=\"/upload.do\" list-type=\"picture-card\">\n        <div>\n          <PlusOutlined />\n          <div style=\"margin-top: 8px\">Upload</div>\n        </div>\n      </a-upload>\n    </a-form-item>\n    <a-form-item label=\"Button\">\n      <a-button>Button</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, reactive } from 'vue';\nimport { PlusOutlined } from '@ant-design/icons-vue';\nimport type { TreeSelectProps, CascaderProps } from 'ant-design-vue';\n\nconst componentDisabled = ref(true);\nconst labelCol = { style: { width: '150px' } };\nconst wrapperCol = { span: 14 };\nconst radioValue = ref('apple');\nconst treeData = reactive<TreeSelectProps['treeData']>([\n  { title: 'Light', value: 'light', children: [{ title: 'Bamboo', value: 'bamboo' }] },\n]);\nconst options = reactive<CascaderProps['options']>([\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n      },\n    ],\n  },\n]);\nconst checked = ref(false);\n</script>\n"
  },
  {
    "path": "components/form/demo/dynamic-form-item.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 动态增减表单项\n  en-US: Dynamic Form Item\n---\n\n## zh-CN\n\n动态增加、减少表单项。\n\n## en-US\n\nAdd or remove form items dynamically.\n</docs>\n<template>\n  <a-form\n    ref=\"formRef\"\n    name=\"dynamic_form_item\"\n    :model=\"dynamicValidateForm\"\n    v-bind=\"formItemLayoutWithOutLabel\"\n  >\n    <a-form-item\n      v-for=\"(domain, index) in dynamicValidateForm.domains\"\n      :key=\"domain.key\"\n      v-bind=\"index === 0 ? formItemLayout : {}\"\n      :label=\"index === 0 ? 'Domains' : ''\"\n      :name=\"['domains', index, 'value']\"\n      :rules=\"{\n        required: true,\n        message: 'domain can not be null',\n        trigger: 'change',\n      }\"\n    >\n      <a-input\n        v-model:value=\"domain.value\"\n        placeholder=\"please input domain\"\n        style=\"width: 60%; margin-right: 8px\"\n      />\n      <MinusCircleOutlined\n        v-if=\"dynamicValidateForm.domains.length > 1\"\n        class=\"dynamic-delete-button\"\n        @click=\"removeDomain(domain)\"\n      />\n    </a-form-item>\n    <a-form-item v-bind=\"formItemLayoutWithOutLabel\">\n      <a-button type=\"dashed\" style=\"width: 60%\" @click=\"addDomain\">\n        <PlusOutlined />\n        Add field\n      </a-button>\n    </a-form-item>\n    <a-form-item v-bind=\"formItemLayoutWithOutLabel\">\n      <a-button type=\"primary\" html-type=\"submit\" @click=\"submitForm\">Submit</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetForm\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport type { FormInstance } from 'ant-design-vue';\n\ninterface Domain {\n  value: string;\n  key: number;\n}\nconst formRef = ref<FormInstance>();\nconst formItemLayout = {\n  labelCol: {\n    xs: { span: 24 },\n    sm: { span: 4 },\n  },\n  wrapperCol: {\n    xs: { span: 24 },\n    sm: { span: 20 },\n  },\n};\nconst formItemLayoutWithOutLabel = {\n  wrapperCol: {\n    xs: { span: 24, offset: 0 },\n    sm: { span: 20, offset: 4 },\n  },\n};\nconst dynamicValidateForm = reactive<{ domains: Domain[] }>({\n  domains: [],\n});\nconst submitForm = () => {\n  formRef.value\n    .validate()\n    .then(() => {\n      console.log('values', dynamicValidateForm.domains);\n    })\n    .catch(error => {\n      console.log('error', error);\n    });\n};\nconst resetForm = () => {\n  formRef.value.resetFields();\n};\nconst removeDomain = (item: Domain) => {\n  const index = dynamicValidateForm.domains.indexOf(item);\n  if (index !== -1) {\n    dynamicValidateForm.domains.splice(index, 1);\n  }\n};\nconst addDomain = () => {\n  dynamicValidateForm.domains.push({\n    value: '',\n    key: Date.now(),\n  });\n};\n</script>\n\n<style scoped>\n.dynamic-delete-button {\n  cursor: pointer;\n  position: relative;\n  top: 4px;\n  font-size: 24px;\n  color: #999;\n  transition: all 0.3s;\n}\n.dynamic-delete-button:hover {\n  color: #777;\n}\n.dynamic-delete-button[disabled] {\n  cursor: not-allowed;\n  opacity: 0.5;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/dynamic-form-items-complex.vue",
    "content": "<docs>\n---\norder: 4.2\ntitle:\n  zh-CN: 复杂的动态增减表单项\n  en-US: Complex Dynamic Form Item\n---\n\n## zh-CN\n\n这个例子演示了一个表单中包含多个表单控件的情况。\n\n## en-US\n\nThis example demonstrates the case that a form contains multiple form controls.\n\n</docs>\n<template>\n  <a-form\n    ref=\"formRef\"\n    name=\"dynamic_form_nest_item\"\n    :model=\"dynamicValidateForm\"\n    @finish=\"onFinish\"\n  >\n    <a-form-item name=\"area\" label=\"Area\" :rules=\"[{ required: true, message: 'Missing area' }]\">\n      <a-select v-model:value=\"dynamicValidateForm.area\" :options=\"areas\" />\n    </a-form-item>\n    <a-space\n      v-for=\"(sight, index) in dynamicValidateForm.sights\"\n      :key=\"sight.id\"\n      style=\"display: flex; margin-bottom: 8px\"\n      align=\"baseline\"\n    >\n      <a-form-item\n        :name=\"['sights', index, 'value']\"\n        label=\"Sight\"\n        :rules=\"{\n          required: true,\n          message: 'Missing sight',\n        }\"\n      >\n        <a-select\n          v-model:value=\"sight.value\"\n          :disabled=\"!dynamicValidateForm.area\"\n          :options=\"(sights[dynamicValidateForm.area] || []).map(a => ({ value: a }))\"\n          style=\"width: 130px\"\n        ></a-select>\n      </a-form-item>\n      <a-form-item\n        label=\"Price\"\n        :name=\"['sights', index, 'price']\"\n        :rules=\"{\n          required: true,\n          message: 'Missing price',\n        }\"\n      >\n        <a-input v-model:value=\"sight.price\" />\n      </a-form-item>\n      <MinusCircleOutlined @click=\"removeSight(sight)\" />\n    </a-space>\n    <a-form-item>\n      <a-button type=\"dashed\" block @click=\"addSight\">\n        <PlusOutlined />\n        Add sights\n      </a-button>\n    </a-form-item>\n    <a-form-item>\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue';\nimport { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport type { FormInstance } from 'ant-design-vue';\n\ninterface Sights {\n  value: string;\n  price: string;\n  id: number;\n}\nconst areas = [\n  { label: 'Beijing', value: 'Beijing' },\n  { label: 'Shanghai', value: 'Shanghai' },\n];\n\nconst sights = {\n  Beijing: ['Tiananmen', 'Great Wall'],\n  Shanghai: ['Oriental Pearl', 'The Bund'],\n};\n\nconst formRef = ref<FormInstance>();\nconst dynamicValidateForm = reactive<{ sights: Sights[]; area: string }>({\n  sights: [],\n  area: undefined,\n});\nwatch(\n  () => dynamicValidateForm.area,\n  () => {\n    dynamicValidateForm.sights = [];\n  },\n);\nconst removeSight = (item: Sights) => {\n  const index = dynamicValidateForm.sights.indexOf(item);\n  if (index !== -1) {\n    dynamicValidateForm.sights.splice(index, 1);\n  }\n};\nconst addSight = () => {\n  dynamicValidateForm.sights.push({\n    value: undefined,\n    price: undefined,\n    id: Date.now(),\n  });\n};\nconst onFinish = values => {\n  console.log('Received values of form:', values);\n  console.log('dynamicValidateForm:', dynamicValidateForm);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/dynamic-form-items.vue",
    "content": "<docs>\n---\norder: 4.1\ntitle:\n  zh-CN: 动态增减嵌套字段\n  en-US: Dynamic Form nest Items\n---\n\n## zh-CN\n\n通过数组 name 绑定嵌套字段\n\n## en-US\n\nBind nested fields by array name.\n\n</docs>\n<template>\n  <a-form\n    ref=\"formRef\"\n    name=\"dynamic_form_nest_item\"\n    :model=\"dynamicValidateForm\"\n    @finish=\"onFinish\"\n  >\n    <a-space\n      v-for=\"(user, index) in dynamicValidateForm.users\"\n      :key=\"user.id\"\n      style=\"display: flex; margin-bottom: 8px\"\n      align=\"baseline\"\n    >\n      <a-form-item\n        :name=\"['users', index, 'first']\"\n        :rules=\"{\n          required: true,\n          message: 'Missing first name',\n        }\"\n      >\n        <a-input v-model:value=\"user.first\" placeholder=\"First Name\" />\n      </a-form-item>\n      <a-form-item\n        :name=\"['users', index, 'last']\"\n        :rules=\"{\n          required: true,\n          message: 'Missing last name',\n        }\"\n      >\n        <a-input v-model:value=\"user.last\" placeholder=\"Last Name\" />\n      </a-form-item>\n      <MinusCircleOutlined @click=\"removeUser(user)\" />\n    </a-space>\n    <a-form-item>\n      <a-button type=\"dashed\" block @click=\"addUser\">\n        <PlusOutlined />\n        Add user\n      </a-button>\n    </a-form-item>\n    <a-form-item>\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport type { FormInstance } from 'ant-design-vue';\n\ninterface User {\n  first: string;\n  last: string;\n  id: number;\n}\nconst formRef = ref<FormInstance>();\nconst dynamicValidateForm = reactive<{ users: User[] }>({\n  users: [],\n});\nconst removeUser = (item: User) => {\n  const index = dynamicValidateForm.users.indexOf(item);\n  if (index !== -1) {\n    dynamicValidateForm.users.splice(index, 1);\n  }\n};\nconst addUser = () => {\n  dynamicValidateForm.users.push({\n    first: '',\n    last: '',\n    id: Date.now(),\n  });\n};\nconst onFinish = values => {\n  console.log('Received values of form:', values);\n  console.log('dynamicValidateForm.users:', dynamicValidateForm.users);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/dynamic-rule.vue",
    "content": "<docs>\n---\norder: 23\ntitle:\n  zh-CN: 动态校验规则\n  en-US: Dynamic Rules\n---\n\n## zh-CN\n\n根据不同情况执行不同的校验规则。\n\n## en-US\n\nPerform different check rules according to different situations.\n\n</docs>\n<template>\n  <a-form ref=\"formRef\" :model=\"formState\" name=\"dynamic_rule\" v-bind=\"formItemLayout\">\n    <a-form-item\n      label=\"Username\"\n      name=\"username\"\n      :rules=\"[{ required: true, message: 'Please input your username!' }]\"\n    >\n      <a-input v-model:value=\"formState.username\" />\n    </a-form-item>\n\n    <a-form-item\n      label=\"Nickname\"\n      name=\"nickname\"\n      :rules=\"[{ required: formState.checkNick, message: 'Please input your nickname!' }]\"\n    >\n      <a-input v-model:value=\"formState.nickname\" />\n    </a-form-item>\n\n    <a-form-item name=\"checkNick\" v-bind=\"formTailLayout\">\n      <a-checkbox v-model:checked=\"formState.checkNick\">Nickname is required</a-checkbox>\n    </a-form-item>\n\n    <a-form-item v-bind=\"formTailLayout\">\n      <a-button type=\"primary\" @click=\"onCheck\">Check</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue';\nimport type { FormInstance } from 'ant-design-vue';\n\ninterface FormState {\n  username: string;\n  nickname: string;\n  checkNick: boolean;\n}\nconst formRef = ref<FormInstance>();\nconst formState = reactive<FormState>({\n  username: '',\n  nickname: '',\n  checkNick: false,\n});\nwatch(\n  () => formState.checkNick,\n  () => {\n    formRef.value.validateFields(['nickname']);\n  },\n  { flush: 'post' },\n);\nconst onCheck = async () => {\n  try {\n    const values = await formRef.value.validateFields();\n    console.log('Success:', values);\n  } catch (errorInfo) {\n    console.log('Failed:', errorInfo);\n  }\n};\nconst formItemLayout = {\n  labelCol: { span: 4 },\n  wrapperCol: { span: 8 },\n};\nconst formTailLayout = {\n  labelCol: { span: 4 },\n  wrapperCol: { span: 8, offset: 4 },\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/form-context.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 多表单联动\n  en-US: Control between forms\n---\n\n## zh-CN\n\n本例子中，Modal 的确认按钮在 Form 之外，通过 `form.submit` 方法调用表单提交功能。反之，则推荐使用 `<Button htmlType=\"submit\" />` 调用 web 原生提交逻辑。\n\n## en-US\n\nIn this case, submit button is in the Modal which is out of Form. You can use `form.submit` to submit form. Besides, we recommend native `<Button htmlType=\"submit\" />` to submit a form.\n\n</docs>\n<template>\n  <a-form ref=\"formRef\" :model=\"formState\" name=\"form_context\" v-bind=\"layout\" @finish=\"onFinish\">\n    <a-form-item\n      name=\"group\"\n      label=\"Group Name\"\n      :rules=\"[{ required: true, message: 'Please input group name!' }]\"\n    >\n      <a-input v-model:value=\"formState.group\" />\n    </a-form-item>\n\n    <a-form-item label=\"User List\">\n      <template v-if=\"formState.users.length\">\n        <ul>\n          <template v-for=\"user in formState.users\" :key=\"user.key\">\n            <li class=\"user\">\n              <a-avatar>\n                <template #icon><UserOutlined /></template>\n              </a-avatar>\n              {{ user.name }} - {{ user.age }}\n            </li>\n          </template>\n        </ul>\n      </template>\n      <template v-else>\n        <a-typography-text class=\"ant-form-text\" type=\"secondary\">\n          (\n          <SmileOutlined />\n          No user yet. )\n        </a-typography-text>\n      </template>\n    </a-form-item>\n\n    <a-form-item v-bind=\"tailLayout\">\n      <a-button html-type=\"submit\" type=\"primary\">Submit</a-button>\n      <a-button html-type=\"button\" style=\"margin: 0 8px\" @click=\"visible = true\">Add User</a-button>\n    </a-form-item>\n  </a-form>\n  <a-modal v-model:open=\"visible\" title=\"Basic Drawer\" @ok=\"onOk\">\n    <a-form ref=\"modalFormRef\" :model=\"modalFormState\" layout=\"vertical\" name=\"userForm\">\n      <a-form-item name=\"name\" label=\"User Name\" :rules=\"[{ required: true }]\">\n        <a-input v-model:value=\"modalFormState.name\" />\n      </a-form-item>\n      <a-form-item name=\"age\" label=\"User Age\" :rules=\"[{ required: true }]\">\n        <a-input-number v-model:value=\"modalFormState.age\" />\n      </a-form-item>\n    </a-form>\n  </a-modal>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref, watch, toRaw } from 'vue';\nimport type { FormInstance } from 'ant-design-vue';\nimport { SmileOutlined, UserOutlined } from '@ant-design/icons-vue';\n\ninterface UserType {\n  name?: string;\n  age?: number;\n  key?: number;\n}\n\ninterface FormState {\n  group: string;\n  users: UserType[];\n}\n\nconst formRef = ref<FormInstance>();\nconst modalFormRef = ref<FormInstance>();\nconst visible = ref(false);\nconst formState = reactive<FormState>({\n  group: '',\n  users: [],\n});\nconst modalFormState = ref<UserType>({});\n\nwatch(\n  visible,\n  () => {\n    modalFormState.value = {};\n  },\n  { flush: 'post' },\n);\n\nconst onOk = () => {\n  modalFormRef.value.validateFields().then(() => {\n    formState.users.push({ ...modalFormState.value, key: Date.now() });\n    visible.value = false;\n  });\n};\nconst onFinish = () => {\n  console.log('Finish:', toRaw(formState));\n};\nconst layout = {\n  labelCol: { span: 8 },\n  wrapperCol: { span: 16 },\n};\nconst tailLayout = {\n  wrapperCol: { offset: 8, span: 16 },\n};\n</script>\n<style scoped>\n#components-form-demo-form-context .user {\n  margin-bottom: 8px;\n}\n\n#components-form-demo-form-context .user .ant-avatar {\n  margin-right: 8px;\n}\n\n.ant-row-rtl #components-form-demo-form-context .user .ant-avatar {\n  margin-right: 0;\n  margin-left: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/form-in-modal.vue",
    "content": "<docs>\n---\norder: 14\ntitle:\n  zh-CN: 弹出层中的新建表单\n  en-US: Form in Modal to Create\n---\n\n## zh-CN\n\n当用户访问一个展示了某个列表的页面，想新建一项但又不想跳转页面时，可以用 Modal 弹出一个表单，用户填写必要信息后创建新的项。\n\n## en-US\n\nWhen user visit a page with a list of items, and want to create a new item. The page can popup a form in Modal, then let user fill in the form to create an item.\n\n</docs>\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"visible = true\">New Collection</a-button>\n    <a-modal\n      v-model:open=\"visible\"\n      title=\"Create a new collection\"\n      ok-text=\"Create\"\n      cancel-text=\"Cancel\"\n      @ok=\"onOk\"\n    >\n      <a-form ref=\"formRef\" :model=\"formState\" layout=\"vertical\" name=\"form_in_modal\">\n        <a-form-item\n          name=\"title\"\n          label=\"Title\"\n          :rules=\"[{ required: true, message: 'Please input the title of collection!' }]\"\n        >\n          <a-input v-model:value=\"formState.title\" />\n        </a-form-item>\n        <a-form-item name=\"description\" label=\"Description\">\n          <a-textarea v-model:value=\"formState.description\" />\n        </a-form-item>\n        <a-form-item name=\"modifier\" class=\"collection-create-form_last-form-item\">\n          <a-radio-group v-model:value=\"formState.modifier\">\n            <a-radio value=\"public\">Public</a-radio>\n            <a-radio value=\"private\">Private</a-radio>\n          </a-radio-group>\n        </a-form-item>\n      </a-form>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref, toRaw } from 'vue';\nimport type { FormInstance } from 'ant-design-vue';\n\ninterface Values {\n  title: string;\n  description: string;\n  modifier: string;\n}\n\nconst formRef = ref<FormInstance>();\nconst visible = ref(false);\nconst formState = reactive<Values>({\n  title: '',\n  description: '',\n  modifier: 'public',\n});\n\nconst onOk = () => {\n  formRef.value\n    .validateFields()\n    .then(values => {\n      console.log('Received values of form: ', values);\n      console.log('formState: ', toRaw(formState));\n      visible.value = false;\n      formRef.value.resetFields();\n      console.log('reset formState: ', toRaw(formState));\n    })\n    .catch(info => {\n      console.log('Validate Failed:', info);\n    });\n};\n</script>\n<style scoped>\n.collection-create-form_last-form-item {\n  margin-bottom: 0;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/horizontal-login.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 内联登录栏\n  en-US: Inline Login Form\n---\n\n## zh-CN\n\n水平登录栏，常用在顶部导航栏中。\n\n## en-US\n\nInline login form is often used in navigation bar.\n</docs>\n\n<template>\n  <a-form\n    layout=\"inline\"\n    :model=\"formState\"\n    @finish=\"handleFinish\"\n    @finishFailed=\"handleFinishFailed\"\n  >\n    <a-form-item>\n      <a-input v-model:value=\"formState.user\" placeholder=\"Username\">\n        <template #prefix><UserOutlined style=\"color: rgba(0, 0, 0, 0.25)\" /></template>\n      </a-input>\n    </a-form-item>\n    <a-form-item>\n      <a-input v-model:value=\"formState.password\" type=\"password\" placeholder=\"Password\">\n        <template #prefix><LockOutlined style=\"color: rgba(0, 0, 0, 0.25)\" /></template>\n      </a-input>\n    </a-form-item>\n    <a-form-item>\n      <a-button\n        type=\"primary\"\n        html-type=\"submit\"\n        :disabled=\"formState.user === '' || formState.password === ''\"\n      >\n        Log in\n      </a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nimport { UserOutlined, LockOutlined } from '@ant-design/icons-vue';\nimport type { UnwrapRef } from 'vue';\nimport type { FormProps } from 'ant-design-vue';\n\ninterface FormState {\n  user: string;\n  password: string;\n}\nconst formState: UnwrapRef<FormState> = reactive({\n  user: '',\n  password: '',\n});\nconst handleFinish: FormProps['onFinish'] = values => {\n  console.log(values, formState);\n};\nconst handleFinishFailed: FormProps['onFinishFailed'] = errors => {\n  console.log(errors);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <LabelWidth />\n    <HorizontalLogin />\n    <Layout />\n    <Disabled />\n    <inlineLoginVue />\n    <normalLoginVue />\n    <validationVue />\n    <CustomValidation />\n    <DynamicFormItem />\n    <NestedForm />\n    <CustomizedFormControls />\n    <advancedSearchVue />\n    <dynamicFormItemsComplexVue />\n    <dynamicFormItemsVue />\n    <dynamicRuleVue />\n    <formContextVue />\n    <formInModalVue />\n    <timeRelatedControlsVue />\n    <validateOtherVue />\n    <validateStaticVue />\n    <UseFormBasic />\n    <UseFormNested />\n    <UseFormTrigger />\n    <UseFormMerge />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport advancedSearchVue from './advanced-search.vue';\nimport Basic from './basic.vue';\nimport validationVue from './validation.vue';\nimport CustomValidation from './custom-validation.vue';\nimport Disabled from './disabled.vue';\nimport DynamicFormItem from './dynamic-form-item.vue';\nimport dynamicFormItemsComplexVue from './dynamic-form-items-complex.vue';\nimport dynamicFormItemsVue from './dynamic-form-items.vue';\nimport dynamicRuleVue from './dynamic-rule.vue';\nimport formContextVue from './form-context.vue';\nimport formInModalVue from './form-in-modal.vue';\nimport HorizontalLogin from './horizontal-login.vue';\nimport inlineLoginVue from './inline-login.vue';\nimport LabelWidth from './label-width.vue';\nimport Layout from './layout.vue';\nimport NestedForm from './nest-messages.vue';\nimport normalLoginVue from './normal-login.vue';\n// import Validation from './validation.vue';\nimport UseFormBasic from './useForm-basic.vue';\nimport UseFormNested from './useForm-nested.vue';\nimport UseFormTrigger from './useForm-trigger.vue';\nimport UseFormMerge from './useForm-merge.vue';\nimport CustomizedFormControls from './customized-form-controls.vue';\nimport timeRelatedControlsVue from './time-related-controls.vue';\nimport validateOtherVue from './validate-other.vue';\nimport validateStaticVue from './validate-static.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default defineComponent({\n  US,\n  CN,\n  components: {\n    validateStaticVue,\n    timeRelatedControlsVue,\n    validateOtherVue,\n    Basic,\n    CustomValidation,\n    Disabled,\n    DynamicFormItem,\n    HorizontalLogin,\n    NestedForm,\n    Layout,\n    validationVue,\n    UseFormBasic,\n    UseFormNested,\n    UseFormTrigger,\n    UseFormMerge,\n    LabelWidth,\n    CustomizedFormControls,\n    advancedSearchVue,\n    dynamicFormItemsComplexVue,\n    dynamicFormItemsVue,\n    dynamicRuleVue,\n    formContextVue,\n    formInModalVue,\n    inlineLoginVue,\n    normalLoginVue,\n  },\n});\n</script>\n<style>\n.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {\n  max-width: 600px;\n}\n\n.markdown.api-container table td:nth-of-type(4) {\n  white-space: nowrap;\n  word-wrap: break-word;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/inline-login.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 内联登录栏\n  en-US: Inline Login Form\n---\n\n## zh-CN\n\n内联登录栏，常用在顶部导航栏中。\n\n## en-US\n\nInline login form is often used in navigation bar.\n\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    name=\"horizontal_login\"\n    layout=\"inline\"\n    autocomplete=\"off\"\n    @finish=\"onFinish\"\n    @finishFailed=\"onFinishFailed\"\n  >\n    <a-form-item\n      label=\"Username\"\n      name=\"username\"\n      :rules=\"[{ required: true, message: 'Please input your username!' }]\"\n    >\n      <a-input v-model:value=\"formState.username\">\n        <template #prefix>\n          <UserOutlined class=\"site-form-item-icon\" />\n        </template>\n      </a-input>\n    </a-form-item>\n\n    <a-form-item\n      label=\"Password\"\n      name=\"password\"\n      :rules=\"[{ required: true, message: 'Please input your password!' }]\"\n    >\n      <a-input-password v-model:value=\"formState.password\">\n        <template #prefix>\n          <LockOutlined class=\"site-form-item-icon\" />\n        </template>\n      </a-input-password>\n    </a-form-item>\n\n    <a-form-item>\n      <a-button :disabled=\"disabled\" type=\"primary\" html-type=\"submit\">Log in</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, computed } from 'vue';\nimport { UserOutlined, LockOutlined } from '@ant-design/icons-vue';\ninterface FormState {\n  username: string;\n  password: string;\n}\nconst formState = reactive<FormState>({\n  username: '',\n  password: '',\n});\nconst onFinish = (values: any) => {\n  console.log('Success:', values);\n};\n\nconst onFinishFailed = (errorInfo: any) => {\n  console.log('Failed:', errorInfo);\n};\nconst disabled = computed(() => {\n  return !(formState.username && formState.password);\n});\n</script>\n"
  },
  {
    "path": "components/form/demo/label-width.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 固定 Label 宽度\n  en-US: Fixed lable width\n---\n\n## zh-CN\n\n通过 labelCol.style 设置固定宽度\n\n## en-US\n\nSet label width by labelCol.style\n</docs>\n<template>\n  <a-form :model=\"formState\" :label-col=\"labelCol\" :wrapper-col=\"wrapperCol\">\n    <a-form-item label=\"Activity name\">\n      <a-input v-model:value=\"formState.name\" />\n    </a-form-item>\n    <a-form-item label=\"Instant delivery\">\n      <a-switch v-model:checked=\"formState.delivery\" />\n    </a-form-item>\n    <a-form-item label=\"Activity type\">\n      <a-checkbox-group v-model:value=\"formState.type\">\n        <a-checkbox value=\"1\" name=\"type\">Online</a-checkbox>\n        <a-checkbox value=\"2\" name=\"type\">Promotion</a-checkbox>\n        <a-checkbox value=\"3\" name=\"type\">Offline</a-checkbox>\n      </a-checkbox-group>\n    </a-form-item>\n    <a-form-item label=\"Resources\">\n      <a-radio-group v-model:value=\"formState.resource\">\n        <a-radio value=\"1\">Sponsor</a-radio>\n        <a-radio value=\"2\">Venue</a-radio>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Activity form\">\n      <a-textarea v-model:value=\"formState.desc\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" @click=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\">Cancel</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, toRaw } from 'vue';\nimport type { UnwrapRef } from 'vue';\n\ninterface FormState {\n  name: string;\n  delivery: boolean;\n  type: string[];\n  resource: string;\n  desc: string;\n}\nconst formState: UnwrapRef<FormState> = reactive({\n  name: '',\n  delivery: false,\n  type: [],\n  resource: '',\n  desc: '',\n});\nconst onSubmit = () => {\n  console.log('submit!', toRaw(formState));\n};\nconst labelCol = { style: { width: '150px' } };\nconst wrapperCol = { span: 14 };\n</script>\n"
  },
  {
    "path": "components/form/demo/layout.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 表单布局\n  en-US: Form Layout\n---\n\n## zh-CN\n\n表单有三种布局。\n\n## en-US\n\nThere are three layout for form: `horizontal`, `vertical`, `inline`.\n</docs>\n\n<template>\n  <a-form :layout=\"formState.layout\" :model=\"formState\" v-bind=\"formItemLayout\">\n    <a-form-item label=\"Form Layout\">\n      <a-radio-group v-model:value=\"formState.layout\">\n        <a-radio-button value=\"horizontal\">Horizontal</a-radio-button>\n        <a-radio-button value=\"vertical\">Vertical</a-radio-button>\n        <a-radio-button value=\"inline\">Inline</a-radio-button>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Field A\">\n      <a-input v-model:value=\"formState.fieldA\" placeholder=\"input placeholder\" />\n    </a-form-item>\n    <a-form-item label=\"Field B\">\n      <a-input v-model:value=\"formState.fieldB\" placeholder=\"input placeholder\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"buttonItemLayout.wrapperCol\">\n      <a-button type=\"primary\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive } from 'vue';\nimport type { UnwrapRef } from 'vue';\n\ninterface FormState {\n  layout: 'horizontal' | 'vertical' | 'inline';\n  fieldA: string;\n  fieldB: string;\n}\nconst formState: UnwrapRef<FormState> = reactive({\n  layout: 'horizontal',\n  fieldA: '',\n  fieldB: '',\n});\nconst formItemLayout = computed(() => {\n  const { layout } = formState;\n  return layout === 'horizontal'\n    ? {\n        labelCol: { span: 4 },\n        wrapperCol: { span: 14 },\n      }\n    : {};\n});\nconst buttonItemLayout = computed(() => {\n  const { layout } = formState;\n  return layout === 'horizontal'\n    ? {\n        wrapperCol: { span: 14, offset: 4 },\n      }\n    : {};\n});\n</script>\n"
  },
  {
    "path": "components/form/demo/nest-messages.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 嵌套结构与校验信息\n  en-US: Nest\n---\n\n## zh-CN\n\n`name` 属性支持嵌套数据结构。通过 `validateMessages` 或 `message` 自定义校验信息模板，模板内容可参考[此处](https://github.com/vueComponent/ant-design-vue/blob/main/components/form/utils/messages.ts)。\n\n## en-US\n\n`name` prop support nest data structure. Customize validate message template with `validateMessages` or `message`. Ref [here](https://github.com/vueComponent/ant-design-vue/blob/main/components/form/utils/messages.ts) about message template.\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    v-bind=\"layout\"\n    name=\"nest-messages\"\n    :validate-messages=\"validateMessages\"\n    @finish=\"onFinish\"\n  >\n    <a-form-item :name=\"['user', 'name']\" label=\"Name\" :rules=\"[{ required: true }]\">\n      <a-input v-model:value=\"formState.user.name\" />\n    </a-form-item>\n    <a-form-item :name=\"['user', 'email']\" label=\"Email\" :rules=\"[{ type: 'email' }]\">\n      <a-input v-model:value=\"formState.user.email\" />\n    </a-form-item>\n    <a-form-item :name=\"['user', 'age']\" label=\"Age\" :rules=\"[{ type: 'number', min: 0, max: 99 }]\">\n      <a-input-number v-model:value=\"formState.user.age\" />\n    </a-form-item>\n    <a-form-item :name=\"['user', 'website']\" label=\"Website\">\n      <a-input v-model:value=\"formState.user.website\" />\n    </a-form-item>\n    <a-form-item :name=\"['user', 'introduction']\" label=\"Introduction\">\n      <a-textarea v-model:value=\"formState.user.introduction\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ ...layout.wrapperCol, offset: 8 }\">\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst layout = {\n  labelCol: { span: 8 },\n  wrapperCol: { span: 16 },\n};\n\nconst validateMessages = {\n  required: '${label} is required!',\n  types: {\n    email: '${label} is not a valid email!',\n    number: '${label} is not a valid number!',\n  },\n  number: {\n    range: '${label} must be between ${min} and ${max}',\n  },\n};\n\nconst formState = reactive({\n  user: {\n    name: '',\n    age: undefined,\n    email: '',\n    website: '',\n    introduction: '',\n  },\n});\nconst onFinish = (values: any) => {\n  console.log('Success:', values);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/normal-login.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 登录框\n  en-US: Login Form\n---\n\n## zh-CN\n\n普通的登录框，可以容纳更多的元素。\n\n## en-US\n\nNormal login form which can contain more elements.\n\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    name=\"normal_login\"\n    class=\"login-form\"\n    @finish=\"onFinish\"\n    @finishFailed=\"onFinishFailed\"\n  >\n    <a-form-item\n      label=\"Username\"\n      name=\"username\"\n      :rules=\"[{ required: true, message: 'Please input your username!' }]\"\n    >\n      <a-input v-model:value=\"formState.username\">\n        <template #prefix>\n          <UserOutlined class=\"site-form-item-icon\" />\n        </template>\n      </a-input>\n    </a-form-item>\n\n    <a-form-item\n      label=\"Password\"\n      name=\"password\"\n      :rules=\"[{ required: true, message: 'Please input your password!' }]\"\n    >\n      <a-input-password v-model:value=\"formState.password\">\n        <template #prefix>\n          <LockOutlined class=\"site-form-item-icon\" />\n        </template>\n      </a-input-password>\n    </a-form-item>\n\n    <a-form-item>\n      <a-form-item name=\"remember\" no-style>\n        <a-checkbox v-model:checked=\"formState.remember\">Remember me</a-checkbox>\n      </a-form-item>\n      <a class=\"login-form-forgot\" href=\"\">Forgot password</a>\n    </a-form-item>\n\n    <a-form-item>\n      <a-button :disabled=\"disabled\" type=\"primary\" html-type=\"submit\" class=\"login-form-button\">\n        Log in\n      </a-button>\n      Or\n      <a href=\"\">register now!</a>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, computed } from 'vue';\nimport { UserOutlined, LockOutlined } from '@ant-design/icons-vue';\ninterface FormState {\n  username: string;\n  password: string;\n  remember: boolean;\n}\nconst formState = reactive<FormState>({\n  username: '',\n  password: '',\n  remember: true,\n});\nconst onFinish = (values: any) => {\n  console.log('Success:', values);\n};\n\nconst onFinishFailed = (errorInfo: any) => {\n  console.log('Failed:', errorInfo);\n};\nconst disabled = computed(() => {\n  return !(formState.username && formState.password);\n});\n</script>\n<style scoped>\n#components-form-demo-normal-login .login-form {\n  max-width: 300px;\n}\n#components-form-demo-normal-login .login-form-forgot {\n  float: right;\n}\n#components-form-demo-normal-login .login-form-button {\n  width: 100%;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/price-input.vue",
    "content": "<template>\n  <span>\n    <a-input type=\"text\" :value=\"value.number\" style=\"width: 100px\" @change=\"onNumberChange\" />\n    <a-select\n      :value=\"value.currency\"\n      style=\"width: 80px; margin: 0 8px\"\n      :options=\"[\n        { value: 'rmb', label: 'RMB' },\n        { value: 'dollar', label: 'Dollar' },\n      ]\"\n      @change=\"onCurrencyChange\"\n    ></a-select>\n  </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Form } from 'ant-design-vue';\n\nexport type Currency = 'rmb' | 'dollar';\n\ninterface PriceValue {\n  number: number;\n  currency: Currency;\n}\nconst props = defineProps<{ value: PriceValue }>();\nconst emit = defineEmits(['update:value']);\n\nconst formItemContext = Form.useInjectFormItemContext();\nconst triggerChange = (changedValue: { number?: number; currency?: Currency }) => {\n  emit('update:value', { ...props.value, ...changedValue });\n  formItemContext.onFieldChange();\n};\nconst onNumberChange = (e: InputEvent) => {\n  const newNumber = parseInt((e.target as any).value || '0', 10);\n  triggerChange({ number: newNumber });\n};\nconst onCurrencyChange = (newCurrency: Currency) => {\n  triggerChange({ currency: newCurrency });\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/time-related-controls.vue",
    "content": "<docs>\n---\norder: 16\ntitle:\n  zh-CN: 时间类控件\n  en-US: Time-related Controls\n---\n\n## zh-CN\n\n时间类组件的 `value` 类型为 `dayjs` 对象，所以在提交服务器前需要预处理。\n\n或者使用 `valueFormat` 组件内部会自动处理。\n\n## en-US\n\nThe `value` of time-related components is a `dayjs` object, which we need to pre-process it before we submit to server.\n\nor use `valueFormat` to format.\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    name=\"time_related_controls\"\n    v-bind=\"formItemLayout\"\n    @finish=\"onFinish\"\n    @finishFailed=\"onFinishFailed\"\n  >\n    <a-form-item name=\"date-picker\" label=\"DatePicker\" v-bind=\"config\">\n      <a-date-picker v-model:value=\"formState['date-picker']\" value-format=\"YYYY-MM-DD\" />\n    </a-form-item>\n    <a-form-item name=\"date-time-picker\" label=\"DatePicker[showTime]\" v-bind=\"config\">\n      <a-date-picker\n        v-model:value=\"formState['date-time-picker']\"\n        show-time\n        format=\"YYYY-MM-DD HH:mm:ss\"\n        value-format=\"YYYY-MM-DD HH:mm:ss\"\n      />\n    </a-form-item>\n    <a-form-item name=\"month-picker\" label=\"MonthPicker\" v-bind=\"config\">\n      <a-date-picker\n        v-model:value=\"formState['month-picker']\"\n        value-format=\"YYYY-MM\"\n        picker=\"month\"\n      />\n    </a-form-item>\n    <a-form-item name=\"range-picker\" label=\"RangePicker\" v-bind=\"rangeConfig\">\n      <a-range-picker v-model:value=\"formState['range-picker']\" value-format=\"YYYY-MM-DD\" />\n    </a-form-item>\n    <a-form-item name=\"range-time-picker\" label=\"RangePicker[showTime]\" v-bind=\"rangeConfig\">\n      <a-range-picker\n        v-model:value=\"formState['range-time-picker']\"\n        show-time\n        format=\"YYYY-MM-DD HH:mm:ss\"\n        value-format=\"YYYY-MM-DD HH:mm:ss\"\n      />\n    </a-form-item>\n    <a-form-item name=\"time-picker\" label=\"TimePicker\" v-bind=\"config\">\n      <a-time-picker\n        v-model:value=\"formState['time-picker']\"\n        format=\"HH:mm:ss\"\n        value-format=\"HH:mm:ss\"\n      />\n    </a-form-item>\n    <a-form-item\n      :wrapper-col=\"{\n        xs: { span: 24, offset: 0 },\n        sm: { span: 16, offset: 8 },\n      }\"\n    >\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\n\ninterface FormState {\n  'date-picker': string;\n  'date-time-picker': string;\n  'month-picker': string;\n  'range-picker': [string, string];\n  'range-time-picker': [string, string];\n  'time-picker': string;\n}\nconst formItemLayout = {\n  labelCol: {\n    xs: { span: 24 },\n    sm: { span: 8 },\n  },\n  wrapperCol: {\n    xs: { span: 24 },\n    sm: { span: 16 },\n  },\n};\nconst config = {\n  rules: [{ type: 'string' as const, required: true, message: 'Please select time!' }],\n};\nconst rangeConfig = {\n  rules: [{ type: 'array' as const, required: true, message: 'Please select time!' }],\n};\nconst formState = reactive({} as FormState);\nconst onFinish = (values: any) => {\n  console.log('Success:', values, formState);\n};\n\nconst onFinishFailed = (errorInfo: any) => {\n  console.log('Failed:', errorInfo);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/useForm-basic.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: useForm 基本表单\n  en-US: useForm Basic Usage\n---\n\n## zh-CN\n\n通过 [`Form.useForm`](#useform) 更加灵活的使用表单组件。\n\n## en-US\n\nuse [`Form.useForm`](#useform) provides form validation logic and status.\n</docs>\n\n<template>\n  <a-form :label-col=\"labelCol\" :wrapper-col=\"wrapperCol\">\n    <a-form-item label=\"Activity name\" v-bind=\"validateInfos.name\">\n      <a-input v-model:value=\"modelRef.name\" />\n    </a-form-item>\n    <a-form-item label=\"Activity zone\" v-bind=\"validateInfos.region\">\n      <a-select v-model:value=\"modelRef.region\" placeholder=\"please select your zone\">\n        <a-select-option value=\"shanghai\">Zone one</a-select-option>\n        <a-select-option value=\"beijing\">Zone two</a-select-option>\n      </a-select>\n    </a-form-item>\n    <a-form-item label=\"Activity type\" v-bind=\"validateInfos.type\">\n      <a-checkbox-group v-model:value=\"modelRef.type\">\n        <a-checkbox value=\"1\" name=\"type\">Online</a-checkbox>\n        <a-checkbox value=\"2\" name=\"type\">Promotion</a-checkbox>\n        <a-checkbox value=\"3\" name=\"type\">Offline</a-checkbox>\n      </a-checkbox-group>\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" @click.prevent=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetFields\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, toRaw } from 'vue';\nimport { Form } from 'ant-design-vue';\n\nconst useForm = Form.useForm;\n\nconst labelCol = { span: 4 };\nconst wrapperCol = { span: 14 };\nconst modelRef = reactive({\n  name: '',\n  region: undefined,\n  type: [],\n});\nconst rulesRef = reactive({\n  name: [\n    {\n      required: true,\n      message: 'Please input name',\n    },\n  ],\n  region: [\n    {\n      required: true,\n      message: 'Please select region',\n    },\n  ],\n  type: [\n    {\n      required: true,\n      message: 'Please select type',\n      type: 'array',\n    },\n  ],\n});\nconst { resetFields, validate, validateInfos } = useForm(modelRef, rulesRef, {\n  onValidate: (...args) => console.log(...args),\n});\nconst onSubmit = () => {\n  validate()\n    .then(() => {\n      console.log(toRaw(modelRef));\n    })\n    .catch(err => {\n      console.log('error', err);\n    });\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/useForm-merge.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: useForm 合并错误信息\n  en-US: useForm merge status info\n---\n\n## zh-CN\n\n通过 [`Form.useForm`](#useform)  合并展示表单校验信息。\n\n## en-US\n\nuse [`Form.useForm`](#useform)  combined display form verification information.\n</docs>\n\n<template>\n  <a-form :label-col=\"labelCol\" :wrapper-col=\"wrapperCol\">\n    <a-form-item label=\"Activity name\" required>\n      <a-input v-model:value=\"modelRef.name\" />\n    </a-form-item>\n    <a-form-item label=\"Activity zone\" required>\n      <a-select v-model:value=\"modelRef.region\" placeholder=\"please select your zone\">\n        <a-select-option value=\"shanghai\">Zone one</a-select-option>\n        <a-select-option value=\"beijing\">Zone two</a-select-option>\n      </a-select>\n    </a-form-item>\n    <a-form-item label=\"Activity type\" required>\n      <a-checkbox-group v-model:value=\"modelRef.type\">\n        <a-checkbox value=\"1\" name=\"type\">Online</a-checkbox>\n        <a-checkbox value=\"2\" name=\"type\">Promotion</a-checkbox>\n        <a-checkbox value=\"3\" name=\"type\">Offline</a-checkbox>\n      </a-checkbox-group>\n    </a-form-item>\n    <a-form-item class=\"error-infos\" :wrapper-col=\"{ span: 14, offset: 4 }\" v-bind=\"errorInfos\">\n      <a-button type=\"primary\" @click.prevent=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetFields\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, toRaw, computed } from 'vue';\nimport { toArray } from 'lodash-es';\nimport { Form } from 'ant-design-vue';\n\nconst useForm = Form.useForm;\n\nconst labelCol = { span: 4 };\nconst wrapperCol = { span: 14 };\nconst modelRef = reactive({\n  name: '',\n  region: undefined,\n  type: [],\n});\nconst rulesRef = reactive({\n  name: [\n    {\n      required: true,\n      message: 'Please input name',\n    },\n  ],\n  region: [\n    {\n      required: true,\n      message: 'Please select region',\n    },\n  ],\n  type: [\n    {\n      required: true,\n      message: 'Please select type',\n      type: 'array',\n    },\n  ],\n});\nconst { resetFields, validate, validateInfos, mergeValidateInfo } = useForm(modelRef, rulesRef);\nconst onSubmit = () => {\n  validate()\n    .then(() => {\n      console.log(toRaw(modelRef));\n    })\n    .catch(err => {\n      console.log('error', err);\n    });\n};\nconst errorInfos = computed(() => {\n  return mergeValidateInfo(toArray(validateInfos));\n});\n</script>\n<style scoped>\n.error-infos :deep(.ant-form-explain) {\n  white-space: pre-line;\n}\n</style>\n"
  },
  {
    "path": "components/form/demo/useForm-nested.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: useForm 嵌套表单\n  en-US: useForm for nested Form\n---\n\n## zh-CN\n\n通过 [`Form.useForm`](#useform)  使用点字符串拼接进行嵌套数据校验。\n\n## en-US\n\n[`Form.useForm`](#useform) use dot string splicing for nested data verification.\n</docs>\n\n<template>\n  <a-form :label-col=\"labelCol\" :wrapper-col=\"wrapperCol\">\n    <a-form-item label=\"Activity name\" v-bind=\"validateInfos.name\">\n      <a-input v-model:value=\"modelRef.name\" />\n    </a-form-item>\n    <a-form-item label=\"Sub name\" v-bind=\"validateInfos['sub.name']\">\n      <a-input v-model:value=\"modelRef.sub.name\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" @click.prevent=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"reset\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, toRaw } from 'vue';\nimport { Form } from 'ant-design-vue';\n\nconst useForm = Form.useForm;\n\nconst labelCol = { span: 4 };\nconst wrapperCol = { span: 14 };\n\nconst modelRef = reactive({\n  name: '',\n  sub: {\n    name: '',\n  },\n});\nconst { resetFields, validate, validateInfos } = useForm(\n  modelRef,\n  reactive({\n    name: [\n      {\n        required: true,\n        message: 'Please input name',\n      },\n    ],\n    'sub.name': [\n      {\n        required: true,\n        message: 'Please input sub name',\n      },\n    ],\n  }),\n);\nconst onSubmit = () => {\n  validate()\n    .then(res => {\n      console.log(res, toRaw(modelRef));\n    })\n    .catch(err => {\n      console.log('error', err);\n    });\n};\nconst reset = () => {\n  resetFields();\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/useForm-trigger.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: useForm 自定义触发时机\n  en-US: useForm custom trigger\n---\n\n## zh-CN\n\n通过 [`Form.useForm`](#useform) 自定义触发校验时机\n\n## en-US\n\nuse [`Form.useForm`](#useform) custom trigger to validation logic and status.\n</docs>\n\n<template>\n  <a-form :label-col=\"labelCol\" :wrapper-col=\"wrapperCol\">\n    <a-form-item label=\"Activity name\" v-bind=\"validateInfos.name\">\n      <a-input\n        v-model:value=\"modelRef.name\"\n        @blur=\"validate('name', { trigger: 'blur' }).catch(() => {})\"\n      />\n    </a-form-item>\n    <a-form-item label=\"Activity zone\" v-bind=\"validateInfos.region\">\n      <a-select v-model:value=\"modelRef.region\" placeholder=\"please select your zone\">\n        <a-select-option value=\"shanghai\">Zone one</a-select-option>\n        <a-select-option value=\"beijing\">Zone two</a-select-option>\n      </a-select>\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" @click.prevent=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetFields\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, toRaw } from 'vue';\nimport { Form } from 'ant-design-vue';\n\nconst useForm = Form.useForm;\n\nconst labelCol = { span: 4 };\nconst wrapperCol = { span: 14 };\nconst modelRef = reactive({\n  name: '',\n  region: undefined,\n});\nconst rulesRef = reactive({\n  name: [\n    {\n      required: true,\n      message: 'Please input Activity name',\n    },\n    {\n      min: 3,\n      max: 5,\n      message: 'Length should be 3 to 5',\n      trigger: 'blur',\n    },\n  ],\n  region: [\n    {\n      required: true,\n      message: 'Please select region',\n    },\n  ],\n});\nconst { resetFields, validate, validateInfos } = useForm(modelRef, rulesRef);\nconst onSubmit = () => {\n  validate()\n    .then(() => {\n      console.log(toRaw(modelRef));\n    })\n    .catch(err => {\n      console.log('error', err);\n    });\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/validate-other.vue",
    "content": "<docs>\n---\norder: 24\ntitle:\n  zh-CN: 校验其他组件\n  en-US: Other Form Controls\n---\n\n## zh-CN\n\n以上演示没有出现的表单控件对应的校验演示。\n\n## en-US\n\nDemonstration of validation configuration for form controls which are not shown in the demos above.\n</docs>\n<template>\n  <a-form\n    :model=\"formState\"\n    name=\"validate_other\"\n    v-bind=\"formItemLayout\"\n    @finishFailed=\"onFinishFailed\"\n    @finish=\"onFinish\"\n  >\n    <a-form-item label=\"Plain Text\">\n      <span class=\"ant-form-text\">China</span>\n    </a-form-item>\n    <a-form-item\n      name=\"select\"\n      label=\"Select\"\n      has-feedback\n      :rules=\"[{ required: true, message: 'Please select your country!' }]\"\n    >\n      <a-select v-model:value=\"formState.select\" placeholder=\"Please select a country\">\n        <a-select-option value=\"china\">China</a-select-option>\n        <a-select-option value=\"usa\">U.S.A</a-select-option>\n      </a-select>\n    </a-form-item>\n\n    <a-form-item\n      name=\"select-multiple\"\n      label=\"Select[multiple]\"\n      :rules=\"[{ required: true, message: 'Please select your favourite colors!', type: 'array' }]\"\n    >\n      <a-select\n        v-model:value=\"formState['select-multiple']\"\n        mode=\"multiple\"\n        placeholder=\"Please select favourite colors\"\n      >\n        <a-select-option value=\"red\">Red</a-select-option>\n        <a-select-option value=\"green\">Green</a-select-option>\n        <a-select-option value=\"blue\">Blue</a-select-option>\n      </a-select>\n    </a-form-item>\n\n    <a-form-item label=\"InputNumber\">\n      <a-form-item name=\"input-number\" no-style>\n        <a-input-number v-model:value=\"formState['input-number']\" :min=\"1\" :max=\"10\" />\n      </a-form-item>\n      <span class=\"ant-form-text\">machines</span>\n    </a-form-item>\n\n    <a-form-item name=\"switch\" label=\"Switch\">\n      <a-switch v-model:checked=\"formState.switch\" />\n    </a-form-item>\n\n    <a-form-item name=\"slider\" label=\"Slider\">\n      <a-slider\n        v-model:value=\"formState.slider\"\n        :marks=\"{\n          0: 'A',\n          20: 'B',\n          40: 'C',\n          60: 'D',\n          80: 'E',\n          100: 'F',\n        }\"\n      />\n    </a-form-item>\n\n    <a-form-item name=\"radio-group\" label=\"Radio.Group\">\n      <a-radio-group v-model:value=\"formState['radio-group']\">\n        <a-radio value=\"a\">item 1</a-radio>\n        <a-radio value=\"b\">item 2</a-radio>\n        <a-radio value=\"c\">item 3</a-radio>\n      </a-radio-group>\n    </a-form-item>\n\n    <a-form-item\n      name=\"radio-button\"\n      label=\"Radio.Button\"\n      :rules=\"[{ required: true, message: 'Please pick an item!' }]\"\n    >\n      <a-radio-group v-model:value=\"formState['radio-button']\">\n        <a-radio-button value=\"a\">item 1</a-radio-button>\n        <a-radio-button value=\"b\">item 2</a-radio-button>\n        <a-radio-button value=\"c\">item 3</a-radio-button>\n      </a-radio-group>\n    </a-form-item>\n\n    <a-form-item name=\"checkbox-group\" label=\"Checkbox.Group\">\n      <a-checkbox-group v-model:value=\"formState['checkbox-group']\">\n        <a-row>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"A\" style=\"line-height: 32px\">A</a-checkbox>\n          </a-col>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"B\" style=\"line-height: 32px\" disabled>B</a-checkbox>\n          </a-col>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"C\" style=\"line-height: 32px\">C</a-checkbox>\n          </a-col>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"D\" style=\"line-height: 32px\">D</a-checkbox>\n          </a-col>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"E\" style=\"line-height: 32px\">E</a-checkbox>\n          </a-col>\n          <a-col :span=\"8\">\n            <a-checkbox value=\"F\" style=\"line-height: 32px\">F</a-checkbox>\n          </a-col>\n        </a-row>\n      </a-checkbox-group>\n    </a-form-item>\n\n    <a-form-item name=\"rate\" label=\"Rate\">\n      <a-rate v-model:value=\"formState.rate\" allow-half />\n    </a-form-item>\n\n    <a-form-item name=\"upload\" label=\"Upload\" extra=\"longgggggggggggggggggggggggggggggggggg\">\n      <a-upload\n        v-model:fileList=\"formState.upload\"\n        name=\"logo\"\n        action=\"/upload.do\"\n        list-type=\"picture\"\n      >\n        <a-button>\n          <template #icon><UploadOutlined /></template>\n          Click to upload\n        </a-button>\n      </a-upload>\n    </a-form-item>\n\n    <a-form-item label=\"Dragger\">\n      <a-form-item name=\"dragger\" no-style>\n        <a-upload-dragger v-model:fileList=\"formState.dragger\" name=\"files\" action=\"/upload.do\">\n          <p class=\"ant-upload-drag-icon\">\n            <InboxOutlined />\n          </p>\n          <p class=\"ant-upload-text\">Click or drag file to this area to upload</p>\n          <p class=\"ant-upload-hint\">Support for a single or bulk upload.</p>\n        </a-upload-dragger>\n      </a-form-item>\n    </a-form-item>\n\n    <a-form-item :wrapper-col=\"{ span: 12, offset: 6 }\">\n      <a-button type=\"primary\" html-type=\"submit\">Submit</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nimport { UploadOutlined, InboxOutlined } from '@ant-design/icons-vue';\n\nconst formItemLayout = {\n  labelCol: { span: 6 },\n  wrapperCol: { span: 14 },\n};\n\nconst formState = reactive<Record<string, any>>({\n  'input-number': 3,\n  'checkbox-group': ['A', 'B'],\n  rate: 3.5,\n});\nconst onFinish = (values: any) => {\n  console.log('Success:', values);\n};\n\nconst onFinishFailed = (errorInfo: any) => {\n  console.log('Failed:', errorInfo);\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/validate-static.vue",
    "content": "<docs>\n---\norder: 20\ntitle:\n  zh-CN: 自定义校验\n  en-US: Customized Validation\n---\n\n## zh-CN\n\n我们提供了 `validateStatus` `help` `hasFeedback` 等属性，你可以不通过 Form 自己定义校验的时机和内容。\n\n1. `validateStatus`: 校验状态，可选 'success', 'warning', 'error', 'validating'。\n2. `hasFeedback`：用于给输入框添加反馈图标。\n3. `help`：设置校验文案。\n\n## en-US\n\nWe provide properties like `validateStatus` `help` `hasFeedback` to customize your own validate status and message, without using Form.\n\n1. `validateStatus`: validate status of form components which could be 'success', 'warning', 'error', 'validating'.\n2. `hasFeedback`: display feed icon of input control\n3. `help`: display validate message.\n</docs>\n<template>\n  <a-form v-bind=\"formItemLayout\">\n    <a-form-item\n      label=\"Fail\"\n      validate-status=\"error\"\n      help=\"Should be combination of numbers & alphabets\"\n    >\n      <a-input id=\"error\" placeholder=\"unavailable choice\" />\n    </a-form-item>\n\n    <a-form-item label=\"Warning\" validate-status=\"warning\">\n      <a-input id=\"warning\" placeholder=\"Warning\">\n        <template #prefix><smile-outlined /></template>\n      </a-input>\n    </a-form-item>\n\n    <a-form-item\n      label=\"Validating\"\n      has-feedback\n      validate-status=\"validating\"\n      help=\"The information is being validated...\"\n    >\n      <a-input id=\"validating\" placeholder=\"I'm the content is being validated\" />\n    </a-form-item>\n\n    <a-form-item label=\"Success\" has-feedback validate-status=\"success\">\n      <a-input id=\"success\" placeholder=\"I'm the content\" />\n    </a-form-item>\n\n    <a-form-item label=\"Warning\" has-feedback validate-status=\"warning\">\n      <a-input id=\"warning2\" placeholder=\"Warning\" />\n    </a-form-item>\n\n    <a-form-item\n      label=\"Fail\"\n      has-feedback\n      validate-status=\"error\"\n      help=\"Should be combination of numbers & alphabets\"\n    >\n      <a-input id=\"error2\" placeholder=\"unavailable choice\" />\n    </a-form-item>\n\n    <a-form-item label=\"Success\" has-feedback validate-status=\"success\">\n      <a-date-picker style=\"width: 100%\" />\n    </a-form-item>\n\n    <a-form-item label=\"Warning\" has-feedback validate-status=\"warning\">\n      <a-time-picker style=\"width: 100%\" />\n    </a-form-item>\n\n    <a-form-item label=\"Error\" has-feedback validate-status=\"error\">\n      <a-range-picker style=\"width: 100%\" />\n    </a-form-item>\n\n    <a-form-item label=\"Error\" has-feedback validate-status=\"error\">\n      <a-select placeholder=\"I'm Select\" allow-clear>\n        <a-select-option value=\"1\">Option 1</a-select-option>\n        <a-select-option value=\"2\">Option 2</a-select-option>\n        <a-select-option value=\"3\">Option 3</a-select-option>\n      </a-select>\n    </a-form-item>\n\n    <a-form-item\n      label=\"Validating\"\n      has-feedback\n      validate-status=\"error\"\n      help=\"Something breaks the rule.\"\n    >\n      <a-cascader\n        placeholder=\"I'm Cascader\"\n        :options=\"[{ value: 'xx', label: 'xx' }]\"\n        allow-clear\n      />\n    </a-form-item>\n\n    <a-form-item label=\"Warning\" has-feedback validate-status=\"warning\" help=\"Need to be checked\">\n      <a-tree-select\n        placeholder=\"I'm TreeSelect\"\n        :tree-data=\"[{ value: 'xx', label: 'xx' }]\"\n        allow-clear\n      />\n    </a-form-item>\n\n    <a-form-item label=\"inline\" style=\"margin-bottom: 0px\">\n      <a-form-item\n        validate-status=\"error\"\n        help=\"Please select right date\"\n        style=\"display: inline-block; width: calc(50% - 12px)\"\n      >\n        <a-date-picker />\n      </a-form-item>\n      <span style=\"display: inline-block, width: 24px; line-height:32px; text-align: center\">\n        -\n      </span>\n      <a-form-item style=\"display: inline-block; width: calc(50% - 12px)\">\n        <a-date-picker />\n      </a-form-item>\n    </a-form-item>\n\n    <a-form-item label=\"Success\" has-feedback validate-status=\"success\">\n      <a-inputNumber style=\"width: 100%\" />\n    </a-form-item>\n\n    <a-form-item label=\"Success\" has-feedback validate-status=\"success\">\n      <a-input allow-clear placeholder=\"with allowClear\" />\n    </a-form-item>\n\n    <a-form-item label=\"Warning\" has-feedback validate-status=\"warning\">\n      <a-input-password placeholder=\"with input password\" />\n    </a-form-item>\n\n    <a-form-item label=\"Error\" has-feedback validate-status=\"error\">\n      <a-input-password allow-clear placeholder=\"with input password and allowClear\" />\n    </a-form-item>\n\n    <a-form-item label=\"Fail\" validate-status=\"error\" has-feedback>\n      <a-mentions />\n    </a-form-item>\n\n    <a-form-item label=\"Fail\" validate-status=\"error\" has-feedback help=\"Should have something\">\n      <a-textarea allow-clear show-count />\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\n\nconst formItemLayout = {\n  labelCol: {\n    xs: { span: 24 },\n    sm: { span: 6 },\n  },\n  wrapperCol: {\n    xs: { span: 24 },\n    sm: { span: 14 },\n  },\n};\n</script>\n"
  },
  {
    "path": "components/form/demo/validation.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 表单验证\n  en-US: Validation\n---\n\n## zh-CN\n\nForm 组件提供了表单验证的功能，只需要通过 `rules` 属性传入约定的验证规则，并将 `FormItem` 的 `name` 属性设置为需校验的字段名即可。校验规则参见 [async-validator](https://github.com/yiminghe/async-validator)\n\n## en-US\n\nJust add the `rules` attribute for `Form` component, pass validation rules, and set `name` attribute for `FormItem` as a specific key that needs to be validated. See more information at [async-validator](https://github.com/yiminghe/async-validator).\n</docs>\n\n<template>\n  <a-form\n    ref=\"formRef\"\n    :model=\"formState\"\n    :rules=\"rules\"\n    :label-col=\"labelCol\"\n    :wrapper-col=\"wrapperCol\"\n  >\n    <a-form-item ref=\"name\" label=\"Activity name\" name=\"name\">\n      <a-input v-model:value=\"formState.name\" />\n    </a-form-item>\n    <a-form-item label=\"Activity zone\" name=\"region\">\n      <a-select v-model:value=\"formState.region\" placeholder=\"please select your zone\">\n        <a-select-option value=\"shanghai\">Zone one</a-select-option>\n        <a-select-option value=\"beijing\">Zone two</a-select-option>\n      </a-select>\n    </a-form-item>\n    <a-form-item label=\"Activity time\" required name=\"date1\">\n      <a-date-picker\n        v-model:value=\"formState.date1\"\n        show-time\n        type=\"date\"\n        placeholder=\"Pick a date\"\n        style=\"width: 100%\"\n      />\n    </a-form-item>\n    <a-form-item label=\"Instant delivery\" name=\"delivery\">\n      <a-switch v-model:checked=\"formState.delivery\" />\n    </a-form-item>\n    <a-form-item label=\"Activity type\" name=\"type\">\n      <a-checkbox-group v-model:value=\"formState.type\">\n        <a-checkbox value=\"1\" name=\"type\">Online</a-checkbox>\n        <a-checkbox value=\"2\" name=\"type\">Promotion</a-checkbox>\n        <a-checkbox value=\"3\" name=\"type\">Offline</a-checkbox>\n      </a-checkbox-group>\n    </a-form-item>\n    <a-form-item label=\"Resources\" name=\"resource\">\n      <a-radio-group v-model:value=\"formState.resource\">\n        <a-radio value=\"1\">Sponsor</a-radio>\n        <a-radio value=\"2\">Venue</a-radio>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Activity form\" name=\"desc\">\n      <a-textarea v-model:value=\"formState.desc\" />\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n      <a-button type=\"primary\" @click=\"onSubmit\">Create</a-button>\n      <a-button style=\"margin-left: 10px\" @click=\"resetForm\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { Dayjs } from 'dayjs';\nimport { reactive, ref, toRaw } from 'vue';\nimport type { UnwrapRef } from 'vue';\nimport type { Rule } from 'ant-design-vue/es/form';\n\ninterface FormState {\n  name: string;\n  region: string | undefined;\n  date1: Dayjs | undefined;\n  delivery: boolean;\n  type: string[];\n  resource: string;\n  desc: string;\n}\nconst formRef = ref();\nconst labelCol = { span: 5 };\nconst wrapperCol = { span: 13 };\nconst formState: UnwrapRef<FormState> = reactive({\n  name: '',\n  region: undefined,\n  date1: undefined,\n  delivery: false,\n  type: [],\n  resource: '',\n  desc: '',\n});\nconst rules: Record<string, Rule[]> = {\n  name: [\n    { required: true, message: 'Please input Activity name', trigger: 'change' },\n    { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },\n  ],\n  region: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],\n  date1: [{ required: true, message: 'Please pick a date', trigger: 'change', type: 'object' }],\n  type: [\n    {\n      type: 'array',\n      required: true,\n      message: 'Please select at least one activity type',\n      trigger: 'change',\n    },\n  ],\n  resource: [{ required: true, message: 'Please select activity resource', trigger: 'change' }],\n  desc: [{ required: true, message: 'Please input activity form', trigger: 'blur' }],\n};\nconst onSubmit = () => {\n  formRef.value\n    .validate()\n    .then(() => {\n      console.log('values', formState, toRaw(formState));\n    })\n    .catch(error => {\n      console.log('error', error);\n    });\n};\nconst resetForm = () => {\n  formRef.value.resetFields();\n};\n</script>\n"
  },
  {
    "path": "components/form/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ncols: 1\ntitle: Form\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-lcdS5Qm1bsAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ylFATY6w-ygAAAAAAAAAAAAADrJ8AQ/original\n---\n\nHigh performance Form component with data scope management. Including data collection, verification, and styles.\n\n## When to use\n\n- When you need to create an instance or collect information.\n- When you need to validate fields in certain rules.\n\n## Form Component\n\nYou can align the controls of a `form` using the `layout` prop：\n\n- `horizontal`：to horizontally align the `label`s and controls of the fields. (Default)\n- `vertical`：to vertically align the `label`s and controls of the fields.\n- `inline`：to render form fields in one line.\n\n## Form Item Component\n\nA form consists of one or more form fields whose type includes input, textarea, checkbox, radio, select, tag, and more. A form field is defined using `<a-form-item />`.\n\n## API\n\n### Form\n\n| Property | Description | Type | Default Value | Version |\n| --- | --- | --- | --- | --- |\n| colon | change default props colon value of Form.Item (only effective when prop layout is horizontal) | boolean | true |  |\n| disabled | Set form component disable, only available for antdv components | boolean | false | 4.0 |\n| hideRequiredMark | Hide required mark of all form items | Boolean | false |  |\n| labelAlign | text align of label of all items | 'left' \\| 'right' | 'right' |  |\n| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with `<Col>` | [object](/components/grid/#col) |  |  |\n| labelWrap | whether label can be wrap | boolean | false | 3.0 |\n| layout | Define form layout | 'horizontal'\\|'vertical'\\|'inline' | 'horizontal' |  |\n| model | data of form component | object |  |  |\n| name | Form name. Will be the prefix of Field `id` | string | - | 2.0.0 |\n| noStyle | No style for `true`, used as a pure field control | boolean | false | 3.0 |\n| rules | validation rules of form | object |  |  |\n| scrollToFirstError | Auto scroll to first failed field when submit | boolean \\| [options](https://github.com/stipsan/scroll-into-view-if-needed/#options) | false | 2.0.0 |\n| validateOnRuleChange | whether to trigger validation when the `rules` prop is changed | boolean | true |  |\n| validateTrigger | Config field validate trigger | string \\| string\\[] | `change` | 2.0.0 |\n| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#col) |  |  |\n\n### Events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| finish | Trigger after submitting the form and verifying data successfully | function(values) | - | 2.0.0 |\n| finishFailed | Trigger after submitting the form and verifying data failed | function({ values, errorFields, outOfDate }) | - | 2.0.0 |\n| submit | Defines a function will be called if form data validation is successful. | Function(e:Event) |  |  |\n| validate | triggers after a form item is validated | Function(name, status, errorMsgs) |  |  |\n\n### Methods\n\n| Method | Description | Parameters | Version |\n| --- | --- | --- | --- |\n| clearValidate | clear validation message for certain fields. The parameter is name or an array of names of the form items whose validation messages will be removed. When omitted, all fields' validation messages will be cleared | (nameList?: [NamePath](#namepath)\\[]) => void |  |\n| resetFields | reset all the fields and remove validation result | (nameList?: [NamePath](#namepath)\\[]) => void |  |\n| scrollToField | Scroll to field position | (name: [NamePath](#namepath), options: \\[[ScrollOptions](https://github.com/stipsan/scroll-into-view-if-needed/tree/ece40bd9143f48caf4b99503425ecb16b0ad8249#options)]) => void |  |\n| validate | Validate fields, it is same as validateFields | (nameList?: [NamePath](#namepath)\\[]) => Promise |  |\n| validateFields | Validate fields | (nameList?: [NamePath](#namepath)\\[]) => Promise |  |\n\n#### NamePath\n\n`string | number | (string | number)[]`\n\n### Form.Item\n\n| Property | Description | Type | Default Value | Version |\n| --- | --- | --- | --- | --- |\n| autoLink | Whether to automatically associate form fields. In most cases, you can use automatic association. If the conditions for automatic association are not met, you can manually associate them. See the notes below. | boolean | true |  |\n| colon | Used with `label`, whether to display `:` after label text. | boolean | true |  |\n| extra | The extra prompt message. It is similar to help. Usage example: to display error message and prompt message at the same time. | string\\|slot |  |  |\n| hasFeedback | Used with `validateStatus`, this option specifies the validation status icon. Recommended to be used only with `Input`. | boolean | false |  |\n| help | The prompt message. If not provided, the prompt message will be generated by the validation rule. | string\\|slot |  |  |\n| htmlFor | Set sub label `htmlFor`. | string |  |  |\n| label | Label text | string\\|slot |  |  |\n| labelAlign | text align of label | 'left' \\| 'right' | 'right' |  |\n| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with `<Col>` | [object](/components/grid/#col) |  |  |\n| name | a key of `model`. In the use of validate and resetFields method, the attribute is required | [NamePath](#namepath) |  | 2.0.0 |\n| required | Whether provided or not, it will be generated by the validation rule. | boolean | false |  |\n| rules | validation rules of form | object \\| array |  |  |\n| tooltip | Config tooltip info | string \\| slot |  | 4.0.4 |\n| validateFirst | Whether stop validate on first rule of error for this field. | boolean | false |  |\n| validateStatus | The validation status. If not provided, it will be generated by validation rule. options: 'success' 'warning' 'error' 'validating' | string |  |  |\n| validateTrigger | When to validate the value of children node | string \\| string\\[] | `change` |  |\n| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#col) |  |  |\n\n### Note\n\n#### 3.x\n\nSince version 3.0, Form.Item no longer hijacks child elements, but automatically checks through provider/inject dependency injection. This method can improve component performance, and there is no limit to the number of child elements. The same is true for child elements. It can be a high-level component that is further encapsulated.\n\nYou can reference [Customized Form Controls](#components-form-demo-customized-form-controls)\n\nBut it also has some disadvantages:\n\n1. If the custom component wants Form.Item to be verified and displayed, you need to inject `const {id, onFieldChange, onFieldBlur} = useInjectFormItemContext()` and call the corresponding method.\n\n2. A Form.Item can only collect the data of one form item. If there are multiple form items, it will cause collection confusion, for example,\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-input name=\"b\"></a-input>\n</a-form-item>\n```\n\nAs above Form.Item does not know whether to collect `name=\"a\"` or `name=\"b\"`, you can solve this kind of problem in the following two ways:\n\nThe first is to use multiple `a-form-item`:\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-form-item><a-input name=\"b\"></a-input></a-form-item>\n</a-form-item>\n```\n\nThe second way is to wrap it with a custom component and call `useInjectFormItemContext` in the custom component, It is equivalent to merging multiple form items into one.\n\n```html\n<script>\n  // custom component\n  import { Form } from 'ant-design-vue';\n  export default {\n    name: 'custom-name',\n    setup() {\n      const formItemContext = Form.useInjectFormItemContext();\n    },\n  };\n</script>\n```\n\n```html\n<a-form-item>\n  <custom-com>\n    <a-input name=\"a\"></a-input>\n    <a-input name=\"b\"></a-input>\n  </custom-com>\n</a-form-item>\n```\n\nThird, the component library provides an `a-form-item-rest` component, which will prevent data collection. You can put form items that do not need to be collected and verified into this component. It is the same as the first This method is very similar, but it does not generate additional dom nodes.\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-form-item-rest><a-input name=\"b\"></a-input></a-form-item-rest>\n</a-form-item>\n```\n\n#### 2.x\n\nForm.Item hijacks the only child element and listens to the `blur` and `change` events to achieve the purpose of automatic verification, so please make sure that the form field is not wrapped by other elements. If there are multiple child elements, only the change of the first child element will be monitored.\n\nIf the form field to be monitored does not meet the conditions of automatic monitoring, you can associate the form field as follows:\n\n```html\n<a-form-item name=\"form.name\" ref=\"name\" :autoLink=\"false\">\n  <a-input v-model:value=\"other\" />\n  <span>hahha</span>\n  <div>\n    <a-input\n      v-model:value=\"form.name\"\n      @blur=\"() => {$refs.name.onFieldBlur()}\"\n      @change=\"() => {$refs.name.onFieldChange()}\"\n    />\n  </div>\n</a-form-item>\n```\n\n### Validation Rules\n\n| Property | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| enum | validate a value from a list of possible values | string | - |\n| len | validate an exact length of a field | number | - |\n| max | validate a max length of a field | number | - |\n| message | validation error message | string | - |\n| min | validate a min length of a field | number | - |\n| pattern | validate from a regular expression | RegExp | - |\n| required | indicates whether field is required | boolean | `false` |\n| transform | transform a value before validation | function(value) => transformedValue:any | - |\n| trigger | When to validate the value of children node. | 'blur' \\| 'change' \\| `['change', 'blur']` | - |\n| type | built-in validation type, [available options](https://github.com/yiminghe/async-validator#type) | string | 'string' |\n| validator | custom validate function (Note: [callback must be called](https://github.com/ant-design/ant-design/issues/5155)) | function(rule, value, callback) | - |\n| whitespace | treat required fields that only contain whitespace as errors | boolean | `false` |\n\nSee more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).\n\n### useForm (v2.2)\n\n`useForm` is a method that can run independently of the Form component. It uses the Vue response mechanism to monitor and verify data, and returns the verification result. You can bind the verification result to any component, `Form. Item` only displays the results.\n\nThe following versions need to be provided separately by `@ant-design-vue/use` library, it is not recommended to continue to use, you should upgrade to version 2.2+ as soon as possible\n\n```ts\nimport { Form } from 'ant-design-vue';\nconst useForm = Form.useForm;\n\nuseForm(modelRef, ruleRef, [options]);\n```\n\nParameter Description:\n\n```ts\n/*\n `modelRef`, `ruleRef` must be responsive data\n*/\n\ninterface Props {\n  [key: string]: any;\n}\nfunction useForm(\n  modelRef: Props | Ref<Props>,\n  rulesRef?: Props | Ref<Props>,\n  options?: {\n    immediate?: boolean;\n    deep?: boolean;\n    validateOnRuleChange?: boolean;\n    debounce?: DebounceSettings;\n  },\n): {\n  modelRef: Props | Ref<Props>;\n  rulesRef: Props | Ref<Props>;\n  initialModel: Props;\n  validateInfos: validateInfos;\n  resetFields: (newValues?: Props) => void;\n  validate: <T = any>(names?: namesType, option?: validateOptions) => Promise<T>;\n  validateField: (\n    name?: string,\n    value?: any,\n    rules?: [Record<string, unknown>],\n    option?: validateOptions,\n  ) => Promise<RuleError[]>;\n  mergeValidateInfo: (items: ValidateInfo | ValidateInfo[]) => ValidateInfo;\n  clearValidate: (names?: namesType) => void;\n  onValidate?: (\n    name: string | number | string[] | number[],\n    status: boolean,\n    errorMsgs: string[] | null,\n  ) => void;\n};\n```\n"
  },
  {
    "path": "components/form/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport Form, { formProps } from './Form';\nimport FormItem, { formItemProps } from './FormItem';\nimport useForm from './useForm';\nimport FormItemRest, { useInjectFormItemContext } from './FormItemContext';\nexport type { Rule, RuleObject } from './interface';\n\nexport type { FormProps, FormInstance } from './Form';\nexport type { FormItemProps, FormItemInstance } from './FormItem';\n\nForm.useInjectFormItemContext = useInjectFormItemContext;\nForm.ItemRest = FormItemRest;\n/* istanbul ignore next */\nForm.install = function (app: App) {\n  app.component(Form.name, Form);\n  app.component(Form.Item.name, Form.Item);\n  app.component(FormItemRest.name, FormItemRest);\n  return app;\n};\n\nexport { FormItem, formItemProps, formProps, FormItemRest, useForm, useInjectFormItemContext };\n\nexport default Form as typeof Form &\n  Plugin & {\n    readonly Item: typeof Form.Item;\n    readonly ItemRest: typeof FormItemRest;\n    readonly useForm: typeof useForm;\n    readonly useInjectFormItemContext: typeof useInjectFormItemContext;\n  };\n"
  },
  {
    "path": "components/form/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 表单\ntype: 数据录入\ncols: 1\ntitle: Form\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-lcdS5Qm1bsAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ylFATY6w-ygAAAAAAAAAAAAADrJ8AQ/original\n---\n\n高性能表单控件，自带数据域管理。包含数据录入、校验以及对应样式。\n\n## 何时使用\n\n- 用于创建一个实体或收集信息。\n- 需要对输入的数据类型进行校验时。\n\n## 表单\n\n我们为 `form` 提供了以下三种排列方式：\n\n- 水平排列：标签和表单控件水平排列；（默认）\n- 垂直排列：标签和表单控件上下垂直排列；\n- 行内排列：表单项水平行内排列。\n\n## 表单域\n\n表单一定会包含表单域，表单域可以是输入控件，标准表单域，标签，下拉菜单，文本域等。\n\n## API\n\n### Form\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| colon | 配置 Form.Item 的 colon 的默认值 (只有在属性 layout 为 horizontal 时有效) | boolean | true |  |\n| disabled | 设置表单组件禁用，仅对 antdv 组件有效 | boolean | false | 4.0 |\n| hideRequiredMark | 隐藏所有表单项的必选标记 | Boolean | false |  |\n| labelAlign | label 标签的文本对齐方式 | 'left' \\| 'right' | 'right' |  |\n| labelCol | label 标签布局，同 `<Col>` 组件，设置 `span` `offset` 值，如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#col) |  |  |\n| labelWrap | label 标签的文本换行方式 | boolean | false | 3.0 |\n| layout | 表单布局 | 'horizontal'\\|'vertical'\\|'inline' | 'horizontal' |  |\n| model | 表单数据对象 | object |  |  |\n| name | 表单名称，会作为表单字段 `id` 前缀使用 | string | - | 2.0.0 |\n| noStyle | 为 `true` 时不带样式，作为纯字段控件使用 | boolean | false | 3.0 |\n| rules | 表单验证规则 | object |  |  |\n| scrollToFirstError | 提交失败自动滚动到第一个错误字段 | boolean \\| [options](https://github.com/stipsan/scroll-into-view-if-needed/#options) | false | 2.0.0 |\n| validateOnRuleChange | 是否在 rules 属性改变后立即触发一次验证 | boolean | true |  |\n| validateTrigger | 统一设置字段校验规则 | string \\| string\\[] | `change` | 2.0.0 |\n| wrapperCol | 需要为输入控件设置布局样式时，使用该属性，用法同 labelCol | [object](/components/grid-cn/#col) |  |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |  |\n| --- | --- | --- | --- | --- |\n| finish | 提交表单且数据验证成功后回调事件 | function(values) | - | 2.0.0 |\n| finishFailed | 提交表单且数据验证失败后回调事件 | function({ values, errorFields, outOfDate }) | - | 2.0.0 |\n| submit | 数据验证成功后回调事件 | Function(e:Event) | ｜ |  |\n| validate | 任一表单项被校验后触发 | Function(name, status, errorMsgs) |  |  |\n\n### 方法\n\n| 方法名 | 说明 | 参数 | 版本 |\n| --- | --- | --- | --- |\n| clearValidate | 移除表单项的校验结果。传入待移除的表单项的 name 属性或者 name 组成的数组，如不传则移除整个表单的校验结果 | (nameList?: [NamePath](#namepath)\\[]) => void |  |\n| resetFields | 对整个表单进行重置，将所有字段值重置为初始值并移除校验结果 | (nameList?: [NamePath](#namepath)\\[]) => void |  |\n| scrollToField | 滚动到对应字段位置 | (name: [NamePath](#namepath), options: \\[[ScrollOptions](https://github.com/stipsan/scroll-into-view-if-needed/tree/ece40bd9143f48caf4b99503425ecb16b0ad8249#options)]) => void |  |\n| validate | 触发表单验证, 同 validateFields | (nameList?: [NamePath](#namepath)\\[]) => Promise |  |\n| validateFields | 触发表单验证 | (nameList?: [NamePath](#namepath)\\[]) => Promise |  |\n\n#### NamePath\n\n`string | number | (string | number)[]`\n\n### Form.Item\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autoLink | 是否自动关联表单域，对于大部分情况都可以使用自动关联，如果不满足自动关联的条件，可以手动关联，参见下方注意事项 | boolean | true |  |\n| colon | 配合 label 属性使用，表示是否显示 label 后面的冒号 | boolean | true |  |\n| extra | 额外的提示信息，和 help 类似，当需要错误信息和提示文案同时出现时，可以使用这个。 | string\\|slot |  |  |\n| hasFeedback | 配合 validateStatus 属性使用，展示校验状态图标，建议只配合 Input 组件使用 | boolean | false |  |\n| help | 提示信息，如不设置，则会根据校验规则自动生成 | string\\|slot |  |  |\n| htmlFor | 设置子元素 label `htmlFor` 属性 | string |  |  |\n| label | label 标签的文本 | string\\|slot |  |  |\n| labelAlign | 标签文本对齐方式 | 'left' \\| 'right' | 'right' |  |\n| labelCol | label 标签布局，同 `<Col>` 组件，设置 `span` `offset` 值，如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#col) |  |  |\n| name | 表单域 model 字段，在使用 validate、resetFields 方法的情况下，该属性是必填的 | [NamePath](#namepath) |  |  |\n| required | 是否必填，如不设置，则会根据校验规则自动生成 | boolean | false |  |\n| rules | 表单验证规则 | object \\| array |  |  |\n| tooltip | 配置提示信息 | string \\| slot |  | 4.0.4 |\n| validateFirst | 当某一规则校验不通过时，是否停止剩下的规则的校验。 | boolean | false | 2.0.0 |\n| validateStatus | 校验状态，如不设置，则会根据校验规则自动生成，可选：'success' 'warning' 'error' 'validating' | string |  |  |\n| validateTrigger | 设置字段校验的时机 | string \\| string\\[] | `change` | 2.0.0 |\n| wrapperCol | 需要为输入控件设置布局样式时，使用该属性，用法同 labelCol | [object](/components/grid-cn/#col) |  |  |\n\n### 注意：\n\n#### 3.x\n\n自 3.0 版本以后，Form.Item 不再劫持子元素，而是通过 provider / inject 依赖注入的方式进行自动校验，这种方式可以提高组件性能，子元素也不会限制个数，同样子元素也可以是进一步封装的高级组件。你可以参考[自定义表单控件示例](#components-form-demo-customized-form-controls)\n\n但它同样会有一些缺点：\n\n1、自定义组件如果希望 Form.Item 进行校验展示，你需要 `const {id, onFieldChange, onFieldBlur} = useInjectFormItemContext()` 注入，并调用相应的方法。\n\n2、一个 Form.Item 只能收集一个表单项的数据，如果有多个表单项，会导致收集错乱，例如，\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-input name=\"b\"></a-input>\n</a-form-item>\n```\n\n如上 Form.Item 并不知道需要收集 `name=\"a\"` 还是 `name=\"b\"`，你可以通过如下三种方式去解决此类问题：\n\n第一种，使用多个 `a-form-item`:\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-form-item><a-input name=\"b\"></a-input></a-form-item>\n</a-form-item>\n```\n\n第二种，使用自定义组件包裹，并在自定义组件中调用 `useInjectFormItemContext`，相当于把多个表单项合并成了一个\n\n```html\n<script>\n  // 自定义组件\n  import { Form } from 'ant-design-vue';\n  export default {\n    setup() {\n      const formItemContext = Form.useInjectFormItemContext();\n    },\n  };\n</script>\n```\n\n```html\n<a-form-item>\n  <custom-com>\n    <a-input name=\"a\"></a-input>\n    <a-input name=\"b\"></a-input>\n  </custom-com>\n</a-form-item>\n```\n\n第三种，组件库提供了一个 `a-form-item-rest` 组件，它会阻止数据的收集，你可以将不需要收集校验的表单项放到这个组件中即可，它和第一种方式很类似，但它不会产生额外的 dom 节点。\n\n```html\n<a-form-item>\n  <a-input name=\"a\"></a-input>\n  <a-form-item-rest><a-input name=\"b\"></a-input></a-form-item-rest>\n</a-form-item>\n```\n\n#### 2.x\n\nForm.Item 会对唯一子元素进行劫持，并监听 `blur` 和 `change` 事件，来达到自动校验的目的，所以请确保表单域没有其它元素包裹。如果有多个子元素，将只会监听第一个子元素的变化。\n\n如果要监听的表单域不满足自动监听的条件，可以通过如下方式关联表单域：\n\n```html\n<a-form-item name=\"form.name\" ref=\"name\" :autoLink=\"false\">\n  <a-input v-model:value=\"other\" />\n  <span>hahha</span>\n  <div>\n    <a-input\n      v-model:value=\"form.name\"\n      @blur=\"() => {$refs.name.onFieldBlur()}\"\n      @change=\"() => {$refs.name.onFieldChange()}\"\n    />\n  </div>\n</a-form-item>\n```\n\n### 校验规则\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| enum | 枚举类型 | string | - |\n| len | 字段长度 | number | - |\n| max | 最大长度 | number | - |\n| message | 校验文案 | string | - |\n| min | 最小长度 | number | - |\n| pattern | 正则表达式校验 | RegExp | - |\n| required | 是否必选 | boolean | `false` |\n| transform | 校验前转换字段值 | function(value) => transformedValue:any | - |\n| trigger | 校验触发的时机 | 'blur' \\| 'change' \\| `['change', 'blur']` | - |\n| type | 内建校验类型，[可选项](https://github.com/yiminghe/async-validator#type) | string | 'string' |\n| validator | 自定义校验（注意，[callback 必须被调用](https://github.com/ant-design/ant-design/issues/5155)） | function(rule, value, callback) | - |\n| whitespace | 必选时，空格是否会被视为错误 | boolean | `false` |\n\n更多高级用法可研究 [async-validator](https://github.com/yiminghe/async-validator)。\n\n### useForm (v2.2)\n\n`useForm` 是一个可以独立 Form 组件运行的方法，它使用 Vue 响应式机制进行数据的监听和校验，并将校验结果返回，你可以将校验结果绑定到任何组件上，`Form.Item` 也仅仅是将结果展示。\n\n2.2 以下版本需要需要 @ant-design-vue/use 库单独提供，不建议继续使用，你应该尽快升级到 2.2+ 版本\n\n```ts\nimport { Form } from 'ant-design-vue';\nconst useForm = Form.useForm;\n\nuseForm(modelRef, ruleRef, [options]);\n```\n\n参数说明：\n\n```ts\n/*\n `modelRef`, `ruleRef` 必须是响应式数据\n*/\n\ninterface Props {\n  [key: string]: any;\n}\nfunction useForm(\n  modelRef: Props | Ref<Props>,\n  rulesRef?: Props | Ref<Props>,\n  options?: {\n    immediate?: boolean;\n    deep?: boolean;\n    validateOnRuleChange?: boolean;\n    debounce?: DebounceSettings;\n  },\n): {\n  modelRef: Props | Ref<Props>;\n  rulesRef: Props | Ref<Props>;\n  initialModel: Props;\n  validateInfos: validateInfos;\n  resetFields: (newValues?: Props) => void;\n  validate: <T = any>(names?: namesType, option?: validateOptions) => Promise<T>;\n  validateField: (\n    name?: string,\n    value?: any,\n    rules?: [Record<string, unknown>],\n    option?: validateOptions,\n  ) => Promise<RuleError[]>;\n  mergeValidateInfo: (items: ValidateInfo | ValidateInfo[]) => ValidateInfo;\n  clearValidate: (names?: namesType) => void;\n  onValidate?: (\n    name: string | number | string[] | number[],\n    status: boolean,\n    errorMsgs: string[] | null,\n  ) => void;\n};\n```\n"
  },
  {
    "path": "components/form/interface.ts",
    "content": "import type { VueNode } from '../_util/type';\n\nexport type FormLabelAlign = 'left' | 'right';\n\nexport type InternalNamePath = (string | number)[];\nexport type NamePath = string | number | InternalNamePath;\n\nexport type StoreValue = any;\nexport interface Store {\n  [name: string]: StoreValue;\n}\n\nexport interface Meta {\n  touched: boolean;\n  validating: boolean;\n  errors: string[];\n  name: InternalNamePath;\n}\n\nexport interface InternalFieldData extends Meta {\n  value: StoreValue;\n}\n\n/**\n * Used by `setFields` config\n */\nexport interface FieldData extends Partial<Omit<InternalFieldData, 'name'>> {\n  name: NamePath;\n}\n\nexport type RuleType =\n  | 'string'\n  | 'number'\n  | 'boolean'\n  | 'method'\n  | 'regexp'\n  | 'integer'\n  | 'float'\n  | 'object'\n  | 'enum'\n  | 'date'\n  | 'url'\n  | 'hex'\n  | 'email';\n\ntype Validator = (\n  rule: RuleObject,\n  value: StoreValue,\n  callback: (error?: string) => void,\n) => Promise<void> | void;\n\nexport interface ValidatorRule {\n  warningOnly?: boolean;\n  message?: string | VueNode;\n  /** custom validate function (Note: callback must be called) */\n  validator: Validator;\n}\n\ninterface BaseRule {\n  warningOnly?: boolean;\n  /** validate the value from a list of possible values */\n  enum?: StoreValue[];\n  /** validate the exact length of a field */\n  len?: number;\n  /** validate the max length of a field */\n  max?: number;\n  /** validation error message */\n  message?: string | VueNode;\n  /** validate the min length of a field */\n  min?: number;\n  /** validate from a regular expression */\n  pattern?: RegExp;\n  /** indicates whether field is required */\n  required?: boolean;\n  /** transform a value before validation */\n  transform?: (value: StoreValue) => StoreValue;\n  /** built-in validation type, available options: https://github.com/yiminghe/async-validator#type */\n  type?: RuleType;\n  /** treat required fields that only contain whitespace as errors */\n  whitespace?: boolean;\n  /** Customize rule level `validateTrigger`. Must be subset of Field `validateTrigger` */\n  validateTrigger?: string | string[];\n  /** Check trigger timing */\n  trigger?: 'blur' | 'change' | Array<'change' | 'blur'>;\n}\n\ntype AggregationRule = BaseRule & Partial<ValidatorRule>;\n\ninterface ArrayRule extends Omit<AggregationRule, 'type'> {\n  type: 'array';\n  defaultField?: RuleObject;\n}\n\nexport type RuleObject = AggregationRule | ArrayRule;\n\nexport type Rule = RuleObject;\n\nexport interface ValidateErrorEntity<Values = any> {\n  values: Values;\n  errorFields: { name: InternalNamePath; errors: string[] }[];\n  outOfDate: boolean;\n}\n\nexport interface FieldError {\n  name: InternalNamePath | string;\n  errors: string[];\n}\n\nexport interface RuleError {\n  errors: string[];\n  rule: RuleObject;\n}\n\nexport interface ValidateOptions {\n  triggerName?: string;\n  validateMessages?: ValidateMessages;\n}\n\nexport type InternalValidateFields = (\n  nameList?: NamePath[],\n  options?: ValidateOptions,\n) => Promise<Store>;\nexport type ValidateFields = (nameList?: NamePath[]) => Promise<Store>;\n\n// >>>>>> Info\ninterface ValueUpdateInfo {\n  type: 'valueUpdate';\n  source: 'internal' | 'external';\n}\n\ninterface ValidateFinishInfo {\n  type: 'validateFinish';\n}\n\ninterface ResetInfo {\n  type: 'reset';\n}\n\ninterface SetFieldInfo {\n  type: 'setField';\n  data: FieldData;\n}\n\ninterface DependenciesUpdateInfo {\n  type: 'dependenciesUpdate';\n  /**\n   * Contains all the related `InternalNamePath[]`.\n   * a <- b <- c : change `a`\n   * relatedFields=[a, b, c]\n   */\n  relatedFields: InternalNamePath[];\n}\n\nexport type NotifyInfo =\n  | ValueUpdateInfo\n  | ValidateFinishInfo\n  | ResetInfo\n  | SetFieldInfo\n  | DependenciesUpdateInfo;\n\nexport type ValuedNotifyInfo = NotifyInfo & {\n  store: Store;\n};\n\nexport interface Callbacks<Values = any> {\n  onValuesChange?: (changedValues: any, values: Values) => void;\n  onFieldsChange?: (changedFields: FieldData[], allFields: FieldData[]) => void;\n  onFinish?: (values: Values) => void;\n  onFinishFailed?: (errorInfo: ValidateErrorEntity<Values>) => void;\n  onValidate?: (\n    name: string | number | string[] | number[],\n    status: boolean,\n    errors: string[] | null,\n  ) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type EventArgs = any[];\n\ntype ValidateMessage = string | (() => string);\nexport interface ValidateMessages {\n  default?: ValidateMessage;\n  required?: ValidateMessage;\n  enum?: ValidateMessage;\n  whitespace?: ValidateMessage;\n  date?: {\n    format?: ValidateMessage;\n    parse?: ValidateMessage;\n    invalid?: ValidateMessage;\n  };\n  types?: {\n    string?: ValidateMessage;\n    method?: ValidateMessage;\n    array?: ValidateMessage;\n    object?: ValidateMessage;\n    number?: ValidateMessage;\n    date?: ValidateMessage;\n    boolean?: ValidateMessage;\n    integer?: ValidateMessage;\n    float?: ValidateMessage;\n    regexp?: ValidateMessage;\n    email?: ValidateMessage;\n    url?: ValidateMessage;\n    hex?: ValidateMessage;\n  };\n  string?: {\n    len?: ValidateMessage;\n    min?: ValidateMessage;\n    max?: ValidateMessage;\n    range?: ValidateMessage;\n  };\n  number?: {\n    len?: ValidateMessage;\n    min?: ValidateMessage;\n    max?: ValidateMessage;\n    range?: ValidateMessage;\n  };\n  array?: {\n    len?: ValidateMessage;\n    min?: ValidateMessage;\n    max?: ValidateMessage;\n    range?: ValidateMessage;\n  };\n  pattern?: {\n    mismatch?: ValidateMessage;\n  };\n}\n"
  },
  {
    "path": "components/form/style/explain.ts",
    "content": "import type { FormToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genFormValidateMotionStyle: GenerateStyle<FormToken> = token => {\n  const { componentCls } = token;\n\n  const helpCls = `${componentCls}-show-help`;\n  const helpItemCls = `${componentCls}-show-help-item`;\n\n  return {\n    [helpCls]: {\n      // Explain holder\n      transition: `opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n\n      '&-appear, &-enter': {\n        opacity: 0,\n\n        '&-active': {\n          opacity: 1,\n        },\n      },\n\n      '&-leave': {\n        opacity: 1,\n\n        '&-active': {\n          opacity: 0,\n        },\n      },\n\n      // Explain\n      [helpItemCls]: {\n        overflow: 'hidden',\n        transition: `height ${token.motionDurationSlow} ${token.motionEaseInOut},\n                     opacity ${token.motionDurationSlow} ${token.motionEaseInOut},\n                     transform ${token.motionDurationSlow} ${token.motionEaseInOut} !important`,\n\n        [`&${helpItemCls}-appear, &${helpItemCls}-enter`]: {\n          transform: `translateY(-5px)`,\n          opacity: 0,\n\n          [`&-active`]: {\n            transform: 'translateY(0)',\n            opacity: 1,\n          },\n        },\n\n        [`&${helpItemCls}-leave-active`]: {\n          transform: `translateY(-5px)`,\n        },\n      },\n    },\n  };\n};\n\nexport default genFormValidateMotionStyle;\n"
  },
  {
    "path": "components/form/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { genCollapseMotion, zoomIn } from '../../style/motion';\nimport type { AliasToken, FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\nimport genFormValidateMotionStyle from './explain';\n\nexport interface FormToken extends FullToken<'Form'> {\n  formItemCls: string;\n  rootPrefixCls: string;\n}\n\nconst resetForm = (token: AliasToken): CSSObject => ({\n  legend: {\n    display: 'block',\n    width: '100%',\n    marginBottom: token.marginLG,\n    padding: 0,\n    color: token.colorTextDescription,\n    fontSize: token.fontSizeLG,\n    lineHeight: 'inherit',\n    border: 0,\n    borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n  },\n\n  label: {\n    fontSize: token.fontSize,\n  },\n\n  'input[type=\"search\"]': {\n    boxSizing: 'border-box',\n  },\n\n  // Position radios and checkboxes better\n  'input[type=\"radio\"], input[type=\"checkbox\"]': {\n    lineHeight: 'normal',\n  },\n\n  'input[type=\"file\"]': {\n    display: 'block',\n  },\n\n  // Make range inputs behave like textual form controls\n  'input[type=\"range\"]': {\n    display: 'block',\n    width: '100%',\n  },\n\n  // Make multiple select elements height not fixed\n  'select[multiple], select[size]': {\n    height: 'auto',\n  },\n\n  // Focus for file, radio, and checkbox\n  [`input[type='file']:focus,\n  input[type='radio']:focus,\n  input[type='checkbox']:focus`]: {\n    outline: 0,\n    boxShadow: `0 0 0 ${token.controlOutlineWidth}px ${token.controlOutline}`,\n  },\n\n  // Adjust output element\n  output: {\n    display: 'block',\n    paddingTop: 15,\n    color: token.colorText,\n    fontSize: token.fontSize,\n    lineHeight: token.lineHeight,\n  },\n});\n\nconst genFormSize = (token: FormToken, height: number): CSSObject => {\n  const { formItemCls } = token;\n\n  return {\n    [formItemCls]: {\n      [`${formItemCls}-label > label`]: {\n        height,\n      },\n\n      [`${formItemCls}-control-input`]: {\n        minHeight: height,\n      },\n    },\n  };\n};\n\nconst genFormStyle: GenerateStyle<FormToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [token.componentCls]: {\n      ...resetComponent(token),\n      ...resetForm(token),\n\n      [`${componentCls}-text`]: {\n        display: 'inline-block',\n        paddingInlineEnd: token.paddingSM,\n      },\n\n      // ================================================================\n      // =                             Size                             =\n      // ================================================================\n      '&-small': {\n        ...genFormSize(token, token.controlHeightSM),\n      },\n\n      '&-large': {\n        ...genFormSize(token, token.controlHeightLG),\n      },\n    },\n  };\n};\n\nconst genFormItemStyle: GenerateStyle<FormToken> = token => {\n  const { formItemCls, iconCls, componentCls, rootPrefixCls } = token;\n\n  return {\n    [formItemCls]: {\n      ...resetComponent(token),\n\n      marginBottom: token.marginLG,\n      verticalAlign: 'top',\n\n      '&-with-help': {\n        transition: 'none',\n      },\n\n      [`&-hidden,\n        &-hidden.${rootPrefixCls}-row`]: {\n        // https://github.com/ant-design/ant-design/issues/26141\n        display: 'none',\n      },\n\n      '&-has-warning': {\n        [`${formItemCls}-split`]: {\n          color: token.colorError,\n        },\n      },\n\n      '&-has-error': {\n        [`${formItemCls}-split`]: {\n          color: token.colorWarning,\n        },\n      },\n\n      // ==============================================================\n      // =                            Label                           =\n      // ==============================================================\n      [`${formItemCls}-label`]: {\n        display: 'inline-block',\n        flexGrow: 0,\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        textAlign: 'end',\n        verticalAlign: 'middle',\n\n        '&-left': {\n          textAlign: 'start',\n        },\n\n        '&-wrap': {\n          overflow: 'unset',\n          lineHeight: `${token.lineHeight} - 0.25em`,\n          whiteSpace: 'unset',\n        },\n\n        '> label': {\n          position: 'relative',\n          display: 'inline-flex',\n          alignItems: 'center',\n          maxWidth: '100%',\n          height: token.controlHeight,\n          color: token.colorTextHeading,\n          fontSize: token.fontSize,\n\n          [`> ${iconCls}`]: {\n            fontSize: token.fontSize,\n            verticalAlign: 'top',\n          },\n\n          // Required mark\n          [`&${formItemCls}-required:not(${formItemCls}-required-mark-optional)::before`]: {\n            display: 'inline-block',\n            marginInlineEnd: token.marginXXS,\n            color: token.colorError,\n            fontSize: token.fontSize,\n            fontFamily: 'SimSun, sans-serif',\n            lineHeight: 1,\n            content: '\"*\"',\n\n            [`${componentCls}-hide-required-mark &`]: {\n              display: 'none',\n            },\n          },\n\n          // Optional mark\n          [`${formItemCls}-optional`]: {\n            display: 'inline-block',\n            marginInlineStart: token.marginXXS,\n            color: token.colorTextDescription,\n\n            [`${componentCls}-hide-required-mark &`]: {\n              display: 'none',\n            },\n          },\n\n          // Optional mark\n          [`${formItemCls}-tooltip`]: {\n            color: token.colorTextDescription,\n            cursor: 'help',\n            writingMode: 'horizontal-tb',\n            marginInlineStart: token.marginXXS,\n          },\n\n          '&::after': {\n            content: '\":\"',\n            position: 'relative',\n            marginBlock: 0,\n            marginInlineStart: token.marginXXS / 2,\n            marginInlineEnd: token.marginXS,\n          },\n\n          [`&${formItemCls}-no-colon::after`]: {\n            content: '\" \"',\n          },\n        },\n      },\n\n      // ==============================================================\n      // =                            Input                           =\n      // ==============================================================\n      [`${formItemCls}-control`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        flexGrow: 1,\n\n        [`&:first-child:not([class^=\"'${rootPrefixCls}-col-'\"]):not([class*=\"' ${rootPrefixCls}-col-'\"])`]:\n          {\n            width: '100%',\n          },\n\n        '&-input': {\n          position: 'relative',\n          display: 'flex',\n          alignItems: 'center',\n          minHeight: token.controlHeight,\n\n          '&-content': {\n            flex: 'auto',\n            maxWidth: '100%',\n          },\n        },\n      },\n\n      // ==============================================================\n      // =                           Explain                          =\n      // ==============================================================\n      [formItemCls]: {\n        '&-explain, &-extra': {\n          clear: 'both',\n          color: token.colorTextDescription,\n          fontSize: token.fontSize,\n          lineHeight: token.lineHeight,\n        },\n\n        '&-explain-connected': {\n          width: '100%',\n        },\n\n        '&-extra': {\n          minHeight: token.controlHeightSM,\n          transition: `color ${token.motionDurationMid} ${token.motionEaseOut}`, // sync input color transition\n        },\n\n        '&-explain': {\n          '&-error': {\n            color: token.colorError,\n          },\n\n          '&-warning': {\n            color: token.colorWarning,\n          },\n        },\n      },\n\n      [`&-with-help ${formItemCls}-explain`]: {\n        height: 'auto',\n        opacity: 1,\n      },\n\n      // ==============================================================\n      // =                        Feedback Icon                       =\n      // ==============================================================\n      [`${formItemCls}-feedback-icon`]: {\n        fontSize: token.fontSize,\n        textAlign: 'center',\n        visibility: 'visible',\n        animationName: zoomIn,\n        animationDuration: token.motionDurationMid,\n        animationTimingFunction: token.motionEaseOutBack,\n        pointerEvents: 'none',\n\n        '&-success': {\n          color: token.colorSuccess,\n        },\n\n        '&-error': {\n          color: token.colorError,\n        },\n\n        '&-warning': {\n          color: token.colorWarning,\n        },\n\n        '&-validating': {\n          color: token.colorPrimary,\n        },\n      },\n    },\n  };\n};\n\nconst genHorizontalStyle: GenerateStyle<FormToken> = token => {\n  const { componentCls, formItemCls, rootPrefixCls } = token;\n\n  return {\n    [`${componentCls}-horizontal`]: {\n      [`${formItemCls}-label`]: {\n        flexGrow: 0,\n      },\n\n      [`${formItemCls}-control`]: {\n        flex: '1 1 0',\n        // https://github.com/ant-design/ant-design/issues/32777\n        // https://github.com/ant-design/ant-design/issues/33773\n        minWidth: 0,\n      },\n\n      // https://github.com/ant-design/ant-design/issues/32980\n      [`${formItemCls}-label.${rootPrefixCls}-col-24 + ${formItemCls}-control`]: {\n        minWidth: 'unset',\n      },\n    },\n  };\n};\n\nconst genInlineStyle: GenerateStyle<FormToken> = token => {\n  const { componentCls, formItemCls } = token;\n\n  return {\n    [`${componentCls}-inline`]: {\n      display: 'flex',\n      flexWrap: 'wrap',\n\n      [formItemCls]: {\n        flex: 'none',\n        flexWrap: 'nowrap',\n        marginInlineEnd: token.margin,\n        marginBottom: 0,\n\n        '&-with-help': {\n          marginBottom: token.marginLG,\n        },\n\n        [`> ${formItemCls}-label,\n        > ${formItemCls}-control`]: {\n          display: 'inline-block',\n          verticalAlign: 'top',\n        },\n\n        [`> ${formItemCls}-label`]: {\n          flex: 'none',\n        },\n\n        [`${componentCls}-text`]: {\n          display: 'inline-block',\n        },\n\n        [`${formItemCls}-has-feedback`]: {\n          display: 'inline-block',\n        },\n      },\n    },\n  };\n};\n\nconst makeVerticalLayoutLabel = (token: FormToken): CSSObject => ({\n  margin: 0,\n  padding: `0 0 ${token.paddingXS}px`,\n  whiteSpace: 'initial',\n  textAlign: 'start',\n\n  '> label': {\n    margin: 0,\n\n    '&::after': {\n      display: 'none',\n    },\n  },\n});\n\nconst makeVerticalLayout = (token: FormToken): CSSObject => {\n  const { componentCls, formItemCls } = token;\n\n  return {\n    [`${formItemCls} ${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n    [componentCls]: {\n      [formItemCls]: {\n        flexWrap: 'wrap',\n\n        [`${formItemCls}-label,\n          ${formItemCls}-control`]: {\n          flex: '0 0 100%',\n          maxWidth: '100%',\n        },\n      },\n    },\n  };\n};\n\nconst genVerticalStyle: GenerateStyle<FormToken> = token => {\n  const { componentCls, formItemCls, rootPrefixCls } = token;\n\n  return {\n    [`${componentCls}-vertical`]: {\n      [formItemCls]: {\n        '&-row': {\n          flexDirection: 'column',\n        },\n\n        '&-label > label': {\n          height: 'auto',\n        },\n\n        [`${componentCls}-item-control`]: {\n          width: '100%',\n        },\n      },\n    },\n\n    [`${componentCls}-vertical ${formItemCls}-label,\n      .${rootPrefixCls}-col-24${formItemCls}-label,\n      .${rootPrefixCls}-col-xl-24${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n\n    [`@media (max-width: ${token.screenXSMax}px)`]: [\n      makeVerticalLayout(token),\n      {\n        [componentCls]: {\n          [`.${rootPrefixCls}-col-xs-24${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n        },\n      },\n    ],\n\n    [`@media (max-width: ${token.screenSMMax}px)`]: {\n      [componentCls]: {\n        [`.${rootPrefixCls}-col-sm-24${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n      },\n    },\n\n    [`@media (max-width: ${token.screenMDMax}px)`]: {\n      [componentCls]: {\n        [`.${rootPrefixCls}-col-md-24${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n      },\n    },\n\n    [`@media (max-width: ${token.screenLGMax}px)`]: {\n      [componentCls]: {\n        [`.${rootPrefixCls}-col-lg-24${formItemCls}-label`]: makeVerticalLayoutLabel(token),\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Form', (token, { rootPrefixCls }) => {\n  const formToken = mergeToken<FormToken>(token, {\n    formItemCls: `${token.componentCls}-item`,\n    rootPrefixCls,\n  });\n\n  return [\n    genFormStyle(formToken),\n    genFormItemStyle(formToken),\n    genFormValidateMotionStyle(formToken),\n    genHorizontalStyle(formToken),\n    genInlineStyle(formToken),\n    genVerticalStyle(formToken),\n    genCollapseMotion(formToken),\n    zoomIn,\n  ];\n});\n"
  },
  {
    "path": "components/form/useForm.ts",
    "content": "import type { Ref } from 'vue';\nimport { reactive, watch, nextTick, unref, shallowRef, toRaw, ref } from 'vue';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport intersection from 'lodash-es/intersection';\nimport isEqual from 'lodash-es/isEqual';\nimport debounce from 'lodash-es/debounce';\nimport omit from 'lodash-es/omit';\nimport { validateRules } from './utils/validateUtil';\nimport { defaultValidateMessages } from './utils/messages';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport type { Callbacks, RuleError, ValidateMessages } from './interface';\nimport type { ValidateStatus } from './FormItem';\n\ninterface DebounceSettings {\n  leading?: boolean;\n\n  wait?: number;\n\n  trailing?: boolean;\n}\n\nfunction isRequired(rules: any[]) {\n  let isRequired = false;\n  if (rules && rules.length) {\n    rules.every((rule: { required: any }) => {\n      if (rule.required) {\n        isRequired = true;\n        return false;\n      }\n      return true;\n    });\n  }\n  return isRequired;\n}\n\nfunction toArray(value: string | string[]) {\n  if (value === undefined || value === null) {\n    return [];\n  }\n\n  return Array.isArray(value) ? value : [value];\n}\n\nexport interface Props {\n  [key: string]: any;\n}\n\nexport interface validateOptions {\n  validateFirst?: boolean;\n  validateMessages?: ValidateMessages;\n  trigger?: 'change' | 'blur' | string | string[];\n}\n\ntype namesType = string | string[];\nexport interface ValidateInfo {\n  autoLink?: boolean;\n  required?: boolean;\n  validateStatus?: ValidateStatus;\n  help?: any;\n}\n\nexport interface validateInfos {\n  [key: string]: ValidateInfo;\n}\n\nfunction getPropByPath(obj: Props, path: string, strict: boolean) {\n  let tempObj = obj;\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n  path = path.replace(/^\\./, '');\n\n  const keyArr = path.split('.');\n  let i = 0;\n  for (let len = keyArr.length; i < len - 1; ++i) {\n    if (!tempObj && !strict) break;\n    const key = keyArr[i];\n    if (key in tempObj) {\n      tempObj = tempObj[key];\n    } else {\n      if (strict) {\n        throw new Error('please transfer a valid name path to validate!');\n      }\n      break;\n    }\n  }\n  return {\n    o: tempObj,\n    k: keyArr[i],\n    v: tempObj ? tempObj[keyArr[i]] : null,\n    isValid: tempObj && keyArr[i] in tempObj,\n  };\n}\n\nfunction useForm(\n  modelRef: Props | Ref<Props>,\n  rulesRef: Props | Ref<Props> = ref({}),\n  options?: {\n    immediate?: boolean;\n    deep?: boolean;\n    validateOnRuleChange?: boolean;\n    debounce?: DebounceSettings;\n    onValidate?: Callbacks['onValidate'];\n  },\n): {\n  modelRef: Props | Ref<Props>;\n  rulesRef: Props | Ref<Props>;\n  initialModel: Props;\n  validateInfos: validateInfos;\n  resetFields: (newValues?: Props) => void;\n  validate: <T = any>(names?: namesType, option?: validateOptions) => Promise<T>;\n\n  /** This is an internal usage. Do not use in your prod */\n  validateField: (\n    name: string,\n    value: any,\n    rules: Record<string, unknown>[],\n    option?: validateOptions,\n  ) => Promise<RuleError[]>;\n  mergeValidateInfo: (items: ValidateInfo | ValidateInfo[]) => ValidateInfo;\n  clearValidate: (names?: namesType) => void;\n} {\n  const initialModel = cloneDeep(unref(modelRef));\n  const validateInfos = reactive<validateInfos>({});\n\n  const rulesKeys = shallowRef([]);\n\n  const resetFields = (newValues: Props) => {\n    Object.assign(unref(modelRef), {\n      ...cloneDeep(initialModel),\n      ...newValues,\n    });\n    nextTick(() => {\n      Object.keys(validateInfos).forEach(key => {\n        validateInfos[key] = {\n          autoLink: false,\n          required: isRequired(unref(rulesRef)[key]),\n        };\n      });\n    });\n  };\n  const filterRules = (rules = [], trigger: string[]) => {\n    if (!trigger.length) {\n      return rules;\n    } else {\n      return rules.filter(rule => {\n        const triggerList = toArray(rule.trigger || 'change');\n        return intersection(triggerList, trigger).length;\n      });\n    }\n  };\n\n  let lastValidatePromise = null;\n  const validateFields = (names: string[], option: validateOptions = {}, strict: boolean) => {\n    // Collect result in promise list\n    const promiseList: Promise<{\n      name: string;\n      errors: string[];\n    }>[] = [];\n    const values = {};\n    for (let i = 0; i < names.length; i++) {\n      const name = names[i];\n      const prop = getPropByPath(unref(modelRef), name, strict);\n      if (!prop.isValid) continue;\n      values[name] = prop.v;\n      const rules = filterRules(unref(rulesRef)[name], toArray(option && option.trigger));\n      if (rules.length) {\n        promiseList.push(\n          validateField(name, prop.v, rules, option || {})\n            .then(() => ({\n              name,\n              errors: [],\n              warnings: [],\n            }))\n            .catch((ruleErrors: RuleError[]) => {\n              const mergedErrors: string[] = [];\n              const mergedWarnings: string[] = [];\n\n              ruleErrors.forEach(({ rule: { warningOnly }, errors }) => {\n                if (warningOnly) {\n                  mergedWarnings.push(...errors);\n                } else {\n                  mergedErrors.push(...errors);\n                }\n              });\n\n              if (mergedErrors.length) {\n                return Promise.reject({\n                  name,\n                  errors: mergedErrors,\n                  warnings: mergedWarnings,\n                });\n              }\n\n              return {\n                name,\n                errors: mergedErrors,\n                warnings: mergedWarnings,\n              };\n            }),\n        );\n      }\n    }\n\n    const summaryPromise = allPromiseFinish(promiseList);\n    lastValidatePromise = summaryPromise;\n\n    const returnPromise = summaryPromise\n      .then(() => {\n        if (lastValidatePromise === summaryPromise) {\n          return Promise.resolve(values);\n        }\n        return Promise.reject([]);\n      })\n      .catch((results: any[]) => {\n        const errorList = results.filter(\n          (result: { errors: string | any[] }) => result && result.errors.length,\n        );\n        return errorList.length\n          ? Promise.reject({\n              values,\n              errorFields: errorList,\n              outOfDate: lastValidatePromise !== summaryPromise,\n            })\n          : Promise.resolve(values);\n      });\n\n    // Do not throw in console\n    returnPromise.catch((e: any) => e);\n\n    return returnPromise;\n  };\n  const validateField = (\n    name: string,\n    value: any,\n    rules: Record<string, unknown>[],\n    option: validateOptions = {},\n  ): Promise<RuleError[]> => {\n    const promise = validateRules(\n      [name],\n      value,\n      rules,\n      {\n        validateMessages: defaultValidateMessages,\n        ...option,\n      },\n      !!option.validateFirst,\n    );\n    if (!validateInfos[name]) {\n      return promise.catch((e: any) => e);\n    }\n    validateInfos[name].validateStatus = 'validating';\n    promise\n      .catch((e: any) => e)\n      .then((results: RuleError[] = []) => {\n        if (validateInfos[name].validateStatus === 'validating') {\n          const res = results.filter(result => result && result.errors.length);\n          validateInfos[name].validateStatus = res.length ? 'error' : 'success';\n          validateInfos[name].help = res.length ? res.map(r => r.errors) : null;\n          options?.onValidate?.(\n            name,\n            !res.length,\n            res.length ? toRaw(validateInfos[name].help[0]) : null,\n          );\n        }\n      });\n    return promise;\n  };\n\n  const validate = (names?: namesType, option?: validateOptions): Promise<any> => {\n    let keys = [];\n    let strict = true;\n    if (!names) {\n      strict = false;\n      keys = rulesKeys.value;\n    } else if (Array.isArray(names)) {\n      keys = names;\n    } else {\n      keys = [names];\n    }\n    const promises = validateFields(keys, option || {}, strict);\n    // Do not throw in console\n    promises.catch((e: any) => e);\n    return promises;\n  };\n\n  const clearValidate = (names?: namesType) => {\n    let keys = [];\n    if (!names) {\n      keys = rulesKeys.value;\n    } else if (Array.isArray(names)) {\n      keys = names;\n    } else {\n      keys = [names];\n    }\n    keys.forEach(key => {\n      validateInfos[key] &&\n        Object.assign(validateInfos[key], {\n          validateStatus: '',\n          help: null,\n        });\n    });\n  };\n\n  const mergeValidateInfo = (items: ValidateInfo[] | ValidateInfo) => {\n    const info = { autoLink: false } as ValidateInfo;\n    const help = [];\n    const infos = Array.isArray(items) ? items : [items];\n    for (let i = 0; i < infos.length; i++) {\n      const arg = infos[i] as ValidateInfo;\n      if (arg?.validateStatus === 'error') {\n        info.validateStatus = 'error';\n        arg.help && help.push(arg.help);\n      }\n      info.required = info.required || arg?.required;\n    }\n    info.help = help;\n    return info;\n  };\n  let oldModel = initialModel;\n  let isFirstTime = true;\n  const modelFn = (model: { [x: string]: any }) => {\n    const names = [];\n    rulesKeys.value.forEach(key => {\n      const prop = getPropByPath(model, key, false);\n      const oldProp = getPropByPath(oldModel, key, false);\n      const isFirstValidation = isFirstTime && options?.immediate && prop.isValid;\n\n      if (isFirstValidation || !isEqual(prop.v, oldProp.v)) {\n        names.push(key);\n      }\n    });\n    validate(names, { trigger: 'change' });\n    isFirstTime = false;\n    oldModel = cloneDeep(toRaw(model));\n  };\n\n  const debounceOptions = options?.debounce;\n\n  let first = true;\n  watch(\n    rulesRef,\n    () => {\n      rulesKeys.value = rulesRef ? Object.keys(unref(rulesRef)) : [];\n      if (!first && options && options.validateOnRuleChange) {\n        validate();\n      }\n      first = false;\n    },\n    { deep: true, immediate: true },\n  );\n\n  watch(\n    rulesKeys,\n    () => {\n      const newValidateInfos = {};\n      rulesKeys.value.forEach(key => {\n        newValidateInfos[key] = Object.assign({}, validateInfos[key], {\n          autoLink: false,\n          required: isRequired(unref(rulesRef)[key]),\n        });\n        delete validateInfos[key];\n      });\n      for (const key in validateInfos) {\n        if (Object.prototype.hasOwnProperty.call(validateInfos, key)) {\n          delete validateInfos[key];\n        }\n      }\n      Object.assign(validateInfos, newValidateInfos);\n    },\n    { immediate: true },\n  );\n  watch(\n    modelRef,\n    debounceOptions && debounceOptions.wait\n      ? debounce(modelFn, debounceOptions.wait, omit(debounceOptions, ['wait']))\n      : modelFn,\n    { immediate: options && !!options.immediate, deep: true },\n  );\n\n  return {\n    modelRef,\n    rulesRef,\n    initialModel,\n    validateInfos,\n    resetFields,\n    validate,\n    validateField,\n    mergeValidateInfo,\n    clearValidate,\n  };\n}\n\nexport default useForm;\n"
  },
  {
    "path": "components/form/utils/asyncUtil.ts",
    "content": "import type { FieldError } from '../interface';\n\nexport function allPromiseFinish(promiseList: Promise<FieldError>[]): Promise<FieldError[]> {\n  let hasError = false;\n  let count = promiseList.length;\n  const results: FieldError[] = [];\n\n  if (!promiseList.length) {\n    return Promise.resolve([]);\n  }\n\n  return new Promise((resolve, reject) => {\n    promiseList.forEach((promise, index) => {\n      promise\n        .catch(e => {\n          hasError = true;\n          return e;\n        })\n        .then(result => {\n          count -= 1;\n          results[index] = result;\n\n          if (count > 0) {\n            return;\n          }\n\n          if (hasError) {\n            reject(results);\n          }\n          resolve(results);\n        });\n    });\n  });\n}\n"
  },
  {
    "path": "components/form/utils/messages.ts",
    "content": "const typeTemplate = \"'${name}' is not a valid ${type}\";\n\nexport const defaultValidateMessages = {\n  default: \"Validation error on field '${name}'\",\n  required: \"'${name}' is required\",\n  enum: \"'${name}' must be one of [${enum}]\",\n  whitespace: \"'${name}' cannot be empty\",\n  date: {\n    format: \"'${name}' is invalid for format date\",\n    parse: \"'${name}' could not be parsed as date\",\n    invalid: \"'${name}' is invalid date\",\n  },\n  types: {\n    string: typeTemplate,\n    method: typeTemplate,\n    array: typeTemplate,\n    object: typeTemplate,\n    number: typeTemplate,\n    date: typeTemplate,\n    boolean: typeTemplate,\n    integer: typeTemplate,\n    float: typeTemplate,\n    regexp: typeTemplate,\n    email: typeTemplate,\n    url: typeTemplate,\n    hex: typeTemplate,\n  },\n  string: {\n    len: \"'${name}' must be exactly ${len} characters\",\n    min: \"'${name}' must be at least ${min} characters\",\n    max: \"'${name}' cannot be longer than ${max} characters\",\n    range: \"'${name}' must be between ${min} and ${max} characters\",\n  },\n  number: {\n    len: \"'${name}' must equal ${len}\",\n    min: \"'${name}' cannot be less than ${min}\",\n    max: \"'${name}' cannot be greater than ${max}\",\n    range: \"'${name}' must be between ${min} and ${max}\",\n  },\n  array: {\n    len: \"'${name}' must be exactly ${len} in length\",\n    min: \"'${name}' cannot be less than ${min} in length\",\n    max: \"'${name}' cannot be greater than ${max} in length\",\n    range: \"'${name}' must be between ${min} and ${max} in length\",\n  },\n  pattern: {\n    mismatch: \"'${name}' does not match pattern ${pattern}\",\n  },\n};\n"
  },
  {
    "path": "components/form/utils/typeUtil.ts",
    "content": "export function toArray<T>(value?: T | T[] | null): T[] {\n  if (value === undefined || value === null) {\n    return [];\n  }\n\n  return Array.isArray(value) ? value : [value];\n}\n"
  },
  {
    "path": "components/form/utils/useDebounce.ts",
    "content": "import type { Ref } from 'vue';\nimport { shallowRef, watchEffect } from 'vue';\n\nexport default function useDebounce<T>(value: Ref<T[]>): Ref<T[]> {\n  const cacheValue = shallowRef(value.value.slice());\n  let timeout: any = null;\n  watchEffect(() => {\n    clearTimeout(timeout);\n    timeout = setTimeout(\n      () => {\n        cacheValue.value = value.value;\n      },\n      value.value.length ? 0 : 10,\n    );\n  });\n\n  return cacheValue;\n}\n"
  },
  {
    "path": "components/form/utils/validateUtil.ts",
    "content": "import RawAsyncValidator from 'async-validator';\nimport { cloneVNode } from 'vue';\nimport { warning } from '../../vc-util/warning';\n\nimport { setValues } from './valueUtil';\nimport { defaultValidateMessages } from './messages';\nimport { isValidElement } from '../../_util/props-util';\nimport type { InternalNamePath, RuleError, RuleObject, ValidateOptions } from '../interface';\n\n// Remove incorrect original ts define\nconst AsyncValidator: any = RawAsyncValidator;\n\n/**\n * Replace with template.\n *   `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template: string, kv: Record<string, string>): string {\n  return template.replace(/\\$\\{\\w+\\}/g, (str: string) => {\n    const key = str.slice(2, -1);\n    return kv[key];\n  });\n}\n\nasync function validateRule(\n  name: string,\n  value: any,\n  rule: RuleObject,\n  options: ValidateOptions,\n  messageVariables?: Record<string, string>,\n): Promise<string[]> {\n  const cloneRule = { ...rule };\n\n  // Bug of `async-validator`\n  delete (cloneRule as any).ruleIndex;\n  delete (cloneRule as any).trigger;\n\n  // We should special handle array validate\n  let subRuleField: RuleObject = null;\n  if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n    subRuleField = cloneRule.defaultField;\n    delete cloneRule.defaultField;\n  }\n\n  const validator = new AsyncValidator({\n    [name]: [cloneRule],\n  });\n\n  const messages = setValues({}, defaultValidateMessages, options.validateMessages);\n  validator.messages(messages);\n\n  let result = [];\n\n  try {\n    await Promise.resolve(validator.validate({ [name]: value }, { ...options }));\n  } catch (errObj) {\n    if (errObj.errors) {\n      result = errObj.errors.map(({ message }, index: number) =>\n        // Wrap VueNode with `key`\n        isValidElement(message) ? cloneVNode(message, { key: `error_${index}` }) : message,\n      );\n    } else {\n      console.error(errObj);\n      result = [(messages.default as () => string)()];\n    }\n  }\n\n  if (!result.length && subRuleField) {\n    const subResults: string[][] = await Promise.all(\n      (value as any[]).map((subValue: any, i: number) =>\n        validateRule(`${name}.${i}`, subValue, subRuleField, options, messageVariables),\n      ),\n    );\n\n    return subResults.reduce((prev, errors) => [...prev, ...errors], []);\n  }\n\n  // Replace message with variables\n  const kv = {\n    ...(rule as Record<string, string | number>),\n    name,\n    enum: (rule.enum || []).join(', '),\n    ...messageVariables,\n  };\n\n  const fillVariableResult = result.map(error => {\n    if (typeof error === 'string') {\n      return replaceMessage(error, kv);\n    }\n    return error;\n  });\n\n  return fillVariableResult;\n}\n\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nexport function validateRules(\n  namePath: InternalNamePath,\n  value: any,\n  rules: RuleObject[],\n  options: ValidateOptions,\n  validateFirst: boolean | 'parallel',\n  messageVariables?: Record<string, string>,\n) {\n  const name = namePath.join('.');\n\n  // Fill rule with context\n  const filledRules: RuleObject[] = rules\n    .map((currentRule, ruleIndex) => {\n      const originValidatorFunc = currentRule.validator;\n      const cloneRule = {\n        ...currentRule,\n        ruleIndex,\n      };\n\n      // Replace validator if needed\n      if (originValidatorFunc) {\n        cloneRule.validator = (rule: RuleObject, val: any, callback: (error?: string) => void) => {\n          let hasPromise = false;\n\n          // Wrap callback only accept when promise not provided\n          const wrappedCallback = (...args: string[]) => {\n            // Wait a tick to make sure return type is a promise\n            Promise.resolve().then(() => {\n              warning(\n                !hasPromise,\n                'Your validator function has already return a promise. `callback` will be ignored.',\n              );\n\n              if (!hasPromise) {\n                callback(...args);\n              }\n            });\n          };\n\n          // Get promise\n          const promise = originValidatorFunc(rule, val, wrappedCallback);\n          hasPromise =\n            promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n\n          /**\n           * 1. Use promise as the first priority.\n           * 2. If promise not exist, use callback with warning instead\n           */\n          warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n\n          if (hasPromise) {\n            (promise as Promise<void>)\n              .then(() => {\n                callback();\n              })\n              .catch(err => {\n                callback(err || ' ');\n              });\n          }\n        };\n      }\n\n      return cloneRule;\n    })\n    .sort(({ warningOnly: w1, ruleIndex: i1 }, { warningOnly: w2, ruleIndex: i2 }) => {\n      if (!!w1 === !!w2) {\n        // Let keep origin order\n        return i1 - i2;\n      }\n\n      if (w1) {\n        return 1;\n      }\n\n      return -1;\n    });\n\n  // Do validate rules\n  let summaryPromise: Promise<RuleError[]>;\n\n  if (validateFirst === true) {\n    // >>>>> Validate by serialization\n    summaryPromise = new Promise(async (resolve, reject) => {\n      /* eslint-disable no-await-in-loop */\n      for (let i = 0; i < filledRules.length; i += 1) {\n        const rule = filledRules[i];\n        const errors = await validateRule(name, value, rule, options, messageVariables);\n        if (errors.length) {\n          reject([{ errors, rule }]);\n          return;\n        }\n      }\n      /* eslint-enable */\n\n      resolve([]);\n    });\n  } else {\n    // >>>>> Validate by parallel\n    const rulePromises: Promise<RuleError>[] = filledRules.map(rule =>\n      validateRule(name, value, rule, options, messageVariables).then(errors => ({ errors, rule })),\n    );\n\n    summaryPromise = (\n      validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)\n    ).then((errors: RuleError[]): RuleError[] | Promise<RuleError[]> => {\n      // Always change to rejection for Field to catch\n      return Promise.reject<RuleError[]>(errors);\n    });\n  }\n\n  // Internal catch error to avoid console error log.\n  summaryPromise.catch(e => e);\n\n  return summaryPromise;\n}\n\nasync function finishOnAllFailed(rulePromises: Promise<RuleError>[]): Promise<RuleError[]> {\n  return Promise.all(rulePromises).then(\n    (errorsList: RuleError[]): RuleError[] | Promise<RuleError[]> => {\n      const errors: RuleError[] = [].concat(...errorsList);\n\n      return errors;\n    },\n  );\n}\n\nasync function finishOnFirstFailed(rulePromises: Promise<RuleError>[]): Promise<RuleError[]> {\n  let count = 0;\n\n  return new Promise(resolve => {\n    rulePromises.forEach(promise => {\n      promise.then(ruleError => {\n        if (ruleError.errors.length) {\n          resolve([ruleError]);\n        }\n\n        count += 1;\n        if (count === rulePromises.length) {\n          resolve([]);\n        }\n      });\n    });\n  });\n}\n"
  },
  {
    "path": "components/form/utils/valueUtil.ts",
    "content": "import { toArray } from './typeUtil';\nimport type { InternalNamePath, NamePath } from '../interface';\nimport get from '../../vc-util/get';\nimport set from '../../vc-util/set';\n\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path: NamePath | null): InternalNamePath {\n  return toArray(path);\n}\n\nexport function getValue<T>(store: T, namePath: InternalNamePath) {\n  const value = get(store, namePath);\n  return value;\n}\n\nexport function setValue<T>(\n  store: T,\n  namePath: InternalNamePath,\n  value: any,\n  removeIfUndefined = false,\n): T {\n  const newStore = set(store, namePath, value, removeIfUndefined);\n  return newStore;\n}\n\nexport function containsNamePath(namePathList: InternalNamePath[], namePath: InternalNamePath) {\n  return namePathList && namePathList.some(path => matchNamePath(path, namePath));\n}\n\nfunction isObject(obj: any) {\n  return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\nfunction internalSetValues<T>(store: T, values: T): T {\n  const newStore: T = (Array.isArray(store) ? [...store] : { ...store }) as T;\n\n  if (!values) {\n    return newStore;\n  }\n\n  Object.keys(values).forEach(key => {\n    const prevValue = newStore[key];\n    const value = values[key];\n\n    // If both are object (but target is not array), we use recursion to set deep value\n    const recursive = isObject(prevValue) && isObject(value);\n    newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : value;\n  });\n\n  return newStore;\n}\n\nexport function setValues<T>(store: T, ...restValues: T[]): T {\n  return restValues.reduce(\n    (current: T, newStore: T) => internalSetValues(current, newStore),\n    store,\n  );\n}\n\nexport function cloneByNamePathList<T>(store: T, namePathList: InternalNamePath[]): T {\n  let newStore = {} as T;\n  namePathList.forEach(namePath => {\n    const value = getValue(store, namePath);\n    newStore = setValue(newStore, namePath, value);\n  });\n\n  return newStore;\n}\n\nexport function matchNamePath(\n  namePath: InternalNamePath,\n  changedNamePath: InternalNamePath | null,\n) {\n  if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n    return false;\n  }\n  return namePath.every((nameUnit, i) => changedNamePath[i] === nameUnit);\n}\n"
  },
  {
    "path": "components/grid/Col.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectRow } from './context';\nimport { useColStyle } from './style';\n\ntype ColSpanType = number | string;\n\ntype FlexType = number | 'none' | 'auto' | string;\n\nexport interface ColSize {\n  span?: ColSpanType;\n  order?: ColSpanType;\n  offset?: ColSpanType;\n  push?: ColSpanType;\n  pull?: ColSpanType;\n}\n\nfunction parseFlex(flex: FlexType): string {\n  if (typeof flex === 'number') {\n    return `${flex} ${flex} auto`;\n  }\n\n  if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n    return `0 0 ${flex}`;\n  }\n\n  return flex;\n}\n\nexport const colProps = () => ({\n  span: [String, Number],\n  order: [String, Number],\n  offset: [String, Number],\n  push: [String, Number],\n  pull: [String, Number],\n  xs: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  sm: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  md: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  lg: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  xl: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  xxl: {\n    type: [String, Number, Object] as PropType<string | number | ColSize>,\n    default: undefined as string | number | ColSize,\n  },\n  prefixCls: String,\n  flex: [String, Number],\n});\n\nexport type ColProps = Partial<ExtractPropTypes<ReturnType<typeof colProps>>>;\n\nconst sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'] as const;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACol',\n  inheritAttrs: false,\n  props: colProps(),\n  setup(props, { slots, attrs }) {\n    const { gutter, supportFlexGap, wrap } = useInjectRow();\n    const { prefixCls, direction } = useConfigInject('col', props);\n\n    const [wrapSSR, hashId] = useColStyle(prefixCls);\n\n    const classes = computed(() => {\n      const { span, order, offset, push, pull } = props;\n      const pre = prefixCls.value;\n      let sizeClassObj = {};\n      sizes.forEach(size => {\n        let sizeProps: ColSize = {};\n        const propSize = props[size];\n        if (typeof propSize === 'number') {\n          sizeProps.span = propSize;\n        } else if (typeof propSize === 'object') {\n          sizeProps = propSize || {};\n        }\n\n        sizeClassObj = {\n          ...sizeClassObj,\n          [`${pre}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined,\n          [`${pre}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0,\n          [`${pre}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0,\n          [`${pre}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0,\n          [`${pre}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0,\n          [`${pre}-rtl`]: direction.value === 'rtl',\n        };\n      });\n      return classNames(\n        pre,\n        {\n          [`${pre}-${span}`]: span !== undefined,\n          [`${pre}-order-${order}`]: order,\n          [`${pre}-offset-${offset}`]: offset,\n          [`${pre}-push-${push}`]: push,\n          [`${pre}-pull-${pull}`]: pull,\n        },\n        sizeClassObj,\n        attrs.class,\n        hashId.value,\n      );\n    });\n\n    const mergedStyle = computed(() => {\n      const { flex } = props;\n      const gutterVal = gutter.value;\n      const style: CSSProperties = {};\n      // Horizontal gutter use padding\n      if (gutterVal && gutterVal[0] > 0) {\n        const horizontalGutter = `${gutterVal[0] / 2}px`;\n        style.paddingLeft = horizontalGutter;\n        style.paddingRight = horizontalGutter;\n      }\n\n      // Vertical gutter use padding when gap not support\n      if (gutterVal && gutterVal[1] > 0 && !supportFlexGap.value) {\n        const verticalGutter = `${gutterVal[1] / 2}px`;\n        style.paddingTop = verticalGutter;\n        style.paddingBottom = verticalGutter;\n      }\n\n      if (flex) {\n        style.flex = parseFlex(flex);\n\n        // Hack for Firefox to avoid size issue\n        // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n        if (wrap.value === false && !style.minWidth) {\n          style.minWidth = 0;\n        }\n      }\n      return style;\n    });\n\n    return () =>\n      wrapSSR(\n        <div\n          {...attrs}\n          class={classes.value}\n          style={[mergedStyle.value, attrs.style as CSSProperties]}\n        >\n          {slots.default?.()}\n        </div>,\n      );\n  },\n});\n"
  },
  {
    "path": "components/grid/Row.tsx",
    "content": "import type { ExtractPropTypes, CSSProperties } from 'vue';\nimport { defineComponent, ref, onMounted, onBeforeUnmount, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { Breakpoint, ScreenMap } from '../_util/responsiveObserve';\nimport useResponsiveObserve, { responsiveArray } from '../_util/responsiveObserve';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport useProvideRow from './context';\nimport { useRowStyle } from './style';\nimport { someType } from '../_util/type';\n\nconst RowAligns = ['top', 'middle', 'bottom', 'stretch'] as const;\nconst RowJustify = [\n  'start',\n  'end',\n  'center',\n  'space-around',\n  'space-between',\n  'space-evenly',\n] as const;\n\ntype Responsive = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';\ntype ResponsiveLike<T> = {\n  [key in Responsive]?: T;\n};\n\ntype Gap = number | undefined;\nexport type Gutter = number | undefined | Partial<Record<Breakpoint, number>>;\n\ntype ResponsiveAligns = ResponsiveLike<(typeof RowAligns)[number]>;\ntype ResponsiveJustify = ResponsiveLike<(typeof RowJustify)[number]>;\n\nexport interface rowContextState {\n  gutter?: [number, number];\n}\n\nexport const rowProps = () => ({\n  align: someType<(typeof RowAligns)[number] | ResponsiveAligns>([String, Object]),\n  justify: someType<(typeof RowJustify)[number] | ResponsiveJustify>([String, Object]),\n  prefixCls: String,\n  gutter: someType<Gutter | [Gutter, Gutter]>([Number, Array, Object], 0),\n  wrap: { type: Boolean, default: undefined },\n});\n\nexport type RowProps = Partial<ExtractPropTypes<ReturnType<typeof rowProps>>>;\n\nconst ARow = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ARow',\n  inheritAttrs: false,\n  props: rowProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('row', props);\n    const [wrapSSR, hashId] = useRowStyle(prefixCls);\n\n    let token: number;\n\n    const responsiveObserve = useResponsiveObserve();\n\n    const screens = ref<ScreenMap>({\n      xs: true,\n      sm: true,\n      md: true,\n      lg: true,\n      xl: true,\n      xxl: true,\n    });\n\n    const curScreens = ref<ScreenMap>({\n      xs: false,\n      sm: false,\n      md: false,\n      lg: false,\n      xl: false,\n      xxl: false,\n    });\n\n    const mergePropsByScreen = (oriProp: 'align' | 'justify') => {\n      return computed(() => {\n        if (typeof props[oriProp] === 'string') {\n          return props[oriProp];\n        }\n        if (typeof props[oriProp] !== 'object') {\n          return '';\n        }\n\n        for (let i = 0; i < responsiveArray.length; i++) {\n          const breakpoint: Breakpoint = responsiveArray[i];\n          // if do not match, do nothing\n          if (!curScreens.value[breakpoint]) continue;\n          const curVal = props[oriProp][breakpoint];\n          if (curVal !== undefined) {\n            return curVal;\n          }\n        }\n        return '';\n      });\n    };\n\n    const mergeAlign = mergePropsByScreen('align');\n    const mergeJustify = mergePropsByScreen('justify');\n\n    const supportFlexGap = useFlexGapSupport();\n\n    onMounted(() => {\n      token = responsiveObserve.value.subscribe(screen => {\n        curScreens.value = screen;\n        const currentGutter = props.gutter || 0;\n        if (\n          (!Array.isArray(currentGutter) && typeof currentGutter === 'object') ||\n          (Array.isArray(currentGutter) &&\n            (typeof currentGutter[0] === 'object' || typeof currentGutter[1] === 'object'))\n        ) {\n          screens.value = screen;\n        }\n      });\n    });\n\n    onBeforeUnmount(() => {\n      responsiveObserve.value.unsubscribe(token);\n    });\n\n    const gutter = computed(() => {\n      const results: [Gap, Gap] = [undefined, undefined];\n      const { gutter = 0 } = props;\n      const normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n      normalizedGutter.forEach((g, index) => {\n        if (typeof g === 'object') {\n          for (let i = 0; i < responsiveArray.length; i++) {\n            const breakpoint: Breakpoint = responsiveArray[i];\n            if (screens.value[breakpoint] && g[breakpoint] !== undefined) {\n              results[index] = g[breakpoint] as number;\n              break;\n            }\n          }\n        } else {\n          results[index] = g;\n        }\n      });\n      return results;\n    });\n\n    useProvideRow({\n      gutter,\n      supportFlexGap,\n      wrap: computed(() => props.wrap),\n    });\n\n    const classes = computed(() =>\n      classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-no-wrap`]: props.wrap === false,\n          [`${prefixCls.value}-${mergeJustify.value}`]: mergeJustify.value,\n          [`${prefixCls.value}-${mergeAlign.value}`]: mergeAlign.value,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      ),\n    );\n\n    const rowStyle = computed(() => {\n      const gt = gutter.value;\n      // Add gutter related style\n      const style: CSSProperties = {};\n      const horizontalGutter = gt[0] != null && gt[0] > 0 ? `${gt[0] / -2}px` : undefined;\n      const verticalGutter = gt[1] != null && gt[1] > 0 ? `${gt[1] / -2}px` : undefined;\n\n      if (horizontalGutter) {\n        style.marginLeft = horizontalGutter;\n        style.marginRight = horizontalGutter;\n      }\n\n      if (supportFlexGap.value) {\n        // Set gap direct if flex gap support\n        style.rowGap = `${gt[1]}px`;\n      } else if (verticalGutter) {\n        style.marginTop = verticalGutter;\n        style.marginBottom = verticalGutter;\n      }\n      return style;\n    });\n\n    return () =>\n      wrapSSR(\n        <div\n          {...attrs}\n          class={classes.value}\n          style={{ ...rowStyle.value, ...(attrs.style as CSSProperties) }}\n        >\n          {slots.default?.()}\n        </div>,\n      );\n  },\n});\n\nexport default ARow;\n"
  },
  {
    "path": "components/grid/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/grid/demo/basic.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-24\">col</div>\n</div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-12\">col-12</div>\n  <div class=\"ant-col ant-col-12\">col-12</div>\n</div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-8\">col-8</div>\n  <div class=\"ant-col ant-col-8\">col-8</div>\n  <div class=\"ant-col ant-col-8\">col-8</div>\n</div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-6\">col-6</div>\n  <div class=\"ant-col ant-col-6\">col-6</div>\n  <div class=\"ant-col ant-col-6\">col-6</div>\n  <div class=\"ant-col ant-col-6\">col-6</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/flex.vue correctly 1`] = `\n<div id=\"components-grid-demo-flex\">\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element align left</span></div>\n  <div class=\"ant-row ant-row-start\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element align center</span></div>\n  <div class=\"ant-row ant-row-center\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element align right</span></div>\n  <div class=\"ant-row ant-row-end\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element monospaced arrangement</span></div>\n  <div class=\"ant-row ant-row-space-between\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element align full</span></div>\n  <div class=\"ant-row ant-row-space-around\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">sub-element align full</span></div>\n  <div class=\"ant-row ant-row-space-evenly\">\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n    <div class=\"ant-col ant-col-4\">col-4</div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/flex-align.vue correctly 1`] = `\n<div id=\"components-grid-demo-flex-align\">\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Align Top</span></div>\n  <div class=\"ant-row ant-row-center ant-row-top\">\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-100\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-50\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-120\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-80\">col-4</p>\n    </div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Align Middle</span></div>\n  <div class=\"ant-row ant-row-space-around ant-row-middle\">\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-100\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-50\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-120\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-80\">col-4</p>\n    </div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Align Bottom</span></div>\n  <div class=\"ant-row ant-row-space-between ant-row-bottom\">\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-100\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-50\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-120\">col-4</p>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <p class=\"height-80\">col-4</p>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/flex-order.vue correctly 1`] = `\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Normal</span></div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-6 ant-col-order-4\">1 col-order-4</div>\n  <div class=\"ant-col ant-col-6 ant-col-order-3\">2 col-order-3</div>\n  <div class=\"ant-col ant-col-6 ant-col-order-2\">3 col-order-2</div>\n  <div class=\"ant-col ant-col-6 ant-col-order-1\">4 col-order-1</div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Responsive</span></div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-6 ant-col-xs-order-1 ant-col-sm-order-2 ant-col-md-order-3 ant-col-lg-order-4\"> 1 col-order-responsive </div>\n  <div class=\"ant-col ant-col-6 ant-col-xs-order-2 ant-col-sm-order-1 ant-col-md-order-4 ant-col-lg-order-3\"> 2 col-order-responsive </div>\n  <div class=\"ant-col ant-col-6 ant-col-xs-order-3 ant-col-sm-order-4 ant-col-md-order-2 ant-col-lg-order-2\"> 3 col-order-responsive </div>\n  <div class=\"ant-col ant-col-6 ant-col-xs-order-4 ant-col-sm-order-3 ant-col-md-order-1 ant-col-lg-order-1\"> 4 col-order-responsive </div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/flex-stretch.vue correctly 1`] = `\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Percentage columns</span></div>\n<div class=\"ant-row\">\n  <div class=\"ant-col\" style=\"flex: 2 2 auto;\">2 / 5</div>\n  <div class=\"ant-col\" style=\"flex: 3 3 auto;\">3 / 5</div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Fill rest</span></div>\n<div class=\"ant-row\">\n  <div class=\"ant-col\" style=\"flex: 0 0 100px;\">100px</div>\n  <div class=\"ant-col\" style=\"flex-basis: auto;\">auto</div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Raw flex style</span></div>\n<div class=\"ant-row\">\n  <div class=\"ant-col\" style=\"flex: 1 1 200px;\">1 1 200px</div>\n  <div class=\"ant-col\" style=\"flex: 0 1 300px;\">0 1 300px</div>\n</div>\n<div class=\"ant-row ant-row-no-wrap\">\n  <div class=\"ant-col\" style=\"flex: 0 0 auto; min-width: 0;\">\n    <div style=\"padding: 0px 16px;\">none</div>\n  </div>\n  <div class=\"ant-col\" style=\"flex-basis: auto; min-width: 0;\">auto with no-wrap</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/gutter.vue correctly 1`] = `\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Horizontal</span></div>\n<div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Responsive</span></div>\n<div class=\"ant-row\" style=\"margin-left: -16px; margin-right: -16px;\">\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 16px; padding-right: 16px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 16px; padding-right: 16px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 16px; padding-right: 16px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding-left: 16px; padding-right: 16px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Vertical</span></div>\n<div class=\"ant-row\" style=\"margin: -12px -8px -12px -8px;\">\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n  <div class=\"ant-col ant-col-6 gutter-row\" style=\"padding: 12px 8px 12px 8px;\">\n    <div class=\"gutter-box\">col-6</div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/offset.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-8\">col-8</div>\n  <div class=\"ant-col ant-col-8 ant-col-offset-8\">col-8</div>\n</div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-6 ant-col-offset-6\">col-6 col-offset-6</div>\n  <div class=\"ant-col ant-col-6 ant-col-offset-6\">col-6 col-offset-6</div>\n</div>\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-12 ant-col-offset-6\">col-12 col-offset-6</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/playfround.vue correctly 1`] = `\n<div id=\"components-grid-demo-playground\">\n  <div style=\"margin-bottom: 16px;\"><span style=\"margin-right: 6px;\">Horizontal Gutter (px):</span>\n    <div style=\"width: 50%;\">\n      <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n        <div class=\"ant-slider-rail\"></div>\n        <div class=\"ant-slider-track\" style=\"left: 0%; width: 20%;\"></div>\n        <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 20%;\"></span><span class=\"ant-slider-dot\" style=\"left: 40%;\"></span><span class=\"ant-slider-dot\" style=\"left: 60%;\"></span><span class=\"ant-slider-dot\" style=\"left: 80%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n        <!---->\n        <div class=\"ant-slider-handle\" style=\"left: 20%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"5\" aria-valuenow=\"1\" aria-disabled=\"false\"></div>\n        <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">8</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 20%;\">16</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 40%;\">24</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 60%;\">32</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 80%;\">40</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%;\">48</span></div>\n      </div>\n    </div><span style=\"margin-right: 6px;\">Vertical Gutter (px):</span>\n    <div style=\"width: 50%;\">\n      <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n        <div class=\"ant-slider-rail\"></div>\n        <div class=\"ant-slider-track\" style=\"left: 0%; width: 20%;\"></div>\n        <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 20%;\"></span><span class=\"ant-slider-dot\" style=\"left: 40%;\"></span><span class=\"ant-slider-dot\" style=\"left: 60%;\"></span><span class=\"ant-slider-dot\" style=\"left: 80%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n        <!---->\n        <div class=\"ant-slider-handle\" style=\"left: 20%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"5\" aria-valuenow=\"1\" aria-disabled=\"false\"></div>\n        <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">8</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 20%;\">16</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 40%;\">24</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 60%;\">32</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 80%;\">40</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%;\">48</span></div>\n      </div>\n    </div><span style=\"margin-right: 6px;\">Column Count:</span>\n    <div style=\"width: 50%;\">\n      <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n        <div class=\"ant-slider-rail\"></div>\n        <div class=\"ant-slider-track\" style=\"left: 0%; width: 40%;\"></div>\n        <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 20%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 40%;\"></span><span class=\"ant-slider-dot\" style=\"left: 60%;\"></span><span class=\"ant-slider-dot\" style=\"left: 80%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n        <!---->\n        <div class=\"ant-slider-handle\" style=\"left: 40%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"5\" aria-valuenow=\"2\" aria-disabled=\"false\"></div>\n        <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">2</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 20%;\">3</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 40%;\">4</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 60%;\">6</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 80%;\">8</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%;\">12</span></div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-row\" style=\"margin: -8px -8px -8px -8px;\">\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n  </div> Another Row: <div class=\"ant-row\" style=\"margin: -8px -8px -8px -8px;\">\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n    <div class=\"ant-col ant-col-6\" style=\"padding: 8px 8px 8px 8px;\">\n      <div>Column</div>\n    </div>\n  </div><pre>&lt;a-row :gutter=\"[16,16]\"&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n&lt;/a-row&gt;</pre><br><pre>&lt;a-row :gutter=\"[16,16]\"&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n  &lt;a-col :span=\"6\"/&gt;\n&lt;/a-row&gt;</pre>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/responsive.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-xs-2 ant-col-sm-4 ant-col-md-6 ant-col-lg-8 ant-col-xl-10\">Col</div>\n  <div class=\"ant-col ant-col-xs-20 ant-col-sm-16 ant-col-md-12 ant-col-lg-8 ant-col-xl-4\">Col</div>\n  <div class=\"ant-col ant-col-xs-2 ant-col-sm-4 ant-col-md-6 ant-col-lg-8 ant-col-xl-10\">Col</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/responsive-more.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-xs-5 ant-col-xs-offset-1 ant-col-lg-6 ant-col-lg-offset-2\">Col</div>\n  <div class=\"ant-col ant-col-xs-11 ant-col-xs-offset-1 ant-col-lg-6 ant-col-lg-offset-2\">Col</div>\n  <div class=\"ant-col ant-col-xs-5 ant-col-xs-offset-1 ant-col-lg-6 ant-col-lg-offset-2\">Col</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/sort.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-18 ant-col-push-6\">col-18 col-push-6</div>\n  <div class=\"ant-col ant-col-6 ant-col-pull-18\">col-6 col-pull-18</div>\n</div>\n`;\n\nexports[`renders ./components/grid/demo/use-breakpoint.vue correctly 1`] = `\" Current break point:\"`;\n"
  },
  {
    "path": "components/grid/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Grid renders wrapped Col correctly 1`] = `\n<div class=\"ant-row\" style=\"margin-left: -10px; margin-right: -10px;\">\n  <div>\n    <div class=\"ant-col ant-col-12\" style=\"padding-left: 10px; padding-right: 10px;\">\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 10px; padding-right: 10px;\">\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Grid should render Col 1`] = `\n<div class=\"ant-col ant-col-2\">\n  <!---->\n</div>\n`;\n\nexports[`Grid should render Row 1`] = `\n<div class=\"ant-row\">\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/grid/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('grid');\n"
  },
  {
    "path": "components/grid/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { Col, Row } from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Grid', () => {\n  mountTest(Row);\n  mountTest(Col);\n  it('should render Col', () => {\n    const wrapper = mount(Col, {\n      props: {\n        span: 2,\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  it('should render Row', () => {\n    const wrapper = mount(Row);\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('renders wrapped Col correctly', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Row gutter={20}>\n            <div>\n              <Col span={12} />\n            </div>\n            <Col span={12} />\n          </Row>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/grid/context.ts",
    "content": "import { computed, inject, provide } from 'vue';\nimport type { Ref, InjectionKey, ComputedRef } from 'vue';\n\nexport interface RowContext {\n  gutter: ComputedRef<[number, number]>;\n  wrap: ComputedRef<boolean>;\n  supportFlexGap: Ref<boolean>;\n}\n\nexport const RowContextKey: InjectionKey<RowContext> = Symbol('rowContextKey');\n\nconst useProvideRow = (state: RowContext) => {\n  provide(RowContextKey, state);\n};\n\nconst useInjectRow = () => {\n  return inject(RowContextKey, {\n    gutter: computed(() => undefined),\n    wrap: computed(() => undefined),\n    supportFlexGap: computed(() => undefined),\n  });\n};\n\nexport { useInjectRow, useProvideRow };\nexport default useProvideRow;\n"
  },
  {
    "path": "components/grid/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基础栅格\n  en-US: Basic Grid\n---\n\n## zh-CN\n\n从堆叠到水平排列。\n\n使用单一的一组 `Row` 和 `Col` 栅格组件，就可以创建一个基本的栅格系统，所有列（Col）必须放在 `Row` 内。\n\n## en-US\n\nFrom the stack to the horizontal arrangement.\n\nYou can create a basic grid system by using a single set of `Row` and `Col` grid assembly, all of the columns (Col) must be placed in `Row`.\n\n</docs>\n\n<template>\n  <a-row>\n    <a-col :span=\"24\">col</a-col>\n  </a-row>\n  <a-row>\n    <a-col :span=\"12\">col-12</a-col>\n    <a-col :span=\"12\">col-12</a-col>\n  </a-row>\n  <a-row>\n    <a-col :span=\"8\">col-8</a-col>\n    <a-col :span=\"8\">col-8</a-col>\n    <a-col :span=\"8\">col-8</a-col>\n  </a-row>\n  <a-row>\n    <a-col :span=\"6\">col-6</a-col>\n    <a-col :span=\"6\">col-6</a-col>\n    <a-col :span=\"6\">col-6</a-col>\n    <a-col :span=\"6\">col-6</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/flex-align.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 对齐\n  en-US: Alignment\n---\n\n## zh-CN\n\n子元素垂直对齐。\n\n## en-US\n\nChild elements vertically aligned.\n\n</docs>\n\n<template>\n  <div id=\"components-grid-demo-flex-align\">\n    <a-divider orientation=\"left\">Align Top</a-divider>\n    <a-row justify=\"center\" align=\"top\">\n      <a-col :span=\"4\">\n        <p class=\"height-100\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-50\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-120\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-80\">col-4</p>\n      </a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">Align Middle</a-divider>\n    <a-row justify=\"space-around\" align=\"middle\">\n      <a-col :span=\"4\">\n        <p class=\"height-100\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-50\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-120\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-80\">col-4</p>\n      </a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">Align Bottom</a-divider>\n    <a-row justify=\"space-between\" align=\"bottom\">\n      <a-col :span=\"4\">\n        <p class=\"height-100\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-50\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-120\">col-4</p>\n      </a-col>\n      <a-col :span=\"4\">\n        <p class=\"height-80\">col-4</p>\n      </a-col>\n    </a-row>\n  </div>\n</template>\n\n<style lang=\"less\" scoped>\n:deep(#components-grid-demo-flex-align) [class~='ant-row'] {\n  background: rgba(128, 128, 128, 0.08);\n}\n</style>\n"
  },
  {
    "path": "components/grid/demo/flex-order.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 排序\n  en-US: Order\n---\n\n## zh-CN\n\n通过 `order` 来改变元素的排序。\n\n## en-US\n\nTo change the element sort by `order`.\n\n</docs>\n\n<template>\n  <a-divider orientation=\"left\">Normal</a-divider>\n  <a-row>\n    <a-col :span=\"6\" :order=\"4\">1 col-order-4</a-col>\n    <a-col :span=\"6\" :order=\"3\">2 col-order-3</a-col>\n    <a-col :span=\"6\" :order=\"2\">3 col-order-2</a-col>\n    <a-col :span=\"6\" :order=\"1\">4 col-order-1</a-col>\n  </a-row>\n  <a-divider orientation=\"left\">Responsive</a-divider>\n  <a-row>\n    <a-col :span=\"6\" :xs=\"{ order: 1 }\" :sm=\"{ order: 2 }\" :md=\"{ order: 3 }\" :lg=\"{ order: 4 }\">\n      1 col-order-responsive\n    </a-col>\n    <a-col :span=\"6\" :xs=\"{ order: 2 }\" :sm=\"{ order: 1 }\" :md=\"{ order: 4 }\" :lg=\"{ order: 3 }\">\n      2 col-order-responsive\n    </a-col>\n    <a-col :span=\"6\" :xs=\"{ order: 3 }\" :sm=\"{ order: 4 }\" :md=\"{ order: 2 }\" :lg=\"{ order: 2 }\">\n      3 col-order-responsive\n    </a-col>\n    <a-col :span=\"6\" :xs=\"{ order: 4 }\" :sm=\"{ order: 3 }\" :md=\"{ order: 1 }\" :lg=\"{ order: 1 }\">\n      4 col-order-responsive\n    </a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/flex-stretch.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: Flex 填充\n  en-US: Flex Stretch\n---\n\n## zh-CN\n\nCol 提供 `flex` 属性以支持填充。\n\n## en-US\n\nCol provides `flex` prop to support fill rest.\n\n</docs>\n\n<template>\n  <a-divider orientation=\"left\">Percentage columns</a-divider>\n  <a-row>\n    <a-col :flex=\"2\">2 / 5</a-col>\n    <a-col :flex=\"3\">3 / 5</a-col>\n  </a-row>\n  <a-divider orientation=\"left\">Fill rest</a-divider>\n  <a-row>\n    <a-col flex=\"100px\">100px</a-col>\n    <a-col flex=\"auto\">auto</a-col>\n  </a-row>\n  <a-divider orientation=\"left\">Raw flex style</a-divider>\n  <a-row>\n    <a-col flex=\"1 1 200px\">1 1 200px</a-col>\n    <a-col flex=\"0 1 300px\">0 1 300px</a-col>\n  </a-row>\n  <a-row :wrap=\"false\">\n    <a-col flex=\"none\">\n      <div style=\"padding: 0 16px\">none</div>\n    </a-col>\n    <a-col flex=\"auto\">auto with no-wrap</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/flex.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 排版\n  en-US: Typesetting\n---\n\n## zh-CN\n\n布局基础。\n\n子元素根据不同的值 `start`,`center`,`end`,`space-between`,`space-around`，分别定义其在父节点里面的排版方式。\n\n## en-US\n\nChild elements depending on the value of the `start`,`center`, `end`,`space-between`, `space-around`, which are defined in its parent node typesetting mode.\n\n</docs>\n\n<template>\n  <div id=\"components-grid-demo-flex\">\n    <a-divider orientation=\"left\">sub-element align left</a-divider>\n    <a-row justify=\"start\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">sub-element align center</a-divider>\n    <a-row justify=\"center\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">sub-element align right</a-divider>\n    <a-row justify=\"end\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">sub-element monospaced arrangement</a-divider>\n    <a-row justify=\"space-between\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">sub-element align full</a-divider>\n    <a-row justify=\"space-around\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n\n    <a-divider orientation=\"left\">sub-element align full</a-divider>\n    <a-row justify=\"space-evenly\">\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n      <a-col :span=\"4\">col-4</a-col>\n    </a-row>\n  </div>\n</template>\n\n<style lang=\"less\" scoped>\n:deep(#components-grid-demo-flex) [class~='ant-row'] {\n  background: rgba(128, 128, 128, 0.08);\n}\n</style>\n"
  },
  {
    "path": "components/grid/demo/gutter.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 区块间隔\n  en-US: Grid Gutter\n---\n\n## zh-CN\n\n栅格常常需要和间隔进行配合，你可以使用 `Row` 的 `gutter` 属性，我们推荐使用 `(16+8n)px` 作为栅格间隔(n 是自然数)。\n\n如果要支持响应式，可以写成 `{ xs: 8, sm: 16, md: 24, lg: 32 }`。\n\n如果需要垂直间距，可以写成数组形式 `[水平间距, 垂直间距]` `[16, { xs: 8, sm: 16, md: 24, lg: 32 }]`。\n\n> 数组形式垂直间距在 `1.5.0` 之后支持。\n\n## en-US\n\nYou can use the `gutter` property of `Row` as grid spacing, we recommend set it to `(16 + 8n) px` (`n` stands for natural number).\n\nYou can set it to a object like `{ xs: 8, sm: 16, md: 24, lg: 32 }` for responsive design.\n\nYou can use an array to set vertical spacing, `[horizontal, vertical]` `[16, { xs: 8, sm: 16, md: 24, lg: 32 }]`.\n\n> vertical gutter was supported after `1.5.0`.\n\n</docs>\n\n<template>\n  <a-divider orientation=\"left\">Horizontal</a-divider>\n  <a-row :gutter=\"16\">\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n  </a-row>\n  <a-divider orientation=\"left\">Responsive</a-divider>\n  <a-row :gutter=\"{ xs: 8, sm: 16, md: 24, lg: 32 }\">\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n  </a-row>\n  <a-divider orientation=\"left\">Vertical</a-divider>\n  <a-row :gutter=\"[16, 24]\">\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n    <a-col class=\"gutter-row\" :span=\"6\">\n      <div class=\"gutter-box\">col-6</div>\n    </a-col>\n  </a-row>\n</template>\n<style scoped>\n.gutter-box {\n  background: #0092ff;\n  padding: 8px 0;\n}\n</style>\n```\n"
  },
  {
    "path": "components/grid/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n    <gutter />\n    <offset />\n    <sort />\n    <flex />\n    <flex-align />\n    <flex-order />\n    <flex-stretch />\n    <responsive />\n    <ResponsiveMore />\n    <playfround />\n    <UseBreakpoint />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Basic from './basic.vue';\nimport FlexAlign from './flex-align.vue';\nimport FlexOrder from './flex-order.vue';\nimport FlexStretch from './flex-stretch.vue';\nimport Flex from './flex.vue';\nimport Gutter from './gutter.vue';\nimport Offset from './offset.vue';\nimport ResponsiveMore from './responsive-more.vue';\nimport Responsive from './responsive.vue';\nimport Sort from './sort.vue';\nimport Playfround from './playfround.vue';\nimport UseBreakpoint from './use-breakpoint.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    FlexAlign,\n    FlexOrder,\n    FlexStretch,\n    Flex,\n    Gutter,\n    Offset,\n    ResponsiveMore,\n    Responsive,\n    Sort,\n    Playfround,\n    UseBreakpoint,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/grid/demo/offset.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 左右偏移\n  en-US: Column offset\n---\n\n## zh-CN\n\n列偏移。\n\n使用 `offset` 可以将列向右侧偏。例如，`offset={4}` 将元素向右侧偏移了 4 个列（column）的宽度。\n\n## en-US\n\n`offset` can set the column to the right side. For example, using `offset = {4}` can set the element shifted to the right four columns width.\n\n</docs>\n\n<template>\n  <a-row>\n    <a-col :span=\"8\">col-8</a-col>\n    <a-col :span=\"8\" :offset=\"8\">col-8</a-col>\n  </a-row>\n  <a-row>\n    <a-col :span=\"6\" :offset=\"6\">col-6 col-offset-6</a-col>\n    <a-col :span=\"6\" :offset=\"6\">col-6 col-offset-6</a-col>\n  </a-row>\n  <a-row>\n    <a-col :span=\"12\" :offset=\"6\">col-12 col-offset-6</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/playfround.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 栅格配置器\n  en-US: Playground\n---\n\n## zh-CN\n\n可以简单配置几种等分栅格和间距。\n\n## en-US\n\nA simple playground for column count and gutter.\n\n</docs>\n\n<template>\n  <div id=\"components-grid-demo-playground\">\n    <div style=\"margin-bottom: 16px\">\n      <span style=\"margin-right: 6px\">Horizontal Gutter (px):</span>\n      <div style=\"width: 50%\">\n        <a-slider\n          v-model:value=\"state.gutterKey\"\n          :min=\"0\"\n          :max=\"Object.keys(state.gutters).length - 1\"\n          :marks=\"state.gutters\"\n          :step=\"null\"\n        />\n      </div>\n      <span style=\"margin-right: 6px\">Vertical Gutter (px):</span>\n      <div style=\"width: 50%\">\n        <a-slider\n          v-model:value=\"state.vgutterKey\"\n          :min=\"0\"\n          :max=\"Object.keys(state.vgutters).length - 1\"\n          :marks=\"state.vgutters\"\n          :step=\"null\"\n        />\n      </div>\n      <span style=\"margin-right: 6px\">Column Count:</span>\n      <div style=\"width: 50%\">\n        <a-slider\n          v-model:value=\"state.colCountKey\"\n          :min=\"0\"\n          :max=\"Object.keys(state.colCounts).length - 1\"\n          :marks=\"state.colCounts\"\n          :step=\"null\"\n        />\n      </div>\n    </div>\n    <a-row :gutter=\"[state.gutters[state.gutterKey], state.vgutters[state.vgutterKey]]\">\n      <a-col\n        v-for=\"item in state.colCounts[state.colCountKey]\"\n        :key=\"item.toString()\"\n        :span=\"24 / state.colCounts[state.colCountKey]\"\n      >\n        <div>Column</div>\n      </a-col>\n      <a-col\n        v-for=\"item in state.colCounts[state.colCountKey]\"\n        :key=\"item.toString()\"\n        :span=\"24 / state.colCounts[state.colCountKey]\"\n      >\n        <div>Column</div>\n      </a-col>\n    </a-row>\n    Another Row:\n    <a-row :gutter=\"[state.gutters[state.gutterKey], state.vgutters[state.vgutterKey]]\">\n      <a-col\n        v-for=\"item in state.colCounts[state.colCountKey]\"\n        :key=\"item.toString()\"\n        :span=\"24 / state.colCounts[state.colCountKey]\"\n      >\n        <div>Column</div>\n      </a-col>\n    </a-row>\n    <pre>{{ rowColHtml }}</pre>\n    <br />\n    <pre>{{ rowColHtml }}</pre>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive } from 'vue';\nconst state = reactive<{\n  gutterKey: number;\n  vgutterKey: number;\n  colCountKey: number;\n  gutters: { [key: number]: number };\n  colCounts: { [key: number]: number };\n  vgutters: { [key: number]: number };\n}>({\n  gutterKey: 1,\n  vgutterKey: 1,\n  colCountKey: 2,\n  gutters: {},\n  colCounts: {},\n  vgutters: {},\n});\n[8, 16, 24, 32, 40, 48].forEach((value: number, i: number) => {\n  state.gutters[i] = value;\n});\n[8, 16, 24, 32, 40, 48].forEach((value, i) => {\n  state.vgutters[i] = value;\n});\n[2, 3, 4, 6, 8, 12].forEach((value, i) => {\n  state.colCounts[i] = value;\n});\nconst rowColHtml = computed(() => {\n  const colCount = state.colCounts[state.colCountKey];\n  const getter = [state.gutters[state.gutterKey], state.vgutters[state.vgutterKey]];\n  let colCode = '<a-row :gutter=\"[' + getter + ']\">\\n';\n  for (let i = 0; i < colCount; i++) {\n    const spanNum = 24 / colCount;\n    colCode += '  <a-col :span=\"' + spanNum + '\"/>\\n';\n  }\n  colCode += '</a-row>';\n  return colCode;\n});\n</script>\n<style scoped>\n:deep(#components-grid-demo-playground) [class~='ant-col'] {\n  background: transparent;\n  border: 0;\n}\n:deep(#components-grid-demo-playground) [class~='ant-col'] > div {\n  height: 120px;\n  font-size: 14px;\n  line-height: 120px;\n  background: #0092ff;\n  border-radius: 4px;\n}\n:deep(#components-grid-demo-playground) pre {\n  padding: 8px 16px;\n  font-size: 13px;\n  background: #f9f9f9;\n  border-radius: 6px;\n}\n:deep(#components-grid-demo-playground) pre.demo-code {\n  direction: ltr;\n}\n:deep(#components-grid-demo-playground) .ant-col {\n  padding: 0;\n}\n</style>\n"
  },
  {
    "path": "components/grid/demo/responsive-more.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 其他属性的响应式\n  en-US: More responsive\n---\n\n## zh-CN\n\n`span` `pull` `push` `offset` `order` 属性可以通过内嵌到 `xs` `sm` `md` `lg` `xl` `xxl` 属性中来使用。\n\n其中 `:xs=\"6\"` 相当于 `:xs=\"{ span: 6 }\"`。\n\n## en-US\n\n`span` `pull` `push` `offset` `order` property can be embedded into `xs` `sm` `md` `lg` `xl` `xxl` properties to use, where `:xs=\"6\"` is equivalent to `:xs=\"{ span: 6 }\"`.\n</docs>\n\n<template>\n  <a-row>\n    <a-col :xs=\"{ span: 5, offset: 1 }\" :lg=\"{ span: 6, offset: 2 }\">Col</a-col>\n    <a-col :xs=\"{ span: 11, offset: 1 }\" :lg=\"{ span: 6, offset: 2 }\">Col</a-col>\n    <a-col :xs=\"{ span: 5, offset: 1 }\" :lg=\"{ span: 6, offset: 2 }\">Col</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/responsive.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 响应式布局\n  en-US: Responsive\n---\n\n## zh-CN\n\n参照 Bootstrap 的 [响应式设计](http://getbootstrap.com/css/#grid-media-queries)，预设六个响应尺寸：`xs` `sm` `md` `lg` `xl` `xxl`。\n\n## en-US\n\nReferring to the Bootstrap [responsive design](http://getbootstrap.com/css/#grid-media-queries), here preset six dimensions: `xs` `sm` `md` `lg` `xl` `xxl`.\n\n</docs>\n\n<template>\n  <a-row>\n    <a-col :xs=\"2\" :sm=\"4\" :md=\"6\" :lg=\"8\" :xl=\"10\">Col</a-col>\n    <a-col :xs=\"20\" :sm=\"16\" :md=\"12\" :lg=\"8\" :xl=\"4\">Col</a-col>\n    <a-col :xs=\"2\" :sm=\"4\" :md=\"6\" :lg=\"8\" :xl=\"10\">Col</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/sort.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 栅格排序\n  en-US: Grid sort\n---\n\n## zh-CN\n\n列排序。\n\n通过使用 `push` 和 `pull` 类就可以很容易的改变列（column）的顺序。\n\n## en-US\n\nBy using `push` and `pull` class you can easily change column order.\n\n</docs>\n\n<template>\n  <a-row>\n    <a-col :span=\"18\" :push=\"6\">col-18 col-push-6</a-col>\n    <a-col :span=\"6\" :pull=\"18\">col-6 col-pull-18</a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/grid/demo/use-breakpoint.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: useBreakpoint Hook\n  en-US: useBreakpoint Hook\n---\n\n## zh-CN\n\n使用 `useBreakpoint` 个性化布局。\n\n## en-US\n\nUse `useBreakpoint` Hook provide personalized layout.\n\n</docs>\n\n<template>\n  Current break point:\n  <template v-for=\"(value, key) in screens\">\n    <a-tag v-if=\"!!value\" :key=\"key\" color=\"blue\">\n      {{ key }}\n    </a-tag>\n  </template>\n</template>\n<script lang=\"ts\" setup>\nimport { Grid } from 'ant-design-vue';\n\nconst useBreakpoint = Grid.useBreakpoint;\nconst screens = useBreakpoint();\n</script>\n"
  },
  {
    "path": "components/grid/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Layout\ncols: 1\ntitle: Grid\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*mfJeS6cqZrEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DLUwQ4B2_zQAAAAAAAAAAAAADrJ8AQ/original\n---\n\n24 Grids System.\n\n## Design concept\n\n<div class=\"grid-demo\">\n  <img src=\"https://gw.alipayobjects.com/zos/bmw-prod/9189c9ef-c601-40dc-9960-c11dbb681888.svg\" alt=\"grid design\" />\n</div>\n\nIn most business situations, Ant Design Vue needs to solve a lot of information storage problems within the design area, so based on 12 Grids System, we divided the design area into 24 sections.\n\nWe name the divided area 'box'. We suggest four boxes for horizontal arrangement at most, one at least. Boxes are proportional to the entire screen as shown in the picture above. To ensure a high level of visual comfort, we customize the typography inside of the box based on the box unit.\n\n## Outline\n\nIn the grid system, we define the frame outside the information area based on \\`row\\` and \\`column\\`, to ensure that every area can have stable arrangement.\n\nFollowing is a brief look at how it works:\n\n- Establish a set of \\`column\\` in the horizontal space defined by \\`row\\` (abbreviated col)\n- Your content elements should be placed directly in the \\`col\\`, and only \\`col\\` should be placed directly in \\`row\\`\n- The column grid system is a value of 1-24 to represent its range spans. For example, three columns of equal width can be created by \\`<a-col :span=\"8\" />\\`.\n- If the sum of \\`col\\` spans in a \\`row\\` are more than 24, then the overflowing \\`col\\` as a whole will start a new line arrangement.\n\n## Flex layout\n\nOur grid systems support Flex layout to allow the elements within the parent to be aligned horizontally - left, center, right, wide arrangement, and decentralized arrangement. The Grid system also supports vertical alignment - top aligned, vertically centered, bottom-aligned. You can also define the order of elements by using \\`order\\`. Flex layout uses a 24 grid layout to define the width of each \"box\", but does not rigidly adhere to the grid layout.\n\n## API\n\n### Row\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| align | Vertical alignment | `top` \\| `middle` \\| `bottom` \\| `stretch` \\| `{[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'top' | 'middle' | 'bottom' | 'stretch'}` | `top` | object: 4.0 |\n| gutter | Spacing between grids, could be a number or a object like `{ xs: 8, sm: 16, md: 24}`. or you can use array to make horizontal and vertical spacing work at the same time `[horizontal, vertical]` (supported after `1.5.0`) | number/object/array | 0 | - |\n| justify | Horizontal arrangement | `start` \\| `end` \\| `center` \\| `space-around` \\| `space-between` \\| `space-evenly` \\| `{[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly'}` | `start` | object: 4.0 |\n| wrap | Auto wrap line | boolean | false | - |\n\n### Col\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| flex | the layout fill of flex | string\\|number | - |\n| offset | the number of cells to offset Col from the left | number | 0 |\n| order | raster order, used in `flex` layout mode | number | 0 |\n| pull | the number of cells that raster is moved to the left | number | 0 |\n| push | the number of cells that raster is moved to the right | number | 0 |\n| span | raster number of cells to occupy, 0 corresponds to `display: none` | number | none |\n| xs | `<576px` and also default setting, could be a `span` value or an object containing above props | number\\|object | - |\n| sm | `≥576px`, could be a `span` value or an object containing above props | number\\|object | - |\n| md | `≥768px`, could be a `span` value or an object containing above props | number\\|object | - |\n| lg | `≥992px`, could be a `span` value or an object containing above props | number\\|object | - |\n| xl | `≥1200px`, could be a `span` value or an object containing above props | number\\|object | - |\n| xxl | `≥1600px`, could be a `span` value or an object containing above props | number\\|object | - |\n\nYou can modify the breakpoints values using by modifying `screen[XS|SM|MD|LG|XL|XXL]` with [theme customization](/docs/vue/customize-theme) (since 4.0.0, [sandbox demo](https://codesandbox.io/s/usebreakpoint-hook-ant-design-vue-4-0-0-beta-4-forked-n2k1sy?file=/src/demo.vue)).\n\nThe breakpoints of responsive grid follow [BootStrap 4 media queries rules](https://getbootstrap.com/docs/4.0/layout/overview/#responsive-breakpoints)(not including `occasionally part`).\n"
  },
  {
    "path": "components/grid/index.ts",
    "content": "import Row from './Row';\nimport Col from './Col';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\n\nexport type { RowProps } from './Row';\n\nexport type { ColProps, ColSize } from './Col';\n\nexport { Row, Col };\n\nexport default { useBreakpoint };\n"
  },
  {
    "path": "components/grid/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 栅格\ntype: 布局\ncols: 1\ntitle: Grid\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*mfJeS6cqZrEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DLUwQ4B2_zQAAAAAAAAAAAAADrJ8AQ/original\n---\n\n24 栅格系统。\n\n## 设计理念\n\n<div class=\"grid-demo\">\n  <img src=\"https://gw.alipayobjects.com/zos/bmw-prod/9189c9ef-c601-40dc-9960-c11dbb681888.svg\" alt=\"grid design\" />\n</div>\n\n在多数业务情况下，Ant Design Vue 需要在设计区域内解决大量信息收纳的问题，因此在 12 栅格系统的基础上，我们将整个设计建议区域按照 24 等分的原则进行划分。划分之后的信息区块我们称之为『盒子』。建议横向排列的盒子数量最多四个，最少一个。『盒子』在整个屏幕上占比见上图。设计部分基于盒子的单位定制盒子内部的排版规则，以保证视觉层面的舒适感。\n\n## 概述\n\n布局的栅格化系统，我们是基于行（row）和列（col）来定义信息区块的外部框架，以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理：\n\n- 通过\\`row\\`在水平方向建立一组\\`column\\`（简写 col）\n- 你的内容应当放置于\\`col\\`内，并且，只有\\`col\\`可以作为\\`row\\`的直接元素\n- 栅格系统中的列是指 1 到 24 的值来表示其跨越的范围。例如，三个等宽的列可以使用 \\`<a-col :span=\"8\" />\\` 来创建\n- 如果一个\\`row\\`中的\\`col\\`总和超过 24，那么多余的\\`col\\`会作为一个整体另起一行排列\n\n## Flex 布局\n\n我们的栅格化系统支持 Flex 布局，允许子元素在父节点内的水平对齐方式 - 居左、居中、居右、等宽排列、分散排列。子元素与子元素之间，支持顶部对齐、垂直居中对齐、底部对齐的方式。同时，支持使用 order 来定义元素的排列顺序。 Flex 布局是基于 24 栅格来定义每一个『盒子』的宽度，但不拘泥于栅格。\n\n## API\n\n### Row\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| align | 垂直对齐方式 | `top` \\| `middle` \\| `bottom` \\| `stretch` \\| `{[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'top' | 'middle' | 'bottom' | 'stretch'}` | `top` | object: 4.0 |\n| gutter | 栅格间隔，可以写成像素值或支持响应式的对象写法来设置水平间隔 `{ xs: 8, sm: 16, md: 24}`。或者使用数组形式同时设置 `[水平间距, 垂直间距]`（`1.5.0 后支持`）。 | number \\| object \\| array | 0 | - |\n| justify | 水平排列方式 | `start` \\| `end` \\| `center` \\| `space-around` \\| `space-between` \\| `space-evenly` \\| `{[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly'}` | `start` | object: 4.0 |\n| wrap | 是否自动换行 | boolean | false | - |\n\n### Col\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| flex | flex 布局填充 | string\\|number | - |  |\n| offset | 栅格左侧的间隔格数，间隔内不可以有栅格 | number | 0 |  |\n| order | 栅格顺序，`flex` 布局模式下有效 | number | 0 |  |\n| pull | 栅格向左移动格数 | number | 0 |  |\n| push | 栅格向右移动格数 | number | 0 |  |\n| span | 栅格占位格数，为 0 时相当于 `display: none` | number | - |  |\n| xs | `<576px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n| sm | `≥576px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n| md | `≥768px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n| lg | `≥992px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n| xl | `≥1200px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n| xxl | `≥1600px` 响应式栅格，可为栅格数或一个包含其他属性的对象 | number\\|object | - |  |\n\n您可以使用 [主题定制](/docs/vue/customize-theme-cn) 修改 `screen[XS|SM|MD|LG|XL|XXL]` 来修改断点值（自 4.0.0 起，[codesandbox demo](https://codesandbox.io/s/usebreakpoint-hook-ant-design-vue-4-0-0-beta-4-forked-n2k1sy?file=/src/demo.vue)）。\n\n响应式栅格的断点扩展自 [BootStrap 4 的规则](https://getbootstrap.com/docs/4.0/layout/overview/#responsive-breakpoints)（不包含链接里 `occasionally` 的部分)。\n"
  },
  {
    "path": "components/grid/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\ninterface GridRowToken extends FullToken<'Grid'> {}\n\ninterface GridColToken extends FullToken<'Grid'> {\n  gridColumns: number;\n}\n\n// ============================== Row-Shared ==============================\nconst genGridRowStyle: GenerateStyle<GridRowToken> = (token): CSSObject => {\n  const { componentCls } = token;\n\n  return {\n    // Grid system\n    [componentCls]: {\n      display: 'flex',\n      flexFlow: 'row wrap',\n      minWidth: 0,\n\n      '&::before, &::after': {\n        display: 'flex',\n      },\n\n      '&-no-wrap': {\n        flexWrap: 'nowrap',\n      },\n\n      // The origin of the X-axis\n      '&-start': {\n        justifyContent: 'flex-start',\n      },\n\n      // The center of the X-axis\n      '&-center': {\n        justifyContent: 'center',\n      },\n\n      // The opposite of the X-axis\n      '&-end': {\n        justifyContent: 'flex-end',\n      },\n\n      '&-space-between': {\n        justifyContent: 'space-between',\n      },\n\n      '&-space-around ': {\n        justifyContent: 'space-around',\n      },\n\n      '&-space-evenly ': {\n        justifyContent: 'space-evenly',\n      },\n\n      // Align at the top\n      '&-top': {\n        alignItems: 'flex-start',\n      },\n\n      // Align at the center\n      '&-middle': {\n        alignItems: 'center',\n      },\n\n      '&-bottom': {\n        alignItems: 'flex-end',\n      },\n    },\n  };\n};\n\n// ============================== Col-Shared ==============================\nconst genGridColStyle: GenerateStyle<GridColToken> = (token): CSSObject => {\n  const { componentCls } = token;\n\n  return {\n    // Grid system\n    [componentCls]: {\n      position: 'relative',\n      maxWidth: '100%',\n      // Prevent columns from collapsing when empty\n      minHeight: 1,\n    },\n  };\n};\n\nconst genLoopGridColumnsStyle = (token: GridColToken, sizeCls: string): CSSObject => {\n  const { componentCls, gridColumns } = token;\n\n  const gridColumnsStyle: CSSObject = {};\n  for (let i = gridColumns; i >= 0; i--) {\n    if (i === 0) {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {\n        display: 'none',\n      };\n      gridColumnsStyle[`${componentCls}-push-${i}`] = {\n        insetInlineStart: 'auto',\n      };\n      gridColumnsStyle[`${componentCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto',\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: 'auto',\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto',\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineEnd: 0,\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: 0,\n      };\n    } else {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {\n        display: 'block',\n        flex: `0 0 ${(i / gridColumns) * 100}%`,\n        maxWidth: `${(i / gridColumns) * 100}%`,\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: `${(i / gridColumns) * 100}%`,\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: `${(i / gridColumns) * 100}%`,\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineStart: `${(i / gridColumns) * 100}%`,\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: i,\n      };\n    }\n  }\n\n  return gridColumnsStyle;\n};\n\nconst genGridStyle = (token: GridColToken, sizeCls: string): CSSObject =>\n  genLoopGridColumnsStyle(token, sizeCls);\n\nconst genGridMediaStyle = (\n  token: GridColToken,\n  screenSize: number,\n  sizeCls: string,\n): CSSObject => ({\n  [`@media (min-width: ${screenSize}px)`]: {\n    ...genGridStyle(token, sizeCls),\n  },\n});\n\n// ============================== Export ==============================\nexport const useRowStyle = genComponentStyleHook('Grid', token => [genGridRowStyle(token)]);\n\nexport const useColStyle = genComponentStyleHook('Grid', token => {\n  const gridToken: GridColToken = mergeToken<GridColToken>(token, {\n    gridColumns: 24, // Row is divided into 24 parts in Grid\n  });\n\n  const gridMediaSizesMap = {\n    '-sm': gridToken.screenSMMin,\n    '-md': gridToken.screenMDMin,\n    '-lg': gridToken.screenLGMin,\n    '-xl': gridToken.screenXLMin,\n    '-xxl': gridToken.screenXXLMin,\n  };\n\n  return [\n    genGridColStyle(gridToken),\n    genGridStyle(gridToken, ''),\n    genGridStyle(gridToken, '-xs'),\n    Object.keys(gridMediaSizesMap)\n      .map((key: keyof typeof gridMediaSizesMap) =>\n        genGridMediaStyle(gridToken, gridMediaSizesMap[key], key),\n      )\n      .reduce((pre, cur) => ({ ...pre, ...cur }), {}),\n  ];\n});\n"
  },
  {
    "path": "components/icon/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/icon/demo/basic.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"home\" class=\"anticon anticon-home\"><svg focusable=\"false\" class=\"\" data-icon=\"home\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 00-44.4 0L77.5 505a63.9 63.9 0 00-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0018.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 00-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 009.3-35.2l-.9-2.6a442.5 442.5 0 00-79.6-137.7l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.3a353.44 353.44 0 00-98.9 57.3l-81.8-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a445.93 445.93 0 00-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0025.8 25.7l2.7.5a448.27 448.27 0 00158.8 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"sync\" class=\"anticon anticon-sync\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"sync\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" style=\"transform: rotate(180deg);\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/icon/demo/iconfont.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" class=\"anticon\"><svg width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\" class=\"\"><use xlink:href=\"#icon-tuichu\"></use></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" class=\"anticon\"><svg width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\" class=\"\"><use xlink:href=\"#icon-facebook\"></use></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><span role=\"img\" class=\"anticon\"><svg width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\" class=\"\"><use xlink:href=\"#icon-twitter\"></use></svg></span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/icon/demo/two-tone.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" fill=\"#1890ff\"></path><path d=\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 018-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 018 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" fill=\"#e6f7ff\"></path><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4zm-24-112a48 48 0 1096 0 48 48 0 10-96 0z\" fill=\"#1890ff\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\" fill=\"#eb2f96\"></path><path d=\"M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z\" fill=\"#fff0f6\"></path></svg></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" fill=\"#52c41a\"></path><path d=\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z\" fill=\"#f6ffed\"></path><path d=\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\" fill=\"#52c41a\"></path></svg></span></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/icon/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('icon', { skip: ['custom'] });\n"
  },
  {
    "path": "components/icon/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic\n---\n\n## zh-CN\n\n通过 `@ant-design/icons-vue` 引用 Icon 组件，不同主题的 Icon 组件名为图标名加主题做为后缀，也可以通过设置 `spin` 属性来实现动画旋转效果。\n\n## en-US\n\nImport icons from `@ant-design/icons-vue`, component name of icons with different theme is the icon name suffixed by the theme name. Specific the `spin` property to show spinning animation.\n\n</docs>\n\n<template>\n  <a-space>\n    <home-outlined />\n    <setting-filled />\n    <smile-outlined />\n    <sync-outlined spin />\n    <smile-outlined :rotate=\"180\" />\n    <loading-outlined />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  HomeOutlined,\n  SettingFilled,\n  SmileOutlined,\n  SyncOutlined,\n  LoadingOutlined,\n} from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/icon/demo/custom.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 自定义图标\n  en-US: Custom Icon\n---\n\n## zh-CN\n\n利用 `Icon` 组件封装一个可复用的自定义图标。可以通过 `component` 属性或插槽传入一个 `svg` 组件来渲染最终的图标，以满足特定的需求。\n\n## en-US\n\nCreate a reusable Vue component by using `Icon`. The property / slot `component` takes a Vue component that renders to `svg` element.\n\n</docs>\n\n<template>\n  <a-space>\n    <icon :style=\"{ color: 'hotpink' }\">\n      <template #component>\n        <svg width=\"1em\" height=\"1em\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\">\n          <path\n            d=\"M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9z\"\n          />\n        </svg>\n      </template>\n    </icon>\n\n    <icon :style=\"{ fontSize: '32px' }\">\n      <template #component=\"svgProps\">\n        <svg viewBox=\"0 0 1024 1024\" width=\"1em\" height=\"1em\" fill=\"currentColor\" v-bind=\"svgProps\">\n          <path\n            d=\"M99.096 315.634s-82.58-64.032-82.58-132.13c0-66.064 33.032-165.162 148.646-148.646 83.37 11.91 99.096 165.162 99.096 165.162l-165.162 115.614zM924.906 315.634s82.58-64.032 82.58-132.13c0-66.064-33.032-165.162-148.646-148.646-83.37 11.91-99.096 165.162-99.096 165.162l165.162 115.614z\"\n            fill=\"#6B676E\"\n            p-id=\"1143\"\n          />\n          <path\n            d=\"M1024 561.548c0 264.526-229.23 429.42-512.002 429.42S0 826.076 0 561.548 283.96 66.064 512.002 66.064 1024 297.022 1024 561.548z\"\n            fill=\"#FFEBD2\"\n            p-id=\"1144\"\n          />\n          <path\n            d=\"M330.324 842.126c0 82.096 81.34 148.646 181.678 148.646s181.678-66.55 181.678-148.646H330.324z\"\n            fill=\"#E9D7C3\"\n            p-id=\"1145\"\n          />\n          <path\n            d=\"M644.13 611.098C594.582 528.516 561.55 512 512.002 512c-49.548 0-82.58 16.516-132.13 99.096-42.488 70.814-78.73 211.264-49.548 247.742 66.064 82.58 165.162 33.032 181.678 33.032 16.516 0 115.614 49.548 181.678-33.032 29.18-36.476-7.064-176.93-49.55-247.74z\"\n            fill=\"#FFFFFF\"\n            p-id=\"1146\"\n          />\n          <path\n            d=\"M611.098 495.484c0-45.608 36.974-82.58 82.58-82.58 49.548 0 198.194 99.098 198.194 165.162s-79.934 144.904-148.646 99.096c-49.548-33.032-132.128-148.646-132.128-181.678zM412.904 495.484c0-45.608-36.974-82.58-82.58-82.58-49.548 0-198.194 99.098-198.194 165.162s79.934 144.904 148.646 99.096c49.548-33.032 132.128-148.646 132.128-181.678z\"\n            fill=\"#6B676E\"\n            p-id=\"1147\"\n          />\n          <path\n            d=\"M512.002 726.622c-30.06 0-115.614 5.668-115.614 33.032 0 49.638 105.484 85.24 115.614 82.58 10.128 2.66 115.614-32.944 115.614-82.58-0.002-27.366-85.556-33.032-115.614-33.032z\"\n            fill=\"#464655\"\n            p-id=\"1148\"\n          />\n          <path\n            d=\"M330.324 495.484m-33.032 0a33.032 33.032 0 1 0 66.064 0 33.032 33.032 0 1 0-66.064 0Z\"\n            fill=\"#464655\"\n            p-id=\"1149\"\n          />\n          <path\n            d=\"M693.678 495.484m-33.032 0a33.032 33.032 0 1 0 66.064 0 33.032 33.032 0 1 0-66.064 0Z\"\n            fill=\"#464655\"\n            p-id=\"1150\"\n          />\n        </svg>\n      </template>\n    </icon>\n    <icon>\n      <template #component><HomeOutlined /></template>\n    </icon>\n    <HomeOutlined />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport Icon, { HomeOutlined } from '@ant-design/icons-vue';\n</script>\n<style scoped>\n.custom-icons-list :deep(.anticon) {\n  margin-right: 6px;\n}\n</style>\n"
  },
  {
    "path": "components/icon/demo/iconfont.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 使用 iconfont.cn\n  en-US: Use iconfont.cn\n---\n\n## zh-CN\n\n对于使用 [iconfont.cn](http://iconfont.cn/) 的用户，通过设置 `createFromIconfontCN` 方法参数对象中的 `scriptUrl` 字段， 即可轻松地使用已有项目中的图标。\n\n## en-US\n\nIf you are using [iconfont.cn](http://iconfont.cn/), you can use the icons in your project gracefully.\n\n</docs>\n\n<template>\n  <a-space>\n    <icon-font type=\"icon-tuichu\" />\n    <icon-font type=\"icon-facebook\" />\n    <icon-font type=\"icon-twitter\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { createFromIconfontCN } from '@ant-design/icons-vue';\n\nconst IconFont = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js',\n});\n</script>\n<style scoped>\n.icons-list :deep(.anticon) {\n  margin-right: 6px;\n  font-size: 24px;\n}\n</style>\n"
  },
  {
    "path": "components/icon/demo/index.vue",
    "content": "<template>\n  <icon-display />\n  <demo-sort>\n    <basic />\n    <twotone />\n    <custom />\n    <iconfont />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport IconDisplay from '../../../site/src/theme/template/IconDisplay';\nimport Basic from './basic.vue';\nimport Custom from './custom.vue';\nimport Iconfont from './iconfont.vue';\nimport Twotone from './two-tone.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    IconDisplay,\n    Basic,\n    Custom,\n    Iconfont,\n    Twotone,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/icon/demo/two-tone.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 多色图标\n  en-US: Two-tone icon and colorful icon\n---\n\n## zh-CN\n\n双色图标可以通过 `two-tone-color` 属性设置主题色。\n\n## en-US\n\nYou can set `two-tone-color` prop to specific primary color for two-tone icons.\n\n</docs>\n\n<template>\n  <a-space>\n    <smile-two-tone />\n    <heart-two-tone two-tone-color=\"#eb2f96\" />\n    <check-circle-two-tone two-tone-color=\"#52c41a\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileTwoTone, HeartTwoTone, CheckCircleTwoTone } from '@ant-design/icons-vue';\n</script>\n<style scoped>\n.icons-list :deep(.anticon) {\n  margin-right: 6px;\n  font-size: 24px;\n}\n</style>\n"
  },
  {
    "path": "components/icon/index.en-US.md",
    "content": "---\ncategory: Components\ntype: General\ntitle: Icon\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*PdAYS7anRpoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*xEDOTJx2DEkAAAAAAAAAAAAADrJ8AQ/original\n---\n\nSemantic vector graphics. Before use icons, you need to install `@ant-design/icons-vue` package:\n\n```bash\nnpm install --save @ant-design/icons-vue\n```\n\n## API\n\n### Common Icon\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| rotate | Rotate by n degrees (not working in IE9) | number | - |  |\n| spin | Rotate icon with animation | boolean | false |  |\n| style | Style properties of icon, like `fontSize` and `color` | CSSProperties | - |  |\n| twoToneColor | Only supports the two-tone icon. Specify the primary color. | string (hex color) | - |  |\n\nWe still have three different themes for icons, icon component name is the icon name suffixed by the theme name.\n\n```jsx\nimport { StarOutlined, StarFilled, StarTwoTone } from '@ant-design/icons-vue';\n\n<star-outlined />\n<star-filled />\n<star-two-tone two-tone-color=\"#eb2f96\" />\n```\n\n### Custom Icon\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| component | The component used for the root node. | ComponentType&lt;CustomIconComponentProps> | - |  |\n| rotate | Rotate degrees (not working in IE9) | number | - |  |\n| spin | Rotate icon with animation | boolean | false |  |\n| style | Style properties of icon, like `fontSize` and `color` | CSSProperties | - |  |\n\n### About SVG icons\n\nWe introduced SVG icons in version `1.2.0`, replacing font icons. This has the following benefits:\n\n- Complete offline usage of icons, without dependency on a CDN-hosted font icon file (No more empty square during downloading and no need to deploy icon font files locally either!)\n- Much more display accuracy on lower-resolution screens\n- The ability to choose icon color\n- No need to change built-in icons with overriding styles by providing more props in component\n\nMore discussion of SVG icon reference at [#10353](https://github.com/ant-design/ant-design/issues/10353).\n\n> ⚠️ Given the extra bundle size caused by all SVG icons imported in 1.2.0, we will provide a new API to allow developers to import icons as needed, you can track [#12011](https://github.com/ant-design/ant-design/issues/12011) for updates.\n>\n> While you wait, you can use [webpack plugin](https://github.com/Beven91/webpack-ant-icon-loader) from the community to chunk the icon file.\n\nThe properties `theme`, `component` and `twoToneColor` were added in `1.2.0`. The best practice is to pass the property `theme` to every `<Icon />` component.\n\n```html\n<template>\n  <message-outlined :style=\"{fontSize: '16px', color: '#08c'}\" />\n</template>\n<script>\n  import { MessageOutlined } from '@ant-design/icons-vue';\n  import { defineComponent } from 'vue';\n  export default defineComponent({\n    components: {\n      MessageOutlined,\n    },\n  });\n</script>\n```\n\nAll the icons will render to `<svg>`. You can still set `style` and `class` for size and color of icons.\n\n### Set TwoTone Color\n\nWhen using the two-tone icons, you can use the static methods `getTwoToneColor()` and `setTwoToneColor(colorString)` to spicify the primary color.\n\n```jsx\nimport { getTwoToneColor, setTwoToneColor } from '@ant-design/icons';\n\nsetTwoToneColor('#eb2f96');\ngetTwoToneColor(); // #eb2f96\n```\n\n### Custom Font Icon\n\nWe added a `createFromIconfontCN` function to help developer using their own icons deployed at [iconfont.cn](http://iconfont.cn/) in a convenient way.\n\n> This method is specified for [iconfont.cn](http://iconfont.cn/).\n\n```jsx\nimport { createFromIconfontCN } from '@ant-design/icons-vue';\nimport { defineComponent } from 'vue';\nconst MyIcon = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // generated by iconfont.cn\n});\n\nexport default defineComponent({\n  setup() {\n    return () => <MyIcon type=\"icon-dianzan\" />;\n  },\n});\n```\n\nIt create a component that uses SVG sprites in essence.\n\nThe following options are available:\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| extraCommonProps | Define extra properties to the component | `{ class, attrs, props, on, style }` | {} |\n| scriptUrl | The URL generated by [iconfont.cn](http://iconfont.cn/) project. | string | - |\n\nThe property `scriptUrl` should be set to import the SVG sprite symbols.\n\nSee [iconfont.cn documents](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) to learn about how to generate `scriptUrl`.\n\n### Custom SVG Icon\n\n#### vue cli 3\n\nYou can import SVG icon as an vue component by using `vue cli 3` and [`vue-svg-loader`](https://www.npmjs.com/package/vue-svg-loader). `vue-svg-loader`'s `options` [reference](https://github.com/visualfanatic/vue-svg-loader).\n\n```js\n// vue.config.js\nmodule.exports = {\n  chainWebpack: config => {\n    const svgRule = config.module.rule('svg');\n\n    svgRule.uses.clear();\n\n    svgRule.use('vue-svg-loader').loader('vue-svg-loader');\n  },\n};\n```\n\n```jsx\nimport { defineComponent } from 'vue';\nimport Icon from '@ant-design/icons-vue';\nimport MessageSvg from 'path/to/message.svg'; // path to your '*.svg' file.\n\nexport default defineComponent({\n  setup() {\n    return () => <Icon type={MessageSvg} />;\n  },\n});\n```\n\n#### Rsbuild\n\nRsbuild is a new generation of build tool, official website https://rsbuild.dev/  \nCreate your own `vue-svg-loader.js` file, which allows you to customize and beautify SVG, and then configure it in `rsbuild.config.ts`\n\n```js\n// vue-svg-loader.js\n/* eslint-disable */\nconst { optimize } = require('svgo');\nconst { version } = require('vue');\nconst semverMajor = require('semver/functions/major');\n\nmodule.exports = async function (svg) {\n  const callback = this.async();\n\n  try {\n    ({ data: svg } = await optimize(svg, {\n      path: this.resourcePath,\n      js2svg: {\n        indent: 2,\n        pretty: true,\n      },\n      plugins: [\n        'convertStyleToAttrs',\n        'removeDoctype',\n        'removeXMLProcInst',\n        'removeComments',\n        'removeMetadata',\n        'removeTitle',\n        'removeDesc',\n        'removeStyleElement',\n        'removeXMLNS',\n        'removeXMLProcInst',\n      ],\n    }));\n  } catch (error) {\n    callback(error);\n    return;\n  }\n\n  if (semverMajor(version) === 2) {\n    svg = svg.replace('<svg', '<svg v-on=\"$listeners\"');\n  }\n\n  callback(null, `<template>${svg}</template>`);\n};\n```\n\n```js\n// rsbuild.config.ts\n/* eslint-disable */\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\n\nexport default defineConfig({\n  tools: {\n    bundlerChain(chain, { CHAIN_ID }) {\n      chain.module.rule(CHAIN_ID.RULE.SVG).exclude.add(/\\.svg$/);\n    },\n    rspack: {\n      module: {\n        rules: [\n          {\n            test: /\\.svg$/,\n            use: ['vue-loader', 'vue-svg-loader'],\n          },\n        ],\n      },\n      resolveLoader: {\n        alias: {\n          'vue-svg-loader': require('path').join(__dirname, './vue-svg-loader.js'),\n        },\n      },\n    },\n  },\n});\n```\n\nThe following properties are available for the component:\n\n| Property | Description                                      | Type             | Default        |\n| -------- | ------------------------------------------------ | ---------------- | -------------- |\n| class    | The computed class name of the `svg` element     | string           | -              |\n| fill     | Define the color used to paint the `svg` element | string           | 'currentColor' |\n| height   | The height of the `svg` element                  | string \\| number | '1em'          |\n| style    | The computed style of the `svg` element          | CSSProperties    | -              |\n| width    | The width of the `svg` element                   | string \\| number | '1em'          |\n"
  },
  {
    "path": "components/icon/index.tsx",
    "content": "import warning from '../_util/warning';\nimport { withInstall } from '../_util/type';\n\nconst Icon = () => {\n  warning(false, 'Icon', 'Empty Icon');\n  return null;\n};\n\nIcon.displayName = 'AIcon';\n\nexport default withInstall(Icon);\n"
  },
  {
    "path": "components/icon/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 通用\ntitle: Icon\nsubtitle: 图标\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*PdAYS7anRpoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*xEDOTJx2DEkAAAAAAAAAAAAADrJ8AQ/original\n---\n\n语义化的矢量图形。使用图标组件，你需要安装 `@ant-design/icons-vue` 图标组件包：\n\n```bash\nnpm install --save @ant-design/icons-vue\n```\n\n## 设计师专属\n\n安装 [Kitchen Sketch 插件 💎](https://kitchen.alipay.com)，就可以一键拖拽使用 Ant Design 和 Iconfont 的海量图标，还可以关联自有项目。\n\n## API\n\n### 通用图标\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| rotate | 图标旋转角度（IE9 无效） | number | - |  |\n| spin | 是否有旋转动画 | boolean | false |  |\n| style | 设置图标的样式，例如 `fontSize` 和 `color` | CSSProperties | - |  |\n| twoToneColor | 仅适用双色图标。设置双色图标的主要颜色 | string (十六进制颜色) | - |  |\n\n其中我们提供了三种主题的图标，不同主题的 Icon 组件名为图标名加主题做为后缀。\n\n```jsx\nimport { StarOutlined, StarFilled, StarTwoTone } from '@ant-design/icons-vue';\n\n<star-outlined />\n<star-filled />\n<star-two-tone two-tone-color=\"#eb2f96\" />\n```\n\n### 自定义 Icon/Custom Icon\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| component | 控制如何渲染图标，通常是一个渲染根标签为 `<svg>` 的 `Vue` 组件 | ComponentType&lt;CustomIconComponentProps> | - |  |\n| rotate | 图标旋转角度（IE9 无效） | number | - |  |\n| spin | 是否有旋转动画 | boolean | false |  |\n| style | 设置图标的样式，例如 `fontSize` 和 `color` | CSSProperties | - |  |\n\n### SVG 图标\n\n在 `1.2.0` 之后，我们使用了 SVG 图标替换了原先的 font 图标，从而带来了以下优势：\n\n- 完全离线化使用，不需要从 CDN 下载字体文件，图标不会因为网络问题呈现方块，也无需字体文件本地部署。\n- 在低端设备上 SVG 有更好的清晰度。\n- 支持多色图标。\n- 对于内建图标的更换可以提供更多 API，而不需要进行样式覆盖。\n\n更多讨论可参考：[#10353](https://github.com/ant-design/ant-design/issues/10353)。\n\n所有的图标都会以 `<svg>` 标签渲染，可以使用 `style` 和 `class` 设置图标的大小和单色图标的颜色。例如：\n\n```html\n<template>\n  <message-outlined :style=\"{fontSize: '16px', color: '#08c'}\" />\n</template>\n<script>\n  import { MessageOutlined } from '@ant-design/icons-vue';\n  import { defineComponent } from 'vue';\n  export default defineComponent({\n    components: {\n      MessageOutlined,\n    },\n  });\n</script>\n```\n\n### 双色图标主色\n\n对于双色图标，可以通过使用 `Icon.getTwoToneColor()` 和 `Icon.setTwoToneColor(colorString)` 来全局设置图标主色。\n\n```jsx\nimport { getTwoToneColor, setTwoToneColor } from '@ant-design/icons-vue';\n\nsetTwoToneColor('#eb2f96');\ngetTwoToneColor(); // #eb2f96\n```\n\n### 自定义 font 图标\n\n在 `1.2.0` 之后，我们提供了一个 `createFromIconfontCN` 方法，方便开发者调用在 [iconfont.cn](http://iconfont.cn/) 上自行管理的图标。\n\n```jsx\nimport { createFromIconfontCN } from '@ant-design/icons-vue';\nimport { defineComponent } from 'vue';\nconst MyIcon = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // 在 iconfont.cn 上生成\n});\n\nexport default defineComponent({\n  setup() {\n    return () => <MyIcon type=\"icon-dianzan\" />;\n  },\n});\n```\n\n其本质上是创建了一个使用 `<use>` 标签来渲染图标的组件。\n\n`options` 的配置项如下：\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| extraCommonProps | 给所有的 `svg` 图标 `<Icon />` 组件设置额外的属性 | `{ class, attrs, props, on, style }` | {} |\n| scriptUrl | [iconfont.cn](http://iconfont.cn/) 项目在线生成的 `js` 地址 | string | - |\n\n在 `scriptUrl` 都设置有效的情况下，组件在渲染前会自动引入 [iconfont.cn](http://iconfont.cn/) 项目中的图标符号集，无需手动引入。\n\n见 [iconfont.cn 使用帮助](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) 查看如何生成 `js` 地址。\n\n### 自定义 SVG 图标\n\n#### vue cli 3\n\n可以通过配置 [vue-svg-loader](https://www.npmjs.com/package/vue-svg-loader) 来将 `svg` 图标作为 `Vue` 组件导入。更多`vue-svg-loader` 的使用方式请参阅 [文档](https://github.com/visualfanatic/vue-svg-loader)。\n\n```js\n// vue.config.js\nmodule.exports = {\n  chainWebpack: config => {\n    const svgRule = config.module.rule('svg');\n\n    svgRule.uses.clear();\n\n    svgRule.use('vue-svg-loader').loader('vue-svg-loader');\n  },\n};\n```\n\n```jsx\nimport { defineComponent } from 'vue';\nimport Icon from '@ant-design/icons-vue';\nimport MessageSvg from 'path/to/message.svg'; // '*.svg' 文件的路径\n\nexport default defineComponent({\n  setup() {\n    return () => <Icon type={MessageSvg} />;\n  },\n});\n```\n\n#### Rsbuild\n\nRsbuild 是新一代构建工具，官网 https://rsbuild.dev/\n\n自己实现一个 `vue-svg-loader.js` 文件，好处是可以自定义美化 svg，然后在 `rsbuild.config.ts` 中配置：\n\n```js\n// vue-svg-loader.js\n/* eslint-disable */\nconst { optimize } = require('svgo');\nconst { version } = require('vue');\nconst semverMajor = require('semver/functions/major');\n\nmodule.exports = async function (svg) {\n  const callback = this.async();\n\n  try {\n    ({ data: svg } = await optimize(svg, {\n      path: this.resourcePath,\n      js2svg: {\n        indent: 2,\n        pretty: true,\n      },\n      plugins: [\n        'convertStyleToAttrs',\n        'removeDoctype',\n        'removeXMLProcInst',\n        'removeComments',\n        'removeMetadata',\n        'removeTitle',\n        'removeDesc',\n        'removeStyleElement',\n        'removeXMLNS',\n        'removeXMLProcInst',\n      ],\n    }));\n  } catch (error) {\n    callback(error);\n    return;\n  }\n\n  if (semverMajor(version) === 2) {\n    svg = svg.replace('<svg', '<svg v-on=\"$listeners\"');\n  }\n\n  callback(null, `<template>${svg}</template>`);\n};\n```\n\n```js\n// rsbuild.config.ts\n/* eslint-disable */\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\n\nexport default defineConfig({\n  tools: {\n    bundlerChain(chain, { CHAIN_ID }) {\n      chain.module\n        // 先给svg排除默认的规则，方便下面自定义loader\n        .rule(CHAIN_ID.RULE.SVG)\n        .exclude.add(/\\.svg$/);\n    },\n    rspack: {\n      module: {\n        rules: [\n          {\n            test: /\\.svg$/,\n            use: ['vue-loader', 'vue-svg-loader'],\n          },\n        ],\n      },\n      resolveLoader: {\n        alias: {\n          'vue-svg-loader': require('path').join(__dirname, './vue-svg-loader.js'),\n        },\n      },\n    },\n  },\n});\n```\n\n`Icon` 中的 `component` 组件的接受的属性如下：\n\n| 字段   | 说明                    | 类型             | 只读值         |\n| ------ | ----------------------- | ---------------- | -------------- |\n| class  | 计算后的 `svg` 类名     | string           | -              |\n| fill   | `svg` 元素填充的颜色    | string           | 'currentColor' |\n| height | `svg` 元素高度          | string \\| number | '1em'          |\n| style  | 计算后的 `svg` 元素样式 | CSSProperties    | -              |\n| width  | `svg` 元素宽度          | string \\| number | '1em'          |\n"
  },
  {
    "path": "components/image/PreviewGroup.tsx",
    "content": "import type { PreviewGroupPreview } from '../vc-image/src/PreviewGroup';\nimport PreviewGroup from '../vc-image/src/PreviewGroup';\nimport type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nimport RotateLeftOutlined from '@ant-design/icons-vue/RotateLeftOutlined';\nimport RotateRightOutlined from '@ant-design/icons-vue/RotateRightOutlined';\nimport ZoomInOutlined from '@ant-design/icons-vue/ZoomInOutlined';\nimport ZoomOutOutlined from '@ant-design/icons-vue/ZoomOutOutlined';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport LeftOutlined from '@ant-design/icons-vue/LeftOutlined';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport SwapOutlined from '@ant-design/icons-vue/SwapOutlined';\nimport { getTransitionName } from '../_util/transition';\nimport useStyle from './style';\nimport { anyType } from '../_util/type';\n\nexport const icons = {\n  rotateLeft: <RotateLeftOutlined />,\n  rotateRight: <RotateRightOutlined />,\n  zoomIn: <ZoomInOutlined />,\n  zoomOut: <ZoomOutOutlined />,\n  close: <CloseOutlined />,\n  left: <LeftOutlined />,\n  right: <RightOutlined />,\n  flipX: <SwapOutlined />,\n  flipY: <SwapOutlined rotate={90} />,\n};\nconst previewGroupProps = () => ({\n  previewPrefixCls: String,\n  preview: anyType<boolean | PreviewGroupPreview>(),\n});\nexport type ImageGroupProps = Partial<ExtractPropTypes<ReturnType<typeof previewGroupProps>>>;\n\nconst InternalPreviewGroup = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AImagePreviewGroup',\n  inheritAttrs: false,\n  props: previewGroupProps(),\n  setup(props, { attrs, slots }) {\n    const { prefixCls, rootPrefixCls } = useConfigInject('image', props);\n    const previewPrefixCls = computed(() => `${prefixCls.value}-preview`);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const mergedPreview = computed(() => {\n      const { preview } = props;\n      if (preview === false) {\n        return preview;\n      }\n      const _preview = typeof preview === 'object' ? preview : {};\n\n      return {\n        ..._preview,\n        rootClassName: hashId.value,\n        transitionName: getTransitionName(rootPrefixCls.value, 'zoom', _preview.transitionName),\n        maskTransitionName: getTransitionName(\n          rootPrefixCls.value,\n          'fade',\n          _preview.maskTransitionName,\n        ),\n      };\n    });\n    return () => {\n      return wrapSSR(\n        <PreviewGroup\n          {...{ ...attrs, ...props }}\n          preview={mergedPreview.value}\n          icons={icons}\n          previewPrefixCls={previewPrefixCls.value}\n          v-slots={slots}\n        ></PreviewGroup>,\n      );\n    };\n  },\n});\nexport default InternalPreviewGroup;\n"
  },
  {
    "path": "components/image/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/image/demo/basic.vue correctly 1`] = `\n<div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/image/demo/controlled-preview.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>show image preview</span>\n  </button>\n  <div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" style=\"display: none;\" src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">\n    <!---->\n    <div class=\"ant-image-mask\">\n      <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/image/demo/fallback.vue correctly 1`] = `\n<div class=\"ant-image\" style=\"width: 200px; height: 200px;\"><img width=\"200\" height=\"200\" class=\"ant-image-img\" style=\"height: 200px;\" src=\"https://www.antdv.com/#error\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/image/demo/placeholder.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 12px;\">\n    <div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png?undefined\">\n      <div aria-hidden=\"true\" class=\"ant-image-placeholder\">\n        <div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png?x-oss-process=image/blur,r_50,s_50/quality,q_1/resize,m_mfit,h_200,w_200\">\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <div class=\"ant-image-mask\">\n        <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n      </div>\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>reload</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/image/demo/preview-group.vue correctly 1`] = `\n<div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://www.antdv.com/vue.png\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n<div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://www.antdv.com/logo.png\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/image/demo/preview-group-visible.vue correctly 1`] = `\n<div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n<div style=\"display: none;\">\n  <div class=\"ant-image\"><img class=\"ant-image-img\" src=\"https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp\">\n    <!---->\n    <div class=\"ant-image-mask\">\n      <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-image\"><img class=\"ant-image-img\" src=\"https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp\">\n    <!---->\n    <div class=\"ant-image-mask\">\n      <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-image\"><img class=\"ant-image-img\" src=\"https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp\">\n    <!---->\n    <div class=\"ant-image-mask\">\n      <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/image/demo/preview-src.vue correctly 1`] = `\n<div class=\"ant-image\" style=\"width: 200px;\"><img width=\"200\" class=\"ant-image-img\" src=\"https://www.antdv.com/logo.png\">\n  <!---->\n  <div class=\"ant-image-mask\">\n    <div class=\"ant-image-mask-info\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>Preview</div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/image/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('image');\n"
  },
  {
    "path": "components/image/__tests__/index.test.js",
    "content": "import Image from '..';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { mount } from '@vue/test-utils';\ndescribe('Image', () => {\n  mountTest(Image);\n  it('image size', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Image\n            width=\"200px\"\n            src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n          />\n        );\n      },\n    });\n    expect(wrapper.find('.ant-image').element.style.width).toBe('200px');\n  });\n  it('image size number', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Image\n            width={200}\n            src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n          />\n        );\n      },\n    });\n    expect(wrapper.find('.ant-image').element.style.width).toBe('200px');\n  });\n});\n"
  },
  {
    "path": "components/image/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n单击图像可以放大显示。\n\n## en-US\n\nClick the image to zoom in.\n\n</docs>\n\n<template>\n  <a-image\n    :width=\"200\"\n    src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n  />\n</template>\n"
  },
  {
    "path": "components/image/demo/controlled-preview.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 受控的预览\n  en-US: Controlled Preview\n---\n\n## zh-CN\n\n可以使预览受控。\n\n## en-US\n\nYou can make preview controlled.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"() => setVisible(true)\">show image preview</a-button>\n    <a-image\n      :width=\"200\"\n      :style=\"{ display: 'none' }\"\n      :preview=\"{\n        visible,\n        onVisibleChange: setVisible,\n      }\"\n      src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst visible = ref<boolean>(false);\nconst setVisible = (value): void => {\n  visible.value = value;\n};\n</script>\n"
  },
  {
    "path": "components/image/demo/fallback.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 容错处理\n  en-US: Fault tolerant\n---\n\n## zh-CN\n\n加载失败显示图像占位符。\n\n## en-US\n\nLoad failed to display image placeholder.\n\n</docs>\n\n<template>\n  <a-image\n    :width=\"200\"\n    :height=\"200\"\n    src=\"https://www.antdv.com/#error\"\n    fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==\"\n  />\n</template>\n"
  },
  {
    "path": "components/image/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <fallback />\n    <placeholder />\n    <preview-group />\n    <previewGroupVisibleVue />\n    <previewSrc />\n    <controlled-preview />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Fallback from './fallback.vue';\nimport Placeholder from './placeholder.vue';\nimport previewSrc from './preview-src.vue';\nimport PreviewGroup from './preview-group.vue';\nimport ControlledPreview from './controlled-preview.vue';\nimport previewGroupVisibleVue from './preview-group-visible.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Fallback,\n    previewSrc,\n    Placeholder,\n    PreviewGroup,\n    ControlledPreview,\n    previewGroupVisibleVue,\n  },\n});\n</script>\n<style></style>\n"
  },
  {
    "path": "components/image/demo/placeholder.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 渐进加载\n  en-US: Progressive Loading\n---\n\n## zh-CN\n\n大图使用 placeholder 渐进加载。\n\n## en-US\n\nProgressive when large image loading.\n\n</docs>\n\n<template>\n  <a-space :size=\"12\">\n    <a-image\n      :width=\"200\"\n      :src=\"`https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png?${random}`\"\n    >\n      <template #placeholder>\n        <a-image\n          src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png?x-oss-process=image/blur,r_50,s_50/quality,q_1/resize,m_mfit,h_200,w_200\"\n          :width=\"200\"\n          :preview=\"false\"\n        />\n      </template>\n    </a-image>\n    <a-button type=\"primary\" @click=\"random = Date.now()\">reload</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst random = ref();\n</script>\n"
  },
  {
    "path": "components/image/demo/preview-group-visible.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 相册模式\n  en-US: Preview from one image\n---\n\n## zh-CN\n\n从一张图片点开相册。\n\n## en-US\n\nPreview a collection from one image.\n\n</docs>\n\n<template>\n  <a-image\n    :preview=\"{ visible: false }\"\n    :width=\"200\"\n    src=\"https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp\"\n    @click=\"visible = true\"\n  />\n  <div style=\"display: none\">\n    <a-image-preview-group :preview=\"{ visible, onVisibleChange: vis => (visible = vis) }\">\n      <a-image\n        src=\"https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp\"\n      />\n      <a-image\n        src=\"https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp\"\n      />\n      <a-image\n        src=\"https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp\"\n      />\n    </a-image-preview-group>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst visible = ref(false);\n</script>\n"
  },
  {
    "path": "components/image/demo/preview-group.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 多张图片预览\n  en-US: Multiple image preview\n---\n\n## zh-CN\n\n点击左右切换按钮可以预览多张图片。\n\n## en-US\n\nClick the left and right switch buttons to preview multiple images.\n\n</docs>\n\n<template>\n  <a-image-preview-group>\n    <a-image :width=\"200\" src=\"https://www.antdv.com/vue.png\" />\n    <a-image :width=\"200\" src=\"https://www.antdv.com/logo.png\" />\n  </a-image-preview-group>\n</template>\n"
  },
  {
    "path": "components/image/demo/preview-src.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义预览图片\n  en-US: Custom preview image\n---\n\n## zh-CN\n\n可以设置不同的预览图片。\n\n## en-US\n\nYou can set different preview image.\n\n</docs>\n\n<template>\n  <a-image\n    :width=\"200\"\n    src=\"https://www.antdv.com/logo.png\"\n    :preview=\"{\n      src: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    }\"\n  />\n</template>\n"
  },
  {
    "path": "components/image/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Image\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*FbOCS6aFMeUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*LVQ3R5JjjJEAAAAAAAAAAAAADrJ8AQ/original\n---\n\nPreviewable image.\n\n## When To Use\n\n- When you need to display pictures.\n- Display when loading a large image or fault tolerant handling when loading fail.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| alt | Image description | string | - | 2.0.0 |\n| fallback | Load failure fault-tolerant src | string | - | 2.0.0 |\n| height | Image height | string \\| number | - | 2.0.0 |\n| placeholder | Load placeholder, use default placeholder when set `true` | boolean \\| slot | - | 2.0.0 |\n| preview | preview config, disabled when `false` | boolean \\| [previewType](#previewtype) | true | 2.0.0 |\n| src | Image path | string | - | 2.0.0 |\n| previewMask | custom mask | false \\| function \\| slot | - | 3.2.0 |\n| width | Image width | string \\| number | - | 2.0.0 |\n\n### events\n\n| Events Name | Description          | Arguments              | Version |\n| ----------- | -------------------- | ---------------------- | ------- |\n| error       | Load failed callback | (event: Event) => void | 3.2.0   |\n\n### previewType\n\n```ts\n{\n  visible?: boolean;\n  onVisibleChange?: (visible, prevVisible) => void;\n  getContainer?: string | HTMLElement | (() => HTMLElement);\n  src?: string;\n  maskClassName?: string;\n  current?: number;\n}\n```\n\nOther attributes [&lt;img>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#Attributes)\n"
  },
  {
    "path": "components/image/index.tsx",
    "content": "import type { App, ExtractPropTypes, ImgHTMLAttributes, Plugin } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport ImageInternal from '../vc-image';\nimport { imageProps } from '../vc-image/src/Image';\nimport defaultLocale from '../locale/en_US';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport PreviewGroup, { icons } from './PreviewGroup';\nimport EyeOutlined from '@ant-design/icons-vue/EyeOutlined';\nimport { getTransitionName } from '../_util/transition';\nimport useStyle from './style';\nimport classNames from '../_util/classNames';\nexport type ImageProps = Partial<\n  ExtractPropTypes<ReturnType<typeof imageProps>> &\n    Omit<ImgHTMLAttributes, 'placeholder' | 'onClick'>\n>;\nconst Image = defineComponent({\n  name: 'AImage',\n  inheritAttrs: false,\n  props: imageProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls, rootPrefixCls, configProvider } = useConfigInject('image', props);\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const mergedPreview = computed(() => {\n      const { preview } = props;\n\n      if (preview === false) {\n        return preview;\n      }\n      const _preview = typeof preview === 'object' ? preview : {};\n\n      return {\n        icons,\n        ..._preview,\n        transitionName: getTransitionName(rootPrefixCls.value, 'zoom', _preview.transitionName),\n        maskTransitionName: getTransitionName(\n          rootPrefixCls.value,\n          'fade',\n          _preview.maskTransitionName,\n        ),\n      };\n    });\n\n    return () => {\n      const imageLocale = configProvider.locale?.value?.Image || defaultLocale.Image;\n      const defaultPreviewMask = () => (\n        <div class={`${prefixCls.value}-mask-info`}>\n          <EyeOutlined />\n          {imageLocale?.preview}\n        </div>\n      );\n      const { previewMask = slots.previewMask || defaultPreviewMask } = props;\n      return wrapSSR(\n        <ImageInternal\n          {...{ ...attrs, ...props, prefixCls: prefixCls.value }}\n          preview={mergedPreview.value}\n          rootClassName={classNames(props.rootClassName, hashId.value)}\n          v-slots={{\n            ...slots,\n            previewMask: typeof previewMask === 'function' ? previewMask : null,\n          }}\n        ></ImageInternal>,\n      );\n    };\n  },\n});\n\nexport { imageProps };\n\nImage.PreviewGroup = PreviewGroup;\n\nImage.install = function (app: App) {\n  app.component(Image.name, Image);\n  app.component(Image.PreviewGroup.name, Image.PreviewGroup);\n  return app;\n};\n\nexport { PreviewGroup as ImagePreviewGroup };\n\nexport default Image as typeof Image &\n  Plugin & {\n    readonly PreviewGroup: typeof PreviewGroup;\n  };\n"
  },
  {
    "path": "components/image/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Image\nsubtitle: 图片\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*FbOCS6aFMeUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*LVQ3R5JjjJEAAAAAAAAAAAAADrJ8AQ/original\n---\n\n可预览的图片。\n\n## 何时使用\n\n- 需要展示图片时使用。\n- 加载大图时显示 loading 或加载失败时容错处理。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| alt | 图像描述 | string | - | 2.0.0 |\n| fallback | 加载失败容错地址 | string | - | 2.0.0 |\n| height | 图像高度 | string \\| number | - | 2.0.0 |\n| placeholder | 加载占位, 为 `true` 时使用默认占位 | boolean \\| slot | - | 2.0.0 |\n| preview | 预览参数，为 `false` 时禁用 | boolean \\| [previewType](#previewtype) | true | 2.0.0 |\n| src | 图片地址 | string | - | 2.0.0 |\n| previewMask | 自定义 mask | false \\| function \\| slot | - | 3.2.0 |\n| width | 图像宽度 | string \\| number | - | 2.0.0 |\n\n### 事件\n\n| 事件名称 | 说明         | 回调参数               | 版本  |\n| -------- | ------------ | ---------------------- | ----- |\n| error    | 加载错误回调 | (event: Event) => void | 3.2.0 |\n\n### previewType\n\n```ts\n{\n  visible?: boolean;\n  onVisibleChange?: (visible, prevVisible) => void;\n  getContainer: string | HTMLElement | (() => HTMLElement);\n  src?: string;\n  maskClassName?: string;\n  current?: number;\n}\n```\n\n其他属性见 [&lt;img>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#Attributes)\n"
  },
  {
    "path": "components/image/style/index.ts",
    "content": "import { CSSObject } from '../../_util/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { genModalMaskStyle } from '../../modal/style';\nimport { initZoomMotion, initFadeMotion } from '../../style/motion';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n  previewOperationSize: number;\n  previewOperationColor: string;\n  previewOperationColorDisabled: string;\n}\n\nexport interface ImageToken extends FullToken<'Image'> {\n  previewCls: string;\n  modalMaskBg: string;\n  imagePreviewSwitchSize: number;\n}\n\nexport type PositionType = 'static' | 'relative' | 'fixed' | 'absolute' | 'sticky' | undefined;\n\nexport const genBoxStyle = (position?: PositionType): CSSObject => ({\n  position: position || 'absolute',\n  inset: 0,\n});\n\nexport const genImageMaskStyle = (token: ImageToken): CSSObject => {\n  const { iconCls, motionDurationSlow, paddingXXS, marginXXS, prefixCls } = token;\n  return {\n    position: 'absolute',\n    inset: 0,\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    color: '#fff',\n    background: new TinyColor('#000').setAlpha(0.5).toRgbString(),\n    cursor: 'pointer',\n    opacity: 0,\n    transition: `opacity ${motionDurationSlow}`,\n\n    [`.${prefixCls}-mask-info`]: {\n      ...textEllipsis,\n      padding: `0 ${paddingXXS}px`,\n      [iconCls]: {\n        marginInlineEnd: marginXXS,\n        svg: {\n          verticalAlign: 'baseline',\n        },\n      },\n    },\n  };\n};\n\nexport const genPreviewOperationsStyle = (token: ImageToken): CSSObject => {\n  const { previewCls, modalMaskBg, paddingSM, previewOperationColorDisabled, motionDurationSlow } =\n    token;\n\n  const operationBg = new TinyColor(modalMaskBg).setAlpha(0.1);\n  const operationBgHover = operationBg.clone().setAlpha(0.2);\n\n  return {\n    [`${previewCls}-operations`]: {\n      ...resetComponent(token),\n      display: 'flex',\n      flexDirection: 'row-reverse',\n      alignItems: 'center',\n      color: token.previewOperationColor,\n      listStyle: 'none',\n      background: operationBg.toRgbString(),\n      pointerEvents: 'auto',\n\n      '&-operation': {\n        marginInlineStart: paddingSM,\n        padding: paddingSM,\n        cursor: 'pointer',\n        transition: `all ${motionDurationSlow}`,\n        userSelect: 'none',\n\n        '&:hover': {\n          background: operationBgHover.toRgbString(),\n        },\n\n        '&-disabled': {\n          color: previewOperationColorDisabled,\n          pointerEvents: 'none',\n        },\n\n        '&:last-of-type': {\n          marginInlineStart: 0,\n        },\n      },\n\n      '&-progress': {\n        position: 'absolute',\n        left: { _skip_check_: true, value: '50%' },\n        transform: 'translateX(-50%)',\n      },\n\n      '&-icon': {\n        fontSize: token.previewOperationSize,\n      },\n    },\n  };\n};\n\nexport const genPreviewSwitchStyle = (token: ImageToken): CSSObject => {\n  const {\n    modalMaskBg,\n    iconCls,\n    previewOperationColorDisabled,\n    previewCls,\n    zIndexPopup,\n    motionDurationSlow,\n  } = token;\n\n  const operationBg = new TinyColor(modalMaskBg).setAlpha(0.1);\n  const operationBgHover = operationBg.clone().setAlpha(0.2);\n\n  return {\n    [`${previewCls}-switch-left, ${previewCls}-switch-right`]: {\n      position: 'fixed',\n      insetBlockStart: '50%',\n      zIndex: zIndexPopup + 1,\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      width: token.imagePreviewSwitchSize,\n      height: token.imagePreviewSwitchSize,\n      marginTop: -token.imagePreviewSwitchSize / 2,\n      color: token.previewOperationColor,\n      background: operationBg.toRgbString(),\n      borderRadius: '50%',\n      transform: `translateY(-50%)`,\n      cursor: 'pointer',\n      transition: `all ${motionDurationSlow}`,\n      pointerEvents: 'auto',\n      userSelect: 'none',\n\n      '&:hover': {\n        background: operationBgHover.toRgbString(),\n      },\n\n      [`&-disabled`]: {\n        '&, &:hover': {\n          color: previewOperationColorDisabled,\n          background: 'transparent',\n          cursor: 'not-allowed',\n          [`> ${iconCls}`]: {\n            cursor: 'not-allowed',\n          },\n        },\n      },\n      [`> ${iconCls}`]: {\n        fontSize: token.previewOperationSize,\n      },\n    },\n\n    [`${previewCls}-switch-left`]: {\n      insetInlineStart: token.marginSM,\n    },\n\n    [`${previewCls}-switch-right`]: {\n      insetInlineEnd: token.marginSM,\n    },\n  };\n};\n\nexport const genImagePreviewStyle: GenerateStyle<ImageToken> = (token: ImageToken) => {\n  const { motionEaseOut, previewCls, motionDurationSlow, componentCls } = token;\n\n  return [\n    {\n      [`${componentCls}-preview-root`]: {\n        [previewCls]: {\n          height: '100%',\n          textAlign: 'center',\n          pointerEvents: 'none',\n        },\n\n        [`${previewCls}-body`]: {\n          ...genBoxStyle(),\n          overflow: 'hidden',\n        },\n\n        [`${previewCls}-img`]: {\n          maxWidth: '100%',\n          maxHeight: '100%',\n          verticalAlign: 'middle',\n          transform: 'scale3d(1, 1, 1)',\n          cursor: 'grab',\n          transition: `transform ${motionDurationSlow} ${motionEaseOut} 0s`,\n          userSelect: 'none',\n          pointerEvents: 'auto',\n\n          '&-wrapper': {\n            ...genBoxStyle(),\n            transition: `transform ${motionDurationSlow} ${motionEaseOut} 0s`,\n\n            // https://github.com/ant-design/ant-design/issues/39913\n            // TailwindCSS will reset img default style.\n            // Let's set back.\n            display: 'flex',\n            justifyContent: 'center',\n            alignItems: 'center',\n\n            '&::before': {\n              display: 'inline-block',\n              width: 1,\n              height: '50%',\n              marginInlineEnd: -1,\n              content: '\"\"',\n            },\n          },\n        },\n\n        [`${previewCls}-moving`]: {\n          [`${previewCls}-preview-img`]: {\n            cursor: 'grabbing',\n\n            '&-wrapper': {\n              transitionDuration: '0s',\n            },\n          },\n        },\n      },\n    },\n    // Override\n    {\n      [`${componentCls}-preview-root`]: {\n        [`${previewCls}-wrap`]: {\n          zIndex: token.zIndexPopup,\n        },\n      },\n    },\n\n    // Preview operations & switch\n    {\n      [`${componentCls}-preview-operations-wrapper`]: {\n        position: 'fixed',\n        insetBlockStart: 0,\n        insetInlineEnd: 0,\n        zIndex: token.zIndexPopup + 1,\n        width: '100%',\n      },\n      '&': [genPreviewOperationsStyle(token), genPreviewSwitchStyle(token)],\n    },\n  ];\n};\n\nconst genImageStyle: GenerateStyle<ImageToken> = (token: ImageToken) => {\n  const { componentCls } = token;\n  return {\n    // ============================== image ==============================\n    [componentCls]: {\n      position: 'relative',\n      display: 'inline-block',\n      [`${componentCls}-img`]: {\n        width: '100%',\n        height: 'auto',\n        verticalAlign: 'middle',\n      },\n      [`${componentCls}-img-placeholder`]: {\n        backgroundColor: token.colorBgContainerDisabled,\n        backgroundImage:\n          \"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')\",\n        backgroundRepeat: 'no-repeat',\n        backgroundPosition: 'center center',\n        backgroundSize: '30%',\n      },\n      [`${componentCls}-mask`]: {\n        ...genImageMaskStyle(token),\n      },\n      [`${componentCls}-mask:hover`]: {\n        opacity: 1,\n      },\n      [`${componentCls}-placeholder`]: {\n        ...genBoxStyle(),\n      },\n    },\n  };\n};\n\nconst genPreviewMotion: GenerateStyle<ImageToken> = token => {\n  const { previewCls } = token;\n\n  return {\n    [`${previewCls}-root`]: initZoomMotion(token, 'zoom'),\n    [`&`]: initFadeMotion(token, true),\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Image',\n  token => {\n    const previewCls = `${token.componentCls}-preview`;\n\n    const imageToken = mergeToken<ImageToken>(token, {\n      previewCls,\n      modalMaskBg: new TinyColor('#000').setAlpha(0.45).toRgbString(), // FIXME: Shared Token\n      imagePreviewSwitchSize: token.controlHeightLG,\n    });\n\n    return [\n      genImageStyle(imageToken),\n      genImagePreviewStyle(imageToken),\n      genModalMaskStyle(mergeToken<ImageToken>(imageToken, { componentCls: previewCls })),\n      genPreviewMotion(imageToken),\n    ];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase + 80,\n    previewOperationColor: new TinyColor(token.colorTextLightSolid).toRgbString(),\n    previewOperationColorDisabled: new TinyColor(token.colorTextLightSolid)\n      .setAlpha(0.25)\n      .toRgbString(),\n    previewOperationSize: token.fontSizeIcon * 1.5, // FIXME: fontSizeIconLG\n  }),\n);\n"
  },
  {
    "path": "components/index.ts",
    "content": "import type { App } from 'vue';\n\nimport * as components from './components';\nimport { default as version } from './version';\nimport cssinjs from './_util/cssinjs';\nexport * from './components';\nexport * from './_util/cssinjs';\n\nexport { default as theme } from './theme';\nexport const install = function (app: App) {\n  Object.keys(components).forEach(key => {\n    const component = components[key];\n    if (component.install) {\n      app.use(component);\n    }\n  });\n  app.use(cssinjs.StyleProvider);\n  app.config.globalProperties.$message = components.message;\n  app.config.globalProperties.$notification = components.notification;\n  app.config.globalProperties.$info = components.Modal.info;\n  app.config.globalProperties.$success = components.Modal.success;\n  app.config.globalProperties.$error = components.Modal.error;\n  app.config.globalProperties.$warning = components.Modal.warning;\n  app.config.globalProperties.$confirm = components.Modal.confirm;\n  app.config.globalProperties.$destroyAll = components.Modal.destroyAll;\n  return app;\n};\n\nexport { version, cssinjs };\n\nexport default {\n  version,\n  install,\n};\n"
  },
  {
    "path": "components/input/ClearableLabeledInput.tsx",
    "content": "import classNames from '../_util/classNames';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport type { CSSProperties, PropType, VNode } from 'vue';\nimport { defineComponent } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport { anyType, tuple } from '../_util/type';\nimport type { Direction, SizeType } from '../config-provider';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { hasAddon } from './util';\nimport { FormItemInputContext } from '../form/FormItemContext';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\n\nconst ClearableInputType = ['text', 'input'] as const;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ClearableLabeledInput',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    inputType: PropTypes.oneOf(tuple('text', 'input')),\n    value: anyType<VueNode>(),\n    defaultValue: anyType<VueNode>(),\n    allowClear: { type: Boolean, default: undefined },\n    element: anyType<VueNode>(),\n    handleReset: Function as PropType<MouseEventHandler>,\n    disabled: { type: Boolean, default: undefined },\n    direction: { type: String as PropType<Direction> },\n    size: { type: String as PropType<SizeType> },\n    suffix: anyType<VueNode>(),\n    prefix: anyType<VueNode>(),\n    addonBefore: anyType<VueNode>(),\n    addonAfter: anyType<VueNode>(),\n    readonly: { type: Boolean, default: undefined },\n    focused: { type: Boolean, default: undefined },\n    bordered: { type: Boolean, default: true },\n    triggerFocus: { type: Function as PropType<() => void> },\n    hidden: Boolean,\n    status: String as PropType<InputStatus>,\n    hashId: String,\n  },\n  setup(props, { slots, attrs }) {\n    const statusContext = FormItemInputContext.useInject();\n    const renderClearIcon = (prefixCls: string) => {\n      const { value, disabled, readonly, handleReset, suffix = slots.suffix } = props;\n      const needClear = !disabled && !readonly && value;\n      const className = `${prefixCls}-clear-icon`;\n      return (\n        <CloseCircleFilled\n          onClick={handleReset}\n          // Do not trigger onBlur when clear input\n          onMousedown={e => e.preventDefault()}\n          class={classNames(\n            {\n              [`${className}-hidden`]: !needClear,\n              [`${className}-has-suffix`]: !!suffix,\n            },\n            className,\n          )}\n          role=\"button\"\n        />\n      );\n    };\n    const renderTextAreaWithClearIcon = (prefixCls: string, element: VNode) => {\n      const {\n        value,\n        allowClear,\n        direction,\n        bordered,\n        hidden,\n        status: customStatus,\n        addonAfter = slots.addonAfter,\n        addonBefore = slots.addonBefore,\n        hashId,\n      } = props;\n\n      const { status: contextStatus, hasFeedback } = statusContext;\n\n      if (!allowClear) {\n        return cloneElement(element, {\n          value,\n          disabled: props.disabled,\n        });\n      }\n      const affixWrapperCls = classNames(\n        `${prefixCls}-affix-wrapper`,\n        `${prefixCls}-affix-wrapper-textarea-with-clear-btn`,\n        getStatusClassNames(\n          `${prefixCls}-affix-wrapper`,\n          getMergedStatus(contextStatus, customStatus),\n          hasFeedback,\n        ),\n        {\n          [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl',\n          [`${prefixCls}-affix-wrapper-borderless`]: !bordered,\n          // className will go to addon wrapper\n          [`${attrs.class}`]: !hasAddon({ addonAfter, addonBefore }) && attrs.class,\n        },\n        hashId,\n      );\n      return (\n        <span class={affixWrapperCls} style={attrs.style as CSSProperties} hidden={hidden}>\n          {cloneElement(element, {\n            style: null,\n            value,\n            disabled: props.disabled,\n          })}\n          {renderClearIcon(prefixCls)}\n        </span>\n      );\n    };\n\n    return () => {\n      const { prefixCls, inputType, element = slots.element?.() } = props;\n      if (inputType === ClearableInputType[0]) {\n        return renderTextAreaWithClearIcon(prefixCls, element as VNode);\n      }\n      return null;\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/Group.tsx",
    "content": "import type { PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport type { SizeType } from '../config-provider';\nimport { FormItemInputContext } from '../form/FormItemContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AInputGroup',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    size: { type: String as PropType<SizeType> },\n    compact: { type: Boolean, default: undefined },\n  },\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction, getPrefixCls } = useConfigInject('input-group', props);\n    const formItemInputContext = FormItemInputContext.useInject();\n    FormItemInputContext.useProvide(formItemInputContext, {\n      isFormItemInput: false,\n    });\n\n    // style\n    const inputPrefixCls = computed(() => getPrefixCls('input'));\n    const [wrapSSR, hashId] = useStyle(inputPrefixCls);\n\n    const cls = computed(() => {\n      const pre = prefixCls.value;\n      return {\n        [`${pre}`]: true,\n        [hashId.value]: true,\n        [`${pre}-lg`]: props.size === 'large',\n        [`${pre}-sm`]: props.size === 'small',\n        [`${pre}-compact`]: props.compact,\n        [`${pre}-rtl`]: direction.value === 'rtl',\n      };\n    });\n    return () => {\n      return wrapSSR(\n        <span {...attrs} class={classNames(cls.value, attrs.class)}>\n          {slots.default?.()}\n        </span>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/Input.tsx",
    "content": "import { onBeforeUpdate, computed, onBeforeUnmount, onMounted, ref, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport {\n  FormItemInputContext,\n  NoFormStatus,\n  useInjectFormItemContext,\n} from '../form/FormItemContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport type { InputFocusOptions } from '../vc-input/utils/commonUtils';\nimport { hasPrefixSuffix } from '../vc-input/utils/commonUtils';\nimport VcInput from '../vc-input/Input';\nimport inputProps from './inputProps';\nimport omit from '../_util/omit';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport { NoCompactStyle, useCompactItemContext } from '../space/Compact';\n\n// CSSINJS\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AInput',\n  inheritAttrs: false,\n  props: inputProps(),\n  setup(props, { slots, attrs, expose, emit }) {\n    const inputRef = ref();\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const { direction, prefixCls, size, autocomplete } = useConfigInject('input', props);\n\n    // ===================== Compact Item =====================\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const mergedSize = computed(() => {\n      return compactSize.value || size.value;\n    });\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const disabled = useInjectDisabled();\n\n    const focus = (option?: InputFocusOptions) => {\n      inputRef.value?.focus(option);\n    };\n\n    const blur = () => {\n      inputRef.value?.blur();\n    };\n\n    const setSelectionRange = (\n      start: number,\n      end: number,\n      direction?: 'forward' | 'backward' | 'none',\n    ) => {\n      inputRef.value?.setSelectionRange(start, end, direction);\n    };\n\n    const select = () => {\n      inputRef.value?.select();\n    };\n\n    expose({\n      focus,\n      blur,\n      input: inputRef,\n      setSelectionRange,\n      select,\n    });\n    // ===================== Remove Password value =====================\n    const removePasswordTimeoutRef = ref<any[]>([]);\n    const removePasswordTimeout = () => {\n      removePasswordTimeoutRef.value.push(\n        setTimeout(() => {\n          if (\n            inputRef.value?.input &&\n            inputRef.value?.input.getAttribute('type') === 'password' &&\n            inputRef.value?.input.hasAttribute('value')\n          ) {\n            inputRef.value?.input.removeAttribute('value');\n          }\n        }),\n      );\n    };\n    onMounted(() => {\n      removePasswordTimeout();\n    });\n    onBeforeUpdate(() => {\n      removePasswordTimeoutRef.value.forEach(item => clearTimeout(item));\n    });\n    onBeforeUnmount(() => {\n      removePasswordTimeoutRef.value.forEach(item => clearTimeout(item));\n    });\n\n    const handleBlur = (e: FocusEvent) => {\n      removePasswordTimeout();\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n\n    const handleFocus = (e: FocusEvent) => {\n      removePasswordTimeout();\n      emit('focus', e);\n    };\n\n    const triggerChange = (e: Event) => {\n      emit('update:value', (e.target as HTMLInputElement).value);\n      emit('change', e);\n      emit('input', e);\n      formItemContext.onFieldChange();\n    };\n\n    return () => {\n      const { hasFeedback, feedbackIcon } = formItemInputContext;\n      const {\n        allowClear,\n        bordered = true,\n        prefix = slots.prefix?.(),\n        suffix = slots.suffix?.(),\n        addonAfter = slots.addonAfter?.(),\n        addonBefore = slots.addonBefore?.(),\n        id = formItemContext.id?.value,\n        ...rest\n      } = props;\n      const suffixNode = (hasFeedback || suffix) && (\n        <>\n          {suffix}\n          {hasFeedback && feedbackIcon}\n        </>\n      );\n      const prefixClsValue = prefixCls.value;\n      const inputHasPrefixSuffix = hasPrefixSuffix({ prefix, suffix }) || !!hasFeedback;\n      const clearIcon = slots.clearIcon || (() => <CloseCircleFilled />);\n      return wrapSSR(\n        <VcInput\n          {...attrs}\n          {...omit(rest, ['onUpdate:value', 'onChange', 'onInput'])}\n          onChange={triggerChange}\n          id={id}\n          disabled={props.disabled ?? disabled.value}\n          ref={inputRef}\n          prefixCls={prefixClsValue}\n          autocomplete={autocomplete.value}\n          onBlur={handleBlur}\n          onFocus={handleFocus}\n          prefix={prefix}\n          suffix={suffixNode}\n          allowClear={allowClear}\n          addonAfter={\n            addonAfter && (\n              <NoCompactStyle>\n                <NoFormStatus>{addonAfter}</NoFormStatus>\n              </NoCompactStyle>\n            )\n          }\n          addonBefore={\n            addonBefore && (\n              <NoCompactStyle>\n                <NoFormStatus>{addonBefore}</NoFormStatus>\n              </NoCompactStyle>\n            )\n          }\n          class={[attrs.class, compactItemClassnames.value]}\n          inputClassName={classNames(\n            {\n              [`${prefixClsValue}-sm`]: mergedSize.value === 'small',\n              [`${prefixClsValue}-lg`]: mergedSize.value === 'large',\n              [`${prefixClsValue}-rtl`]: direction.value === 'rtl',\n              [`${prefixClsValue}-borderless`]: !bordered,\n            },\n            !inputHasPrefixSuffix && getStatusClassNames(prefixClsValue, mergedStatus.value),\n            hashId.value,\n          )}\n          affixWrapperClassName={classNames(\n            {\n              [`${prefixClsValue}-affix-wrapper-sm`]: mergedSize.value === 'small',\n              [`${prefixClsValue}-affix-wrapper-lg`]: mergedSize.value === 'large',\n              [`${prefixClsValue}-affix-wrapper-rtl`]: direction.value === 'rtl',\n              [`${prefixClsValue}-affix-wrapper-borderless`]: !bordered,\n            },\n            getStatusClassNames(`${prefixClsValue}-affix-wrapper`, mergedStatus.value, hasFeedback),\n            hashId.value,\n          )}\n          wrapperClassName={classNames(\n            {\n              [`${prefixClsValue}-group-rtl`]: direction.value === 'rtl',\n            },\n            hashId.value,\n          )}\n          groupClassName={classNames(\n            {\n              [`${prefixClsValue}-group-wrapper-sm`]: mergedSize.value === 'small',\n              [`${prefixClsValue}-group-wrapper-lg`]: mergedSize.value === 'large',\n              [`${prefixClsValue}-group-wrapper-rtl`]: direction.value === 'rtl',\n            },\n            getStatusClassNames(`${prefixClsValue}-group-wrapper`, mergedStatus.value, hasFeedback),\n            hashId.value,\n          )}\n          v-slots={{ ...slots, clearIcon }}\n        ></VcInput>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/Password.tsx",
    "content": "import classNames from '../_util/classNames';\nimport { isValidElement } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport Input from './Input';\nimport EyeOutlined from '@ant-design/icons-vue/EyeOutlined';\nimport EyeInvisibleOutlined from '@ant-design/icons-vue/EyeInvisibleOutlined';\nimport type { InputProps } from './inputProps';\nimport inputProps from './inputProps';\nimport type { PropType } from 'vue';\nimport { computed, defineComponent, shallowRef, watchEffect } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\n\nconst ActionMap = {\n  click: 'onClick',\n  hover: 'onMouseover',\n};\nconst defaultIconRender = (visible: boolean) =>\n  visible ? <EyeOutlined /> : <EyeInvisibleOutlined />;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AInputPassword',\n  inheritAttrs: false,\n  props: {\n    ...inputProps(),\n    prefixCls: String,\n    inputPrefixCls: String,\n    action: { type: String, default: 'click' },\n    visibilityToggle: { type: Boolean, default: true },\n    visible: { type: Boolean, default: undefined },\n    'onUpdate:visible': Function as PropType<(visible: boolean) => void>,\n    iconRender: Function,\n  },\n  setup(props, { slots, attrs, expose, emit }) {\n    const visible = shallowRef(false);\n    const onVisibleChange = () => {\n      const { disabled } = props;\n      if (disabled) {\n        return;\n      }\n      visible.value = !visible.value;\n      emit('update:visible', visible.value);\n    };\n    watchEffect(() => {\n      if (props.visible !== undefined) {\n        visible.value = !!props.visible;\n      }\n    });\n    const inputRef = shallowRef();\n    const focus = () => {\n      inputRef.value?.focus();\n    };\n    const blur = () => {\n      inputRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n    const getIcon = (prefixCls: string) => {\n      const { action, iconRender = slots.iconRender || defaultIconRender } = props;\n      const iconTrigger = ActionMap[action] || '';\n      const icon = iconRender(visible.value);\n      const iconProps = {\n        [iconTrigger]: onVisibleChange,\n        class: `${prefixCls}-icon`,\n        key: 'passwordIcon',\n        onMousedown: (e: MouseEvent) => {\n          // Prevent focused state lost\n          // https://github.com/ant-design/ant-design/issues/15173\n          e.preventDefault();\n        },\n        onMouseup: (e: MouseEvent) => {\n          // Prevent caret position change\n          // https://github.com/ant-design/ant-design/issues/23524\n          e.preventDefault();\n        },\n      };\n      return cloneElement(isValidElement(icon) ? icon : <span>{icon}</span>, iconProps);\n    };\n    const { prefixCls, getPrefixCls } = useConfigInject('input-password', props);\n    const inputPrefixCls = computed(() => getPrefixCls('input', props.inputPrefixCls));\n    const renderPassword = () => {\n      const { size, visibilityToggle, ...restProps } = props;\n\n      const suffixIcon = visibilityToggle && getIcon(prefixCls.value);\n      const inputClassName = classNames(prefixCls.value, attrs.class, {\n        [`${prefixCls.value}-${size}`]: !!size,\n      });\n\n      const omittedProps = {\n        ...omit(restProps, ['suffix', 'iconRender', 'action']),\n        ...attrs,\n        type: visible.value ? 'text' : 'password',\n        class: inputClassName,\n        prefixCls: inputPrefixCls.value,\n        suffix: suffixIcon,\n      } as InputProps;\n\n      if (size) {\n        omittedProps.size = size;\n      }\n\n      return <Input ref={inputRef} {...omittedProps} v-slots={slots} />;\n    };\n    return () => {\n      return renderPassword();\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/ResizableTextArea.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport {\n  computed,\n  watchEffect,\n  getCurrentInstance,\n  watch,\n  onBeforeUnmount,\n  ref,\n  defineComponent,\n} from 'vue';\nimport ResizeObserver from '../vc-resize-observer';\nimport classNames from '../_util/classNames';\nimport raf from '../_util/raf';\nimport warning from '../_util/warning';\nimport omit from '../_util/omit';\nimport { textAreaProps } from './inputProps';\nimport calculateAutoSizeStyle from './calculateNodeHeight';\nimport type { BaseInputExpose } from '../_util/BaseInput';\nimport BaseInput from '../_util/BaseInput';\n\nconst RESIZE_START = 0;\nconst RESIZE_MEASURING = 1;\nconst RESIZE_STABLE = 2;\n\nconst ResizableTextArea = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ResizableTextArea',\n  inheritAttrs: false,\n  props: textAreaProps(),\n  setup(props, { attrs, emit, expose }) {\n    let nextFrameActionId: any;\n    let resizeFrameId: any;\n    const textAreaRef = ref<BaseInputExpose>();\n    const textareaStyles = ref({});\n    const resizeStatus = ref(RESIZE_STABLE);\n    onBeforeUnmount(() => {\n      raf.cancel(nextFrameActionId);\n      raf.cancel(resizeFrameId);\n    });\n\n    // https://github.com/ant-design/ant-design/issues/21870\n    const fixFirefoxAutoScroll = () => {\n      try {\n        if (textAreaRef.value && document.activeElement === textAreaRef.value.input) {\n          const currentStart = textAreaRef.value.getSelectionStart();\n          const currentEnd = textAreaRef.value.getSelectionEnd();\n          const scrollTop = textAreaRef.value.getScrollTop();\n          textAreaRef.value.setSelectionRange(currentStart, currentEnd);\n          textAreaRef.value.setScrollTop(scrollTop);\n        }\n      } catch (e) {\n        // Fix error in Chrome:\n        // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n        // http://stackoverflow.com/q/21177489/3040605\n      }\n    };\n    const minRows = ref<number>();\n    const maxRows = ref<number>();\n    watchEffect(() => {\n      const autoSize = props.autoSize || props.autosize;\n      if (autoSize) {\n        minRows.value = autoSize.minRows;\n        maxRows.value = autoSize.maxRows;\n      } else {\n        minRows.value = undefined;\n        maxRows.value = undefined;\n      }\n    });\n    const needAutoSize = computed(() => !!(props.autoSize || props.autosize));\n    const startResize = () => {\n      resizeStatus.value = RESIZE_START;\n    };\n    watch(\n      [() => props.value, minRows, maxRows, needAutoSize],\n      () => {\n        if (needAutoSize.value) {\n          startResize();\n        }\n      },\n      { immediate: true },\n    );\n    const autoSizeStyle = ref<CSSProperties>();\n    watch(\n      [resizeStatus, textAreaRef],\n      () => {\n        if (!textAreaRef.value) return;\n        if (resizeStatus.value === RESIZE_START) {\n          resizeStatus.value = RESIZE_MEASURING;\n        } else if (resizeStatus.value === RESIZE_MEASURING) {\n          const textareaStyles = calculateAutoSizeStyle(\n            textAreaRef.value.input as HTMLTextAreaElement,\n            false,\n            minRows.value,\n            maxRows.value,\n          );\n          resizeStatus.value = RESIZE_STABLE;\n          autoSizeStyle.value = textareaStyles;\n        } else {\n          fixFirefoxAutoScroll();\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n    const instance = getCurrentInstance();\n    const resizeRafRef = ref();\n    const cleanRaf = () => {\n      raf.cancel(resizeRafRef.value);\n    };\n    const onInternalResize = (size: { width: number; height: number }) => {\n      if (resizeStatus.value === RESIZE_STABLE) {\n        emit('resize', size);\n\n        if (needAutoSize.value) {\n          cleanRaf();\n          resizeRafRef.value = raf(() => {\n            startResize();\n          });\n        }\n      }\n    };\n    onBeforeUnmount(() => {\n      cleanRaf();\n    });\n    const resizeTextarea = () => {\n      startResize();\n    };\n\n    expose({\n      resizeTextarea,\n      textArea: computed(() => textAreaRef.value?.input),\n      instance,\n    });\n    warning(\n      props.autosize === undefined,\n      'Input.TextArea',\n      'autosize is deprecated, please use autoSize instead.',\n    );\n\n    const renderTextArea = () => {\n      const { prefixCls, disabled } = props;\n      const otherProps = omit(props, [\n        'prefixCls',\n        'onPressEnter',\n        'autoSize',\n        'autosize',\n        'defaultValue',\n        'allowClear',\n        'type',\n        'maxlength',\n        'valueModifiers',\n      ]);\n      const cls = classNames(prefixCls, attrs.class, {\n        [`${prefixCls}-disabled`]: disabled,\n      });\n      const mergedAutoSizeStyle = needAutoSize.value ? autoSizeStyle.value : null;\n      const style = [attrs.style, textareaStyles.value, mergedAutoSizeStyle];\n      const textareaProps: any = {\n        ...otherProps,\n        ...attrs,\n        style,\n        class: cls,\n      };\n      if (resizeStatus.value === RESIZE_START || resizeStatus.value === RESIZE_MEASURING) {\n        style.push({\n          overflowX: 'hidden',\n          overflowY: 'hidden',\n        });\n      }\n      if (!textareaProps.autofocus) {\n        delete textareaProps.autofocus;\n      }\n      if (textareaProps.rows === 0) {\n        delete textareaProps.rows;\n      }\n      return (\n        <ResizeObserver onResize={onInternalResize} disabled={!needAutoSize.value}>\n          <BaseInput {...textareaProps} ref={textAreaRef} tag=\"textarea\"></BaseInput>\n        </ResizeObserver>\n      );\n    };\n\n    return () => {\n      return renderTextArea();\n    };\n  },\n});\n\nexport default ResizableTextArea;\n"
  },
  {
    "path": "components/input/Search.tsx",
    "content": "import type { PropType } from 'vue';\nimport { computed, shallowRef, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport Input from './Input';\nimport SearchOutlined from '@ant-design/icons-vue/SearchOutlined';\nimport Button from '../button';\nimport { cloneElement } from '../_util/vnode';\nimport PropTypes from '../_util/vue-types';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport type {\n  ChangeEvent,\n  CompositionEventHandler,\n  MouseEventHandler,\n} from '../_util/EventInterface';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport inputProps from './inputProps';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AInputSearch',\n  inheritAttrs: false,\n  props: {\n    ...inputProps(),\n    inputPrefixCls: String,\n    // 不能设置默认值 https://github.com/vueComponent/ant-design-vue/issues/1916\n    enterButton: PropTypes.any,\n    onSearch: {\n      type: Function as PropType<\n        (value: string, event?: ChangeEvent | MouseEvent | KeyboardEvent) => void\n      >,\n    },\n  },\n  setup(props, { slots, attrs, expose, emit }) {\n    const inputRef = shallowRef();\n    const composedRef = shallowRef(false);\n    const focus = () => {\n      inputRef.value?.focus();\n    };\n    const blur = () => {\n      inputRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n\n    const onChange = (e: ChangeEvent) => {\n      emit('update:value', (e.target as HTMLInputElement).value);\n      if (e && e.target && e.type === 'click') {\n        emit('search', e.target.value, e);\n      }\n      emit('change', e);\n    };\n\n    const onMousedown: MouseEventHandler = e => {\n      if (document.activeElement === inputRef.value?.input) {\n        e.preventDefault();\n      }\n    };\n\n    const onSearch = (e: MouseEvent | KeyboardEvent) => {\n      emit('search', inputRef.value?.input?.stateValue, e);\n    };\n\n    const onPressEnter = (e: KeyboardEvent) => {\n      if (composedRef.value || props.loading) {\n        return;\n      }\n      onSearch(e);\n    };\n\n    const handleOnCompositionStart: CompositionEventHandler = e => {\n      composedRef.value = true;\n      emit('compositionstart', e);\n    };\n\n    const handleOnCompositionEnd: CompositionEventHandler = e => {\n      composedRef.value = false;\n      emit('compositionend', e);\n    };\n    const { prefixCls, getPrefixCls, direction, size } = useConfigInject('input-search', props);\n    const inputPrefixCls = computed(() => getPrefixCls('input', props.inputPrefixCls));\n    return () => {\n      const {\n        disabled,\n        loading,\n        addonAfter = slots.addonAfter?.(),\n        suffix = slots.suffix?.(),\n        ...restProps\n      } = props;\n      let { enterButton = slots.enterButton?.() ?? false } = props;\n      enterButton = enterButton || enterButton === '';\n      const searchIcon = typeof enterButton === 'boolean' ? <SearchOutlined /> : null;\n      const btnClassName = `${prefixCls.value}-button`;\n\n      const enterButtonAsElement = Array.isArray(enterButton) ? enterButton[0] : enterButton;\n      let button: any;\n      const isAntdButton =\n        enterButtonAsElement.type &&\n        isPlainObject(enterButtonAsElement.type) &&\n        enterButtonAsElement.type.__ANT_BUTTON;\n      if (isAntdButton || enterButtonAsElement.tagName === 'button') {\n        button = cloneElement(\n          enterButtonAsElement,\n          {\n            onMousedown,\n            onClick: onSearch,\n            key: 'enterButton',\n            ...(isAntdButton\n              ? {\n                  class: btnClassName,\n                  size: size.value,\n                }\n              : {}),\n          },\n          false,\n        );\n      } else {\n        const iconOnly = searchIcon && !enterButton;\n        button = (\n          <Button\n            class={btnClassName}\n            type={enterButton ? 'primary' : undefined}\n            size={size.value}\n            disabled={disabled}\n            key=\"enterButton\"\n            onMousedown={onMousedown}\n            onClick={onSearch}\n            loading={loading}\n            icon={iconOnly ? searchIcon : null}\n          >\n            {iconOnly ? null : searchIcon || enterButton}\n          </Button>\n        );\n      }\n      if (addonAfter) {\n        button = [button, addonAfter];\n      }\n      const cls = classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-${size.value}`]: !!size.value,\n          [`${prefixCls.value}-with-button`]: !!enterButton,\n        },\n        attrs.class,\n      );\n      return (\n        <Input\n          ref={inputRef}\n          {...omit(restProps, ['onUpdate:value', 'onSearch', 'enterButton'])}\n          {...attrs}\n          onPressEnter={onPressEnter}\n          onCompositionstart={handleOnCompositionStart}\n          onCompositionend={handleOnCompositionEnd}\n          size={size.value}\n          prefixCls={inputPrefixCls.value}\n          addonAfter={button}\n          suffix={suffix}\n          onChange={onChange}\n          class={cls}\n          disabled={disabled}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/TextArea.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport ClearableLabeledInput from './ClearableLabeledInput';\nimport ResizableTextArea from './ResizableTextArea';\nimport { textAreaProps } from './inputProps';\nimport type { InputFocusOptions } from '../vc-input/utils/commonUtils';\nimport { fixControlledValue, resolveOnChange, triggerFocus } from '../vc-input/utils/commonUtils';\nimport classNames from '../_util/classNames';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport type { FocusEventHandler } from '../_util/EventInterface';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport type { VueNode } from '../_util/type';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\n\n// CSSINJS\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nfunction fixEmojiLength(value: string, maxLength: number) {\n  return [...(value || '')].slice(0, maxLength).join('');\n}\n\nfunction setTriggerValue(\n  isCursorInEnd: boolean,\n  preValue: string,\n  triggerValue: string,\n  maxLength: number,\n) {\n  let newTriggerValue = triggerValue;\n  if (isCursorInEnd) {\n    // 光标在尾部，直接截断\n    newTriggerValue = fixEmojiLength(triggerValue, maxLength);\n  } else if (\n    [...(preValue || '')].length < triggerValue.length &&\n    [...(triggerValue || '')].length > maxLength\n  ) {\n    // 光标在中间，如果最后的值超过最大值，则采用原先的值\n    newTriggerValue = preValue;\n  }\n  return newTriggerValue;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATextarea',\n  inheritAttrs: false,\n  props: textAreaProps(),\n  setup(props, { attrs, expose, emit }) {\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const stateValue = shallowRef(props.value ?? props.defaultValue);\n    const resizableTextArea = shallowRef();\n    const mergedValue = shallowRef('');\n    const { prefixCls, size, direction } = useConfigInject('input', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const disabled = useInjectDisabled();\n\n    const showCount = computed(() => {\n      return (props.showCount as any) === '' || props.showCount || false;\n    });\n    // Max length value\n    const hasMaxLength = computed(() => Number(props.maxlength) > 0);\n    const compositing = shallowRef(false);\n\n    const oldCompositionValueRef = shallowRef<string>();\n    const oldSelectionStartRef = shallowRef<number>(0);\n    const onInternalCompositionStart = (e: CompositionEvent) => {\n      compositing.value = true;\n      // 拼音输入前保存一份旧值\n      oldCompositionValueRef.value = mergedValue.value;\n      // 保存旧的光标位置\n      oldSelectionStartRef.value = (e.currentTarget as any).selectionStart;\n      emit('compositionstart', e);\n    };\n\n    const onInternalCompositionEnd = (e: CompositionEvent) => {\n      compositing.value = false;\n      let triggerValue = (e.currentTarget as any).value;\n      if (hasMaxLength.value) {\n        const isCursorInEnd =\n          oldSelectionStartRef.value >= props.maxlength + 1 ||\n          oldSelectionStartRef.value === oldCompositionValueRef.value?.length;\n        triggerValue = setTriggerValue(\n          isCursorInEnd,\n          oldCompositionValueRef.value,\n          triggerValue,\n          props.maxlength,\n        );\n      }\n      // Patch composition onChange when value changed\n      if (triggerValue !== mergedValue.value) {\n        setValue(triggerValue);\n        resolveOnChange(e.currentTarget as any, e, triggerChange, triggerValue);\n      }\n\n      emit('compositionend', e);\n    };\n    const instance = getCurrentInstance();\n    watch(\n      () => props.value,\n      () => {\n        if ('value' in instance.vnode.props || {}) {\n          stateValue.value = props.value ?? '';\n        }\n      },\n    );\n\n    const focus = (option?: InputFocusOptions) => {\n      triggerFocus(resizableTextArea.value?.textArea, option);\n    };\n\n    const blur = () => {\n      resizableTextArea.value?.textArea?.blur();\n    };\n\n    const setValue = (value: string | number, callback?: Function) => {\n      if (stateValue.value === value) {\n        return;\n      }\n      if (props.value === undefined) {\n        stateValue.value = value;\n      } else {\n        nextTick(() => {\n          if (resizableTextArea.value.textArea.value !== mergedValue.value) {\n            resizableTextArea.value?.instance.update?.();\n          }\n        });\n      }\n      nextTick(() => {\n        callback && callback();\n      });\n    };\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === 13) {\n        emit('pressEnter', e);\n      }\n      emit('keydown', e);\n    };\n\n    const onBlur: FocusEventHandler = e => {\n      const { onBlur } = props;\n      onBlur?.(e);\n      formItemContext.onFieldBlur();\n    };\n    const triggerChange = (e: Event) => {\n      emit('update:value', (e.target as HTMLInputElement).value);\n      emit('change', e);\n      emit('input', e);\n      formItemContext.onFieldChange();\n    };\n\n    const handleReset = (e: MouseEvent) => {\n      resolveOnChange(resizableTextArea.value.textArea, e, triggerChange);\n      setValue('', () => {\n        focus();\n      });\n    };\n\n    const handleChange = (e: Event) => {\n      let triggerValue = (e.target as any).value;\n      if (stateValue.value === triggerValue) return;\n\n      if (hasMaxLength.value) {\n        // 1. 复制粘贴超过maxlength的情况 2.未超过maxlength的情况\n        const target = e.target as any;\n        const isCursorInEnd =\n          target.selectionStart >= props.maxlength + 1 ||\n          target.selectionStart === triggerValue.length ||\n          !target.selectionStart;\n        triggerValue = setTriggerValue(\n          isCursorInEnd,\n          mergedValue.value,\n          triggerValue,\n          props.maxlength,\n        );\n      }\n      resolveOnChange(e.currentTarget as any, e, triggerChange, triggerValue);\n      setValue(triggerValue);\n    };\n    const renderTextArea = () => {\n      const { class: customClass } = attrs;\n      const { bordered = true } = props;\n      const resizeProps = {\n        ...omit(props, ['allowClear']),\n        ...attrs,\n        class: [\n          {\n            [`${prefixCls.value}-borderless`]: !bordered,\n            [`${customClass}`]: customClass && !showCount.value,\n            [`${prefixCls.value}-sm`]: size.value === 'small',\n            [`${prefixCls.value}-lg`]: size.value === 'large',\n          },\n          getStatusClassNames(prefixCls.value, mergedStatus.value),\n          hashId.value,\n        ],\n        disabled: disabled.value,\n        showCount: null,\n        prefixCls: prefixCls.value,\n        onInput: handleChange,\n        onChange: handleChange,\n        onBlur,\n        onKeydown: handleKeyDown,\n        onCompositionstart: onInternalCompositionStart,\n        onCompositionend: onInternalCompositionEnd,\n      };\n      if (props.valueModifiers?.lazy) {\n        delete resizeProps.onInput;\n      }\n      return (\n        <ResizableTextArea\n          {...resizeProps}\n          id={resizeProps?.id ?? formItemContext.id.value}\n          ref={resizableTextArea}\n          maxlength={props.maxlength}\n          lazy={props.lazy}\n        />\n      );\n    };\n\n    expose({\n      focus,\n      blur,\n      resizableTextArea,\n    });\n\n    watchEffect(() => {\n      let val = fixControlledValue(stateValue.value);\n      if (\n        !compositing.value &&\n        hasMaxLength.value &&\n        (props.value === null || props.value === undefined)\n      ) {\n        // fix #27612 将value转为数组进行截取，解决 '😂'.length === 2 等emoji表情导致的截取乱码的问题\n        val = fixEmojiLength(val, props.maxlength);\n      }\n      mergedValue.value = val;\n    });\n    return () => {\n      const { maxlength, bordered = true, hidden } = props;\n      const { style, class: customClass } = attrs;\n      const inputProps: any = {\n        ...props,\n        ...attrs,\n        prefixCls: prefixCls.value,\n        inputType: 'text',\n        handleReset,\n        direction: direction.value,\n        bordered,\n        style: showCount.value ? undefined : style,\n        hashId: hashId.value,\n        disabled: props.disabled ?? disabled.value,\n      };\n\n      let textareaNode = (\n        <ClearableLabeledInput\n          {...inputProps}\n          value={mergedValue.value}\n          v-slots={{ element: renderTextArea }}\n          status={props.status}\n        />\n      );\n\n      if (showCount.value || formItemInputContext.hasFeedback) {\n        const valueLength = [...mergedValue.value].length;\n        let dataCount: VueNode = '';\n        if (typeof showCount.value === 'object') {\n          dataCount = showCount.value.formatter({\n            value: mergedValue.value,\n            count: valueLength,\n            maxlength,\n          });\n        } else {\n          dataCount = `${valueLength}${hasMaxLength.value ? ` / ${maxlength}` : ''}`;\n        }\n        textareaNode = (\n          <div\n            hidden={hidden}\n            class={classNames(\n              `${prefixCls.value}-textarea`,\n              {\n                [`${prefixCls.value}-textarea-rtl`]: direction.value === 'rtl',\n                [`${prefixCls.value}-textarea-show-count`]: showCount.value,\n                [`${prefixCls.value}-textarea-in-form-item`]: formItemInputContext.isFormItemInput,\n              },\n              `${prefixCls.value}-textarea-show-count`,\n              customClass,\n              hashId.value,\n            )}\n            style={style as CSSProperties}\n            data-count={typeof dataCount !== 'object' ? dataCount : undefined}\n          >\n            {textareaNode}\n            {formItemInputContext.hasFeedback && (\n              <span class={`${prefixCls.value}-textarea-suffix`}>\n                {formItemInputContext.feedbackIcon}\n              </span>\n            )}\n          </div>\n        );\n      }\n      return wrapSSR(textareaNode);\n    };\n  },\n});\n"
  },
  {
    "path": "components/input/__tests__/Search.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Input from '../index';\nimport Button from '../../button';\nimport focusTest from '../../../tests/shared/focusTest';\n\nconst { Search } = Input;\ndescribe('Input.Search', () => {\n  focusTest(Search);\n\n  it('should support custom button', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Search enterButton={<button type=\"button\">ok</button>} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('should support custom Button', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Search enterButton={<Button>ok</Button>} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n  it('should support VueNode suffix without error', () => {\n    const fn = () => {\n      mount({\n        render() {\n          return <Search suffix={<div>ok</div>} />;\n        },\n      });\n    };\n    expect(fn).not.toThrow();\n  });\n  it('should disable enter button when disabled prop is true', () => {\n    const wrapper = mount({\n      render() {\n        return <Search placeholder=\"input search text\" enterButton disabled />;\n      },\n    });\n    expect(wrapper.findAll('.ant-btn-primary[disabled]')).toHaveLength(1);\n  });\n\n  // it('should trigger onSearch when click search icon', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" onSearch={onSearch} />\n  //   );\n  //   wrapper.find('.anticon-search').simulate('click');\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'click',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n\n  // it('should trigger onSearch when click search button', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" enterButton onSearch={onSearch} />\n  //   );\n  //   wrapper.find('Button').simulate('click');\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'click',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n\n  // it('should trigger onSearch when click search button with text', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" enterButton=\"button text\" onSearch={onSearch} />\n  //   );\n  //   wrapper.find('Button').simulate('click');\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'click',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n\n  // it('should trigger onSearch when click search button with customize button', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" enterButton={<Button>antd button</Button>} onSearch={onSearch} />\n  //   );\n  //   wrapper.find('Button').simulate('click');\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'click',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n\n  // it('should trigger onSearch when click search button of native', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" enterButton={<button type=\"button\">antd button</button>} onSearch={onSearch} />\n  //   );\n  //   wrapper.find('button').simulate('click');\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'click',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n\n  // it('should trigger onSearch when press enter', () => {\n  //   const onSearch = jest.fn();\n  //   const wrapper = mount(\n  //     <Search defaultValue=\"search text\" onSearch={onSearch} />\n  //   );\n  //   wrapper.find('input').simulate('keydown', { key: 'Enter', keyCode: 13 });\n  //   expect(onSearch).toHaveBeenCalledTimes(1);\n  //   expect(onSearch).toBeCalledWith('search text', expect.objectContaining({\n  //     type: 'keydown',\n  //     preventDefault: expect.any(Function),\n  //   }));\n  // });\n});\n"
  },
  {
    "path": "components/input/__tests__/__snapshots__/Search.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Input.Search should support custom Button 1`] = `<span class=\"ant-input-group-wrapper ant-input-search ant-input-search-with-button\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button\" type=\"button\"><!----><span>ok</span></button></span></span></span>`;\n\nexports[`Input.Search should support custom button 1`] = `<span class=\"ant-input-group-wrapper ant-input-search ant-input-search-with-button\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-primary ant-input-search-button\" type=\"button\"><!----><button type=\"button\">ok</button></button></span></span></span>`;\n"
  },
  {
    "path": "components/input/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/input/demo/addon.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper\"><span class=\"ant-input-wrapper ant-input-group\"><span class=\"ant-input-group-addon\">Http://</span><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\">.com</span></span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper\"><span class=\"ant-input-wrapper ant-input-group\"><span class=\"ant-input-group-addon\"><div style=\"width: 90px;\" class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Http://</span>\n    <!---->\n  </div>\n  <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div></span><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><div style=\"width: 80px;\" class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">.com</span>\n<!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div></span></span></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></span></span></span></div>\n<!---->\n<div class=\"ant-space-item\"><span class=\"ant-input-group-wrapper\"><span class=\"ant-input-wrapper ant-input-group\"><span class=\"ant-input-group-addon\"><div style=\"width: 150px;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n  <!----><span class=\"ant-select-selection-placeholder\">cascader</span>\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div></span><input type=\"text\" class=\"ant-input\">\n<!----></span></span></div>\n<!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/allow-clear.vue correctly 1`] = `\n<div><span class=\"ant-input-affix-wrapper\"><!----><input placeholder=\"input with clear icon\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" fill-rule=\"evenodd\" viewBox=\"64 64 896 896\"><path d=\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\"></path></svg></span></span>\n  <!----></span></span><br><br><span class=\"ant-input-affix-wrapper ant-input-affix-wrapper-textarea-with-clear-btn\"><textarea placeholder=\"textarea with clear icon\" class=\"ant-input\"></textarea><span role=\"button\" aria-label=\"close-circle\" tabindex=\"-1\" class=\"anticon anticon-close-circle ant-input-clear-icon-hidden ant-input-clear-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" fill-rule=\"evenodd\" viewBox=\"64 64 896 896\"><path d=\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`renders ./components/input/demo/basic.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><input placeholder=\"Basic usage\" type=\"text\" class=\"ant-input\"></div>\n  <!---->\n  <div class=\"ant-space-item\"><input placeholder=\"Lazy usage\" type=\"text\" autofocus=\"\" class=\"ant-input\"></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/borderless.vue correctly 1`] = `<input placeholder=\"Borderless\" type=\"text\" class=\"ant-input ant-input-borderless\">`;\n\nexports[`renders ./components/input/demo/group.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical site-input-group-wrapper\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-lg\"><div class=\"ant-row\" style=\"margin-left: -4px; margin-right: -4px;\"><div class=\"ant-col ant-col-5\" style=\"padding-left: 4px; padding-right: 4px;\"><input type=\"text\" class=\"ant-input\"></div><div class=\"ant-col ant-col-8\" style=\"padding-left: 4px; padding-right: 4px;\"><input type=\"text\" class=\"ant-input\"></div></div></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><input type=\"text\" style=\"width: 20%;\" class=\"ant-input\"><input type=\"text\" style=\"width: 30%;\" class=\"ant-input\"></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Zhejiang</span>\n    <!---->\n  </div>\n  <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div><input type=\"text\" style=\"width: 50%;\" class=\"ant-input\"></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option1</span>\n  <!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div><input type=\"text\" style=\"width: 50%;\" class=\"ant-input\"></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><input type=\"text\" style=\"width: 50%;\" class=\"ant-input\"><div class=\"ant-picker\" style=\"width: 50%;\"><div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n<div style=\"pointer-events: none; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;\"></div>\n<!---->\n</div></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option1-1</span>\n  <!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div>\n<div class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option2-2</span>\n    <!---->\n  </div>\n  <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Between</span>\n  <!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div><input placeholder=\"Minimum\" type=\"text\" style=\"width: 100px; text-align: center;\" class=\"ant-input\"><input placeholder=\"~\" disabled=\"\" type=\"text\" class=\"ant-input ant-input-disabled site-input-split\" style=\"width: 30px; border-left: 0; pointer-events: none;\"><input placeholder=\"Maximum\" type=\"text\" class=\"ant-input site-input-right\" style=\"width: 100px; text-align: center;\"></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Sign Up</span>\n  <!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div>\n<div style=\"width: 200px;\" class=\"ant-select ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Email</span>\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><div style=\"width: 30%;\" class=\"ant-select ant-select-single ant-select-show-arrow\"><!----><div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Home</span>\n  <!---->\n</div>\n<!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n<!----></span>\n<!---->\n</div>\n<div style=\"width: 70%;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Select Address</span>\n  </div>\n  <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div></span></div>\n<!---->\n<div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-group  ant-input-group-compact\"><input type=\"text\" style=\"width: calc(100% - 200px);\" class=\"ant-input\"><button class=\"ant-btn ant-btn-primary\" type=\"button\"><!----><span>Submit</span></button></span></div>\n<!---->\n<div class=\"ant-space-item\"><span class=\"ant-input-group  ant-input-group-compact\"><input type=\"text\" style=\"width: calc(100% - 200px);\" class=\"ant-input\"><button class=\"ant-btn ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"copy\" class=\"anticon anticon-copy\"><svg focusable=\"false\" class=\"\" data-icon=\"copy\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"></path></svg></span></button>\n  <!----></span>\n</div>\n<!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/password-input.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input placeholder=\"input password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n    <!----></span></span>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input placeholder=\"input password\" type=\"password\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye-invisible\" tabindex=\"-1\" class=\"anticon anticon-eye-invisible ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye-invisible\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\"></path><path d=\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\"></path></svg></span>\n    <!----></span></span>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\"><input placeholder=\"input password\" type=\"password\" class=\"ant-input\"></div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span class=\"ant-input-affix-wrapper ant-input-password\"><!----><input placeholder=\"input password\" type=\"text\" visible=\"true\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"eye\" tabindex=\"-1\" class=\"anticon anticon-eye ant-input-password-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span>\n        <!----></span></span>\n      </div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n          <!----><span>Hide</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/presuffix.vue correctly 1`] = `\n<div class=\"components-input-demo-presuffix\"><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span><input placeholder=\"Basic usage\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!----><span role=\"img\" aria-label=\"info-circle\" style=\"color: rgba(0, 0, 0, 0.45);\" tabindex=\"-1\" class=\"anticon anticon-info-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"info-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\"></path></svg></span>\n  <!---->\n  <!----></span></span><br><br><span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\">￥</span><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!---->RMB<!----></span></span>\n</div>\n`;\n\nexports[`renders ./components/input/demo/search-input.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper ant-input-search\" style=\"width: 200px;\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search text\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-with-button\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search text\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-primary ant-input-search-button\" type=\"button\"><!----><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-large ant-input-search-with-button ant-input-group-wrapper-lg\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search text\" type=\"text\" class=\"ant-input ant-input-lg\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-primary ant-btn-lg ant-input-search-button\" type=\"button\"><!----><span>Search</span></button></span></span></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-large ant-input-search-with-button ant-input-group-wrapper-lg\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search text\" type=\"text\" class=\"ant-input ant-input-lg\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-btn-lg ant-input-search-button\" type=\"button\"><!----><span>Custom</span></button></span></span></span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/search-input-loading.vue correctly 1`] = `<div><span class=\"ant-input-group-wrapper ant-input-search\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search loading deault\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-btn-loading ant-input-search-button ant-btn-icon-only\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span></button></span></span></span><br><br><span class=\"ant-input-group-wrapper ant-input-search ant-input-search-with-button\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"input search loading with enterButton\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-primary ant-btn-loading ant-input-search-button\" type=\"button\"><span class=\"ant-btn-loading-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span></div>`;\n\nexports[`renders ./components/input/demo/show-count.vue correctly 1`] = `\n<span class=\"ant-input-affix-wrapper\"><!----><input maxlength=\"20\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><span class=\"ant-input-show-count-suffix\">10 / 20</span>\n<!----></span></span>\n<br>\n<br>\n<div class=\"ant-input-textarea ant-input-textarea-show-count ant-input-textarea-show-count\" data-count=\"10 / 100\"><textarea class=\"ant-input\"></textarea>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/size.vue correctly 1`] = `<div class=\"components-input-demo-size\"><input placeholder=\"large size\" type=\"text\" class=\"ant-input ant-input-lg\"><input placeholder=\"default size\" type=\"text\" class=\"ant-input\"><input placeholder=\"small size\" type=\"text\" class=\"ant-input ant-input-sm\"></div>`;\n\nexports[`renders ./components/input/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><input status=\"error\" placeholder=\"Error\" type=\"text\" class=\"ant-input ant-input-status-error\"></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><input status=\"warning\" placeholder=\"Warning\" type=\"text\" class=\"ant-input ant-input-status-warning\"></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-affix-wrapper ant-input-affix-wrapper-status-error\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></span><input status=\"error\" placeholder=\"Error with prefix\" type=\"text\" class=\"ant-input\">\n    <!----></span>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><span class=\"ant-input-affix-wrapper ant-input-affix-wrapper-status-warning\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></span><input status=\"warning\" placeholder=\"Warning with prefix\" type=\"text\" class=\"ant-input\">\n    <!----></span>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input/demo/textarea.vue correctly 1`] = `\n<textarea placeholder=\"Basic usage\" rows=\"4\" class=\"ant-input\"></textarea>\n<br>\n<br>\n<textarea rows=\"4\" placeholder=\"maxlength is 6\" class=\"ant-input\"></textarea>\n`;\n\nexports[`renders ./components/input/demo/tooltip.vue correctly 1`] = `<input placeholder=\"Input a number\" type=\"text\" max-length=\"25\" style=\"width: 120px;\" class=\"ant-input\">`;\n"
  },
  {
    "path": "components/input/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Input should support maxlength 1`] = `<input maxlength=\"3\" type=\"text\" class=\"ant-input\">`;\n\nexports[`Input.Search should support suffix 1`] = `<span class=\"ant-input-group-wrapper ant-input-search\"><span class=\"ant-input-wrapper ant-input-group\"><!----><span class=\"ant-input-affix-wrapper\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><!----><!---->suffix<!----></span></span><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span>`;\n\nexports[`TextArea should support disabled 1`] = `<textarea disabled=\"\" class=\"ant-input ant-input-disabled\"></textarea>`;\n\nexports[`TextArea should support maxlength 1`] = `<textarea class=\"ant-input\"></textarea>`;\n\nexports[`TextArea should support showCount 1`] = `\n<div class=\"ant-input-textarea ant-input-textarea-show-count ant-input-textarea-show-count\" data-count=\"3 / 10\"><textarea class=\"ant-input\"></textarea>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/input/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('input', { skip: ['autosize-textarea'] });\n"
  },
  {
    "path": "components/input/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Input from '..';\n// import Form from '../../form';\nimport focusTest from '../../../tests/shared/focusTest';\nimport { WifiOutlined, SyncOutlined } from '@ant-design/icons-vue';\n\nconst { TextArea, Password } = Input;\n\ndescribe('Input', () => {\n  focusTest(Input);\n  focusTest(TextArea);\n  focusTest(Password);\n\n  it('should support maxlength', async () => {\n    const wrapper = mount(Input, { props: { maxlength: 3 }, sync: false });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    }, 0);\n  });\n  it('select()', async () => {\n    const wrapper = mount(Input, { sync: false, attachTo: 'body' });\n    await asyncExpect(() => {\n      wrapper.vm.select();\n    }, 0);\n  });\n\n  it('should not support allowClear when it is disabled', () => {\n    const wrapper = mount(Input, {\n      props: { allowClear: true, defaultValue: '111', disabled: true },\n      sync: false,\n    });\n    expect(wrapper.findAll('.ant-input-clear-icon-hidden').length).toBeTruthy();\n  });\n});\n\ndescribe('TextArea', () => {\n  xit('should auto calculate height according to content length', async () => {\n    const wrapper = mount(TextArea, {\n      props: { value: '', readonly: true, autoSize: true },\n      sync: false,\n    });\n    const mockFunc = jest.spyOn(wrapper.vm.resizableTextArea, 'resizeTextarea');\n    await asyncExpect(() => {\n      wrapper.setProps({ value: '1111\\n2222\\n3333' });\n    });\n    await asyncExpect(() => {\n      expect(mockFunc).toHaveBeenCalledTimes(1);\n    });\n    await asyncExpect(() => {\n      wrapper.setProps({ value: '1111' });\n    });\n\n    await asyncExpect(() => {\n      expect(mockFunc).toHaveBeenCalledTimes(2);\n    }, 100);\n  });\n\n  it('should support disabled', async () => {\n    const wrapper = mount(TextArea, { props: { disabled: true }, sync: false });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('should support maxlength', async () => {\n    const wrapper = mount(TextArea, { attrs: { maxlength: 10 }, sync: false });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('should support showCount', async () => {\n    const wrapper = mount(TextArea, {\n      props: { showCount: true, defaultValue: '111', maxlength: 10 },\n      sync: false,\n    });\n    expect(wrapper.find('.ant-input-textarea-show-count')).toBeTruthy();\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n\n// describe('As Form Control', () => {\n//   it('should be reset when wrapped in form.getFieldDecorator without initialValue', async () => {\n//     const Demo = {\n//       methods: {\n//         reset() {\n//           this.form.resetFields();\n//         },\n//       },\n\n//       render() {\n//         const { getFieldDecorator } = this.form;\n//         return (\n//           <Form>\n//             <Form.Item>{getFieldDecorator('input')(<Input />)}</Form.Item>\n//             <Form.Item>{getFieldDecorator('textarea')(<Input.TextArea />)}</Form.Item>\n//             <button type=\"button\" onClick={this.reset}>\n//               reset\n//             </button>\n//           </Form>\n//         );\n//       },\n//     };\n//     const DemoForm = Form.create()(Demo);\n//     const wrapper = mount(DemoForm, { sync: false });\n//     await asyncExpect(() => {\n//       wrapper.find('input').element.value = '111';\n//       wrapper.find('input').trigger('input');\n//       wrapper.find('textarea').element.value = '222';\n//       wrapper.find('textarea').trigger('input');\n//     });\n//     await asyncExpect(() => {\n//       expect(wrapper.find('input').element.value).toBe('111');\n//       expect(wrapper.find('textarea').element.value).toBe('222');\n//       wrapper.find('button').trigger('click');\n//     });\n//     await asyncExpect(() => {\n//       expect(wrapper.find('input').element.value).toBe('');\n//       expect(wrapper.find('textarea').element.value).toBe('');\n//     });\n//   });\n// });\n\ndescribe('Input.Search', () => {\n  it('should support suffix', async () => {\n    const wrapper = mount(Input.Search, { props: { suffix: 'suffix' }, sync: false });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    }, 100);\n  });\n});\n\ndescribe('Input.Password', () => {\n  it('should support iconRender', async () => {\n    const wrapper = mount(Input.Password, {\n      props: { iconRender: visible => (visible ? <SyncOutlined /> : <WifiOutlined />) },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-wifi').length).toBe(1);\n      wrapper.find('.anticon-wifi').trigger('click');\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-sync').length).toBe(1);\n    }, 100);\n  });\n\n  it('should support slot iconRender', async () => {\n    const wrapper = mount(Input.Password, {\n      slots: {\n        iconRender: visible => (visible ? <SyncOutlined /> : <WifiOutlined />),\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-wifi').length).toBe(1);\n      wrapper.find('.anticon-wifi').trigger('click');\n    }, 100);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-sync').length).toBe(1);\n    }, 100);\n  });\n\n  it('should support visibilityToggle(boolean)', async () => {\n    const wrapper = mount(Input.Password, { props: { visibilityToggle: false }, sync: false });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-eye').length).toBe(0);\n    }, 100);\n  });\n\n  it('should support visible', async () => {\n    const cbMock = jest.fn();\n    const wrapper = mount({\n      render() {\n        return <Password {...{ 'onUpdate:visible': cbMock }} visible=\"false\"></Password>;\n      },\n    });\n\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-eye').length).toBe(1);\n    }, 100);\n\n    await asyncExpect(() => {\n      wrapper.find('.anticon-eye').trigger('click');\n    }, 100);\n\n    expect(cbMock).toHaveBeenCalledWith(false);\n  });\n});\n"
  },
  {
    "path": "components/input/calculateNodeHeight.tsx",
    "content": "import type { CSSProperties } from 'vue';\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\n\nconst HIDDEN_TEXTAREA_STYLE = `\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important;\n  pointer-events: none !important;\n`;\n\nconst SIZING_STYLE = [\n  'letter-spacing',\n  'line-height',\n  'padding-top',\n  'padding-bottom',\n  'font-family',\n  'font-weight',\n  'font-size',\n  'font-variant',\n  'text-rendering',\n  'text-transform',\n  'width',\n  'text-indent',\n  'padding-left',\n  'padding-right',\n  'border-width',\n  'box-sizing',\n  'word-break',\n  'white-space',\n];\n\nexport interface NodeType {\n  sizingStyle: string;\n  paddingSize: number;\n  borderSize: number;\n  boxSizing: string;\n}\n\nconst computedStyleCache: Record<string, NodeType> = {};\nlet hiddenTextarea: HTMLTextAreaElement;\n\nexport function calculateNodeStyling(node: HTMLElement, useCache = false) {\n  const nodeRef =\n    node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n\n  if (useCache && computedStyleCache[nodeRef]) {\n    return computedStyleCache[nodeRef];\n  }\n\n  const style = window.getComputedStyle(node);\n\n  const boxSizing =\n    style.getPropertyValue('box-sizing') ||\n    style.getPropertyValue('-moz-box-sizing') ||\n    style.getPropertyValue('-webkit-box-sizing');\n\n  const paddingSize =\n    parseFloat(style.getPropertyValue('padding-bottom')) +\n    parseFloat(style.getPropertyValue('padding-top'));\n\n  const borderSize =\n    parseFloat(style.getPropertyValue('border-bottom-width')) +\n    parseFloat(style.getPropertyValue('border-top-width'));\n\n  const sizingStyle = SIZING_STYLE.map(name => `${name}:${style.getPropertyValue(name)}`).join(';');\n\n  const nodeInfo: NodeType = {\n    sizingStyle,\n    paddingSize,\n    borderSize,\n    boxSizing,\n  };\n\n  if (useCache && nodeRef) {\n    computedStyleCache[nodeRef] = nodeInfo;\n  }\n\n  return nodeInfo;\n}\n\nexport default function calculateAutoSizeStyle(\n  uiTextNode: HTMLTextAreaElement,\n  useCache = false,\n  minRows: number | null = null,\n  maxRows: number | null = null,\n): CSSProperties {\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea');\n    hiddenTextarea.setAttribute('tab-index', '-1');\n    hiddenTextarea.setAttribute('aria-hidden', 'true');\n    document.body.appendChild(hiddenTextarea);\n  }\n\n  // Fix wrap=\"off\" issue\n  // https://github.com/ant-design/ant-design/issues/6577\n  if (uiTextNode.getAttribute('wrap')) {\n    hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n  } else {\n    hiddenTextarea.removeAttribute('wrap');\n  }\n\n  // Copy all CSS properties that have an impact on the height of the content in\n  // the textbox\n  const { paddingSize, borderSize, boxSizing, sizingStyle } = calculateNodeStyling(\n    uiTextNode,\n    useCache,\n  );\n\n  // Need to have the overflow attribute to hide the scrollbar otherwise\n  // text-lines will not calculated properly as the shadow will technically be\n  // narrower for content\n  hiddenTextarea.setAttribute('style', `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`);\n  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n\n  let minHeight: number | undefined = undefined;\n  let maxHeight: number | undefined = undefined;\n  let overflowY: any;\n\n  let height = hiddenTextarea.scrollHeight;\n\n  if (boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    height += borderSize;\n  } else if (boxSizing === 'content-box') {\n    // remove padding, since height = content\n    height -= paddingSize;\n  }\n\n  if (minRows !== null || maxRows !== null) {\n    // measure height of a textarea with a single row\n    hiddenTextarea.value = ' ';\n    const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n    if (minRows !== null) {\n      minHeight = singleRowHeight * minRows;\n      if (boxSizing === 'border-box') {\n        minHeight = minHeight + paddingSize + borderSize;\n      }\n      height = Math.max(minHeight, height);\n    }\n    if (maxRows !== null) {\n      maxHeight = singleRowHeight * maxRows;\n      if (boxSizing === 'border-box') {\n        maxHeight = maxHeight + paddingSize + borderSize;\n      }\n      overflowY = height > maxHeight ? '' : 'hidden';\n      height = Math.min(maxHeight, height);\n    }\n  }\n\n  const style: CSSProperties = {\n    height: `${height}px`,\n    overflowY,\n    resize: 'none',\n  };\n\n  if (minHeight) {\n    style.minHeight = `${minHeight}px`;\n  }\n  if (maxHeight) {\n    style.maxHeight = `${maxHeight}px`;\n  }\n\n  return style;\n}\n"
  },
  {
    "path": "components/input/demo/addon.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 前置/后置标签\n  en-US: Pre / Post tab\n---\n\n## zh-CN\n\n用于配置一些固定组合。\n\n## en-US\n\nUsing pre & post tabs example.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-input v-model:value=\"value1\" addon-before=\"Http://\" addon-after=\".com\" />\n    <a-input v-model:value=\"value2\">\n      <template #addonBefore>\n        <a-select v-model:value=\"value3\" style=\"width: 90px\">\n          <a-select-option value=\"Http://\">Http://</a-select-option>\n          <a-select-option value=\"Https://\">Https://</a-select-option>\n        </a-select>\n      </template>\n      <template #addonAfter>\n        <a-select v-model:value=\"value4\" style=\"width: 80px\">\n          <a-select-option value=\".com\">.com</a-select-option>\n          <a-select-option value=\".jp\">.jp</a-select-option>\n          <a-select-option value=\".cn\">.cn</a-select-option>\n          <a-select-option value=\".org\">.org</a-select-option>\n        </a-select>\n      </template>\n    </a-input>\n    <a-input v-model:value=\"value5\">\n      <template #addonAfter>\n        <setting-outlined />\n      </template>\n    </a-input>\n\n    <a-input v-model:value=\"value6\">\n      <template #addonBefore>\n        <a-cascader placeholder=\"cascader\" style=\"width: 150px\" />\n      </template>\n    </a-input>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { SettingOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst value1 = ref<string>('mysite');\nconst value2 = ref<string>('mysite');\nconst value3 = ref<string>('Http://');\nconst value4 = ref<string>('.com');\nconst value5 = ref<string>('mysite');\nconst value6 = ref<string>('mysite');\n</script>\n"
  },
  {
    "path": "components/input/demo/allow-clear.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 带移除图标\n  en-US: With clear icon\n---\n\n## zh-CN\n\n带移除图标的输入框，点击图标删除所有内容。\n\n## en-US\n\nInput type of password.\n\n</docs>\n<template>\n  <div>\n    <a-input v-model:value=\"value1\" placeholder=\"input with clear icon\" allow-clear />\n    <br />\n    <br />\n    <a-textarea v-model:value=\"value2\" placeholder=\"textarea with clear icon\" allow-clear />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<string>('');\nconst value2 = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/autosize-textarea.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 适应文本高度的文本域\n  en-US: Autosizing the height to fit the content\n---\n\n## zh-CN\n\n属性适用于 `textarea` 节点，并且只有高度会自动变化。另外 `autoSize` 可以设定为一个对象，指定最小行数和最大行数。\n> `1.5.0` 后 `autosize` 被废弃，请使用 `autoSize`。\n\n## en-US\n\n`autoSize` prop for a `textarea` type of `Input` makes the height to automatically adjust based on the content. An options object can be provided to `autoSize` to specify the minimum and maximum number of lines the textarea will automatically adjust.\n> `autosize` is deprecated after `1.5.0`, please use `autoSize`.\n\n</docs>\n<template>\n  <div>\n    <a-textarea\n      v-model:value=\"value1\"\n      placeholder=\"Autosize height based on content lines\"\n      auto-size\n    />\n    <div style=\"margin: 24px 0\" />\n    <a-textarea\n      v-model:value=\"value2\"\n      placeholder=\"Autosize height with minimum and maximum number of lines\"\n      :auto-size=\"{ minRows: 2, maxRows: 5 }\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<string>('');\nconst value2 = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n基本用法。\n\n## en-US\n\nBasic usage example.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-input v-model:value=\"value\" placeholder=\"Basic usage\" />\n    <a-input v-model:value.lazy=\"value1\" autofocus placeholder=\"Lazy usage\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { watch, ref } from 'vue';\nconst value = ref<string>('');\nconst value1 = ref<string>('');\nwatch(value, () => {\n  console.log(value.value);\n});\nwatch(value1, () => {\n  console.log(value1.value);\n});\n</script>\n"
  },
  {
    "path": "components/input/demo/borderless.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 无边框\n  en-US: Borderless\n---\n\n## zh-CN\n\n没有边框。\n\n## en-US\n\nNo border.\n\n</docs>\n<template>\n  <a-input v-model:value=\"value\" :bordered=\"false\" placeholder=\"Borderless\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/group.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 输入框组合\n  en-US: Input Group\n---\n\n## zh-CN\n\n输入框的组合展现。\n注意：使用 `compact` 模式时，不需要通过 `Col` 来控制宽度。\n\n## en-US\n\na-input-group example\nNote: You don't need `Col` to control the width in the `compact` mode.\n\n</docs>\n<template>\n  <a-space class=\"site-input-group-wrapper\" direction=\"vertical\" size=\"middle\">\n    <a-input-group size=\"large\">\n      <a-row :gutter=\"8\">\n        <a-col :span=\"5\">\n          <a-input v-model:value=\"value1\" />\n        </a-col>\n        <a-col :span=\"8\">\n          <a-input v-model:value=\"value2\" />\n        </a-col>\n      </a-row>\n    </a-input-group>\n    <a-input-group compact>\n      <a-input v-model:value=\"value1\" style=\"width: 20%\" />\n      <a-input v-model:value=\"value2\" style=\"width: 30%\" />\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value3\">\n        <a-select-option value=\"Zhejiang\">Zhejiang</a-select-option>\n        <a-select-option value=\"Jiangsu\">Jiangsu</a-select-option>\n      </a-select>\n      <a-input v-model:value=\"value4\" style=\"width: 50%\" />\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value5\">\n        <a-select-option value=\"Option1\">Option1</a-select-option>\n        <a-select-option value=\"Option2\">Option2</a-select-option>\n      </a-select>\n      <a-input v-model:value=\"value6\" style=\"width: 50%\" />\n    </a-input-group>\n    <a-input-group compact>\n      <a-input v-model:value=\"value7\" style=\"width: 50%\" />\n      <a-date-picker v-model:value=\"value8\" style=\"width: 50%\" />\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value9\">\n        <a-select-option value=\"Option1-1\">Option1-1</a-select-option>\n        <a-select-option value=\"Option1-2\">Option1-2</a-select-option>\n      </a-select>\n      <a-select v-model:value=\"value10\">\n        <a-select-option value=\"Option2-1\">Option2-1</a-select-option>\n        <a-select-option value=\"Option2-2\">Option2-2</a-select-option>\n      </a-select>\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value11\">\n        <a-select-option value=\"1\">Between</a-select-option>\n        <a-select-option value=\"2\">Except</a-select-option>\n      </a-select>\n      <a-input\n        v-model:value=\"value12\"\n        style=\"width: 100px; text-align: center\"\n        placeholder=\"Minimum\"\n      />\n      <a-input\n        v-model:value=\"value13\"\n        class=\"site-input-split\"\n        style=\"width: 30px; border-left: 0; pointer-events: none\"\n        placeholder=\"~\"\n        disabled\n      />\n      <a-input\n        v-model:value=\"value14\"\n        class=\"site-input-right\"\n        style=\"width: 100px; text-align: center\"\n        placeholder=\"Maximum\"\n      />\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value15\">\n        <a-select-option value=\"Sign Up\">Sign Up</a-select-option>\n        <a-select-option value=\"Sign In\">Sign In</a-select-option>\n      </a-select>\n      <a-auto-complete\n        v-model:value=\"value16\"\n        :options=\"[{ value: 'text 1' }, { value: 'text 2' }]\"\n        style=\"width: 200px\"\n        placeholder=\"Email\"\n      />\n    </a-input-group>\n    <a-input-group compact>\n      <a-select v-model:value=\"value17\" style=\"width: 30%\">\n        <a-select-option value=\"Home\">Home</a-select-option>\n        <a-select-option value=\"Company\">Company</a-select-option>\n      </a-select>\n      <a-cascader\n        v-model:value=\"value18\"\n        style=\"width: 70%\"\n        :options=\"options\"\n        placeholder=\"Select Address\"\n      />\n    </a-input-group>\n    <a-input-group compact>\n      <a-input v-model:value=\"value19\" style=\"width: calc(100% - 200px)\" />\n      <a-button type=\"primary\">Submit</a-button>\n    </a-input-group>\n    <a-input-group compact>\n      <a-input v-model:value=\"value20\" style=\"width: calc(100% - 200px)\" />\n      <a-tooltip title=\"copy git url\">\n        <a-button>\n          <template #icon><CopyOutlined /></template>\n        </a-button>\n      </a-tooltip>\n    </a-input-group>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { CopyOutlined } from '@ant-design/icons-vue';\n\nconst options = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [\n          {\n            value: 'xihu',\n            label: 'West Lake',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [\n          {\n            value: 'zhonghuamen',\n            label: 'Zhong Hua Men',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst value1 = ref<string>('0571');\nconst value2 = ref<string>('26888888');\nconst value3 = ref<string>('Zhejiang');\nconst value4 = ref<string>('Xihu District, Hangzhou');\nconst value5 = ref<string>('Option1');\nconst value6 = ref<string>('input content');\nconst value7 = ref<string>('input content');\nconst value8 = ref<string | null>(null);\nconst value9 = ref<string>('Option1-1');\nconst value10 = ref<string>('Option2-2');\nconst value11 = ref<string>('1');\nconst value12 = ref<string>('');\nconst value13 = ref<string>('');\nconst value14 = ref<string>('');\nconst value15 = ref<string>('Sign Up');\nconst value16 = ref<string>('');\nconst value17 = ref<string>('Home');\nconst value18 = ref<string[]>([]);\nconst value19 = ref<string>('https://surelyvue.com');\nconst value20 = ref<string>('https://antdv.com');\n</script>\n<style scoped>\n.site-input-group-wrapper .site-input-split {\n  background-color: #fff;\n}\n\n.site-input-group-wrapper .site-input-right {\n  border-left-width: 0;\n}\n\n.site-input-group-wrapper .site-input-right:hover,\n.site-input-group-wrapper .site-input-right:focus {\n  border-left-width: 1px;\n}\n\n.site-input-group-wrapper .ant-input-rtl.site-input-right {\n  border-right-width: 0;\n}\n\n.site-input-group-wrapper .ant-input-rtl.site-input-right:hover,\n.site-input-group-wrapper .ant-input-rtl.site-input-right:focus {\n  border-right-width: 1px;\n}\n[data-theme='dark'] .site-input-group-wrapper .site-input-split {\n  background-color: transparent;\n}\n</style>\n"
  },
  {
    "path": "components/input/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <autosize-textarea />\n    <presuffix />\n    <search-input />\n    <search-input-loading />\n    <size />\n    <group />\n    <addon />\n    <tooltip />\n    <allow-clear />\n    <password-input />\n    <show-count />\n    <textarea-resize />\n    <borderlessVue />\n    <statusVue />\n  </demo-sort>\n</template>\n\n<script>\nimport Basic from './basic.vue';\nimport AutosizeTextarea from './autosize-textarea.vue';\nimport Presuffix from './presuffix.vue';\nimport SearchInput from './search-input.vue';\nimport SearchInputLoading from './search-input-loading.vue';\nimport Size from './size.vue';\nimport Group from './group.vue';\nimport TextareaResize from './textarea.vue';\nimport AllowClear from './allow-clear.vue';\nimport PasswordInput from './password-input.vue';\nimport ShowCount from './show-count.vue';\nimport Addon from './addon.vue';\nimport Tooltip from './tooltip.vue';\nimport borderlessVue from './borderless.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    statusVue,\n    Basic,\n    AutosizeTextarea,\n    Presuffix,\n    SearchInput,\n    SearchInputLoading,\n    Size,\n    Group,\n    TextareaResize,\n    Addon,\n    Tooltip,\n    AllowClear,\n    PasswordInput,\n    ShowCount,\n    borderlessVue,\n  },\n});\n</script>\n<style></style>\n"
  },
  {
    "path": "components/input/demo/password-input.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 密码框\n  en-US: Password box\n---\n\n## zh-CN\n\n密码框。\n\n## en-US\n\nInput type of password.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\" size=\"middle\" style=\"width: 100%\">\n    <a-input-password v-model:value=\"value\" placeholder=\"input password\" />\n    <a-input-password v-model:value=\"value2\" placeholder=\"input password\">\n      <template #iconRender=\"v\">\n        <EyeTwoTone v-if=\"v\"></EyeTwoTone>\n        <EyeInvisibleOutlined v-else></EyeInvisibleOutlined>\n      </template>\n    </a-input-password>\n    <a-input-password\n      v-model:value=\"value3\"\n      placeholder=\"input password\"\n      :visibility-toggle=\"false\"\n    />\n    <a-space>\n      <a-input-password\n        v-model:value=\"value4\"\n        v-model:visible=\"visible\"\n        placeholder=\"input password\"\n      />\n      <a-button @click=\"visible = !visible\">{{ visible ? 'Hide' : 'Show' }}</a-button>\n    </a-space>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { EyeTwoTone, EyeInvisibleOutlined } from '@ant-design/icons-vue';\nconst value = ref<string>('');\nconst value2 = ref<string>('');\nconst value3 = ref<string>('');\nconst value4 = ref<string>('');\n\nconst visible = ref<boolean>(true);\n</script>\n"
  },
  {
    "path": "components/input/demo/presuffix.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 前缀和后缀\n  en-US: prefix and suffix\n---\n\n## zh-CN\n\n在输入框上添加前缀或后缀图标。\n\n## en-US\n\nAdd prefix or suffix icons inside input.\n\n</docs>\n<template>\n  <div class=\"components-input-demo-presuffix\">\n    <a-input v-model:value=\"userName\" placeholder=\"Basic usage\">\n      <template #prefix>\n        <user-outlined />\n      </template>\n      <template #suffix>\n        <a-tooltip title=\"Extra information\">\n          <info-circle-outlined style=\"color: rgba(0, 0, 0, 0.45)\" />\n        </a-tooltip>\n      </template>\n    </a-input>\n    <br />\n    <br />\n    <a-input prefix=\"￥\" suffix=\"RMB\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { UserOutlined, InfoCircleOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst userName = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/search-input-loading.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 搜索框 loading\n  en-US: Search box with loading\n---\n\n## zh-CN\n\n用于 `onSearch` 的时候展示 `loading`。\n\n## en-US\n\nSearch loading when onSearch.\n\n</docs>\n<template>\n  <div>\n    <a-input-search v-model:value=\"value\" placeholder=\"input search loading deault\" loading />\n    <br />\n    <br />\n    <a-input-search\n      v-model:value=\"value\"\n      placeholder=\"input search loading with enterButton\"\n      loading\n      enter-button\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/search-input.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 搜索框\n  en-US: Search box\n---\n\n## zh-CN\n\n带有搜索按钮的输入框。\n\n## en-US\n\nExample of creating a search box by grouping a standard input with a search button.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-input-search\n      v-model:value=\"value\"\n      placeholder=\"input search text\"\n      style=\"width: 200px\"\n      @search=\"onSearch\"\n    />\n    <a-input-search\n      v-model:value=\"value\"\n      placeholder=\"input search text\"\n      enter-button\n      @search=\"onSearch\"\n    />\n    <a-input-search\n      v-model:value=\"value\"\n      placeholder=\"input search text\"\n      enter-button=\"Search\"\n      size=\"large\"\n      @search=\"onSearch\"\n    />\n    <a-input-search\n      v-model:value=\"value\"\n      placeholder=\"input search text\"\n      size=\"large\"\n      @search=\"onSearch\"\n    >\n      <template #enterButton>\n        <a-button>Custom</a-button>\n      </template>\n    </a-input-search>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\n\nconst onSearch = (searchValue: string) => {\n  console.log('use value', searchValue);\n  console.log('or use this.value', value.value);\n};\n</script>\n"
  },
  {
    "path": "components/input/demo/show-count.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 带字数提示\n  en-US: With character counting\n---\n\n## zh-CN\n\n展示字数提示。\n\n## en-US\n\nShow character counting.\n\n</docs>\n<template>\n  <a-input v-model:value=\"value1\" show-count :maxlength=\"20\" />\n  <br />\n  <br />\n  <a-textarea v-model:value=\"value2\" show-count :maxlength=\"100\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<string>('test value');\nconst value2 = ref<string>('test value');\n</script>\n"
  },
  {
    "path": "components/input/demo/size.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 三种大小\n  en-US: Three sizes of Input\n---\n\n## zh-CN\n\n我们为 `<Input />` 输入框定义了三种尺寸（大、默认、小），高度分别为 `40px`、`32px` 和 `24px`。\n\n## en-US\n\nThere are three sizes of an Input box: `large` (40px)、`default` (32px) and `small` (24px).\n\n</docs>\n<template>\n  <div class=\"components-input-demo-size\">\n    <a-input v-model:value=\"value\" size=\"large\" placeholder=\"large size\" />\n    <a-input v-model:value=\"value\" placeholder=\"default size\" />\n    <a-input v-model:value=\"value\" size=\"small\" placeholder=\"small size\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\n</script>\n<style scoped>\n.components-input-demo-size .ant-input {\n  width: 200px;\n  margin: 0 8px 8px 0;\n}\n</style>\n"
  },
  {
    "path": "components/input/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 Input 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to Input with `status`, which could be `error` or `warning`.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-input status=\"error\" placeholder=\"Error\" />\n    <a-input status=\"warning\" placeholder=\"Warning\" />\n    <a-input status=\"error\" placeholder=\"Error with prefix\">\n      <template #prefix><ClockCircleOutlined /></template>\n    </a-input>\n    <a-input status=\"warning\" placeholder=\"Warning with prefix\">\n      <template #prefix><ClockCircleOutlined /></template>\n    </a-input>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/input/demo/textarea.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 文本域\n  en-US: TextArea\n---\n\n## zh-CN\n\n用于多行输入。\n\n## en-US\n\nFor multi-line input.\n\n</docs>\n<template>\n  <a-textarea v-model:value=\"value\" placeholder=\"Basic usage\" :rows=\"4\" />\n  <br />\n  <br />\n  <a-textarea :rows=\"4\" placeholder=\"maxlength is 6\" :maxlength=\"6\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\n</script>\n"
  },
  {
    "path": "components/input/demo/tooltip.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 输入时格式化展示\n  en-US: Format Tooltip Input\n---\n\n## zh-CN\n\n结合 [Tooltip](/components/tooltip-cn/) 组件，实现一个数值输入框，方便内容超长时的全量展现。\n\n## en-US\n\nYou can use the Input in conjunction with [Tooltip](/components/tooltip/) component to create a Numeric Input, which can provide a good experience for extra-long content display.\n\n</docs>\n<template>\n  <a-tooltip :trigger=\"['focus']\" placement=\"topLeft\" overlay-class-name=\"numeric-input\">\n    <template v-if=\"inputValue\" #title>\n      <span class=\"numeric-input-title\">\n        {{ formatValue }}\n      </span>\n    </template>\n\n    <a-input\n      v-model:value=\"inputValue\"\n      placeholder=\"Input a number\"\n      :max-length=\"25\"\n      style=\"width: 120px\"\n      @blur=\"onBlur\"\n    />\n  </a-tooltip>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue';\n\nfunction formatNumber(value: string) {\n  value += '';\n  const list = value.split('.');\n  const prefix = list[0].charAt(0) === '-' ? '-' : '';\n  let num = prefix ? list[0].slice(1) : list[0];\n  let result = '';\n\n  while (num.length > 3) {\n    result = `,${num.slice(-3)}${result}`;\n    num = num.slice(0, num.length - 3);\n  }\n\n  if (num) {\n    result = num + result;\n  }\n\n  return `${prefix}${result}${list[1] ? `.${list[1]}` : ''}`;\n}\n\nconst inputValue = ref<string>('111');\nconst formatValue = computed(() => {\n  if (inputValue.value === '-') return '-';\n  return formatNumber(inputValue.value);\n});\n\nconst format = (val: string, preVal: string) => {\n  const reg = /^-?\\d*(\\.\\d*)?$/;\n\n  if ((!isNaN(+val) && reg.test(val)) || val === '' || val === '-') {\n    inputValue.value = val;\n  } else {\n    inputValue.value = preVal;\n  }\n};\n\n// '.' at the end or only '-' in the input box.\nconst onBlur = () => {\n  if (inputValue.value.charAt(inputValue.value.length - 1) === '.' || inputValue.value === '-') {\n    format(inputValue.value.slice(0, -1), inputValue.value);\n  }\n};\n\nwatch(inputValue, (val, preVal) => {\n  format(val, preVal);\n});\n</script>\n<style>\n/* to prevent the arrow overflow the popup container,\nor the height is not enough when content is empty */\n.numeric-input .ant-tooltip-inner {\n  min-width: 32px;\n  min-height: 37px;\n}\n\n.numeric-input .numeric-input-title {\n  font-size: 14px;\n}\n</style>\n"
  },
  {
    "path": "components/input/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Input\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Y3R0RowXHlAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sBqqTatJ-AkAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA basic widget for getting the user input is a text field. Keyboard and mouse can be used for providing or changing data.\n\n## When To Use\n\n- A user input in a form field is needed.\n- A search input is required.\n\n## API\n\n### Input\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| addonAfter | The label text displayed after (on the right side of) the input field. | string\\|slot |  |  |\n| addonBefore | The label text displayed before (on the left side of) the input field. | string\\|slot |  |  |\n| allowClear | allow to remove input content with clear icon | boolean |  |  |\n| bordered | Whether has border style | boolean | true | 4.5.0 |\n| clearIcon | custom clear icon when allowClear | slot | `<CloseCircleFilled />` | 3.3.0 |\n| defaultValue | The initial input content | string |  |  |\n| disabled | Whether the input is disabled. | boolean | false |  |\n| id | The ID for input | string |  |  |\n| maxlength | max length | number |  | 1.5.0 |\n| prefix | The prefix icon for the Input. | string\\|slot |  |  |\n| showCount | Whether show text count | boolean \\| { formatter: (info: { value: string, count: number, maxLength?: number }) => string | false | 3.0 |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| size | The size of the input box. Note: in the context of a form, the `middle` size is used. Available: `large` `middle` `small` | string | - |  |\n| suffix | The suffix icon for the Input. | string\\|slot |  |  |\n| type | The type of input, see: [MDN](https://developer.mozilla.org/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types)(use `<a-textarea />` instead of `type=\"textarea\"`) | string | `text` |  |\n| value(v-model) | The input content value | string |  |  |\n\n### Input Events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | callback when user input | function(e) |  |\n| pressEnter | The callback function that is triggered when Enter key is pressed. | function(e) |  |\n\n> When `Input` is used in a `Form.Item` context, if the `Form.Item` has the `id` and `options` props defined then `value`, `defaultValue`, and `id` props of `Input` are automatically set.\n\n### TextArea\n\n| Property | Description | Type | Default | Version |  |\n| --- | --- | --- | --- | --- | --- |\n| allowClear | allow to remove input content with clear icon | boolean |  | 1.5.0 |  |\n| autosize | Height autosize feature, can be set to `true | false`or an object`{ minRows: 2, maxRows: 6 }` | boolean\\|object | false |  |\n| defaultValue | The initial input content | string |  |  |  |\n| showCount | Whether show text count | boolean \\| { formatter: (info: { value: string, count: number, maxLength?: number }) => string | false |  |  |\n| value(v-model) | The input content value | string |  |  |  |\n\n### TextArea Events\n\n| Events Name | Description                                                        | Arguments   |\n| ----------- | ------------------------------------------------------------------ | ----------- |\n| pressEnter  | The callback function that is triggered when Enter key is pressed. | function(e) |\n\nThe rest of the props of `TextArea` are the same as the original [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea).\n\n#### Input.Search\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| enterButton | to show an enter button after input. This prop is conflict with addon. | boolean\\|slot | false |\n\n### Input.Search Events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| loading | Search box with loading. | boolean |  |  |\n| search | The callback function that is triggered when you click on the search-icon or press Enter key. | function(value, event) |  |  |\n\nSupports all props of `Input`.\n\n#### Input.Group\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| compact | Whether use compact style | boolean | false |\n| size | The size of `Input.Group` specifies the size of the included `Input` fields. Available: `large` `default` `small` | string | `default` |\n\n```html\n<a-input-group>\n  <a-input />\n  <a-input />\n</a-input-group>\n```\n\n#### Input.Password (Added in 1.14.0)\n\n| Property         | Description                                            | Type    | Default |\n| ---------------- | ------------------------------------------------------ | ------- | ------- |\n| visible(v-model) | password visibility                                    | boolean | false   |\n| iconRender       | Custom toggle button                                   | slot    | -       |\n| visibilityToggle | Whether show toggle button or control password visible | boolean | true    |\n"
  },
  {
    "path": "components/input/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Input from './Input';\nimport Group from './Group';\nimport Search from './Search';\nimport TextArea from './TextArea';\nimport Password from './Password';\nexport type { InputProps, TextAreaProps } from './inputProps';\nInput.Group = Group;\nInput.Search = Search;\nInput.TextArea = TextArea;\nInput.Password = Password;\n\n/* istanbul ignore next */\nInput.install = function (app: App) {\n  app.component(Input.name, Input);\n  app.component(Input.Group.name, Input.Group);\n  app.component(Input.Search.name, Input.Search);\n  app.component(Input.TextArea.name, Input.TextArea);\n  app.component(Input.Password.name, Input.Password);\n  return app;\n};\n\nexport {\n  Group as InputGroup,\n  Search as InputSearch,\n  TextArea as Textarea,\n  Password as InputPassword,\n};\n\nexport default Input as typeof Input &\n  Plugin & {\n    readonly Group: typeof Group;\n    readonly Search: typeof Search;\n    readonly TextArea: typeof TextArea;\n    readonly Password: typeof Password;\n  };\n"
  },
  {
    "path": "components/input/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Input\nsubtitle: 输入框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Y3R0RowXHlAAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sBqqTatJ-AkAAAAAAAAAAAAADrJ8AQ/original\n---\n\n通过鼠标或键盘输入内容，是最基础的表单域的包装。\n\n## 何时使用\n\n- 需要用户输入表单域内容时。\n- 提供组合型输入框，带搜索的输入框，还可以进行大小选择。\n\n## API\n\n### Input\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| addonAfter | 带标签的 input，设置后置标签 | string\\|slot |  |  |\n| addonBefore | 带标签的 input，设置前置标签 | string\\|slot |  |  |\n| allowClear | 可以点击清除图标删除内容 | boolean |  |  |\n| bordered | 是否有边框 | boolean | true | 3.0 |\n| clearIcon | 自定义清除图标 （allowClear 为 true 时生效） | slot | `<CloseCircleFilled />` | 3.3.0 |\n| defaultValue | 输入框默认内容 | string |  |  |\n| disabled | 是否禁用状态，默认为 false | boolean | false |  |\n| id | 输入框的 id | string |  |  |\n| maxlength | 最大长度 | number |  | 1.5.0 |\n| prefix | 带有前缀图标的 input | string\\|slot |  |  |\n| showCount | 是否展示字数 | boolean \\| { formatter: (info: { value: string, count: number, maxLength?: number }) => string } | false | 3.0 |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| size | 控件大小。注：标准表单内的输入框大小限制为 `middle`。可选 `large` `middle` `small` | string | - |  |\n| suffix | 带有后缀图标的 input | string\\|slot |  |  |\n| type | 声明 input 类型，同原生 input 标签的 type 属性，见：[MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#属性)(请直接使用 `<a-textarea />` 代替 `type=\"textarea\"`)。 | string | `text` |  |\n| value(v-model) | 输入框内容 | string |  |  |\n\n### Input 事件\n\n| 事件名称   | 说明                   | 回调参数    |     |\n| ---------- | ---------------------- | ----------- | --- |\n| change     | 输入框内容变化时的回调 | function(e) |     |\n| pressEnter | 按下回车的回调         | function(e) |     |\n\n> 如果 `Input` 在 `Form.Item` 内，并且 `Form.Item` 设置了 `id` 和 `options` 属性，则 `value` `defaultValue` 和 `id` 属性会被自动设置。\n\n### TextArea\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| allowClear | 可以点击清除图标删除内容 | boolean |  | 1.5.0 |  |\n| autosize | 自适应内容高度，可设置为 `true | false` 或对象：`{ minRows: 2, maxRows: 6 }` | boolean\\|object | false |  |\n| defaultValue | 输入框默认内容 | string |  |  |  |\n_| showCount | 是否展示字数 | boolean \\| { formatter: (info: { value: string, count: number, maxLength?: number }) => string } | false |  |  |_\n| value(v-model) | 输入框内容 | string |  |  |  |\n\n### TextArea 事件\n\n| 事件名称   | 说明           | 回调参数    |\n| ---------- | -------------- | ----------- |\n| pressEnter | 按下回车的回调 | function(e) |\n\n`Textarea` 的其他属性和浏览器自带的 [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) 一致。\n\n#### Input.Search\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| enterButton | 是否有确认按钮，可设为按钮文字。该属性会与 addon 冲突。 | boolean\\|slot | false |  |\n| loading | 搜索 loading | boolean |  | 1.5.0 |\n\n### Input.Search 事件\n\n| 事件名称 | 说明                         | 回调参数               |\n| -------- | ---------------------------- | ---------------------- |\n| search   | 点击搜索或按下回车键时的回调 | function(value, event) |\n\n其余属性和 Input 一致。\n\n#### Input.Group\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| compact | 是否用紧凑模式 | boolean | false |\n| size | `Input.Group` 中所有的 `Input` 的大小，可选 `large` `default` `small` | string | `default` |\n\n```html\n<a-input-group>\n  <a-input />\n  <a-input />\n</a-input-group>\n```\n\n#### Input.Password (1.14.0 中新增)\n\n| 参数             | 说明                             | 类型    | 默认值 |\n| ---------------- | -------------------------------- | ------- | ------ |\n| visible(v-model) | 密码是否可见                     | boolean | false  |\n| iconRender       | 自定义切换按钮                   | slot    | -      |\n| visibilityToggle | 是否显示切换按钮或者控制密码显隐 | boolean | true   |\n"
  },
  {
    "path": "components/input/inputProps.ts",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport omit from '../_util/omit';\nimport type { VueNode } from '../_util/type';\nimport { eventType } from '../_util/type';\nimport type { CompositionEventHandler } from '../_util/EventInterface';\nimport { inputProps as vcInputProps } from '../vc-input/inputProps';\n\nexport const inputDefaultValue = Symbol() as unknown as string;\n\nexport interface AutoSizeType {\n  minRows?: number;\n  maxRows?: number;\n}\nconst inputProps = () => {\n  return omit(vcInputProps(), [\n    'wrapperClassName',\n    'groupClassName',\n    'inputClassName',\n    'affixWrapperClassName',\n  ]);\n};\nexport default inputProps;\nexport type InputProps = Partial<ExtractPropTypes<ReturnType<typeof inputProps>>>;\nexport interface ShowCountProps {\n  formatter: (args: { count: number; maxlength?: number }) => VueNode;\n}\nconst textAreaProps = () => ({\n  ...omit(inputProps(), ['prefix', 'addonBefore', 'addonAfter', 'suffix']),\n  rows: Number,\n  autosize: { type: [Boolean, Object] as PropType<boolean | AutoSizeType>, default: undefined },\n  autoSize: { type: [Boolean, Object] as PropType<boolean | AutoSizeType>, default: undefined },\n  onResize: { type: Function as PropType<(size: { width: number; height: number }) => void> },\n  onCompositionstart: eventType<CompositionEventHandler>(),\n  onCompositionend: eventType<CompositionEventHandler>(),\n  valueModifiers: Object,\n});\n\nexport { textAreaProps };\n\nexport type TextAreaProps = Partial<ExtractPropTypes<ReturnType<typeof textAreaProps>>>;\n"
  },
  {
    "path": "components/input/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport type { GlobalToken } from '../../theme/interface';\nimport { clearFix, resetComponent } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\n\nexport type InputToken<T extends GlobalToken = FullToken<'Input'>> = T & {\n  inputAffixPadding: number;\n  inputPaddingVertical: number;\n  inputPaddingVerticalLG: number;\n  inputPaddingVerticalSM: number;\n  inputPaddingHorizontal: number;\n  inputPaddingHorizontalLG: number;\n  inputPaddingHorizontalSM: number;\n  inputBorderHoverColor: string;\n  inputBorderActiveColor: string;\n};\n\nexport const genPlaceholderStyle = (color: string): CSSObject => ({\n  // Firefox\n  '&::-moz-placeholder': {\n    opacity: 1,\n  },\n  '&::placeholder': {\n    color,\n    userSelect: 'none', // https://github.com/ant-design/ant-design/pull/32639\n  },\n  '&:placeholder-shown': {\n    textOverflow: 'ellipsis',\n  },\n});\n\nexport const genHoverStyle = (token: InputToken): CSSObject => ({\n  borderColor: token.inputBorderHoverColor,\n  borderInlineEndWidth: token.lineWidth,\n});\n\nexport const genActiveStyle = (token: InputToken) => ({\n  borderColor: token.inputBorderHoverColor,\n  boxShadow: `0 0 0 ${token.controlOutlineWidth}px ${token.controlOutline}`,\n  borderInlineEndWidth: token.lineWidth,\n  outline: 0,\n});\n\nexport const genDisabledStyle = (token: InputToken): CSSObject => ({\n  color: token.colorTextDisabled,\n  backgroundColor: token.colorBgContainerDisabled,\n  borderColor: token.colorBorder,\n  boxShadow: 'none',\n  cursor: 'not-allowed',\n  opacity: 1,\n\n  '&:hover': {\n    ...genHoverStyle(mergeToken<InputToken>(token, { inputBorderHoverColor: token.colorBorder })),\n  },\n});\n\nconst genInputLargeStyle = (token: InputToken): CSSObject => {\n  const {\n    inputPaddingVerticalLG,\n    fontSizeLG,\n    lineHeightLG,\n    borderRadiusLG,\n    inputPaddingHorizontalLG,\n  } = token;\n\n  return {\n    padding: `${inputPaddingVerticalLG}px ${inputPaddingHorizontalLG}px`,\n    fontSize: fontSizeLG,\n    lineHeight: lineHeightLG,\n    borderRadius: borderRadiusLG,\n  };\n};\n\nexport const genInputSmallStyle = (token: InputToken): CSSObject => ({\n  padding: `${token.inputPaddingVerticalSM}px ${token.controlPaddingHorizontalSM - 1}px`,\n  borderRadius: token.borderRadiusSM,\n});\n\nexport const genStatusStyle = (token: InputToken, parentCls: string): CSSObject => {\n  const {\n    componentCls,\n    colorError,\n    colorWarning,\n    colorErrorOutline,\n    colorWarningOutline,\n    colorErrorBorderHover,\n    colorWarningBorderHover,\n  } = token;\n\n  return {\n    [`&-status-error:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {\n      borderColor: colorError,\n\n      '&:hover': {\n        borderColor: colorErrorBorderHover,\n      },\n\n      '&:focus, &-focused': {\n        ...genActiveStyle(\n          mergeToken<InputToken>(token, {\n            inputBorderActiveColor: colorError,\n            inputBorderHoverColor: colorError,\n            controlOutline: colorErrorOutline,\n          }),\n        ),\n      },\n\n      [`${componentCls}-prefix`]: {\n        color: colorError,\n      },\n    },\n    [`&-status-warning:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {\n      borderColor: colorWarning,\n\n      '&:hover': {\n        borderColor: colorWarningBorderHover,\n      },\n\n      '&:focus, &-focused': {\n        ...genActiveStyle(\n          mergeToken<InputToken>(token, {\n            inputBorderActiveColor: colorWarning,\n            inputBorderHoverColor: colorWarning,\n            controlOutline: colorWarningOutline,\n          }),\n        ),\n      },\n\n      [`${componentCls}-prefix`]: {\n        color: colorWarning,\n      },\n    },\n  };\n};\n\nexport const genBasicInputStyle = (token: InputToken): CSSObject => ({\n  position: 'relative',\n  display: 'inline-block',\n  width: '100%',\n  minWidth: 0,\n  padding: `${token.inputPaddingVertical}px ${token.inputPaddingHorizontal}px`,\n  color: token.colorText,\n  fontSize: token.fontSize,\n  lineHeight: token.lineHeight,\n  backgroundColor: token.colorBgContainer,\n  backgroundImage: 'none',\n  borderWidth: token.lineWidth,\n  borderStyle: token.lineType,\n  borderColor: token.colorBorder,\n  borderRadius: token.borderRadius,\n  transition: `all ${token.motionDurationMid}`,\n  ...genPlaceholderStyle(token.colorTextPlaceholder),\n\n  '&:hover': {\n    ...genHoverStyle(token),\n  },\n\n  '&:focus, &-focused': {\n    ...genActiveStyle(token),\n  },\n\n  '&-disabled, &[disabled]': {\n    ...genDisabledStyle(token),\n  },\n\n  '&-borderless': {\n    '&, &:hover, &:focus, &-focused, &-disabled, &[disabled]': {\n      backgroundColor: 'transparent',\n      border: 'none',\n      boxShadow: 'none',\n    },\n  },\n\n  // Reset height for `textarea`s\n  'textarea&': {\n    maxWidth: '100%', // prevent textearea resize from coming out of its container\n    height: 'auto',\n    minHeight: token.controlHeight,\n    lineHeight: token.lineHeight,\n    verticalAlign: 'bottom',\n    transition: `all ${token.motionDurationSlow}, height 0s`,\n    resize: 'vertical',\n  },\n\n  // Size\n  '&-lg': {\n    ...genInputLargeStyle(token),\n  },\n  '&-sm': {\n    ...genInputSmallStyle(token),\n  },\n\n  // RTL\n  '&-rtl': {\n    direction: 'rtl',\n  },\n\n  '&-textarea-rtl': {\n    direction: 'rtl',\n  },\n});\n\nexport const genInputGroupStyle = (token: InputToken): CSSObject => {\n  const { componentCls, antCls } = token;\n\n  return {\n    position: 'relative',\n    display: 'table',\n    width: '100%',\n    borderCollapse: 'separate',\n    borderSpacing: 0,\n\n    // Undo padding and float of grid classes\n    [`&[class*='col-']`]: {\n      paddingInlineEnd: token.paddingXS,\n\n      '&:last-child': {\n        paddingInlineEnd: 0,\n      },\n    },\n\n    // Sizing options\n    [`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: {\n      ...genInputLargeStyle(token),\n    },\n\n    [`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: {\n      ...genInputSmallStyle(token),\n    },\n\n    [`> ${componentCls}`]: {\n      display: 'table-cell',\n\n      '&:not(:first-child):not(:last-child)': {\n        borderRadius: 0,\n      },\n    },\n\n    [`${componentCls}-group`]: {\n      [`&-addon, &-wrap`]: {\n        display: 'table-cell',\n        width: 1,\n        whiteSpace: 'nowrap',\n        verticalAlign: 'middle',\n\n        '&:not(:first-child):not(:last-child)': {\n          borderRadius: 0,\n        },\n      },\n\n      '&-wrap > *': {\n        display: 'block !important',\n      },\n\n      '&-addon': {\n        position: 'relative',\n        padding: `0 ${token.inputPaddingHorizontal}px`,\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n        textAlign: 'center',\n        backgroundColor: token.colorFillAlter,\n        border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n        borderRadius: token.borderRadius,\n        transition: `all ${token.motionDurationSlow}`,\n        lineHeight: 1,\n\n        // Reset Select's style in addon\n        [`${antCls}-select`]: {\n          margin: `-${token.inputPaddingVertical + 1}px -${token.inputPaddingHorizontal}px`,\n\n          [`&${antCls}-select-single:not(${antCls}-select-customize-input)`]: {\n            [`${antCls}-select-selector`]: {\n              backgroundColor: 'inherit',\n              border: `${token.lineWidth}px ${token.lineType} transparent`,\n              boxShadow: 'none',\n            },\n          },\n\n          '&-open, &-focused': {\n            [`${antCls}-select-selector`]: {\n              color: token.colorPrimary,\n            },\n          },\n        },\n\n        // https://github.com/ant-design/ant-design/issues/31333\n        [`${antCls}-cascader-picker`]: {\n          margin: `-9px -${token.inputPaddingHorizontal}px`,\n          backgroundColor: 'transparent',\n          [`${antCls}-cascader-input`]: {\n            textAlign: 'start',\n            border: 0,\n            boxShadow: 'none',\n          },\n        },\n      },\n\n      '&-addon:first-child': {\n        borderInlineEnd: 0,\n      },\n\n      '&-addon:last-child': {\n        borderInlineStart: 0,\n      },\n    },\n\n    [`${componentCls}`]: {\n      float: 'inline-start',\n      width: '100%',\n      marginBottom: 0,\n      textAlign: 'inherit',\n\n      '&:focus': {\n        zIndex: 1, // Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png\n        borderInlineEndWidth: 1,\n      },\n\n      '&:hover': {\n        zIndex: 1,\n        borderInlineEndWidth: 1,\n\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0,\n        },\n      },\n    },\n\n    // Reset rounded corners\n    [`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {\n      borderStartEndRadius: 0,\n      borderEndEndRadius: 0,\n\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n      },\n    },\n\n    [`> ${componentCls}-affix-wrapper`]: {\n      [`&:not(:first-child) ${componentCls}`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0,\n      },\n\n      [`&:not(:last-child) ${componentCls}`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n      },\n    },\n\n    [`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {\n      borderStartStartRadius: 0,\n      borderEndStartRadius: 0,\n\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0,\n      },\n    },\n\n    [`${componentCls}-affix-wrapper`]: {\n      '&:not(:last-child)': {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n        [`${componentCls}-search &`]: {\n          borderStartStartRadius: token.borderRadius,\n          borderEndStartRadius: token.borderRadius,\n        },\n      },\n\n      [`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0,\n      },\n    },\n\n    [`&${componentCls}-group-compact`]: {\n      display: 'block',\n      ...clearFix(),\n\n      [`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {\n        '&:not(:first-child):not(:last-child)': {\n          borderInlineEndWidth: token.lineWidth,\n\n          '&:hover': {\n            zIndex: 1,\n          },\n\n          '&:focus': {\n            zIndex: 1,\n          },\n        },\n      },\n\n      '& > *': {\n        display: 'inline-block',\n        float: 'none',\n        verticalAlign: 'top', // https://github.com/ant-design/ant-design-pro/issues/139\n        borderRadius: 0,\n      },\n\n      [`& > ${componentCls}-affix-wrapper`]: {\n        display: 'inline-flex',\n      },\n\n      [`& > ${antCls}-picker-range`]: {\n        display: 'inline-flex',\n      },\n\n      '& > *:not(:last-child)': {\n        marginInlineEnd: -token.lineWidth,\n        borderInlineEndWidth: token.lineWidth,\n      },\n\n      // Undo float for .ant-input-group .ant-input\n      [`${componentCls}`]: {\n        float: 'none',\n      },\n\n      // reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input\n      [`& > ${antCls}-select > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete ${componentCls},\n      & > ${antCls}-cascader-picker ${componentCls},\n      & > ${componentCls}-group-wrapper ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderRadius: 0,\n\n        '&:hover': {\n          zIndex: 1,\n        },\n\n        '&:focus': {\n          zIndex: 1,\n        },\n      },\n\n      [`& > ${antCls}-select-focused`]: {\n        zIndex: 1,\n      },\n\n      // update z-index for arrow icon\n      [`& > ${antCls}-select > ${antCls}-select-arrow`]: {\n        zIndex: 1, // https://github.com/ant-design/ant-design/issues/20371\n      },\n\n      [`& > *:first-child,\n      & > ${antCls}-select:first-child > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete:first-child ${componentCls},\n      & > ${antCls}-cascader-picker:first-child ${componentCls}`]: {\n        borderStartStartRadius: token.borderRadius,\n        borderEndStartRadius: token.borderRadius,\n      },\n\n      [`& > *:last-child,\n      & > ${antCls}-select:last-child > ${antCls}-select-selector,\n      & > ${antCls}-cascader-picker:last-child ${componentCls},\n      & > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderStartEndRadius: token.borderRadius,\n        borderEndEndRadius: token.borderRadius,\n      },\n\n      // https://github.com/ant-design/ant-design/issues/12493\n      [`& > ${antCls}-select-auto-complete ${componentCls}`]: {\n        verticalAlign: 'top',\n      },\n\n      [`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {\n        marginInlineStart: -token.lineWidth,\n        [`${componentCls}-affix-wrapper`]: {\n          borderRadius: 0,\n        },\n      },\n\n      [`${componentCls}-group-wrapper:not(:last-child)`]: {\n        [`&${componentCls}-search > ${componentCls}-group`]: {\n          [`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {\n            borderRadius: 0,\n          },\n\n          [`& > ${componentCls}`]: {\n            borderStartStartRadius: token.borderRadius,\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0,\n            borderEndStartRadius: token.borderRadius,\n          },\n        },\n      },\n    },\n\n    [`&&-sm ${antCls}-btn`]: {\n      fontSize: token.fontSizeSM,\n      height: token.controlHeightSM,\n      lineHeight: 'normal',\n    },\n\n    [`&&-lg ${antCls}-btn`]: {\n      fontSize: token.fontSizeLG,\n      height: token.controlHeightLG,\n      lineHeight: 'normal',\n    },\n\n    // Fix https://github.com/ant-design/ant-design/issues/5754\n    [`&&-lg ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: `${token.controlHeightLG}px`,\n\n      [`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: {\n        // -2 is for the border size & override default\n        lineHeight: `${token.controlHeightLG - 2}px`,\n      },\n\n      [`${antCls}-select-selection-search-input`]: {\n        height: `${token.controlHeightLG}px`,\n      },\n    },\n\n    [`&&-sm ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: `${token.controlHeightSM}px`,\n\n      [`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: {\n        // -2 is for the border size & override default\n        lineHeight: `${token.controlHeightSM - 2}px`,\n      },\n\n      [`${antCls}-select-selection-search-input`]: {\n        height: `${token.controlHeightSM}px`,\n      },\n    },\n  };\n};\n\nconst genInputStyle: GenerateStyle<InputToken> = (token: InputToken) => {\n  const { componentCls, controlHeightSM, lineWidth } = token;\n\n  const FIXED_CHROME_COLOR_HEIGHT = 16;\n  const colorSmallPadding = (controlHeightSM - lineWidth * 2 - FIXED_CHROME_COLOR_HEIGHT) / 2;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      ...genBasicInputStyle(token),\n      ...genStatusStyle(token, componentCls),\n\n      '&[type=\"color\"]': {\n        height: token.controlHeight,\n\n        [`&${componentCls}-lg`]: {\n          height: token.controlHeightLG,\n        },\n        [`&${componentCls}-sm`]: {\n          height: controlHeightSM,\n          paddingTop: colorSmallPadding,\n          paddingBottom: colorSmallPadding,\n        },\n      },\n    },\n  };\n};\n\nconst genAllowClearStyle = (token: InputToken): CSSObject => {\n  const { componentCls } = token;\n  return {\n    // ========================= Input =========================\n    [`${componentCls}-clear-icon`]: {\n      margin: 0,\n      color: token.colorTextQuaternary,\n      fontSize: token.fontSizeIcon,\n      verticalAlign: -1,\n      // https://github.com/ant-design/ant-design/pull/18151\n      // https://codesandbox.io/s/wizardly-sun-u10br\n      cursor: 'pointer',\n      transition: `color ${token.motionDurationSlow}`,\n\n      '&:hover': {\n        color: token.colorTextTertiary,\n      },\n\n      '&:active': {\n        color: token.colorText,\n      },\n\n      '&-hidden': {\n        visibility: 'hidden',\n      },\n\n      '&-has-suffix': {\n        margin: `0 ${token.inputAffixPadding}px`,\n      },\n    },\n\n    // ======================= TextArea ========================\n    '&-textarea-with-clear-btn': {\n      padding: '0 !important',\n      border: '0 !important',\n\n      [`${componentCls}-clear-icon`]: {\n        position: 'absolute',\n        insetBlockStart: token.paddingXS,\n        insetInlineEnd: token.paddingXS,\n        zIndex: 1,\n      },\n    },\n  };\n};\n\nconst genAffixStyle: GenerateStyle<InputToken> = (token: InputToken) => {\n  const {\n    componentCls,\n    inputAffixPadding,\n    colorTextDescription,\n    motionDurationSlow,\n    colorIcon,\n    colorIconHover,\n    iconCls,\n  } = token;\n\n  return {\n    [`${componentCls}-affix-wrapper`]: {\n      ...genBasicInputStyle(token),\n      display: 'inline-flex',\n\n      [`&:not(${componentCls}-affix-wrapper-disabled):hover`]: {\n        ...genHoverStyle(token),\n        zIndex: 1,\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0,\n        },\n      },\n\n      '&-focused, &:focus': {\n        zIndex: 1,\n      },\n\n      '&-disabled': {\n        [`${componentCls}[disabled]`]: {\n          background: 'transparent',\n        },\n      },\n\n      [`> input${componentCls}`]: {\n        padding: 0,\n        fontSize: 'inherit',\n        border: 'none',\n        borderRadius: 0,\n        outline: 'none',\n\n        '&:focus': {\n          boxShadow: 'none !important',\n        },\n      },\n\n      '&::before': {\n        width: 0,\n        visibility: 'hidden',\n        content: '\"\\\\a0\"',\n      },\n\n      [`${componentCls}`]: {\n        '&-prefix, &-suffix': {\n          display: 'flex',\n          flex: 'none',\n          alignItems: 'center',\n\n          '> *:not(:last-child)': {\n            marginInlineEnd: token.paddingXS,\n          },\n        },\n\n        '&-show-count-suffix': {\n          color: colorTextDescription,\n        },\n\n        '&-show-count-has-suffix': {\n          marginInlineEnd: token.paddingXXS,\n        },\n\n        '&-prefix': {\n          marginInlineEnd: inputAffixPadding,\n        },\n\n        '&-suffix': {\n          marginInlineStart: inputAffixPadding,\n        },\n      },\n\n      ...genAllowClearStyle(token),\n\n      // password\n      [`${iconCls}${componentCls}-password-icon`]: {\n        color: colorIcon,\n        cursor: 'pointer',\n        transition: `all ${motionDurationSlow}`,\n\n        '&:hover': {\n          color: colorIconHover,\n        },\n      },\n\n      // status\n      ...genStatusStyle(token, `${componentCls}-affix-wrapper`),\n    },\n  };\n};\n\nconst genGroupStyle: GenerateStyle<InputToken> = (token: InputToken) => {\n  const { componentCls, colorError, colorSuccess, borderRadiusLG, borderRadiusSM } = token;\n\n  return {\n    [`${componentCls}-group`]: {\n      // Style for input-group: input with label, with button or dropdown...\n      ...resetComponent(token),\n      ...genInputGroupStyle(token),\n\n      '&-rtl': {\n        direction: 'rtl',\n      },\n\n      '&-wrapper': {\n        display: 'inline-block',\n        width: '100%',\n        textAlign: 'start',\n        verticalAlign: 'top', // https://github.com/ant-design/ant-design/issues/6403\n\n        '&-rtl': {\n          direction: 'rtl',\n        },\n\n        // Size\n        '&-lg': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusLG,\n          },\n        },\n        '&-sm': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusSM,\n          },\n        },\n\n        // Status\n        '&-status-error': {\n          [`${componentCls}-group-addon`]: {\n            color: colorError,\n            borderColor: colorError,\n          },\n        },\n        '&-status-warning': {\n          [`${componentCls}-group-addon:last-child`]: {\n            color: colorSuccess,\n            borderColor: colorSuccess,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genSearchInputStyle: GenerateStyle<InputToken> = (token: InputToken) => {\n  const { componentCls, antCls } = token;\n  const searchPrefixCls = `${componentCls}-search`;\n  return {\n    [searchPrefixCls]: {\n      [`${componentCls}`]: {\n        '&:hover, &:focus': {\n          borderColor: token.colorPrimaryHover,\n\n          [`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {\n            borderInlineStartColor: token.colorPrimaryHover,\n          },\n        },\n      },\n\n      [`${componentCls}-affix-wrapper`]: {\n        borderRadius: 0,\n      },\n\n      // fix slight height diff in Firefox:\n      // https://ant.design/components/auto-complete-cn/#components-auto-complete-demo-certain-category\n      [`${componentCls}-lg`]: {\n        lineHeight: token.lineHeightLG - 0.0002,\n      },\n\n      [`> ${componentCls}-group`]: {\n        [`> ${componentCls}-group-addon:last-child`]: {\n          insetInlineStart: -1,\n          padding: 0,\n          border: 0,\n\n          [`${searchPrefixCls}-button`]: {\n            paddingTop: 0,\n            paddingBottom: 0,\n            borderStartStartRadius: 0,\n            borderStartEndRadius: token.borderRadius,\n            borderEndEndRadius: token.borderRadius,\n            borderEndStartRadius: 0,\n          },\n\n          [`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {\n            color: token.colorTextDescription,\n\n            '&:hover': {\n              color: token.colorPrimaryHover,\n            },\n\n            '&:active': {\n              color: token.colorPrimaryActive,\n            },\n\n            [`&${antCls}-btn-loading::before`]: {\n              insetInlineStart: 0,\n              insetInlineEnd: 0,\n              insetBlockStart: 0,\n              insetBlockEnd: 0,\n            },\n          },\n        },\n      },\n\n      [`${searchPrefixCls}-button`]: {\n        height: token.controlHeight,\n\n        '&:hover, &:focus': {\n          zIndex: 1,\n        },\n      },\n\n      [`&-large ${searchPrefixCls}-button`]: {\n        height: token.controlHeightLG,\n      },\n\n      [`&-small ${searchPrefixCls}-button`]: {\n        height: token.controlHeightSM,\n      },\n\n      '&-rtl': {\n        direction: 'rtl',\n      },\n\n      // ===================== Compact Item Customized Styles =====================\n      [`&${componentCls}-compact-item`]: {\n        [`&:not(${componentCls}-compact-last-item)`]: {\n          [`${componentCls}-group-addon`]: {\n            [`${componentCls}-search-button`]: {\n              marginInlineEnd: -token.lineWidth,\n              borderRadius: 0,\n            },\n          },\n        },\n\n        [`&:not(${componentCls}-compact-first-item)`]: {\n          [`${componentCls},${componentCls}-affix-wrapper`]: {\n            borderRadius: 0,\n          },\n        },\n\n        [`> ${componentCls}-group-addon ${componentCls}-search-button,\n        > ${componentCls},\n        ${componentCls}-affix-wrapper`]: {\n          '&:hover,&:focus,&:active': {\n            zIndex: 2,\n          },\n        },\n\n        [`> ${componentCls}-affix-wrapper-focused`]: {\n          zIndex: 2,\n        },\n      },\n    },\n  };\n};\n\nexport function initInputToken<T extends GlobalToken = GlobalToken>(token: T): InputToken<T> {\n  // @ts-ignore\n  return mergeToken<InputToken<T>>(token, {\n    inputAffixPadding: token.paddingXXS,\n    inputPaddingVertical: Math.max(\n      Math.round(((token.controlHeight - token.fontSize * token.lineHeight) / 2) * 10) / 10 -\n        token.lineWidth,\n      3,\n    ),\n    inputPaddingVerticalLG:\n      Math.ceil(((token.controlHeightLG - token.fontSizeLG * token.lineHeightLG) / 2) * 10) / 10 -\n      token.lineWidth,\n    inputPaddingVerticalSM: Math.max(\n      Math.round(((token.controlHeightSM - token.fontSize * token.lineHeight) / 2) * 10) / 10 -\n        token.lineWidth,\n      0,\n    ),\n    inputPaddingHorizontal: token.paddingSM - token.lineWidth,\n    inputPaddingHorizontalSM: token.paddingXS - token.lineWidth,\n    inputPaddingHorizontalLG: token.controlPaddingHorizontal - token.lineWidth,\n    inputBorderHoverColor: token.colorPrimaryHover,\n    inputBorderActiveColor: token.colorPrimaryHover,\n  });\n}\n\nconst genTextAreaStyle: GenerateStyle<InputToken> = token => {\n  const { componentCls, inputPaddingHorizontal, paddingLG } = token;\n  const textareaPrefixCls = `${componentCls}-textarea`;\n\n  return {\n    [textareaPrefixCls]: {\n      position: 'relative',\n\n      [`${textareaPrefixCls}-suffix`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineEnd: inputPaddingHorizontal,\n        bottom: 0,\n        zIndex: 1,\n        display: 'inline-flex',\n        alignItems: 'center',\n        margin: 'auto',\n      },\n\n      [`&-status-error,\n        &-status-warning,\n        &-status-success,\n        &-status-validating`]: {\n        [`&${textareaPrefixCls}-has-feedback`]: {\n          [`${componentCls}`]: {\n            paddingInlineEnd: paddingLG,\n          },\n        },\n      },\n\n      '&-show-count': {\n        // https://github.com/ant-design/ant-design/issues/33049\n        [`> ${componentCls}`]: {\n          height: '100%',\n        },\n\n        '&::after': {\n          color: token.colorTextDescription,\n          whiteSpace: 'nowrap',\n          content: 'attr(data-count)',\n          pointerEvents: 'none',\n          float: 'right',\n        },\n      },\n\n      '&-rtl': {\n        '&::after': {\n          float: 'left',\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Input', token => {\n  const inputToken = initInputToken<FullToken<'Input'>>(token);\n\n  return [\n    genInputStyle(inputToken),\n    genTextAreaStyle(inputToken),\n    genAffixStyle(inputToken),\n    genGroupStyle(inputToken),\n    genSearchInputStyle(inputToken),\n    // =====================================================\n    // ==             Space Compact                       ==\n    // =====================================================\n    genCompactItemStyle(inputToken),\n  ];\n});\n"
  },
  {
    "path": "components/input/util.ts",
    "content": "import { filterEmpty } from '../_util/props-util';\nconst isValid = (value: any) => {\n  return (\n    value !== undefined &&\n    value !== null &&\n    (Array.isArray(value) ? filterEmpty(value).length : true)\n  );\n};\n\nexport function hasPrefixSuffix(propsAndSlots: any) {\n  return (\n    isValid(propsAndSlots.prefix) ||\n    isValid(propsAndSlots.suffix) ||\n    isValid(propsAndSlots.allowClear)\n  );\n}\n\nexport function hasAddon(propsAndSlots: any) {\n  return isValid(propsAndSlots.addonBefore) || isValid(propsAndSlots.addonAfter);\n}\n"
  },
  {
    "path": "components/input-number/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/input-number/demo/addon.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number-group-wrapper\">\n      <div class=\"ant-input-number-wrapper ant-input-number-group\">\n        <div class=\"ant-input-number-group-addon\">+</div>\n        <div class=\"ant-input-number\">\n          <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n          <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" class=\"ant-input-number-input\"></div>\n        </div>\n        <div class=\"ant-input-number-group-addon\">$</div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number-group-wrapper\">\n      <div class=\"ant-input-number-wrapper ant-input-number-group\">\n        <div class=\"ant-input-number-group-addon\">\n          <div style=\"width: 60px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">+</span>\n              <!---->\n            </div>\n            <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n        </div>\n        <div class=\"ant-input-number\">\n          <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n          <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" class=\"ant-input-number-input\"></div>\n        </div>\n        <div class=\"ant-input-number-group-addon\">\n          <div style=\"width: 60px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">$</span>\n              <!---->\n            </div>\n            <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number-group-wrapper\">\n      <div class=\"ant-input-number-wrapper ant-input-number-group\">\n        <!---->\n        <div class=\"ant-input-number\">\n          <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n          <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" class=\"ant-input-number-input\"></div>\n        </div>\n        <div class=\"ant-input-number-group-addon\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span></div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-input-number-group-wrapper\">\n      <div class=\"ant-input-number-wrapper ant-input-number-group\">\n        <!---->\n        <div class=\"ant-input-number\">\n          <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n          <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" class=\"ant-input-number-input\"></div>\n        </div>\n        <div class=\"ant-input-number-group-addon\">\n          <div style=\"width: 150px;\" class=\"ant-select ant-cascader ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n              <!----><span class=\"ant-select-selection-placeholder\">cascader</span>\n            </div>\n            <!----><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/basic.vue correctly 1`] = `\n<div>\n  <div class=\"ant-input-number\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" id=\"inputNumber\" class=\"ant-input-number-input\"></div>\n  </div> 当前值：3\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/borderless.vue correctly 1`] = `\n<div>\n  <div class=\"ant-input-number ant-input-number-borderless\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" id=\"inputNumber\" class=\"ant-input-number-input\"></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/digit.vue correctly 1`] = `\n<div class=\"ant-input-number\" style=\"width: 200px;\">\n  <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n  <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"0\" aria-valuemax=\"10\" aria-valuenow=\"1\" step=\"1e-14\" class=\"ant-input-number-input\"></div>\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/disabled.vue correctly 1`] = `\n<div>\n  <div class=\"ant-input-number ant-input-number-disabled\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\" disabled=\"\"></div>\n  </div>\n  <div style=\"margin-top: 20px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Toggle disabled</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/formatter.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-input-number\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"1000\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-input-number\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"true\" class=\"ant-input-number-handler ant-input-number-handler-up ant-input-number-handler-up-disabled\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"100\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/icon.vue correctly 1`] = `\n<div>\n  <div class=\"ant-input-number\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span class=\"ant-input-number-handler-up-inner\"><span role=\"img\" aria-label=\"arrow-up\" class=\"anticon anticon-arrow-up\"><svg focusable=\"false\" class=\"\" data-icon=\"arrow-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M868 545.5L536.1 163a31.96 31.96 0 00-48.3 0L156 545.5a7.97 7.97 0 006 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z\"></path></svg></span></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span class=\"ant-input-number-handler-down-inner\"><span role=\"img\" aria-label=\"arrow-down\" class=\"anticon anticon-arrow-down\"><svg focusable=\"false\" class=\"\" data-icon=\"arrow-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0048.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z\"></path></svg></span></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" id=\"inputNumber\" class=\"ant-input-number-input\"></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/keyboard.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-input-number\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span><span>Toggle keyboard</span></label></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/out-of-range.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-input-number ant-input-number-out-of-range\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"true\" class=\"ant-input-number-handler ant-input-number-handler-up ant-input-number-handler-up-disabled\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"99\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Reset</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/prefix.vue correctly 1`] = `\n<div class=\"ant-input-number-affix-wrapper\" style=\"width: 100%;\"><span class=\"ant-input-number-prefix\">￥</span>\n  <div class=\"ant-input-number\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"1\" step=\"1\" class=\"ant-input-number-input\"></div>\n  </div>\n  <!---->\n</div>\n<br>\n<br>\n<div class=\"ant-input-number-group-wrapper\" style=\"width: 100%;\">\n  <div class=\"ant-input-number-wrapper ant-input-number-group\">\n    <div class=\"ant-input-number-group-addon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></div>\n    <div class=\"ant-input-number-affix-wrapper\" style=\"width: 100%;\"><span class=\"ant-input-number-prefix\">￥</span>\n      <div class=\"ant-input-number\">\n        <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n        <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"2\" step=\"1\" class=\"ant-input-number-input\"></div>\n      </div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n<br>\n<br>\n<div class=\"ant-input-number-affix-wrapper ant-input-number-affix-wrapper-disabled\" style=\"width: 100%;\"><span class=\"ant-input-number-prefix\">￥</span>\n  <div class=\"ant-input-number ant-input-number-disabled\">\n    <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n    <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\" disabled=\"\"></div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-input-number ant-input-number-lg\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"100000\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-input-number\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"100000\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-input-number ant-input-number-sm\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"100000\" aria-valuenow=\"3\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/input-number/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number ant-input-number-status-error\" style=\"width: 100%;\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" status=\"error\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number ant-input-number-status-warning\" style=\"width: 100%;\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" status=\"warning\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-input-number-affix-wrapper ant-input-number-affix-wrapper-status-error\" style=\"width: 100%;\"><span class=\"ant-input-number-prefix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></span>\n      <div class=\"ant-input-number ant-input-number-status-error\">\n        <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n        <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" status=\"error\" class=\"ant-input-number-input\"></div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-input-number-affix-wrapper ant-input-number-affix-wrapper-status-warning\" style=\"width: 100%;\"><span class=\"ant-input-number-prefix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></span>\n      <div class=\"ant-input-number ant-input-number-status-warning\">\n        <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n        <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" status=\"warning\" class=\"ant-input-number-input\"></div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/input-number/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('input-number');\n"
  },
  {
    "path": "components/input-number/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport InputNumber from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('InputNumber', () => {\n  focusTest(InputNumber);\n  mountTest(InputNumber);\n\n  // https://github.com/ant-design/ant-design/issues/13896\n  it('should return null when blur a empty input number', () => {\n    const onChange = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return <InputNumber defaultValue=\"1\" onChange={onChange} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    wrapper.find('input').element.value = '';\n    wrapper.find('input').trigger('input');\n    expect(onChange).toHaveBeenLastCalledWith(null);\n  });\n});\n"
  },
  {
    "path": "components/input-number/demo/addon.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 前置/后置标签\n  en-US: Pre / Post tab\n---\n\n## zh-CN\n\n用于配置一些固定组合。\n\n## en-US\n\nUsing pre & post tabs example.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-input-number v-model:value=\"value1\" addon-before=\"+\" addon-after=\"$\"></a-input-number>\n    <a-input-number v-model:value=\"value2\">\n      <template #addonBefore>\n        <a-select v-model:value=\"addonBeforeValue\" style=\"width: 60px\">\n          <a-select-option value=\"add\">+</a-select-option>\n          <a-select-option value=\"minus\">-</a-select-option>\n        </a-select>\n      </template>\n      <template #addonAfter>\n        <a-select v-model:value=\"addonAfterValue\" style=\"width: 60px\">\n          <a-select-option value=\"USD\">$</a-select-option>\n          <a-select-option value=\"EUR\">€</a-select-option>\n          <a-select-option value=\"GBP\">£</a-select-option>\n          <a-select-option value=\"CNY\">¥</a-select-option>\n        </a-select>\n      </template>\n    </a-input-number>\n    <a-input-number v-model:value=\"value3\">\n      <template #addonAfter><SettingOutlined /></template>\n    </a-input-number>\n    <a-input-number v-model:value=\"value4\">\n      <template #addonAfter>\n        <a-cascader placeholder=\"cascader\" style=\"width: 150px\" />\n      </template>\n    </a-input-number>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { SettingOutlined } from '@ant-design/icons-vue';\nconst value1 = ref(100);\nconst value2 = ref(100);\nconst value3 = ref(100);\nconst value4 = ref(100);\nconst addonBeforeValue = ref('add');\nconst addonAfterValue = ref('USD');\n</script>\n"
  },
  {
    "path": "components/input-number/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n数字输入框。\n\n## en-US\n\nNumeric-only input box.\n\n</docs>\n\n<template>\n  <div>\n    <a-input-number id=\"inputNumber\" v-model:value=\"value\" :min=\"1\" :max=\"10\" />\n    当前值：{{ value }}\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/borderless.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 无边框\n  en-US: Borderless\n---\n\n## zh-CN\n\n没有边框。\n\n## en-US\n\nNo border.\n\n</docs>\n\n<template>\n  <div>\n    <a-input-number id=\"inputNumber\" v-model:value=\"value\" :bordered=\"false\" :min=\"1\" :max=\"10\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/digit.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 高精度小数\n  en-US: High precision decimals\n---\n\n## zh-CN\n\n通过 `stringMode` 开启高精度小数支持，`change` 事件将返回 string 类型。\n对于旧版浏览器，你需要 BigInt polyfill。\n\n## en-US\n\nUse `stringMode` to support high precision decimals support.\n`change` will return string value instead. You need polyfill of BigInt if browser not support.\n\n</docs>\n\n<template>\n  <a-input-number\n    v-model:value=\"value\"\n    style=\"width: 200px\"\n    :min=\"0\"\n    :max=\"10\"\n    :step=\"0.00000000000001\"\n    string-mode\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('1');\n</script>\n"
  },
  {
    "path": "components/input-number/demo/disabled.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 不可用\n  en-US: Disabled\n---\n\n## zh-CN\n\n点击按钮切换可用状态。\n\n## en-US\n\nClick the button to toggle between available and disabled states.\n\n</docs>\n\n<template>\n  <div>\n    <a-input-number v-model:value=\"value\" :min=\"1\" :max=\"10\" :disabled=\"disabled\" />\n    <div style=\"margin-top: 20px\">\n      <a-button type=\"primary\" @click=\"toggle\">Toggle disabled</a-button>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(3);\nconst disabled = ref<boolean>(true);\n\nconst toggle = () => {\n  disabled.value = !disabled.value;\n};\n</script>\n"
  },
  {
    "path": "components/input-number/demo/formatter.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 格式化展示\n  en-US: Formatter\n---\n\n## zh-CN\n\n通过 `formatter` 格式化数字，以展示具有具体含义的数据，往往需要配合 `parser` 一起使用。\n\n## en-US\n\nDisplay value within it's situation with `formatter`, and we usually use `parser` at the same time.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-input-number\n      v-model:value=\"value1\"\n      :formatter=\"value => `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\"\n      :parser=\"value => value.replace(/\\$\\s?|(,*)/g, '')\"\n    />\n    <a-input-number\n      v-model:value=\"value2\"\n      :min=\"0\"\n      :max=\"100\"\n      :formatter=\"value => `${value}%`\"\n      :parser=\"value => value.replace('%', '')\"\n    />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(1000);\nconst value2 = ref<number>(100);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/icon.vue",
    "content": "<docs>\n---\norder: 99\ntitle:\n  zh-CN: 图标按钮\n  en-US: Icon\n---\n\n## zh-CN\n\n使用 `upIcon` `downIcon` 插槽自定义图标。\n\n## en-US\n\nuse `upIcon` `downIcon` custom icon\n\n</docs>\n\n<template>\n  <div>\n    <a-input-number id=\"inputNumber\" v-model:value=\"value\" :min=\"1\" :max=\"10\">\n      <template #upIcon>\n        <ArrowUpOutlined />\n      </template>\n      <template #downIcon>\n        <ArrowDownOutlined />\n      </template>\n    </a-input-number>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons-vue';\nconst value = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <addonVue />\n    <size />\n    <disabled />\n    <digit />\n    <formatter />\n    <keyboardVue />\n    <outOfRangeVue />\n    <borderlessVue />\n    <prefixVue />\n    <statusVue />\n    <iconVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Disabled from './disabled.vue';\nimport Digit from './digit.vue';\nimport Formatter from './formatter.vue';\nimport Size from './size.vue';\nimport addonVue from './addon.vue';\nimport borderlessVue from './borderless.vue';\nimport keyboardVue from './keyboard.vue';\nimport outOfRangeVue from './out-of-range.vue';\nimport prefixVue from './prefix.vue';\nimport statusVue from './status.vue';\nimport iconVue from './icon.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    iconVue,\n    statusVue,\n    prefixVue,\n    Basic,\n    Disabled,\n    Digit,\n    Formatter,\n    Size,\n    addonVue,\n    borderlessVue,\n    keyboardVue,\n    outOfRangeVue,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/input-number/demo/keyboard.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 键盘行为\n  en-US: Keyboard\n---\n\n## zh-CN\n\n使用 `keyboard` 属性可以控制键盘行为。\n\n## en-US\n\nControl keyboard behavior by `keyboard`.\n</docs>\n\n<template>\n  <a-space>\n    <a-input-number v-model:value=\"value\" :keyboard=\"keyboard\" :min=\"1\" :max=\"10\" />\n    <a-checkbox v-model:checked=\"keyboard\">Toggle keyboard</a-checkbox>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(3);\nconst keyboard = ref(true);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/out-of-range.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 超出边界\n  en-US: Out of range\n---\n\n## zh-CN\n\n当通过受控将 `value` 超出边界时，提供警告样式。\n\n## en-US\n\nShow warning style when `value` is out of range by control.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-input-number v-model:value=\"value\" :min=\"1\" :max=\"10\" />\n    <a-button type=\"primary\" @click=\"value = 99\">Reset</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(99);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/prefix.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 前缀\n  en-US: Prefix\n---\n\n## zh-CN\n\n在输入框上添加前缀图标。\n\n## en-US\n\nAdd a prefix inside input.\n\n</docs>\n\n<template>\n  <a-input-number v-model:value=\"value1\" prefix=\"￥\" style=\"width: 100%\" />\n  <br />\n  <br />\n  <a-input-number v-model:value=\"value2\" prefix=\"￥\" style=\"width: 100%\">\n    <template #addonBefore>\n      <UserOutlined />\n    </template>\n  </a-input-number>\n  <br />\n  <br />\n  <a-input-number v-model:value=\"value3\" prefix=\"￥\" disabled style=\"width: 100%\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined } from '@ant-design/icons-vue';\nconst value1 = ref<number>(1);\nconst value2 = ref<number>(2);\nconst value3 = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/size.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 三种大小\n  en-US: Sizes\n---\n\n## zh-CN\n\n三种大小的数字输入框，当 size 分别为 `large` 和 `small` 时，输入框高度为 `40px` 和 `24px` ，默认高度为 `32px`。\n\n## en-US\n\nThere are three sizes available to a numeric input box. By default, the size is `32px`. The two additional sizes are `large` and `small` which means `40px` and `24px`, respectively.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-input-number v-model:value=\"value1\" size=\"large\" :min=\"1\" :max=\"100000\" />\n    <a-input-number v-model:value=\"value2\" :min=\"1\" :max=\"100000\" />\n    <a-input-number v-model:value=\"value3\" size=\"small\" :min=\"1\" :max=\"100000\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(3);\nconst value2 = ref<number>(3);\nconst value3 = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/input-number/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 InputNumber 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to InputNumber with `status`, which could be `error` or `warning`.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-input-number status=\"error\" style=\"width: 100%\" />\n    <a-input-number status=\"warning\" style=\"width: 100%\" />\n    <a-input-number status=\"error\" style=\"width: 100%\">\n      <template #prefix><ClockCircleOutlined /></template>\n    </a-input-number>\n    <a-input-number status=\"warning\" style=\"width: 100%\">\n      <template #prefix><ClockCircleOutlined /></template>\n    </a-input-number>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/input-number/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: InputNumber\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JvWbSYhuNlIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1uH-R5kLAMIAAAAAAAAAAAAADrJ8AQ/original\n---\n\nEnter a number within certain range with the mouse or keyboard.\n\n## When To Use\n\nWhen a numeric value needs to be provided.\n\n## API\n\n| property | description | type | default |  |\n| --- | --- | --- | --- | --- |\n| addonAfter | The label text displayed after (on the right side of) the input field | slot | - | 3.0 |\n| addonBefore | The label text displayed before (on the left side of) the input field | slot | - | 3.0 |\n| autofocus | get focus when component mounted | boolean | false |  |\n| bordered | Whether has border style | boolean | true | 3.0 |\n| controls | Whether to show `+-` controls | boolean | true | 3.0 |\n| decimalSeparator | decimal separator | string | - |  |\n| defaultValue | initial value | number |  |  |\n| disabled | disable the input | boolean | false |  |\n| formatter | Specifies the format of the value presented | function(value: number \\| string, info: { userTyping: boolean, input: string }): string | - | info: 3.0 |\n| keyboard | If enable keyboard behavior | boolean | true | 3.0 |\n| max | max value | number | Infinity |  |\n| min | min value | number | -Infinity |  |\n| parser | Specifies the value extracted from formatter | function( string): number | - |  |\n| precision | precision of input value | number | - |  |\n| prefix | The prefix icon for the Input | slot | - | 3.0 |\n| size | height of input box | string | - |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| step | The number to which the current value is increased or decreased. It can be an integer or decimal. | number\\|string | 1 |  |\n| stringMode | Set value as string to support high precision decimals. Will return string value by `change` | boolean | false | 3.0 |\n| value(v-model) | current value | number |  |  |\n| upIcon | custom up icon | slot | `<UpOutlined />` | 3.3.0 |\n| downIcon | custom up down | slot | `<DownOutlined />` | 3.3.0 |\n\n### events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| change | The callback triggered when the value is changed. | function(value: number \\| string) |  |  |\n| pressEnter | The callback function that is triggered when Enter key is pressed. | function(e) |  | 1.5.0 |\n| step | The callback function that is triggered when click up or down buttons | (value: number, info: { offset: number, type: 'up' \\| 'down' }) => void | 3.0 |  |\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n\n## FAQ\n\n### Why `value` can exceed `min` or `max` in control?\n\nDeveloper handle data by their own in control. It will make data out of sync if InputNumber change display value. It also cause potential data issues when use in form.\n\n### Why dynamic change `min` or `max` which makes `value` out of range will not trigger `change`?\n\n`change` is user trigger event. Auto trigger will makes form lib can not detect data modify source.\n"
  },
  {
    "path": "components/input-number/index.tsx",
    "content": "import type { ExtractPropTypes, HTMLAttributes, App } from 'vue';\nimport { watch, defineComponent, shallowRef, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport UpOutlined from '@ant-design/icons-vue/UpOutlined';\nimport DownOutlined from '@ant-design/icons-vue/DownOutlined';\nimport VcInputNumber, { inputNumberProps as baseInputNumberProps } from './src/InputNumber';\nimport type { SizeType } from '../config-provider';\nimport {\n  FormItemInputContext,\n  NoFormStatus,\n  useInjectFormItemContext,\n} from '../form/FormItemContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { cloneElement } from '../_util/vnode';\nimport omit from '../_util/omit';\nimport PropTypes from '../_util/vue-types';\nimport isValidValue from '../_util/isValidValue';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport { booleanType, stringType } from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\nimport { NoCompactStyle, useCompactItemContext } from '../space/Compact';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nimport type { CustomSlotsType } from '../_util/type';\nconst baseProps = baseInputNumberProps();\nexport const inputNumberProps = () => ({\n  ...baseProps,\n  size: stringType<SizeType>(),\n  bordered: booleanType(true),\n  placeholder: String,\n  name: String,\n  id: String,\n  type: String,\n  addonBefore: PropTypes.any,\n  addonAfter: PropTypes.any,\n  prefix: PropTypes.any,\n  'onUpdate:value': baseProps.onChange,\n  valueModifiers: Object,\n  status: stringType<InputStatus>(),\n});\n\nexport type InputNumberProps = Partial<ExtractPropTypes<ReturnType<typeof inputNumberProps>>>;\n\nconst InputNumber = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AInputNumber',\n  inheritAttrs: false,\n  props: inputNumberProps(),\n  // emits: ['focus', 'blur', 'change', 'input', 'update:value'],\n  slots: Object as CustomSlotsType<{\n    addonBefore?: any;\n    addonAfter?: any;\n    prefix?: any;\n    default?: any;\n    upIcon?: any;\n    downIcon?: any;\n  }>,\n\n  setup(props, { emit, expose, attrs, slots }) {\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const { prefixCls, size, direction, disabled } = useConfigInject('input-number', props);\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? disabledContext.value);\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const mergedSize = computed(() => compactSize.value || size.value);\n\n    const mergedValue = shallowRef(props.value ?? props.defaultValue);\n    const focused = shallowRef(false);\n    watch(\n      () => props.value,\n      () => {\n        mergedValue.value = props.value;\n      },\n    );\n    const inputNumberRef = shallowRef(null);\n    const focus = () => {\n      inputNumberRef.value?.focus();\n    };\n    const blur = () => {\n      inputNumberRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n    const handleChange = (val: number) => {\n      if (props.value === undefined) {\n        mergedValue.value = val;\n      }\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n    const handleBlur = (e: FocusEvent) => {\n      focused.value = false;\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n    const handleFocus = (e: FocusEvent) => {\n      focused.value = true;\n      emit('focus', e);\n    };\n    return () => {\n      const { hasFeedback, isFormItemInput, feedbackIcon } = formItemInputContext;\n      const id = props.id ?? formItemContext.id.value;\n      const {\n        class: className,\n        bordered,\n        readonly,\n        style,\n        addonBefore = slots.addonBefore?.(),\n        addonAfter = slots.addonAfter?.(),\n        prefix = slots.prefix?.(),\n        valueModifiers = {},\n        ...others\n      } = { ...attrs, ...props, id, disabled: mergedDisabled.value } as InputNumberProps &\n        HTMLAttributes;\n\n      const preCls = prefixCls.value;\n\n      const inputNumberClass = classNames(\n        {\n          [`${preCls}-lg`]: mergedSize.value === 'large',\n          [`${preCls}-sm`]: mergedSize.value === 'small',\n          [`${preCls}-rtl`]: direction.value === 'rtl',\n          [`${preCls}-readonly`]: readonly,\n          [`${preCls}-borderless`]: !bordered,\n          [`${preCls}-in-form-item`]: isFormItemInput,\n        },\n        getStatusClassNames(preCls, mergedStatus.value),\n        className,\n        compactItemClassnames.value,\n        hashId.value,\n      );\n\n      let element = (\n        <VcInputNumber\n          {...omit(others, ['size', 'defaultValue'])}\n          ref={inputNumberRef}\n          lazy={!!valueModifiers.lazy}\n          value={mergedValue.value}\n          class={inputNumberClass}\n          prefixCls={preCls}\n          readonly={readonly}\n          onChange={handleChange}\n          onBlur={handleBlur}\n          onFocus={handleFocus}\n          v-slots={{\n            upHandler: slots.upIcon\n              ? () => <span class={`${preCls}-handler-up-inner`}>{slots.upIcon()}</span>\n              : () => <UpOutlined class={`${preCls}-handler-up-inner`} />,\n            downHandler: slots.downIcon\n              ? () => <span class={`${preCls}-handler-down-inner`}>{slots.downIcon()}</span>\n              : () => <DownOutlined class={`${preCls}-handler-down-inner`} />,\n          }}\n        />\n      );\n      const hasAddon = isValidValue(addonBefore) || isValidValue(addonAfter);\n      const hasPrefix = isValidValue(prefix);\n      if (hasPrefix || hasFeedback) {\n        const affixWrapperCls = classNames(\n          `${preCls}-affix-wrapper`,\n          getStatusClassNames(`${preCls}-affix-wrapper`, mergedStatus.value, hasFeedback),\n          {\n            [`${preCls}-affix-wrapper-focused`]: focused.value,\n            [`${preCls}-affix-wrapper-disabled`]: mergedDisabled.value,\n            [`${preCls}-affix-wrapper-sm`]: mergedSize.value === 'small',\n            [`${preCls}-affix-wrapper-lg`]: mergedSize.value === 'large',\n            [`${preCls}-affix-wrapper-rtl`]: direction.value === 'rtl',\n            [`${preCls}-affix-wrapper-readonly`]: readonly,\n            [`${preCls}-affix-wrapper-borderless`]: !bordered,\n            // className will go to addon wrapper\n            [`${className}`]: !hasAddon && className,\n          },\n          hashId.value,\n        );\n        element = (\n          <div class={affixWrapperCls} style={style} onClick={focus}>\n            {hasPrefix && <span class={`${preCls}-prefix`}>{prefix}</span>}\n            {element}\n            {hasFeedback && <span class={`${preCls}-suffix`}>{feedbackIcon}</span>}\n          </div>\n        );\n      }\n\n      if (hasAddon) {\n        const wrapperClassName = `${preCls}-group`;\n        const addonClassName = `${wrapperClassName}-addon`;\n        const addonBeforeNode = addonBefore ? (\n          <div class={addonClassName}>{addonBefore}</div>\n        ) : null;\n        const addonAfterNode = addonAfter ? <div class={addonClassName}>{addonAfter}</div> : null;\n\n        const mergedWrapperClassName = classNames(\n          `${preCls}-wrapper`,\n          wrapperClassName,\n          {\n            [`${wrapperClassName}-rtl`]: direction.value === 'rtl',\n          },\n          hashId.value,\n        );\n\n        const mergedGroupClassName = classNames(\n          `${preCls}-group-wrapper`,\n          {\n            [`${preCls}-group-wrapper-sm`]: mergedSize.value === 'small',\n            [`${preCls}-group-wrapper-lg`]: mergedSize.value === 'large',\n            [`${preCls}-group-wrapper-rtl`]: direction.value === 'rtl',\n          },\n          getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus.value, hasFeedback),\n          className,\n          hashId.value,\n        );\n        element = (\n          <div class={mergedGroupClassName} style={style}>\n            <div class={mergedWrapperClassName}>\n              {addonBeforeNode && (\n                <NoCompactStyle>\n                  <NoFormStatus>{addonBeforeNode}</NoFormStatus>\n                </NoCompactStyle>\n              )}\n              {element}\n              {addonAfterNode && (\n                <NoCompactStyle>\n                  <NoFormStatus>{addonAfterNode}</NoFormStatus>\n                </NoCompactStyle>\n              )}\n            </div>\n          </div>\n        );\n      }\n      return wrapSSR(cloneElement(element, { style }));\n    };\n  },\n});\n\nexport default Object.assign(InputNumber, {\n  install: (app: App) => {\n    app.component(InputNumber.name, InputNumber);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/input-number/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: InputNumber\nsubtitle: 数字输入框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JvWbSYhuNlIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1uH-R5kLAMIAAAAAAAAAAAAADrJ8AQ/original\n---\n\n通过鼠标或键盘，输入范围内的数值。\n\n## 何时使用\n\n当需要获取标准数值时。\n\n## API\n\n属性如下\n\n| 成员 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| addonAfter | 带标签的 input，设置后置标签 | slot | - | 3.0 |\n| addonBefore | 带标签的 input，设置前置标签 | slot | - | 3.0 |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true | 3.0 |\n| controls | 是否显示增减按钮 | boolean | true | 3.0 |\n| decimalSeparator | 小数点 | string | - |  |\n| defaultValue | 初始值 | number |  |  |\n| disabled | 禁用 | boolean | false |  |\n| formatter | 指定输入框展示值的格式 | function(value: number \\| string, info: { userTyping: boolean, input: string }): string | - | info: 3.0 |\n| keyboard | 是否启用键盘快捷行为 | boolean | true | 3.0 |\n| max | 最大值 | number | Infinity |  |\n| min | 最小值 | number | -Infinity |  |\n| parser | 指定从 formatter 里转换回数字的方式，和 formatter 搭配使用 | function( string): number | - |  |\n| precision | 数值精度 | number | - |  |\n| prefix | 带有前缀图标的 input | slot | - | 3.0 |\n| size | 输入框大小 | string | - |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| step | 每次改变步数，可以为小数 | number\\|string | 1 |  |\n| stringMode | 字符值模式，开启后支持高精度小数。同时 `change` 事件将返回 string 类型 | boolean | false | 3.0 |\n| upIcon | 自定义上箭头图标 | slot | `<UpOutlined />` | 3.3.0 |\n| downIcon | 自定义下箭头图标 | slot | `<DownOutlined />` | 3.3.0 |\n| value(v-model) | 当前值 | number |  |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- |\n| change | 变化回调 | Function(value: number \\| string) |  |\n| pressEnter | 按下回车的回调 | function(e) |  |\n| step | 点击上下箭头的回调 | (value: number, info: { offset: number, type: 'up' \\| 'down' }) => void | 3.0 |\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n## FAQ\n\n### 为何受控模式下，`value` 可以超出 `min` 和 `max` 范围？\n\n在受控模式下，开发者可能自行存储相关数据。如果组件将数据约束回范围内，会导致展示数据与实际存储数据不一致的情况。这使得一些如表单场景存在潜在的数据问题。\n\n### 为何动态修改 `min` 和 `max` 让 `value` 超出范围不会触发 `change` 事件？\n\n`change` 事件为用户触发事件，自行触发会导致表单库误以为变更来自用户操作。我们以错误样式展示超出范围的数值。\n"
  },
  {
    "path": "components/input-number/src/InputNumber.tsx",
    "content": "// base rc-input-number@7.3.4\nimport type { DecimalClass, ValueType } from './utils/MiniDecimal';\nimport getMiniDecimal, { toFixed } from './utils/MiniDecimal';\nimport StepHandler from './StepHandler';\nimport { getNumberPrecision, num2str, validateNumber } from './utils/numberUtil';\nimport useCursor from './hooks/useCursor';\nimport useFrame from './hooks/useFrame';\nimport type { HTMLAttributes } from 'vue';\nimport { watch, computed, shallowRef, defineComponent } from 'vue';\nimport type { ChangeEvent, KeyboardEventHandler } from '../../_util/EventInterface';\nimport KeyCode from '../../_util/KeyCode';\nimport classNames from '../../_util/classNames';\nimport { booleanType, stringType, someType, functionType } from '../../_util/type';\nimport type { CustomSlotsType } from '../../_util/type';\n\n/**\n * We support `stringMode` which need handle correct type when user call in onChange\n * format max or min value\n * 1. if isInvalid return null\n * 2. if precision is undefined, return decimal\n * 3. format with precision\n *    I. if max > 0, round down with precision. Example: max= 3.5, precision=0  afterFormat: 3\n *    II. if max < 0, round up with precision. Example: max= -3.5, precision=0  afterFormat: -4\n *    III. if min > 0, round up with precision. Example: min= 3.5, precision=0  afterFormat: 4\n *    IV. if min < 0, round down with precision. Example: max= -3.5, precision=0  afterFormat: -3\n */\nconst getDecimalValue = (stringMode: boolean, decimalValue: DecimalClass) => {\n  if (stringMode || decimalValue.isEmpty()) {\n    return decimalValue.toString();\n  }\n\n  return decimalValue.toNumber();\n};\nconst getDecimalIfValidate = (value: ValueType) => {\n  const decimal = getMiniDecimal(value);\n  return decimal.isInvalidate() ? null : decimal;\n};\n\nexport const inputNumberProps = () => ({\n  /** value will show as string */\n  stringMode: booleanType(),\n\n  defaultValue: someType<ValueType>([String, Number]),\n  value: someType<ValueType>([String, Number]),\n\n  prefixCls: stringType<string>(),\n  min: someType<ValueType>([String, Number]),\n  max: someType<ValueType>([String, Number]),\n  step: someType<ValueType>([String, Number], 1),\n  tabindex: Number,\n  controls: booleanType(true),\n  readonly: booleanType(),\n  disabled: booleanType(),\n  autofocus: booleanType(),\n  keyboard: booleanType(true),\n\n  /** Parse display value to validate number */\n  parser: functionType<(displayValue: string | undefined) => ValueType>(),\n  /** Transform `value` to display value show in input */\n  formatter:\n    functionType<\n      (value: ValueType | undefined, info: { userTyping: boolean; input: string }) => string\n    >(),\n  /** Syntactic sugar of `formatter`. Config precision of display. */\n  precision: Number,\n  /** Syntactic sugar of `formatter`. Config decimal separator of display. */\n  decimalSeparator: String,\n\n  onInput: functionType<(text: string) => void>(),\n  onChange: functionType<(value: ValueType) => void>(),\n  onPressEnter: functionType<KeyboardEventHandler>(),\n\n  onStep:\n    functionType<(value: ValueType, info: { offset: ValueType; type: 'up' | 'down' }) => void>(),\n  onBlur: functionType<(e: FocusEvent) => void>(),\n  onFocus: functionType<(e: FocusEvent) => void>(),\n});\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'InnerInputNumber',\n  inheritAttrs: false,\n  props: {\n    ...inputNumberProps(),\n    lazy: Boolean,\n  },\n  slots: Object as CustomSlotsType<{\n    upHandler: any;\n    downHandler: any;\n    default: any;\n  }>,\n  setup(props, { attrs, slots, emit, expose }) {\n    const inputRef = shallowRef<HTMLInputElement>();\n    const focus = shallowRef(false);\n    const userTypingRef = shallowRef(false);\n    const compositionRef = shallowRef(false);\n    const decimalValue = shallowRef(getMiniDecimal(props.value));\n\n    function setUncontrolledDecimalValue(newDecimal: DecimalClass) {\n      if (props.value === undefined) {\n        decimalValue.value = newDecimal;\n      }\n    }\n\n    // ====================== Parser & Formatter ======================\n    /**\n     * `precision` is used for formatter & onChange.\n     * It will auto generate by `value` & `step`.\n     * But it will not block user typing.\n     *\n     * Note: Auto generate `precision` is used for legacy logic.\n     * We should remove this since we already support high precision with BigInt.\n     *\n     * @param number  Provide which number should calculate precision\n     * @param userTyping  Change by user typing\n     */\n    const getPrecision = (numStr: string, userTyping: boolean) => {\n      if (userTyping) {\n        return undefined;\n      }\n\n      if (props.precision >= 0) {\n        return props.precision;\n      }\n\n      return Math.max(getNumberPrecision(numStr), getNumberPrecision(props.step));\n    };\n\n    // >>> Parser\n    const mergedParser = (num: string | number) => {\n      const numStr = String(num);\n\n      if (props.parser) {\n        return props.parser(numStr);\n      }\n\n      let parsedStr = numStr;\n      if (props.decimalSeparator) {\n        parsedStr = parsedStr.replace(props.decimalSeparator, '.');\n      }\n\n      // [Legacy] We still support auto convert `$ 123,456` to `123456`\n      return parsedStr.replace(/[^\\w.-]+/g, '');\n    };\n\n    // >>> Formatter\n    const inputValue = shallowRef<string | number>('');\n\n    const mergedFormatter = (number: string, userTyping: boolean) => {\n      if (props.formatter) {\n        return props.formatter(number, { userTyping, input: String(inputValue.value) });\n      }\n\n      let str = typeof number === 'number' ? num2str(number) : number;\n\n      // User typing will not auto format with precision directly\n      if (!userTyping) {\n        const mergedPrecision = getPrecision(str, userTyping);\n\n        if (validateNumber(str) && (props.decimalSeparator || mergedPrecision >= 0)) {\n          // Separator\n          const separatorStr = props.decimalSeparator || '.';\n\n          str = toFixed(str, separatorStr, mergedPrecision);\n        }\n      }\n\n      return str;\n    };\n    // ========================== InputValue ==========================\n    /**\n     * Input text value control\n     *\n     * User can not update input content directly. It update with follow rules by priority:\n     *  1. controlled `value` changed\n     *    * [SPECIAL] Typing like `1.` should not immediately convert to `1`\n     *  2. User typing with format (not precision)\n     *  3. Blur or Enter trigger revalidate\n     */\n    const initValue = (() => {\n      const initValue = props.value;\n      if (decimalValue.value.isInvalidate() && ['string', 'number'].includes(typeof initValue)) {\n        return Number.isNaN(initValue) ? '' : initValue;\n      }\n      return mergedFormatter(decimalValue.value.toString(), false);\n    })();\n    inputValue.value = initValue;\n\n    // Should always be string\n    function setInputValue(newValue: DecimalClass, userTyping: boolean) {\n      inputValue.value = mergedFormatter(\n        // Invalidate number is sometime passed by external control, we should let it go\n        // Otherwise is controlled by internal interactive logic which check by userTyping\n        // You can ref 'show limited value when input is not focused' test for more info.\n        newValue.isInvalidate() ? newValue.toString(false) : newValue.toString(!userTyping),\n        userTyping,\n      );\n    }\n\n    // >>> Max & Min limit\n    const maxDecimal = computed(() => getDecimalIfValidate(props.max));\n    const minDecimal = computed(() => getDecimalIfValidate(props.min));\n\n    const upDisabled = computed(() => {\n      if (!maxDecimal.value || !decimalValue.value || decimalValue.value.isInvalidate()) {\n        return false;\n      }\n\n      return maxDecimal.value.lessEquals(decimalValue.value);\n    });\n\n    const downDisabled = computed(() => {\n      if (!minDecimal.value || !decimalValue.value || decimalValue.value.isInvalidate()) {\n        return false;\n      }\n\n      return decimalValue.value.lessEquals(minDecimal.value);\n    });\n\n    // Cursor controller\n    const [recordCursor, restoreCursor] = useCursor(inputRef, focus);\n\n    // ============================= Data =============================\n    /**\n     * Find target value closet within range.\n     * e.g. [11, 28]:\n     *    3  => 11\n     *    23 => 23\n     *    99 => 28\n     */\n    const getRangeValue = (target: DecimalClass) => {\n      // target > max\n      if (maxDecimal.value && !target.lessEquals(maxDecimal.value)) {\n        return maxDecimal.value;\n      }\n\n      // target < min\n      if (minDecimal.value && !minDecimal.value.lessEquals(target)) {\n        return minDecimal.value;\n      }\n\n      return null;\n    };\n\n    /**\n     * Check value is in [min, max] range\n     */\n    const isInRange = (target: DecimalClass) => !getRangeValue(target);\n\n    /**\n     * Trigger `onChange` if value validated and not equals of origin.\n     * Return the value that re-align in range.\n     */\n    const triggerValueUpdate = (newValue: DecimalClass, userTyping: boolean): DecimalClass => {\n      let updateValue = newValue;\n\n      let isRangeValidate = isInRange(updateValue) || updateValue.isEmpty();\n\n      // Skip align value when trigger value is empty.\n      // We just trigger onChange(null)\n      // This should not block user typing\n      if (!updateValue.isEmpty() && !userTyping) {\n        // Revert value in range if needed\n        updateValue = getRangeValue(updateValue) || updateValue;\n        isRangeValidate = true;\n      }\n\n      if (!props.readonly && !props.disabled && isRangeValidate) {\n        const numStr = updateValue.toString();\n        const mergedPrecision = getPrecision(numStr, userTyping);\n        if (mergedPrecision >= 0) {\n          updateValue = getMiniDecimal(toFixed(numStr, '.', mergedPrecision));\n        }\n\n        // Trigger event\n        if (!updateValue.equals(decimalValue.value)) {\n          setUncontrolledDecimalValue(updateValue);\n          props.onChange?.(\n            updateValue.isEmpty() ? null : getDecimalValue(props.stringMode, updateValue),\n          );\n\n          // Reformat input if value is not controlled\n          if (props.value === undefined) {\n            setInputValue(updateValue, userTyping);\n          }\n        }\n\n        return updateValue;\n      }\n\n      return decimalValue.value;\n    };\n\n    // ========================== User Input ==========================\n    const onNextPromise = useFrame();\n\n    // >>> Collect input value\n    const collectInputValue = (inputStr: string) => {\n      recordCursor();\n\n      // Update inputValue incase input can not parse as number\n      inputValue.value = inputStr;\n      // Parse number\n      if (!compositionRef.value) {\n        const finalValue = mergedParser(inputStr);\n        const finalDecimal = getMiniDecimal(finalValue);\n        if (!finalDecimal.isNaN()) {\n          triggerValueUpdate(finalDecimal, true);\n        }\n      }\n\n      // Trigger onInput later to let user customize value if they want do handle something after onChange\n      props.onInput?.(inputStr);\n\n      // optimize for chinese input experience\n      // https://github.com/ant-design/ant-design/issues/8196\n      onNextPromise(() => {\n        let nextInputStr = inputStr;\n        if (!props.parser) {\n          nextInputStr = inputStr.replace(/。/g, '.');\n        }\n\n        if (nextInputStr !== inputStr) {\n          collectInputValue(nextInputStr);\n        }\n      });\n    };\n\n    // >>> Composition\n    const onCompositionStart = () => {\n      compositionRef.value = true;\n    };\n\n    const onCompositionEnd = () => {\n      compositionRef.value = false;\n\n      collectInputValue(inputRef.value.value);\n    };\n\n    // >>> Input\n    const onInternalInput = (e: ChangeEvent) => {\n      collectInputValue(e.target.value);\n    };\n\n    // ============================= Step =============================\n    const onInternalStep = (up: boolean) => {\n      // Ignore step since out of range\n      if ((up && upDisabled.value) || (!up && downDisabled.value)) {\n        return;\n      }\n\n      // Clear typing status since it may caused by up & down key.\n      // We should sync with input value.\n      userTypingRef.value = false;\n\n      let stepDecimal = getMiniDecimal(props.step);\n      if (!up) {\n        stepDecimal = stepDecimal.negate();\n      }\n\n      const target = (decimalValue.value || getMiniDecimal(0)).add(stepDecimal.toString());\n\n      const updatedValue = triggerValueUpdate(target, false);\n\n      props.onStep?.(getDecimalValue(props.stringMode, updatedValue), {\n        offset: props.step,\n        type: up ? 'up' : 'down',\n      });\n\n      inputRef.value?.focus();\n    };\n\n    // ============================ Flush =============================\n    /**\n     * Flush current input content to trigger value change & re-formatter input if needed\n     */\n    const flushInputValue = (userTyping: boolean) => {\n      const parsedValue = getMiniDecimal(mergedParser(inputValue.value));\n      let formatValue: DecimalClass = parsedValue;\n\n      if (!parsedValue.isNaN()) {\n        // Only validate value or empty value can be re-fill to inputValue\n        // Reassign the formatValue within ranged of trigger control\n        formatValue = triggerValueUpdate(parsedValue, userTyping);\n      } else {\n        formatValue = decimalValue.value;\n      }\n\n      if (props.value !== undefined) {\n        // Reset back with controlled value first\n        setInputValue(decimalValue.value, false);\n      } else if (!formatValue.isNaN()) {\n        // Reset input back since no validate value\n        setInputValue(formatValue, false);\n      }\n    };\n\n    // Solve the issue of the event triggering sequence when entering numbers in chinese input (Safari)\n    const onBeforeInput = () => {\n      userTypingRef.value = true;\n    };\n\n    const onKeyDown: KeyboardEventHandler = event => {\n      const { which } = event;\n      userTypingRef.value = true;\n\n      if (which === KeyCode.ENTER) {\n        if (!compositionRef.value) {\n          userTypingRef.value = false;\n        }\n        flushInputValue(false);\n        props.onPressEnter?.(event);\n      }\n\n      if (props.keyboard === false) {\n        return;\n      }\n\n      // Do step\n      if (!compositionRef.value && [KeyCode.UP, KeyCode.DOWN].includes(which)) {\n        onInternalStep(KeyCode.UP === which);\n        event.preventDefault();\n      }\n    };\n\n    const onKeyUp = () => {\n      userTypingRef.value = false;\n    };\n\n    // >>> Focus & Blur\n    const onBlur = (e: FocusEvent) => {\n      flushInputValue(false);\n      focus.value = false;\n      userTypingRef.value = false;\n      emit('blur', e);\n    };\n\n    // ========================== Controlled ==========================\n    // Input by precision\n    watch(\n      () => props.precision,\n      () => {\n        if (!decimalValue.value.isInvalidate()) {\n          setInputValue(decimalValue.value, false);\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // Input by value\n    watch(\n      () => props.value,\n      () => {\n        const newValue = getMiniDecimal(props.value);\n        decimalValue.value = newValue;\n\n        const currentParsedValue = getMiniDecimal(mergedParser(inputValue.value));\n\n        // When user typing from `1.2` to `1.`, we should not convert to `1` immediately.\n        // But let it go if user set `formatter`\n        if (!newValue.equals(currentParsedValue) || !userTypingRef.value || props.formatter) {\n          // Update value as effect\n          setInputValue(newValue, userTypingRef.value);\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // ============================ Cursor ============================\n    watch(\n      inputValue,\n      () => {\n        if (props.formatter) {\n          restoreCursor();\n        }\n      },\n      { flush: 'post' },\n    );\n\n    watch(\n      () => props.disabled,\n      val => {\n        if (val) {\n          focus.value = false;\n        }\n      },\n    );\n\n    expose({\n      focus: () => {\n        inputRef.value?.focus();\n      },\n      blur: () => {\n        inputRef.value?.blur();\n      },\n    });\n\n    return () => {\n      const {\n        prefixCls = 'rc-input-number',\n        min,\n        max,\n        step = 1,\n        defaultValue,\n        value,\n        disabled,\n        readonly,\n        keyboard,\n        controls = true,\n        autofocus,\n\n        stringMode,\n\n        parser,\n        formatter,\n        precision,\n        decimalSeparator,\n\n        onChange,\n        onInput,\n        onPressEnter,\n        onStep,\n        lazy,\n        class: className,\n        style,\n\n        ...inputProps\n      } = { ...(attrs as HTMLAttributes), ...props };\n      const { upHandler, downHandler } = slots;\n      const inputClassName = `${prefixCls}-input`;\n      const eventProps = {} as any;\n      if (lazy) {\n        eventProps.onChange = onInternalInput;\n      } else {\n        eventProps.onInput = onInternalInput;\n      }\n      return (\n        <div\n          class={classNames(prefixCls, className, {\n            [`${prefixCls}-focused`]: focus.value,\n            [`${prefixCls}-disabled`]: disabled,\n            [`${prefixCls}-readonly`]: readonly,\n            [`${prefixCls}-not-a-number`]: decimalValue.value.isNaN(),\n            [`${prefixCls}-out-of-range`]:\n              !decimalValue.value.isInvalidate() && !isInRange(decimalValue.value),\n          })}\n          style={style}\n          onKeydown={onKeyDown}\n          onKeyup={onKeyUp}\n        >\n          {controls && (\n            <StepHandler\n              prefixCls={prefixCls}\n              upDisabled={upDisabled.value}\n              downDisabled={downDisabled.value}\n              onStep={onInternalStep}\n              v-slots={{ upNode: upHandler, downNode: downHandler }}\n            />\n          )}\n          <div class={`${inputClassName}-wrap`}>\n            <input\n              autofocus={autofocus}\n              autocomplete=\"off\"\n              role=\"spinbutton\"\n              aria-valuemin={min as any}\n              aria-valuemax={max as any}\n              aria-valuenow={\n                decimalValue.value.isInvalidate() ? null : (decimalValue.value.toString() as any)\n              }\n              step={step}\n              {...inputProps}\n              ref={inputRef}\n              class={inputClassName}\n              value={inputValue.value}\n              disabled={disabled}\n              readonly={readonly}\n              onFocus={(e: FocusEvent) => {\n                focus.value = true;\n                emit('focus', e);\n              }}\n              {...eventProps}\n              onBlur={onBlur}\n              onCompositionstart={onCompositionStart}\n              onCompositionend={onCompositionEnd}\n              onBeforeinput={onBeforeInput}\n            />\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/input-number/src/StepHandler.tsx",
    "content": "import isMobile from '../../vc-util/isMobile';\nimport { onBeforeUnmount, ref, defineComponent } from 'vue';\nimport classNames from '../../_util/classNames';\nimport { functionType } from '../../_util/type';\nimport type { CustomSlotsType } from '../../_util/type';\n\n/**\n * When click and hold on a button - the speed of auto changing the value.\n */\nconst STEP_INTERVAL = 200;\n\n/**\n * When click and hold on a button - the delay before auto changing the value.\n */\nconst STEP_DELAY = 600;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'StepHandler',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    upDisabled: Boolean,\n    downDisabled: Boolean,\n    onStep: functionType<(up: boolean) => void>(),\n  },\n  slots: Object as CustomSlotsType<{\n    upNode?: any;\n    downNode?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, emit }) {\n    const stepTimeoutRef = ref();\n\n    // We will interval update step when hold mouse down\n    const onStepMouseDown = (e: MouseEvent, up: boolean) => {\n      e.preventDefault();\n\n      emit('step', up);\n\n      // Loop step for interval\n      function loopStep() {\n        emit('step', up);\n\n        stepTimeoutRef.value = setTimeout(loopStep, STEP_INTERVAL);\n      }\n\n      // First time press will wait some time to trigger loop step update\n      stepTimeoutRef.value = setTimeout(loopStep, STEP_DELAY);\n    };\n\n    const onStopStep = () => {\n      clearTimeout(stepTimeoutRef.value);\n    };\n\n    onBeforeUnmount(() => {\n      onStopStep();\n    });\n\n    return () => {\n      if (isMobile()) {\n        return null;\n      }\n      const { prefixCls, upDisabled, downDisabled } = props;\n      const handlerClassName = `${prefixCls}-handler`;\n\n      const upClassName = classNames(handlerClassName, `${handlerClassName}-up`, {\n        [`${handlerClassName}-up-disabled`]: upDisabled,\n      });\n      const downClassName = classNames(handlerClassName, `${handlerClassName}-down`, {\n        [`${handlerClassName}-down-disabled`]: downDisabled,\n      });\n\n      const sharedHandlerProps = {\n        unselectable: 'on' as const,\n        role: 'button',\n        onMouseup: onStopStep,\n        onMouseleave: onStopStep,\n      };\n      const { upNode, downNode } = slots;\n      return (\n        <div class={`${handlerClassName}-wrap`}>\n          <span\n            {...sharedHandlerProps}\n            onMousedown={e => {\n              onStepMouseDown(e, true);\n            }}\n            aria-label=\"Increase Value\"\n            aria-disabled={upDisabled}\n            class={upClassName}\n          >\n            {upNode?.() || <span unselectable=\"on\" class={`${prefixCls}-handler-up-inner`} />}\n          </span>\n          <span\n            {...sharedHandlerProps}\n            onMousedown={e => {\n              onStepMouseDown(e, false);\n            }}\n            aria-label=\"Decrease Value\"\n            aria-disabled={downDisabled}\n            class={downClassName}\n          >\n            {downNode?.() || <span unselectable=\"on\" class={`${prefixCls}-handler-down-inner`} />}\n          </span>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/input-number/src/hooks/useCursor.ts",
    "content": "import { warning } from '../../../vc-util/warning';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\n/**\n * Keep input cursor in the correct position if possible.\n * Is this necessary since we have `formatter` which may mass the content?\n */\nexport default function useCursor(\n  inputRef: Ref<HTMLInputElement>,\n  focused: Ref<boolean>,\n): [() => void, () => void] {\n  const selectionRef = ref<{\n    start?: number;\n    end?: number;\n    value?: string;\n    beforeTxt?: string;\n    afterTxt?: string;\n  }>(null);\n\n  function recordCursor() {\n    // Record position\n    try {\n      const { selectionStart: start, selectionEnd: end, value } = inputRef.value;\n      const beforeTxt = value.substring(0, start);\n      const afterTxt = value.substring(end);\n\n      selectionRef.value = {\n        start,\n        end,\n        value,\n        beforeTxt,\n        afterTxt,\n      };\n    } catch (e) {\n      // Fix error in Chrome:\n      // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n      // http://stackoverflow.com/q/21177489/3040605\n    }\n  }\n\n  /**\n   * Restore logic:\n   *  1. back string same\n   *  2. start string same\n   */\n  function restoreCursor() {\n    if (inputRef.value && selectionRef.value && focused.value) {\n      try {\n        const { value } = inputRef.value;\n        const { beforeTxt, afterTxt, start } = selectionRef.value;\n\n        let startPos = value.length;\n\n        if (value.endsWith(afterTxt)) {\n          startPos = value.length - selectionRef.value.afterTxt.length;\n        } else if (value.startsWith(beforeTxt)) {\n          startPos = beforeTxt.length;\n        } else {\n          const beforeLastChar = beforeTxt[start - 1];\n          const newIndex = value.indexOf(beforeLastChar, start - 1);\n          if (newIndex !== -1) {\n            startPos = newIndex + 1;\n          }\n        }\n\n        inputRef.value.setSelectionRange(startPos, startPos);\n      } catch (e) {\n        warning(\n          false,\n          `Something warning of cursor restore. Please fire issue about this: ${e.message}`,\n        );\n      }\n    }\n  }\n\n  return [recordCursor, restoreCursor];\n}\n"
  },
  {
    "path": "components/input-number/src/hooks/useFrame.ts",
    "content": "import raf from '../../../_util/raf';\nimport { onBeforeUnmount, shallowRef } from 'vue';\n\n/**\n * Always trigger latest once when call multiple time\n */\nexport default () => {\n  const idRef = shallowRef(0);\n\n  const cleanUp = () => {\n    raf.cancel(idRef.value);\n  };\n\n  onBeforeUnmount(() => {\n    cleanUp();\n  });\n\n  return (callback: () => void) => {\n    cleanUp();\n\n    idRef.value = raf(() => {\n      callback();\n    });\n  };\n};\n"
  },
  {
    "path": "components/input-number/src/utils/MiniDecimal.ts",
    "content": "/* eslint-disable max-classes-per-file */\n\nimport { getNumberPrecision, isE, num2str, trimNumber, validateNumber } from './numberUtil';\nimport { supportBigInt } from './supportUtil';\n\nexport type ValueType = string | number;\n\nfunction isEmpty(value: ValueType) {\n  return (!value && value !== 0 && !Number.isNaN(value)) || !String(value).trim();\n}\n\nexport interface DecimalClass {\n  add: (value: ValueType) => DecimalClass;\n\n  isEmpty: () => boolean;\n\n  isNaN: () => boolean;\n\n  isInvalidate: () => boolean;\n\n  toNumber: () => number;\n\n  /**\n   * Parse value as string. Will return empty string if `isInvalidate`.\n   * You can set `safe=false` to get origin string content.\n   */\n  toString: (safe?: boolean) => string;\n\n  equals: (target: DecimalClass) => boolean;\n\n  lessEquals: (target: DecimalClass) => boolean;\n\n  negate: () => DecimalClass;\n}\n\n/**\n * We can remove this when IE not support anymore\n */\nexport class NumberDecimal implements DecimalClass {\n  origin = '';\n  number: number;\n  empty: boolean;\n\n  constructor(value: ValueType) {\n    if (isEmpty(value)) {\n      this.empty = true;\n      return;\n    }\n\n    this.origin = String(value);\n    this.number = Number(value);\n  }\n\n  negate() {\n    return new NumberDecimal(-this.toNumber());\n  }\n\n  add(value: ValueType) {\n    if (this.isInvalidate()) {\n      return new NumberDecimal(value);\n    }\n\n    const target = Number(value);\n\n    if (Number.isNaN(target)) {\n      return this;\n    }\n\n    const number = this.number + target;\n\n    // [Legacy] Back to safe integer\n    if (number > Number.MAX_SAFE_INTEGER) {\n      return new NumberDecimal(Number.MAX_SAFE_INTEGER);\n    }\n\n    if (number < Number.MIN_SAFE_INTEGER) {\n      return new NumberDecimal(Number.MIN_SAFE_INTEGER);\n    }\n\n    const maxPrecision = Math.max(getNumberPrecision(this.number), getNumberPrecision(target));\n    return new NumberDecimal(number.toFixed(maxPrecision));\n  }\n\n  isEmpty() {\n    return this.empty;\n  }\n\n  isNaN() {\n    return Number.isNaN(this.number);\n  }\n\n  isInvalidate() {\n    return this.isEmpty() || this.isNaN();\n  }\n\n  equals(target: DecimalClass) {\n    return this.toNumber() === target?.toNumber();\n  }\n\n  lessEquals(target: DecimalClass) {\n    return this.add(target.negate().toString()).toNumber() <= 0;\n  }\n\n  toNumber() {\n    return this.number;\n  }\n\n  toString(safe = true) {\n    if (!safe) {\n      return this.origin;\n    }\n\n    if (this.isInvalidate()) {\n      return '';\n    }\n\n    return num2str(this.number);\n  }\n}\n\nexport class BigIntDecimal implements DecimalClass {\n  origin = '';\n  negative: boolean;\n  integer: bigint;\n  decimal: bigint;\n  /** BigInt will convert `0009` to `9`. We need record the len of decimal */\n  decimalLen: number;\n  empty: boolean;\n  nan: boolean;\n\n  constructor(value: string | number) {\n    if (isEmpty(value)) {\n      this.empty = true;\n      return;\n    }\n\n    this.origin = String(value);\n\n    // Act like Number convert\n    if (value === '-' || Number.isNaN(value)) {\n      this.nan = true;\n      return;\n    }\n\n    let mergedValue = value;\n\n    // We need convert back to Number since it require `toFixed` to handle this\n    if (isE(mergedValue)) {\n      mergedValue = Number(mergedValue);\n    }\n\n    mergedValue = typeof mergedValue === 'string' ? mergedValue : num2str(mergedValue);\n\n    if (validateNumber(mergedValue)) {\n      const trimRet = trimNumber(mergedValue);\n      this.negative = trimRet.negative;\n      const numbers = trimRet.trimStr.split('.');\n      this.integer = BigInt(numbers[0]);\n      const decimalStr = numbers[1] || '0';\n      this.decimal = BigInt(decimalStr);\n      this.decimalLen = decimalStr.length;\n    } else {\n      this.nan = true;\n    }\n  }\n\n  private getMark() {\n    return this.negative ? '-' : '';\n  }\n\n  private getIntegerStr() {\n    return this.integer.toString();\n  }\n\n  private getDecimalStr() {\n    return this.decimal.toString().padStart(this.decimalLen, '0');\n  }\n\n  /**\n   * Align BigIntDecimal with same decimal length. e.g. 12.3 + 5 = 1230000\n   * This is used for add function only.\n   */\n  private alignDecimal(decimalLength: number): bigint {\n    const str = `${this.getMark()}${this.getIntegerStr()}${this.getDecimalStr().padEnd(\n      decimalLength,\n      '0',\n    )}`;\n    return BigInt(str);\n  }\n\n  negate() {\n    const clone = new BigIntDecimal(this.toString());\n    clone.negative = !clone.negative;\n    return clone;\n  }\n\n  add(value: ValueType): BigIntDecimal {\n    if (this.isInvalidate()) {\n      return new BigIntDecimal(value);\n    }\n\n    const offset = new BigIntDecimal(value);\n    if (offset.isInvalidate()) {\n      return this;\n    }\n\n    const maxDecimalLength = Math.max(this.getDecimalStr().length, offset.getDecimalStr().length);\n    const myAlignedDecimal = this.alignDecimal(maxDecimalLength);\n    const offsetAlignedDecimal = offset.alignDecimal(maxDecimalLength);\n\n    const valueStr = (myAlignedDecimal + offsetAlignedDecimal).toString();\n\n    // We need fill string length back to `maxDecimalLength` to avoid parser failed\n    const { negativeStr, trimStr } = trimNumber(valueStr);\n    const hydrateValueStr = `${negativeStr}${trimStr.padStart(maxDecimalLength + 1, '0')}`;\n\n    return new BigIntDecimal(\n      `${hydrateValueStr.slice(0, -maxDecimalLength)}.${hydrateValueStr.slice(-maxDecimalLength)}`,\n    );\n  }\n\n  isEmpty() {\n    return this.empty;\n  }\n\n  isNaN() {\n    return this.nan;\n  }\n\n  isInvalidate() {\n    return this.isEmpty() || this.isNaN();\n  }\n\n  equals(target: DecimalClass) {\n    return this.toString() === target?.toString();\n  }\n\n  lessEquals(target: DecimalClass) {\n    return this.add(target.negate().toString()).toNumber() <= 0;\n  }\n\n  toNumber() {\n    if (this.isNaN()) {\n      return NaN;\n    }\n    return Number(this.toString());\n  }\n\n  toString(safe = true) {\n    if (!safe) {\n      return this.origin;\n    }\n\n    if (this.isInvalidate()) {\n      return '';\n    }\n\n    return trimNumber(`${this.getMark()}${this.getIntegerStr()}.${this.getDecimalStr()}`).fullStr;\n  }\n}\n\nexport default function getMiniDecimal(value: ValueType): DecimalClass {\n  // We use BigInt here.\n  // Will fallback to Number if not support.\n  if (supportBigInt()) {\n    return new BigIntDecimal(value);\n  }\n  return new NumberDecimal(value);\n}\n\n/**\n * Align the logic of toFixed to around like 1.5 => 2.\n * If set `cutOnly`, will just remove the over decimal part.\n */\nexport function toFixed(numStr: string, separatorStr: string, precision?: number, cutOnly = false) {\n  if (numStr === '') {\n    return '';\n  }\n  const { negativeStr, integerStr, decimalStr } = trimNumber(numStr);\n  const precisionDecimalStr = `${separatorStr}${decimalStr}`;\n\n  const numberWithoutDecimal = `${negativeStr}${integerStr}`;\n\n  if (precision >= 0) {\n    // We will get last + 1 number to check if need advanced number\n    const advancedNum = Number(decimalStr[precision]);\n\n    if (advancedNum >= 5 && !cutOnly) {\n      const advancedDecimal = getMiniDecimal(numStr).add(\n        `${negativeStr}0.${'0'.repeat(precision)}${10 - advancedNum}`,\n      );\n      return toFixed(advancedDecimal.toString(), separatorStr, precision, cutOnly);\n    }\n\n    if (precision === 0) {\n      return numberWithoutDecimal;\n    }\n\n    return `${numberWithoutDecimal}${separatorStr}${decimalStr\n      .padEnd(precision, '0')\n      .slice(0, precision)}`;\n  }\n\n  if (precisionDecimalStr === '.0') {\n    return numberWithoutDecimal;\n  }\n\n  return `${numberWithoutDecimal}${precisionDecimalStr}`;\n}\n"
  },
  {
    "path": "components/input-number/src/utils/numberUtil.ts",
    "content": "import { supportBigInt } from './supportUtil';\n\n/**\n * Format string number to readable number\n */\nexport function trimNumber(numStr: string) {\n  let str = numStr.trim();\n\n  let negative = str.startsWith('-');\n\n  if (negative) {\n    str = str.slice(1);\n  }\n\n  str = str\n    // Remove decimal 0. `1.000` => `1.`, `1.100` => `1.1`\n    .replace(/(\\.\\d*[^0])0*$/, '$1')\n    // Remove useless decimal. `1.` => `1`\n    .replace(/\\.0*$/, '')\n    // Remove integer 0. `0001` => `1`, 000.1' => `.1`\n    .replace(/^0+/, '');\n\n  if (str.startsWith('.')) {\n    str = `0${str}`;\n  }\n\n  const trimStr = str || '0';\n  const splitNumber = trimStr.split('.');\n\n  const integerStr = splitNumber[0] || '0';\n  const decimalStr = splitNumber[1] || '0';\n\n  if (integerStr === '0' && decimalStr === '0') {\n    negative = false;\n  }\n\n  const negativeStr = negative ? '-' : '';\n\n  return {\n    negative,\n    negativeStr,\n    trimStr,\n    integerStr,\n    decimalStr,\n    fullStr: `${negativeStr}${trimStr}`,\n  };\n}\n\nexport function isE(number: string | number) {\n  const str = String(number);\n\n  return !Number.isNaN(Number(str)) && str.includes('e');\n}\n\n/**\n * [Legacy] Convert 1e-9 to 0.000000001.\n * This may lose some precision if user really want 1e-9.\n */\nexport function getNumberPrecision(number: string | number) {\n  const numStr = String(number);\n\n  if (isE(number)) {\n    let precision = Number(numStr.slice(numStr.indexOf('e-') + 2));\n\n    const decimalMatch = numStr.match(/\\.(\\d+)/);\n    if (decimalMatch?.[1]) {\n      precision += decimalMatch[1].length;\n    }\n    return precision;\n  }\n\n  return numStr.includes('.') && validateNumber(numStr)\n    ? numStr.length - numStr.indexOf('.') - 1\n    : 0;\n}\n\n/**\n * Convert number (includes scientific notation) to -xxx.yyy format\n */\nexport function num2str(number: number): string {\n  let numStr = String(number);\n  if (isE(number)) {\n    if (number > Number.MAX_SAFE_INTEGER) {\n      return String(supportBigInt() ? BigInt(number).toString() : Number.MAX_SAFE_INTEGER);\n    }\n\n    if (number < Number.MIN_SAFE_INTEGER) {\n      return String(supportBigInt() ? BigInt(number).toString() : Number.MIN_SAFE_INTEGER);\n    }\n\n    numStr = number.toFixed(getNumberPrecision(numStr));\n  }\n\n  return trimNumber(numStr).fullStr;\n}\n\nexport function validateNumber(num: string | number) {\n  if (typeof num === 'number') {\n    return !Number.isNaN(num);\n  }\n\n  // Empty\n  if (!num) {\n    return false;\n  }\n\n  return (\n    // Normal type: 11.28\n    /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num) ||\n    // Pre-number: 1.\n    /^\\s*-?\\d+\\.\\s*$/.test(num) ||\n    // Post-number: .1\n    /^\\s*-?\\.\\d+\\s*$/.test(num)\n  );\n}\n"
  },
  {
    "path": "components/input-number/src/utils/supportUtil.ts",
    "content": "export function supportBigInt() {\n  return typeof BigInt === 'function';\n}\n"
  },
  {
    "path": "components/input-number/style/index.tsx",
    "content": "import type { InputToken } from '../../input/style';\nimport {\n  genActiveStyle,\n  genBasicInputStyle,\n  genDisabledStyle,\n  genHoverStyle,\n  genInputGroupStyle,\n  genPlaceholderStyle,\n  genStatusStyle,\n  initInputToken,\n} from '../../input/style';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\nimport { resetComponent, resetIcon } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\n\nexport interface ComponentToken {\n  controlWidth: number;\n  handleWidth: number;\n  handleFontSize: number;\n  /** Default `auto`. Set `true` will always show the handle */\n  handleVisible: 'auto' | true;\n}\n\ntype InputNumberToken = InputToken<FullToken<'InputNumber'>>;\n\nconst genInputNumberStyles: GenerateStyle<InputNumberToken> = (token: InputNumberToken) => {\n  const {\n    componentCls,\n    lineWidth,\n    lineType,\n    colorBorder,\n    borderRadius,\n    fontSizeLG,\n    controlHeightLG,\n    controlHeightSM,\n    colorError,\n    inputPaddingHorizontalSM,\n    colorTextDescription,\n    motionDurationMid,\n    colorPrimary,\n    controlHeight,\n    inputPaddingHorizontal,\n    colorBgContainer,\n    colorTextDisabled,\n    borderRadiusSM,\n    borderRadiusLG,\n    controlWidth,\n    handleVisible,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        ...genBasicInputStyle(token),\n        ...genStatusStyle(token, componentCls),\n\n        display: 'inline-block',\n        width: controlWidth,\n        margin: 0,\n        padding: 0,\n        border: `${lineWidth}px ${lineType} ${colorBorder}`,\n        borderRadius,\n\n        '&-rtl': {\n          direction: 'rtl',\n\n          [`${componentCls}-input`]: {\n            direction: 'rtl',\n          },\n        },\n\n        '&-lg': {\n          padding: 0,\n          fontSize: fontSizeLG,\n          borderRadius: borderRadiusLG,\n\n          [`input${componentCls}-input`]: {\n            height: controlHeightLG - 2 * lineWidth,\n          },\n        },\n\n        '&-sm': {\n          padding: 0,\n          borderRadius: borderRadiusSM,\n\n          [`input${componentCls}-input`]: {\n            height: controlHeightSM - 2 * lineWidth,\n            padding: `0 ${inputPaddingHorizontalSM}px`,\n          },\n        },\n\n        '&:hover': {\n          ...genHoverStyle(token),\n        },\n\n        '&-focused': {\n          ...genActiveStyle(token),\n        },\n\n        '&-disabled': {\n          ...genDisabledStyle(token),\n          [`${componentCls}-input`]: {\n            cursor: 'not-allowed',\n          },\n        },\n\n        // ===================== Out Of Range =====================\n        '&-out-of-range': {\n          input: {\n            color: colorError,\n          },\n        },\n\n        // Style for input-group: input with label, with button or dropdown...\n        '&-group': {\n          ...resetComponent(token),\n          ...genInputGroupStyle(token),\n\n          '&-wrapper': {\n            display: 'inline-block',\n            textAlign: 'start',\n            verticalAlign: 'top', // https://github.com/ant-design/ant-design/issues/6403\n\n            [`${componentCls}-affix-wrapper`]: {\n              width: '100%',\n            },\n\n            // Size\n            '&-lg': {\n              [`${componentCls}-group-addon`]: {\n                borderRadius: borderRadiusLG,\n              },\n            },\n            '&-sm': {\n              [`${componentCls}-group-addon`]: {\n                borderRadius: borderRadiusSM,\n              },\n            },\n          },\n        },\n\n        [componentCls]: {\n          '&-input': {\n            width: '100%',\n            height: controlHeight - 2 * lineWidth,\n            padding: `0 ${inputPaddingHorizontal}px`,\n            textAlign: 'start',\n            backgroundColor: 'transparent',\n            border: 0,\n            borderRadius,\n            outline: 0,\n            transition: `all ${motionDurationMid} linear`,\n            appearance: 'textfield',\n            color: token.colorText,\n            fontSize: 'inherit',\n            verticalAlign: 'top',\n            ...genPlaceholderStyle(token.colorTextPlaceholder),\n\n            '&[type=\"number\"]::-webkit-inner-spin-button, &[type=\"number\"]::-webkit-outer-spin-button':\n              {\n                margin: 0,\n                /* stylelint-disable-next-line property-no-vendor-prefix */\n                webkitAppearance: 'none',\n                appearance: 'none',\n              },\n          },\n        },\n      },\n    },\n\n    // Handler\n    {\n      [componentCls]: {\n        [`&:hover ${componentCls}-handler-wrap, &-focused ${componentCls}-handler-wrap`]: {\n          opacity: 1,\n        },\n\n        [`${componentCls}-handler-wrap`]: {\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineEnd: 0,\n          width: token.handleWidth,\n          height: '100%',\n          background: colorBgContainer,\n          borderStartStartRadius: 0,\n          borderStartEndRadius: borderRadius,\n          borderEndEndRadius: borderRadius,\n          borderEndStartRadius: 0,\n          opacity: handleVisible === true ? 1 : 0,\n          display: 'flex',\n          flexDirection: 'column',\n          alignItems: 'stretch',\n          transition: `opacity ${motionDurationMid} linear ${motionDurationMid}`,\n\n          // Fix input number inside Menu makes icon too large\n          // We arise the selector priority by nest selector here\n          // https://github.com/ant-design/ant-design/issues/14367\n          [`${componentCls}-handler`]: {\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            flex: 'auto',\n            height: '40%',\n\n            [`\n              ${componentCls}-handler-up-inner,\n              ${componentCls}-handler-down-inner\n            `]: {\n              marginInlineEnd: 0,\n              fontSize: token.handleFontSize,\n            },\n          },\n        },\n\n        [`${componentCls}-handler`]: {\n          height: '50%',\n          overflow: 'hidden',\n          color: colorTextDescription,\n          fontWeight: 'bold',\n          lineHeight: 0,\n          textAlign: 'center',\n          cursor: 'pointer',\n          borderInlineStart: `${lineWidth}px ${lineType} ${colorBorder}`,\n          transition: `all ${motionDurationMid} linear`,\n          '&:active': {\n            background: token.colorFillAlter,\n          },\n\n          // Hover\n          '&:hover': {\n            height: `60%`,\n\n            [`\n              ${componentCls}-handler-up-inner,\n              ${componentCls}-handler-down-inner\n            `]: {\n              color: colorPrimary,\n            },\n          },\n\n          '&-up-inner, &-down-inner': {\n            ...resetIcon(),\n\n            color: colorTextDescription,\n            transition: `all ${motionDurationMid} linear`,\n            userSelect: 'none',\n          },\n        },\n\n        [`${componentCls}-handler-up`]: {\n          borderStartEndRadius: borderRadius,\n        },\n\n        [`${componentCls}-handler-down`]: {\n          borderBlockStart: `${lineWidth}px ${lineType} ${colorBorder}`,\n          borderEndEndRadius: borderRadius,\n        },\n\n        // Disabled\n        '&-disabled, &-readonly': {\n          [`${componentCls}-handler-wrap`]: {\n            display: 'none',\n          },\n\n          [`${componentCls}-input`]: {\n            color: 'inherit',\n          },\n        },\n\n        [`\n          ${componentCls}-handler-up-disabled,\n          ${componentCls}-handler-down-disabled\n        `]: {\n          cursor: 'not-allowed',\n        },\n\n        [`\n          ${componentCls}-handler-up-disabled:hover &-handler-up-inner,\n          ${componentCls}-handler-down-disabled:hover &-handler-down-inner\n        `]: {\n          color: colorTextDisabled,\n        },\n      },\n    },\n\n    // Border-less\n    {\n      [`${componentCls}-borderless`]: {\n        borderColor: 'transparent',\n        boxShadow: 'none',\n\n        [`${componentCls}-handler-down`]: {\n          borderBlockStartWidth: 0,\n        },\n      },\n    },\n  ];\n};\n\nconst genAffixWrapperStyles: GenerateStyle<InputNumberToken> = (token: InputNumberToken) => {\n  const {\n    componentCls,\n    inputPaddingHorizontal,\n    inputAffixPadding,\n    controlWidth,\n    borderRadiusLG,\n    borderRadiusSM,\n  } = token;\n\n  return {\n    [`${componentCls}-affix-wrapper`]: {\n      ...genBasicInputStyle(token),\n      ...genStatusStyle(token, `${componentCls}-affix-wrapper`),\n      // or number handler will cover form status\n      position: 'relative',\n      display: 'inline-flex',\n      width: controlWidth,\n      padding: 0,\n      paddingInlineStart: inputPaddingHorizontal,\n\n      '&-lg': {\n        borderRadius: borderRadiusLG,\n      },\n\n      '&-sm': {\n        borderRadius: borderRadiusSM,\n      },\n\n      [`&:not(${componentCls}-affix-wrapper-disabled):hover`]: {\n        ...genHoverStyle(token),\n        zIndex: 1,\n      },\n\n      '&-focused, &:focus': {\n        zIndex: 1,\n      },\n\n      '&-disabled': {\n        [`${componentCls}[disabled]`]: {\n          background: 'transparent',\n        },\n      },\n\n      [`> div${componentCls}`]: {\n        width: '100%',\n        border: 'none',\n        outline: 'none',\n\n        [`&${componentCls}-focused`]: {\n          boxShadow: 'none !important',\n        },\n      },\n\n      [`input${componentCls}-input`]: {\n        padding: 0,\n      },\n\n      '&::before': {\n        width: 0,\n        visibility: 'hidden',\n        content: '\"\\\\a0\"',\n      },\n\n      [`${componentCls}-handler-wrap`]: {\n        zIndex: 2,\n      },\n\n      [componentCls]: {\n        '&-prefix, &-suffix': {\n          display: 'flex',\n          flex: 'none',\n          alignItems: 'center',\n          pointerEvents: 'none',\n        },\n\n        '&-prefix': {\n          marginInlineEnd: inputAffixPadding,\n        },\n\n        '&-suffix': {\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineEnd: 0,\n          zIndex: 1,\n          height: '100%',\n          marginInlineEnd: inputPaddingHorizontal,\n          marginInlineStart: inputAffixPadding,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'InputNumber',\n  token => {\n    const inputNumberToken = initInputToken<FullToken<'InputNumber'>>(token);\n    return [\n      genInputNumberStyles(inputNumberToken),\n      genAffixWrapperStyles(inputNumberToken),\n      // =====================================================\n      // ==             Space Compact                       ==\n      // =====================================================\n      genCompactItemStyle(inputNumberToken),\n    ];\n  },\n  token => ({\n    controlWidth: 90,\n    handleWidth: token.controlHeightSM - token.lineWidth * 2,\n    handleFontSize: token.fontSize / 2,\n    handleVisible: 'auto',\n  }),\n);\n"
  },
  {
    "path": "components/layout/Sider.tsx",
    "content": "import classNames from '../_util/classNames';\nimport type { PropType, ExtractPropTypes, CSSProperties } from 'vue';\nimport {\n  inject,\n  defineComponent,\n  shallowRef,\n  watch,\n  onMounted,\n  onBeforeUnmount,\n  provide,\n} from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { tuple } from '../_util/type';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport isNumeric from '../_util/isNumeric';\nimport BarsOutlined from '@ant-design/icons-vue/BarsOutlined';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport LeftOutlined from '@ant-design/icons-vue/LeftOutlined';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { SiderCollapsedKey, SiderHookProviderKey } from './injectionKey';\n\nconst dimensionMaxMap = {\n  xs: '479.98px',\n  sm: '575.98px',\n  md: '767.98px',\n  lg: '991.98px',\n  xl: '1199.98px',\n  xxl: '1599.98px',\n  xxxl: '1999.98px',\n};\n\nexport type CollapseType = 'clickTrigger' | 'responsive';\n\nexport const siderProps = () => ({\n  prefixCls: String,\n  collapsible: { type: Boolean, default: undefined },\n  collapsed: { type: Boolean, default: undefined },\n  defaultCollapsed: { type: Boolean, default: undefined },\n  reverseArrow: { type: Boolean, default: undefined },\n  zeroWidthTriggerStyle: {\n    type: Object as PropType<CSSProperties>,\n    default: undefined as CSSProperties,\n  },\n  trigger: PropTypes.any,\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  collapsedWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  breakpoint: PropTypes.oneOf(tuple('xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl')),\n  theme: PropTypes.oneOf(tuple('light', 'dark')).def('dark'),\n  onBreakpoint: Function as PropType<(broken: boolean) => void>,\n  onCollapse: Function as PropType<(collapsed: boolean, type: CollapseType) => void>,\n});\n\nexport type SiderProps = Partial<ExtractPropTypes<ReturnType<typeof siderProps>>>;\n\nexport interface SiderContextProps {\n  sCollapsed?: boolean;\n  collapsedWidth?: string | number;\n}\n\nconst generateId = (() => {\n  let i = 0;\n  return (prefix = '') => {\n    i += 1;\n    return `${prefix}${i}`;\n  };\n})();\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ALayoutSider',\n  inheritAttrs: false,\n  props: initDefaultProps(siderProps(), {\n    collapsible: false,\n    defaultCollapsed: false,\n    reverseArrow: false,\n    width: 200,\n    collapsedWidth: 80,\n  }),\n  emits: ['breakpoint', 'update:collapsed', 'collapse'],\n  setup(props, { emit, attrs, slots }) {\n    const { prefixCls } = useConfigInject('layout-sider', props);\n    const siderHook = inject(SiderHookProviderKey, undefined);\n    const collapsed = shallowRef(\n      !!(props.collapsed !== undefined ? props.collapsed : props.defaultCollapsed),\n    );\n    const below = shallowRef(false);\n\n    watch(\n      () => props.collapsed,\n      () => {\n        collapsed.value = !!props.collapsed;\n      },\n    );\n\n    provide(SiderCollapsedKey, collapsed);\n\n    const handleSetCollapsed = (value: boolean, type: CollapseType) => {\n      if (props.collapsed === undefined) {\n        collapsed.value = value;\n      }\n      emit('update:collapsed', value);\n      emit('collapse', value, type);\n    };\n\n    // ========================= Responsive =========================\n    const responsiveHandlerRef = shallowRef<(mql: MediaQueryListEvent | MediaQueryList) => void>(\n      (mql: MediaQueryListEvent | MediaQueryList) => {\n        below.value = mql.matches;\n        emit('breakpoint', mql.matches);\n\n        if (collapsed.value !== mql.matches) {\n          handleSetCollapsed(mql.matches, 'responsive');\n        }\n      },\n    );\n    let mql: MediaQueryList;\n    function responsiveHandler(mql: MediaQueryListEvent | MediaQueryList) {\n      return responsiveHandlerRef.value!(mql);\n    }\n    const uniqueId = generateId('ant-sider-');\n    siderHook && siderHook.addSider(uniqueId);\n\n    onMounted(() => {\n      watch(\n        () => props.breakpoint,\n        () => {\n          try {\n            mql?.removeEventListener('change', responsiveHandler);\n          } catch (error) {\n            mql?.removeListener(responsiveHandler);\n          }\n          if (typeof window !== 'undefined') {\n            const { matchMedia } = window;\n            if (matchMedia! && props.breakpoint && props.breakpoint in dimensionMaxMap) {\n              mql = matchMedia(`(max-width: ${dimensionMaxMap[props.breakpoint]})`);\n              try {\n                mql.addEventListener('change', responsiveHandler);\n              } catch (error) {\n                mql.addListener(responsiveHandler);\n              }\n              responsiveHandler(mql);\n            }\n          }\n        },\n        {\n          immediate: true,\n        },\n      );\n    });\n    onBeforeUnmount(() => {\n      try {\n        mql?.removeEventListener('change', responsiveHandler);\n      } catch (error) {\n        mql?.removeListener(responsiveHandler);\n      }\n      siderHook && siderHook.removeSider(uniqueId);\n    });\n\n    const toggle = () => {\n      handleSetCollapsed(!collapsed.value, 'clickTrigger');\n    };\n\n    return () => {\n      const pre = prefixCls.value;\n      const {\n        collapsedWidth,\n        width,\n        reverseArrow,\n        zeroWidthTriggerStyle,\n        trigger = slots.trigger?.(),\n        collapsible,\n        theme,\n      } = props;\n      const rawWidth = collapsed.value ? collapsedWidth : width;\n      // use \"px\" as fallback unit for width\n      const siderWidth = isNumeric(rawWidth) ? `${rawWidth}px` : String(rawWidth);\n      // special trigger when collapsedWidth == 0\n      const zeroWidthTrigger =\n        parseFloat(String(collapsedWidth || 0)) === 0 ? (\n          <span\n            onClick={toggle}\n            class={classNames(\n              `${pre}-zero-width-trigger`,\n              `${pre}-zero-width-trigger-${reverseArrow ? 'right' : 'left'}`,\n            )}\n            style={zeroWidthTriggerStyle}\n          >\n            {trigger || <BarsOutlined />}\n          </span>\n        ) : null;\n      const iconObj = {\n        expanded: reverseArrow ? <RightOutlined /> : <LeftOutlined />,\n        collapsed: reverseArrow ? <LeftOutlined /> : <RightOutlined />,\n      };\n      const status = collapsed.value ? 'collapsed' : 'expanded';\n      const defaultTrigger = iconObj[status];\n      const triggerDom =\n        trigger !== null\n          ? zeroWidthTrigger || (\n              <div class={`${pre}-trigger`} onClick={toggle} style={{ width: siderWidth }}>\n                {trigger || defaultTrigger}\n              </div>\n            )\n          : null;\n      const divStyle = [\n        attrs.style as CSSProperties,\n        {\n          flex: `0 0 ${siderWidth}`,\n          maxWidth: siderWidth, // Fix width transition bug in IE11\n          minWidth: siderWidth, // https://github.com/ant-design/ant-design/issues/6349\n          width: siderWidth,\n        },\n      ];\n      const siderCls = classNames(\n        pre,\n        `${pre}-${theme}`,\n        {\n          [`${pre}-collapsed`]: !!collapsed.value,\n          [`${pre}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,\n          [`${pre}-below`]: !!below.value,\n          [`${pre}-zero-width`]: parseFloat(siderWidth) === 0,\n        },\n        attrs.class,\n      );\n      return (\n        <aside {...attrs} class={siderCls} style={divStyle}>\n          <div class={`${pre}-children`}>{slots.default?.()}</div>\n          {collapsible || (below.value && zeroWidthTrigger) ? triggerDom : null}\n        </aside>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/layout/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/layout/demo/basic.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 0px;\">\n    <section class=\"ant-layout\">\n      <header class=\"ant-layout-header\" style=\"text-align: center; color: rgb(255, 255, 255); padding-inline: 50; line-height: 64px; background-color: rgb(125, 188, 234);\">Header</header>\n      <main class=\"ant-layout-content\" style=\"text-align: center; min-height: 120; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(16, 142, 233);\">Content</main>\n      <footer class=\"ant-layout-footer\" style=\"text-align: center; color: rgb(255, 255, 255); background-color: rgb(125, 188, 234);\">Footer</footer>\n    </section>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 0px;\">\n    <section class=\"ant-layout\">\n      <header class=\"ant-layout-header\" style=\"text-align: center; color: rgb(255, 255, 255); padding-inline: 50; line-height: 64px; background-color: rgb(125, 188, 234);\">Header</header>\n      <section class=\"ant-layout\">\n        <aside style=\"text-align: center; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(59, 160, 233); flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n          <div class=\"ant-layout-sider-children\">Sider</div>\n          <!---->\n        </aside>\n        <main class=\"ant-layout-content\" style=\"text-align: center; min-height: 120; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(16, 142, 233);\">Content</main>\n      </section>\n      <footer class=\"ant-layout-footer\" style=\"text-align: center; color: rgb(255, 255, 255); background-color: rgb(125, 188, 234);\">Footer</footer>\n    </section>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 0px;\">\n    <section class=\"ant-layout\">\n      <header class=\"ant-layout-header\" style=\"text-align: center; color: rgb(255, 255, 255); padding-inline: 50; line-height: 64px; background-color: rgb(125, 188, 234);\">Header</header>\n      <section class=\"ant-layout\">\n        <main class=\"ant-layout-content\" style=\"text-align: center; min-height: 120; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(16, 142, 233);\">Content</main>\n        <aside style=\"text-align: center; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(59, 160, 233); flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n          <div class=\"ant-layout-sider-children\">Sider</div>\n          <!---->\n        </aside>\n      </section>\n      <footer class=\"ant-layout-footer\" style=\"text-align: center; color: rgb(255, 255, 255); background-color: rgb(125, 188, 234);\">Footer</footer>\n    </section>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <section class=\"ant-layout\">\n      <aside style=\"text-align: center; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(59, 160, 233); flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n        <div class=\"ant-layout-sider-children\">Sider</div>\n        <!---->\n      </aside>\n      <section class=\"ant-layout\">\n        <header class=\"ant-layout-header\" style=\"text-align: center; color: rgb(255, 255, 255); padding-inline: 50; line-height: 64px; background-color: rgb(125, 188, 234);\">Header</header>\n        <main class=\"ant-layout-content\" style=\"text-align: center; min-height: 120; line-height: 120px; color: rgb(255, 255, 255); background-color: rgb(16, 142, 233);\">Content</main>\n        <footer class=\"ant-layout-footer\" style=\"text-align: center; color: rgb(255, 255, 255); background-color: rgb(125, 188, 234);\">Footer</footer>\n      </section>\n    </section>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/layout/demo/custom-trigger.vue correctly 1`] = `\n<section class=\"ant-layout\">\n  <aside class=\"ant-layout-sider ant-layout-sider-dark\" style=\"flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\">\n    <div class=\"ant-layout-sider-children\">\n      <div class=\"logo\"></div>\n      <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" role=\"menu\" data-menu-list=\"true\">\n        <!---->\n        <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span>nav 1</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"video-camera\" class=\"anticon anticon-video-camera\"><svg focusable=\"false\" class=\"\" data-icon=\"video-camera\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path></svg></span><span>nav 2</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>nav 3</span></span>\n        </li>\n        <!---->\n        <!---->\n        <!--teleport start-->\n        <!--teleport end-->\n      </ul>\n    </div>\n    <!---->\n  </aside>\n  <section class=\"ant-layout\">\n    <header class=\"ant-layout-header\" style=\"background: rgb(255, 255, 255); padding: 0px;\"><span role=\"img\" aria-label=\"menu-fold\" tabindex=\"-1\" class=\"anticon anticon-menu-fold trigger\"><svg focusable=\"false\" class=\"\" data-icon=\"menu-fold\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 000 13.8z\"></path></svg></span></header>\n    <main class=\"ant-layout-content\" style=\"margin: 24px 16px; padding: 24px; background: rgb(255, 255, 255); min-height: 280px;\"> Content </main>\n  </section>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/fixed.vue correctly 1`] = `\n<section class=\"ant-layout\">\n  <header class=\"ant-layout-header\" style=\"position: fixed; z-index: 1; width: 100%;\">\n    <div class=\"logo\"></div>\n    <ul class=\"ant-menu-overflow ant-menu ant-menu-root ant-menu-horizontal ant-menu-dark\" style=\"line-height: 64px;\" role=\"menu\" data-menu-list=\"true\">\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 0;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 1</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" style=\"opacity: 1; order: 1;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 2</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 2;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 3</span>\n      </li>\n      <li class=\"ant-menu-overflow-item ant-menu-overflow-item ant-menu-overflow-item-rest ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\" data-submenu-id=\"$$__vc-menu-more__key\" role=\"none\">\n        <!---->\n        <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"$$__vc-menu-more__key\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"$$__vc-menu-more__key-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n        <!---->\n      </li>\n      <!---->\n      <!---->\n      <!--teleport start-->\n      <!--teleport end-->\n    </ul>\n  </header>\n  <main class=\"ant-layout-content\" style=\"padding: 0px 50px; margin-top: 64px;\">\n    <nav style=\"margin: 16px 0px;\" class=\"ant-breadcrumb\">\n      <ol>\n        <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">List</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">App</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n      </ol>\n    </nav>\n    <div style=\"background: rgb(255, 255, 255); padding: 24px; min-height: 380px;\">Content</div>\n  </main>\n  <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/fixed-sider.vue correctly 1`] = `\n<section class=\"ant-layout ant-layout-has-sider\">\n  <aside style=\"overflow: auto; height: 100vh; position: fixed; left: 0px; top: 0px; bottom: 0px; flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n    <div class=\"ant-layout-sider-children\">\n      <div class=\"logo\"></div>\n      <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" role=\"menu\" data-menu-list=\"true\">\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span class=\"nav-text\">nav 1</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"video-camera\" class=\"anticon anticon-video-camera\"><svg focusable=\"false\" class=\"\" data-icon=\"video-camera\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path></svg></span><span class=\"nav-text\">nav 2</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span class=\"nav-text\">nav 3</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"4\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"bar-chart\" class=\"anticon anticon-bar-chart\"><svg focusable=\"false\" class=\"\" data-icon=\"bar-chart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z\"></path></svg></span><span class=\"nav-text\">nav 4</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"5\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"cloud\" class=\"anticon anticon-cloud\"><svg focusable=\"false\" class=\"\" data-icon=\"cloud\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 01-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 01140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0166.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0152.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z\"></path></svg></span><span class=\"nav-text\">nav 5</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"6\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"nav-text\">nav 6</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"7\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"team\" class=\"anticon anticon-team\"><svg focusable=\"false\" class=\"\" data-icon=\"team\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M824.2 699.9a301.55 301.55 0 00-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 00-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 008 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 01612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 008-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 01-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 01612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 01-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 008 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z\"></path></svg></span><span class=\"nav-text\">nav 7</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"8\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"shop\" class=\"anticon anticon-shop\"><svg focusable=\"false\" class=\"\" data-icon=\"shop\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0014.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0015.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0038.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0038.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 01512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 01-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z\"></path></svg></span><span class=\"nav-text\">nav 8</span></span>\n        </li>\n        <!---->\n        <!---->\n        <!--teleport start-->\n        <!--teleport end-->\n      </ul>\n    </div>\n    <!---->\n  </aside>\n  <section style=\"margin-left: 200px;\" class=\"ant-layout\">\n    <header class=\"ant-layout-header\" style=\"background: rgb(255, 255, 255); padding: 0px;\"></header>\n    <main class=\"ant-layout-content\" style=\"margin: 24px 16px 0px; overflow: initial;\">\n      <div style=\"padding: 24px; background: rgb(255, 255, 255); text-align: center;\"> ... <br> Really <br> ... <br> ... <br> ... <br> long <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> ... <br> content </div>\n    </main>\n    <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n  </section>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/responsive.vue correctly 1`] = `\n<section class=\"ant-layout\">\n  <aside class=\"ant-layout-sider ant-layout-sider-dark\" style=\"flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\">\n    <div class=\"ant-layout-sider-children\">\n      <div class=\"logo\"></div>\n      <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" role=\"menu\" data-menu-list=\"true\">\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span class=\"nav-text\">nav 1</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"video-camera\" class=\"anticon anticon-video-camera\"><svg focusable=\"false\" class=\"\" data-icon=\"video-camera\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path></svg></span><span class=\"nav-text\">nav 2</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span class=\"nav-text\">nav 3</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"4\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span class=\"nav-text\">nav 4</span></span>\n        </li>\n        <!---->\n        <!---->\n        <!--teleport start-->\n        <!--teleport end-->\n      </ul>\n    </div>\n    <!---->\n  </aside>\n  <section class=\"ant-layout\">\n    <header class=\"ant-layout-header\" style=\"background: rgb(255, 255, 255); padding: 0px;\"></header>\n    <main class=\"ant-layout-content\" style=\"margin: 24px 16px 0px;\">\n      <div style=\"padding: 24px; background: rgb(255, 255, 255); min-height: 360px;\">content</div>\n    </main>\n    <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n  </section>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/side.vue correctly 1`] = `\n<section style=\"min-height: 100vh;\" class=\"ant-layout\">\n  <aside class=\"ant-layout-sider ant-layout-sider-dark ant-layout-sider-has-trigger\" style=\"flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\">\n    <div class=\"ant-layout-sider-children\">\n      <div class=\"logo\"></div>\n      <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" role=\"menu\" data-menu-list=\"true\">\n        <!---->\n        <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"pie-chart\" class=\"anticon anticon-pie-chart\"><svg focusable=\"false\" class=\"\" data-icon=\"pie-chart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 00-282.8 117.1 398.19 398.19 0 00-85.7 127.1A397.61 397.61 0 0072 552a398.46 398.46 0 00117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 00472 952a398.46 398.46 0 00282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 00872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 01470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 00589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 01166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z\"></path></svg></span><span>Option 1</span></span>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"desktop\" class=\"anticon anticon-desktop\"><svg focusable=\"false\" class=\"\" data-icon=\"desktop\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z\"></path></svg></span><span>Option 2</span></span>\n        </li>\n        <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub1\" role=\"none\">\n          <!---->\n          <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_1_$$_sub1-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span><span>User</span></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_1_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Tom</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Bill</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Alex</span>\n            </li>\n          </ul>\n        </li>\n        <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n          <!---->\n          <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_2_$$_sub2-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"team\" class=\"anticon anticon-team\"><svg focusable=\"false\" class=\"\" data-icon=\"team\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M824.2 699.9a301.55 301.55 0 00-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 00-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 008 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 01612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 008-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 01-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 01612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 01-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 008 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z\"></path></svg></span><span>Team</span></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_2_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Team 1</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Team 2</span>\n            </li>\n          </ul>\n        </li>\n        <!---->\n        <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"9\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n          <!----><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span><span>File</span></span>\n        </li>\n        <!---->\n        <!---->\n        <!--teleport start-->\n        <!--teleport end-->\n      </ul>\n    </div>\n    <div class=\"ant-layout-sider-trigger\" style=\"width: 200px;\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></div>\n  </aside>\n  <section class=\"ant-layout\">\n    <header class=\"ant-layout-header\" style=\"background: rgb(255, 255, 255); padding: 0px;\"></header>\n    <main class=\"ant-layout-content\" style=\"margin: 0px 16px;\">\n      <nav style=\"margin: 16px 0px;\" class=\"ant-breadcrumb\">\n        <ol>\n          <li><span class=\"ant-breadcrumb-link\">User</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n          <li><span class=\"ant-breadcrumb-link\">Bill</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        </ol>\n      </nav>\n      <div style=\"padding: 24px; background: rgb(255, 255, 255); min-height: 360px;\"> Bill is a cat. </div>\n    </main>\n    <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n  </section>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/top.vue correctly 1`] = `\n<section class=\"ant-layout layout\">\n  <header class=\"ant-layout-header\">\n    <div class=\"logo\"></div>\n    <ul class=\"ant-menu-overflow ant-menu ant-menu-root ant-menu-horizontal ant-menu-dark\" style=\"line-height: 64px;\" role=\"menu\" data-menu-list=\"true\">\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 0;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 1</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" style=\"opacity: 1; order: 1;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 2</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 2;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 3</span>\n      </li>\n      <li class=\"ant-menu-overflow-item ant-menu-overflow-item ant-menu-overflow-item-rest ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\" data-submenu-id=\"$$__vc-menu-more__key\" role=\"none\">\n        <!---->\n        <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"$$__vc-menu-more__key\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"$$__vc-menu-more__key-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n        <!---->\n      </li>\n      <!---->\n      <!---->\n      <!--teleport start-->\n      <!--teleport end-->\n    </ul>\n  </header>\n  <main class=\"ant-layout-content\" style=\"padding: 0px 50px;\">\n    <nav style=\"margin: 16px 0px;\" class=\"ant-breadcrumb\">\n      <ol>\n        <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">List</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">App</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n      </ol>\n    </nav>\n    <div style=\"background: rgb(255, 255, 255); padding: 24px; min-height: 280px;\">Content</div>\n  </main>\n  <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/top-side.vue correctly 1`] = `\n<section class=\"ant-layout\">\n  <header class=\"ant-layout-header header\">\n    <div class=\"logo\"></div>\n    <ul class=\"ant-menu-overflow ant-menu ant-menu-root ant-menu-horizontal ant-menu-dark\" style=\"line-height: 64px;\" role=\"menu\" data-menu-list=\"true\">\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 0;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 1</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" style=\"opacity: 1; order: 1;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 2</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 2;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 3</span>\n      </li>\n      <li class=\"ant-menu-overflow-item ant-menu-overflow-item ant-menu-overflow-item-rest ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\" data-submenu-id=\"$$__vc-menu-more__key\" role=\"none\">\n        <!---->\n        <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"$$__vc-menu-more__key\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"$$__vc-menu-more__key-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n        <!---->\n      </li>\n      <!---->\n      <!---->\n      <!--teleport start-->\n      <!--teleport end-->\n    </ul>\n  </header>\n  <main class=\"ant-layout-content\" style=\"padding: 0px 50px;\">\n    <nav style=\"margin: 16px 0px;\" class=\"ant-breadcrumb\">\n      <ol>\n        <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">List</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        <li><span class=\"ant-breadcrumb-link\">App</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n      </ol>\n    </nav>\n    <section style=\"padding: 24px 0px; background: rgb(255, 255, 255);\" class=\"ant-layout\">\n      <aside style=\"background: rgb(255, 255, 255); flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n        <div class=\"ant-layout-sider-children\">\n          <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-light\" style=\"height: 100%;\" role=\"menu\" data-menu-list=\"true\">\n            <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n              <!---->\n              <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_11_$$_sub1-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span> subnav 1 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n              <ul id=\"sub_menu_11_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" data-menu-id=\"1\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option1</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"2\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option2</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option3</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option4</span>\n                </li>\n              </ul>\n            </li>\n            <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n              <!---->\n              <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_12_$$_sub2-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"laptop\" class=\"anticon anticon-laptop\"><svg focusable=\"false\" class=\"\" data-icon=\"laptop\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z\"></path></svg></span> subnav 2 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n              <ul id=\"sub_menu_12_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option5</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option6</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option7</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option8</span>\n                </li>\n              </ul>\n            </li>\n            <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub3\" role=\"none\">\n              <!---->\n              <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub3\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_13_$$_sub3-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"notification\" class=\"anticon anticon-notification\"><svg focusable=\"false\" class=\"\" data-icon=\"notification\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"></path></svg></span> subnav 3 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n              <ul id=\"sub_menu_13_$$_sub3-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option9</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option10</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"11\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option11</span>\n                </li>\n                <!---->\n                <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"12\" aria-disabled=\"false\">\n                  <!----><span class=\"ant-menu-title-content\">option12</span>\n                </li>\n              </ul>\n            </li>\n            <!---->\n            <!---->\n            <!--teleport start-->\n            <!--teleport end-->\n          </ul>\n        </div>\n        <!---->\n      </aside>\n      <main class=\"ant-layout-content\" style=\"padding: 0px 24px; min-height: 280px;\"> Content </main>\n    </section>\n  </main>\n  <footer class=\"ant-layout-footer\" style=\"text-align: center;\"> Ant Design ©2018 Created by Ant UED </footer>\n</section>\n`;\n\nexports[`renders ./components/layout/demo/top-side-2.vue correctly 1`] = `\n<section class=\"ant-layout\">\n  <header class=\"ant-layout-header header\">\n    <div class=\"logo\"></div>\n    <ul class=\"ant-menu-overflow ant-menu ant-menu-root ant-menu-horizontal ant-menu-dark\" style=\"line-height: 64px;\" role=\"menu\" data-menu-list=\"true\">\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 0;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 1</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" style=\"opacity: 1; order: 1;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 2</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 2;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">nav 3</span>\n      </li>\n      <li class=\"ant-menu-overflow-item ant-menu-overflow-item ant-menu-overflow-item-rest ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\" data-submenu-id=\"$$__vc-menu-more__key\" role=\"none\">\n        <!---->\n        <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"$$__vc-menu-more__key\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"$$__vc-menu-more__key-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n        <!---->\n      </li>\n      <!---->\n      <!---->\n      <!--teleport start-->\n      <!--teleport end-->\n    </ul>\n  </header>\n  <section class=\"ant-layout\">\n    <aside style=\"background: rgb(255, 255, 255); flex: 0 0 200px; max-width: 200px; min-width: 200px; width: 200px;\" class=\"ant-layout-sider ant-layout-sider-dark\">\n      <div class=\"ant-layout-sider-children\">\n        <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-light\" style=\"height: 100%; border-right: 0;\" role=\"menu\" data-menu-list=\"true\">\n          <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n            <!---->\n            <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_5_$$_sub1-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span> subnav 1 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n            <ul id=\"sub_menu_5_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" data-menu-id=\"1\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option1</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"2\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option2</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option3</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option4</span>\n              </li>\n            </ul>\n          </li>\n          <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n            <!---->\n            <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_6_$$_sub2-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"laptop\" class=\"anticon anticon-laptop\"><svg focusable=\"false\" class=\"\" data-icon=\"laptop\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z\"></path></svg></span> subnav 2 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n            <ul id=\"sub_menu_6_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option5</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option6</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option7</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option8</span>\n              </li>\n            </ul>\n          </li>\n          <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub3\" role=\"none\">\n            <!---->\n            <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub3\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_7_$$_sub3-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span><span role=\"img\" aria-label=\"notification\" class=\"anticon anticon-notification\"><svg focusable=\"false\" class=\"\" data-icon=\"notification\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"></path></svg></span> subnav 3 </span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n            <ul id=\"sub_menu_7_$$_sub3-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option9</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option10</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"11\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option11</span>\n              </li>\n              <!---->\n              <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"12\" aria-disabled=\"false\">\n                <!----><span class=\"ant-menu-title-content\">option12</span>\n              </li>\n            </ul>\n          </li>\n          <!---->\n          <!---->\n          <!--teleport start-->\n          <!--teleport end-->\n        </ul>\n      </div>\n      <!---->\n    </aside>\n    <section style=\"padding: 0px 24px 24px;\" class=\"ant-layout\">\n      <nav style=\"margin: 16px 0px;\" class=\"ant-breadcrumb\">\n        <ol>\n          <li><span class=\"ant-breadcrumb-link\">Home</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n          <li><span class=\"ant-breadcrumb-link\">List</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n          <li><span class=\"ant-breadcrumb-link\">App</span><span class=\"ant-breadcrumb-separator\">/</span></li>\n        </ol>\n      </nav>\n      <main class=\"ant-layout-content\" style=\"background: rgb(255, 255, 255); padding: 24px; margin: 0px; min-height: 280px;\"> Content </main>\n    </section>\n  </section>\n</section>\n`;\n"
  },
  {
    "path": "components/layout/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('layout');\n"
  },
  {
    "path": "components/layout/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Layout from '..';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { sleep } from '../../../tests/utils';\n\nconst { Sider, Content } = Layout;\n\ndescribe('Layout', () => {\n  mountTest(Layout);\n  mountTest(Content);\n  mountTest(Sider);\n  it('detect the sider as children', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Layout>\n              <Sider>Sider</Sider>\n              <Content>Content</Content>\n            </Layout>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    expect(wrapper.find('.ant-layout').classes()).toContain('ant-layout-has-sider');\n  });\n\n  it('detect the sider inside the children', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Layout>\n              <div>\n                <Sider>Sider</Sider>\n              </div>\n              <Content>Content</Content>\n            </Layout>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    expect(wrapper.find('.ant-layout').classes()).toContain('ant-layout-has-sider');\n  });\n\n  it('detect ant-layout-sider-has-trigger class in sider when ant-layout-sider-trigger div tag exists', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Layout>\n              <div>\n                <Sider collapsible>Sider</Sider>\n              </div>\n              <Content>Content</Content>\n            </Layout>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    expect(wrapper.find('.ant-layout-sider').classes()).toContain('ant-layout-sider-has-trigger');\n  });\n});\n"
  },
  {
    "path": "components/layout/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本结构\n  en-US: Basic Structure\n---\n\n## zh-CN\n\n典型的页面布局。\n\n## en-US\n\nClassic page layouts.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\" :style=\"{ width: '100%' }\" :size=\"[0, 48]\">\n    <a-layout>\n      <a-layout-header :style=\"headerStyle\">Header</a-layout-header>\n      <a-layout-content :style=\"contentStyle\">Content</a-layout-content>\n      <a-layout-footer :style=\"footerStyle\">Footer</a-layout-footer>\n    </a-layout>\n\n    <a-layout>\n      <a-layout-header :style=\"headerStyle\">Header</a-layout-header>\n      <a-layout>\n        <a-layout-sider :style=\"siderStyle\">Sider</a-layout-sider>\n        <a-layout-content :style=\"contentStyle\">Content</a-layout-content>\n      </a-layout>\n      <a-layout-footer :style=\"footerStyle\">Footer</a-layout-footer>\n    </a-layout>\n\n    <a-layout>\n      <a-layout-header :style=\"headerStyle\">Header</a-layout-header>\n      <a-layout>\n        <a-layout-content :style=\"contentStyle\">Content</a-layout-content>\n        <a-layout-sider :style=\"siderStyle\">Sider</a-layout-sider>\n      </a-layout>\n      <a-layout-footer :style=\"footerStyle\">Footer</a-layout-footer>\n    </a-layout>\n\n    <a-layout>\n      <a-layout-sider :style=\"siderStyle\">Sider</a-layout-sider>\n      <a-layout>\n        <a-layout-header :style=\"headerStyle\">Header</a-layout-header>\n        <a-layout-content :style=\"contentStyle\">Content</a-layout-content>\n        <a-layout-footer :style=\"footerStyle\">Footer</a-layout-footer>\n      </a-layout>\n    </a-layout>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport type { CSSProperties } from 'vue';\nconst headerStyle: CSSProperties = {\n  textAlign: 'center',\n  color: '#fff',\n  height: 64,\n  paddingInline: 50,\n  lineHeight: '64px',\n  backgroundColor: '#7dbcea',\n};\n\nconst contentStyle: CSSProperties = {\n  textAlign: 'center',\n  minHeight: 120,\n  lineHeight: '120px',\n  color: '#fff',\n  backgroundColor: '#108ee9',\n};\n\nconst siderStyle: CSSProperties = {\n  textAlign: 'center',\n  lineHeight: '120px',\n  color: '#fff',\n  backgroundColor: '#3ba0e9',\n};\n\nconst footerStyle: CSSProperties = {\n  textAlign: 'center',\n  color: '#fff',\n  backgroundColor: '#7dbcea',\n};\n</script>\n"
  },
  {
    "path": "components/layout/demo/custom-trigger.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义触发器\n  en-US: Custom trigger\n---\n\n## zh-CN\n\n要使用自定义触发器，可以设置 `:trigger=\"null\"` 来隐藏默认设定。\n\n## en-US\n\nIf you want to use a customized trigger, you can hide the default one by setting `:trigger=\"null\"`.\n\n</docs>\n<template>\n  <a-layout>\n    <a-layout-sider v-model:collapsed=\"collapsed\" :trigger=\"null\" collapsible>\n      <div class=\"logo\" />\n      <a-menu v-model:selectedKeys=\"selectedKeys\" theme=\"dark\" mode=\"inline\">\n        <a-menu-item key=\"1\">\n          <user-outlined />\n          <span>nav 1</span>\n        </a-menu-item>\n        <a-menu-item key=\"2\">\n          <video-camera-outlined />\n          <span>nav 2</span>\n        </a-menu-item>\n        <a-menu-item key=\"3\">\n          <upload-outlined />\n          <span>nav 3</span>\n        </a-menu-item>\n      </a-menu>\n    </a-layout-sider>\n    <a-layout>\n      <a-layout-header style=\"background: #fff; padding: 0\">\n        <menu-unfold-outlined\n          v-if=\"collapsed\"\n          class=\"trigger\"\n          @click=\"() => (collapsed = !collapsed)\"\n        />\n        <menu-fold-outlined v-else class=\"trigger\" @click=\"() => (collapsed = !collapsed)\" />\n      </a-layout-header>\n      <a-layout-content\n        :style=\"{ margin: '24px 16px', padding: '24px', background: '#fff', minHeight: '280px' }\"\n      >\n        Content\n      </a-layout-content>\n    </a-layout>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport {\n  UserOutlined,\n  VideoCameraOutlined,\n  UploadOutlined,\n  MenuUnfoldOutlined,\n  MenuFoldOutlined,\n} from '@ant-design/icons-vue';\nconst selectedKeys = ref<string[]>(['1']);\nconst collapsed = ref<boolean>(false);\n</script>\n<style>\n#components-layout-demo-custom-trigger .trigger {\n  font-size: 18px;\n  line-height: 64px;\n  padding: 0 24px;\n  cursor: pointer;\n  transition: color 0.3s;\n}\n\n#components-layout-demo-custom-trigger .trigger:hover {\n  color: #1890ff;\n}\n\n#components-layout-demo-custom-trigger .logo {\n  height: 32px;\n  background: rgba(255, 255, 255, 0.3);\n  margin: 16px;\n}\n\n.site-layout .site-layout-background {\n  background: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/fixed-sider.vue",
    "content": "<docs>\n---\norder: 7\niframe: 360\ntitle:\n  zh-CN: 固定侧边栏\n  en-US: Fixed Sider\n---\n\n## zh-CN\n\n当内容较长时，使用固定侧边栏可以提供更好的体验。\n\n## en-US\n\nWhen dealing with long content, a fixed sider can provide a better user experience.\n\n</docs>\n<template>\n  <a-layout has-sider>\n    <a-layout-sider\n      :style=\"{ overflow: 'auto', height: '100vh', position: 'fixed', left: 0, top: 0, bottom: 0 }\"\n    >\n      <div class=\"logo\" />\n      <a-menu v-model:selectedKeys=\"selectedKeys\" theme=\"dark\" mode=\"inline\">\n        <a-menu-item key=\"1\">\n          <user-outlined />\n          <span class=\"nav-text\">nav 1</span>\n        </a-menu-item>\n        <a-menu-item key=\"2\">\n          <video-camera-outlined />\n          <span class=\"nav-text\">nav 2</span>\n        </a-menu-item>\n        <a-menu-item key=\"3\">\n          <upload-outlined />\n          <span class=\"nav-text\">nav 3</span>\n        </a-menu-item>\n        <a-menu-item key=\"4\">\n          <bar-chart-outlined />\n          <span class=\"nav-text\">nav 4</span>\n        </a-menu-item>\n        <a-menu-item key=\"5\">\n          <cloud-outlined />\n          <span class=\"nav-text\">nav 5</span>\n        </a-menu-item>\n        <a-menu-item key=\"6\">\n          <appstore-outlined />\n          <span class=\"nav-text\">nav 6</span>\n        </a-menu-item>\n        <a-menu-item key=\"7\">\n          <team-outlined />\n          <span class=\"nav-text\">nav 7</span>\n        </a-menu-item>\n        <a-menu-item key=\"8\">\n          <shop-outlined />\n          <span class=\"nav-text\">nav 8</span>\n        </a-menu-item>\n      </a-menu>\n    </a-layout-sider>\n    <a-layout :style=\"{ marginLeft: '200px' }\">\n      <a-layout-header :style=\"{ background: '#fff', padding: 0 }\" />\n      <a-layout-content :style=\"{ margin: '24px 16px 0', overflow: 'initial' }\">\n        <div :style=\"{ padding: '24px', background: '#fff', textAlign: 'center' }\">\n          ...\n          <br />\n          Really\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          long\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          ...\n          <br />\n          content\n        </div>\n      </a-layout-content>\n      <a-layout-footer :style=\"{ textAlign: 'center' }\">\n        Ant Design ©2018 Created by Ant UED\n      </a-layout-footer>\n    </a-layout>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport {\n  UserOutlined,\n  VideoCameraOutlined,\n  UploadOutlined,\n  BarChartOutlined,\n  CloudOutlined,\n  AppstoreOutlined,\n  TeamOutlined,\n  ShopOutlined,\n} from '@ant-design/icons-vue';\nconst selectedKeys = ref<string[]>(['4']);\n</script>\n\n<style scoped>\n#components-layout-demo-fixed-sider .logo {\n  height: 32px;\n  background: rgba(255, 255, 255, 0.2);\n  margin: 16px;\n}\n.site-layout .site-layout-background {\n  background: #fff;\n}\n\n[data-theme='dark'] .site-layout .site-layout-background {\n  background: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/fixed.vue",
    "content": "<docs>\n---\norder: 8\niframe: 360\ntitle:\n  zh-CN: 固定头部\n  en-US: Fixed Header\n---\n\n## zh-CN\n\n一般用于固定顶部导航，方便页面切换。\n\n## en-US\n\nFixed Header is generally used to fix the top navigation to facilitate page switching.\n\n</docs>\n<template>\n  <a-layout>\n    <a-layout-header :style=\"{ position: 'fixed', zIndex: 1, width: '100%' }\">\n      <div class=\"logo\" />\n      <a-menu\n        v-model:selectedKeys=\"selectedKeys\"\n        theme=\"dark\"\n        mode=\"horizontal\"\n        :style=\"{ lineHeight: '64px' }\"\n      >\n        <a-menu-item key=\"1\">nav 1</a-menu-item>\n        <a-menu-item key=\"2\">nav 2</a-menu-item>\n        <a-menu-item key=\"3\">nav 3</a-menu-item>\n      </a-menu>\n    </a-layout-header>\n    <a-layout-content :style=\"{ padding: '0 50px', marginTop: '64px' }\">\n      <a-breadcrumb :style=\"{ margin: '16px 0' }\">\n        <a-breadcrumb-item>Home</a-breadcrumb-item>\n        <a-breadcrumb-item>List</a-breadcrumb-item>\n        <a-breadcrumb-item>App</a-breadcrumb-item>\n      </a-breadcrumb>\n      <div :style=\"{ background: '#fff', padding: '24px', minHeight: '380px' }\">Content</div>\n    </a-layout-content>\n    <a-layout-footer :style=\"{ textAlign: 'center' }\">\n      Ant Design ©2018 Created by Ant UED\n    </a-layout-footer>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst selectedKeys = ref<string[]>(['2']);\n</script>\n<style scoped>\n#components-layout-demo-fixed .logo {\n  width: 120px;\n  height: 31px;\n  background: rgba(255, 255, 255, 0.2);\n  margin: 16px 24px 16px 0;\n  float: left;\n}\n.site-layout .site-layout-background {\n  background: #fff;\n}\n\n[data-theme='dark'] .site-layout .site-layout-background {\n  background: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/index.vue",
    "content": "<template>\n  <template v-if=\"iframeName === 'fixed-sider'\">\n    <FixedSider />\n  </template>\n  <template v-else-if=\"iframeName === 'fixed-header'\">\n    <Fixed />\n  </template>\n  <template v-else-if=\"iframeName === 'sider'\">\n    <Side />\n  </template>\n  <demo-sort v-else :cols=\"1\">\n    <basic />\n    <top />\n    <top-side2 />\n    <top-side />\n    <Side />\n    <custom-trigger />\n    <responsive />\n    <FixedSider />\n    <Fixed />\n  </demo-sort>\n</template>\n\n<script>\nimport Basic from './basic.vue';\nimport CustomTrigger from './custom-trigger.vue';\nimport Responsive from './responsive.vue';\nimport TopSide2 from './top-side-2.vue';\nimport TopSide from './top-side.vue';\nimport Top from './top.vue';\nimport FixedSider from './fixed-sider.vue';\nimport Fixed from './fixed.vue';\nimport Side from './side.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent, provide } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    CustomTrigger,\n    Responsive,\n    TopSide2,\n    TopSide,\n    Top,\n    FixedSider,\n    Fixed,\n    Side,\n  },\n  props: {\n    iframeName: String,\n  },\n  setup(props) {\n    provide(\n      'iframeDemo',\n      !props.iframeName\n        ? {\n            'fixed-sider': '/iframe/layout/#fixed-sider',\n            'fixed-header': '/iframe/layout/#fixed-header',\n            sider: '/iframe/layout/#sider',\n          }\n        : {},\n    );\n  },\n  // props: {\n  //   iframeName: String,\n  // },\n  // created() {\n  //   provide(\n  //     'iframeDemo',\n  //     !this.iframeName\n  //       ? {\n  //           'fixed-sider': '/iframe/layout/#fixed-sider',\n  //           'fixed-header': '/iframe/layout/#fixed-header',\n  //           sider: '/iframe/layout/#sider',\n  //         }\n  //       : {},\n  //   );\n  // },\n});\n</script>\n"
  },
  {
    "path": "components/layout/demo/responsive.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 响应式布局\n  en-US: Responsive\n---\n\n## zh-CN\n\nLayout.Sider 支持响应式布局。\n> 说明：配置 `breakpoint` 属性即生效，视窗宽度小于 `breakpoint` 时 Sider 缩小为 `collapsedWidth` 宽度，若将 `collapsedWidth` 设置为零，会出现特殊 trigger。\n\n## en-US\n\nLayout.Sider supports responsive layout.\n> Note: You can get a responsive layout by setting `breakpoint`, the Sider will collapse to the width of `collapsedWidth` when window width is below the `breakpoint`. And a special trigger will appear if the `collapsedWidth` is set to `0`.\n\n</docs>\n<template>\n  <a-layout>\n    <a-layout-sider\n      breakpoint=\"lg\"\n      collapsed-width=\"0\"\n      @collapse=\"onCollapse\"\n      @breakpoint=\"onBreakpoint\"\n    >\n      <div class=\"logo\" />\n      <a-menu v-model:selectedKeys=\"selectedKeys\" theme=\"dark\" mode=\"inline\">\n        <a-menu-item key=\"1\">\n          <user-outlined />\n          <span class=\"nav-text\">nav 1</span>\n        </a-menu-item>\n        <a-menu-item key=\"2\">\n          <video-camera-outlined />\n          <span class=\"nav-text\">nav 2</span>\n        </a-menu-item>\n        <a-menu-item key=\"3\">\n          <upload-outlined />\n          <span class=\"nav-text\">nav 3</span>\n        </a-menu-item>\n        <a-menu-item key=\"4\">\n          <user-outlined />\n          <span class=\"nav-text\">nav 4</span>\n        </a-menu-item>\n      </a-menu>\n    </a-layout-sider>\n    <a-layout>\n      <a-layout-header :style=\"{ background: '#fff', padding: 0 }\" />\n      <a-layout-content :style=\"{ margin: '24px 16px 0' }\">\n        <div :style=\"{ padding: '24px', background: '#fff', minHeight: '360px' }\">content</div>\n      </a-layout-content>\n      <a-layout-footer style=\"text-align: center\">\n        Ant Design ©2018 Created by Ant UED\n      </a-layout-footer>\n    </a-layout>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined, VideoCameraOutlined, UploadOutlined } from '@ant-design/icons-vue';\nconst onCollapse = (collapsed: boolean, type: string) => {\n  console.log(collapsed, type);\n};\n\nconst onBreakpoint = (broken: boolean) => {\n  console.log(broken);\n};\n\nconst selectedKeys = ref<string[]>(['4']);\n</script>\n\n<style scoped>\n#components-layout-demo-responsive .logo {\n  height: 32px;\n  background: rgba(255, 255, 255, 0.2);\n  margin: 16px;\n}\n\n.site-layout-sub-header-background {\n  background: #fff;\n}\n\n.site-layout-background {\n  background: #fff;\n}\n\n[data-theme='dark'] .site-layout-sub-header-background {\n  background: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/side.vue",
    "content": "<docs>\n---\norder: 4\niframe: 360\ntitle:\n  zh-CN: 侧边布局\n  en-US: Sider\n---\n\n## zh-CN\n\n侧边两列式布局。页面横向空间有限时，侧边导航可收起。<br>\n侧边导航在页面布局上采用的是左右的结构，一般主导航放置于页面的左侧固定位置，辅助菜单放置于工作区顶部。内容根据浏览器终端进行自适应，能提高横向空间的使用率，但是整个页面排版不稳定。侧边导航的模式层级扩展性强，一、二、三级导航项目可以更为顺畅且具关联性的被展示，同时侧边导航可以固定，使得用户在操作和浏览中可以快速的定位和切换当前位置，有很高的操作效率。但这类导航横向页面内容的空间会被牺牲一部份。\n\n## en-US\n\nTwo-columns layout. The sider menu can be collapsed when horizontal space is limited.<br>\nGenerally, the mainnav is placed on the left side of the page, and the secondary menu is placed on the top of the working area. Contents will adapt the layout to the viewing area to improve the horizontal space usage, while the layout of the whole page is not stable.\nThe level of the aside navigation is scalable. The first, second, and third level navigations could be present more fluently and relevantly, and aside navigation can be fixed, allowing the user to quickly switch and spot the current position, improving the user experience. However, this navigation occupies some horizontal space of the contents\n\n</docs>\n<template>\n  <a-layout style=\"min-height: 100vh\">\n    <a-layout-sider v-model:collapsed=\"collapsed\" collapsible>\n      <div class=\"logo\" />\n      <a-menu v-model:selectedKeys=\"selectedKeys\" theme=\"dark\" mode=\"inline\">\n        <a-menu-item key=\"1\">\n          <pie-chart-outlined />\n          <span>Option 1</span>\n        </a-menu-item>\n        <a-menu-item key=\"2\">\n          <desktop-outlined />\n          <span>Option 2</span>\n        </a-menu-item>\n        <a-sub-menu key=\"sub1\">\n          <template #title>\n            <span>\n              <user-outlined />\n              <span>User</span>\n            </span>\n          </template>\n          <a-menu-item key=\"3\">Tom</a-menu-item>\n          <a-menu-item key=\"4\">Bill</a-menu-item>\n          <a-menu-item key=\"5\">Alex</a-menu-item>\n        </a-sub-menu>\n        <a-sub-menu key=\"sub2\">\n          <template #title>\n            <span>\n              <team-outlined />\n              <span>Team</span>\n            </span>\n          </template>\n          <a-menu-item key=\"6\">Team 1</a-menu-item>\n          <a-menu-item key=\"8\">Team 2</a-menu-item>\n        </a-sub-menu>\n        <a-menu-item key=\"9\">\n          <file-outlined />\n          <span>File</span>\n        </a-menu-item>\n      </a-menu>\n    </a-layout-sider>\n    <a-layout>\n      <a-layout-header style=\"background: #fff; padding: 0\" />\n      <a-layout-content style=\"margin: 0 16px\">\n        <a-breadcrumb style=\"margin: 16px 0\">\n          <a-breadcrumb-item>User</a-breadcrumb-item>\n          <a-breadcrumb-item>Bill</a-breadcrumb-item>\n        </a-breadcrumb>\n        <div :style=\"{ padding: '24px', background: '#fff', minHeight: '360px' }\">\n          Bill is a cat.\n        </div>\n      </a-layout-content>\n      <a-layout-footer style=\"text-align: center\">\n        Ant Design ©2018 Created by Ant UED\n      </a-layout-footer>\n    </a-layout>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  PieChartOutlined,\n  DesktopOutlined,\n  UserOutlined,\n  TeamOutlined,\n  FileOutlined,\n} from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst collapsed = ref<boolean>(false);\nconst selectedKeys = ref<string[]>(['1']);\n</script>\n\n<style scoped>\n#components-layout-demo-side .logo {\n  height: 32px;\n  margin: 16px;\n  background: rgba(255, 255, 255, 0.3);\n}\n\n.site-layout .site-layout-background {\n  background: #fff;\n}\n[data-theme='dark'] .site-layout .site-layout-background {\n  background: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/top-side-2.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 顶部-侧边布局-通栏\n  en-US: Header Sider 2\n---\n\n## zh-CN\n\n同样拥有顶部导航及侧边栏，区别是两边未留边距，多用于应用型的网站。\n\n## en-US\n\nBoth the top navigation and the sidebar, commonly used in application site.\n\n</docs>\n<template>\n  <a-layout>\n    <a-layout-header class=\"header\">\n      <div class=\"logo\" />\n      <a-menu\n        v-model:selectedKeys=\"selectedKeys1\"\n        theme=\"dark\"\n        mode=\"horizontal\"\n        :style=\"{ lineHeight: '64px' }\"\n      >\n        <a-menu-item key=\"1\">nav 1</a-menu-item>\n        <a-menu-item key=\"2\">nav 2</a-menu-item>\n        <a-menu-item key=\"3\">nav 3</a-menu-item>\n      </a-menu>\n    </a-layout-header>\n    <a-layout>\n      <a-layout-sider width=\"200\" style=\"background: #fff\">\n        <a-menu\n          v-model:selectedKeys=\"selectedKeys2\"\n          v-model:openKeys=\"openKeys\"\n          mode=\"inline\"\n          :style=\"{ height: '100%', borderRight: 0 }\"\n        >\n          <a-sub-menu key=\"sub1\">\n            <template #title>\n              <span>\n                <user-outlined />\n                subnav 1\n              </span>\n            </template>\n            <a-menu-item key=\"1\">option1</a-menu-item>\n            <a-menu-item key=\"2\">option2</a-menu-item>\n            <a-menu-item key=\"3\">option3</a-menu-item>\n            <a-menu-item key=\"4\">option4</a-menu-item>\n          </a-sub-menu>\n          <a-sub-menu key=\"sub2\">\n            <template #title>\n              <span>\n                <laptop-outlined />\n                subnav 2\n              </span>\n            </template>\n            <a-menu-item key=\"5\">option5</a-menu-item>\n            <a-menu-item key=\"6\">option6</a-menu-item>\n            <a-menu-item key=\"7\">option7</a-menu-item>\n            <a-menu-item key=\"8\">option8</a-menu-item>\n          </a-sub-menu>\n          <a-sub-menu key=\"sub3\">\n            <template #title>\n              <span>\n                <notification-outlined />\n                subnav 3\n              </span>\n            </template>\n            <a-menu-item key=\"9\">option9</a-menu-item>\n            <a-menu-item key=\"10\">option10</a-menu-item>\n            <a-menu-item key=\"11\">option11</a-menu-item>\n            <a-menu-item key=\"12\">option12</a-menu-item>\n          </a-sub-menu>\n        </a-menu>\n      </a-layout-sider>\n      <a-layout style=\"padding: 0 24px 24px\">\n        <a-breadcrumb style=\"margin: 16px 0\">\n          <a-breadcrumb-item>Home</a-breadcrumb-item>\n          <a-breadcrumb-item>List</a-breadcrumb-item>\n          <a-breadcrumb-item>App</a-breadcrumb-item>\n        </a-breadcrumb>\n        <a-layout-content\n          :style=\"{ background: '#fff', padding: '24px', margin: 0, minHeight: '280px' }\"\n        >\n          Content\n        </a-layout-content>\n      </a-layout>\n    </a-layout>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined, LaptopOutlined, NotificationOutlined } from '@ant-design/icons-vue';\nconst selectedKeys1 = ref<string[]>(['2']);\nconst selectedKeys2 = ref<string[]>(['1']);\nconst openKeys = ref<string[]>(['sub1']);\n</script>\n\n<style scoped>\n#components-layout-demo-top-side-2 .logo {\n  float: left;\n  width: 120px;\n  height: 31px;\n  margin: 16px 24px 16px 0;\n  background: rgba(255, 255, 255, 0.3);\n}\n\n.ant-row-rtl #components-layout-demo-top-side-2 .logo {\n  float: right;\n  margin: 16px 0 16px 24px;\n}\n\n.site-layout-background {\n  background: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/top-side.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 顶部-侧边布局\n  en-US: Header-Sider\n---\n\n## zh-CN\n\n拥有顶部导航及侧边栏的页面，多用于展示类网站。\n\n## en-US\n\nBoth the top navigation and the sidebar, commonly used in documentation site.\n\n</docs>\n<template>\n  <a-layout>\n    <a-layout-header class=\"header\">\n      <div class=\"logo\" />\n      <a-menu\n        v-model:selectedKeys=\"selectedKeys1\"\n        theme=\"dark\"\n        mode=\"horizontal\"\n        :style=\"{ lineHeight: '64px' }\"\n      >\n        <a-menu-item key=\"1\">nav 1</a-menu-item>\n        <a-menu-item key=\"2\">nav 2</a-menu-item>\n        <a-menu-item key=\"3\">nav 3</a-menu-item>\n      </a-menu>\n    </a-layout-header>\n    <a-layout-content style=\"padding: 0 50px\">\n      <a-breadcrumb style=\"margin: 16px 0\">\n        <a-breadcrumb-item>Home</a-breadcrumb-item>\n        <a-breadcrumb-item>List</a-breadcrumb-item>\n        <a-breadcrumb-item>App</a-breadcrumb-item>\n      </a-breadcrumb>\n      <a-layout style=\"padding: 24px 0; background: #fff\">\n        <a-layout-sider width=\"200\" style=\"background: #fff\">\n          <a-menu\n            v-model:selectedKeys=\"selectedKeys2\"\n            v-model:openKeys=\"openKeys\"\n            mode=\"inline\"\n            style=\"height: 100%\"\n          >\n            <a-sub-menu key=\"sub1\">\n              <template #title>\n                <span>\n                  <user-outlined />\n                  subnav 1\n                </span>\n              </template>\n              <a-menu-item key=\"1\">option1</a-menu-item>\n              <a-menu-item key=\"2\">option2</a-menu-item>\n              <a-menu-item key=\"3\">option3</a-menu-item>\n              <a-menu-item key=\"4\">option4</a-menu-item>\n            </a-sub-menu>\n            <a-sub-menu key=\"sub2\">\n              <template #title>\n                <span>\n                  <laptop-outlined />\n                  subnav 2\n                </span>\n              </template>\n              <a-menu-item key=\"5\">option5</a-menu-item>\n              <a-menu-item key=\"6\">option6</a-menu-item>\n              <a-menu-item key=\"7\">option7</a-menu-item>\n              <a-menu-item key=\"8\">option8</a-menu-item>\n            </a-sub-menu>\n            <a-sub-menu key=\"sub3\">\n              <template #title>\n                <span>\n                  <notification-outlined />\n                  subnav 3\n                </span>\n              </template>\n              <a-menu-item key=\"9\">option9</a-menu-item>\n              <a-menu-item key=\"10\">option10</a-menu-item>\n              <a-menu-item key=\"11\">option11</a-menu-item>\n              <a-menu-item key=\"12\">option12</a-menu-item>\n            </a-sub-menu>\n          </a-menu>\n        </a-layout-sider>\n        <a-layout-content :style=\"{ padding: '0 24px', minHeight: '280px' }\">\n          Content\n        </a-layout-content>\n      </a-layout>\n    </a-layout-content>\n    <a-layout-footer style=\"text-align: center\">\n      Ant Design ©2018 Created by Ant UED\n    </a-layout-footer>\n  </a-layout>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined, LaptopOutlined, NotificationOutlined } from '@ant-design/icons-vue';\nconst selectedKeys1 = ref<string[]>(['2']);\nconst selectedKeys2 = ref<string[]>(['1']);\nconst openKeys = ref<string[]>(['sub1']);\n</script>\n\n<style scoped>\n#components-layout-demo-top-side .logo {\n  float: left;\n  width: 120px;\n  height: 31px;\n  margin: 16px 24px 16px 0;\n  background: rgba(255, 255, 255, 0.3);\n}\n\n.ant-row-rtl #components-layout-demo-top-side .logo {\n  float: right;\n  margin: 16px 0 16px 24px;\n}\n\n.site-layout-background {\n  background: #fff;\n}\n</style>\n"
  },
  {
    "path": "components/layout/demo/top.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 上中下布局\n  en-US: Header-Content-Footer\n---\n\n## zh-CN\n\n最基本的『上-中-下』布局。<br>\n一般主导航放置于页面的顶端，从左自右依次为：logo、一级导航项、辅助菜单（用户、设置、通知等）。通常将内容放在固定尺寸（例如：1200px）内，整个页面排版稳定，不受用户终端显示器影响；上下级的结构符合用户上下浏览的习惯，也是较为经典的网站导航模式。页面上下切分的方式提高了主工作区域的信息展示效率，但在纵向空间上会有一些牺牲。此外，由于导航栏水平空间的限制，不适合那些一级导航项很多的信息结构。\n\n## en-US\n\nThe most basic \"header-content-footer\" layout.<br>\nGenerally, the mainnav is placed at the top of the page, and includes the logo, the first level navigation, and the secondary menu (users, settings, notifications) from left to right in it.\nWe always put contents in a fixed size navigation (eg: `1200px`), the layout of the whole page is stable, it's not affected by viewing area.\nTop-bottom structure is conform with the top-bottom viewing habit, it's a classical navigation pattern of websites. This pattern demonstrates efficiency in the main workarea, while using some vertical space. And because the horizontal space of the navigation is limited, this pattern is not suitable for cases when the first level navigation contains many elements or links\n\n</docs>\n<template>\n  <a-layout class=\"layout\">\n    <a-layout-header>\n      <div class=\"logo\" />\n      <a-menu\n        v-model:selectedKeys=\"selectedKeys\"\n        theme=\"dark\"\n        mode=\"horizontal\"\n        :style=\"{ lineHeight: '64px' }\"\n      >\n        <a-menu-item key=\"1\">nav 1</a-menu-item>\n        <a-menu-item key=\"2\">nav 2</a-menu-item>\n        <a-menu-item key=\"3\">nav 3</a-menu-item>\n      </a-menu>\n    </a-layout-header>\n    <a-layout-content style=\"padding: 0 50px\">\n      <a-breadcrumb style=\"margin: 16px 0\">\n        <a-breadcrumb-item>Home</a-breadcrumb-item>\n        <a-breadcrumb-item>List</a-breadcrumb-item>\n        <a-breadcrumb-item>App</a-breadcrumb-item>\n      </a-breadcrumb>\n      <div :style=\"{ background: '#fff', padding: '24px', minHeight: '280px' }\">Content</div>\n    </a-layout-content>\n    <a-layout-footer style=\"text-align: center\">\n      Ant Design ©2018 Created by Ant UED\n    </a-layout-footer>\n  </a-layout>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst selectedKeys = ref<string[]>(['2']);\n</script>\n<style scoped>\n.site-layout-content {\n  min-height: 280px;\n  padding: 24px;\n  background: #fff;\n}\n#components-layout-demo-top .logo {\n  float: left;\n  width: 120px;\n  height: 31px;\n  margin: 16px 24px 16px 0;\n  background: rgba(255, 255, 255, 0.3);\n}\n.ant-row-rtl #components-layout-demo-top .logo {\n  float: right;\n  margin: 16px 0 16px 24px;\n}\n\n[data-theme='dark'] .site-layout-content {\n  background: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/layout/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Layout\ncols: 1\ntitle: Layout\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*4i58ToAcxaYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HdS6Q5vUCDcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nHandling the overall layout of a page.\n\n## Specification\n\n### Size\n\nThe first level navigation is inclined left near a logo, and the secondary menu is inclined right.\n\n- Top Navigation (almost systems): the height of the first level navigation `64px`, the second level navigation `48px`.\n- Top Navigation(contents page): the height of the first level navigation `80px`, the second level navigation `56px`.\n- Calculation formula of a top navigation: `48+8n`.\n- Calculation formula of an aside navigation: `200+8n`.\n\n### Interaction rules\n\n- The first level navigation and the last level navigation should be distinguishable by visualization;\n- The current item should have the highest priority of visualization;\n- When the current navigation item is collapsed, the style of the current navigation item is applied to its parent level;\n- The left side navigation bar has support for both the accordion and expanding styles; you can choose the one that fits your case the best.\n\n## Visualization rules\n\nStyle of a navigation should conform to its level.\n\n- **Emphasis by colorblock**\n\n  When background color is a deep color, you can use this pattern for the parent level navigation item of the current page.\n\n- **The highlight match stick**\n\n  When background color is a light color, you can use this pattern for the current page navigation item; we recommend using it for the last item of the navigation path.\n\n- **Highlighted font**\n\n  From the visualization aspect, a highlighted font is stronger than colorblock; this pattern is often used for the parent level of the current item.\n\n- **Enlarge the size of the font**\n\n  `12px`, `14px` is a standard font size of navigations, `14px` is used for the first and the second level of the navigation. You can choose an appropriate font size regarding the level of your navigation.\n\n## Component Overview\n\n- `Layout`: The layout wrapper, in which `Header` `Sider` `Content` `Footer` or `Layout` itself can be nested, and can be placed in any parent container.\n- `Header`: The top layout with the default style, in which any element can be nested, and must be placed in `Layout`.\n- `Sider`: The sidebar with default style and basic functions, in which any element can be nested, and must be placed in `Layout`.\n- `Content`: The content layout with the default style, in which any element can be nested, and must be placed in `Layout`.\n- `Footer`: The bottom layout with the default style, in which any element can be nested, and must be placed in `Layout`.\n\n> Based on `flex layout`, please pay attention to the [compatibility](http://caniuse.com/#search=flex).\n\n## API\n\n```jsx\n<Layout>\n  <Header>header</Header>\n  <Layout>\n    <Sider>left sidebar</Sider>\n    <Content>main content</Content>\n    <Sider>right sidebar</Sider>\n  </Layout>\n  <Footer>footer</Footer>\n</Layout>\n```\n\n### Layout\n\nThe wrapper.\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| class | container className | string | - |\n| hasSider | whether contain Sider in children, don't have to assign it normally. Useful in ssr avoid style flickering | boolean | - |\n| style | to customize the styles | object\\|string | - |\n\n### Layout.Sider\n\nThe sidebar.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| breakpoint | [breakpoints](/components/grid#api) of the responsive layout | `xs` \\| `sm` \\| `md` \\| `lg` \\| `xl` \\| `xxl` | - |  |\n| class | container className | string | - |  |\n| collapsed(v-model) | to set the current status | boolean | - |  |\n| collapsedWidth | width of the collapsed sidebar, by setting to `0` a special trigger will appear | number | 80 |  |\n| collapsible | whether can be collapsed | boolean | false |  |\n| defaultCollapsed | to set the initial status | boolean | false |  |\n| reverseArrow | reverse direction of arrow, for a sider that expands from the right | boolean | false |  |\n| style | to customize the styles | object\\|string | - |  |\n| theme | color theme of the sidebar | `light` \\| `dark` | `dark` |  |\n| trigger | specify the customized trigger, set to null to hide the trigger | string\\|slot | - |  |\n| width | width of the sidebar | number\\|string | 200 |  |\n| zeroWidthTriggerStyle | to customize the styles of the special trigger that appears when `collapsedWidth` is 0 | object | - | 1.5.0 |\n\n### Events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| breakpoint | the callback function, executed when [breakpoints](/components/grid#api) changed | (broken) => {} | - |\n| collapse | the callback function, executed by clicking the trigger or activating the responsive layout | (collapsed, type) => {} |  |\n\n#### breakpoint width\n\n```jsx\n{\n  xs: '480px',\n  sm: '576px',\n  md: '768px',\n  lg: '992px',\n  xl: '1200px',\n  xxl: '1600px',\n  xxxl: '2000px',\n}\n```\n"
  },
  {
    "path": "components/layout/index.ts",
    "content": "import type { App } from 'vue';\nimport Layout, { Header, Footer, Content } from './layout';\nimport Sider from './Sider';\n\nexport type { BasicProps as LayoutProps } from './layout';\nexport type { SiderProps } from './Sider';\n\n/* istanbul ignore next */\nexport const LayoutHeader = Header;\nexport const LayoutFooter = Footer;\nexport const LayoutSider = Sider;\nexport const LayoutContent = Content;\n\nexport default Object.assign(Layout, {\n  Header,\n  Footer,\n  Content,\n  Sider,\n  install: (app: App) => {\n    app.component(Layout.name, Layout);\n    app.component(Header.name, Header);\n    app.component(Footer.name, Footer);\n    app.component(Sider.name, Sider);\n    app.component(Content.name, Content);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/layout/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 布局\ntype: 布局\ncols: 1\ntitle: Layout\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*4i58ToAcxaYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HdS6Q5vUCDcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n协助进行页面级整体布局。\n\n## 设计规则\n\n### 尺寸\n\n一级导航项偏左靠近 logo 放置，辅助菜单偏右放置。\n\n- 顶部导航（大部分系统）：一级导航高度 `64px`，二级导航 `48px`。\n- 顶部导航（展示类页面）：一级导航高度 `80px`，二级导航 `56px`。\n- 顶部导航高度的范围计算公式为：`48+8n`。\n- 侧边导航宽度的范围计算公式：`200+8n`。\n\n### 交互\n\n- 一级导航和末级的导航需要在可视化的层面被强调出来；\n- 当前项应该在呈现上优先级最高；\n- 当导航收起的时候，当前项的样式自动赋予给它的上一个层级；\n- 左侧导航栏的收放交互同时支持手风琴和全展开的样式，根据业务的要求进行适当的选择。\n\n### 视觉\n\n导航样式上需要根据信息层级合理的选择样式：\n\n- **大色块强调**\n\n  建议用于底色为深色系时，当前页面父级的导航项。\n\n- **高亮火柴棍**\n\n  当导航栏底色为浅色系时使用，可用于当前页面对应导航项，建议尽量在导航路径的最终项使用。\n\n- **字体高亮变色**\n\n  从可视化层面，字体高亮的视觉强化力度低于大色块，通常在当前项的上一级使用。\n\n- **字体放大**\n\n  `12px`、`14px` 是导航的标准字号，14 号字体用在一、二级导航中。字号可以考虑导航项的等级做相应选择。\n\n## 组件概述\n\n- `Layout`：布局容器，其下可嵌套 `Header` `Sider` `Content` `Footer` 或 `Layout` 本身，可以放在任何父容器中。\n- `Header`：顶部布局，自带默认样式，其下可嵌套任何元素，只能放在 `Layout` 中。\n- `Sider`：侧边栏，自带默认样式及基本功能，其下可嵌套任何元素，只能放在 `Layout` 中。\n- `Content`：内容部分，自带默认样式，其下可嵌套任何元素，只能放在 `Layout` 中。\n- `Footer`：底部布局，自带默认样式，其下可嵌套任何元素，只能放在 `Layout` 中。\n\n> 注意：采用 flex 布局实现，请注意[浏览器兼容性](http://caniuse.com/#search=flex)问题。\n\n## API\n\n```jsx\n<Layout>\n  <Header>header</Header>\n  <Layout>\n    <Sider>left sidebar</Sider>\n    <Content>main content</Content>\n    <Sider>right sidebar</Sider>\n  </Layout>\n  <Footer>footer</Footer>\n</Layout>\n```\n\n### Layout\n\n布局容器。\n\n| 参数     | 说明                                                               | 类型    | 默认值 |\n| -------- | ------------------------------------------------------------------ | ------- | ------ |\n| class    | 容器 class                                                         | string  | -      |\n| hasSider | 表示子元素里有 Sider，一般不用指定。可用于服务端渲染时避免样式闪动 | boolean | -      |\n| style    | 指定样式                                                           | object  | -      |\n\n### Layout.Sider\n\n侧边栏。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| breakpoint | 触发响应式布局的[断点](/components/grid#api) | `xs` \\| `sm` \\| `md` \\| `lg` \\| `xl` \\| `xxl` | - |  |\n| class | 容器 class | string | - |  |\n| collapsed(v-model) | 当前收起状态 | boolean | - |  |\n| collapsedWidth | 收缩宽度，设置为 0 会出现特殊 trigger | number | 80 |  |\n| collapsible | 是否可收起 | boolean | false |  |\n| defaultCollapsed | 是否默认收起 | boolean | false |  |\n| reverseArrow | 翻转折叠提示箭头的方向，当 Sider 在右边时可以使用 | boolean | false |  |\n| style | 指定样式 | object\\|string | - |  |\n| theme | 主题颜色 | `light` \\| `dark` | `dark` |  |\n| trigger | 自定义 trigger，设置为 null 时隐藏 trigger | string\\|slot | - |  |\n| width | 宽度 | number\\|string | 200 |  |\n| zeroWidthTriggerStyle | 指定当 `collapsedWidth` 为 0 时出现的特殊 trigger 的样式 | object | - | 1.5.0 |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| breakpoint | 触发响应式布局[断点](/components/grid#api)时的回调 | (broken) => {} |\n| collapse | 展开-收起时的回调函数，有点击 trigger 以及响应式反馈两种方式可以触发 | (collapsed, type) => {} |\n\n#### breakpoint width\n\n```js\n{\n  xs: '480px',\n  sm: '576px',\n  md: '768px',\n  lg: '992px',\n  xl: '1200px',\n  xxl: '1600px',\n  xxxl: '2000px',\n}\n```\n"
  },
  {
    "path": "components/layout/injectionKey.ts",
    "content": "import type { Ref, InjectionKey } from 'vue';\n\nexport type SiderCollapsed = Ref<boolean>;\n\nexport const SiderCollapsedKey: InjectionKey<SiderCollapsed> = Symbol('siderCollapsed');\n\nexport interface SiderHookProvider {\n  addSider?: (id: string) => void;\n  removeSider?: (id: string) => void;\n}\n\nexport const SiderHookProviderKey: InjectionKey<SiderHookProvider> = Symbol('siderHookProvider');\n"
  },
  {
    "path": "components/layout/layout.tsx",
    "content": "import type { ExtractPropTypes, HTMLAttributes } from 'vue';\nimport { computed, createVNode, defineComponent, provide, ref } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { SiderHookProviderKey } from './injectionKey';\nimport useStyle from './style';\n\nexport const basicProps = () => ({\n  prefixCls: String,\n  hasSider: { type: Boolean, default: undefined },\n  tagName: String,\n});\n\nexport type BasicProps = Partial<ExtractPropTypes<ReturnType<typeof basicProps>>> & HTMLAttributes;\n\ntype GeneratorArgument = {\n  suffixCls: string;\n  tagName: 'header' | 'footer' | 'main' | 'section';\n  name: string;\n};\n\nfunction generator({ suffixCls, tagName, name }: GeneratorArgument) {\n  return (BasicComponent: typeof BasicLayout) => {\n    const Adapter = defineComponent({\n      compatConfig: { MODE: 3 },\n      name,\n      props: basicProps(),\n      setup(props, { slots }) {\n        const { prefixCls } = useConfigInject(suffixCls, props);\n        return () => {\n          const basicComponentProps = {\n            ...props,\n            prefixCls: prefixCls.value,\n            tagName,\n          };\n          return <BasicComponent {...basicComponentProps} v-slots={slots}></BasicComponent>;\n        };\n      },\n    });\n    return Adapter;\n  };\n}\n\nconst Basic = defineComponent({\n  compatConfig: { MODE: 3 },\n  props: basicProps(),\n  setup(props, { slots }) {\n    return () => createVNode(props.tagName, { class: props.prefixCls }, slots);\n  },\n});\n\nconst BasicLayout = defineComponent({\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: basicProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const siders = ref<string[]>([]);\n    const siderHookProvider = {\n      addSider: (id: string) => {\n        siders.value = [...siders.value, id];\n      },\n      removeSider: (id: string) => {\n        siders.value = siders.value.filter(currentId => currentId !== id);\n      },\n    };\n\n    provide(SiderHookProviderKey, siderHookProvider);\n    const divCls = computed(() => {\n      const { prefixCls, hasSider } = props;\n      return {\n        [hashId.value]: true,\n        [`${prefixCls}`]: true,\n        [`${prefixCls}-has-sider`]:\n          typeof hasSider === 'boolean' ? hasSider : siders.value.length > 0,\n        [`${prefixCls}-rtl`]: direction.value === 'rtl',\n      };\n    });\n    return () => {\n      const { tagName } = props;\n      return wrapSSR(createVNode(tagName, { ...attrs, class: [divCls.value, attrs.class] }, slots));\n    };\n  },\n});\n\nconst Layout = generator({\n  suffixCls: 'layout',\n  tagName: 'section',\n  name: 'ALayout',\n})(BasicLayout);\n\nconst Header = generator({\n  suffixCls: 'layout-header',\n  tagName: 'header',\n  name: 'ALayoutHeader',\n})(Basic);\n\nconst Footer = generator({\n  suffixCls: 'layout-footer',\n  tagName: 'footer',\n  name: 'ALayoutFooter',\n})(Basic);\n\nconst Content = generator({\n  suffixCls: 'layout-content',\n  tagName: 'main',\n  name: 'ALayoutContent',\n})(Basic);\n\nexport { Header, Footer, Content };\n\nexport default Layout;\n"
  },
  {
    "path": "components/layout/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genLayoutLightStyle from './light';\n\nexport interface ComponentToken {\n  colorBgHeader: string;\n  colorBgBody: string;\n  colorBgTrigger: string;\n}\n\nexport interface LayoutToken extends FullToken<'Layout'> {\n  // Layout\n  layoutHeaderHeight: number;\n  layoutHeaderPaddingInline: number;\n  layoutHeaderColor: string;\n  layoutFooterPadding: string;\n  layoutTriggerHeight: number;\n  layoutZeroTriggerSize: number;\n}\n\nconst genLayoutStyle: GenerateStyle<LayoutToken, CSSObject> = token => {\n  const {\n    antCls, // .ant\n    componentCls, // .ant-layout\n    colorText,\n    colorTextLightSolid,\n    colorBgHeader,\n    colorBgBody,\n    colorBgTrigger,\n    layoutHeaderHeight,\n    layoutHeaderPaddingInline,\n    layoutHeaderColor,\n    layoutFooterPadding,\n    layoutTriggerHeight,\n    layoutZeroTriggerSize,\n    motionDurationMid,\n    motionDurationSlow,\n    fontSize,\n    borderRadius,\n  } = token;\n\n  return {\n    [componentCls]: {\n      display: 'flex',\n      flex: 'auto',\n      flexDirection: 'column',\n      color: colorText,\n\n      /* fix firefox can't set height smaller than content on flex item */\n      minHeight: 0,\n      background: colorBgBody,\n\n      '&, *': {\n        boxSizing: 'border-box',\n      },\n\n      [`&${componentCls}-has-sider`]: {\n        flexDirection: 'row',\n        [`> ${componentCls}, > ${componentCls}-content`]: {\n          // https://segmentfault.com/a/1190000019498300\n          width: 0,\n        },\n      },\n\n      [`${componentCls}-header, &${componentCls}-footer`]: {\n        flex: '0 0 auto',\n      },\n\n      [`${componentCls}-header`]: {\n        height: layoutHeaderHeight,\n        paddingInline: layoutHeaderPaddingInline,\n        color: layoutHeaderColor,\n        lineHeight: `${layoutHeaderHeight}px`,\n        background: colorBgHeader,\n        // Other components/menu/style/index.less line:686\n        // Integration with header element so menu items have the same height\n        [`${antCls}-menu`]: {\n          lineHeight: 'inherit',\n        },\n      },\n\n      [`${componentCls}-footer`]: {\n        padding: layoutFooterPadding,\n        color: colorText,\n        fontSize,\n        background: colorBgBody,\n      },\n\n      [`${componentCls}-content`]: {\n        flex: 'auto',\n\n        // fix firefox can't set height smaller than content on flex item\n        minHeight: 0,\n      },\n\n      [`${componentCls}-sider`]: {\n        position: 'relative',\n\n        // fix firefox can't set width smaller than content on flex item\n        minWidth: 0,\n        background: colorBgHeader,\n        transition: `all ${motionDurationMid}, background 0s`,\n\n        '&-children': {\n          height: '100%',\n          // Hack for fixing margin collapse bug\n          // https://github.com/ant-design/ant-design/issues/7967\n          // solution from https://stackoverflow.com/a/33132624/3040605\n          marginTop: -0.1,\n          paddingTop: 0.1,\n\n          [`${antCls}-menu${antCls}-menu-inline-collapsed`]: {\n            width: 'auto',\n          },\n        },\n\n        '&-has-trigger': {\n          paddingBottom: layoutTriggerHeight,\n        },\n\n        '&-right': {\n          order: 1,\n        },\n\n        '&-trigger': {\n          position: 'fixed',\n          bottom: 0,\n          zIndex: 1,\n          height: layoutTriggerHeight,\n          color: colorTextLightSolid,\n          lineHeight: `${layoutTriggerHeight}px`,\n          textAlign: 'center',\n          background: colorBgTrigger,\n          cursor: 'pointer',\n          transition: `all ${motionDurationMid}`,\n        },\n\n        '&-zero-width': {\n          '> *': {\n            overflow: 'hidden',\n          },\n\n          '&-trigger': {\n            position: 'absolute',\n            top: layoutHeaderHeight,\n            insetInlineEnd: -layoutZeroTriggerSize,\n            zIndex: 1,\n            width: layoutZeroTriggerSize,\n            height: layoutZeroTriggerSize,\n            color: colorTextLightSolid,\n            fontSize: token.fontSizeXL,\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            background: colorBgHeader,\n            borderStartStartRadius: 0,\n            borderStartEndRadius: borderRadius,\n            borderEndEndRadius: borderRadius,\n            borderEndStartRadius: 0,\n\n            cursor: 'pointer',\n            transition: `background ${motionDurationSlow} ease`,\n\n            '&::after': {\n              position: 'absolute',\n              inset: 0,\n              background: 'transparent',\n              transition: `all ${motionDurationSlow}`,\n              content: '\"\"',\n            },\n\n            '&:hover::after': {\n              // FIXME: Hardcode, but seems no need to create a token for this\n              background: `rgba(255, 255, 255, 0.2)`,\n            },\n\n            '&-right': {\n              insetInlineStart: -layoutZeroTriggerSize,\n              borderStartStartRadius: borderRadius,\n              borderStartEndRadius: 0,\n              borderEndEndRadius: 0,\n              borderEndStartRadius: borderRadius,\n            },\n          },\n        },\n      },\n      // Light\n      ...genLayoutLightStyle(token),\n      // RTL\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Layout',\n  token => {\n    const { colorText, controlHeightSM, controlHeight, controlHeightLG, marginXXS } = token;\n    const layoutHeaderPaddingInline = controlHeightLG * 1.25;\n\n    const layoutToken = mergeToken<LayoutToken>(token, {\n      // Layout\n      layoutHeaderHeight: controlHeight * 2,\n      layoutHeaderPaddingInline,\n      layoutHeaderColor: colorText,\n      layoutFooterPadding: `${controlHeightSM}px ${layoutHeaderPaddingInline}px`,\n      layoutTriggerHeight: controlHeightLG + marginXXS * 2, // = item height + margin\n      layoutZeroTriggerSize: controlHeightLG,\n    });\n\n    return [genLayoutStyle(layoutToken)];\n  },\n  token => {\n    const { colorBgLayout } = token;\n\n    return {\n      colorBgHeader: '#001529',\n      colorBgBody: colorBgLayout,\n      colorBgTrigger: '#002140',\n    };\n  },\n);\n"
  },
  {
    "path": "components/layout/style/light.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { LayoutToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genLayoutLightStyle: GenerateStyle<LayoutToken, CSSObject> = token => {\n  const { componentCls, colorBgContainer, colorBgBody, colorText } = token;\n\n  return {\n    [`${componentCls}-sider-light`]: {\n      background: colorBgContainer,\n\n      [`${componentCls}-sider-trigger`]: {\n        color: colorText,\n        background: colorBgContainer,\n      },\n\n      [`${componentCls}-sider-zero-width-trigger`]: {\n        color: colorText,\n        background: colorBgContainer,\n        border: `1px solid ${colorBgBody}`, // Safe to modify to any other color\n        borderInlineStart: 0,\n      },\n    },\n  };\n};\n\nexport default genLayoutLightStyle;\n"
  },
  {
    "path": "components/list/Item.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport { isStringElement, isEmptyElement, flattenChildren } from '../_util/props-util';\nimport { Col } from '../grid';\nimport { cloneElement } from '../_util/vnode';\nimport type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, inject, ref } from 'vue';\nimport ItemMeta from './ItemMeta';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { ListContextKey } from './contextKey';\nimport type { ListGridType } from '.';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport const listItemProps = () => ({\n  prefixCls: String,\n  extra: PropTypes.any,\n  actions: PropTypes.array,\n  grid: Object as PropType<ListGridType>,\n  colStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n});\n\nexport type ListItemProps = Partial<ExtractPropTypes<ReturnType<typeof listItemProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AListItem',\n  inheritAttrs: false,\n  Meta: ItemMeta,\n  props: listItemProps(),\n  slots: Object as CustomSlotsType<{\n    actions: any;\n    extra: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { itemLayout, grid } = inject(ListContextKey, {\n      grid: ref(),\n      itemLayout: ref(),\n    });\n    const { prefixCls } = useConfigInject('list', props);\n\n    const isItemContainsTextNodeAndNotSingular = () => {\n      const children = slots.default?.() || [];\n      let result;\n      children.forEach(element => {\n        if (isStringElement(element) && !isEmptyElement(element)) {\n          result = true;\n        }\n      });\n      return result && children.length > 1;\n    };\n\n    const isFlexMode = () => {\n      const extra = props.extra ?? slots.extra?.();\n      if (itemLayout.value === 'vertical') {\n        return !!extra;\n      }\n      return !isItemContainsTextNodeAndNotSingular();\n    };\n\n    return () => {\n      const { class: className, ...restAttrs } = attrs;\n      const pre = prefixCls.value;\n      const extra = props.extra ?? slots.extra?.();\n      const children = slots.default?.();\n      let actions = props.actions ?? flattenChildren(slots.actions?.());\n      actions = actions && !Array.isArray(actions) ? [actions] : actions;\n      const actionsContent = actions && actions.length > 0 && (\n        <ul class={`${pre}-item-action`} key=\"actions\">\n          {actions.map((action, i) => (\n            <li key={`${pre}-item-action-${i}`}>\n              {action}\n              {i !== actions.length - 1 && <em class={`${pre}-item-action-split`} />}\n            </li>\n          ))}\n        </ul>\n      );\n      const Element = grid.value ? 'div' : 'li';\n      const itemChildren = (\n        <Element\n          {...(restAttrs as any)} // `li` element `onCopy` prop args is not same as `div`\n          class={classNames(\n            `${pre}-item`,\n            {\n              [`${pre}-item-no-flex`]: !isFlexMode(),\n            },\n            className,\n          )}\n        >\n          {itemLayout.value === 'vertical' && extra\n            ? [\n                <div class={`${pre}-item-main`} key=\"content\">\n                  {children}\n                  {actionsContent}\n                </div>,\n                <div class={`${pre}-item-extra`} key=\"extra\">\n                  {extra}\n                </div>,\n              ]\n            : [children, actionsContent, cloneElement(extra, { key: 'extra' })]}\n        </Element>\n      );\n      return grid.value ? (\n        <Col flex={1} style={props.colStyle}>\n          {itemChildren}\n        </Col>\n      ) : (\n        itemChildren\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/list/ItemMeta.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport PropTypes from '../_util/vue-types';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport const listItemMetaProps = () => ({\n  avatar: PropTypes.any,\n  description: PropTypes.any,\n  prefixCls: String,\n  title: PropTypes.any,\n});\n\nexport type ListItemMetaProps = Partial<ExtractPropTypes<ReturnType<typeof listItemMetaProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AListItemMeta',\n  props: listItemMetaProps(),\n  displayName: 'AListItemMeta', // 兼容历史函数式组件\n  __ANT_LIST_ITEM_META: true,\n  slots: Object as CustomSlotsType<{\n    avatar: any;\n    description: any;\n    title: any;\n    default: any;\n  }>,\n  setup(props, { slots }) {\n    const { prefixCls } = useConfigInject('list', props);\n    return () => {\n      const classString = `${prefixCls.value}-item-meta`;\n      const title = props.title ?? slots.title?.();\n      const description = props.description ?? slots.description?.();\n      const avatar = props.avatar ?? slots.avatar?.();\n      const content = (\n        <div class={`${prefixCls.value}-item-meta-content`}>\n          {title && <h4 class={`${prefixCls.value}-item-meta-title`}>{title}</h4>}\n          {description && (\n            <div class={`${prefixCls.value}-item-meta-description`}>{description}</div>\n          )}\n        </div>\n      );\n      return (\n        <div class={classString}>\n          {avatar && <div class={`${prefixCls.value}-item-meta-avatar`}>{avatar}</div>}\n          {(title || description) && content}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/list/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/list/demo/basic.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 1</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 2</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 3</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 4</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/list/demo/grid.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split ant-list-grid\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n        <div style=\"width: 25%; max-width: 25%;\">\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 1</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"width: 25%; max-width: 25%;\">\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 2</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"width: 25%; max-width: 25%;\">\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 3</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div style=\"width: 25%; max-width: 25%;\">\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 4</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/list/demo/resposive.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split ant-list-grid\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 1</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 2</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 3</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 4</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 5</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n        <div>\n          <div style=\"padding-left: 8px; padding-right: 8px; flex: 1 1 auto;\" class=\"ant-col\">\n            <div class=\"ant-list-item\">\n              <div class=\"ant-card  ant-card-bordered\">\n                <div class=\"ant-card-head\">\n                  <div class=\"ant-card-head-wrapper\">\n                    <div class=\"ant-card-head-title\">Title 6</div>\n                    <!---->\n                  </div>\n                  <!---->\n                </div>\n                <!---->\n                <div class=\"ant-card-body\">Card content</div>\n                <!---->\n              </div>\n              <!---->\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/list/demo/simple.vue correctly 1`] = `\n<h3 style=\"margin: 16px 0px;\">Small Size</h3>\n<div class=\"ant-list ant-list-sm ant-list-split ant-list-bordered ant-list-something-after-last-item\">\n  <!---->\n  <div class=\"ant-list-header\">\n    <div>Header</div>\n  </div>\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">Racing car sprays burning fuel into crowd.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Japanese princess to wed commoner.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Australian walks 100km after outback crash.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Man charged over missing wedding girl.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Los Angeles battles huge wildfires.\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"ant-list-footer\">\n    <div>Footer</div>\n  </div>\n  <!---->\n</div>\n<h3 style=\"margin-bottom: 16px;\">Default Size</h3>\n<div class=\"ant-list ant-list-split ant-list-bordered ant-list-something-after-last-item\">\n  <!---->\n  <div class=\"ant-list-header\">\n    <div>Header</div>\n  </div>\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">Racing car sprays burning fuel into crowd.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Japanese princess to wed commoner.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Australian walks 100km after outback crash.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Man charged over missing wedding girl.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Los Angeles battles huge wildfires.\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"ant-list-footer\">\n    <div>Footer</div>\n  </div>\n  <!---->\n</div>\n<h3 style=\"margin: 16px 0px;\">Large Size</h3>\n<div class=\"ant-list ant-list-lg ant-list-split ant-list-bordered ant-list-something-after-last-item\">\n  <!---->\n  <div class=\"ant-list-header\">\n    <div>Header</div>\n  </div>\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">Racing car sprays burning fuel into crowd.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Japanese princess to wed commoner.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Australian walks 100km after outback crash.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Man charged over missing wedding girl.\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">Los Angeles battles huge wildfires.\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"ant-list-footer\">\n    <div>Footer</div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/list/demo/vertical.vue correctly 1`] = `\n<div class=\"ant-list ant-list-vertical ant-list-lg ant-list-split ant-list-something-after-last-item\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-main\">\n            <div class=\"ant-list-item-meta\">\n              <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n              <div class=\"ant-list-item-meta-content\">\n                <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">ant design vue part 0</a></h4>\n                <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team.</div>\n              </div>\n            </div> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.<ul class=\"ant-list-item-action\">\n              <li><span><span role=\"img\" aria-label=\"star\" style=\"margin-right: 8px;\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"like\" style=\"margin-right: 8px;\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"message\" style=\"margin-right: 8px;\" class=\"anticon anticon-message\"><svg focusable=\"false\" class=\"\" data-icon=\"message\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z\"></path></svg></span> 2</span>\n                <!---->\n              </li>\n            </ul>\n          </div>\n          <div class=\"ant-list-item-extra\"><img width=\"272\" alt=\"logo\" src=\"https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png\"></div>\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-main\">\n            <div class=\"ant-list-item-meta\">\n              <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n              <div class=\"ant-list-item-meta-content\">\n                <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">ant design vue part 1</a></h4>\n                <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team.</div>\n              </div>\n            </div> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.<ul class=\"ant-list-item-action\">\n              <li><span><span role=\"img\" aria-label=\"star\" style=\"margin-right: 8px;\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"like\" style=\"margin-right: 8px;\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"message\" style=\"margin-right: 8px;\" class=\"anticon anticon-message\"><svg focusable=\"false\" class=\"\" data-icon=\"message\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z\"></path></svg></span> 2</span>\n                <!---->\n              </li>\n            </ul>\n          </div>\n          <div class=\"ant-list-item-extra\"><img width=\"272\" alt=\"logo\" src=\"https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png\"></div>\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-main\">\n            <div class=\"ant-list-item-meta\">\n              <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n              <div class=\"ant-list-item-meta-content\">\n                <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">ant design vue part 2</a></h4>\n                <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team.</div>\n              </div>\n            </div> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.<ul class=\"ant-list-item-action\">\n              <li><span><span role=\"img\" aria-label=\"star\" style=\"margin-right: 8px;\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"like\" style=\"margin-right: 8px;\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span> 156</span><em class=\"ant-list-item-action-split\"></em></li>\n              <li><span><span role=\"img\" aria-label=\"message\" style=\"margin-right: 8px;\" class=\"anticon anticon-message\"><svg focusable=\"false\" class=\"\" data-icon=\"message\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z\"></path></svg></span> 2</span>\n                <!---->\n              </li>\n            </ul>\n          </div>\n          <div class=\"ant-list-item-extra\"><img width=\"272\" alt=\"logo\" src=\"https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png\"></div>\n        </li>\n      </ul>\n    </div>\n  </div>\n  <div class=\"ant-list-footer\">\n    <div><b>ant design vue</b> footer part </div>\n  </div>\n  <div class=\"ant-list-pagination\">\n    <ul unselectable=\"on\" class=\"ant-pagination\">\n      <!---->\n      <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n      <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n      <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n      <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n      <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n      <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n      <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n          <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n        </a></li>\n      <li title=\"8\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-8\"><a rel=\"nofollow\">8</a></li>\n      <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n      <!---->\n    </ul>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/list/__tests__/__snapshots__/empty.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`List renders empty list 1`] = `\n<div class=\"ant-list ant-list-split\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <div class=\"ant-list-empty-text\">\n        <div class=\"ant-empty ant-empty-normal\">\n          <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                  <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                  <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                </g>\n              </g>\n            </svg></div>\n          <p class=\"ant-empty-description\">No data</p>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/list/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('list', { skip: ['infinite-virtualized-load', 'infinite-load', 'loadmore'] });\n"
  },
  {
    "path": "components/list/__tests__/empty.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport List from '..';\n\ndescribe('List', () => {\n  it('renders empty list', () => {\n    const wrapper = mount({\n      render() {\n        return <List dataSource={[]} renderItem={() => <List.Item />} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/list/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport List from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('List', () => {\n  mountTest(List);\n  mountTest(List.Item);\n  it('locale not passed to internal div', async () => {\n    const locale = { emptyText: 'Custom text' };\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <List\n              dataSource={[]}\n              renderItem={({ item }) => <List.Item>{item}</List.Item>}\n              locale={locale}\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.props().locale).toBe(undefined);\n    });\n  });\n});\n"
  },
  {
    "path": "components/list/__tests__/loading.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport List from '..';\nimport { LoadingOutlined } from '@ant-design/icons-vue';\n\ndescribe('List', () => {\n  it('renders empty loading', () => {\n    const loading = {\n      spinning: true,\n    };\n    const wrapper = mount({\n      render() {\n        return <List loading={loading} dataSource={[]} renderItem={() => <List.Item />} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-list-empty-text')).toHaveLength(0);\n  });\n\n  it('renders object loading', () => {\n    const loading = {\n      spinning: true,\n    };\n    const wrapper = mount({\n      render() {\n        return <List loading={loading} dataSource={[1]} renderItem={() => <List.Item />} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-spin-spinning')).toHaveLength(1);\n  });\n\n  it('renders object loading with indicator', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <List\n            loading={{\n              spinning: true,\n              indicator: <LoadingOutlined style={{ fontSize: '24px' }} />,\n            }}\n            dataSource={[1]}\n            renderItem={() => <List.Item />}\n          />\n        );\n      },\n    });\n    expect(wrapper.findAll('.anticon-loading')).toHaveLength(1);\n  });\n});\n"
  },
  {
    "path": "components/list/contextKey.ts",
    "content": "import type { InjectionKey, Ref } from 'vue';\n\nexport interface ListContext {\n  grid?: Ref<any>;\n  itemLayout?: Ref<string>;\n}\n\nexport const ListContextKey: InjectionKey<ListContext> = Symbol('ListContextKey');\n"
  },
  {
    "path": "components/list/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n基础列表。\n\n## en-US\n\nBasic list.\n\n</docs>\n\n<template>\n  <a-list item-layout=\"horizontal\" :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-list-item-meta\n          description=\"Ant Design, a design language for background applications, is refined by Ant UED Team\"\n        >\n          <template #title>\n            <a href=\"https://www.antdv.com/\">{{ item.title }}</a>\n          </template>\n          <template #avatar>\n            <a-avatar src=\"https://joeschmoe.io/api/v1/random\" />\n          </template>\n        </a-list-item-meta>\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\ninterface DataItem {\n  title: string;\n}\nconst data: DataItem[] = [\n  {\n    title: 'Ant Design Title 1',\n  },\n  {\n    title: 'Ant Design Title 2',\n  },\n  {\n    title: 'Ant Design Title 3',\n  },\n  {\n    title: 'Ant Design Title 4',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/list/demo/grid.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 栅格列表\n  en-US: Grid\n---\n\n## zh-CN\n\n可以通过设置 `List` 的 `grid` 属性来实现栅格列表，`column` 可设置期望显示的列数。\n\n## en-US\n\nCreating a grid list by setting the `grid` property of List\n\n</docs>\n\n<template>\n  <a-list :grid=\"{ gutter: 16, column: 4 }\" :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-card :title=\"item.title\">Card content</a-card>\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\ninterface DataItem {\n  title: string;\n}\nconst data: DataItem[] = [\n  {\n    title: 'Title 1',\n  },\n  {\n    title: 'Title 2',\n  },\n  {\n    title: 'Title 3',\n  },\n  {\n    title: 'Title 4',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/list/demo/index.vue",
    "content": "<template>\n  <basic />\n  <simple />\n  <loadmore />\n  <vertical />\n  <grid />\n  <resposive />\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Simple from './simple.vue';\nimport Loadmore from './loadmore.vue';\nimport Vertical from './vertical.vue';\nimport Grid from './grid.vue';\nimport Resposive from './resposive.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Simple,\n    Loadmore,\n    Vertical,\n    Grid,\n    Resposive,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/list/demo/loadmore.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 加载更多\n  en-US: Load more\n---\n\n## zh-CN\n\n可通过 `loadMore` 属性实现加载更多功能。\n\n## en-US\n\nLoad more list with `loadMore` slot.\n\n</docs>\n\n<template>\n  <a-list\n    class=\"demo-loadmore-list\"\n    :loading=\"initLoading\"\n    item-layout=\"horizontal\"\n    :data-source=\"list\"\n  >\n    <template #loadMore>\n      <div\n        v-if=\"!initLoading && !loading\"\n        :style=\"{ textAlign: 'center', marginTop: '12px', height: '32px', lineHeight: '32px' }\"\n      >\n        <a-button @click=\"onLoadMore\">loading more</a-button>\n      </div>\n    </template>\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <template #actions>\n          <a key=\"list-loadmore-edit\">edit</a>\n          <a key=\"list-loadmore-more\">more</a>\n        </template>\n        <a-skeleton avatar :title=\"false\" :loading=\"!!item.loading\" active>\n          <a-list-item-meta\n            description=\"Ant Design, a design language for background applications, is refined by Ant UED Team\"\n          >\n            <template #title>\n              <a href=\"https://www.antdv.com/\">{{ item.name.last }}</a>\n            </template>\n            <template #avatar>\n              <a-avatar :src=\"item.picture.large\" />\n            </template>\n          </a-list-item-meta>\n          <div>content</div>\n        </a-skeleton>\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref, nextTick } from 'vue';\nconst count = 3;\nconst fakeDataUrl = `https://randomuser.me/api/?results=${count}&inc=name,gender,email,nat,picture&noinfo`;\n\nconst initLoading = ref(true);\nconst loading = ref(false);\nconst data = ref([]);\nconst list = ref([]);\nonMounted(() => {\n  fetch(fakeDataUrl)\n    .then(res => res.json())\n    .then(res => {\n      initLoading.value = false;\n      data.value = res.results;\n      list.value = res.results;\n    });\n});\n\nconst onLoadMore = () => {\n  loading.value = true;\n  list.value = data.value.concat(\n    [...new Array(count)].map(() => ({ loading: true, name: {}, picture: {} })),\n  );\n  fetch(fakeDataUrl)\n    .then(res => res.json())\n    .then(res => {\n      const newData = data.value.concat(res.results);\n      loading.value = false;\n      data.value = newData;\n      list.value = newData;\n      nextTick(() => {\n        // Resetting window's offsetTop so as to display react-virtualized demo underfloor.\n        // In real scene, you can using public method of react-virtualized:\n        // https://stackoverflow.com/questions/46700726/how-to-use-public-method-updateposition-of-react-virtualized\n        window.dispatchEvent(new Event('resize'));\n      });\n    });\n};\n</script>\n<style scoped>\n.demo-loadmore-list {\n  min-height: 350px;\n}\n</style>\n"
  },
  {
    "path": "components/list/demo/resposive.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 响应式的栅格列表\n  en-US: Responsive grid list\n---\n\n## zh-CN\n\n响应式的栅格列表。尺寸与 [Layout Grid](https://www.antdv.com/components/grid-cn/#col) 保持一致。\n\n## en-US\n\nResponsive grid list. The size property is as same as [Layout Grid](https://www.antdv.com/components/grid/#col).\n\n</docs>\n\n<template>\n  <a-list :grid=\"{ gutter: 16, xs: 1, sm: 2, md: 4, lg: 4, xl: 6, xxl: 3 }\" :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-card :title=\"item.title\">Card content</a-card>\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\ninterface DataItem {\n  title: string;\n}\nconst data: DataItem[] = [\n  {\n    title: 'Title 1',\n  },\n  {\n    title: 'Title 2',\n  },\n  {\n    title: 'Title 3',\n  },\n  {\n    title: 'Title 4',\n  },\n  {\n    title: 'Title 5',\n  },\n  {\n    title: 'Title 6',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/list/demo/simple.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 简单列表\n  en-US: Simple list\n---\n\n## zh-CN\n\n列表拥有大、中、小三种尺寸。\n通过设置 `size` 为 `large` `small` 分别把按钮设为大、小尺寸。若不设置 `size`，则尺寸为中。\n可通过设置 `header` 和 `footer`，来自定义列表头部和尾部。\n\n## en-US\n\nAnt Design supports a default list size as well as a large and small size.\nIf a large or small list is desired, set the size property to either large or small respectively. Omit the size property for a list with the default size.\nCustomizing the header and footer of list by setting `header` and `footer` property.\n\n</docs>\n\n<template>\n  <h3 :style=\"{ margin: '16px 0' }\">Small Size</h3>\n  <a-list size=\"small\" bordered :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>{{ item }}</a-list-item>\n    </template>\n    <template #header>\n      <div>Header</div>\n    </template>\n    <template #footer>\n      <div>Footer</div>\n    </template>\n  </a-list>\n  <h3 :style=\"{ marginBottom: '16px' }\">Default Size</h3>\n  <a-list bordered :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>{{ item }}</a-list-item>\n    </template>\n    <template #header>\n      <div>Header</div>\n    </template>\n    <template #footer>\n      <div>Footer</div>\n    </template>\n  </a-list>\n  <h3 :style=\"{ margin: '16px 0' }\">Large Size</h3>\n  <a-list size=\"large\" bordered :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>{{ item }}</a-list-item>\n    </template>\n    <template #header>\n      <div>Header</div>\n    </template>\n    <template #footer>\n      <div>Footer</div>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\nconst data: string[] = [\n  'Racing car sprays burning fuel into crowd.',\n  'Japanese princess to wed commoner.',\n  'Australian walks 100km after outback crash.',\n  'Man charged over missing wedding girl.',\n  'Los Angeles battles huge wildfires.',\n];\n</script>\n"
  },
  {
    "path": "components/list/demo/vertical.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 竖排列表样式\n  en-US: Vertical\n---\n\n## zh-CN\n\n通过设置 `itemLayout` 属性为 `vertical` 可实现竖排列表样式。\n\n## en-US\n\nSetting `itemLayout` property with `vertical` to create a vertical list.\n\n</docs>\n\n<template>\n  <a-list item-layout=\"vertical\" size=\"large\" :pagination=\"pagination\" :data-source=\"listData\">\n    <template #footer>\n      <div>\n        <b>ant design vue</b>\n        footer part\n      </div>\n    </template>\n    <template #renderItem=\"{ item }\">\n      <a-list-item key=\"item.title\">\n        <template #actions>\n          <span v-for=\"{ icon, text } in actions\" :key=\"icon\">\n            <component :is=\"icon\" style=\"margin-right: 8px\" />\n            {{ text }}\n          </span>\n        </template>\n        <template #extra>\n          <img\n            width=\"272\"\n            alt=\"logo\"\n            src=\"https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png\"\n          />\n        </template>\n        <a-list-item-meta :description=\"item.description\">\n          <template #title>\n            <a :href=\"item.href\">{{ item.title }}</a>\n          </template>\n          <template #avatar><a-avatar :src=\"item.avatar\" /></template>\n        </a-list-item-meta>\n        {{ item.content }}\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\nimport { StarOutlined, LikeOutlined, MessageOutlined } from '@ant-design/icons-vue';\nconst listData: Record<string, string>[] = [];\n\nfor (let i = 0; i < 23; i++) {\n  listData.push({\n    href: 'https://www.antdv.com/',\n    title: `ant design vue part ${i}`,\n    avatar: 'https://joeschmoe.io/api/v1/random',\n    description:\n      'Ant Design, a design language for background applications, is refined by Ant UED Team.',\n    content:\n      'We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',\n  });\n}\n\nconst pagination = {\n  onChange: (page: number) => {\n    console.log(page);\n  },\n  pageSize: 3,\n};\nconst actions: Record<string, any>[] = [\n  { icon: StarOutlined, text: '156' },\n  { icon: LikeOutlined, text: '156' },\n  { icon: MessageOutlined, text: '2' },\n];\n</script>\n"
  },
  {
    "path": "components/list/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: List\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*EYuhSpw1iSwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tBzwQ7raKX8AAAAAAAAAAAAADrJ8AQ/original\n---\n\nSimple List.\n\n## When To Use\n\nA list can be used to display content related to a single subject. The content can consist of multiple elements of varying type and size.\n\n## API\n\n### List\n\n| Property | Description | Type | Default | Version |  |\n| --- | --- | --- | --- | --- | --- |\n| bordered | Toggles rendering of the border around the list | boolean | false |  |  |\n| dataSource | dataSource array for list | any\\[] | - | 3.20.1 |  |\n| footer | List footer renderer | string\\|slot | - |  |  |\n| grid | The grid type of list. You can set grid to something like {gutter: 16, column: 4} | object | - |  |  |\n| header | List header renderer | string\\|slot | - |  |  |\n| itemLayout | The layout of list, default is `horizontal`, If a vertical list is desired, set the itemLayout property to `vertical` | string | - |  |  |\n| loading | Shows a loading indicator while the contents of the list are being fetched | boolean\\|[object](https://www.antdv.com/components/spin/#api) | false |  |  |\n| loadMore | Shows a load more content | string\\|slot | - |  |  |\n| locale | i18n text including empty text | object | emptyText: 'No Data' <br> |  |  |\n| pagination | Pagination [config](https://www.antdv.com/components/pagination/#api), hide it by setting it to false | boolean \\| object | false |  |  |\n| renderItem | Custom item renderer, #renderItem=\"{item, index}\" | ({item, index}) => vNode |  | - |  |\n| rowKey | Item's unique key, could be a string or function that returns a string | string\\|Function(record):string | `key` |  |  |\n| split | Toggles rendering of the split under the list item | boolean | true |  |  |\n\n### pagination\n\nProperties for pagination.\n\n| Property | Description                          | Type                        | Default  |\n| -------- | ------------------------------------ | --------------------------- | -------- |\n| position | specify the position of `Pagination` | 'top' \\| 'bottom' \\| 'both' | 'bottom' |\n\nMore about pagination, please check [`Pagination`](https://www.antdv.com/components/pagination/#api).\n\n### List grid props\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| column | column of grid | number oneOf [ 1, 2, 3, 4, 6, 8, 12, 24] | - |  |\n| gutter | spacing between grid | number | 0 |  |\n| size | Size of list | `default` \\| `middle` \\| `small` | `default` |  |\n| xxxl | `≥2000px` column of grid | number | - | 3.0 |\n| xs | `<576px` column of grid | number | - |  |\n| sm | `≥576px` column of grid | number | - |  |\n| md | `≥768px` column of grid | number | - |  |\n| lg | `≥992px` column of grid | number | - |  |\n| xl | `≥1200px` column of grid | number | - |  |\n| xxl | `≥1600px` column of grid | number | - |  |\n\n### List.Item\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| actions | The actions content of list item. If `itemLayout` is `vertical`, shows the content on bottom, otherwise shows content on the far right. | vNode[] \\|slot | - |  |\n| extra | The extra content of list item. If `itemLayout` is `vertical`, shows the content on right, otherwise shows content on the far right. | string\\|slot | - |  |\n\n### List.Item.Meta\n\n| Property    | Description                  | Type         | Default |\n| ----------- | ---------------------------- | ------------ | ------- |\n| avatar      | The avatar of list item      | slot         | -       |\n| description | The description of list item | string\\|slot | -       |\n| title       | The title of list item       | string\\|slot | -       |\n"
  },
  {
    "path": "components/list/index.tsx",
    "content": "import type { App, Plugin, ExtractPropTypes, PropType, HTMLAttributes } from 'vue';\nimport { provide, defineComponent, ref, watch, computed, toRef } from 'vue';\nimport classNames from '../_util/classNames';\n\nimport type { SpinProps } from '../spin';\nimport Spin from '../spin';\nimport type { PaginationConfig } from '../pagination';\nimport Pagination from '../pagination';\nimport { Row } from '../grid';\n\nimport Item from './Item';\nimport { flattenChildren } from '../_util/props-util';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport {\n  arrayType,\n  someType,\n  booleanType,\n  objectType,\n  vNodeType,\n  functionType,\n} from '../_util/type';\nimport type { CustomSlotsType, Key } from '../_util/type';\nimport ItemMeta from './ItemMeta';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\nimport type { Breakpoint } from '../_util/responsiveObserve';\nimport { responsiveArray } from '../_util/responsiveObserve';\nimport eagerComputed from '../_util/eagerComputed';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport type { ListItemProps } from './Item';\nexport type { ListItemMetaProps } from './ItemMeta';\n\nexport type ColumnType = 'gutter' | 'column' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';\n\nexport type ColumnCount = number;\nexport interface ListGridType {\n  gutter?: number;\n  column?: ColumnCount;\n  xs?: ColumnCount;\n  sm?: ColumnCount;\n  md?: ColumnCount;\n  lg?: ColumnCount;\n  xl?: ColumnCount;\n  xxl?: ColumnCount;\n  xxxl?: ColumnCount;\n}\n\nexport type ListSize = 'small' | 'default' | 'large';\nexport type ListItemLayout = 'horizontal' | 'vertical';\n\nexport const listProps = () => ({\n  bordered: booleanType(),\n  dataSource: arrayType(),\n  extra: vNodeType(),\n  grid: objectType<ListGridType>(),\n  itemLayout: String as PropType<ListItemLayout>,\n  loading: someType<boolean | (SpinProps & HTMLAttributes)>([Boolean, Object]),\n  loadMore: vNodeType(),\n  pagination: someType<false | PaginationConfig>([Boolean, Object]),\n  prefixCls: String,\n  rowKey: someType<Key | ((item: any) => Key)>([String, Number, Function]),\n  renderItem: functionType<(opt: { item: any; index: number }) => any>(),\n  size: String as PropType<ListSize>,\n  split: booleanType(),\n  header: vNodeType(),\n  footer: vNodeType(),\n  locale: objectType<ListLocale>(),\n});\n\nexport interface ListLocale {\n  emptyText: any;\n}\n\nexport type ListProps = Partial<ExtractPropTypes<ReturnType<typeof listProps>>>;\n\nimport { ListContextKey } from './contextKey';\n\nconst List = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AList',\n  inheritAttrs: false,\n  Item,\n  props: initDefaultProps(listProps(), {\n    dataSource: [],\n    bordered: false,\n    split: true,\n    loading: false,\n    pagination: false,\n  }),\n  slots: Object as CustomSlotsType<{\n    extra: any;\n    loadMore: any;\n    renderItem: { item: any; index: number };\n    header: any;\n    footer: any;\n    default: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    provide(ListContextKey, {\n      grid: toRef(props, 'grid'),\n      itemLayout: toRef(props, 'itemLayout'),\n    });\n    const defaultPaginationProps = {\n      current: 1,\n      total: 0,\n    };\n    const { prefixCls, direction, renderEmpty } = useConfigInject('list', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const paginationObj = computed(() =>\n      props.pagination && typeof props.pagination === 'object' ? props.pagination : {},\n    );\n    const paginationCurrent = ref(paginationObj.value.defaultCurrent ?? 1);\n    const paginationSize = ref(paginationObj.value.defaultPageSize ?? 10);\n    watch(paginationObj, () => {\n      if ('current' in paginationObj.value) {\n        paginationCurrent.value = paginationObj.value.current;\n      }\n      if ('pageSize' in paginationObj.value) {\n        paginationSize.value = paginationObj.value.pageSize;\n      }\n    });\n\n    const listItemsKeys: Key[] = [];\n\n    const triggerPaginationEvent = (eventName: string) => (page: number, pageSize: number) => {\n      paginationCurrent.value = page;\n      paginationSize.value = pageSize;\n      if (paginationObj.value[eventName]) {\n        paginationObj.value[eventName](page, pageSize);\n      }\n    };\n\n    const onPaginationChange = triggerPaginationEvent('onChange');\n\n    const onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n\n    const loadingProp = computed(() => {\n      if (typeof props.loading === 'boolean') {\n        return {\n          spinning: props.loading,\n        };\n      } else {\n        return props.loading;\n      }\n    });\n\n    const isLoading = computed(() => loadingProp.value && loadingProp.value.spinning);\n\n    const sizeCls = computed(() => {\n      let size = '';\n      switch (props.size) {\n        case 'large':\n          size = 'lg';\n          break;\n        case 'small':\n          size = 'sm';\n          break;\n        default:\n          break;\n      }\n      return size;\n    });\n\n    const classObj = computed(() => ({\n      [`${prefixCls.value}`]: true,\n      [`${prefixCls.value}-vertical`]: props.itemLayout === 'vertical',\n      [`${prefixCls.value}-${sizeCls.value}`]: sizeCls.value,\n      [`${prefixCls.value}-split`]: props.split,\n      [`${prefixCls.value}-bordered`]: props.bordered,\n      [`${prefixCls.value}-loading`]: isLoading.value,\n      [`${prefixCls.value}-grid`]: !!props.grid,\n      [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n    }));\n\n    const paginationProps = computed(() => {\n      const pp = {\n        ...defaultPaginationProps,\n        total: props.dataSource.length,\n        current: paginationCurrent.value,\n        pageSize: paginationSize.value,\n        ...((props.pagination as PaginationConfig) || {}),\n      };\n\n      const largestPage = Math.ceil(pp.total / pp.pageSize);\n      if (pp.current > largestPage) {\n        pp.current = largestPage;\n      }\n      return pp;\n    });\n\n    const splitDataSource = computed(() => {\n      let dd = [...props.dataSource];\n      if (props.pagination) {\n        if (\n          props.dataSource.length >\n          (paginationProps.value.current - 1) * paginationProps.value.pageSize\n        ) {\n          dd = [...props.dataSource].splice(\n            (paginationProps.value.current - 1) * paginationProps.value.pageSize,\n            paginationProps.value.pageSize,\n          );\n        }\n      }\n      return dd;\n    });\n\n    const screens = useBreakpoint();\n\n    const currentBreakpoint = eagerComputed(() => {\n      for (let i = 0; i < responsiveArray.length; i += 1) {\n        const breakpoint: Breakpoint = responsiveArray[i];\n        if (screens.value[breakpoint]) {\n          return breakpoint;\n        }\n      }\n      return undefined;\n    });\n\n    const colStyle = computed(() => {\n      if (!props.grid) {\n        return undefined;\n      }\n      const columnCount =\n        currentBreakpoint.value && props.grid[currentBreakpoint.value]\n          ? props.grid[currentBreakpoint.value]\n          : props.grid.column;\n      if (columnCount) {\n        return {\n          width: `${100 / columnCount}%`,\n          maxWidth: `${100 / columnCount}%`,\n        };\n      }\n      return undefined;\n    });\n\n    const renderInnerItem = (item: any, index: number) => {\n      const renderItem = props.renderItem ?? slots.renderItem;\n      if (!renderItem) return null;\n\n      let key;\n      const rowKeyType = typeof props.rowKey;\n      if (rowKeyType === 'function') {\n        key = (props.rowKey as any)(item);\n      } else if (rowKeyType === 'string' || rowKeyType === 'number') {\n        key = item[props.rowKey as any];\n      } else {\n        key = item.key;\n      }\n\n      if (!key) {\n        key = `list-item-${index}`;\n      }\n\n      listItemsKeys[index] = key;\n\n      return renderItem({ item, index });\n    };\n\n    return () => {\n      const loadMore = props.loadMore ?? slots.loadMore?.();\n      const footer = props.footer ?? slots.footer?.();\n      const header = props.header ?? slots.header?.();\n      const children = flattenChildren(slots.default?.());\n      const isSomethingAfterLastItem = !!(loadMore || props.pagination || footer);\n      const classString = classNames(\n        {\n          ...classObj.value,\n          [`${prefixCls.value}-something-after-last-item`]: isSomethingAfterLastItem,\n        },\n        attrs.class,\n        hashId.value,\n      );\n      const paginationContent = props.pagination ? (\n        <div class={`${prefixCls.value}-pagination`}>\n          <Pagination\n            {...paginationProps.value}\n            onChange={onPaginationChange}\n            onShowSizeChange={onPaginationShowSizeChange}\n          />\n        </div>\n      ) : null;\n\n      let childrenContent = isLoading.value && <div style={{ minHeight: '53px' }} />;\n      if (splitDataSource.value.length > 0) {\n        listItemsKeys.length = 0;\n        const items = splitDataSource.value.map((item: any, index: number) =>\n          renderInnerItem(item, index),\n        );\n        const childrenList = items.map((child: any, index) => (\n          <div key={listItemsKeys[index]} style={colStyle.value}>\n            {child}\n          </div>\n        ));\n        childrenContent = props.grid ? (\n          <Row gutter={props.grid.gutter}>{childrenList}</Row>\n        ) : (\n          <ul class={`${prefixCls.value}-items`}>{items}</ul>\n        );\n      } else if (!children.length && !isLoading.value) {\n        childrenContent = (\n          <div class={`${prefixCls.value}-empty-text`}>\n            {props.locale?.emptyText || renderEmpty('List')}\n          </div>\n        );\n      }\n\n      const paginationPosition = paginationProps.value.position || 'bottom';\n      return wrapSSR(\n        <div {...attrs} class={classString}>\n          {(paginationPosition === 'top' || paginationPosition === 'both') && paginationContent}\n          {header && <div class={`${prefixCls.value}-header`}>{header}</div>}\n          <Spin {...loadingProp.value}>\n            {childrenContent}\n            {children}\n          </Spin>\n          {footer && <div class={`${prefixCls.value}-footer`}>{footer}</div>}\n          {loadMore ||\n            ((paginationPosition === 'bottom' || paginationPosition === 'both') &&\n              paginationContent)}\n        </div>,\n      );\n    };\n  },\n});\n\n/* istanbul ignore next */\nList.install = function (app: App) {\n  app.component(List.name, List);\n  app.component(List.Item.name, List.Item);\n  app.component(List.Item.Meta.name, List.Item.Meta);\n  return app;\n};\n\nexport { ItemMeta as ListItemMeta, Item as ListItem };\n\nexport default List as typeof List &\n  Plugin & {\n    readonly Item: typeof Item & {\n      readonly Meta: typeof ItemMeta;\n    };\n  };\n"
  },
  {
    "path": "components/list/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: List\nsubtitle: 列表\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*EYuhSpw1iSwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tBzwQ7raKX8AAAAAAAAAAAAADrJ8AQ/original\n---\n\n通用列表。\n\n## 何时使用\n\n最基础的列表展示，可承载文字、列表、图片、段落，常用于后台数据展示页面。\n\n## API\n\n### List\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| bordered | 是否展示边框 | boolean | false |  |  |\n| dataSource | 列表数据源 | any\\[] | - | 1.5.0 |  |\n| footer | 列表底部 | string\\|slot | - |  |  |\n| grid | 列表栅格配置 | object | - |  |  |\n| header | 列表头部 | string\\|slot | - |  |  |\n| itemLayout | 设置 `List.Item` 布局, 设置成 `vertical` 则竖直样式显示, 默认横排 | string | - |  |  |\n| loading | 当卡片内容还在加载中时，可以用 `loading` 展示一个占位 | boolean\\|[object](https://www.antdv.com/components/spin-cn/#api) | false |  |  |\n| loadMore | 加载更多 | string\\|slot | - |  |  |\n| locale | 默认文案设置，目前包括空数据文案 | object | emptyText: '暂无数据' |  |  |\n| pagination | 对应的 `pagination` [配置](https://www.antdv.com/components/pagination-cn/#api), 设置 `false` 不显示 | boolean\\|object | false |  |  |\n| renderItem | 自定义`Item`函数，也可使用 #renderItem=\"{item, index}\" | ({item, index}) => vNode |  | - |  |\n| rowKey | 各项 key 的取值，可以是字符串或一个函数 | item => string\\|number |  |  |  |\n| size | list 的尺寸 | `default` \\| `middle` \\| `small` | `default` |  |  |\n| split | 是否展示分割线 | boolean | true |  |  |\n\n### pagination\n\n分页的配置项。\n\n| 参数     | 说明               | 类型                        | 默认值   |\n| -------- | ------------------ | --------------------------- | -------- |\n| position | 指定分页显示的位置 | 'top' \\| 'bottom' \\| 'both' | 'bottom' |\n\n更多配置项，请查看 [`Pagination`](https://www.antdv.com/components/pagination-cn/#api)。\n\n### List grid props\n\n| 参数   | 说明                 | 类型                                     | 默认值 | 版本 |\n| ------ | -------------------- | ---------------------------------------- | ------ | ---- |\n| column | 列数                 | number oneOf [ 1, 2, 3, 4, 6, 8, 12, 24] | -      |      |\n| gutter | 栅格间隔             | number                                   | 0      |      |\n| xxxl   | `≥2000px` 展示的列数 | number                                   | -      | 3.0  |\n| xs     | `<576px` 展示的列数  | number                                   | -      |      |\n| sm     | `≥576px` 展示的列数  | number                                   | -      |      |\n| md     | `≥768px` 展示的列数  | number                                   | -      |      |\n| lg     | `≥992px` 展示的列数  | number                                   | -      |      |\n| xl     | `≥1200px` 展示的列数 | number                                   | -      |      |\n| xxl    | `≥1600px` 展示的列数 | number                                   | -      |      |\n\n### List.Item\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| actions | 列表操作组，根据 `itemLayout` 的不同, 位置在卡片底部或者最右侧 | vNode[] \\| slot | - |\n| extra | 额外内容, 通常用在 `itemLayout` 为 `vertical` 的情况下, 展示右侧内容; `horizontal` 展示在列表元素最右侧 | string\\|slot | - |  |\n\n### List.Item.Meta\n\n| 参数        | 说明               | 类型         | 默认值 |\n| ----------- | ------------------ | ------------ | ------ |\n| avatar      | 列表元素的图标     | slot         | -      |\n| description | 列表元素的描述内容 | string\\|slot | -      |\n| title       | 列表元素的标题     | string\\|slot | -      |\n"
  },
  {
    "path": "components/list/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {\n  contentWidth: number;\n}\n\ninterface ListToken extends FullToken<'List'> {\n  listBorderedCls: string;\n  minHeight: number;\n  listItemPaddingLG: string;\n  listItemPaddingSM: string;\n  listItemPadding: string;\n}\n\nconst genBorderedStyle = (token: ListToken): CSSObject => {\n  const {\n    listBorderedCls,\n    componentCls,\n    paddingLG,\n    margin,\n    padding,\n    listItemPaddingSM,\n    marginLG,\n    borderRadiusLG,\n  } = token;\n  return {\n    [`${listBorderedCls}`]: {\n      border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n      borderRadius: borderRadiusLG,\n      [`${componentCls}-header,${componentCls}-footer,${componentCls}-item`]: {\n        paddingInline: paddingLG,\n      },\n\n      [`${componentCls}-pagination`]: {\n        margin: `${margin}px ${marginLG}px`,\n      },\n    },\n    [`${listBorderedCls}${componentCls}-sm`]: {\n      [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: {\n        padding: listItemPaddingSM,\n      },\n    },\n\n    [`${listBorderedCls}${componentCls}-lg`]: {\n      [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: {\n        padding: `${padding}px ${paddingLG}px`,\n      },\n    },\n  };\n};\nconst genResponsiveStyle = (token: ListToken): CSSObject => {\n  const { componentCls, screenSM, screenMD, marginLG, marginSM, margin } = token;\n  return {\n    [`@media screen and (max-width:${screenMD})`]: {\n      [`${componentCls}`]: {\n        [`${componentCls}-item`]: {\n          [`${componentCls}-item-action`]: {\n            marginInlineStart: marginLG,\n          },\n        },\n      },\n\n      [`${componentCls}-vertical`]: {\n        [`${componentCls}-item`]: {\n          [`${componentCls}-item-extra`]: {\n            marginInlineStart: marginLG,\n          },\n        },\n      },\n    },\n\n    [`@media screen and (max-width: ${screenSM})`]: {\n      [`${componentCls}`]: {\n        [`${componentCls}-item`]: {\n          flexWrap: 'wrap',\n\n          [`${componentCls}-action`]: {\n            marginInlineStart: marginSM,\n          },\n        },\n      },\n\n      [`${componentCls}-vertical`]: {\n        [`${componentCls}-item`]: {\n          flexWrap: 'wrap-reverse',\n\n          [`${componentCls}-item-main`]: {\n            minWidth: token.contentWidth,\n          },\n\n          [`${componentCls}-item-extra`]: {\n            margin: `auto auto ${margin}px`,\n          },\n        },\n      },\n    },\n  };\n};\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<ListToken> = token => {\n  const {\n    componentCls,\n    antCls,\n    controlHeight,\n    minHeight,\n    paddingSM,\n    marginLG,\n    padding,\n    listItemPadding,\n    colorPrimary,\n    listItemPaddingSM,\n    listItemPaddingLG,\n    paddingXS,\n    margin,\n    colorText,\n    colorTextDescription,\n    motionDurationSlow,\n    lineWidth,\n  } = token;\n\n  return {\n    [`${componentCls}`]: {\n      ...resetComponent(token),\n      position: 'relative',\n      '*': {\n        outline: 'none',\n      },\n      [`${componentCls}-header, ${componentCls}-footer`]: {\n        background: 'transparent',\n        paddingBlock: paddingSM,\n      },\n      [`${componentCls}-pagination`]: {\n        marginBlockStart: marginLG,\n        textAlign: 'end',\n\n        // https://github.com/ant-design/ant-design/issues/20037\n        [`${antCls}-pagination-options`]: {\n          textAlign: 'start',\n        },\n      },\n\n      [`${componentCls}-spin`]: {\n        minHeight,\n        textAlign: 'center',\n      },\n\n      [`${componentCls}-items`]: {\n        margin: 0,\n        padding: 0,\n        listStyle: 'none',\n      },\n\n      [`${componentCls}-item`]: {\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'space-between',\n        padding: listItemPadding,\n        color: colorText,\n\n        [`${componentCls}-item-meta`]: {\n          display: 'flex',\n          flex: 1,\n          alignItems: 'flex-start',\n          maxWidth: '100%',\n\n          [`${componentCls}-item-meta-avatar`]: {\n            marginInlineEnd: padding,\n          },\n\n          [`${componentCls}-item-meta-content`]: {\n            flex: '1 0',\n            width: 0,\n            color: colorText,\n          },\n\n          [`${componentCls}-item-meta-title`]: {\n            marginBottom: token.marginXXS,\n            color: colorText,\n            fontSize: token.fontSize,\n            lineHeight: token.lineHeight,\n\n            '> a': {\n              color: colorText,\n              transition: `all ${motionDurationSlow}`,\n\n              [`&:hover`]: {\n                color: colorPrimary,\n              },\n            },\n          },\n\n          [`${componentCls}-item-meta-description`]: {\n            color: colorTextDescription,\n            fontSize: token.fontSize,\n            lineHeight: token.lineHeight,\n          },\n        },\n\n        [`${componentCls}-item-action`]: {\n          flex: '0 0 auto',\n          marginInlineStart: token.marginXXL,\n          padding: 0,\n          fontSize: 0,\n          listStyle: 'none',\n\n          [`& > li`]: {\n            position: 'relative',\n            display: 'inline-block',\n            padding: `0 ${paddingXS}px`,\n            color: colorTextDescription,\n            fontSize: token.fontSize,\n            lineHeight: token.lineHeight,\n            textAlign: 'center',\n\n            [`&:first-child`]: {\n              paddingInlineStart: 0,\n            },\n          },\n\n          [`${componentCls}-item-action-split`]: {\n            position: 'absolute',\n            insetBlockStart: '50%',\n            insetInlineEnd: 0,\n            width: lineWidth,\n            height: Math.ceil(token.fontSize * token.lineHeight) - token.marginXXS * 2,\n            transform: 'translateY(-50%)',\n            backgroundColor: token.colorSplit,\n          },\n        },\n      },\n\n      [`${componentCls}-empty`]: {\n        padding: `${padding}px 0`,\n        color: colorTextDescription,\n        fontSize: token.fontSizeSM,\n        textAlign: 'center',\n      },\n\n      [`${componentCls}-empty-text`]: {\n        padding,\n        color: token.colorTextDisabled,\n        fontSize: token.fontSize,\n        textAlign: 'center',\n      },\n\n      // ============================ without flex ============================\n      [`${componentCls}-item-no-flex`]: {\n        display: 'block',\n      },\n    },\n    [`${componentCls}-grid ${antCls}-col > ${componentCls}-item`]: {\n      display: 'block',\n      maxWidth: '100%',\n      marginBlockEnd: margin,\n      paddingBlock: 0,\n      borderBlockEnd: 'none',\n    },\n    [`${componentCls}-vertical ${componentCls}-item`]: {\n      alignItems: 'initial',\n\n      [`${componentCls}-item-main`]: {\n        display: 'block',\n        flex: 1,\n      },\n\n      [`${componentCls}-item-extra`]: {\n        marginInlineStart: marginLG,\n      },\n\n      [`${componentCls}-item-meta`]: {\n        marginBlockEnd: padding,\n\n        [`${componentCls}-item-meta-title`]: {\n          marginBlockEnd: paddingSM,\n          color: colorText,\n          fontSize: token.fontSizeLG,\n          lineHeight: token.lineHeightLG,\n        },\n      },\n\n      [`${componentCls}-item-action`]: {\n        marginBlockStart: padding,\n        marginInlineStart: 'auto',\n\n        '> li': {\n          padding: `0 ${padding}px`,\n\n          [`&:first-child`]: {\n            paddingInlineStart: 0,\n          },\n        },\n      },\n    },\n\n    [`${componentCls}-split ${componentCls}-item`]: {\n      borderBlockEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n\n      [`&:last-child`]: {\n        borderBlockEnd: 'none',\n      },\n    },\n\n    [`${componentCls}-split ${componentCls}-header`]: {\n      borderBlockEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n    },\n    [`${componentCls}-split${componentCls}-empty ${componentCls}-footer`]: {\n      borderTop: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n    },\n    [`${componentCls}-loading ${componentCls}-spin-nested-loading`]: {\n      minHeight: controlHeight,\n    },\n    [`${componentCls}-split${componentCls}-something-after-last-item ${antCls}-spin-container > ${componentCls}-items > ${componentCls}-item:last-child`]:\n      {\n        borderBlockEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n      },\n    [`${componentCls}-lg ${componentCls}-item`]: {\n      padding: listItemPaddingLG,\n    },\n    [`${componentCls}-sm ${componentCls}-item`]: {\n      padding: listItemPaddingSM,\n    },\n    // Horizontal\n    [`${componentCls}:not(${componentCls}-vertical)`]: {\n      [`${componentCls}-item-no-flex`]: {\n        [`${componentCls}-item-action`]: {\n          float: 'right',\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'List',\n  token => {\n    const listToken = mergeToken<ListToken>(token, {\n      listBorderedCls: `${token.componentCls}-bordered`,\n      minHeight: token.controlHeightLG,\n      listItemPadding: `${token.paddingContentVertical}px ${token.paddingContentHorizontalLG}px`,\n      listItemPaddingSM: `${token.paddingContentVerticalSM}px ${token.paddingContentHorizontal}px`,\n      listItemPaddingLG: `${token.paddingContentVerticalLG}px ${token.paddingContentHorizontalLG}px`,\n    });\n\n    return [genBaseStyle(listToken), genBorderedStyle(listToken), genResponsiveStyle(listToken)];\n  },\n  {\n    contentWidth: 220,\n  },\n);\n"
  },
  {
    "path": "components/locale/LocaleReceiver.tsx",
    "content": "import type { VNodeTypes, PropType, ComputedRef, Ref } from 'vue';\nimport { unref, inject, defineComponent, computed } from 'vue';\nimport defaultLocaleData from './en_US';\nimport type { Locale } from '.';\nexport type LocaleComponentName = Exclude<keyof Locale, 'locale'>;\n\nexport interface LocaleReceiverProps {\n  componentName?: string;\n  defaultLocale?: Locale | Function;\n  children: (locale: Locale, localeCode?: string, fullLocale?: Locale) => VNodeTypes;\n}\n\ninterface LocaleInterface {\n  [key: string]: any;\n}\n\nexport interface LocaleReceiverContext {\n  antLocale?: LocaleInterface;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'LocaleReceiver',\n  props: {\n    componentName: String as PropType<LocaleComponentName>,\n    defaultLocale: {\n      type: [Object, Function],\n    },\n    children: {\n      type: Function as PropType<\n        (locale: any, localeCode?: string, fullLocale?: object) => VNodeTypes\n      >,\n    },\n  },\n  setup(props, { slots }) {\n    const localeData = inject<LocaleReceiverContext>('localeData', {});\n    const locale = computed(() => {\n      const { componentName = 'global', defaultLocale } = props;\n      const locale =\n        defaultLocale || (defaultLocaleData as LocaleInterface)[componentName || 'global'];\n      const { antLocale } = localeData;\n\n      const localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n      return {\n        ...(typeof locale === 'function' ? locale() : locale),\n        ...(localeFromContext || {}),\n      };\n    });\n    const localeCode = computed(() => {\n      const { antLocale } = localeData;\n      const localeCode = antLocale && antLocale.locale;\n      // Had use LocaleProvide but didn't set locale\n      if (antLocale && antLocale.exist && !localeCode) {\n        return defaultLocaleData.locale;\n      }\n      return localeCode;\n    });\n    return () => {\n      const children = props.children || slots.default;\n      const { antLocale } = localeData;\n      return children?.(locale.value, localeCode.value, antLocale);\n    };\n  },\n});\n\nexport function useLocaleReceiver<T extends LocaleComponentName>(\n  componentName: T,\n  defaultLocale?: Locale[T] | Function | ComputedRef<Locale[T] | Function>,\n  propsLocale?: Ref<Locale[T]>,\n): [ComputedRef<Locale[T]>] {\n  const localeData = inject<LocaleReceiverContext>('localeData', {} as LocaleReceiverContext);\n  const componentLocale = computed<Locale[T]>(() => {\n    const { antLocale } = localeData;\n    const locale =\n      unref(defaultLocale) || (defaultLocaleData as LocaleInterface)[componentName || 'global'];\n    const localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n\n    return {\n      ...(typeof locale === 'function' ? (locale as Function)() : locale),\n      ...(localeFromContext || {}),\n      ...(unref(propsLocale) || {}),\n    };\n  });\n  return [componentLocale];\n}\n"
  },
  {
    "path": "components/locale/ar_EG.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ar_EG';\nimport DatePicker from '../date-picker/locale/ar_EG';\nimport TimePicker from '../time-picker/locale/ar_EG';\nimport Calendar from '../calendar/locale/ar_EG';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = 'ليس ${label} من نوع ${type} صالحًا';\n\nconst localeValues: Locale = {\n  locale: 'ar',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'يرجى التحديد',\n  },\n  Table: {\n    filterTitle: 'الفلاتر',\n    filterConfirm: 'تأكيد',\n    filterReset: 'إعادة ضبط',\n    selectAll: 'اختيار الكل',\n    selectInvert: 'إلغاء الاختيار',\n    selectionAll: 'حدد جميع البيانات',\n    sortTitle: 'رتب',\n    expand: 'توسيع الصف',\n    collapse: 'طي الصف',\n    triggerDesc: 'ترتيب تنازلي',\n    triggerAsc: 'ترتيب تصاعدي',\n    cancelSort: 'إلغاء الترتيب',\n  },\n  Modal: {\n    okText: 'تأكيد',\n    cancelText: 'إلغاء',\n    justOkText: 'تأكيد',\n  },\n  Popconfirm: {\n    okText: 'تأكيد',\n    cancelText: 'إلغاء',\n  },\n  Transfer: {\n    searchPlaceholder: 'ابحث هنا',\n    itemUnit: 'عنصر',\n    itemsUnit: 'عناصر',\n  },\n  Upload: {\n    uploading: 'جاري الرفع...',\n    removeFile: 'احذف الملف',\n    uploadError: 'مشكلة فى الرفع',\n    previewFile: 'استعرض الملف',\n    downloadFile: 'تحميل الملف',\n  },\n  Empty: {\n    description: 'لا توجد بيانات',\n  },\n  Icon: {\n    icon: 'أيقونة',\n  },\n  Text: {\n    edit: 'تعديل',\n    copy: 'نسخ',\n    copied: 'نقل',\n    expand: 'وسع',\n  },\n  PageHeader: {\n    back: 'عودة',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'خطأ في حقل الإدخال ${label}',\n      required: 'يرجى إدخال ${label}',\n      enum: '${label} يجب أن يكون واحدا من [${enum}]',\n      whitespace: '${label} لا يمكن أن يكون حرفًا فارغًا',\n      date: {\n        format: '${label} تنسيق التاريخ غير صحيح',\n        parse: '${label} لا يمكن تحويلها إلى تاريخ',\n        invalid: 'تاريخ ${label} غير صحيح',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: 'يجب ${label} ان يكون ${len} أحرف',\n        min: '${label} على الأقل ${min} أحرف',\n        max: '${label} يصل إلى ${max} أحرف',\n        range: 'يجب ${label} ان يكون مابين ${min}-${max} أحرف',\n      },\n      number: {\n        len: '${len} ان يساوي ${label} يجب',\n        min: '${min} الأدنى هو ${label} حد',\n        max: '${max} الأقصى هو ${label} حد',\n        range: '${max}-${min} ان يكون مابين ${label} يجب',\n      },\n      array: {\n        len: 'يجب أن يكون ${label} طوله ${len}',\n        min: 'يجب أن يكون ${label} طوله الأدنى ${min}',\n        max: 'يجب أن يكون ${label} طوله الأقصى ${max}',\n        range: 'يجب أن يكون ${label} طوله مابين ${min}-${max}',\n      },\n      pattern: {\n        mismatch: 'لا يتطابق ${label} مع ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/az_AZ.ts",
    "content": "import Pagination from '../vc-pagination/locale/az_AZ';\nimport DatePicker from '../date-picker/locale/az_AZ';\nimport TimePicker from '../time-picker/locale/az_AZ';\nimport Calendar from '../calendar/locale/az_AZ';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'az',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filter menyu',\n    filterConfirm: 'Axtar',\n    filterReset: 'Sıfırla',\n    emptyText: 'Məlumat yoxdur',\n    selectAll: 'Cari səhifəni seç',\n    selectInvert: 'Invert current page',\n  },\n  Modal: {\n    okText: 'Bəli',\n    cancelText: 'Ləğv et',\n    justOkText: 'Bəli',\n  },\n  Popconfirm: {\n    okText: 'Bəli',\n    cancelText: 'Ləğv et',\n  },\n  Transfer: {\n    titles: ['', ''],\n    notFoundContent: 'Tapılmadı',\n    searchPlaceholder: 'Burada axtar',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n  },\n  Select: {\n    notFoundContent: 'Tapılmadı',\n  },\n  Upload: {\n    uploading: 'Yüklənir...',\n    removeFile: 'Faylı sil',\n    uploadError: 'Yükləmə xətası',\n    previewFile: 'Fayla önbaxış',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/bg_BG.ts",
    "content": "import Pagination from '../vc-pagination/locale/bg_BG';\nimport DatePicker from '../date-picker/locale/bg_BG';\nimport TimePicker from '../time-picker/locale/bg_BG';\nimport Calendar from '../calendar/locale/bg_BG';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'bg',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Филтриране',\n    filterConfirm: 'Добре',\n    filterReset: 'Нулриане',\n    selectAll: 'Избор на текуща страница',\n    selectInvert: 'Обръщане',\n  },\n  Modal: {\n    okText: 'Добре',\n    cancelText: 'Отказ',\n    justOkText: 'Добре',\n  },\n  Popconfirm: {\n    okText: 'Добре',\n    cancelText: 'Отказ',\n  },\n  Transfer: {\n    searchPlaceholder: 'Търсене',\n    itemUnit: 'избор',\n    itemsUnit: 'избори',\n  },\n  Upload: {\n    uploading: 'Качване...',\n    removeFile: 'Премахване',\n    uploadError: 'Грешка при качването',\n    previewFile: 'Преглед',\n    downloadFile: 'Свали файл',\n  },\n  Empty: {\n    description: 'Няма данни',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/bn_BD.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/bn_BD';\nimport DatePicker from '../date-picker/locale/bn_BD';\nimport TimePicker from '../time-picker/locale/bn_BD';\nimport Calendar from '../calendar/locale/bn_BD';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} টি সঠিক ${type} নয়।';\n\nconst localeValues: Locale = {\n  locale: 'bn-bd',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'অনুগ্রহ করে নির্বাচন করুন',\n  },\n  Table: {\n    filterTitle: 'ফিল্টার মেনু',\n    filterConfirm: 'ঠিক',\n    filterReset: 'রিসেট',\n    filterEmptyText: 'ফিল্টার নেই',\n    emptyText: 'কোনও ডেটা নেই',\n    selectAll: 'বর্তমান পৃষ্ঠা নির্বাচন করুন',\n    selectInvert: 'বর্তমান পৃষ্ঠাটি উল্টে দিন',\n    selectNone: 'সমস্ত ডেটা সাফ করুন',\n    selectionAll: 'সমস্ত ডেটা নির্বাচন করুন',\n    sortTitle: 'সাজান',\n    expand: 'সারি প্রসারিত করুন',\n    collapse: 'সারি সঙ্কুচিত করুন',\n    triggerDesc: 'অবতরণকে সাজানোর জন্য ক্লিক করুন',\n    triggerAsc: 'আরোহী বাছাই করতে ক্লিক করুন',\n    cancelSort: 'বাছাই বাতিল করতে ক্লিক করুন',\n  },\n  Modal: {\n    okText: 'ঠিক',\n    cancelText: 'বাতিল',\n    justOkText: 'ঠিক',\n  },\n  Popconfirm: {\n    okText: 'ঠিক',\n    cancelText: 'বাতিল',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'এখানে অনুসন্ধান',\n    itemUnit: 'আইটেম',\n    itemsUnit: 'আইটেমসমূহ',\n    remove: 'অপসারণ',\n    selectCurrent: 'বর্তমান পৃষ্ঠা নির্বাচন করুন',\n    removeCurrent: 'বর্তমান পৃষ্ঠাটি সরান',\n    selectAll: 'সমস্ত ডেটা নির্বাচন করুন',\n    removeAll: 'সমস্ত ডেটা সরান',\n    selectInvert: 'বর্তমান পৃষ্ঠাটি উল্টে দিন',\n  },\n  Upload: {\n    uploading: 'আপলোড হচ্ছে ...',\n    removeFile: 'ফাইল সরান',\n    uploadError: 'আপলোডে সমস্যা',\n    previewFile: 'ফাইলের পূর্বরূপ',\n    downloadFile: 'ফাইল ডাউনলোড',\n  },\n  Empty: {\n    description: 'কোনও ডেটা নেই',\n  },\n  Icon: {\n    icon: 'আইকন',\n  },\n  Text: {\n    edit: 'সম্পাদনা',\n    copy: 'অনুলিপি',\n    copied: 'অনুলিপি হয়েছে',\n    expand: 'বিস্তৃত করা',\n  },\n  PageHeader: {\n    back: 'পেছনে',\n  },\n  Form: {\n    optional: '(ঐচ্ছিক)',\n    defaultValidateMessages: {\n      default: '${label} এর ক্ষেত্রে ক্ষেত্র বৈধতা ত্রুটি',\n      required: 'অনুগ্রহ করে ${label} প্রবেশ করান',\n      enum: '${label} অবশ্যই [${enum}] এর মধ্যে একটি হতে হবে',\n      whitespace: '${label} ফাঁকা অক্ষর হতে পারে না',\n      date: {\n        format: '${label} তারিখ ফরমেট সঠিক নয়।',\n        parse: '${label} তারিখে রূপান্তর করা যায় না',\n        invalid: '${label} একটি সঠিক তারিখ না।',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} অবশ্যই ${len} অক্ষরের হতে হবে।',\n        min: '${label} অবশ্যই অন্তত ${min} অক্ষরের হতে হবে।',\n        max: '${label} অবশ্যই ${max} পর্যন্ত অক্ষরের হতে হবে।',\n        range: '${label} অবশ্যই ${min}-${max} অক্ষরের এর মধ্যে হতে হবে।',\n      },\n      number: {\n        len: '${label} অবশ্যই ${len} এর সমান হতে হবে',\n        min: '${label} অবশ্যই সর্বনিম্ন ${min} হতে হবে',\n        max: '${label} অবশ্যই সর্বোচ্চ ${max} হতে হবে',\n        range: '${label} অবশ্যই ${min}-${max} এর মধ্যে হতে হবে',\n      },\n      array: {\n        len: 'অবশ্যই ${len} ${label} হতে হবে',\n        min: 'কমপক্ষে ${min} ${label}',\n        max: 'সর্বাধিক হিসাবে ${max} ${label}',\n        range: '${label} এর পরিমাণ অবশ্যই ${min}-${max} এর মধ্যে হতে হবে',\n      },\n      pattern: {\n        mismatch: '${label} এই ${pattern} প্যাটার্নের সাথে মেলে না',\n      },\n    },\n  },\n  Image: {\n    preview: 'পূর্বরূপ',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/by_BY.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/by_BY';\nimport DatePicker from '../date-picker/locale/by_BY';\nimport TimePicker from '../time-picker/locale/by_BY';\nimport Calendar from '../calendar/locale/by_BY';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = \"${label} не з'яўляецца тыпам ${type}\";\n\nconst localeValues: Locale = {\n  locale: 'by',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Калі ласка выберыце',\n  },\n  Table: {\n    filterTitle: 'Фільтр',\n    filterConfirm: 'OK',\n    filterReset: 'Скінуць',\n    filterEmptyText: 'Без фільтраў',\n    emptyText: 'Няма дадзеных',\n    selectAll: 'Выбраць усе',\n    selectInvert: 'Інвертаваць выбар',\n    selectionAll: 'Выбраць усе дадзеныя',\n    sortTitle: 'Сартаванне',\n    expand: 'Разгарнуць радок',\n    collapse: 'Згарнуць радок',\n    triggerDesc: 'Націсніце для сартавання па змяншэнні',\n    triggerAsc: 'Націсніце для сартавання па ўзросту',\n    cancelSort: 'Націсніце, каб адмяніць сартаванне',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Адмена',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Адмена',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Пошук',\n    itemUnit: 'элем.',\n    itemsUnit: 'элем.',\n    remove: 'Выдаліць',\n    selectAll: 'Выбраць усе дадзеныя',\n    selectCurrent: 'Вылучыць дадзеную старонку',\n    selectInvert: 'Паказаць у зваротным парадку',\n    removeAll: 'Выдаліць усе дадзеныя',\n    removeCurrent: 'Выдаліць дадзеную старонку',\n  },\n  Upload: {\n    uploading: 'Загрузка...',\n    removeFile: 'Выдаліць файл',\n    uploadError: 'Адбылася памылка пры загрузцы',\n    previewFile: 'Прадпрагляд файла',\n    downloadFile: 'Загрузіць файл',\n  },\n  Empty: {\n    description: 'Няма дадзеных',\n  },\n  Icon: {\n    icon: 'Іконка',\n  },\n  Text: {\n    edit: 'Рэдагаваць',\n    copy: 'Капіяваць',\n    copied: 'Капіяванне завершана',\n    expand: 'Разгарнуць',\n  },\n  PageHeader: {\n    back: 'Назад',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Памылка праверкі поля ${label}',\n      required: 'Калі ласка, увядзіце ${label}',\n      enum: '${label} павінен быць адным з [${enum}]',\n      whitespace: '${label} не можа быць пустым',\n      date: {\n        format: '${label} няправільны фармат даты',\n        parse: '${label} не можа быць пераўтворана ў дату',\n        invalid: \"${label} не з'яўляецца карэктнай датай\",\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} павінна быць ${len} сімвалаў',\n        min: '${label} павінна быць больш або роўная ${min} сімвалаў',\n        max: '${label} павінна быць менш або роўная ${max} сімвалаў',\n        range: 'Даўжыня ${label} павінна быць паміж ${min}-${max} сімвалаў',\n      },\n      number: {\n        len: '${label} павінна быць роўная ${len}',\n        min: '${label} павінна быць больш або роўная ${min}',\n        max: '${label} павінна быць больш або роўная ${max}',\n      },\n      array: {\n        len: 'Колькасць элементаў ${label} павінна быць роўная ${len}',\n        min: 'Колькасць элементаў ${label} павінна быць больш або роўная ${min}',\n        max: 'Колькасць элементаў ${label} павінна быць менш або роўная ${max}',\n        range: 'Колькасць элементаў ${label} павінна быць паміж ${min} і ${max}',\n      },\n      pattern: {\n        mismatch: '${label} не адпавядае шаблону ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ca_ES.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ca_ES';\nimport DatePicker from '../date-picker/locale/ca_ES';\nimport TimePicker from '../time-picker/locale/ca_ES';\nimport Calendar from '../calendar/locale/ca_ES';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} no és un ${type} vàlid';\n\nconst localeValues: Locale = {\n  locale: 'ca',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Seleccionar',\n  },\n  Table: {\n    filterTitle: 'Filtrar el menú',\n    filterConfirm: 'D’acord',\n    filterReset: 'Reiniciar',\n    filterEmptyText: 'Sense filtres',\n    selectAll: 'Seleccionar la pàgina actual',\n    selectInvert: 'Invertir la selecció',\n    selectionAll: 'Seleccionar-ho tot',\n    sortTitle: 'Ordenar',\n    expand: 'Ampliar la fila',\n    collapse: 'Plegar la fila',\n    triggerDesc: 'Ordre descendent',\n    triggerAsc: 'Ordre ascendent',\n    cancelSort: 'Desactivar l’ordre',\n  },\n  Modal: {\n    okText: 'D’acord',\n    cancelText: 'Cancel·lar',\n    justOkText: 'D’acord',\n  },\n  Popconfirm: {\n    okText: 'D’acord',\n    cancelText: 'Cancel·lar',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Cercar',\n    itemUnit: 'ítem',\n    itemsUnit: 'ítems',\n    remove: 'Eliminar',\n    selectCurrent: 'Seleccionar la pàgina actual',\n    removeCurrent: 'Eliminar la selecció',\n    selectAll: 'Seleccionar-ho tot',\n    removeAll: 'Eliminar-ho tot',\n    selectInvert: 'Invertir la selecció',\n  },\n  Upload: {\n    uploading: 'Carregant…',\n    removeFile: 'Eliminar el fitxer',\n    uploadError: 'Error de càrrega',\n    previewFile: 'Vista prèvia del fitxer',\n    downloadFile: 'Baixar el fitxer',\n  },\n  Empty: {\n    description: 'Sense dades',\n  },\n  Icon: {\n    icon: 'icona',\n  },\n  Text: {\n    edit: 'Editar',\n    copy: 'Copiar',\n    copied: 'Copiat',\n    expand: 'Ampliar',\n  },\n  PageHeader: {\n    back: 'Enrere',\n  },\n  Form: {\n    optional: '(opcional)',\n    defaultValidateMessages: {\n      default: 'Error de validació del camp ${label}',\n      required: 'Introdueix ${label}',\n      enum: '${label} ha de ser un de [${enum}]',\n      whitespace: '${label} no pot ser un caràcter en blanc',\n      date: {\n        format: 'El format de la data de ${label} és invàlid',\n        parse: '${label} no es pot convertir a cap data',\n        invalid: '${label} és una data invàlida',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ha de ser de ${len} caràcters',\n        min: '${label} ha de tenir com a mínim ${min} caràcters',\n        max: '${label} ha de tenir com a màxim ${max} caràcters',\n        range: '${label} ha d’estar entre ${min} i ${max} caràcters',\n      },\n      number: {\n        len: '${label} ha de ser igual a ${len}',\n        min: '${label} ha de tenir un valor mínim de ${min}',\n        max: '${label} ha de tenir un valor màxim de ${max}',\n        range: '${label} ha de tenir un valor entre ${min} i ${max}',\n      },\n      array: {\n        len: 'La llargada de ${label} ha de ser de ${len}',\n        min: 'La llargada de ${label} ha de ser com a mínim de ${min}',\n        max: 'La llargada de ${label} ha de ser com a màxim de ${max}',\n        range: 'La llargada de ${label} ha d’estar entre ${min} i ${max}',\n      },\n      pattern: {\n        mismatch: '${label} no coincideix amb el patró ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ckb_IQ.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ckb';\nimport DatePicker from '../date-picker/locale/ckb';\nimport TimePicker from '../time-picker/locale/ckb';\nimport Calendar from '../calendar/locale/ckb';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} ${type}ێکی دروست نییە';\n\nconst localeValues: Locale = {\n  locale: 'ckb-IQ',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'پێڕستی پاڵاوتن',\n    filterConfirm: 'باشە',\n    filterReset: 'ڕێکخستنەوە',\n    filterEmptyText: 'هیچ پاڵاوەرێک نییە',\n    emptyText: 'هیچ زانیارییەک نییە',\n    selectAll: 'هەڵبژاردنی پەڕەی ئێستا',\n    selectInvert: 'پێچەوانەکردنەوەی پەڕەی ئێستا',\n    selectNone: 'سڕینەوەی هەموو زانیارییەکان',\n    selectionAll: 'هەڵبژاردنی هەموو زانیارییەکان',\n    sortTitle: 'ڕیزکردن',\n    expand: 'فراوانکردنی ڕیز',\n    collapse: 'کۆکردنەوەی ڕیز',\n    triggerDesc: 'کرتە بکە بۆ ڕیزکردنی دابەزین',\n    triggerAsc: 'کرتە بکە بۆ ڕیزکردنی سەرکەوتن',\n    cancelSort: 'کرتە بکە بۆ هەڵوەشاندنەوەی ڕیزکردن',\n  },\n  Modal: {\n    okText: 'باشە',\n    cancelText: 'پاشگەزبوونەوە',\n    justOkText: 'باشە',\n  },\n  Popconfirm: {\n    okText: 'باشە',\n    cancelText: 'پاشگەزبوونەوە',\n  },\n  Transfer: {\n    searchPlaceholder: 'لێرە بگەڕێ',\n    itemUnit: 'بڕگە',\n    itemsUnit: 'بڕگە',\n  },\n  Upload: {\n    uploading: 'بار دەکرێت...',\n    removeFile: 'سڕینەوەی پەڕگە',\n    uploadError: 'هەڵە لە بارکردن',\n    previewFile: 'پێشبینینی پەڕگە',\n    downloadFile: 'داگرتنی پەڕگە',\n  },\n  Empty: {\n    description: 'هیچ زانیارییەک نییە',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'هەڵە لە ڕاستی و دروستی خانەی ${label}',\n      required: 'تکایە ${label} بنووسە',\n      enum: '${label} دەبێت یەکێک بێت لە [${enum}]',\n      whitespace: '${label} ناتوانێت نوسەی بەتاڵ بێت',\n      date: {\n        format: 'شێوازی بەرواری ${label} نادروستە',\n        parse: '${label} ناتوانرێت بگۆڕدرێت بۆ بەروار',\n        invalid: '${label} بەروارێکی نادروستە',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} دەبێت ${len} نوسە بێت',\n        min: '${label} دەبێت بەلایەنی کەم ${min} نوسە بێت',\n        max: '${label} دەبێت زۆرترین ${max} نوسە بێت',\n        range: '${label} دەبێت لە نێوان ${min}-${max} نوسە بێت',\n      },\n      number: {\n        len: '${label} دەبێت یەکسان بێت بە ${len}',\n        min: '${label} دەبێت کەمترین ${min} بێت',\n        max: '${label} دەبێت زۆرترین ${max} بێت',\n        range: '${label} دەبێت لە نێوان ${min}-${max} بێت',\n      },\n      array: {\n        len: 'دەبێت ${len} ${label} بێت',\n        min: 'بەلایەنی کەم ${min} ${label}',\n        max: 'بەکاتی زۆر ${max} ${label}',\n        range: 'بڕی ${label} دەبێت لە نێوان ${min}-${max} بێت',\n      },\n      pattern: {\n        mismatch: '${label} لەگەڵ شێوازی ${pattern} ناگونجێت',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/cs_CZ.ts",
    "content": "import Pagination from '../vc-pagination/locale/cs_CZ';\nimport DatePicker from '../date-picker/locale/cs_CZ';\nimport TimePicker from '../time-picker/locale/cs_CZ';\nimport Calendar from '../calendar/locale/cs_CZ';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'cs',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Prosím vyber',\n  },\n  Table: {\n    filterTitle: 'Filtr',\n    filterConfirm: 'Potvrdit',\n    filterReset: 'Obnovit',\n    filterEmptyText: 'Žádné filtry',\n    selectAll: 'Vybrat všechny řádky na současné stránce',\n    selectInvert: 'Invertovat výběr na současné stránce',\n    selectionAll: 'Vybrat všechny řádky',\n    sortTitle: 'Řadit',\n    expand: 'Rozbalit řádek',\n    collapse: 'Zabalit řádek',\n    triggerDesc: 'Klikni pro sestupné řazení',\n    triggerAsc: 'Klikni pro vzestupné řazení',\n    cancelSort: 'Klikni pro zrušení řazení',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Storno',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Storno',\n  },\n  Transfer: {\n    searchPlaceholder: 'Vyhledávání',\n    itemUnit: 'položka',\n    itemsUnit: 'položek',\n  },\n  Upload: {\n    uploading: 'Nahrávání...',\n    removeFile: 'Odstranit soubor',\n    uploadError: 'Chyba při nahrávání',\n    previewFile: 'Zobrazit soubor',\n    downloadFile: 'Stáhnout soubor',\n  },\n  Empty: {\n    description: 'Žádná data',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/da_DK.ts",
    "content": "import Pagination from '../vc-pagination/locale/da_DK';\nimport DatePicker from '../date-picker/locale/da_DK';\nimport TimePicker from '../time-picker/locale/da_DK';\nimport Calendar from '../calendar/locale/da_DK';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'da',\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Pagination,\n  Table: {\n    filterTitle: 'Filtermenu',\n    filterConfirm: 'OK',\n    filterReset: 'Nulstil',\n    filterEmptyText: 'Ingen filtre',\n    emptyText: 'Ingen data',\n    selectAll: 'Vælg alle',\n    selectNone: 'Ryd alt data',\n    selectInvert: 'Invertér valg',\n    selectionAll: 'Vælg alt data',\n    sortTitle: 'Sortér',\n    expand: 'Udvid række',\n    collapse: 'Flet række',\n    triggerDesc: 'Klik for at sortere faldende',\n    triggerAsc: 'Klik for at sortere stigende',\n    cancelSort: 'Klik for at annullere sortering',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Afbryd',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Afbryd',\n  },\n  Transfer: {\n    searchPlaceholder: 'Søg her',\n    itemUnit: 'element',\n    itemsUnit: 'elementer',\n  },\n  Upload: {\n    uploading: 'Uploader...',\n    removeFile: 'Fjern fil',\n    uploadError: 'Fejl ved upload',\n    previewFile: 'Forhåndsvisning',\n    downloadFile: 'Download fil',\n  },\n  Empty: {\n    description: 'Ingen data',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/de_DE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/de_DE';\nimport DatePicker from '../date-picker/locale/de_DE';\nimport TimePicker from '../time-picker/locale/de_DE';\nimport Calendar from '../calendar/locale/de_DE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} ist nicht gültig. ${type} erwartet';\n\nconst localeValues: Locale = {\n  locale: 'de',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Bitte auswählen',\n  },\n  Table: {\n    filterTitle: 'Filter-Menü',\n    filterConfirm: 'OK',\n    filterReset: 'Zurücksetzen',\n    selectAll: 'Selektiere Alle',\n    selectInvert: 'Selektion Invertieren',\n    selectionAll: 'Wählen Sie alle Daten aus',\n    sortTitle: 'Sortieren',\n    expand: 'Zeile erweitern',\n    collapse: 'Zeile reduzieren',\n    triggerDesc: 'Klicken zur absteigenden  Sortierung',\n    triggerAsc: 'Klicken zur aufsteigenden Sortierung',\n    cancelSort: 'Klicken zum Abbrechen der Sortierung',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Abbrechen',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Abbrechen',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Suchen',\n    itemUnit: 'Eintrag',\n    itemsUnit: 'Einträge',\n    remove: 'Entfernen',\n    selectCurrent: 'Alle auf aktueller Seite auswählen',\n    removeCurrent: 'Auswahl auf aktueller Seite aufheben',\n    selectAll: 'Alle auswählen',\n    removeAll: 'Auswahl aufheben',\n    selectInvert: 'Auswahl umkehren',\n  },\n  Upload: {\n    uploading: 'Hochladen...',\n    removeFile: 'Datei entfernen',\n    uploadError: 'Fehler beim Hochladen',\n    previewFile: 'Dateivorschau',\n    downloadFile: 'Download-Datei',\n  },\n  Empty: {\n    description: 'Keine Daten',\n  },\n  Text: {\n    edit: 'Bearbeiten',\n    copy: 'Kopieren',\n    copied: 'Kopiert',\n    expand: 'Erweitern',\n  },\n  PageHeader: {\n    back: 'Zurück',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Feld-Validierungsfehler: ${label}',\n      required: 'Bitte geben Sie ${label} an',\n      enum: '${label} muss eines der folgenden sein [${enum}]',\n      whitespace: '${label} darf kein Leerzeichen sein',\n      date: {\n        format: '${label} ist ein ungültiges Datumsformat',\n        parse: '${label} kann nicht in ein Datum umgewandelt werden',\n        invalid: '${label} ist ein ungültiges Datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} muss genau ${len} Zeichen lang sein',\n        min: '${label} muss mindestens ${min} Zeichen lang sein',\n        max: '${label} darf höchstens ${max} Zeichen lang sein',\n        range: '${label} muss zwischen ${min} und ${max} Zeichen lang sein',\n      },\n      number: {\n        len: '${label} muss gleich ${len} sein',\n        min: '${label} muss mindestens ${min} sein',\n        max: '${label} darf maximal ${max} sein',\n        range: '${label} muss zwischen ${min} und ${max} liegen',\n      },\n      array: {\n        len: 'Es müssen ${len} ${label} sein',\n        min: 'Es müssen mindestens ${min} ${label} sein',\n        max: 'Es dürfen maximal ${max} ${label} sein',\n        range: 'Die Anzahl an ${label} muss zwischen ${min} und ${max} liegen',\n      },\n      pattern: {\n        mismatch: '${label} enspricht nicht dem ${pattern} Muster',\n      },\n    },\n  },\n  Image: {\n    preview: 'Vorschau',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/el_GR.ts",
    "content": "import Pagination from '../vc-pagination/locale/el_GR';\nimport DatePicker from '../date-picker/locale/el_GR';\nimport TimePicker from '../time-picker/locale/el_GR';\nimport Calendar from '../calendar/locale/el_GR';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'el',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Μενού φίλτρων',\n    filterConfirm: 'ΟΚ',\n    filterReset: 'Επαναφορά',\n    selectAll: 'Επιλογή τρέχουσας σελίδας',\n    selectInvert: 'Αντιστροφή τρέχουσας σελίδας',\n  },\n  Modal: {\n    okText: 'ΟΚ',\n    cancelText: 'Άκυρο',\n    justOkText: 'ΟΚ',\n  },\n  Popconfirm: {\n    okText: 'ΟΚ',\n    cancelText: 'Άκυρο',\n  },\n  Transfer: {\n    searchPlaceholder: 'Αναζήτηση',\n    itemUnit: 'αντικείμενο',\n    itemsUnit: 'αντικείμενα',\n  },\n  Upload: {\n    uploading: 'Μεταφόρτωση...',\n    removeFile: 'Αφαίρεση αρχείου',\n    uploadError: 'Σφάλμα μεταφόρτωσης',\n    previewFile: 'Προεπισκόπηση αρχείου',\n    downloadFile: 'Λήψη αρχείου',\n  },\n  Empty: {\n    description: 'Δεν υπάρχουν δεδομένα',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/en_GB.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/en_GB';\nimport DatePicker from '../date-picker/locale/en_GB';\nimport TimePicker from '../time-picker/locale/en_GB';\nimport Calendar from '../calendar/locale/en_GB';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is not a valid ${type}';\n\nconst localeValues: Locale = {\n  locale: 'en-gb',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'No filters',\n    emptyText: 'No data',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectNone: 'Clear all data',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n  },\n  Transfer: {\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file',\n  },\n  Empty: {\n    description: 'No data',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters',\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}',\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/en_US.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/en_US';\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is not a valid ${type}';\n\nconst localeValues: Locale = {\n  locale: 'en',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Please select',\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'No filters',\n    filterCheckall: 'Select all items',\n    filterSearchPlaceholder: 'Search in filters',\n    emptyText: 'No data',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectNone: 'Clear all data',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting',\n  },\n  Tour: {\n    Next: 'Next',\n    Previous: 'Previous',\n    Finish: 'Finish',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remove',\n    selectCurrent: 'Select current page',\n    removeCurrent: 'Remove current page',\n    selectAll: 'Select all data',\n    removeAll: 'Remove all data',\n    selectInvert: 'Invert current page',\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file',\n  },\n  Empty: {\n    description: 'No data',\n  },\n  Icon: {\n    icon: 'icon',\n  },\n  Text: {\n    edit: 'Edit',\n    copy: 'Copy',\n    copied: 'Copied',\n    expand: 'Expand',\n  },\n  PageHeader: {\n    back: 'Back',\n  },\n  Form: {\n    optional: '(optional)',\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters',\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}',\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Preview',\n  },\n  QRCode: {\n    expired: 'QR code expired',\n    refresh: 'Refresh',\n    scanned: 'Scanned',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/es_ES.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/es_ES';\nimport DatePicker from '../date-picker/locale/es_ES';\nimport TimePicker from '../time-picker/locale/es_ES';\nimport Calendar from '../calendar/locale/es_ES';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} no es un ${type} válido';\n\nconst localeValues: Locale = {\n  locale: 'es',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Seleccione',\n  },\n  Table: {\n    filterTitle: 'Filtrar menú',\n    filterConfirm: 'Aceptar',\n    filterReset: 'Reiniciar',\n    filterEmptyText: 'Sin filtros',\n    emptyText: 'Sin datos',\n    selectAll: 'Seleccionar todo',\n    selectInvert: 'Invertir selección',\n    selectNone: 'Vacíe todo',\n    selectionAll: 'Seleccionar todos los datos',\n    sortTitle: 'Ordenar',\n    expand: 'Expandir fila',\n    collapse: 'Colapsar fila',\n    triggerDesc: 'Click para ordenar en orden descendente',\n    triggerAsc: 'Click para ordenar en orden ascendente',\n    cancelSort: 'Click para cancelar ordenamiento',\n  },\n  Modal: {\n    okText: 'Aceptar',\n    cancelText: 'Cancelar',\n    justOkText: 'Aceptar',\n  },\n  Popconfirm: {\n    okText: 'Aceptar',\n    cancelText: 'Cancelar',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Buscar aquí',\n    itemUnit: 'elemento',\n    itemsUnit: 'elementos',\n    remove: 'Eliminar',\n    selectCurrent: 'Seleccionar página actual',\n    removeCurrent: 'Remover página actual',\n    selectAll: 'Seleccionar todos los datos',\n    removeAll: 'Eliminar todos los datos',\n    selectInvert: 'Invertir página actual',\n  },\n  Upload: {\n    uploading: 'Subiendo...',\n    removeFile: 'Eliminar archivo',\n    uploadError: 'Error al subir el archivo',\n    previewFile: 'Vista previa',\n    downloadFile: 'Descargar archivo',\n  },\n  Empty: {\n    description: 'No hay datos',\n  },\n  Icon: {\n    icon: 'ícono',\n  },\n  Text: {\n    edit: 'Editar',\n    copy: 'Copiar',\n    copied: 'Copiado',\n    expand: 'Expandir',\n  },\n  PageHeader: {\n    back: 'Volver',\n  },\n  Form: {\n    optional: '(opcional)',\n    defaultValidateMessages: {\n      default: 'Error de validación del campo ${label}',\n      required: 'Por favor ingresar ${label}',\n      enum: '${label} debe ser uno de [${enum}]',\n      whitespace: '${label} no puede ser un carácter en blanco',\n      date: {\n        format: 'El formato de fecha de ${label} es inválido',\n        parse: '${label} no se puede convertir a una fecha',\n        invalid: '${label} es una fecha inválida',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} debe tener ${len} caracteres',\n        min: '${label} debe tener al menos ${min} caracteres',\n        max: '${label} debe tener hasta ${max} caracteres',\n        range: '${label} debe tener entre ${min}-${max} caracteres',\n      },\n      number: {\n        len: '${label} debe ser igual a ${len}',\n        min: '${label} valor mínimo es ${min}',\n        max: '${label} valor máximo es ${max}',\n        range: '${label} debe estar entre ${min}-${max}',\n      },\n      array: {\n        len: 'Debe ser ${len} ${label}',\n        min: 'Al menos ${min} ${label}',\n        max: 'A lo mucho ${max} ${label}',\n        range: 'El monto de ${label} debe estar entre ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} no coincide con el patrón ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Previsualización',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/et_EE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/et_EE';\nimport DatePicker from '../date-picker/locale/et_EE';\nimport TimePicker from '../time-picker/locale/et_EE';\nimport Calendar from '../calendar/locale/et_EE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} ei ole kehtiv ${type}';\n\nconst localeValues: Locale = {\n  locale: 'et',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Palun vali',\n  },\n  Table: {\n    filterTitle: 'Filtri menüü',\n    filterConfirm: 'OK',\n    filterReset: 'Nulli',\n    filterEmptyText: 'Filtreid pole',\n    filterCheckall: 'Vali kõik',\n    filterSearchPlaceholder: 'Otsi filtritest',\n    emptyText: 'Andmed puuduvad',\n    selectAll: 'Vali kõik',\n    selectInvert: 'Inverteeri valik',\n    selectNone: 'Kustuta kõik andmed',\n    selectionAll: 'Vali kõik andmed',\n    sortTitle: 'Sorteeri',\n    expand: 'Laienda rida',\n    collapse: 'Ahenda rida',\n    triggerDesc: 'Klõpsa kahanevalt sortimiseks',\n    triggerAsc: 'Klõpsa kasvavalt sortimiseks',\n    cancelSort: 'Klõpsa sortimise tühistamiseks',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Tühista',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Tühista',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Otsi siit',\n    itemUnit: 'kogus',\n    itemsUnit: 'kogused',\n    remove: 'Eemalda',\n    selectCurrent: 'Vali praegune leht',\n    removeCurrent: 'Eemalda praegune leht',\n    selectAll: 'Vali kõik',\n    removeAll: 'Eemalda kõik andmed',\n    selectInvert: 'Inverteeri valik',\n  },\n  Upload: {\n    uploading: 'Üleslaadimine...',\n    removeFile: 'Eemalda fail',\n    uploadError: 'Üleslaadimise tõrge',\n    previewFile: 'Faili eelvaade',\n    downloadFile: 'Lae fail alla',\n  },\n  Empty: {\n    description: 'Andmed puuduvad',\n  },\n  Icon: {\n    icon: 'ikoon',\n  },\n  Text: {\n    edit: 'Muuda',\n    copy: 'Kopeeri',\n    copied: 'Kopeeritud',\n    expand: 'Laienda',\n  },\n  PageHeader: {\n    back: 'Tagasi',\n  },\n  Form: {\n    optional: '(valikuline)',\n    defaultValidateMessages: {\n      default: '${label} välja valideerimise viga',\n      required: 'Palun sisesta ${label}',\n      enum: '${label} peab olema üks järgmistest: [${enum}]',\n      whitespace: '${label} ei saa olla tühi märk',\n      date: {\n        format: '${label} kuupäevavorming on kehtetu',\n        parse: '${label} ei saa kuupäevaks teisendada',\n        invalid: '${label} on vale kuupäev',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} peab koosnema ${len} tähemärgist',\n        min: '${label} peab olema vähemalt ${min} tähemärki',\n        max: '${label} peab olema kuni ${max} tähemärki',\n        range: '${label} peab olema vahemikus ${min}–${max} tähemärki',\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} peab olema vähemalt ${min}',\n        max: '${label} peab olema maksimaalne ${max}',\n        range: '${label} peab olema vahemikus ${min}–${max}',\n      },\n      array: {\n        len: 'Peab olema ${len} ${label}',\n        min: 'Vähemalt ${min} ${label}',\n        max: 'Maksimaalselt ${max} ${label}',\n        range: '${label} summa peab olema vahemikus ${min}–${max}',\n      },\n      pattern: {\n        mismatch: '${label} ei vasta mustrile ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Eelvaade',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/fa_IR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/fa_IR';\nimport DatePicker from '../date-picker/locale/fa_IR';\nimport TimePicker from '../time-picker/locale/fa_IR';\nimport Calendar from '../calendar/locale/fa_IR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} از نوع ${type} معتبر نیست';\n\nconst localeValues: Locale = {\n  locale: 'fa',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'لطفاً انتخاب کنید',\n  },\n  Table: {\n    filterTitle: 'منوی فیلتر',\n    filterConfirm: 'تایید',\n    filterReset: 'پاک کردن',\n    filterEmptyText: 'بدون فیلتر',\n    emptyText: 'بدون داده',\n    selectAll: 'انتخاب صفحه‌ی کنونی',\n    selectInvert: 'معکوس کردن انتخاب‌ها در صفحه ی کنونی',\n    selectNone: 'انتخاب هیچکدام',\n    selectionAll: 'انتخاب همه داده‌ها',\n    sortTitle: 'مرتب سازی',\n    expand: 'باز شدن ردیف',\n    collapse: 'بستن ردیف',\n    triggerDesc: 'ترتیب نزولی',\n    triggerAsc: 'ترتیب صعودی',\n    cancelSort: 'لغوِ ترتیبِ داده شده',\n  },\n  Modal: {\n    okText: 'تایید',\n    cancelText: 'لغو',\n    justOkText: 'تایید',\n  },\n  Popconfirm: {\n    okText: 'تایید',\n    cancelText: 'لغو',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'جستجو',\n    itemUnit: 'عدد',\n    itemsUnit: 'عدد',\n    remove: 'حذف',\n    selectCurrent: 'انتخاب صفحه فعلی',\n    removeCurrent: 'پاک کردن انتخاب‌های صفحه فعلی',\n    selectAll: 'انتخاب همه',\n    removeAll: 'پاک کردن همه انتخاب‌ها',\n    selectInvert: 'معکوس کردن انتخاب‌ها در صفحه ی کنونی',\n  },\n  Upload: {\n    uploading: 'در حال آپلود...',\n    removeFile: 'حذف فایل',\n    uploadError: 'خطا در آپلود',\n    previewFile: 'مشاهده‌ی فایل',\n    downloadFile: 'دریافت فایل',\n  },\n  Empty: {\n    description: 'داده‌ای موجود نیست',\n  },\n  Icon: {\n    icon: 'آیکن',\n  },\n  Text: {\n    edit: 'ویرایش',\n    copy: 'کپی',\n    copied: 'کپی شد',\n    expand: 'توسعه',\n  },\n  PageHeader: {\n    back: 'برگشت',\n  },\n  Form: {\n    optional: '(اختیاری)',\n    defaultValidateMessages: {\n      default: 'خطا در ${label}',\n      required: 'فیلد ${label} اجباریست',\n      enum: '${label} باید یکی از [${enum}] باشد',\n      whitespace: '${label} نمیتواند خالی باشد',\n      date: {\n        format: 'ساختار تاریخ در ${label} نامعتبر است',\n        parse: '${label} قابل تبدیل به تاریخ نیست',\n        invalid: '${label} تاریخی نا معتبر است',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} باید ${len} کاراکتر باشد',\n        min: '${label} باید حداقل ${min} کاراکتر باشد',\n        max: '${label} باید حداکثر ${max} کاراکتر باشد',\n        range: '${label} باید بین ${min}-${max} کاراکتر باشد',\n      },\n      number: {\n        len: '${label} باید برابر ${len}',\n        min: '${label} حداقل میتواند ${min} باشد',\n        max: '${label} حداکثر میتواند ${max} باشد',\n        range: '${label} باید بین ${min}-${max} باشد',\n      },\n      array: {\n        len: 'تعداد ${label} باید ${len} باشد.',\n        min: 'تعداد ${label} حداقل باید ${min} باشد',\n        max: 'تعداد ${label} حداکثر باید ${max} باشد',\n        range: 'مقدار ${label} باید بین ${min}-${max} باشد',\n      },\n      pattern: {\n        mismatch: 'الگوی ${label} با ${pattern} برابری نمی‌کند',\n      },\n    },\n  },\n  Image: {\n    preview: 'نمایش',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/fi_FI.ts",
    "content": "import Pagination from '../vc-pagination/locale/fi_FI';\nimport DatePicker from '../date-picker/locale/fi_FI';\nimport TimePicker from '../time-picker/locale/fi_FI';\nimport Calendar from '../calendar/locale/fi_FI';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'fi',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Suodatus valikko',\n    filterConfirm: 'OK',\n    filterReset: 'Tyhjennä',\n    selectAll: 'Valitse kaikki',\n    selectInvert: 'Valitse päinvastoin',\n    sortTitle: 'Lajittele',\n    triggerDesc: 'Lajittele laskevasti',\n    triggerAsc: 'Lajittele nousevasti',\n    cancelSort: 'Peruuta lajittelu',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Peruuta',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Peruuta',\n  },\n  Transfer: {\n    searchPlaceholder: 'Etsi täältä',\n    itemUnit: 'kohde',\n    itemsUnit: 'kohdetta',\n  },\n  Upload: {\n    uploading: 'Lähetetään...',\n    removeFile: 'Poista tiedosto',\n    uploadError: 'Virhe lähetyksessä',\n    previewFile: 'Esikatsele tiedostoa',\n    downloadFile: 'Lataa tiedosto',\n  },\n  Empty: {\n    description: 'Ei kohteita',\n  },\n  Text: {\n    edit: 'Muokkaa',\n    copy: 'Kopioi',\n    copied: 'Kopioitu',\n    expand: 'Näytä lisää',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/fr_BE.ts",
    "content": "import Pagination from '../vc-pagination/locale/fr_BE';\nimport DatePicker from '../date-picker/locale/fr_BE';\nimport TimePicker from '../time-picker/locale/fr_BE';\nimport Calendar from '../calendar/locale/fr_BE';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'fr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtrer',\n    filterConfirm: 'OK',\n    filterReset: 'Réinitialiser',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n  },\n  Transfer: {\n    searchPlaceholder: 'Recherche',\n    itemUnit: 'élément',\n    itemsUnit: 'éléments',\n  },\n  Upload: {\n    uploading: 'Téléchargement...',\n    removeFile: 'Effacer le fichier',\n    uploadError: 'Erreur de téléchargement',\n    previewFile: 'Fichier de prévisualisation',\n    downloadFile: 'Télécharger un fichier',\n  },\n  Empty: {\n    description: 'Aucune donnée',\n  },\n  Text: {\n    edit: 'éditer',\n    copy: 'copier',\n    copied: 'copie effectuée',\n    expand: 'développer',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/fr_CA.ts",
    "content": "import Pagination from '../vc-pagination/locale/fr_CA';\nimport DatePicker from '../date-picker/locale/fr_CA';\nimport TimePicker from '../time-picker/locale/fr_CA';\nimport Calendar from '../calendar/locale/fr_CA';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'fr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtrer',\n    filterConfirm: 'OK',\n    filterReset: 'Réinitialiser',\n    selectAll: 'Sélectionner la page actuelle',\n    selectInvert: 'Inverser la sélection de la page actuelle',\n    selectionAll: 'Sélectionner toutes les données',\n    sortTitle: 'Trier',\n    expand: 'Développer la ligne',\n    collapse: 'Réduire la ligne',\n    triggerDesc: 'Trier par ordre décroissant',\n    triggerAsc: 'Trier par ordre croissant',\n    cancelSort: 'Annuler le tri',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n  },\n  Transfer: {\n    searchPlaceholder: 'Rechercher',\n    itemUnit: 'élément',\n    itemsUnit: 'éléments',\n  },\n  Empty: {\n    description: 'Aucune donnée',\n  },\n  Upload: {\n    uploading: 'Téléchargement...',\n    removeFile: 'Effacer le fichier',\n    uploadError: 'Erreur de téléchargement',\n    previewFile: 'Fichier de prévisualisation',\n    downloadFile: 'Télécharger un fichier',\n  },\n  Text: {\n    edit: 'Éditer',\n    copy: 'Copier',\n    copied: 'Copie effectuée',\n    expand: 'Développer',\n  },\n  PageHeader: {\n    back: 'Retour',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/fr_FR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/fr_FR';\nimport DatePicker from '../date-picker/locale/fr_FR';\nimport TimePicker from '../time-picker/locale/fr_FR';\nimport Calendar from '../calendar/locale/fr_FR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = \"La valeur du champ ${label} n'est pas valide pour le type ${type}\";\n\nconst localeValues: Locale = {\n  locale: 'fr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtrer',\n    filterConfirm: 'OK',\n    filterReset: 'Réinitialiser',\n    filterEmptyText: 'Aucun filtre',\n    emptyText: 'Aucune donnée',\n    selectAll: 'Sélectionner la page actuelle',\n    selectInvert: 'Inverser la sélection de la page actuelle',\n    selectNone: 'Désélectionner toutes les données',\n    selectionAll: 'Sélectionner toutes les données',\n    sortTitle: 'Trier',\n    expand: 'Développer la ligne',\n    collapse: 'Réduire la ligne',\n    triggerDesc: 'Trier par ordre décroissant',\n    triggerAsc: 'Trier par ordre croissant',\n    cancelSort: 'Annuler le tri',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annuler',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Rechercher',\n    itemUnit: 'élément',\n    itemsUnit: 'éléments',\n    remove: 'Désélectionner',\n    selectCurrent: 'Sélectionner la page actuelle',\n    removeCurrent: 'Désélectionner la page actuelle',\n    selectAll: 'Sélectionner toutes les données',\n    removeAll: 'Désélectionner toutes les données',\n    selectInvert: 'Inverser la sélection de la page actuelle',\n  },\n  Upload: {\n    uploading: 'Téléchargement...',\n    removeFile: 'Effacer le fichier',\n    uploadError: 'Erreur de téléchargement',\n    previewFile: 'Fichier de prévisualisation',\n    downloadFile: 'Télécharger un fichier',\n  },\n  Empty: {\n    description: 'Aucune donnée',\n  },\n  Icon: {\n    icon: 'icône',\n  },\n  Text: {\n    edit: 'Éditer',\n    copy: 'Copier',\n    copied: 'Copie effectuée',\n    expand: 'Développer',\n  },\n  PageHeader: {\n    back: 'Retour',\n  },\n  Form: {\n    optional: '(optionnel)',\n    defaultValidateMessages: {\n      default: 'Erreur de validation pour le champ ${label}',\n      required: 'Le champ ${label} est obligatoire',\n      enum: 'La valeur du champ ${label} doit être parmi [${enum}]',\n      whitespace: 'La valeur du champ ${label} ne peut pas être vide',\n      date: {\n        format: \"La valeur du champ ${label} n'est pas au format date\",\n        parse: 'La valeur du champ ${label} ne peut pas être convertie vers une date',\n        invalid: \"La valeur du champ ${label} n'est pas une date valide\",\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: 'La taille du champ ${label} doit être de ${len} caractères',\n        min: 'La taille du champ ${label} doit être au minimum de ${min} caractères',\n        max: 'La taille du champ ${label} doit être au maximum de ${max} caractères',\n        range: 'La taille du champ ${label} doit être entre ${min} et ${max} caractères',\n      },\n      number: {\n        len: 'La valeur du champ ${label} doit être égale à ${len}',\n        min: 'La valeur du champ ${label} doit être plus grande que ${min}',\n        max: 'La valeur du champ ${label} doit être plus petit que ${max}',\n        range: 'La valeur du champ ${label} doit être entre ${min} et ${max}',\n      },\n      array: {\n        len: 'La taille du tableau ${label} doit être de ${len}',\n        min: 'La taille du tableau ${label} doit être au minimum de ${min}',\n        max: 'La taille du tableau ${label} doit être au maximum de ${max}',\n        range: 'La taille du tableau ${label} doit être entre ${min}-${max}',\n      },\n      pattern: {\n        mismatch: 'La valeur du champ ${label} ne correspond pas au modèle ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Aperçu',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ga_IE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ga_IE';\nimport DatePicker from '../date-picker/locale/ga_IE';\nimport TimePicker from '../time-picker/locale/ga_IE';\nimport Calendar from '../calendar/locale/ga_IE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is not a valid ${type}';\n\nconst localeValues: Locale = {\n  locale: 'ga',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Please select',\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remove',\n    selectCurrent: 'Select current page',\n    removeCurrent: 'Remove current page',\n    selectAll: 'Select all data',\n    removeAll: 'Remove all data',\n    selectInvert: 'Invert current page',\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file',\n  },\n  Empty: {\n    description: 'No Data',\n  },\n  Icon: {\n    icon: 'icon',\n  },\n  Text: {\n    edit: 'Edit',\n    copy: 'Copy',\n    copied: 'Copied',\n    expand: 'Expand',\n  },\n  PageHeader: {\n    back: 'Back',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters',\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}',\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/gl_ES.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/gl_ES';\nimport DatePicker from '../date-picker/locale/gl_ES';\nimport TimePicker from '../time-picker/locale/gl_ES';\nimport Calendar from '../calendar/locale/gl_ES';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} non é un ${type} válido';\n\nconst localeValues: Locale = {\n  locale: 'gl',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Escolla',\n  },\n  Table: {\n    filterTitle: 'Filtrar menú',\n    filterConfirm: 'Aceptar',\n    filterReset: 'Reiniciar',\n    selectAll: 'Seleccionar todo',\n    selectInvert: 'Invertir selección',\n    sortTitle: 'Ordenar',\n  },\n  Modal: {\n    okText: 'Aceptar',\n    cancelText: 'Cancelar',\n    justOkText: 'Aceptar',\n  },\n  Popconfirm: {\n    okText: 'Aceptar',\n    cancelText: 'Cancelar',\n  },\n  Transfer: {\n    searchPlaceholder: 'Buscar aquí',\n    itemUnit: 'elemento',\n    itemsUnit: 'elementos',\n  },\n  Upload: {\n    uploading: 'Subindo...',\n    removeFile: 'Eliminar arquivo',\n    uploadError: 'Error ao subir o arquivo',\n    previewFile: 'Vista previa',\n    downloadFile: 'Descargar arquivo',\n  },\n  Empty: {\n    description: 'Non hai datos',\n  },\n  Icon: {\n    icon: 'icona',\n  },\n  Text: {\n    edit: 'editar',\n    copy: 'copiar',\n    copied: 'copiado',\n    expand: 'expandir',\n  },\n  PageHeader: {\n    back: 'voltar',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Error de validación do campo ${label}',\n      required: 'Por favor complete ${label}',\n      enum: '${label} ten que ser un de [${enum}]',\n      whitespace: '${label} non pode ter ningún caracter en branco',\n      date: {\n        format: 'O formato de data ${label} non é válido',\n        parse: '${label} non se pode convertir a unha data',\n        invalid: '${label} é unha data inválida',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} debe ter ${len} caracteres',\n        min: '${label} debe ter como mínimo ${min} caracteres',\n        max: '${label} debe ter ata ${max} caracteres',\n        range: '${label} debe ter entre ${min}-${max} caracteres',\n      },\n      number: {\n        len: '${label} debe ser igual a ${len}',\n        min: '${label} valor mínimo é ${min}',\n        max: '${label} valor máximo é ${max}',\n        range: '${label} debe estar entre ${min}-${max}',\n      },\n      array: {\n        len: 'Debe ser ${len} ${label}',\n        min: 'Como mínimo ${min} ${label}',\n        max: 'Como máximo ${max} ${label}',\n        range: 'O valor de ${label} debe estar entre ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} non coincide co patrón ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/he_IL.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/he_IL';\nimport DatePicker from '../date-picker/locale/he_IL';\nimport TimePicker from '../time-picker/locale/he_IL';\nimport Calendar from '../calendar/locale/he_IL';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} הוא לא ${type} תקין';\n\nconst localeValues: Locale = {\n  locale: 'he',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'אנא בחר',\n  },\n  Table: {\n    filterTitle: 'תפריט סינון',\n    filterConfirm: 'אישור',\n    filterReset: 'איפוס',\n    selectAll: 'בחר הכל',\n    selectInvert: 'הפוך בחירה',\n    selectionAll: 'בחר את כל הנתונים',\n    sortTitle: 'מיון',\n    expand: 'הרחב שורה',\n    collapse: 'צמצם שורהw',\n    triggerDesc: 'לחץ על מיון לפי סדר יורד',\n    triggerAsc: 'לחץ על מיון לפי סדר עולה',\n    cancelSort: 'לחץ כדי לבטל את המיון',\n  },\n  Modal: {\n    okText: 'אישור',\n    cancelText: 'ביטול',\n    justOkText: 'אישור',\n  },\n  Popconfirm: {\n    okText: 'אישור',\n    cancelText: 'ביטול',\n  },\n  Transfer: {\n    searchPlaceholder: 'חפש כאן',\n    itemUnit: 'פריט',\n    itemsUnit: 'פריטים',\n  },\n  Upload: {\n    uploading: 'מעלה...',\n    removeFile: 'הסר קובץ',\n    uploadError: 'שגיאת העלאה',\n    previewFile: 'הצג קובץ',\n    downloadFile: 'הורד קובץ',\n  },\n  Empty: {\n    description: 'אין מידע',\n  },\n  Icon: {\n    icon: 'סמל',\n  },\n  Text: {\n    edit: 'ערוך',\n    copy: 'העתק',\n    copied: 'הועתק',\n    expand: 'הרחב',\n  },\n  PageHeader: {\n    back: 'חזרה',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'ערך השדה שגוי ${label}',\n      required: 'בבקשה הזן ${label}',\n      enum: '${label} חייב להיות אחד מערכים אלו [${enum}]',\n      whitespace: '${label} לא יכול להיות ריק',\n      date: {\n        format: '${label} תאריך לא תקין',\n        parse: '${label} לא ניתן להמיר לתאריך',\n        invalid: '${label} הוא לא תאריך תקין',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} חייב להיות ${len} תווים',\n        min: '${label} חייב להיות ${min} תווים',\n        max: '${label} מקסימום ${max} תווים',\n        range: '${label} חייב להיות בין ${min}-${max} תווים',\n      },\n      number: {\n        len: '${label} חייב להיות שווה ל ${len}',\n        min: '${label} ערך מינימלי הוא ${min}',\n        max: '${label} ערך מקסימלי הוא ${max}',\n        range: '${label} חייב להיות בין ${min}-${max}',\n      },\n      array: {\n        len: 'חייב להיות ${len} ${label}',\n        min: 'מינימום ${min} ${label}',\n        max: 'מקסימום ${max} ${label}',\n        range: 'הסכום של ${label} חייב להיות בין ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} לא תואם לתבנית ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/hi_IN.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/hi_IN';\nimport DatePicker from '../date-picker/locale/hi_IN';\nimport TimePicker from '../time-picker/locale/hi_IN';\nimport Calendar from '../calendar/locale/hi_IN';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} मान्य ${type} नहीं है';\n\nconst localeValues: Locale = {\n  locale: 'hi',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'कृपया चुनें',\n  },\n  Table: {\n    filterTitle: 'सूची बंद करें',\n    filterConfirm: 'अच्छी तरह से',\n    filterReset: 'रीसेट',\n    filterEmptyText: 'कोई फ़िल्टर नहीं',\n    emptyText: 'कोई जानकारी नहीं',\n    selectAll: 'वर्तमान पृष्ठ का चयन करें',\n    selectInvert: 'वर्तमान पृष्ठ घुमाएं',\n    selectNone: 'सभी डेटा साफ़ करें',\n    selectionAll: 'सभी डेटा का चयन करें',\n    sortTitle: 'द्वारा क्रमबद्ध करें',\n    expand: 'पंक्ति का विस्तार करें',\n    collapse: 'पंक्ति संक्षिप्त करें',\n    triggerDesc: 'अवरोही क्रमित करने के लिए क्लिक करें',\n    triggerAsc: 'आरोही क्रमित करने के लिए क्लिक करें',\n    cancelSort: 'छँटाई रद्द करने के लिए क्लिक करें',\n  },\n  Modal: {\n    okText: 'अच्छी तरह से',\n    cancelText: 'रद्द करना',\n    justOkText: 'अच्छी तरह से',\n  },\n  Popconfirm: {\n    okText: 'अच्छी तरह से',\n    cancelText: 'रद्द करना',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'यहां खोजें',\n    itemUnit: 'तत्त्व',\n    itemsUnit: 'विषय-वस्तु',\n    remove: 'हटाए',\n    selectCurrent: 'वर्तमान पृष्ठ का चयन करें',\n    removeCurrent: 'वर्तमान पृष्ठ हटाएं',\n    selectAll: 'सभी डेटा का चयन करें',\n    removeAll: 'सभी डेटा हटाएं',\n    selectInvert: 'वर्तमान पृष्ठ को उल्टा करें',\n  },\n  Upload: {\n    uploading: 'अपलोड हो रहा...',\n    removeFile: 'फ़ाइल निकालें',\n    uploadError: 'अपलोड में त्रुटि',\n    previewFile: 'फ़ाइल पूर्वावलोकन',\n    downloadFile: 'फ़ाइल डाउनलोड करें',\n  },\n  Empty: {\n    description: 'कोई आकड़ा उपलब्ध नहीं है',\n  },\n  Icon: {\n    icon: 'आइकन',\n  },\n  Text: {\n    edit: 'संपादित करें',\n    copy: 'प्रतिलिपि',\n    copied: 'कॉपी किया गया',\n    expand: 'विस्तार',\n  },\n  PageHeader: {\n    back: 'वापस',\n  },\n  Form: {\n    optional: '(ऐच्छिक)',\n    defaultValidateMessages: {\n      default: '${label} के लिए फील्ड सत्यापन त्रुटि',\n      required: 'कृपया ${label} दर्ज करें',\n      enum: '${label} [${enum}] में से एक होना चाहिए',\n      whitespace: '${label} एक खाली अक्षर नहीं हो सकता',\n      date: {\n        format: '${label} तिथि प्रारूप अमान्य है',\n        parse: '${label} को तारीख में नहीं बदला जा सकता',\n        invalid: '${label} एक अमान्य तिथि है',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ${len} अक्षर का होना चाहिए',\n        min: '${label} कम से कम ${min} वर्णों का होना चाहिए',\n        max: '${label} अधिकतम ${max} वर्णों का होना चाहिए',\n        range: '${label} ${min}-${max} वर्णों के बीच होना चाहिए',\n      },\n      number: {\n        len: '${label} ${len} के बराबर होना चाहिए',\n        min: '${label} कम से कम ${min} होना चाहिए',\n        max: '${label} अधिकतम ${max} होना चाहिए',\n        range: '${label} ${min}-${max} के बीच होना चाहिए',\n      },\n      array: {\n        len: '${len} ${label} होना चाहिए',\n        min: 'कम से कम ${min} ${label}',\n        max: 'ज्यादा से ज्यादा ${max} ${label}',\n        range: '${label} की राशि ${min}-${max} के बीच होनी चाहिए',\n      },\n      pattern: {\n        mismatch: '${label} ${pattern} पैटर्न से मेल नहीं खाता',\n      },\n    },\n  },\n  Image: {\n    preview: 'पूर्वावलोकन',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/hr_HR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/hr_HR';\nimport DatePicker from '../date-picker/locale/hr_HR';\nimport TimePicker from '../time-picker/locale/hr_HR';\nimport Calendar from '../calendar/locale/hr_HR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} nije valjan ${type}';\n\nconst localeValues: Locale = {\n  locale: 'hr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Molimo označite',\n  },\n  Table: {\n    filterTitle: 'Filter meni',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'Nema filtera',\n    emptyText: 'Nema podataka',\n    selectAll: 'Označi trenutnu stranicu',\n    selectInvert: 'Invertiraj trenutnu stranicu',\n    selectionAll: 'Odaberite sve podatke',\n    sortTitle: 'Sortiraj',\n    expand: 'Proširi redak',\n    collapse: 'Sažmi redak',\n    triggerDesc: 'Kliknite za sortiranje silazno',\n    triggerAsc: 'Kliknite za sortiranje uzlazno',\n    cancelSort: 'Kliknite da biste otkazali sortiranje',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Odustani',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Odustani',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Pretraži ovdje',\n    itemUnit: 'stavka',\n    itemsUnit: 'stavke',\n    remove: 'Ukloniti',\n    selectCurrent: 'Odaberite trenutnu stranicu',\n    removeCurrent: 'Ukloni trenutnu stranicu',\n    selectAll: 'Odaberite sve podatke',\n    removeAll: 'Uklonite sve podatke',\n    selectInvert: 'Obrni trenutnu stranicu',\n  },\n  Upload: {\n    uploading: 'Upload u tijeku...',\n    removeFile: 'Makni datoteku',\n    uploadError: 'Greška kod uploada',\n    previewFile: 'Pogledaj datoteku',\n    downloadFile: 'Preuzmi datoteku',\n  },\n  Empty: {\n    description: 'Nema podataka',\n  },\n  Icon: {\n    icon: 'ikona',\n  },\n  Text: {\n    edit: 'Uredi',\n    copy: 'Kopiraj',\n    copied: 'Kopiranje uspješno',\n    expand: 'Proširi',\n  },\n  PageHeader: {\n    back: 'Natrag',\n  },\n  Form: {\n    optional: '(neobavezno)',\n    defaultValidateMessages: {\n      default: 'Pogreška provjere valjanosti polja za ${label}',\n      required: 'Molimo unesite ${label}',\n      enum: '${label} mora biti jedan od [${enum}]',\n      whitespace: '${label} ne može biti prazan znak',\n      date: {\n        format: '${label} format datuma je nevažeći',\n        parse: '${label} ne može se pretvoriti u datum',\n        invalid: '${label} je nevažeći datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} mora biti ${len} slova',\n        min: '${label} mora biti najmanje ${min} slova',\n        max: '${label} mora biti do ${max} slova',\n        range: '${label} mora biti između ${min}-${max} slova',\n      },\n      number: {\n        len: '${label} mora biti jednak ${len}',\n        min: '${label} mora biti minimalano ${min}',\n        max: '${label} mora biti maksimalano ${max}',\n        range: '${label} mora biti između ${min}-${max}',\n      },\n      array: {\n        len: 'Mora biti ${len} ${label}',\n        min: 'Najmanje ${min} ${label}',\n        max: 'Najviše ${max} ${label}',\n        range: 'Količina ${label} mora biti između ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} ne odgovara obrascu ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Pregled',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/hu_HU.ts",
    "content": "import Pagination from '../vc-pagination/locale/hu_HU';\nimport DatePicker from '../date-picker/locale/hu_HU';\nimport TimePicker from '../time-picker/locale/hu_HU';\nimport Calendar from '../calendar/locale/hu_HU';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'hu',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Szűrők',\n    filterConfirm: 'Alkalmazás',\n    filterReset: 'Visszaállítás',\n    selectAll: 'Jelenlegi oldal kiválasztása',\n    selectInvert: 'Jelenlegi oldal inverze',\n    sortTitle: 'Rendezés',\n  },\n  Modal: {\n    okText: 'Alkalmazás',\n    cancelText: 'Visszavonás',\n    justOkText: 'Alkalmazás',\n  },\n  Popconfirm: {\n    okText: 'Alkalmazás',\n    cancelText: 'Visszavonás',\n  },\n  Transfer: {\n    searchPlaceholder: 'Keresés',\n    itemUnit: 'elem',\n    itemsUnit: 'elemek',\n  },\n  Upload: {\n    uploading: 'Feltöltés...',\n    removeFile: 'Fájl eltávolítása',\n    uploadError: 'Feltöltési hiba',\n    previewFile: 'Fájl előnézet',\n    downloadFile: 'Fájl letöltése',\n  },\n  Empty: {\n    description: 'Nincs adat',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/hy_AM.ts",
    "content": "import type { Locale } from '../locale-provider';\nimport type { PickerLocale } from '../date-picker/generatePicker';\n\nconst datePickerLocale: PickerLocale = {\n  lang: {\n    locale: 'hy-am',\n    placeholder: 'Ընտրեք ամսաթիվը',\n    rangePlaceholder: ['Մեկնարկի ամսաթիվ', 'Ավարտի ամսաթիվը'],\n    today: 'Այսօր',\n    now: 'Հիմա',\n    backToToday: 'Վերադառնալ այսօր',\n    ok: 'Օկ',\n    clear: 'Մաքրել',\n    month: 'Ամիս',\n    year: 'Տարի',\n    timeSelect: 'ընտրեք ժամը',\n    dateSelect: 'ընտրեք ամսաթիվը',\n    weekSelect: 'Ընտրեք շաբաթը',\n    monthSelect: 'Ընտրեք ամիսը',\n    yearSelect: 'Ընտրեք տարին',\n    decadeSelect: 'Ընտրեք տասնամյակը',\n    yearFormat: 'YYYY',\n    dateFormat: 'DD/MM//YYYY',\n    dayFormat: 'DD',\n    dateTimeFormat: 'DD/MM//YYYY HH:mm:ss',\n    monthBeforeYear: true,\n    previousMonth: 'Անցած ամիս (PageUp)',\n    nextMonth: 'Մյուս ամիս (PageDown)',\n    previousYear: 'Անցած տարի (Control + left)',\n    nextYear: 'Մյուս տարի (Control + right)',\n    previousDecade: 'Անցած տասնամյակ',\n    nextDecade: 'Մյուս տասնամյակ',\n    previousCentury: 'Անցած դար',\n    nextCentury: 'Մյուս դար',\n  },\n  timePickerLocale: {\n    placeholder: 'Ընտրեք ժամը',\n  },\n};\n\nconst localeValues: Locale = {\n  locale: 'hy-am',\n  Pagination: {\n    // Options.jsx\n    items_per_page: '/ էջ',\n    jump_to: 'Գնալ',\n    jump_to_confirm: 'հաստատել',\n    page: '',\n\n    // Pagination.jsx\n    prev_page: 'Նախորդ Էջ',\n    next_page: 'Հաջորդ Էջ',\n    prev_5: 'Նախորդ 5 Էջերը',\n    next_5: 'Հաջորդ 5 Էջերը',\n    prev_3: 'Նախորդ 3 Էջերը',\n    next_3: 'Հաջորդ 3 Էջերը',\n  },\n  DatePicker: datePickerLocale,\n  TimePicker: {\n    placeholder: 'Ընտրեք ժամը',\n  },\n  Calendar: datePickerLocale,\n  global: {\n    placeholder: 'Ընտրեք',\n  },\n  Table: {\n    filterTitle: 'ֆիլտրի ընտրացանկ',\n    filterConfirm: 'ֆիլտրել',\n    filterReset: 'Զրոյացնել',\n    selectAll: 'Ընտրեք ընթացիկ էջը',\n    selectInvert: 'Փոխարկել ընթացիկ էջը',\n    sortTitle: 'Տեսակավորել',\n    expand: 'Ընդլայնեք տողը',\n    collapse: 'Կրճատել տողը',\n  },\n  Modal: {\n    okText: 'Օկ',\n    cancelText: 'Չեղարկել',\n    justOkText: 'Օկ',\n  },\n  Popconfirm: {\n    okText: 'Հաստատել',\n    cancelText: 'Մերժել',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Որոնեք այստեղ',\n    itemUnit: 'պարագան',\n    itemsUnit: 'պարագաները',\n  },\n  Upload: {\n    uploading: 'Ներբեռնում...',\n    removeFile: 'Հեռացնել ֆայլը',\n    uploadError: 'Ներբեռնման սխալ',\n    previewFile: 'Դիտել ֆայլը',\n    downloadFile: 'Ներբեռնել ֆայլը',\n  },\n  Empty: {\n    description: 'Տվյալներ չկան',\n  },\n  Icon: {\n    icon: 'պատկեր',\n  },\n  Text: {\n    edit: 'Խմբագրել',\n    copy: 'Պատճենել',\n    copied: 'Պատճենվել է',\n    expand: 'Տեսնել ավելին',\n  },\n  PageHeader: {\n    back: 'Հետ',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/id_ID.ts",
    "content": "import Pagination from '../vc-pagination/locale/id_ID';\nimport DatePicker from '../date-picker/locale/id_ID';\nimport TimePicker from '../time-picker/locale/id_ID';\nimport Calendar from '../calendar/locale/id_ID';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'id',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Saring',\n    filterConfirm: 'OK',\n    filterReset: 'Hapus',\n    selectAll: 'Pilih semua di halaman ini',\n    selectInvert: 'Balikkan pilihan di halaman ini',\n    sortTitle: 'Urutkan',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Batal',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Batal',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Cari',\n    itemUnit: 'item',\n    itemsUnit: 'item',\n  },\n  Upload: {\n    uploading: 'Mengunggah...',\n    removeFile: 'Hapus file',\n    uploadError: 'Kesalahan pengunggahan',\n    previewFile: 'File pratinjau',\n    downloadFile: 'Unduh berkas',\n  },\n  Empty: {\n    description: 'Tidak ada data',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/index.tsx",
    "content": "import type { App, VNode, PropType } from 'vue';\nimport { provide, defineComponent, reactive, watch } from 'vue';\nimport type { ModalLocale } from '../modal/locale';\nimport { changeConfirmLocale } from '../modal/locale';\nimport warning from '../_util/warning';\nimport { withInstall } from '../_util/type';\nimport type { ValidateMessages } from '../form/interface';\nimport type { TransferLocale } from '../transfer';\nimport type { PickerLocale as DatePickerLocale } from '../date-picker/generatePicker';\nimport type { PaginationLocale } from '../pagination/Pagination';\nimport type { TableLocale } from '../table/interface';\nimport type { UploadLocale } from '../upload/interface';\nimport type { TourLocale } from '../tour/interface';\n\ninterface TransferLocaleForEmpty {\n  description: string;\n}\nexport interface Locale {\n  locale: string;\n  Pagination?: PaginationLocale;\n  Table?: TableLocale;\n  Popconfirm?: Record<string, any>;\n  Form?: {\n    optional?: string;\n    defaultValidateMessages: ValidateMessages;\n  };\n  Image?: {\n    preview: string;\n  };\n  DatePicker?: DatePickerLocale;\n  TimePicker?: Record<string, any>;\n  Calendar?: Record<string, any>;\n  Modal?: ModalLocale;\n  Transfer?: Partial<TransferLocale>;\n  Select?: Record<string, any>;\n  Upload?: UploadLocale;\n  Empty?: TransferLocaleForEmpty;\n  global?: Record<string, any>;\n  PageHeader?: { back: string };\n  Icon?: Record<string, any>;\n  Text?: {\n    edit?: any;\n    copy?: any;\n    copied?: any;\n    expand?: any;\n  };\n  Tour?: TourLocale;\n  QRCode?: {\n    expired?: string;\n    refresh?: string;\n    scanned?: string;\n  };\n}\n\nexport interface LocaleProviderProps {\n  locale: Locale;\n  children?: VNode | VNode[];\n  ANT_MARK__?: string;\n}\n\nexport const ANT_MARK = 'internalMark';\n\nconst LocaleProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ALocaleProvider',\n  props: {\n    locale: {\n      type: Object as PropType<Locale>,\n    },\n    ANT_MARK__: String,\n  },\n  setup(props, { slots }) {\n    warning(\n      props.ANT_MARK__ === ANT_MARK,\n      'LocaleProvider',\n      '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead',\n    );\n    const state = reactive({\n      antLocale: {\n        ...props.locale,\n        exist: true,\n      },\n      ANT_MARK__: ANT_MARK,\n    });\n    provide('localeData', state);\n    watch(\n      () => props.locale,\n      locale => {\n        changeConfirmLocale(locale && locale.Modal);\n        state.antLocale = {\n          ...locale,\n          exist: true,\n        } as any;\n      },\n      { immediate: true },\n    );\n\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n\n/* istanbul ignore next */\nLocaleProvider.install = function (app: App) {\n  app.component(LocaleProvider.name, LocaleProvider);\n  return app;\n};\n\nexport default withInstall(LocaleProvider);\n"
  },
  {
    "path": "components/locale/is_IS.ts",
    "content": "import Pagination from '../vc-pagination/locale/is_IS';\nimport DatePicker from '../date-picker/locale/is_IS';\nimport TimePicker from '../time-picker/locale/is_IS';\nimport Calendar from '../calendar/locale/is_IS';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'is',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Afmarkanir',\n    filterConfirm: 'Staðfesta',\n    filterReset: 'Núllstilla',\n    selectAll: 'Velja allt',\n    selectInvert: 'Viðsnúa vali',\n  },\n  Modal: {\n    okText: 'Áfram',\n    cancelText: 'Hætta við',\n    justOkText: 'Í lagi',\n  },\n  Popconfirm: {\n    okText: 'Áfram',\n    cancelText: 'Hætta við',\n  },\n  Transfer: {\n    searchPlaceholder: 'Leita hér',\n    itemUnit: 'færsla',\n    itemsUnit: 'færslur',\n  },\n  Upload: {\n    uploading: 'Hleð upp...',\n    removeFile: 'Fjarlægja skrá',\n    uploadError: 'Villa við að hlaða upp',\n    previewFile: 'Forskoða skrá',\n    downloadFile: 'Hlaða niður skrá',\n  },\n  Empty: {\n    description: 'Engin gögn',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/it_IT.ts",
    "content": "import Pagination from '../vc-pagination/locale/it_IT';\nimport DatePicker from '../date-picker/locale/it_IT';\nimport TimePicker from '../time-picker/locale/it_IT';\nimport Calendar from '../calendar/locale/it_IT';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'it',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Selezionare',\n  },\n  Table: {\n    filterTitle: 'Menù Filtro',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    selectAll: 'Seleziona pagina corrente',\n    selectInvert: 'Inverti selezione nella pagina corrente',\n    sortTitle: 'Ordina',\n    triggerDesc: 'Clicca per ordinare in modo discendente',\n    triggerAsc: '﻿Clicca per ordinare in modo ascendente',\n    cancelSort: 'Clicca per eliminare i filtri',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annulla',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annulla',\n  },\n  Transfer: {\n    searchPlaceholder: 'Cerca qui',\n    itemUnit: 'elemento',\n    itemsUnit: 'elementi',\n  },\n  Upload: {\n    uploading: 'Caricamento...',\n    removeFile: 'Rimuovi il file',\n    uploadError: 'Errore di caricamento',\n    previewFile: 'Anteprima file',\n    downloadFile: 'Download file',\n  },\n  Empty: {\n    description: 'Nessun dato',\n  },\n  Icon: {\n    icon: 'icona',\n  },\n  Text: {\n    edit: 'modifica',\n    copy: 'copia',\n    copied: 'copia effettuata',\n    expand: 'espandi',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ja_JP.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ja_JP';\nimport DatePicker from '../date-picker/locale/ja_JP';\nimport TimePicker from '../time-picker/locale/ja_JP';\nimport Calendar from '../calendar/locale/ja_JP';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label}は有効な${type}ではありません';\n\nconst localeValues: Locale = {\n  locale: 'ja',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'フィルター',\n    filterConfirm: 'OK',\n    filterReset: 'リセット',\n    filterEmptyText: 'フィルターなし',\n    selectAll: 'ページ単位で選択',\n    selectInvert: 'ページ単位で反転',\n    selectionAll: 'すべてを選択',\n    sortTitle: 'ソート',\n    expand: '展開する',\n    collapse: '折り畳む',\n    triggerDesc: 'クリックで降順にソート',\n    triggerAsc: 'クリックで昇順にソート',\n    cancelSort: 'ソートをキャンセル',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'キャンセル',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'キャンセル',\n  },\n  Transfer: {\n    searchPlaceholder: 'ここを検索',\n    itemUnit: 'アイテム',\n    itemsUnit: 'アイテム',\n  },\n  Upload: {\n    uploading: 'アップロード中...',\n    removeFile: 'ファイルを削除',\n    uploadError: 'アップロードエラー',\n    previewFile: 'ファイルをプレビュー',\n    downloadFile: 'ダウンロードファイル',\n  },\n  Empty: {\n    description: 'データがありません',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: '${label}のフィールド検証エラー',\n      required: '${label}を入力してください',\n      enum: '${label}は[${enum}]のいずれかである必要があります',\n      whitespace: '${label}は空白文字にすることはできません',\n      date: {\n        format: '${label}の日付形式は不正です',\n        parse: '${label}は日付に変換できません',\n        invalid: '${label}は不正な日付です',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label}は${len}文字である必要があります',\n        min: '${label}は${min}文字以上である必要があります',\n        max: '${label}は${max}文字以下である必要があります',\n        range: '${label}は${min}-${max}文字の範囲である必要があります',\n      },\n      number: {\n        len: '${label}は${len}と等しい必要があります',\n        min: '${label}の最小値は${min}です',\n        max: '${label}の最大値は${max}です',\n        range: '${label}は${min}-${max}の範囲である必要があります',\n      },\n      array: {\n        len: '${label}は${len}である必要があります',\n        min: '${label}の最小は${min}です',\n        max: '${label}の最大は${max}です',\n        range: '${label}の合計は${min}-${max}の範囲である必要があります',\n      },\n      pattern: {\n        mismatch: '${label}はパターン${pattern}と一致しません',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ka_GE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ka_GE';\nimport DatePicker from '../date-picker/locale/ka_GE';\nimport TimePicker from '../time-picker/locale/ka_GE';\nimport Calendar from '../calendar/locale/ka_GE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} არ არის სწორი ${type}';\n\nconst localeValues: Locale = {\n  locale: 'ka',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'გთხოვთ აირჩიოთ',\n  },\n  Table: {\n    filterTitle: 'ფილტრის მენიუ',\n    filterConfirm: 'კარგი',\n    filterReset: 'გასუფთავება',\n    filterEmptyText: 'ფილტრები არაა',\n    emptyText: 'ინფორმაცია არაა',\n    selectAll: 'აირჩიეთ მიმდინარე გვერდი',\n    selectInvert: 'შეაბრუნეთ მიმდინარე გვერდი',\n    selectNone: 'მონაცემების გასუფთავება',\n    selectionAll: 'ყველას მონიშვნა',\n    sortTitle: 'დალაგება',\n    expand: 'სტრიქონის გაშლა',\n    collapse: 'სტრიქონის შეკუმშვა',\n    triggerDesc: 'დაღმავალი დალაგება',\n    triggerAsc: 'აღმავალი დალაგება',\n    cancelSort: 'დალაგების გაუქმება',\n  },\n  Modal: {\n    okText: 'კარგი',\n    cancelText: 'გაუქმება',\n    justOkText: 'ოკ',\n  },\n  Popconfirm: {\n    okText: 'კარგი',\n    cancelText: 'გაუქმება',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'მოძებნე აქ',\n    itemUnit: 'ერთეული',\n    itemsUnit: 'ერთეულები',\n    remove: 'ამოშლა',\n    selectCurrent: 'მიმდინარე გვერდის არჩევა',\n    removeCurrent: 'მიმდინარე გვერდის ამოშლა',\n    selectAll: 'ყველას მონიშვნა',\n    removeAll: 'ყველას წაშლა',\n    selectInvert: 'მიმდინარე გვერდის შებრუნება',\n  },\n  Upload: {\n    uploading: 'იტვირთება...',\n    removeFile: 'ფაილის ამოშლა',\n    uploadError: 'ატვირთვის შეცდომა',\n    previewFile: 'ფაილის გადახედვა',\n    downloadFile: 'ფაილის ჩამოტვირთვა',\n  },\n  Empty: {\n    description: 'ინფორმაცია არაა',\n  },\n  Icon: {\n    icon: 'ხატულა',\n  },\n  Text: {\n    edit: 'რედაქტირება',\n    copy: 'ასლი',\n    copied: 'ასლი აღებულია',\n    expand: 'გაშლა',\n  },\n  PageHeader: {\n    back: 'უკან',\n  },\n  Form: {\n    optional: '(არასავალდებულო)',\n    defaultValidateMessages: {\n      default: 'ველის შემოწმების შეცდომა ${label}-ისთვის',\n      required: 'გთხოვთ შეიყვანეთ ${label}',\n      enum: '${label} უნდა იყოს ერთ-ერთი [${enum}]-დან',\n      whitespace: '${label} არ შეიძლება იყოს ცარიელი სიმბოლო',\n      date: {\n        format: '${label} თარიღის ფორმატი არასწორია',\n        parse: '${label} თარიღში კონვერტირება არ არის შესაძლებელი',\n        invalid: '${label} არასწორი თარიღია',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} უნდა იყოს ${len} სიმბოლო',\n        min: '${label} უნდა იყოს სულ მცირე ${min} სიმბოლო',\n        max: '${label} უნდა იყოს მაქსიმუმ ${max} სიმბოლო',\n        range: '${label} უნდა იყოს ${min}-${max} სიმბოლოს შორის',\n      },\n      number: {\n        len: '${label} უნდა იყოს ${len} ტოლი',\n        min: '${label} უნდა იყოს მინუმიმ ${min}',\n        max: '${label} უნდა იყოს მაქსიმუმ ${max}',\n        range: '${label} უნდა იყოს ${min}-${max} შორის',\n      },\n      array: {\n        len: 'უნდა იყოს ${len} ${label}',\n        min: 'სულ მცირე ${min} ${label}',\n        max: 'არაუმეტეს ${max} ${label}',\n        range: '${label}-ის რაოდენობა უნდა იყოს ${min}-${max} შორის',\n      },\n      pattern: {\n        mismatch: '${label} არ ერგება შაბლონს ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'გადახედვა',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/kk_KZ.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\n\nimport Pagination from '../vc-pagination/locale/kk_KZ';\nimport DatePicker from '../date-picker/locale/kk_KZ';\nimport TimePicker from '../time-picker/locale/kk_KZ';\nimport Calendar from '../calendar/locale/kk_KZ';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} ${type} типі емес';\n\nconst localeValues: Locale = {\n  locale: 'kk',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Таңдаңыз',\n  },\n  Table: {\n    filterTitle: 'Фильтр',\n    filterConfirm: 'OK',\n    filterReset: 'Тазарту',\n    filterEmptyText: 'Фильтр жоқ',\n    emptyText: 'Деректер жоқ',\n    selectAll: 'Барлығын таңдау',\n    selectInvert: 'Таңдауды төңкеру',\n    selectionAll: 'Барлық деректерді таңдаңыз',\n    sortTitle: 'Сұрыптау',\n    expand: 'Жолды жазу',\n    collapse: 'Жолды бүктеу',\n    triggerDesc: 'Төмендеуді сұрыптау үшін басыңыз',\n    triggerAsc: 'Өсу ретімен сұрыптау үшін басыңыз',\n    cancelSort: 'Сұрыптаудан бас тарту үшін басыңыз',\n  },\n  Modal: {\n    okText: 'Жарайды',\n    cancelText: 'Болдырмау',\n    justOkText: 'Жарайды',\n  },\n  Popconfirm: {\n    okText: 'Жарайды',\n    cancelText: 'Болдырмау',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Іздеу',\n    itemUnit: 'элемент.',\n    itemsUnit: 'элемент.',\n    remove: 'Жою',\n    selectAll: 'Барлық деректерді таңдау',\n    selectCurrent: 'Ағымдағы бетті таңдау',\n    selectInvert: 'Кері тәртіпте көрсету',\n    removeAll: 'Барлық деректерді жою',\n    removeCurrent: 'Ағымдағы парақты өшіру',\n  },\n  Upload: {\n    uploading: 'Жүктеу...',\n    removeFile: 'Файлды жою',\n    uploadError: 'Жүктеу кезінде қате пайда болды',\n    previewFile: 'Файлды алдын ала қарау',\n    downloadFile: 'Файлды жүктеу',\n  },\n  Empty: {\n    description: 'Деректер жоқ',\n  },\n  Icon: {\n    icon: 'белгішесі',\n  },\n  Text: {\n    edit: 'Өңдеу',\n    copy: 'Көшіру',\n    copied: 'Көшірілді',\n    expand: 'Жазу',\n  },\n  PageHeader: {\n    back: 'Артқа',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: '${label} өрісін тексеру қателігі',\n      required: '${label} енгізіңіз',\n      enum: '${label} [${enum}] қатарынан болуы керек',\n      whitespace: '${label} бос болмауы керек',\n      date: {\n        format: '${label} жарамды күн форматы емес',\n        parse: '${label} күнге түрлендірілмейді',\n        invalid: '${label} жарамды күн емес',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ${len} таңбадан тұруы керек',\n        min: '${label} ${min} таңбадан үлкен немесе оған тең болуы керек',\n        max: '${label} ${max} таңбадан кем немесе оған тең болуы керек',\n        range: '${label} ұзындығы ${min}-${max} таңба аралығында болуы керек',\n      },\n      number: {\n        len: '${label} ${len} тең болуы керек',\n        min: '${label} ${min} мәнінен үлкен немесе оған тең болуы керек',\n        max: '${label} ${max} мәнінен аз немесе оған тең болуы керек',\n      },\n      array: {\n        len: '${label} элементтерінің саны ${len} тең болуы керек',\n        min: '${label} элементтерінің саны ${min} көп немесе оған тең болуы керек',\n        max: '${label} элементтерінің саны ${max} аз немесе оған тең болуы керек',\n        range: '${label} элементтерінің саны ${min} - ${max} аралығында болуы керек',\n      },\n      pattern: {\n        mismatch: '${label} ${pattern} мен сәйкес келмейді',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/km_KH.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/km_KH';\nimport DatePicker from '../date-picker/locale/km_KH';\nimport TimePicker from '../time-picker/locale/km_KH';\nimport Calendar from '../calendar/locale/km_KH';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is not a valid ${type}';\n\nconst localeValues: Locale = {\n  locale: 'km',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'បញ្ចីតម្រៀប',\n    filterConfirm: 'យល់ព្រម',\n    filterReset: 'ត្រឡប់ដើម',\n    filterEmptyText: 'គ្មានបញ្ចីតម្រៀប',\n    emptyText: 'គ្មានទិន្នន័យ',\n    selectAll: 'រើសក្នុងទំព័រនេះ',\n    selectInvert: 'បញ្ច្រាសក្នុងទំព័រនេះ',\n    selectNone: 'លុបចេញទាំងអស់',\n    selectionAll: 'រើសយកទាំងអស់',\n    sortTitle: 'តម្រៀប',\n    expand: 'ពន្លាត',\n    collapse: 'បិតបាំង',\n    triggerDesc: 'ចុចដើម្បីរៀបតាមលំដាប់ធំ',\n    triggerAsc: 'ចុចដើម្បីរៀបតាមលំដាប់តូច​',\n    cancelSort: 'ចុចដើម្បីបោះបង់',\n  },\n  Modal: {\n    okText: 'យល់ព្រម',\n    cancelText: 'បោះបង់',\n    justOkText: 'យល់ព្រម',\n  },\n  Popconfirm: {\n    okText: 'យល់ព្រម',\n    cancelText: 'បោះបង់',\n  },\n  Transfer: {\n    searchPlaceholder: 'ស្វែងរកនៅទីនេះ',\n    itemUnit: '',\n    itemsUnit: 'items',\n  },\n  Upload: {\n    uploading: 'កំពុងបញ្ចូលឡើង...',\n    removeFile: 'លុបឯកសារ',\n    uploadError: 'បញ្ចូលមិនជោកជ័យ',\n    previewFile: 'មើលឯកសារ',\n    downloadFile: 'ទាញយកឯកសារ',\n  },\n  Empty: {\n    description: 'គ្មានទិន្នន័យ',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters',\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}',\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/kmr_IQ.ts",
    "content": "import Pagination from '../vc-pagination/locale/kmr_IQ';\nimport DatePicker from '../date-picker/locale/kmr_IQ';\nimport TimePicker from '../time-picker/locale/kmr_IQ';\nimport Calendar from '../calendar/locale/kmr_IQ';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'ku',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Menuê peldanka',\n    filterConfirm: 'Temam',\n    filterReset: 'Jê bibe',\n    selectAll: 'Hemî hilbijêre',\n    selectInvert: 'Hilbijartinan veguhere',\n  },\n  Modal: {\n    okText: 'Temam',\n    cancelText: 'Betal ke',\n    justOkText: 'Temam',\n  },\n  Popconfirm: {\n    okText: 'Temam',\n    cancelText: 'Betal ke',\n  },\n  Transfer: {\n    searchPlaceholder: 'Lêgerîn',\n    itemUnit: 'tişt',\n    itemsUnit: 'tişt',\n  },\n  Upload: {\n    uploading: 'Bardike...',\n    removeFile: 'Pelê rabike',\n    uploadError: 'Xeta barkirine',\n    previewFile: 'Pelê pêşbibîne',\n    downloadFile: 'Pelê dakêşin',\n  },\n  Empty: {\n    description: 'Agahî tune',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/kn_IN.ts",
    "content": "import Pagination from '../vc-pagination/locale/kn_IN';\nimport DatePicker from '../date-picker/locale/kn_IN';\nimport TimePicker from '../time-picker/locale/kn_IN';\nimport Calendar from '../calendar/locale/kn_IN';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'kn',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  // locales for all comoponents\n  global: {\n    placeholder: 'ದಯವಿಟ್ಟು ಆರಿಸಿ',\n  },\n  Table: {\n    filterTitle: 'ಪಟ್ಟಿ ಸೋಸಿ',\n    filterConfirm: 'ಸರಿ',\n    filterReset: 'ಮರುಹೊಂದಿಸಿ',\n    emptyText: 'ಮಾಹಿತಿ ಇಲ್ಲ',\n    selectAll: 'ಪ್ರಸ್ತುತ ಪುಟವನ್ನು ಆಯ್ಕೆಮಾಡಿ',\n    selectInvert: 'ಪ್ರಸ್ತುತ ಪುಟವನ್ನು ತಿರುಗಿಸಿ',\n    sortTitle: 'ವಿಂಗಡಿಸಿ',\n  },\n  Modal: {\n    okText: 'ಸರಿ',\n    cancelText: 'ರದ್ದು',\n    justOkText: 'ಸರಿ',\n  },\n  Popconfirm: {\n    okText: 'ಸರಿ',\n    cancelText: 'ರದ್ದು',\n  },\n  Transfer: {\n    titles: ['', ''],\n    notFoundContent: 'ದೊರೆತಿಲ್ಲ',\n    searchPlaceholder: 'ಇಲ್ಲಿ ಹುಡುಕಿ',\n    itemUnit: 'ವಿಷಯ',\n    itemsUnit: 'ವಿಷಯಗಳು',\n  },\n  Select: {\n    notFoundContent: 'ದೊರೆತಿಲ್ಲ',\n  },\n  Upload: {\n    uploading: 'ಏರಿಸಿ...',\n    removeFile: 'ಫೈಲ್ ತೆಗೆದುಹಾಕಿ',\n    uploadError: 'ಏರಿಸುವ ದೋಷ',\n    previewFile: 'ಫೈಲ್ ಮುನ್ನೋಟ',\n    downloadFile: 'ಫೈಲ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ko_KR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ko_KR';\nimport DatePicker from '../date-picker/locale/ko_KR';\nimport TimePicker from '../time-picker/locale/ko_KR';\nimport Calendar from '../calendar/locale/ko_KR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} 유효하지 않은 ${type}';\n\nconst localeValues: Locale = {\n  locale: 'ko',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: '필터 메뉴',\n    filterConfirm: '확인',\n    filterReset: '초기화',\n    filterEmptyText: '필터 없음',\n    emptyText: '데이터 없음',\n    selectAll: '모두 선택',\n    selectInvert: '선택 반전',\n  },\n  Modal: {\n    okText: '확인',\n    cancelText: '취소',\n    justOkText: '확인',\n  },\n  Popconfirm: {\n    okText: '확인',\n    cancelText: '취소',\n  },\n  Transfer: {\n    searchPlaceholder: '여기에 검색하세요',\n    itemUnit: '개',\n    itemsUnit: '개',\n  },\n  Upload: {\n    uploading: '업로드 중...',\n    removeFile: '파일 삭제',\n    uploadError: '업로드 실패',\n    previewFile: '파일 미리보기',\n    downloadFile: '파일 다운로드',\n  },\n  Empty: {\n    description: '데이터 없음',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: '필드 유효성 검사 오류 ${label}',\n      required: '${label} 입력해 주세요',\n      enum: '${label} [${enum}] 중에 하나여야 합니다',\n      whitespace: '${label} 비워둘 수 없습니다',\n      date: {\n        format: '${label} 유효하지 않은 날짜 형식입니다',\n        parse: '${label} 날짜 형식으로 변환될 수 없습니다',\n        invalid: '${label} 유효하지 않은 날짜입니다',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ${len}글자여야 합니다',\n        min: '${label} 적어도 ${min}글자 이상이어야 합니다',\n        max: '${label} ${max}글자 이하여야 합니다',\n        range: '${label} ${min}-${max}글자 사이어야 합니다',\n      },\n      number: {\n        len: '${label} 값은 ${len}이어야 합니다',\n        min: '${label} 최솟값은 ${min}입니다',\n        max: '${label} 최댓값은 ${max}입니다',\n        range: '${label} 값은 ${min}-${max} 사이어야 합니다',\n      },\n      array: {\n        len: '${len}이어야 합니다 ${label} ',\n        min: '최소 ${min}이어야 합니다 ${label}',\n        max: '최대 ${max}이어야 합니다 ${label}',\n        range: '${label} ${min}-${max} 사이어야 합니다',\n      },\n      pattern: {\n        mismatch: '${label} ${pattern} 패턴과 일치하지 않습니다',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ku_IQ.ts",
    "content": "import Pagination from '../vc-pagination/locale/kmr_IQ';\nimport DatePicker from '../date-picker/locale/kmr_IQ';\nimport TimePicker from '../time-picker/locale/kmr_IQ';\nimport Calendar from '../calendar/locale/kmr_IQ';\nimport type { Locale } from '../locale-provider';\n\n// please use antd/lib/locale/kmr_IQ instead\n// keep this file for compatibility\n// https://github.com/ant-design/ant-design/issues/25778\n\nconst localeValues: Locale = {\n  locale: 'ku-iq',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Menuê peldanka',\n    filterConfirm: 'Temam',\n    filterReset: 'Jê bibe',\n    selectAll: 'Hemî hilbijêre',\n    selectInvert: 'Hilbijartinan veguhere',\n  },\n  Modal: {\n    okText: 'Temam',\n    cancelText: 'Betal ke',\n    justOkText: 'Temam',\n  },\n  Popconfirm: {\n    okText: 'Temam',\n    cancelText: 'Betal ke',\n  },\n  Transfer: {\n    searchPlaceholder: 'Lêgerîn',\n    itemUnit: 'tişt',\n    itemsUnit: 'tişt',\n  },\n  Upload: {\n    uploading: 'Bardike...',\n    removeFile: 'Pelê rabike',\n    uploadError: 'Xeta barkirine',\n    previewFile: 'Pelê pêşbibîne',\n    downloadFile: 'Pelê dakêşin',\n  },\n  Empty: {\n    description: 'Agahî tune',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/lt_LT.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\n\nimport Pagination from '../vc-pagination/locale/lt_LT';\nimport DatePicker from '../date-picker/locale/lt_LT';\nimport TimePicker from '../time-picker/locale/lt_LT';\nimport Calendar from '../calendar/locale/lt_LT';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} не является типом ${type}';\n\nconst localeValues: Locale = {\n  locale: 'lt',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtras',\n    filterConfirm: 'Gerai',\n    filterReset: 'Atstatyti',\n    filterEmptyText: 'Be filtrų',\n    emptyText: 'Nėra duomenų',\n    selectAll: 'Pasirinkti viską',\n    selectInvert: 'Apversti pasirinkimą',\n    selectionAll: 'Rinktis visus',\n    sortTitle: 'Rikiavimas',\n    expand: 'Išskleisti',\n    collapse: 'Suskleisti',\n    triggerDesc: 'Spustelėkite norėdami rūšiuoti mažėjančia tvarka',\n    triggerAsc: 'Spustelėkite norėdami rūšiuoti didėjančia tvarka',\n    cancelSort: 'Spustelėkite, kad atšauktumėte rūšiavimą',\n  },\n  Modal: {\n    okText: 'Taip',\n    cancelText: 'Atšaukti',\n    justOkText: 'Gerai',\n  },\n  Popconfirm: {\n    okText: 'Taip',\n    cancelText: 'Atšaukti',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Paieška',\n    itemUnit: 'vnt.',\n    itemsUnit: 'vnt.',\n    remove: 'Pašalinti',\n    selectAll: 'Pasirinkti visus',\n    selectCurrent: 'Pasirinkite dabartinį puslapį',\n    selectInvert: 'Atkeist pasirinkimą',\n    removeAll: 'Ištrinti visus duomenis',\n    removeCurrent: 'Ištrinti dabartinį puslapį',\n  },\n  Upload: {\n    uploading: 'Gaunami duomenys...',\n    removeFile: 'Ištrinti failą',\n    uploadError: 'Įkeliant įvyko klaida',\n    previewFile: 'Failo peržiūra',\n    downloadFile: 'Įkelti failą',\n  },\n  Empty: {\n    description: 'Nėra duomenų',\n  },\n  Icon: {\n    icon: 'piktograma',\n  },\n  Text: {\n    edit: 'Redaguoti',\n    copy: 'Kopijuoti',\n    copied: 'Nukopijuota',\n    expand: 'Plačiau',\n  },\n  PageHeader: {\n    back: 'Atgal',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Laukelio klaida ${label}',\n      required: 'Prašome įvesti ${label}',\n      enum: '${label} turėtu būti vienas iš [${enum}]',\n      whitespace: '${label} negali likti tuščiu',\n      date: {\n        format: '${label} neteisingas datos formatas',\n        parse: '${label} negali būti konvertuotas į datą',\n        invalid: '${label} neatitinka datos formato',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} turi būti ${len} simbolių',\n        min: '${label} turi būti ilgesnis nei ${min} simbolių',\n        max: '${label} turi būti ne trumpesnis ${max} simbolių',\n        range: 'Lauko ${label} reikšmės ribos ${min}-${max} simbolių',\n      },\n      number: {\n        len: '${label} turi būti lygi ${len}',\n        min: '${label} turi būti lygus arba didesnis ${min}',\n        max: '${label} turi būti lygus arba mažesnis ${max}',\n      },\n      array: {\n        len: 'Pasirinktas kiekis ${label} turi būti lygus ${len}',\n        min: 'Pasirinktas kiekis ${label} turi būti lygus arba didesnis ${min}',\n        max: 'Pasirinktas kiekis ${label} turi būti lygus arba mažesnis ${max}',\n        range: 'Pasirinktas kiekis ${label} turi būti tarp ${min} и ${max}',\n      },\n      pattern: {\n        mismatch: '${label} neatitinka modelio ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/lv_LV.ts",
    "content": "import Pagination from '../vc-pagination/locale/lv_LV';\nimport DatePicker from '../date-picker/locale/lv_LV';\nimport TimePicker from '../time-picker/locale/lv_LV';\nimport Calendar from '../calendar/locale/lv_LV';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'lv',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtrēšanas izvēlne',\n    filterConfirm: 'OK',\n    filterReset: 'Atiestatīt',\n    selectAll: 'Atlasiet pašreizējo lapu',\n    selectInvert: 'Pārvērst pašreizējo lapu',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Atcelt',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Atcelt',\n  },\n  Transfer: {\n    searchPlaceholder: 'Meklēt šeit',\n    itemUnit: 'vienumu',\n    itemsUnit: 'vienumus',\n  },\n  Upload: {\n    uploading: 'Augšupielāde...',\n    removeFile: 'Noņemt failu',\n    uploadError: 'Augšupielādes kļūda',\n    previewFile: 'Priekšskatiet failu',\n    downloadFile: 'Lejupielādēt failu',\n  },\n  Empty: {\n    description: 'Nav datu',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/mk_MK.ts",
    "content": "import Pagination from '../vc-pagination/locale/mk_MK';\nimport DatePicker from '../date-picker/locale/mk_MK';\nimport TimePicker from '../time-picker/locale/mk_MK';\nimport Calendar from '../calendar/locale/mk_MK';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'mk',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Ве молиме означете',\n  },\n  Table: {\n    filterTitle: 'Мени за филтрирање',\n    filterConfirm: 'ОК',\n    filterReset: 'Избриши',\n    selectAll: 'Одбери страница',\n    selectInvert: 'Инвертирај страница',\n  },\n  Modal: {\n    okText: 'ОК',\n    cancelText: 'Откажи',\n    justOkText: 'ОК',\n  },\n  Popconfirm: {\n    okText: 'ОК',\n    cancelText: 'Откажи',\n  },\n  Transfer: {\n    searchPlaceholder: 'Пребарај тука',\n    itemUnit: 'предмет',\n    itemsUnit: 'предмети',\n  },\n  Upload: {\n    uploading: 'Се прикачува...',\n    removeFile: 'Избриши фајл',\n    uploadError: 'Грешка при прикачување',\n    previewFile: 'Прикажи фајл',\n    downloadFile: 'Преземи фајл',\n  },\n  Empty: {\n    description: 'Нема податоци',\n  },\n  Icon: {\n    icon: 'Икона',\n  },\n  Text: {\n    edit: 'Уреди',\n    copy: 'Копирај',\n    copied: 'Копирано',\n    expand: 'Зголеми',\n  },\n  PageHeader: {\n    back: 'Назад',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ml_IN.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ml_IN';\nimport DatePicker from '../date-picker/locale/ml_IN';\nimport TimePicker from '../time-picker/locale/ml_IN';\nimport Calendar from '../calendar/locale/ml_IN';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} അസാധുവായ ${type} ആണ്';\n\nconst localeValues: Locale = {\n  locale: 'ml',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'ദയവായി തിരഞ്ഞെടുക്കുക',\n  },\n  Table: {\n    filterTitle: 'ഫിൽറ്റർ',\n    filterConfirm: 'ശരിയാണ്',\n    filterReset: 'പുനഃക്രമീകരിക്കുക',\n    filterEmptyText: 'ഫിൽറ്ററുകളൊന്നുമില്ല',\n    emptyText: 'ഡാറ്റയൊന്നുമില്ല',\n    selectAll: 'നിലവിലെ പേജ് തിരഞ്ഞെടുക്കുക',\n    selectInvert: 'നിലവിലെ പേജിൽ ഇല്ലാത്തത് തിരഞ്ഞെടുക്കുക',\n    selectNone: 'എല്ലാ ഡാറ്റയും നീക്കം ചെയ്യുക',\n    selectionAll: 'എല്ലാ ഡാറ്റയും തിരഞ്ഞെടുക്കുക',\n    sortTitle: 'ക്രമമാക്കുക',\n    expand: 'വരി വികസിപ്പിക്കുക',\n    collapse: 'വരി ചുരുക്കുക',\n    triggerDesc: 'അവരോഹണ ക്രമത്തിനായി ക്ലിക്ക് ചെയ്യുക',\n    triggerAsc: 'ആരോഹണ ക്രമത്തിനായി ക്ലിക്ക് ചെയ്യുക',\n    cancelSort: 'ക്രമീകരണം ഒഴിവാക്കുന്നതിനായി ക്ലിക്ക് ചെയ്യുക',\n  },\n  Modal: {\n    okText: 'ശരിയാണ്',\n    cancelText: 'റദ്ദാക്കുക',\n    justOkText: 'ശരിയാണ്',\n  },\n  Popconfirm: {\n    okText: 'ശരിയാണ്',\n    cancelText: 'റദ്ദാക്കുക',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'ഇവിടെ തിരയുക',\n    itemUnit: 'ഇനം',\n    itemsUnit: 'ഇനങ്ങൾ',\n    remove: 'നീക്കം ചെയ്യുക',\n    selectCurrent: 'നിലവിലെ പേജ് തിരഞ്ഞെടുക്കുക',\n    removeCurrent: 'നിലവിലെ പേജ് നീക്കം ചെയ്യുക',\n    selectAll: 'എല്ലാ ഡാറ്റയും തിരഞ്ഞെടുക്കുക',\n    removeAll: 'എല്ലാ ഡാറ്റയും നീക്കം ചെയ്യുക',\n    selectInvert: 'നിലവിലെ പേജിൽ ഇല്ലാത്തത് തിരഞ്ഞെടുക്കുക',\n  },\n  Upload: {\n    uploading: 'അപ്‌ലോഡ് ചെയ്തു കൊണ്ടിരിക്കുന്നു...',\n    removeFile: 'ഫയൽ നീക്കം ചെയ്യുക',\n    uploadError: 'അപ്‌ലോഡിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു',\n    previewFile: 'ഫയൽ പ്രിവ്യൂ ചെയ്യുക',\n    downloadFile: 'ഫയൽ ഡൗൺലോഡ് ചെയ്യുക',\n  },\n  Empty: {\n    description: 'ഡാറ്റയൊന്നുമില്ല',\n  },\n  Icon: {\n    icon: 'ഐക്കൺ',\n  },\n  Text: {\n    edit: 'തിരുത്തുക',\n    copy: 'കോപ്പി ചെയ്യുക',\n    copied: 'കോപ്പി ചെയ്തു',\n    expand: 'വികസിപ്പിക്കുക',\n  },\n  PageHeader: {\n    back: 'തിരികെ',\n  },\n  Form: {\n    optional: '(optional)',\n    defaultValidateMessages: {\n      default: '${label} ഫീൽഡിൽ വാലിഡേഷൻ പിശകുണ്ട്',\n      required: 'ദയവായി ${label} രേഖപ്പെടുത്തുക',\n      enum: '${label} നിർബന്ധമായും [${enum}]-ൽ നിന്നുള്ളതായിരിക്കണം',\n      whitespace: '${label} ശൂന്യമായി വെക്കാനാകില്ല',\n      date: {\n        format: '${label} തീയതി രൂപരേഖ അസാധുവാണ്',\n        parse: '${label} ഒരു തീയതിയാക്കി മാറ്റാൻ സാധിക്കില്ല',\n        invalid: '${label} ഒരു അസാധുവായ തീയതി ആണ്',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} നിർബന്ധമായും ${len} അക്ഷരങ്ങൾ ഉണ്ടായിരിക്കണം',\n        min: '${label} നിർബന്ധമായും ${min} അക്ഷരങ്ങൾ എങ്കിലും ഉണ്ടായിരിക്കണം',\n        max: '${label} നിർബന്ധമായും ${max} അക്ഷരങ്ങളിൽ കൂടാൻ പാടില്ല',\n        range: '${label} നിർബന്ധമായും ${min}-നും ${max}-നും ഇടയിൽ അക്ഷരങ്ങൾ ഉള്ളതായിരിക്കണം',\n      },\n      number: {\n        len: '${label} നിർബന്ധമായും ${len}-നു തുല്യമായിരിക്കണം',\n        min: '${label} നിർബന്ധമായും ${min}-ൽ കുറയാൻ പാടില്ല',\n        max: '${label} നിർബന്ധമായും ${max}-ൽ കൂടാൻ പാടില്ല',\n        range: '${label} നിർബന്ധമായും ${min}-നും ${max}-നും ഇടയിൽ ആയിരിക്കണം',\n      },\n      array: {\n        len: 'നിർബന്ധമായും ${len} ${label} ഉണ്ടായിരിക്കണം',\n        min: 'കുറഞ്ഞപക്ഷം ${min} ${label} എങ്കിലും ഉണ്ടായിരിക്കണം',\n        max: 'അങ്ങേയറ്റം ${max} ${label} ആയിരിക്കണം',\n        range: '${label}-ന്റെ എണ്ണം നിർബന്ധമായും ${min}-നും ${max}-നും ഇടയിൽ ആയിരിക്കണം',\n      },\n      pattern: {\n        mismatch: '${label} ${pattern} മാതൃകയുമായി യോജിക്കുന്നില്ല',\n      },\n    },\n  },\n  Image: {\n    preview: 'പ്രിവ്യൂ',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/mn_MN.ts",
    "content": "import Pagination from '../vc-pagination/locale/mn_MN';\nimport DatePicker from '../date-picker/locale/mn_MN';\nimport TimePicker from '../time-picker/locale/mn_MN';\nimport Calendar from '../calendar/locale/mn_MN';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'mn-mn',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Хайх цэс',\n    filterConfirm: 'OK',\n    filterReset: 'Цэвэрлэх',\n    selectAll: 'Бүгдийг сонгох',\n    selectInvert: 'Бусдыг сонгох',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Цуцлах',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Цуцлах',\n  },\n  Transfer: {\n    searchPlaceholder: 'Хайх',\n    itemUnit: 'Зүйл',\n    itemsUnit: 'Зүйлүүд',\n  },\n  Upload: {\n    uploading: 'Хуулж байна...',\n    removeFile: 'Файл устгах',\n    uploadError: 'Хуулахад алдаа гарлаа',\n    previewFile: 'Файлыг түргэн үзэх',\n    downloadFile: 'Файлыг татах',\n  },\n  Empty: {\n    description: 'Мэдээлэл байхгүй байна',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ms_MY.ts",
    "content": "import Pagination from '../vc-pagination/locale/ms_MY';\nimport DatePicker from '../date-picker/locale/ms_MY';\nimport TimePicker from '../time-picker/locale/ms_MY';\nimport Calendar from '../calendar/locale/ms_MY';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'ms-my',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Sila pilih',\n  },\n  PageHeader: {\n    back: 'Kembali',\n  },\n  Text: {\n    edit: 'Sunting',\n    copy: 'Salin',\n    copied: 'Berjaya menyalin',\n    expand: 'Kembang',\n  },\n  Empty: {\n    description: 'Tiada data',\n  },\n  Table: {\n    filterTitle: 'Cari dengan tajuk',\n    filterConfirm: 'OK',\n    filterReset: 'Menetapkan semula',\n    emptyText: 'Tiada data',\n    selectAll: 'Pilih semua',\n    selectInvert: 'Terbalikkan',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Batal',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Batal',\n  },\n  Transfer: {\n    notFoundContent: 'Tidak dijumpai',\n    searchPlaceholder: 'Carian di sini',\n    itemUnit: 'item',\n    itemsUnit: 'item',\n  },\n  Icon: {\n    icon: 'ikon',\n  },\n  Select: {\n    notFoundContent: 'Tidak Dijumpai',\n  },\n  Upload: {\n    uploading: 'Sedang memuat naik...',\n    removeFile: 'Buang fail',\n    uploadError: 'Masalah muat naik',\n    previewFile: 'Tengok fail',\n    downloadFile: 'Muat turun fail',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/nb_NO.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/nb_NO';\nimport DatePicker from '../date-picker/locale/nb_NO';\nimport TimePicker from '../time-picker/locale/nb_NO';\nimport Calendar from '../calendar/locale/nb_NO';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} er ikke et gyldig ${type}';\n\nconst localeValues: Locale = {\n  locale: 'nb',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Vennligst velg',\n  },\n  Table: {\n    filterTitle: 'Filtermeny',\n    filterConfirm: 'OK',\n    filterReset: 'Nullstill',\n    filterEmptyText: 'Ingen filtre',\n    selectAll: 'Velg alle',\n    selectInvert: 'Inverter gjeldende side',\n    selectionAll: 'Velg all data',\n    sortTitle: 'Sorter',\n    expand: 'Utvid rad',\n    collapse: 'Skjul rad',\n    triggerDesc: 'Sorter data i synkende rekkefølge',\n    triggerAsc: 'Sorterer data i stigende rekkefølge',\n    cancelSort: 'Klikk for å avbryte sorteringen',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Avbryt',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Avbryt',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Søk her',\n    itemUnit: 'element',\n    itemsUnit: 'elementer',\n    remove: 'Fjern',\n    selectCurrent: 'Velg gjeldende side',\n    removeCurrent: 'Fjern gjeldende side',\n    selectAll: 'Velg all data',\n    removeAll: 'Fjern all data',\n    selectInvert: 'Inverter gjeldende side',\n  },\n  Upload: {\n    uploading: 'Laster opp...',\n    removeFile: 'Fjern fil',\n    uploadError: 'Feil ved opplastning',\n    previewFile: 'Forhåndsvisning',\n    downloadFile: 'Last ned fil',\n  },\n  Empty: {\n    description: 'Ingen data',\n  },\n  Icon: {\n    icon: 'ikon',\n  },\n  Text: {\n    edit: 'Rediger',\n    copy: 'Kopier',\n    copied: 'Kopiert',\n    expand: 'Utvid',\n  },\n  PageHeader: {\n    back: 'Tilbake',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: 'Feltvalideringsfeil ${label}',\n      required: 'Vennligst skriv inn ${label}',\n      enum: '${label} må være en av [${enum}]',\n      whitespace: '${label} kan ikke være et blankt tegn',\n      date: {\n        format: '${label} datoformatet er ugyldig',\n        parse: '${label} kan ikke konverteres til en dato',\n        invalid: '${label} er en ugyldig dato',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} må være ${len} tegn',\n        min: '${label} må minst ha ${min} tegn',\n        max: '${label} opp til ${max} tegn',\n        range: '${label} må være mellom ${min}-${max} tegn',\n      },\n      number: {\n        len: '${label} må være lik ${len}',\n        min: '${label} minimumsverdien er ${min}',\n        max: '${label} maksimumsverdien er ${max}',\n        range: '${label} må være mellom ${min}-${max}',\n      },\n      array: {\n        len: 'Må være ${len} ${label}',\n        min: 'Må være minst ${min} ${label}',\n        max: 'På det meste ${max} ${label}',\n        range: 'Totalt av ${label} må være mellom ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} stemmer ikke overens med mønsteret ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ne_NP.ts",
    "content": "import Pagination from '../vc-pagination/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nimport Calendar from '../calendar/locale/en_US';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'ne-np',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'फिल्टर मेनु',\n    filterConfirm: 'हो',\n    filterReset: 'रीसेट',\n    selectAll: 'सबै छान्नुुहोस्',\n    selectInvert: 'छनौट उल्टाउनुहोस',\n  },\n  Modal: {\n    okText: 'हो',\n    cancelText: 'होईन',\n    justOkText: 'हो',\n  },\n  Popconfirm: {\n    okText: 'हो',\n    cancelText: 'होईन',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'यहाँ खोज्नुहोस्',\n    itemUnit: 'वस्तु',\n    itemsUnit: 'वस्तुहरू',\n  },\n  Upload: {\n    uploading: 'अपलोड गर्दै...',\n    removeFile: 'फाइल हटाउनुहोस्',\n    uploadError: 'अप्लोडमा समस्या भयो',\n    previewFile: 'फाइल पूर्वावलोकन गर्नुहोस्',\n    downloadFile: 'डाउनलोड फाइल',\n  },\n  Empty: {\n    description: 'डाटा छैन',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/nl_BE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/nl_BE';\nimport DatePicker from '../date-picker/locale/nl_BE';\nimport TimePicker from '../time-picker/locale/nl_BE';\nimport Calendar from '../calendar/locale/nl_BE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is geen geldige ${type}';\n\nconst localeValues: Locale = {\n  locale: 'nl-be',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Maak een selectie',\n  },\n  Table: {\n    cancelSort: 'Klik om sortering te annuleren',\n    collapse: 'Rij inklappen',\n    emptyText: 'Geen data',\n    expand: 'Rij uitklappen',\n    filterConfirm: 'OK',\n    filterEmptyText: 'Geen filters',\n    filterReset: 'Reset',\n    filterTitle: 'Filteren',\n    selectAll: 'Selecteer huidige pagina',\n    selectInvert: 'Keer volgorde om',\n    selectNone: 'Maak selectie leeg',\n    selectionAll: 'Selecteer alle data',\n    sortTitle: 'Sorteren',\n    triggerAsc: 'Klik om oplopend te sorteren',\n    triggerDesc: 'Klik om aflopend te sorteren',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annuleer',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annuleer',\n  },\n  Transfer: {\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Verwijder',\n    removeAll: 'Verwijder alles',\n    removeCurrent: 'Verwijder huidige pagina',\n    searchPlaceholder: 'Zoek hier',\n    selectAll: 'Selecteer alles',\n    selectCurrent: 'Selecteer huidige pagina',\n    selectInvert: 'Huidige pagina omkeren',\n    titles: ['', ''],\n  },\n  Upload: {\n    downloadFile: 'Bestand downloaden',\n    previewFile: 'Preview file',\n    removeFile: 'Verwijder bestand',\n    uploadError: 'Fout tijdens uploaden',\n    uploading: 'Uploaden...',\n  },\n  Empty: {\n    description: 'Geen gegevens',\n  },\n  Icon: {\n    icon: 'icoon',\n  },\n  Text: {\n    edit: 'Bewerken',\n    copy: 'kopiëren',\n    copied: 'Gekopieerd',\n    expand: 'Uitklappen',\n  },\n  PageHeader: {\n    back: 'Terug',\n  },\n  Form: {\n    optional: '(optioneel)',\n    defaultValidateMessages: {\n      default: 'Validatiefout voor ${label}',\n      required: 'Gelieve ${label} in te vullen',\n      enum: '${label} moet één van [${enum}] zijn',\n      whitespace: '${label} mag geen blanco teken zijn',\n      date: {\n        format: '${label} heeft een ongeldig formaat',\n        parse: '${label} kan niet naar een datum omgezet worden',\n        invalid: '${label} is een ongeldige datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} moet ${len} karakters lang zijn',\n        min: '${label} moet minimaal ${min} karakters lang zijn',\n        max: '${label} mag maximaal ${max} karakters lang zijn',\n        range: '${label} moet tussen ${min}-${max} karakters lang zijn',\n      },\n      number: {\n        len: '${label} moet gelijk zijn aan ${len}',\n        min: '${label} moet minimaal ${min} zijn',\n        max: '${label} mag maximaal ${max} zijn',\n        range: '${label} moet tussen ${min}-${max} liggen',\n      },\n      array: {\n        len: 'Moeten ${len} ${label} zijn',\n        min: 'Minimaal ${min} ${label}',\n        max: 'maximaal ${max} ${label}',\n        range: 'Het aantal ${label} moet tussen ${min}-${max} liggen',\n      },\n      pattern: {\n        mismatch: '${label} komt niet overeen met het patroon ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Voorbeeld',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/nl_NL.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/nl_NL';\nimport DatePicker from '../date-picker/locale/nl_NL';\nimport TimePicker from '../time-picker/locale/nl_NL';\nimport Calendar from '../calendar/locale/nl_NL';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} is geen geldige ${type}';\n\nconst localeValues: Locale = {\n  locale: 'nl',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Maak een selectie',\n  },\n  Table: {\n    cancelSort: 'Klik om sortering te annuleren',\n    collapse: 'Rij inklappen',\n    emptyText: 'Geen data',\n    expand: 'Rij uitklappen',\n    filterConfirm: 'OK',\n    filterEmptyText: 'Geen filters',\n    filterReset: 'Reset',\n    filterTitle: 'Filteren',\n    selectAll: 'Selecteer huidige pagina',\n    selectInvert: 'Keer volgorde om',\n    selectNone: 'Maak selectie leeg',\n    selectionAll: 'Selecteer alle data',\n    sortTitle: 'Sorteren',\n    triggerAsc: 'Klik om oplopend te sorteren',\n    triggerDesc: 'Klik om aflopend te sorteren',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Annuleer',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Annuleer',\n  },\n  Transfer: {\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Verwijder',\n    removeAll: 'Verwijder alles',\n    removeCurrent: 'Verwijder huidige pagina',\n    searchPlaceholder: 'Zoek hier',\n    selectAll: 'Selecteer alles',\n    selectCurrent: 'Selecteer huidige pagina',\n    selectInvert: 'Huidige pagina omkeren',\n    titles: ['', ''],\n  },\n  Upload: {\n    downloadFile: 'Bestand downloaden',\n    previewFile: 'Preview file',\n    removeFile: 'Verwijder bestand',\n    uploadError: 'Fout tijdens uploaden',\n    uploading: 'Uploaden...',\n  },\n  Empty: {\n    description: 'Geen gegevens',\n  },\n  Icon: {\n    icon: 'icoon',\n  },\n  Text: {\n    edit: 'Bewerken',\n    copy: 'kopiëren',\n    copied: 'Gekopieerd',\n    expand: 'Uitklappen',\n  },\n  PageHeader: {\n    back: 'Terug',\n  },\n  Form: {\n    optional: '(optioneel)',\n    defaultValidateMessages: {\n      default: 'Validatiefout voor ${label}',\n      required: 'Gelieve ${label} in te vullen',\n      enum: '${label} moet één van [${enum}] zijn',\n      whitespace: '${label} mag geen blanco teken zijn',\n      date: {\n        format: '${label} heeft een ongeldig formaat',\n        parse: '${label} kan niet naar een datum omgezet worden',\n        invalid: '${label} is een ongeldige datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} moet ${len} karakters lang zijn',\n        min: '${label} moet minimaal ${min} karakters lang zijn',\n        max: '${label} mag maximaal ${max} karakters lang zijn',\n        range: '${label} moet tussen ${min}-${max} karakters lang zijn',\n      },\n      number: {\n        len: '${label} moet gelijk zijn aan ${len}',\n        min: '${label} moet minimaal ${min} zijn',\n        max: '${label} mag maximaal ${max} zijn',\n        range: '${label} moet tussen ${min}-${max} liggen',\n      },\n      array: {\n        len: 'Moeten ${len} ${label} zijn',\n        min: 'Minimaal ${min} ${label}',\n        max: 'maximaal ${max} ${label}',\n        range: 'Het aantal ${label} moet tussen ${min}-${max} liggen',\n      },\n      pattern: {\n        mismatch: '${label} komt niet overeen met het patroon ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Voorbeeld',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/pl_PL.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/pl_PL';\nimport DatePicker from '../date-picker/locale/pl_PL';\nimport TimePicker from '../time-picker/locale/pl_PL';\nimport Calendar from '../calendar/locale/pl_PL';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} nie posiada poprawnej wartości dla typu ${type}';\n\nconst localeValues: Locale = {\n  locale: 'pl',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Wybierz',\n  },\n  Table: {\n    filterTitle: 'Menu filtra',\n    filterConfirm: 'OK',\n    filterReset: 'Usuń filtry',\n    filterEmptyText: 'Brak filtrów',\n    filterCheckall: 'Wybierz wszystkie elementy',\n    filterSearchPlaceholder: 'Szukaj w filtrach',\n    emptyText: 'Brak danych',\n    selectAll: 'Zaznacz bieżącą stronę',\n    selectInvert: 'Odwróć zaznaczenie',\n    selectNone: 'Wyczyść',\n    selectionAll: 'Wybierz wszystkie',\n    sortTitle: 'Sortowanie',\n    expand: 'Rozwiń wiersz',\n    collapse: 'Zwiń wiersz',\n    triggerDesc: 'Sortuj malejąco',\n    triggerAsc: 'Sortuj rosnąco',\n    cancelSort: 'Usuń sortowanie',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Anuluj',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Anuluj',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Szukaj',\n    itemUnit: 'obiekt',\n    itemsUnit: 'obiekty',\n    remove: 'Usuń',\n    selectCurrent: 'Wybierz aktualną stronę',\n    removeCurrent: 'Usuń aktualną stronę',\n    selectAll: 'Wybierz wszystkie',\n    removeAll: 'Usuń wszystkie',\n    selectInvert: 'Odwróć wybór',\n  },\n  Upload: {\n    uploading: 'Wysyłanie...',\n    removeFile: 'Usuń plik',\n    uploadError: 'Błąd wysyłania',\n    previewFile: 'Podejrzyj plik',\n    downloadFile: 'Pobieranie pliku',\n  },\n  Empty: {\n    description: 'Brak danych',\n  },\n  Icon: {\n    icon: 'Ikona',\n  },\n  Text: {\n    edit: 'Edytuj',\n    copy: 'Kopiuj',\n    copied: 'Skopiowany',\n    expand: 'Rozwiń',\n  },\n  PageHeader: {\n    back: 'Wstecz',\n  },\n  Form: {\n    optional: '(opcjonalne)',\n    defaultValidateMessages: {\n      default: 'Błąd walidacji dla pola ${label}',\n      required: 'Pole ${label} jest wymagane',\n      enum: 'Pole ${label} musi posiadać wartość z listy: [${enum}]',\n      whitespace: 'Pole ${label} nie może być puste',\n      date: {\n        format: '${label} posiada zły format daty',\n        parse: '${label} nie może zostać zinterpretowane jako data',\n        invalid: '${label} jest niepoprawną datą',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} musi posiadać ${len} znaków',\n        min: '${label} musi posiadać co namniej ${min} znaków',\n        max: '${label} musi posiadać maksymalnie ${max} znaków',\n        range: '${label} musi posiadać między ${min} a ${max} znaków',\n      },\n      number: {\n        len: '${label} musi mieć wartość o długości ${len}',\n        min: '${label} musi mieć wartość większą lub równą ${min}',\n        max: '${label} musi mieć wartość mniejszą lub równą ${max}',\n        range: '${label} musi mieć wartość pomiędzy ${min} a ${max}',\n      },\n      array: {\n        len: '${label} musi posiadać ${len} elementów',\n        min: '${label} musi posiadać co najmniej ${min} elementów',\n        max: '${label} musi posiadać maksymalnie ${max} elementów',\n        range: '${label} musi posiadać między ${min} a ${max} elementów',\n      },\n      pattern: {\n        mismatch: '${label} nie posiada wartości zgodnej ze wzorem ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Podgląd',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/pt_BR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/pt_BR';\nimport DatePicker from '../date-picker/locale/pt_BR';\nimport TimePicker from '../time-picker/locale/pt_BR';\nimport Calendar from '../calendar/locale/pt_BR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} não é um ${type} válido';\n\nconst localeValues: Locale = {\n  locale: 'pt-br',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Por favor escolha',\n  },\n  Table: {\n    filterTitle: 'Menu de Filtro',\n    filterConfirm: 'OK',\n    filterReset: 'Resetar',\n    filterEmptyText: 'Sem filtros',\n    emptyText: 'Sem conteúdo',\n    selectAll: 'Selecionar página atual',\n    selectInvert: 'Inverter seleção',\n    selectNone: 'Apagar todo o conteúdo',\n    selectionAll: 'Selecionar todo o conteúdo',\n    sortTitle: 'Ordenar título',\n    expand: 'Expandir linha',\n    collapse: 'Colapsar linha',\n    triggerDesc: 'Clique organiza por descendente',\n    triggerAsc: 'Clique organiza por ascendente',\n    cancelSort: 'Clique para cancelar organização',\n  },\n  Tour: {\n    Next: 'Próximo',\n    Previous: 'Anterior',\n    Finish: 'Finalizar',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancelar',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancelar',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Procurar',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remover',\n    selectCurrent: 'Selecionar página atual',\n    removeCurrent: 'Remover página atual',\n    selectAll: 'Selecionar todos',\n    removeAll: 'Remover todos',\n    selectInvert: 'Inverter seleção atual',\n  },\n  Upload: {\n    uploading: 'Enviando...',\n    removeFile: 'Remover arquivo',\n    uploadError: 'Erro no envio',\n    previewFile: 'Visualizar arquivo',\n    downloadFile: 'Baixar arquivo',\n  },\n  Empty: {\n    description: 'Não há dados',\n  },\n  Icon: {\n    icon: 'ícone',\n  },\n  Text: {\n    edit: 'editar',\n    copy: 'copiar',\n    copied: 'copiado',\n    expand: 'expandir',\n  },\n  PageHeader: {\n    back: 'Retornar',\n  },\n  Form: {\n    optional: '(opcional)',\n    defaultValidateMessages: {\n      default: 'Erro ${label} na validação de campo',\n      required: 'Por favor, insira ${label}',\n      enum: '${label} deve ser um dos seguinte: [${enum}]',\n      whitespace: '${label} não pode ser um carácter vazio',\n      date: {\n        format: ' O formato de data ${label} é inválido',\n        parse: '${label} não pode ser convertido para uma data',\n        invalid: '${label} é uma data inválida',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} deve possuir ${len} caracteres',\n        min: '${label} deve possuir ao menos ${min} caracteres',\n        max: '${label} deve possuir no máximo ${max} caracteres',\n        range: '${label} deve possuir entre ${min} e ${max} caracteres',\n      },\n      number: {\n        len: '${label} deve ser igual à ${len}',\n        min: 'O valor mínimo de ${label} é ${min}',\n        max: 'O valor máximo de ${label} é ${max}',\n        range: '${label} deve estar entre ${min} e ${max}',\n      },\n      array: {\n        len: 'Deve ser ${len} ${label}',\n        min: 'No mínimo ${min} ${label}',\n        max: 'No máximo ${max} ${label}',\n        range: 'A quantidade de ${label} deve estar entre ${min} e ${max}',\n      },\n      pattern: {\n        mismatch: '${label} não se encaixa no padrão ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Pré-visualização',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/pt_PT.ts",
    "content": "import Pagination from '../vc-pagination/locale/pt_PT';\nimport DatePicker from '../date-picker/locale/pt_PT';\nimport TimePicker from '../time-picker/locale/pt_PT';\nimport Calendar from '../calendar/locale/pt_PT';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'pt',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filtro',\n    filterConfirm: 'Aplicar',\n    filterReset: 'Reiniciar',\n    selectAll: 'Selecionar página atual',\n    selectInvert: 'Inverter seleção',\n    sortTitle: 'Ordenação',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancelar',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancelar',\n  },\n  Transfer: {\n    searchPlaceholder: 'Procurar...',\n    itemUnit: 'item',\n    itemsUnit: 'itens',\n  },\n  Upload: {\n    uploading: 'A carregar...',\n    removeFile: 'Remover',\n    uploadError: 'Erro ao carregar',\n    previewFile: 'Pré-visualizar',\n    downloadFile: 'Baixar',\n  },\n  Empty: {\n    description: 'Sem resultados',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ro_RO.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ro_RO';\nimport DatePicker from '../date-picker/locale/ro_RO';\nimport TimePicker from '../time-picker/locale/ro_RO';\nimport Calendar from '../calendar/locale/ro_RO';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} nu conține tipul corect (${type})';\n\nconst localeValues: Locale = {\n  locale: 'ro',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Selectează',\n  },\n  Table: {\n    filterTitle: 'Filtrează',\n    filterConfirm: 'OK',\n    filterReset: 'Resetează',\n    filterEmptyText: 'Fără filtre',\n    emptyText: 'Nu există date',\n    selectAll: 'Selectează pagina curentă',\n    selectInvert: 'Inversează pagina curentă',\n    selectNone: 'Șterge selecția',\n    selectionAll: 'Selectează toate datele',\n    sortTitle: 'Ordonează',\n    expand: 'Extinde rândul',\n    collapse: 'Micșorează rândul',\n    triggerDesc: 'Apasă pentru ordonare descrescătoare',\n    triggerAsc: 'Apasă pentru ordonare crescătoare',\n    cancelSort: 'Apasă pentru a anula ordonarea',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Anulare',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Anulare',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Căutare',\n    itemUnit: 'element',\n    itemsUnit: 'elemente',\n    remove: 'Șterge',\n    selectCurrent: 'Selectează pagina curentă',\n    removeCurrent: 'Șterge pagina curentă',\n    selectAll: 'Selectează toate datele',\n    removeAll: 'Șterge toate datele',\n    selectInvert: 'Inversează pagina curentă',\n  },\n  Upload: {\n    uploading: 'Se transferă...',\n    removeFile: 'Înlătură fișierul',\n    uploadError: 'Eroare la upload',\n    previewFile: 'Previzualizare fișier',\n    downloadFile: 'Descărcare fișier',\n  },\n  Empty: {\n    description: 'Fără date',\n  },\n  Icon: {\n    icon: 'icon',\n  },\n  Text: {\n    edit: 'editează',\n    copy: 'copiază',\n    copied: 'copiat',\n    expand: 'extinde',\n  },\n  PageHeader: {\n    back: 'înapoi',\n  },\n  Form: {\n    optional: '(opțional)',\n    defaultValidateMessages: {\n      default: 'Eroare la validarea câmpului ${label}',\n      required: 'Vă rugăm introduceți ${label}',\n      enum: '${label} trebuie să fie una din valorile [${enum}]',\n      whitespace: '${label} nu poate fi gol',\n      date: {\n        format: '${label} - data nu este în formatul corect',\n        parse: '${label} nu poate fi convertit la o dată',\n        invalid: '${label} este o dată invalidă',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} trebuie să conțină ${len} caractere',\n        min: '${label} trebuie să conțină cel puțin ${min} caractere',\n        max: '${label} trebuie să conțină cel mult ${max} caractere',\n        range: '${label} trebuie să conțină între ${min}-${max} caractere',\n      },\n      number: {\n        len: '${label} trebuie să conțină ${len} cifre',\n        min: '${label} trebuie să fie minim ${min}',\n        max: '${label} trebuie să fie maxim ${max}',\n        range: '${label} trebuie să fie între ${min}-${max}',\n      },\n      array: {\n        len: '${label} trebuie să conțină ${len} elemente',\n        min: '${label} trebuie să conțină cel puțin ${min} elemente',\n        max: '${label} trebuie să conțină cel mult ${max} elemente',\n        range: '${label} trebuie să conțină între ${min}-${max} elemente',\n      },\n      pattern: {\n        mismatch: '${label} nu respectă șablonul ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Preview',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ru_RU.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\n\nimport Pagination from '../vc-pagination/locale/ru_RU';\nimport DatePicker from '../date-picker/locale/ru_RU';\nimport TimePicker from '../time-picker/locale/ru_RU';\nimport Calendar from '../calendar/locale/ru_RU';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} не является типом ${type}';\n\nconst localeValues: Locale = {\n  locale: 'ru',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Пожалуйста выберите',\n  },\n  Table: {\n    filterTitle: 'Фильтр',\n    filterConfirm: 'OK',\n    filterReset: 'Сбросить',\n    filterEmptyText: 'Без фильтров',\n    emptyText: 'Нет данных',\n    selectAll: 'Выбрать всё',\n    selectInvert: 'Инвертировать выбор',\n    selectNone: 'Очистить все данные',\n    selectionAll: 'Выбрать все данные',\n    sortTitle: 'Сортировка',\n    expand: 'Развернуть строку',\n    collapse: 'Свернуть строку',\n    triggerDesc: 'Нажмите для сортировки по убыванию',\n    triggerAsc: 'Нажмите для сортировки по возрастанию',\n    cancelSort: 'Нажмите, чтобы отменить сортировку',\n  },\n  Tour: {\n    Next: 'Вперёд',\n    Previous: 'Назад',\n    Finish: 'Готово',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Отмена',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Отмена',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Поиск',\n    itemUnit: 'элем.',\n    itemsUnit: 'элем.',\n    remove: 'Удалить',\n    selectAll: 'Выбрать все данные',\n    selectCurrent: 'Выбрать текущую страницу',\n    selectInvert: 'Показать в обратном порядке',\n    removeAll: 'Удалить все данные',\n    removeCurrent: 'Удалить текущую страницу',\n  },\n  Upload: {\n    uploading: 'Загрузка...',\n    removeFile: 'Удалить файл',\n    uploadError: 'При загрузке произошла ошибка',\n    previewFile: 'Предпросмотр файла',\n    downloadFile: 'Загрузить файл',\n  },\n  Empty: {\n    description: 'Нет данных',\n  },\n  Icon: {\n    icon: 'иконка',\n  },\n  Text: {\n    edit: 'Редактировать',\n    copy: 'Копировать',\n    copied: 'Скопировано',\n    expand: 'Раскрыть',\n  },\n  PageHeader: {\n    back: 'Назад',\n  },\n  Form: {\n    optional: '(опционально)',\n    defaultValidateMessages: {\n      default: 'Ошибка проверки поля ${label}',\n      required: 'Пожалуйста, введите ${label}',\n      enum: '${label} должен быть одним из [${enum}]',\n      whitespace: '${label} не может быть пустым',\n      date: {\n        format: '${label} не правильный формат даты',\n        parse: '${label} не может быть преобразовано в дату',\n        invalid: '${label} не является корректной датой',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} должна быть ${len} символов',\n        min: '${label} должна быть больше или равна ${min} символов',\n        max: '${label} должна быть меньше или равна ${max} символов',\n        range: 'Длина ${label} должна быть между ${min}-${max} символами',\n      },\n      number: {\n        len: '${label} должна быть равна ${len}',\n        min: '${label} должна быть больше или равна ${min}',\n        max: '${label} должна быть меньше или равна ${max}',\n      },\n      array: {\n        len: 'Количество элементов ${label} должно быть равно ${len}',\n        min: 'Количество элементов ${label} должно быть больше или равно ${min}',\n        max: 'Количество элементов ${label} должно быть меньше или равно ${max}',\n        range: 'Количество элементов ${label} должно быть между ${min} и ${max}',\n      },\n      pattern: {\n        mismatch: '${label} не соответствует шаблону ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Предпросмотр',\n  },\n  QRCode: {\n    expired: 'QR код просрочен',\n    refresh: 'Обновить',\n    scanned: 'Отсканирован',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/sk_SK.ts",
    "content": "import Pagination from '../vc-pagination/locale/sk_SK';\nimport DatePicker from '../date-picker/locale/sk_SK';\nimport TimePicker from '../time-picker/locale/sk_SK';\nimport Calendar from '../calendar/locale/sk_SK';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} nie je platný ${type}';\n\nconst localeValues: Locale = {\n  locale: 'sk',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Prosím vyber',\n  },\n  Table: {\n    filterTitle: 'Filter',\n    filterConfirm: 'OK',\n    filterReset: 'Obnoviť',\n    filterEmptyText: 'Žiadne filtre',\n    filterCheckall: 'Vyber všetky položky',\n    filterSearchPlaceholder: 'Vyhľadaj vo filtroch',\n    emptyText: 'Žiadne dáta',\n    selectAll: 'Označ všetky položky',\n    selectInvert: 'Opačný výber položiek',\n    selectNone: 'Odznač všetko',\n    selectionAll: 'Označ všetko',\n    sortTitle: 'Zoradiť',\n    expand: 'Rozbaliť riadok',\n    collapse: 'Zbaliť riadok',\n    triggerDesc: 'Kliknutím zoradíš zostupne',\n    triggerAsc: 'Kliknutím zoradíš vzostupne',\n    cancelSort: 'Kliknutím zrušíš zoradenie',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Zrušiť',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Zrušiť',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Vyhľadávanie',\n    itemUnit: 'položka',\n    itemsUnit: 'položiek',\n    remove: 'Odstráň',\n    selectCurrent: 'Vyber aktuálnu stranu',\n    removeCurrent: 'Zmaž aktuálnu stranu',\n    selectAll: 'Označ všetko',\n    removeAll: 'Odznač všetko',\n    selectInvert: 'Opačný výber',\n  },\n  Upload: {\n    uploading: 'Nahrávanie...',\n    removeFile: 'Odstrániť súbor',\n    uploadError: 'Chyba pri nahrávaní',\n    previewFile: 'Zobraziť súbor',\n    downloadFile: 'Stiahnuť súbor',\n  },\n  Empty: {\n    description: 'Žiadne dáta',\n  },\n  Icon: {\n    icon: 'ikona',\n  },\n  Text: {\n    edit: 'Upraviť',\n    copy: 'Kopírovať',\n    copied: 'Skopírované',\n    expand: 'Zväčšiť',\n  },\n  PageHeader: {\n    back: 'Späť',\n  },\n  Form: {\n    optional: '(nepovinné)',\n    defaultValidateMessages: {\n      default: 'Validačná chyba poľa pre ${label}',\n      required: 'Prosím vlož ${label}',\n      enum: '${label} musí byť jeden z [${enum}]',\n      whitespace: '${label} nemôže byť prázdny znak',\n      date: {\n        format: '${label} formát dátumu je neplatný',\n        parse: '${label} nie je možné konvertovať na dátum',\n        invalid: '${label} je neplatný dátum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} musí byť ${len} znakov',\n        min: '${label} musí byť aspoň ${min} znakov',\n        max: '${label} musí byť do ${max} znakov',\n        range: '${label} musí byť medzi ${min}-${max} znakmi',\n      },\n      number: {\n        len: '${label} musí byť rovnaký ako ${len}',\n        min: '${label} musí byť minimálne ${min}',\n        max: '${label} musí byť maximálne ${max}',\n        range: '${label} musí byť medzi ${min}-${max}',\n      },\n      array: {\n        len: 'Musí byť ${len} ${label}',\n        min: 'Aspoň ${min} ${label}',\n        max: 'Najviac ${max} ${label}',\n        range: 'Počet ${label} musí byť medzi ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} nezodpovedá vzoru ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Náhľad',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/sl_SI.ts",
    "content": "import Pagination from '../vc-pagination/locale/sl_SI';\nimport DatePicker from '../date-picker/locale/sl_SI';\nimport TimePicker from '../time-picker/locale/sl_SI';\nimport Calendar from '../calendar/locale/sl_SI';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'sl',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Filter',\n    filterConfirm: 'Filtriraj',\n    filterReset: 'Pobriši filter',\n    selectAll: 'Izberi vse na trenutni strani',\n    selectInvert: 'Obrni izbor na trenutni strani',\n  },\n  Modal: {\n    okText: 'V redu',\n    cancelText: 'Prekliči',\n    justOkText: 'V redu',\n  },\n  Popconfirm: {\n    okText: 'v redu',\n    cancelText: 'Prekliči',\n  },\n  Transfer: {\n    searchPlaceholder: 'Išči tukaj',\n    itemUnit: 'Objekt',\n    itemsUnit: 'Objektov',\n  },\n  Upload: {\n    uploading: 'Nalaganje...',\n    removeFile: 'Odstrani datoteko',\n    uploadError: 'Napaka pri nalaganju',\n    previewFile: 'Predogled datoteke',\n    downloadFile: 'Prenos datoteke',\n  },\n  Empty: {\n    description: 'Ni podatkov',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/sr_RS.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/sr_RS';\nimport DatePicker from '../date-picker/locale/sr_RS';\nimport TimePicker from '../time-picker/locale/sr_RS';\nimport Calendar from '../calendar/locale/sr_RS';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} nije važeći ${type}';\n\nconst localeValues: Locale = {\n  locale: 'sr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Izaberi',\n  },\n  Table: {\n    filterTitle: 'Meni filtera',\n    filterConfirm: 'U redu',\n    filterReset: 'Poništi',\n    filterEmptyText: 'Nema filtera',\n    emptyText: 'Nema podataka',\n    selectAll: 'Izaberi trenutnu stranicu',\n    selectInvert: 'Obrni izbor trenutne stranice',\n    selectNone: 'Obriši sve podatke',\n    selectionAll: 'Izaberi sve podatke',\n    sortTitle: 'Sortiraj',\n    expand: 'Proširi red',\n    collapse: 'Skupi red',\n    triggerDesc: 'Klikni da sortiraš po padajućem redosledu',\n    triggerAsc: 'Klikni da sortiraš po rastućem redosledu',\n    cancelSort: 'Klikni da otkažeš sortiranje',\n  },\n  Modal: {\n    okText: 'U redu',\n    cancelText: 'Otkaži',\n    justOkText: 'U redu',\n  },\n  Popconfirm: {\n    okText: 'U redu',\n    cancelText: 'Otkaži',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Pretraži ovde',\n    itemUnit: 'stavka',\n    itemsUnit: 'stavki',\n    remove: 'Ukloni',\n    selectCurrent: 'Izaberi trenutnu stranicu',\n    removeCurrent: 'Ukloni trenutnu stranicu',\n    selectAll: 'Izaberi sve podatke',\n    removeAll: 'Ukloni sve podatke',\n    selectInvert: 'Obrni izbor trenutne stranice',\n  },\n  Upload: {\n    uploading: 'Otpremanje...',\n    removeFile: 'Ukloni datoteku',\n    uploadError: 'Greška pri otpremanju',\n    previewFile: 'Pregledaj datoteku',\n    downloadFile: 'Preuzmi datoteku',\n  },\n  Empty: {\n    description: 'Nema podataka',\n  },\n  Icon: {\n    icon: 'ikona',\n  },\n  Text: {\n    edit: 'Uredi',\n    copy: 'Kopiraj',\n    copied: 'Kopirano',\n    expand: 'Proširi',\n  },\n  PageHeader: {\n    back: 'Nazad',\n  },\n  Form: {\n    optional: '(opcionalno)',\n    defaultValidateMessages: {\n      default: 'Greška pri proveri valjanosti za ${label}',\n      required: 'Unesi ${label}',\n      enum: '${label} mora da bude nešto od [${enum}]',\n      whitespace: '${label} ne može biti prazan znak',\n      date: {\n        format: '${label} format datuma je nevažeći',\n        parse: '${label} se ne može konvertovati u datum',\n        invalid: '${label} je nevažeći datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} mora da sadrži ${len} znakova',\n        min: '${label} mora da sadrži bar ${min} znakova',\n        max: '${label} mora da sadrži do ${max} znakova',\n        range: '${label} mora da sadrži između ${min} i ${max} znakova',\n      },\n      number: {\n        len: '${label} mora biti jednak ${len}',\n        min: '${label} mora biti najmanje ${min}',\n        max: '${label} mora biti najviše ${max}',\n        range: '${label} mora biti između ${min} i ${max}',\n      },\n      array: {\n        len: 'Mora biti ${len} ${label}',\n        min: 'Najmanje ${min} ${label}',\n        max: 'najviše ${max} ${label}',\n        range: 'Iznos ${label} mora biti između ${min} i ${max}',\n      },\n      pattern: {\n        mismatch: '${label} ne odgovara obrascu ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Pregled',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/sv_SE.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/sv_SE';\nimport DatePicker from '../date-picker/locale/sv_SE';\nimport TimePicker from '../time-picker/locale/sv_SE';\nimport Calendar from '../calendar/locale/sv_SE';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} är inte en giltig ${type}';\n\nconst localeValues: Locale = {\n  locale: 'sv',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Vänligen välj',\n  },\n  Table: {\n    filterTitle: 'Filtermeny',\n    filterConfirm: 'OK',\n    filterReset: 'Återställ',\n    filterEmptyText: 'Inga filter',\n    emptyText: 'Ingen data',\n    selectAll: 'Markera nuvarande sida',\n    selectInvert: 'Invertera nuvarande sida',\n    selectNone: 'Avmarkera all data',\n    selectionAll: 'Markera all data',\n    sortTitle: 'Sortera',\n    expand: 'Expandera rad',\n    collapse: 'Komprimera rad',\n    triggerDesc: 'Klicka för att sortera i fallande ordning',\n    triggerAsc: 'Klicka för att sortera i stigande ordning',\n    cancelSort: 'Klicka för att avbryta sortering',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Avbryt',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Avbryt',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Sök här',\n    itemUnit: 'objekt',\n    itemsUnit: 'objekt',\n    remove: 'Ta bort',\n    selectCurrent: 'Markera nuvarande sida',\n    removeCurrent: 'Ta bort nuvarande sida',\n    selectAll: 'Markera all data',\n    removeAll: 'Ta bort all data',\n    selectInvert: 'Invertera nuvarande sida',\n  },\n  Upload: {\n    uploading: 'Laddar upp...',\n    removeFile: 'Ta bort fil',\n    uploadError: 'Uppladdningsfel',\n    previewFile: 'Förhandsgranska fil',\n    downloadFile: 'Ladda ned fil',\n  },\n  Empty: {\n    description: 'Ingen data',\n  },\n  Icon: {\n    icon: 'ikon',\n  },\n  Text: {\n    edit: 'Redigera',\n    copy: 'Kopiera',\n    copied: 'Kopierad',\n    expand: 'Expandera',\n  },\n  PageHeader: {\n    back: 'Tillbaka',\n  },\n  Form: {\n    optional: '(valfritt)',\n    defaultValidateMessages: {\n      default: 'Fältvalideringsfel för ${label}',\n      required: 'Vänligen fyll i ${label}',\n      enum: '${label} måste vara en av [${enum}]',\n      whitespace: '${label} kan inte vara ett tomt tecken',\n      date: {\n        format: '${label} datumformatet är ogiltigt',\n        parse: '${label} kan inte konverteras till ett datum',\n        invalid: '${label} är ett ogiltigt datum',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} måste vara ${len} tecken',\n        min: '${label} måste vara minst ${min} tecken',\n        max: '${label} måste vara högst ${max} tecken',\n        range: '${label} måste vara mellan ${min}-${max} tecken',\n      },\n      number: {\n        len: '${label} måste vara lika med ${len}',\n        min: '${label} måste vara minst ${min}',\n        max: '${label} måste vara högst ${max}',\n        range: '${label} måste vara mellan ${min}-${max}',\n      },\n      array: {\n        len: 'Måste vara ${len} ${label}',\n        min: 'Minst ${min} ${label}',\n        max: 'Högst ${max} ${label}',\n        range: 'Antal ${label} måste vara mellan ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} stämmer inte överens med mönstret ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Förhandsgranska',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ta_IN.ts",
    "content": "import Pagination from '../vc-pagination/locale/ta_IN';\nimport DatePicker from '../date-picker/locale/ta_IN';\nimport TimePicker from '../time-picker/locale/ta_IN';\nimport Calendar from '../calendar/locale/ta_IN';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'ta',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  // locales for all comoponents\n  global: {\n    placeholder: 'தேதியைத் தேர்ந்தெடுக்கவும்',\n  },\n  Table: {\n    filterTitle: 'பட்டியலை மூடு',\n    filterConfirm: 'சரி',\n    filterReset: 'மீட்டமை',\n    emptyText: 'தகவல் இல்லை',\n    selectAll: 'அனைத்தையும் தேர்வுசெய்',\n    selectInvert: 'தலைகீழாக மாற்று',\n    sortTitle: 'தலைப்பை வரிசைப்படுத்தவும்',\n  },\n  Modal: {\n    okText: 'சரி',\n    cancelText: 'ரத்து செய்யவும்',\n    justOkText: 'பரவாயில்லை, சரி',\n  },\n  Popconfirm: {\n    okText: 'சரி',\n    cancelText: 'ரத்து செய்யவும்',\n  },\n  Transfer: {\n    titles: ['', ''],\n    notFoundContent: 'உள்ளடக்கம் கிடைக்கவில்லை',\n    searchPlaceholder: 'இங்கு தேடவும்',\n    itemUnit: 'தகவல்',\n    itemsUnit: 'தகவல்கள்',\n  },\n  Upload: {\n    uploading: 'பதிவேற்றுகிறது...',\n    removeFile: 'கோப்பை அகற்று',\n    uploadError: 'பதிவேற்றுவதில் பிழை',\n    previewFile: 'கோப்பை முன்னோட்டமிடுங்கள்',\n    downloadFile: 'பதிவிறக்க கோப்பு',\n  },\n  Empty: {\n    description: 'தகவல் இல்லை',\n  },\n  Icon: {\n    icon: 'உருவம்',\n  },\n  Text: {\n    edit: 'திருத்து',\n    copy: 'நகல் எடு',\n    copied: 'நகல் எடுக்கப்பட்டது',\n    expand: 'விரிவாக்கவும்',\n  },\n  PageHeader: {\n    back: 'பின் செல்லவும்',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/th_TH.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/th_TH';\nimport DatePicker from '../date-picker/locale/th_TH';\nimport TimePicker from '../time-picker/locale/th_TH';\nimport Calendar from '../calendar/locale/th_TH';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} ไม่ใช่ ${type} ที่ถูกต้อง';\n\nconst localeValues: Locale = {\n  locale: 'th',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'กรุณาเลือก',\n  },\n  Table: {\n    filterTitle: 'ตัวกรอง',\n    filterConfirm: 'ยืนยัน',\n    filterReset: 'รีเซ็ต',\n    filterEmptyText: 'ไม่มีตัวกรอง',\n    emptyText: 'ไม่มีข้อมูล',\n    selectAll: 'เลือกทั้งหมดในหน้านี้',\n    selectInvert: 'กลับสถานะการเลือกในหน้านี้',\n    selectionAll: 'เลือกข้อมูลทั้งหมด',\n    sortTitle: 'เรียง',\n    expand: 'แสดงแถวข้อมูล',\n    collapse: 'ย่อแถวข้อมูล',\n    triggerDesc: 'คลิกเรียงจากมากไปน้อย',\n    triggerAsc: 'คลิกเรียงจากน้อยไปมาก',\n    cancelSort: 'คลิกเพื่อยกเลิกการเรียง',\n  },\n  Modal: {\n    okText: 'ตกลง',\n    cancelText: 'ยกเลิก',\n    justOkText: 'ตกลง',\n  },\n  Popconfirm: {\n    okText: 'ตกลง',\n    cancelText: 'ยกเลิก',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'ค้นหา',\n    itemUnit: 'ชิ้น',\n    itemsUnit: 'ชิ้น',\n    remove: 'นำออก',\n    selectCurrent: 'เลือกทั้งหมดในหน้านี้',\n    removeCurrent: 'นำออกทั้งหมดในหน้านี้',\n    selectAll: 'เลือกข้อมูลทั้งหมด',\n    removeAll: 'นำข้อมูลออกทั้งหมด',\n    selectInvert: 'กลับสถานะการเลือกในหน้านี้',\n  },\n  Upload: {\n    uploading: 'กำลังอัปโหลด...',\n    removeFile: 'ลบไฟล์',\n    uploadError: 'เกิดข้อผิดพลาดในการอัปโหลด',\n    previewFile: 'ดูตัวอย่างไฟล์',\n    downloadFile: 'ดาวน์โหลดไฟล์',\n  },\n  Empty: {\n    description: 'ไม่มีข้อมูล',\n  },\n  Icon: {\n    icon: 'ไอคอน',\n  },\n  Text: {\n    edit: 'แก้ไข',\n    copy: 'คัดลอก',\n    copied: 'คัดลอกแล้ว',\n    expand: 'ขยาย',\n  },\n  PageHeader: {\n    back: 'ย้อนกลับ',\n  },\n  Form: {\n    optional: '(ไม่จำเป็น)',\n    defaultValidateMessages: {\n      default: 'ฟิลด์ ${label} ไม่ผ่านเงื่อนไขการตรวจสอบ',\n      required: 'กรุณากรอก ${label}',\n      enum: '${label} ต้องเป็นค่าใดค่าหนึ่งใน [${enum}]',\n      whitespace: '${label} ไม่สามารถเป็นช่องว่างได้',\n      date: {\n        format: 'รูปแบบวันที่ ${label} ไม่ถูกต้อง',\n        parse: '${label} ไม่สามารถแปลงเป็นวันที่ได้',\n        invalid: '${label} เป็นวันที่ที่ไม่ถูกต้อง',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ต้องมี ${len} ตัวอักษร',\n        min: '${label} ต้องมีอย่างน้อย ${min} ตัวอักษร',\n        max: '${label} มีได้สูงสุด ${max} ตัวอักษร',\n        range: '${label} ต้องมี ${min}-${max} ตัวอักษร',\n      },\n      number: {\n        len: '${label} ต้องมี ${len} ตัว',\n        min: 'ค่าต่ำสุด ${label} คือ ${min}',\n        max: 'ค่าสูงสุด ${label} คือ ${max}',\n        range: '${label} ต้องมีค่า ${min}-${max}',\n      },\n      array: {\n        len: 'ต้องมี ${len} ${label}',\n        min: 'ต้องมีอย่างน้อย ${min} ${label}',\n        max: 'มีได้สูงสุด ${max} ${label}',\n        range: 'จำนวน ${label} ต้องอยู่ในช่วง ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} ไม่ตรงกับรูปแบบ ${pattern}',\n      },\n    },\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/tr_TR.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/tr_TR';\nimport DatePicker from '../date-picker/locale/tr_TR';\nimport TimePicker from '../time-picker/locale/tr_TR';\nimport Calendar from '../calendar/locale/tr_TR';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} geçerli bir ${type} değil';\n\nconst localeValues: Locale = {\n  locale: 'tr',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Lütfen seçiniz',\n  },\n  Table: {\n    filterTitle: 'Filtre menüsü',\n    filterConfirm: 'Tamam',\n    filterReset: 'Sıfırla',\n    filterEmptyText: 'Filtre yok',\n    selectAll: 'Tüm sayfayı seç',\n    selectInvert: 'Tersini seç',\n    selectionAll: 'Tümünü seç',\n    sortTitle: 'Sırala',\n    expand: 'Satırı genişlet',\n    collapse: 'Satırı daralt',\n    triggerDesc: 'Azalan düzende sırala',\n    triggerAsc: 'Artan düzende sırala',\n    cancelSort: 'Sıralamayı kaldır',\n  },\n  Modal: {\n    okText: 'Tamam',\n    cancelText: 'İptal',\n    justOkText: 'Tamam',\n  },\n  Popconfirm: {\n    okText: 'Tamam',\n    cancelText: 'İptal',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Arama',\n    itemUnit: 'Öğe',\n    itemsUnit: 'Öğeler',\n    remove: 'Kaldır',\n    selectCurrent: 'Tüm sayfayı seç',\n    removeCurrent: 'Sayfayı kaldır',\n    selectAll: 'Tümünü seç',\n    removeAll: 'Tümünü kaldır',\n    selectInvert: 'Tersini seç',\n  },\n  Upload: {\n    uploading: 'Yükleniyor...',\n    removeFile: 'Dosyayı kaldır',\n    uploadError: 'Yükleme hatası',\n    previewFile: 'Dosyayı önizle',\n    downloadFile: 'Dosyayı indir',\n  },\n  Empty: {\n    description: 'Veri Yok',\n  },\n  Icon: {\n    icon: 'ikon',\n  },\n  Text: {\n    edit: 'Düzenle',\n    copy: 'Kopyala',\n    copied: 'Kopyalandı',\n    expand: 'Genişlet',\n  },\n  PageHeader: {\n    back: 'Geri',\n  },\n  Form: {\n    optional: '(opsiyonel)',\n    defaultValidateMessages: {\n      default: 'Alan doğrulama hatası ${label}',\n      required: '${label} gerekli bir alan',\n      enum: '${label} şunlardan biri olmalı: [${enum}]',\n      whitespace: '${label} sadece boşluk olamaz',\n      date: {\n        format: '${label} tarih biçimi geçersiz',\n        parse: '${label} bir tarihe dönüştürülemedi',\n        invalid: '${label} geçersiz bir tarih',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ${len} karakter olmalı',\n        min: '${label} en az ${min} karakter olmalı',\n        max: '${label} en çok ${max} karakter olmalı',\n        range: '${label} ${min}-${max} karakter arası olmalı',\n      },\n      number: {\n        len: '${label} ${len} olmalı',\n        min: '${label} en az ${min} olmalı',\n        max: '${label} en çok ${max} olmalı',\n        range: '${label} ${min}-${max} arası olmalı',\n      },\n      array: {\n        len: '${label} sayısı ${len} olmalı',\n        min: '${label} sayısı en az ${min} olmalı',\n        max: '${label} sayısı en çok ${max} olmalı',\n        range: '${label} sayısı ${min}-${max} arası olmalı',\n      },\n      pattern: {\n        mismatch: '${label} şu kalıpla eşleşmeli: ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'Önizleme',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/uk_UA.ts",
    "content": "import Pagination from '../vc-pagination/locale/uk_UA';\nimport DatePicker from '../date-picker/locale/uk_UA';\nimport TimePicker from '../time-picker/locale/uk_UA';\nimport Calendar from '../calendar/locale/uk_UA';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'uk',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Фільтрувати',\n    filterConfirm: 'OK',\n    filterReset: 'Скинути',\n    selectAll: 'Обрати всі',\n    selectInvert: 'Інвертувати вибір',\n  },\n  Modal: {\n    okText: 'Гаразд',\n    cancelText: 'Скасувати',\n    justOkText: 'Гаразд',\n  },\n  Popconfirm: {\n    okText: 'Гаразд',\n    cancelText: 'Скасувати',\n  },\n  Transfer: {\n    searchPlaceholder: 'Введіть текст для пошуку',\n    itemUnit: 'елем.',\n    itemsUnit: 'елем.',\n  },\n  Upload: {\n    uploading: 'Завантаження ...',\n    removeFile: 'Видалити файл',\n    uploadError: 'Помилка завантаження',\n    previewFile: 'Попередній перегляд файлу',\n    downloadFile: 'Завантажити файл',\n  },\n  Empty: {\n    description: 'Даних немає',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/ur_PK.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/ur_PK';\nimport DatePicker from '../date-picker/locale/ur_PK';\nimport TimePicker from '../time-picker/locale/ur_PK';\nimport Calendar from '../calendar/locale/ur_PK';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label} درست نہیں ہے ${type}';\n\nconst localeValues: Locale = {\n  locale: 'ur',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'منتخب کریں',\n  },\n  Table: {\n    filterTitle: 'فلٹر مینو',\n    filterConfirm: 'ٹھیک ہے',\n    filterReset: 'ری سیٹ کریں',\n    filterEmptyText: 'فلٹرز نہیں',\n    emptyText: 'کوئی ڈیٹا نہیں',\n    selectAll: 'موجودہ صفحہ منتخب کریں',\n    selectInvert: 'موجودہ صفحے کو الٹ دیں',\n    selectNone: 'تمام ڈیٹا صاف کریں',\n    selectionAll: 'تمام ڈیٹا کو منتخب کریں',\n    sortTitle: 'ترتیب دیں',\n    expand: 'پھیلائیں',\n    collapse: 'سمیٹیں',\n    triggerDesc: 'نزولی کو ترتیب دینے کیلئے کلک کریں',\n    triggerAsc: 'چڑھنے کو ترتیب دینے کیلئے کلک کریں',\n    cancelSort: 'ترتیب کو منسوخ کرنے کیلئے دبائیں',\n  },\n  Modal: {\n    okText: 'ٹھیک ہے',\n    cancelText: 'منسوخ کریں',\n    justOkText: 'ٹھیک ہے',\n  },\n  Popconfirm: {\n    okText: 'ٹھیک ہے',\n    cancelText: 'منسوخ کریں',\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'یہاں تلاش کریں',\n    itemUnit: 'شے',\n    itemsUnit: 'اشیاء',\n    remove: 'ہٹائیں',\n    selectCurrent: 'موجودہ صفحہ منتخب کریں',\n    removeCurrent: 'موجودہ صفحہ ہٹائیں',\n    selectAll: 'تمام ڈیٹا کو منتخب کریں',\n    removeAll: 'تمام ڈیٹا کو ہٹا دیں',\n    selectInvert: 'موجودہ صفحے کو الٹ دیں',\n  },\n  Upload: {\n    uploading: 'اپ لوڈ ہو رہا ہے…',\n    removeFile: 'فائل کو ہٹا دیں',\n    uploadError: 'اپ لوڈ کی خرابی',\n    previewFile: 'پیش نظار فائل',\n    downloadFile: 'فائل ڈاؤن لوڈ کریں',\n  },\n  Empty: {\n    description: 'کوئی ڈیٹا نہیں',\n  },\n  Icon: {\n    icon: 'آئیکن',\n  },\n  Text: {\n    edit: 'ترمیم',\n    copy: 'کاپی',\n    copied: 'کاپی ہوگیا',\n    expand: 'پھیلائیں',\n  },\n  PageHeader: {\n    back: 'پیچھے',\n  },\n  Form: {\n    optional: '(اختیاری)',\n    defaultValidateMessages: {\n      default: ' ${label} کیلئے فیلڈ کی توثیق میں نقص',\n      required: 'درج کریں ${label}',\n      enum: '${label} ایک ہونا ضروری ہے [${enum}]',\n      whitespace: '${label} خالی نہیں ہوسکتا',\n      date: {\n        format: '${label} تاریخ کی شکل غلط ہے',\n        parse: '${label} تاریخ میں تبدیل نہیں کیا جاسکتا',\n        invalid: '${label} غلط تاریخ ہے',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label} ضروری ہے ${len} حروف',\n        min: '${label} کم از کم ہونا چاہئے ${min} حروف',\n        max: '${label} تک ہونا چاہئے ${max} حروف',\n        range: '${label} کے درمیان ہونا چاہئے ${min}-${max} حروف',\n      },\n      number: {\n        len: '${label} کے برابر ہونا چاہئے ${len}',\n        min: '${label} کم از کم ہونا چاہئے ${min}',\n        max: '${label} زیادہ سے زیادہ ہونا چاہئے ${max}',\n        range: '${label} کے درمیان ہونا چاہئے ${min}-${max}',\n      },\n      array: {\n        len: 'ضروری ہے ${len} ${label}',\n        min: 'کم از کم ${min} ${label}',\n        max: 'زیادہ سے زیادہ ${max} ${label}',\n        range: 'کی رقم ${label} کے درمیان ہونا چاہئے ${min}-${max}',\n      },\n      pattern: {\n        mismatch: '${label} پیٹرن سے ملتا نہیں ہے ${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: 'پیش نظارہ',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/vi_VN.ts",
    "content": "import Pagination from '../vc-pagination/locale/vi_VN';\nimport DatePicker from '../date-picker/locale/vi_VN';\nimport TimePicker from '../time-picker/locale/vi_VN';\nimport Calendar from '../calendar/locale/vi_VN';\nimport type { Locale } from '../locale-provider';\n\nconst localeValues: Locale = {\n  locale: 'vi',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Table: {\n    filterTitle: 'Bộ ',\n    filterConfirm: 'OK',\n    filterReset: 'Tạo Lại',\n    selectAll: 'Chọn Tất Cả',\n    selectInvert: 'Chọn Ngược Lại',\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Huỷ',\n    justOkText: 'OK',\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Huỷ',\n  },\n  Transfer: {\n    searchPlaceholder: 'Tìm ở đây',\n    itemUnit: 'mục',\n    itemsUnit: 'mục',\n  },\n  Upload: {\n    uploading: 'Đang tải lên...',\n    removeFile: 'Gỡ bỏ tập tin',\n    uploadError: 'Lỗi tải lên',\n    previewFile: 'Xem thử tập tin',\n    downloadFile: 'Tải tập tin',\n  },\n  Empty: {\n    description: 'Trống',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/zh_CN.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/zh_CN';\nimport DatePicker from '../date-picker/locale/zh_CN';\nimport TimePicker from '../time-picker/locale/zh_CN';\nimport Calendar from '../calendar/locale/zh_CN';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label}不是一个有效的${type}';\n\nconst localeValues: Locale = {\n  locale: 'zh-cn',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  // locales for all components\n  global: {\n    placeholder: '请选择',\n  },\n  Table: {\n    filterTitle: '筛选',\n    filterConfirm: '确定',\n    filterReset: '重置',\n    filterEmptyText: '无筛选项',\n    filterCheckall: '全选',\n    filterSearchPlaceholder: '在筛选项中搜索',\n    selectAll: '全选当页',\n    selectInvert: '反选当页',\n    selectNone: '清空所有',\n    selectionAll: '全选所有',\n    sortTitle: '排序',\n    expand: '展开行',\n    collapse: '关闭行',\n    triggerDesc: '点击降序',\n    triggerAsc: '点击升序',\n    cancelSort: '取消排序',\n  },\n  Tour: {\n    Next: '下一步',\n    Previous: '上一步',\n    Finish: '结束导览',\n  },\n  Modal: {\n    okText: '确定',\n    cancelText: '取消',\n    justOkText: '知道了',\n  },\n  Popconfirm: {\n    cancelText: '取消',\n    okText: '确定',\n  },\n  Transfer: {\n    searchPlaceholder: '请输入搜索内容',\n    itemUnit: '项',\n    itemsUnit: '项',\n    remove: '删除',\n    selectCurrent: '全选当页',\n    removeCurrent: '删除当页',\n    selectAll: '全选所有',\n    removeAll: '删除全部',\n    selectInvert: '反选当页',\n  },\n  Upload: {\n    uploading: '文件上传中',\n    removeFile: '删除文件',\n    uploadError: '上传错误',\n    previewFile: '预览文件',\n    downloadFile: '下载文件',\n  },\n  Empty: {\n    description: '暂无数据',\n  },\n  Icon: {\n    icon: '图标',\n  },\n  Text: {\n    edit: '编辑',\n    copy: '复制',\n    copied: '复制成功',\n    expand: '展开',\n  },\n  PageHeader: {\n    back: '返回',\n  },\n  Form: {\n    optional: '（可选）',\n    defaultValidateMessages: {\n      default: '字段验证错误${label}',\n      required: '请输入${label}',\n      enum: '${label}必须是其中一个[${enum}]',\n      whitespace: '${label}不能为空字符',\n      date: {\n        format: '${label}日期格式无效',\n        parse: '${label}不能转换为日期',\n        invalid: '${label}是一个无效日期',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label}须为${len}个字符',\n        min: '${label}最少${min}个字符',\n        max: '${label}最多${max}个字符',\n        range: '${label}须在${min}-${max}字符之间',\n      },\n      number: {\n        len: '${label}必须等于${len}',\n        min: '${label}最小值为${min}',\n        max: '${label}最大值为${max}',\n        range: '${label}须在${min}-${max}之间',\n      },\n      array: {\n        len: '须为${len}个${label}',\n        min: '最少${min}个${label}',\n        max: '最多${max}个${label}',\n        range: '${label}数量须在${min}-${max}之间',\n      },\n      pattern: {\n        mismatch: '${label}与模式不匹配${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: '预览',\n  },\n  QRCode: {\n    expired: '二维码已过期',\n    refresh: '点击刷新',\n    scanned: '已扫描',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/zh_HK.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/zh_TW';\nimport DatePicker from '../date-picker/locale/zh_TW';\nimport TimePicker from '../time-picker/locale/zh_TW';\nimport Calendar from '../calendar/locale/zh_TW';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label}不是一個有效的${type}';\n\nconst localeValues: Locale = {\n  locale: 'zh-hk',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: '請選擇',\n  },\n  Table: {\n    filterTitle: '篩選器',\n    filterConfirm: '確定',\n    filterReset: '重置',\n    filterEmptyText: '無篩選項',\n    selectAll: '全部選取',\n    selectInvert: '反向選取',\n    selectNone: '清空所有',\n    selectionAll: '全選所有',\n    sortTitle: '排序',\n    expand: '展開行',\n    collapse: '關閉行',\n    triggerDesc: '點擊降序',\n    triggerAsc: '點擊升序',\n    cancelSort: '取消排序',\n  },\n  Tour: {\n    Next: '下一步',\n    Previous: '上一步',\n    Finish: '結束導覽',\n  },\n  Modal: {\n    okText: '確定',\n    cancelText: '取消',\n    justOkText: '知道了',\n  },\n  Popconfirm: {\n    okText: '確定',\n    cancelText: '取消',\n  },\n  Transfer: {\n    searchPlaceholder: '搜尋資料',\n    itemUnit: '項目',\n    itemsUnit: '項目',\n    remove: '刪除',\n    selectCurrent: '全選當頁',\n    removeCurrent: '刪除當頁',\n    selectAll: '全選所有',\n    removeAll: '刪除全部',\n    selectInvert: '反選當頁',\n  },\n  Upload: {\n    uploading: '正在上傳...',\n    removeFile: '刪除檔案',\n    uploadError: '上傳失敗',\n    previewFile: '檔案預覽',\n    downloadFile: '下载文件',\n  },\n  Empty: {\n    description: '無此資料',\n  },\n  Icon: {\n    icon: '圖標',\n  },\n  Text: {\n    edit: '編輯',\n    copy: '複製',\n    copied: '複製成功',\n    expand: '展開',\n  },\n  PageHeader: {\n    back: '返回',\n  },\n  Form: {\n    defaultValidateMessages: {\n      default: '字段驗證錯誤${label}',\n      required: '請輸入${label}',\n      enum: '${label}必須是其中一個[${enum}]',\n      whitespace: '${label}不能為空字符',\n      date: {\n        format: '${label}日期格式無效',\n        parse: '${label}不能轉換為日期',\n        invalid: '${label}是一個無效日期',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label}須為${len}個字符',\n        min: '${label}最少${min}個字符',\n        max: '${label}最多${max}個字符',\n        range: '${label}須在${min}-${max}字符之間',\n      },\n      number: {\n        len: '${label}必須等於${len}',\n        min: '${label}最小值為${min}',\n        max: '${label}最大值為${max}',\n        range: '${label}須在${min}-${max}之間',\n      },\n      array: {\n        len: '須為${len}個${label}',\n        min: '最少${min}個${label}',\n        max: '最多${max}個${label}',\n        range: '${label}數量須在${min}-${max}之間',\n      },\n      pattern: {\n        mismatch: '${label}與模式不匹配${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: '預覽',\n  },\n  QRCode: {\n    expired: '二維碼過期',\n    refresh: '點擊刷新',\n    scanned: '已掃描',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale/zh_TW.ts",
    "content": "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/zh_TW';\nimport DatePicker from '../date-picker/locale/zh_TW';\nimport TimePicker from '../time-picker/locale/zh_TW';\nimport Calendar from '../calendar/locale/zh_TW';\nimport type { Locale } from '../locale-provider';\n\nconst typeTemplate = '${label}不是一個有效的${type}';\n\nconst localeValues: Locale = {\n  locale: 'zh-tw',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: '請選擇',\n  },\n  Table: {\n    filterTitle: '篩選器',\n    filterConfirm: '確定',\n    filterReset: '重置',\n    filterEmptyText: '無篩選項',\n    selectAll: '全部選取',\n    selectInvert: '反向選取',\n    selectNone: '清空所有',\n    selectionAll: '全選所有',\n    sortTitle: '排序',\n    expand: '展開行',\n    collapse: '關閉行',\n    triggerDesc: '點擊降序',\n    triggerAsc: '點擊升序',\n    cancelSort: '取消排序',\n  },\n  Tour: {\n    Next: '下一步',\n    Previous: '上一步',\n    Finish: '結束導覽',\n  },\n  Modal: {\n    okText: '確定',\n    cancelText: '取消',\n    justOkText: '知道了',\n  },\n  Popconfirm: {\n    okText: '確定',\n    cancelText: '取消',\n  },\n  Transfer: {\n    searchPlaceholder: '搜尋資料',\n    itemUnit: '項目',\n    itemsUnit: '項目',\n    remove: '删除',\n    selectCurrent: '全選當頁',\n    removeCurrent: '删除當頁',\n    selectAll: '全選所有',\n    removeAll: '删除全部',\n    selectInvert: '反選當頁',\n  },\n  Upload: {\n    uploading: '正在上傳...',\n    removeFile: '刪除檔案',\n    uploadError: '上傳失敗',\n    previewFile: '檔案預覽',\n    downloadFile: '下载文件',\n  },\n  Empty: {\n    description: '無此資料',\n  },\n  Icon: {\n    icon: '圖標',\n  },\n  Text: {\n    edit: '編輯',\n    copy: '複製',\n    copied: '複製成功',\n    expand: '展開',\n  },\n  PageHeader: {\n    back: '返回',\n  },\n  Form: {\n    optional: '（可選）',\n    defaultValidateMessages: {\n      default: '字段驗證錯誤${label}',\n      required: '請輸入${label}',\n      enum: '${label}必須是其中一個[${enum}]',\n      whitespace: '${label}不能為空字符',\n      date: {\n        format: '${label}日期格式無效',\n        parse: '${label}不能轉換為日期',\n        invalid: '${label}是一個無效日期',\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate,\n      },\n      string: {\n        len: '${label}須為${len}個字符',\n        min: '${label}最少${min}個字符',\n        max: '${label}最多${max}個字符',\n        range: '${label}須在${min}-${max}字符之間',\n      },\n      number: {\n        len: '${label}必須等於${len}',\n        min: '${label}最小值為${min}',\n        max: '${label}最大值為${max}',\n        range: '${label}須在${min}-${max}之間',\n      },\n      array: {\n        len: '須為${len}個${label}',\n        min: '最少${min}個${label}',\n        max: '最多${max}個${label}',\n        range: '${label}數量須在${min}-${max}之間',\n      },\n      pattern: {\n        mismatch: '${label}與模式不匹配${pattern}',\n      },\n    },\n  },\n  Image: {\n    preview: '預覽',\n  },\n  QRCode: {\n    expired: '二維碼過期',\n    refresh: '點擊刷新',\n    scanned: '已掃描',\n  },\n};\n\nexport default localeValues;\n"
  },
  {
    "path": "components/locale-provider/LocaleReceiver.tsx",
    "content": "import LocaleReceiver from '../locale/LocaleReceiver';\n\nexport * from '../locale/LocaleReceiver';\n\nexport default LocaleReceiver;\n"
  },
  {
    "path": "components/locale-provider/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Locale Provider should display the text as ar 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"الصفحة السابقة\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"الصفحة التالية\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / الصفحة</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"اختيار التاريخ\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"اختيار الوقت\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"البداية\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"النهاية\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 عنصر</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ابحث هنا\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">لا توجد بيانات</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 عنصر</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ابحث هنا\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">لا توجد بيانات</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>الشهر</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>السنة</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">لا توجد بيانات</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as bg 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Предишна страница\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Следваща страница\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / страница</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Избор на дата\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Избор на час\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Начална\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Крайна\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 избор</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Търсене\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Няма данни</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 избор</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Търсене\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Няма данни</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Месец</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Година</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Няма данни</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ca 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Pàgina prèvia\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Pàgina següent\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / pàgina</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Seleccionar data\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Seleccionar hora\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data inicial\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data final\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ítem</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cercar\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Sense dades</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ítem</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cercar\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Sense dades</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mes</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Any</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Sense dades</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as cs 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Předchozí strana\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Následující strana\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / strana</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vybrat datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vybrat čas\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Od\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Do\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 položka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Vyhledávání\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Žádná data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 položka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Vyhledávání\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Žádná data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Měsíc</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Rok</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Žádná data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as da 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Forrige Side\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Næste Side\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / side</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vælg dato\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vælg tid\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Startdato\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Slutdato\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Søg her\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Søg her\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Måned</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>År</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Ingen data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as de 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Vorherige Seite\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Nächste Seite\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / Seite</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Datum auswählen\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Zeit auswählen\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Startdatum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Enddatum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Eintrag</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Suchen\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Keine Daten</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Eintrag</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Suchen\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Keine Daten</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Monat</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Jahr</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Keine Daten</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as el 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Προηγούμενη Σελίδα\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Επόμενη Σελίδα\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / σελίδα</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Επιλέξτε ημερομηνία\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Επιλέξτε ώρα\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Αρχική ημερομηνία\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Τελική ημερομηνία\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 αντικείμενο</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Αναζήτηση\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Δεν υπάρχουν δεδομένα</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 αντικείμενο</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Αναζήτηση\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Δεν υπάρχουν δεδομένα</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Μήνας</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Έτος</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Δεν υπάρχουν δεδομένα</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as en 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">No data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as en-gb 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">No data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as es 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Página anterior\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Página siguiente\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / página</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Seleccionar fecha\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Seleccionar hora\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Fecha inicial\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Fecha final\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elemento</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Buscar aquí\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No hay datos</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elemento</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Buscar aquí\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No hay datos</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mes</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Año</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">No hay datos</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as et 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Eelmine leht\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Järgmine leht\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / leheküljel</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vali kuupäev\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vali aeg\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Algus kuupäev\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Lõpu kuupäev\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 kogus</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Otsi siit\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Andmed puuduvad</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 kogus</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Otsi siit\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Andmed puuduvad</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Kuu</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Aasta</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Andmed puuduvad</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as fa 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"صفحه قبلی\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"صفحه بعدی\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / صفحه</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"انتخاب تاریخ\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"انتخاب زمان\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"تاریخ شروع\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"تاریخ پایان\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 عدد</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"جستجو\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">داده‌ای موجود نیست</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 عدد</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"جستجو\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">داده‌ای موجود نیست</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>ماه</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>سال</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">داده‌ای موجود نیست</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as fi 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Edellinen sivu\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Seuraava sivu\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / sivu</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Valitse päivä\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Valitse aika\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Alkamispäivä\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Päättymispäivä\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 kohde</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Etsi täältä\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ei kohteita</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 kohde</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Etsi täältä\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ei kohteita</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Kuukausi</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Vuosi</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Ei kohteita</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as fr 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Page précédente\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Page suivante\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sélectionner une date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sélectionner l'heure\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Date de début\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Date de fin\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 élément</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Recherche\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Aucune donnée</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 élément</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Recherche\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Aucune donnée</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mois</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Année</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Aucune donnée</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as fr 2`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Page précédente\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Page suivante\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sélectionner une date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sélectionner l'heure\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Date de début\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Date de fin\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 élément</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Rechercher\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Aucune donnée</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 élément</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Rechercher\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Aucune donnée</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mois</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Année</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Aucune donnée</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as he 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"העמוד הקודם\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"העמוד הבא\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / עמוד</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"בחר תאריך\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"בחר שעה\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"תאריך התחלה\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"תאריך סיום\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 פריט</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"חפש כאן\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">אין מידע</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 פריט</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"חפש כאן\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">אין מידע</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>חודש</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>שנה</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">אין מידע</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as hi 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"पिछला पृष्ठ\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"अगला पृष्ठ\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / पृष्ठ</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"तारीख़ चुनें\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"समय का चयन करें\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"प्रारंभ तिथि\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"समाप्ति तिथि\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 तत्त्व</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"यहां खोजें\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">कोई आकड़ा उपलब्ध नहीं है</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 तत्त्व</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"यहां खोजें\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">कोई आकड़ा उपलब्ध नहीं है</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>महीना</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>साल</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">कोई आकड़ा उपलब्ध नहीं है</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as hr 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Prijašnja stranica\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Sljedeća stranica\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / str</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Odaberite datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Odaberite vrijeme\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Početni datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Završni datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 stavka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Pretraži ovdje\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nema podataka</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 stavka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Pretraži ovdje\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nema podataka</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mjesec</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Godina</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Nema podataka</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as hu 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Előző oldal\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Következő oldal\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / oldal</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Válasszon dátumot\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Válasszon időt\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Kezdő dátum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Befejezés dátuma\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elem</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Keresés\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nincs adat</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elem</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Keresés\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nincs adat</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Hónap</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Év</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Nincs adat</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as hy-am 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Նախորդ Էջ\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Հաջորդ Էջ\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / էջ</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Ընտրեք ամսաթիվը\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Ընտրեք ժամը\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Մեկնարկի ամսաթիվ\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Ավարտի ամսաթիվը\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 պարագան</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Որոնեք այստեղ\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Տվյալներ չկան</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 պարագան</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Որոնեք այստեղ\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Տվյալներ չկան</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Ամիս</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Տարի</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Տվյալներ չկան</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as id 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Halaman Sebelumnya\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Halaman Berikutnya\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / halaman</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Pilih tanggal\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Pilih waktu\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Mulai tanggal\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Tanggal akhir\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cari\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Tidak ada data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cari\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Tidak ada data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Bulan</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Tahun</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Tidak ada data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as is 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Fyrri síða\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Næsta síða\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / síðu</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Veldu dag\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Velja tíma\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Upphafsdagur\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Lokadagur\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 færsla</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Leita hér\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Engin gögn</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 færsla</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Leita hér\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Engin gögn</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mánuður</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Ár</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Engin gögn</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as it 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Pagina precedente\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Pagina successiva\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / pagina</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selezionare la data\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selezionare l'orario\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data d'inizio\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data di fine\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elemento</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cerca qui\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nessun dato</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 elemento</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Cerca qui\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nessun dato</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mese</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Anno</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Nessun dato</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ja 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"前のページ\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"次のページ\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 件 / ページ</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"日付を選択\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"時間を選択\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"開始日付\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"終了日付\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 アイテム</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ここを検索\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">データがありません</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 アイテム</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ここを検索\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">データがありません</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017年\">2017年</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>月</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>年</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">データがありません</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as kn 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"ಹಿಂದಿನ ಪುಟ\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"ಮುಂದಿನ ಪುಟ\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / ಪುಟ</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"ದಿನಾಂಕ ಆಯ್ಕೆಮಾಡಿ\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"ಸಮಯ ಆಯ್ಕೆಮಾಡಿ\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"ಪ್ರಾರಂಭ ದಿನಾಂಕ\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"ಅಂತಿಮ ದಿನಾಂಕ\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ವಿಷಯ</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ಇಲ್ಲಿ ಹುಡುಕಿ\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ವಿಷಯ</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ಇಲ್ಲಿ ಹುಡುಕಿ\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>ತಿಂಗಳು</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>ವರ್ಷ</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">No data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ko 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"이전 페이지\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"다음 페이지\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / 쪽</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"날짜 선택\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"시간 선택\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"시작일\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"종료일\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 개</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"여기에 검색하세요\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">데이터 없음</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 개</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"여기에 검색하세요\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">데이터 없음</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>월</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>년</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">데이터 없음</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ku-iq 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Rûpelê Pêş\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Rûpelê Paş\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / rûpel</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Dîrok hilbijêre\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Demê hilbijêre\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Dîroka destpêkê\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Dîroka dawîn\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 tişt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Lêgerîn\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Agahî tune</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 tişt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Lêgerîn\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Agahî tune</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Meh</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Sal</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Agahî tune</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as lv 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Iepriekšējā lapa\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Nākamā lapaspuse\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / lappuse</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izvēlieties datumu\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izvēlieties laiku\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Sākuma datums\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Beigu datums\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 vienumu</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Meklēt šeit\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nav datu</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 vienumu</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Meklēt šeit\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nav datu</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mēnesis</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Gads</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Nav datu</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as mk 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Претходна страница\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Наредна страница\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / стр</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Избери датум\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Избери време\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Од датум\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"До датум\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 предмет</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Пребарај тука\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Нема податоци</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 предмет</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Пребарај тука\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Нема податоци</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Месец</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Година</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Нема податоци</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as mn-mn 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Өмнөх хуудас\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Дараагийн хуудас\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / хуудас</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Огноо сонгох\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Цаг сонгох\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Эхлэх огноо\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Дуусах огноо\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Зүйл</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Хайх\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Мэдээлэл байхгүй байна</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Зүйл</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Хайх\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Мэдээлэл байхгүй байна</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Сар</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Жил</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Мэдээлэл байхгүй байна</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ms-my 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Halaman sebelumnya\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Halam seterusnya\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / halaman</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Pilih tarikh\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sila pilih masa\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Tarikh mula\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Tarikh akhir\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Carian di sini\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Tiada data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Carian di sini\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Tiada data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Bulan</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Tahun</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Tiada data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as nb 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Forrige side\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Neste side\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / side</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Velg dato\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Velg tid\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Startdato\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Sluttdato\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Søk her\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Søk her\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Måned</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>År</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Ingen data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ne-np 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 वस्तु</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"यहाँ खोज्नुहोस्\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">डाटा छैन</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 वस्तु</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"यहाँ खोज्नुहोस्\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">डाटा छैन</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Month</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Year</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">डाटा छैन</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as nl 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Vorige pagina\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Volgende pagina\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / pagina</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selecteer datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selecteer tijd\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Begin datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Eind datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Zoek hier\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Geen gegevens</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Zoek hier\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Geen gegevens</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Maand</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Jaar</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Geen gegevens</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as nl-be 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Vorige pagina\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Volgende pagina\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / pagina</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selecteer datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selecteer tijd\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Begin datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Eind datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Zoek hier\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Geen gegevens</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Zoek hier\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Geen gegevens</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Maand</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Jaar</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Geen gegevens</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as pl 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Poprzednia strona\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Następna strona\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 na stronę</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Wybierz datę\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Wybierz godzinę\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data początkowa\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data końcowa\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 obiekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Szukaj\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Brak danych</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 obiekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Szukaj\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Brak danych</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Miesiąc</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Rok</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Brak danych</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as pt 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Página Anterior\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Página Seguinte\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / página</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Hora\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data inicial\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data final\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Procurar...\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Sem resultados</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Procurar...\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Sem resultados</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Set\">Set</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mês</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Ano</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Dom</th>\n                <th>Seg</th>\n                <th>Ter</th>\n                <th>Qua</th>\n                <th>Qui</th>\n                <th>Sex</th>\n                <th>Sáb</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Sem resultados</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as pt-br 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Página anterior\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Próxima página\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / página</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selecionar data\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Hora\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data inicial\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data final\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Procurar\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Não há dados</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Procurar\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Não há dados</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Set\">Set</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mês</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Ano</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Dom</th>\n                <th>Seg</th>\n                <th>Ter</th>\n                <th>Qua</th>\n                <th>Qui</th>\n                <th>Sex</th>\n                <th>Sáb</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Não há dados</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ro 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Pagina Anterioară\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Pagina Următoare\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / pagină</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selectează data\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Selectează ora\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Data start\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Data sfârșit\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Căutare\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Fără date</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 element</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Căutare\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Fără date</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Lună</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>An</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Fără date</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ru 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Назад\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Вперед\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / стр.</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Выберите дату\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Выберите время\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Начальная дата\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Конечная дата\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 элем.</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Поиск\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Нет данных</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 элем.</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Поиск\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Нет данных</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Месяц</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Год</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Нет данных</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as sk 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Predchádzajúca strana\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Nasledujúca strana\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / strana</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vybrať dátum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Vybrať čas\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Od\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Do\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 položka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Vyhľadávanie\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Žiadne dáta</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 položka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Vyhľadávanie\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Žiadne dáta</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mesiac</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Rok</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Žiadne dáta</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as sl 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Prejšnja stran\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Naslednja stran\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / strani</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izberite datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izberite čas\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Začetni datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Končni datum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Objekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Išči tukaj\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ni podatkov</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Objekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Išči tukaj\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ni podatkov</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mesec</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Leto</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Ni podatkov</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as sr 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Prethodna strana\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Sledeća strana\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / strani</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izaberi datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Izaberi vreme\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Datum početka\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Datum završetka\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 stavka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Pretraži ovde\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nema podataka</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 stavka</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Pretraži ovde\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Nema podataka</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Mesec</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Godina</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Nema podataka</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as sv 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Föreg sida\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Nästa sida\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / sida</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Välj datum\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Välj tid\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Startdatum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Slutdatum\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 objekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Sök här\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 objekt</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Sök här\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Ingen data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Månad</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>År</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Ingen data</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as ta 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"முந்தைய பக்கம்\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"அடுத்த பக்கம்\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / பக்கம்</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"தேதியைத் தேர்ந்தெடுக்கவும்\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"நேரத்தைத் தேர்ந்தெடுக்கவும்\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"தொடக்க தேதி\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"கடைசி தேதி\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 தகவல்</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"இங்கு தேடவும்\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">தகவல் இல்லை</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 தகவல்</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"இங்கு தேடவும்\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">தகவல் இல்லை</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>மாதம்</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>வருடம்</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">தகவல் இல்லை</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as th 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"หน้าก่อนหน้า\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"หน้าถัดไป\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / หน้า</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"เลือกวันที่\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"เลือกเวลา\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"วันเริ่มต้น\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"วันสิ้นสุด\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ชิ้น</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ค้นหา\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">ไม่มีข้อมูล</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 ชิ้น</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"ค้นหา\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">ไม่มีข้อมูล</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>เดือน</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>ปี</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">ไม่มีข้อมูล</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as tr 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Önceki Sayfa\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Sonraki Sayfa\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / sayfa</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Tarih seç\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Zaman seç\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Başlangıç tarihi\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Bitiş tarihi\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Öğe</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Arama\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Veri Yok</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 Öğe</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Arama\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Veri Yok</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Ay</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Yıl</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Veri Yok</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as uk 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Попередня сторінка\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Наступна сторінка\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / сторінці</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Оберіть дату\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Оберіть час\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Початкова дата\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Кінцева дата\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 елем.</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Введіть текст для пошуку\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Даних немає</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 елем.</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Введіть текст для пошуку\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Даних немає</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Місяць</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Рік</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Даних немає</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as vi 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Trang Trước\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Trang Kế\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / trang</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Chọn thời điểm\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Chọn thời gian\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Ngày bắt đầu\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Ngày kết thúc\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 mục</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Tìm ở đây\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Trống</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 mục</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Tìm ở đây\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">Trống</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017\">2017</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>Tháng</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>Năm</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">Trống</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as zh-cn 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"上一页\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"下一页\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 条/页</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择日期\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"请选择时间\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"开始日期\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"结束日期\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 项</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"请输入搜索内容\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">暂无数据</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 项</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"请输入搜索内容\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">暂无数据</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017年\">2017年</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>月</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>年</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">暂无数据</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n\nexports[`Locale Provider should display the text as zh-tw 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"上一頁\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"下一頁\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 條/頁</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n  <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n    <!---->\n    <!---->\n    <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n      <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n    </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"請選擇日期\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker\">\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"請選擇時間\" title=\"03:30:07\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div>\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <div class=\"ant-picker ant-picker-range\" style=\"width: 200px;\">\n    <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"開始日期\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n    <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"結束日期\" size=\"12\" autocomplete=\"off\"></div>\n    <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n    <!----></span>\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </div>\n  <!----><a>Click to confirm</a>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 項目</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"搜尋資料\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">無此資料</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 項目</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n        <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"搜尋資料\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n          <!----></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">無此資料</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-picker-calendar ant-picker-calendar-mini\">\n    <div class=\"ant-picker-calendar-header\">\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-year-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"2017年\">2017年</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-select ant-select-sm ant-picker-calendar-month-select ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Sep\">Sep</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small ant-picker-calendar-mode-switch\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"month\"><span class=\"ant-radio-button-inner\"></span></span><span>月</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"year\"><span class=\"ant-radio-button-inner\"></span></span><span>年</span></label></div>\n    </div>\n    <div tabindex=\"0\" class=\"ant-picker-panel\">\n      <div class=\"ant-picker-date-panel\">\n        <!---->\n        <div class=\"ant-picker-body\">\n          <table class=\"ant-picker-content\">\n            <thead>\n              <tr>\n                <th>Su</th>\n                <th>Mo</th>\n                <th>Tu</th>\n                <th>We</th>\n                <th>Th</th>\n                <th>Fr</th>\n                <th>Sa</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td title=\"2017-08-27\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-28\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-29\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-30\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-08-31\" class=\"ant-picker-cell ant-picker-cell-end\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">31</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-01\" class=\"ant-picker-cell ant-picker-cell-start ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-02\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-03\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-04\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-05\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-06\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-07\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-08\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">08</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-09\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">09</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-10\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">10</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-11\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">11</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-12\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">12</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-13\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">13</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-14\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">14</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-15\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">15</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-16\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">16</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-17\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">17</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-18\" class=\"ant-picker-cell ant-picker-cell-in-view ant-picker-cell-today ant-picker-cell-selected\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today\">\n                    <div class=\"ant-picker-calendar-date-value\">18</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-19\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">19</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-20\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">20</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-21\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">21</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-22\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">22</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-23\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">23</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-09-24\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">24</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-25\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">25</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-26\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">26</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-27\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">27</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-28\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">28</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-29\" class=\"ant-picker-cell ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">29</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-09-30\" class=\"ant-picker-cell ant-picker-cell-end ant-picker-cell-in-view\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">30</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <td title=\"2017-10-01\" class=\"ant-picker-cell ant-picker-cell-start\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">01</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-02\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">02</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-03\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">03</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-04\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">04</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-05\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">05</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-06\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">06</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n                <td title=\"2017-10-07\" class=\"ant-picker-cell\">\n                  <div class=\"ant-picker-cell-inner ant-picker-calendar-date\">\n                    <div class=\"ant-picker-calendar-date-value\">07</div>\n                    <div class=\"ant-picker-calendar-date-content\">\n                      <!---->\n                    </div>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-empty\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                        <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr class=\"ant-table-placeholder\">\n                    <td colspan=\"2\" class=\"ant-table-cell\">\n                      <!---->\n                      <div class=\"ant-empty ant-empty-normal\">\n                        <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                              <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                              <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                                <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                                <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                              </g>\n                            </g>\n                          </svg></div>\n                        <p class=\"ant-empty-description\">無此資料</p>\n                        <!---->\n                      </div>\n                      <!---->\n                    </td>\n                  </tr>\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!--teleport start-->\n  <!--teleport end-->\n</div>\n`;\n"
  },
  {
    "path": "components/locale-provider/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport dayjs from 'dayjs';\nimport MockDate from 'mockdate';\nimport { sleep } from '../../../tests/utils';\nimport {\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  Popconfirm,\n  Table,\n  Modal,\n  Select,\n  Transfer,\n} from '../..';\nimport LocaleProvider from '..';\nimport arEG from '../../locale/ar_EG';\nimport bgBG from '../../locale/bg_BG';\nimport caES from '../../locale/ca_ES';\nimport csCZ from '../../locale/cs_CZ';\nimport daDK from '../../locale/da_DK';\nimport deDE from '../../locale/de_DE';\nimport elGR from '../../locale/el_GR';\nimport enGB from '../../locale/en_GB';\nimport enUS from '../../locale/en_US';\nimport esES from '../../locale/es_ES';\nimport etEE from '../../locale/et_EE';\nimport faIR from '../../locale/fa_IR';\nimport fiFI from '../../locale/fi_FI';\nimport frBE from '../../locale/fr_BE';\nimport frFR from '../../locale/fr_FR';\nimport heIL from '../../locale/he_IL';\nimport hiIN from '../../locale/hi_IN';\nimport hrHR from '../../locale/hr_HR';\nimport huHU from '../../locale/hu_HU';\nimport hyAM from '../../locale/hy_AM';\nimport isIS from '../../locale/is_IS';\nimport itIT from '../../locale/it_IT';\nimport jaJP from '../../locale/ja_JP';\nimport knIN from '../../locale/kn_IN';\nimport koKR from '../../locale/ko_KR';\nimport kuIQ from '../../locale/ku_IQ';\nimport mkMK from '../../locale/mk_MK';\nimport mnMN from '../../locale/mn_MN';\nimport msMY from '../../locale/ms_MY';\nimport nbNO from '../../locale/nb_NO';\nimport neNP from '../../locale/ne_NP';\nimport nlBE from '../../locale/nl_BE';\nimport nlNL from '../../locale/nl_NL';\nimport plPL from '../../locale/pl_PL';\nimport ptBR from '../../locale/pt_BR';\nimport ptPT from '../../locale/pt_PT';\nimport roRO from '../../locale/ro_RO';\nimport ruRU from '../../locale/ru_RU';\nimport skSK from '../../locale/sk_SK';\nimport slSI from '../../locale/sl_SI';\nimport srRS from '../../locale/sr_RS';\nimport svSE from '../../locale/sv_SE';\nimport taIN from '../../locale/ta_IN';\nimport thTH from '../../locale/th_TH';\nimport trTR from '../../locale/tr_TR';\nimport ukUA from '../../locale/uk_UA';\nimport viVN from '../../locale/vi_VN';\nimport idID from '../../locale/id_ID';\nimport lvLV from '../../locale/lv_LV';\nimport zhCN from '../../locale/zh_CN';\nimport zhTW from '../../locale/zh_TW';\n\nconst locales = [\n  arEG,\n  bgBG,\n  caES,\n  csCZ,\n  daDK,\n  deDE,\n  elGR,\n  enGB,\n  enUS,\n  esES,\n  etEE,\n  faIR,\n  fiFI,\n  frBE,\n  frFR,\n  heIL,\n  hiIN,\n  hrHR,\n  huHU,\n  hyAM,\n  isIS,\n  itIT,\n  jaJP,\n  knIN,\n  koKR,\n  kuIQ,\n  mkMK,\n  msMY,\n  mnMN,\n  nbNO,\n  neNP,\n  nlBE,\n  nlNL,\n  plPL,\n  ptBR,\n  ptPT,\n  roRO,\n  ruRU,\n  skSK,\n  slSI,\n  srRS,\n  svSE,\n  taIN,\n  thTH,\n  trTR,\n  ukUA,\n  viVN,\n  idID,\n  lvLV,\n  zhCN,\n  zhTW,\n];\n\nconst { Option } = Select;\nconst { RangePicker } = DatePicker;\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'filter1',\n        value: 'filter1',\n      },\n    ],\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n  },\n];\n\nconst App = {\n  render() {\n    return (\n      <div>\n        <Pagination defaultCurrent={1} total={50} showSizeChanger />\n        <Select showSearch style={{ width: '200px' }}>\n          <Option value=\"jack\">jack</Option>\n          <Option value=\"lucy\">lucy</Option>\n        </Select>\n        <DatePicker open />\n        <TimePicker open defaultValue={dayjs()} />\n        <RangePicker open style={{ width: '200px' }} />\n        <Popconfirm title=\"Question?\" visible>\n          <a>Click to confirm</a>\n        </Popconfirm>\n        <Transfer dataSource={[]} showSearch targetKeys={[]} render={item => item.title} />\n        <Calendar fullscreen={false} value={dayjs()} />\n        <Table dataSource={[]} columns={columns} />\n        <Modal title=\"Locale Modal\" visible>\n          <p>Locale Modal</p>\n        </Modal>\n      </div>\n    );\n  },\n};\n\ndescribe('Locale Provider', () => {\n  beforeAll(() => {\n    document.body.innerHTML = '';\n    MockDate.set(dayjs('2017-09-18T03:30:07.795'));\n  });\n\n  afterAll(() => {\n    MockDate.reset();\n  });\n\n  locales.forEach(locale => {\n    it(`should display the text as ${locale.locale}`, async () => {\n      const wrapper = mount(\n        {\n          render() {\n            return (\n              <LocaleProvider locale={locale}>\n                <App />\n              </LocaleProvider>\n            );\n          },\n        },\n        { sync: false, attachTo: 'body' },\n      );\n      await sleep();\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  xit('should change locale of Modal.xxx', async () => {\n    const ModalDemo = {\n      mounted() {\n        Modal.confirm({\n          title: 'Hello World!',\n        });\n      },\n      render() {\n        return null;\n      },\n    };\n    for (const locale of locales) {\n      document.body.innerHTML = '';\n      mount(\n        {\n          render() {\n            return (\n              <LocaleProvider locale={locale}>\n                <ModalDemo />\n              </LocaleProvider>\n            );\n          },\n        },\n        { sync: false, attachTo: 'body' },\n      );\n      await sleep();\n      const currentConfirmNode =\n        document.querySelectorAll('.ant-modal-confirm')[\n          document.querySelectorAll('.ant-modal-confirm').length - 1\n        ];\n      let cancelButtonText = currentConfirmNode.querySelectorAll(\n        '.ant-btn:not(.ant-btn-primary) span',\n      )[0].innerHTML;\n      let okButtonText = currentConfirmNode.querySelectorAll('.ant-btn-primary span')[0].innerHTML;\n      if (locale.locale === 'zh-cn') {\n        cancelButtonText = cancelButtonText.replace(' ', '');\n        okButtonText = okButtonText.replace(' ', '');\n      }\n      expect(cancelButtonText).toBe(locale.Modal.cancelText);\n      expect(okButtonText).toBe(locale.Modal.okText);\n    }\n  });\n\n  xit('set dayjs locale when locale changes', async () => {\n    document.body.innerHTML = '';\n    const Test = {\n      data() {\n        return {\n          locale: zhCN,\n        };\n      },\n      render() {\n        return (\n          <LocaleProvider locale={this.locale}>\n            <div>\n              <DatePicker defaultValue={dayjs()} open />\n            </div>\n          </LocaleProvider>\n        );\n      },\n    };\n    const wrapper = mount(Test, { sync: false, attachTo: 'body' });\n    await sleep(50);\n    expect(document.body.innerHTML).toMatchSnapshot();\n    wrapper.vm.locale = frFR;\n    await sleep(50);\n    expect(document.body.innerHTML).toMatchSnapshot();\n    wrapper.vm.locale = null;\n    await sleep(50);\n    expect(document.body.innerHTML).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/locale-provider/index.ts",
    "content": "import locale from '../locale';\n\nexport * from '../locale';\n\nexport default locale;\n"
  },
  {
    "path": "components/mentions/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/mentions/demo/async.vue correctly 1`] = `\n<div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\"></textarea>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/mentions/demo/basic.vue correctly 1`] = `\n<div class=\"ant-mentions\"><textarea dropdownclassname=\"\" autofocus=\"\" rows=\"1\"></textarea>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/mentions/demo/form.vue correctly 1`] = `\n<form class=\"ant-form ant-form-horizontal\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"form_item_coders\" class=\"ant-form-item-required\" title=\"Top coders\">Top coders\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-18 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\" id=\"form_item_coders\"></textarea>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-col-6 ant-form-item-label\"><label for=\"form_item_bio\" class=\"ant-form-item-required\" title=\"Bio\">Bio\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-col-18 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"3\" placeholder=\"You can use @ to ref user here\" id=\"form_item_bio\"></textarea>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <!---->\n      <div class=\"ant-col ant-col-12 ant-col-offset-5 ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>Submit</span>\n            </button><button style=\"margin-left: 8px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Reset</span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/mentions/demo/placement.vue correctly 1`] = `\n<div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\"></textarea>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/mentions/demo/prefix.vue correctly 1`] = `\n<div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\" placeholder=\"input @ to mention people, # to mention tag\"></textarea>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/mentions/demo/readonly.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 10px;\">\n    <div class=\"ant-mentions ant-mentions-disabled\"><textarea dropdownclassname=\"\" disabled=\"\" rows=\"1\" placeholder=\"this is disabled Mentions\"></textarea>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-mentions\"><textarea dropdownclassname=\"\" rows=\"1\" placeholder=\"this is readOnly a-mentions\" readonly=\"\"></textarea>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/mentions/demo/status.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-mentions ant-mentions-status-error\"><textarea dropdownclassname=\"\" autofocus=\"\" rows=\"1\" status=\"error\"></textarea>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-mentions ant-mentions-status-warning\"><textarea dropdownclassname=\"\" autofocus=\"\" rows=\"1\" status=\"warning\"></textarea>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/mentions/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('mentions');\n"
  },
  {
    "path": "components/mentions/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Mentions from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport { sleep } from '../../../tests/utils';\nimport KeyCode from '../../_util/KeyCode';\n\nconst { getMentions, Option } = Mentions;\n\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\n\nfunction triggerInput(wrapper, text = '') {\n  const lastChar = text[text.length - 1];\n  wrapper.find('textarea').element.value = text;\n  wrapper.find('textarea').element.selectionStart = text.length;\n  wrapper.find('textarea').trigger('keydown');\n  wrapper.find('textarea').trigger('change');\n  wrapper.find('textarea').trigger('keyup', { key: lastChar });\n}\n\ndescribe('Mentions', () => {\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  focusTest(Mentions);\n  it('getMentions', () => {\n    const mentions = getMentions('@light #bamboo cat', { prefix: ['@', '#'] });\n    expect(mentions).toEqual([\n      {\n        prefix: '@',\n        value: 'light',\n      },\n      {\n        prefix: '#',\n        value: 'bamboo',\n      },\n    ]);\n  });\n\n  it('focus', async () => {\n    const onFocus = jest.fn();\n    const onBlur = jest.fn();\n\n    const wrapper = mount(\n      {\n        render() {\n          return <Mentions onFocus={onFocus} onBlur={onBlur} />;\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await sleep();\n    wrapper.find('textarea').trigger('focus');\n    await sleep();\n    expect(wrapper.find('.ant-mentions').classes('ant-mentions-focused')).toBeTruthy();\n    expect(onFocus).toHaveBeenCalled();\n    wrapper.find('textarea').trigger('blur');\n    await sleep(500);\n    expect(wrapper.classes()).not.toContain('ant-mentions-focused');\n    expect(onBlur).toHaveBeenCalled();\n  });\n\n  it('loading', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Mentions loading />;\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await sleep(100);\n    triggerInput(wrapper, '@');\n    await sleep(100);\n    expect($$('.ant-mentions-dropdown-menu-item').length).toBeTruthy();\n    expect($$('.ant-spin')).toBeTruthy();\n  });\n\n  it('notExist', async () => {\n    jest.useFakeTimers();\n    const wrapper = mount({\n      render() {\n        return (\n          <Mentions>\n            <Option value=\"bamboo\">Bamboo</Option>\n            <Option value=\"light\">Light</Option>\n            <Option value=\"cat\">Cat</Option>\n          </Mentions>\n        );\n      },\n    });\n\n    triggerInput(wrapper, '@notExist');\n    jest.runAllTimers();\n\n    wrapper.find('textarea').element.keyCode = KeyCode.ENTER;\n    wrapper.find('textarea').trigger('keydown');\n    jest.runAllTimers();\n\n    expect(wrapper.find('textarea').element.value).toBe('@notExist');\n  });\n});\n"
  },
  {
    "path": "components/mentions/demo/async.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 异步加载\n  en-US: Asynchronous loading\n---\n\n## zh-CN\n\n匹配内容列表为异步返回时。\n\n## en-US\n\nasync.\n\n</docs>\n<template>\n  <a-mentions v-model:value=\"value\" :options=\"options\" :loading=\"loading\" @search=\"onSearch\">\n    <template #option=\"{ payload }\">\n      <img :src=\"payload.avatar_url\" :alt=\"payload.login\" />\n      <span>{{ payload.login }}</span>\n    </template>\n  </a-mentions>\n</template>\n\n<script lang=\"ts\" setup>\nimport { debounce } from 'lodash-es';\nimport { computed, ref } from 'vue';\nimport { MentionsProps } from '..';\nconst value = ref<string>('');\nconst loading = ref<boolean>(false);\nconst users = ref<{ login: string; avatar_url: string }[]>([]);\nconst search = ref<string>('');\nconst loadGithubUsers = debounce((key: string) => {\n  if (!key) {\n    users.value = [];\n    return;\n  }\n\n  fetch(`https://api.github.com/search/users?q=${key}`)\n    .then(res => res.json())\n    .then(({ items = [] }) => {\n      if (search.value !== key) return;\n      users.value = items.slice(0, 10);\n      loading.value = false;\n    });\n}, 800);\n\nconst onSearch = (searchValue: string) => {\n  search.value = searchValue;\n  loading.value = !!searchValue;\n  console.log(!!searchValue);\n  users.value = [];\n  console.log('Search:', searchValue);\n  loadGithubUsers(searchValue);\n};\nconst options = computed<MentionsProps['options']>(() =>\n  users.value.map(user => ({\n    key: user.login,\n    value: user.login,\n    class: 'antd-demo-dynamic-option',\n    payload: user,\n  })),\n);\n</script>\n<style scoped>\n.antd-demo-dynamic-option img {\n  width: 20px;\n  height: 20px;\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/mentions/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n基本用法\n\n## en-US\n\nBasic usage.\n\n</docs>\n<template>\n  <a-mentions v-model:value=\"value\" autofocus :options=\"options\" @select=\"onSelect\"></a-mentions>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nconst value = ref<string>('@afc163');\nwatch(value, () => {\n  console.log('value', value);\n});\nconst onSelect = (option: { value: string }) => {\n  console.log('select', option);\n};\n\nconst options = [\n  {\n    value: 'afc163',\n    label: 'afc163',\n  },\n  {\n    value: 'zombieJ',\n    label: 'zombieJ',\n  },\n  {\n    value: 'yesmeck',\n    label: 'yesmeck',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/mentions/demo/form.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 配合 Form 使用\n  en-US: With Form\n---\n\n## zh-CN\n\n配合 Form 使用。\n\n## en-US\n\nto work with `Form`.\n</docs>\n\n<template>\n  <a-form layout=\"horizontal\">\n    <a-form-item\n      label=\"Top coders\"\n      :label-col=\"{ span: 6 }\"\n      :wrapper-col=\"{ span: 18 }\"\n      name=\"coders\"\n      v-bind=\"validateInfos.coders\"\n    >\n      <a-mentions v-model:value=\"modelRef.coders\" rows=\"1\" :options=\"options\"></a-mentions>\n    </a-form-item>\n    <a-form-item\n      label=\"Bio\"\n      :label-col=\"{ span: 6 }\"\n      :wrapper-col=\"{ span: 18 }\"\n      name=\"bio\"\n      v-bind=\"validateInfos.bio\"\n    >\n      <a-mentions\n        v-model:value=\"modelRef.bio\"\n        rows=\"3\"\n        placeholder=\"You can use @ to ref user here\"\n        :options=\"options\"\n      ></a-mentions>\n    </a-form-item>\n    <a-form-item :wrapper-col=\"{ span: 12, offset: 5 }\">\n      <a-button type=\"primary\" @click=\"handleSubmit\">Submit</a-button>\n      <a-button style=\"margin-left: 8px\" @click=\"resetFields\">Reset</a-button>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { Mentions, Form } from 'ant-design-vue';\nimport { reactive } from 'vue';\n\nconst useForm = Form.useForm;\nconst { getMentions } = Mentions;\nconst checkMention = async (_, value) => {\n  const mentions = getMentions(value);\n  if (mentions.length < 2) {\n    return Promise.reject('More than one must be selected!');\n  } else {\n    return Promise.resolve();\n  }\n};\nconst modelRef = reactive({\n  bio: '',\n  coders: '',\n});\nconst rulesRef = reactive({\n  bio: [{ required: true, message: 'Must input bio' }],\n  coders: [{ required: true, validator: checkMention }],\n});\nconst { resetFields, validate, validateInfos } = useForm(modelRef, rulesRef);\nconst handleSubmit = e => {\n  e.preventDefault();\n  validate()\n    .then(() => {\n      console.log('Submit!!!', modelRef);\n    })\n    .catch(errors => {\n      console.log('Errors in the form!!!', errors);\n    });\n};\nconst options = [\n  {\n    value: 'afc163',\n    label: 'afc163',\n  },\n  {\n    value: 'zombieJ',\n    label: 'zombieJ',\n  },\n  {\n    value: 'yesmeck',\n    label: 'yesmeck',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/mentions/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <async />\n    <prefix />\n    <readonly />\n    <placement />\n    <FormMentions />\n    <statusVue />\n  </demo-sort>\n</template>\n<script>\nimport Basic from './basic.vue';\nimport Async from './async.vue';\nimport FormMentions from './form.vue';\nimport Prefix from './prefix.vue';\nimport Readonly from './readonly.vue';\nimport Placement from './placement.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    statusVue,\n    Basic,\n    Async,\n    Prefix,\n    Readonly,\n    Placement,\n    FormMentions,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/mentions/demo/placement.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 向上展开\n  en-US: Placement\n---\n\n## zh-CN\n\n向上展开建议。\n\n## en-US\n\nChange the suggestions placement.\n\n</docs>\n<template>\n  <a-mentions v-model:value=\"value\" placement=\"top\" :options=\"options\"></a-mentions>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('');\nconst options = [\n  {\n    value: 'afc163',\n    label: 'afc163',\n  },\n  {\n    value: 'zombieJ',\n    label: 'zombieJ',\n  },\n  {\n    value: 'yesmeck',\n    label: 'yesmeck',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/mentions/demo/prefix.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义触发字符\n  en-US: Customize Trigger Token\n---\n\n## zh-CN\n\n通过 prefix 属性自定义触发字符。默认为 @, 可以定义为数组。\n\n## en-US\n\nCustomize Trigger Token by `prefix` props. Default to `@`, `Array<string>` also supported.\n\n</docs>\n<template>\n  <a-mentions\n    v-model:value=\"value\"\n    placeholder=\"input @ to mention people, # to mention tag\"\n    :prefix=\"['@', '#']\"\n    :options=\"options\"\n    @search=\"onSearch\"\n  ></a-mentions>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nconst MOCK_DATA: Record<string, string[]> = {\n  '@': ['afc163', 'zombiej', 'yesmeck'],\n  '#': ['1.0', '2.0', '3.0'],\n};\nconst prefix = ref<string>('@');\nconst value = ref<string>('');\nconst options = computed(() => {\n  return (MOCK_DATA[prefix.value] || []).map(value => ({\n    key: value,\n    value,\n    label: value,\n  }));\n});\n\nconst onSearch = (_: string, val: string) => {\n  console.log(_, val);\n  prefix.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/mentions/demo/readonly.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 无效或只读\n  en-US: disabled or readonly\n---\n\n## zh-CN\n\n通过 `disabled` 属性设置是否生效。通过 `readonly` 属性设置是否只读。\n\n## en-US\n\nConfigurate disabled and readonly.\n\n</docs>\n<template>\n  <div>\n    <div style=\"margin-bottom: 10px\">\n      <a-mentions\n        v-model:value=\"value1\"\n        :options=\"options\"\n        placeholder=\"this is disabled Mentions\"\n        disabled\n      ></a-mentions>\n    </div>\n    <a-mentions\n      v-model:value=\"value2\"\n      :options=\"options\"\n      placeholder=\"this is readOnly a-mentions\"\n      readonly\n    ></a-mentions>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<string>('');\nconst value2 = ref<string>('');\nconst options = [\n  {\n    value: 'afc163',\n    label: 'afc163',\n  },\n  {\n    value: 'zombieJ',\n    label: 'zombieJ',\n  },\n  {\n    value: 'yesmeck',\n    label: 'yesmeck',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/mentions/demo/status.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 Mentions 添加状态。可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to Mentions with `status`, which could be `error` or `warning`。\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-mentions\n      v-model:value=\"value\"\n      :options=\"options\"\n      autofocus\n      status=\"error\"\n      @select=\"onSelect\"\n    ></a-mentions>\n    <a-mentions\n      v-model:value=\"value\"\n      :options=\"options\"\n      autofocus\n      status=\"warning\"\n      @select=\"onSelect\"\n    ></a-mentions>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nconst value = ref<string>('@afc163');\nwatch(value, () => {\n  console.log('value', value);\n});\nconst onSelect = (option: { value: string }) => {\n  console.log('select', option);\n};\n\nconst options = [\n  {\n    value: 'afc163',\n    label: 'afc163',\n  },\n  {\n    value: 'zombieJ',\n    label: 'zombieJ',\n  },\n  {\n    value: 'yesmeck',\n    label: 'yesmeck',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/mentions/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Mentions\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*e4bXT7Uhi9YAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*pxR2S53P_xoAAAAAAAAAAAAADrJ8AQ/original\n---\n\nMention component.\n\n## When To Use\n\nWhen you need to mention someone or something.\n\n## API\n\n### Mention\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- | --- |\n| autofocus | Auto get focus when component mounted | boolean | `false` |\n| defaultValue | Default value | string |  |\n| filterOption | Customize filter option logic | false \\| (input: string, option: OptionProps) => boolean |  |\n| getPopupContainer | Set the mount HTML node for suggestions | () => HTMLElement |  |\n| notFoundContent | Set mentions content when not match | string \\| slot | 'Not Found' |\n| placement | Set popup placement | `top` \\| `bottom` | `bottom` |\n| prefix | Set trigger prefix keyword | string \\| string\\[] | '@' |\n| split | Set split string before and after selected mention | string | ' ' |\n| status | Set validation status | 'error' \\| 'warning' \\| 'success' \\| 'validating' | - | 3.3.0 |\n| validateSearch | Customize trigger search logic | (text: string, props: MentionsProps) => void |  |\n| value(v-model) | Set value of mentions | string |  |\n| options | Option Configuration | [Options](#option) | \\[] | 4.0 |\n| option | custom option label | v-slot:option=\"option\" | - | 4.0 |\n\n### Events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| blur | remove focus | function |\n| change | Trigger when value changed | function(value: string) |\n| focus | get focus | function |\n| search | Trigger when prefix hit | function(value: string, prefix: string) |\n| select | Trigger when user select the option | function(option: OptionProps, prefix: string) |\n\n### Mention methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n\n### Mention.Option (< 4.0)\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| value | value of suggestion, the value will insert into input filed while selected | string | '' |\n\n### Option\n\nSupport from v4.0\n\n<!-- prettier-ignore -->\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| value | value of suggestion, the value will insert into input filed while selected | string | - |\n| label | Title of the option | VueNode | () => VueNode | - |\n| disabled | Optional | boolean | - |\n| class | className | string | - |\n| style | The style of the option | CSSProperties | - |\n|payload| other data | object | - |\n"
  },
  {
    "path": "components/mentions/index.tsx",
    "content": "import type { App, PropType, ExtractPropTypes } from 'vue';\nimport { computed, watch, shallowRef, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport VcMentions from '../vc-mentions';\nimport { mentionsProps as baseMentionsProps } from '../vc-mentions/src/mentionsProps';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { flattenChildren, getOptionProps } from '../_util/props-util';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport omit from '../_util/omit';\nimport { optionProps, optionOptions } from '../vc-mentions/src/Option';\nimport type { KeyboardEventHandler } from '../_util/EventInterface';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport useStyle from './style';\nimport { useProvideOverride } from '../menu/src/OverrideContext';\nimport warning from '../_util/warning';\nimport Spin from '../spin';\nimport devWarning from '../vc-util/devWarning';\nimport type { CustomSlotsType } from '../_util/type';\n\ninterface MentionsConfig {\n  prefix?: string | string[];\n  split?: string;\n}\n\nexport interface MentionsOptionProps {\n  value: string;\n  disabled?: boolean;\n  label?: string | number | ((o: MentionsOptionProps) => any);\n  [key: string]: any;\n}\n\ninterface MentionsEntity {\n  prefix: string;\n  value: string;\n}\n\nexport type MentionPlacement = 'top' | 'bottom';\n\nfunction loadingFilterOption() {\n  return true;\n}\nconst getMentions = (value = '', config: MentionsConfig = {}): MentionsEntity[] => {\n  const { prefix = '@', split = ' ' } = config;\n  const prefixList: string[] = Array.isArray(prefix) ? prefix : [prefix];\n\n  return value\n    .split(split)\n    .map((str = ''): MentionsEntity | null => {\n      let hitPrefix: string | null = null;\n\n      prefixList.some(prefixStr => {\n        const startStr = str.slice(0, prefixStr.length);\n        if (startStr === prefixStr) {\n          hitPrefix = prefixStr;\n          return true;\n        }\n        return false;\n      });\n\n      if (hitPrefix !== null) {\n        return {\n          prefix: hitPrefix,\n          value: str.slice((hitPrefix as string).length),\n        };\n      }\n      return null;\n    })\n    .filter((entity): entity is MentionsEntity => !!entity && !!entity.value);\n};\n\nexport const mentionsProps = () => ({\n  ...baseMentionsProps,\n  loading: { type: Boolean, default: undefined },\n  onFocus: {\n    type: Function as PropType<(e: FocusEvent) => void>,\n  },\n  onBlur: {\n    type: Function as PropType<(e: FocusEvent) => void>,\n  },\n  onSelect: {\n    type: Function as PropType<(option: MentionsOptionProps, prefix: string) => void>,\n  },\n  onChange: {\n    type: Function as PropType<(text: string) => void>,\n  },\n  onPressenter: {\n    type: Function as PropType<KeyboardEventHandler>,\n  },\n  'onUpdate:value': {\n    type: Function as PropType<(text: string) => void>,\n  },\n  notFoundContent: PropTypes.any,\n  defaultValue: String,\n  id: String,\n  status: String as PropType<InputStatus>,\n});\n\nexport type MentionsProps = Partial<ExtractPropTypes<ReturnType<typeof mentionsProps>>>;\n\nconst Mentions = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMentions',\n  inheritAttrs: false,\n  props: mentionsProps(),\n  slots: Object as CustomSlotsType<{\n    notFoundContent?: any;\n    option?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, emit, attrs, expose }) {\n    // =================== Warning =====================\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !flattenChildren(slots.default?.() || []).length,\n        'Mentions',\n        '`Mentions.Option` is deprecated. Please use `options` instead.',\n      );\n    }\n    const { prefixCls, renderEmpty, direction } = useConfigInject('mentions', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const focused = shallowRef(false);\n    const vcMentions = shallowRef(null);\n    const value = shallowRef(props.value ?? props.defaultValue ?? '');\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    useProvideOverride({\n      prefixCls: computed(() => `${prefixCls.value}-menu`),\n      mode: computed(() => 'vertical'),\n      selectable: computed(() => false),\n      onClick: () => {},\n      validator: ({ mode }) => {\n        // Warning if use other mode\n        warning(\n          !mode || mode === 'vertical',\n          'Mentions',\n          `mode=\"${mode}\" is not supported for Mentions's Menu.`,\n        );\n      },\n    });\n    watch(\n      () => props.value,\n      val => {\n        value.value = val;\n      },\n    );\n    const handleFocus = (e: FocusEvent) => {\n      focused.value = true;\n      emit('focus', e);\n    };\n\n    const handleBlur = (e: FocusEvent) => {\n      focused.value = false;\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n\n    const handleSelect = (...args: [MentionsOptionProps, string]) => {\n      emit('select', ...args);\n      focused.value = true;\n    };\n\n    const handleChange = (val: string) => {\n      if (props.value === undefined) {\n        value.value = val;\n      }\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n\n    const getNotFoundContent = () => {\n      const notFoundContent = props.notFoundContent;\n      if (notFoundContent !== undefined) {\n        return notFoundContent;\n      }\n      if (slots.notFoundContent) {\n        return slots.notFoundContent();\n      }\n      return renderEmpty('Select');\n    };\n\n    const getOptions = () => {\n      return flattenChildren(slots.default?.() || []).map(item => {\n        return { ...getOptionProps(item), label: (item.children as any)?.default?.() };\n      });\n    };\n\n    const focus = () => {\n      (vcMentions.value as HTMLTextAreaElement).focus();\n    };\n\n    const blur = () => {\n      (vcMentions.value as HTMLTextAreaElement).blur();\n    };\n\n    expose({ focus, blur });\n    const mentionsfilterOption = computed(() =>\n      props.loading ? loadingFilterOption : props.filterOption,\n    );\n    return () => {\n      const {\n        disabled,\n        getPopupContainer,\n        rows = 1,\n        id = formItemContext.id.value,\n        ...restProps\n      } = props;\n      const { hasFeedback, feedbackIcon } = formItemInputContext;\n      const { class: className, ...otherAttrs } = attrs;\n      const otherProps = omit(restProps, ['defaultValue', 'onUpdate:value', 'prefixCls']);\n\n      const mergedClassName = classNames(\n        {\n          [`${prefixCls.value}-disabled`]: disabled,\n          [`${prefixCls.value}-focused`]: focused.value,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        getStatusClassNames(prefixCls.value, mergedStatus.value),\n        !hasFeedback && className,\n        hashId.value,\n      );\n\n      const mentionsProps = {\n        prefixCls: prefixCls.value,\n        ...otherProps,\n        disabled,\n        direction: direction.value,\n        filterOption: mentionsfilterOption.value,\n        getPopupContainer,\n        options: props.loading\n          ? [\n              {\n                value: 'ANTDV_SEARCHING',\n                disabled: true,\n                label: <Spin size=\"small\" />,\n              },\n            ]\n          : props.options || getOptions(),\n        class: mergedClassName,\n        ...otherAttrs,\n        rows,\n        onChange: handleChange,\n        onSelect: handleSelect,\n        onFocus: handleFocus,\n        onBlur: handleBlur,\n        ref: vcMentions,\n        value: value.value,\n        id,\n      };\n      const mentions = (\n        <VcMentions\n          {...mentionsProps}\n          dropdownClassName={hashId.value}\n          v-slots={{ notFoundContent: getNotFoundContent, option: slots.option }}\n        ></VcMentions>\n      );\n      if (hasFeedback) {\n        return wrapSSR(\n          <div\n            class={classNames(\n              `${prefixCls.value}-affix-wrapper`,\n              getStatusClassNames(\n                `${prefixCls.value}-affix-wrapper`,\n                mergedStatus.value,\n                hasFeedback,\n              ),\n              className,\n              hashId.value,\n            )}\n          >\n            {mentions}\n            <span class={`${prefixCls.value}-suffix`}>{feedbackIcon}</span>\n          </div>,\n        );\n      }\n      return wrapSSR(mentions);\n    };\n  },\n});\n\n/* istanbul ignore next */\nexport const MentionsOption = defineComponent({\n  compatConfig: { MODE: 3 },\n  ...optionOptions,\n  name: 'AMentionsOption',\n  props: optionProps,\n});\n\nexport default Object.assign(Mentions, {\n  Option: MentionsOption,\n  getMentions,\n  install: (app: App) => {\n    app.component(Mentions.name, Mentions);\n    app.component(MentionsOption.name, MentionsOption);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/mentions/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Mentions\nsubtitle: 提及\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*e4bXT7Uhi9YAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*pxR2S53P_xoAAAAAAAAAAAAADrJ8AQ/original\n---\n\n提及组件。\n\n## 何时使用\n\n- 用于在输入中提及某人或某事，常用于发布、聊天或评论功能。\n\n## API\n\n### Mentions\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- | --- |\n| autofocus | 自动获得焦点 | boolean | `false` |\n| defaultValue | 默认值 | string |  |\n| filterOption | 自定义过滤逻辑 | false \\| (input: string, option: OptionProps) => boolean |  |\n| getPopupContainer | 指定建议框挂载的 HTML 节点 | () => HTMLElement |  |\n| notFoundContent | 当下拉列表为空时显示的内容 | string \\| slot | 'Not Found' |\n| placement | 弹出层展示位置 | `top` \\| `bottom` | `bottom` |\n| prefix | 设置触发关键字 | string \\| string\\[] | '@' |\n| split | 设置选中项前后分隔符 | string | ' ' |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| validateSearch | 自定义触发验证逻辑 | (text: string, props: MentionsProps) => void |  |\n| value(v-model) | 设置值 | string |  |\n| options | 选项配置 | [Options](#option) | \\[] | 4.0 |\n| option | 通过 option 插槽，自定义节点 | v-slot:option=\"option\" | - | 4.0 |\n\n### 事件\n\n| 事件名称 | 说明               | 回调参数                                      |\n| -------- | ------------------ | --------------------------------------------- |\n| blur     | 失去焦点的时回调   | function                                      |\n| change   | 值改变时触发       | function(value: string)                       |\n| focus    | 获得焦点时回调     | function                                      |\n| search   | 文本框值变化时回调 | function(value: string, prefix: string)       |\n| select   | 选择选项时触发     | function(option: OptionProps, prefix: string) |\n\n### Mentions 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n### Mention.Option (< 4.0)\n\n| 参数  | 说明           | 类型   | 默认值 |\n| ----- | -------------- | ------ | ------ |\n| value | 选择时填充的值 | string | ''     |\n\n### Option\n\nSupport from v4.0\n\n<!-- prettier-ignore -->\n| 参数      | 说明           | 类型                | 默认值 |\n| --------- | -------------- | ------------------- | ------ |\n| value     | 选择时填充的值 | string | number             | -      |\n| label     | 选项的标题     | VueNode | (o: Option)=> VueNode     | -      |\n| disabled  | 是否可选       | boolean             | -      |\n| class | css 类名       | string              | -      |\n| style     | 选项样式       | CSSProperties | -      |\n|payload| 其它数据 | object | - |\n"
  },
  {
    "path": "components/mentions/style/index.ts",
    "content": "import type { InputToken } from '../../input/style';\nimport {\n  genActiveStyle,\n  genBasicInputStyle,\n  genDisabledStyle,\n  genPlaceholderStyle,\n  genStatusStyle,\n  initInputToken,\n} from '../../input/style';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n  dropdownHeight: number;\n  controlItemWidth: number;\n}\n\ntype MentionsToken = InputToken<FullToken<'Mentions'>>;\n\nconst genMentionsStyle: GenerateStyle<MentionsToken> = token => {\n  const {\n    componentCls,\n    colorTextDisabled,\n    controlItemBgHover,\n    controlPaddingHorizontal,\n    colorText,\n    motionDurationSlow,\n    lineHeight,\n    controlHeight,\n    inputPaddingHorizontal,\n    inputPaddingVertical,\n    fontSize,\n    colorBgElevated,\n    borderRadiusLG,\n    boxShadowSecondary,\n  } = token;\n\n  const itemPaddingVertical = Math.round(\n    (token.controlHeight - token.fontSize * token.lineHeight) / 2,\n  );\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      ...genBasicInputStyle(token),\n\n      position: 'relative',\n      display: 'inline-block',\n      height: 'auto',\n      padding: 0,\n      overflow: 'hidden',\n      lineHeight,\n      whiteSpace: 'pre-wrap',\n      verticalAlign: 'bottom',\n\n      ...genStatusStyle(token, componentCls),\n\n      '&-disabled': {\n        '> textarea': {\n          ...genDisabledStyle(token),\n        },\n      },\n\n      '&-focused': {\n        ...genActiveStyle(token),\n      },\n\n      [`&-affix-wrapper ${componentCls}-suffix`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineEnd: inputPaddingHorizontal,\n        bottom: 0,\n        zIndex: 1,\n        display: 'inline-flex',\n        alignItems: 'center',\n        margin: 'auto',\n      },\n\n      // ================= Input Area =================\n      [`> textarea, ${componentCls}-measure`]: {\n        color: colorText,\n        boxSizing: 'border-box',\n        minHeight: controlHeight - 2,\n        margin: 0,\n        padding: `${inputPaddingVertical}px ${inputPaddingHorizontal}px`,\n        overflow: 'inherit',\n        overflowX: 'hidden',\n        overflowY: 'auto',\n        fontWeight: 'inherit',\n        fontSize: 'inherit',\n        fontFamily: 'inherit',\n        fontStyle: 'inherit',\n        fontVariant: 'inherit',\n        fontSizeAdjust: 'inherit',\n        fontStretch: 'inherit',\n        lineHeight: 'inherit',\n        direction: 'inherit',\n        letterSpacing: 'inherit',\n        whiteSpace: 'inherit',\n        textAlign: 'inherit',\n        verticalAlign: 'top',\n        wordWrap: 'break-word',\n        wordBreak: 'inherit',\n        tabSize: 'inherit',\n      },\n\n      '> textarea': {\n        width: '100%',\n        border: 'none',\n        outline: 'none',\n        resize: 'none',\n        backgroundColor: 'inherit',\n        ...genPlaceholderStyle(token.colorTextPlaceholder),\n      },\n\n      [`${componentCls}-measure`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineEnd: 0,\n        bottom: 0,\n        insetInlineStart: 0,\n        zIndex: -1,\n        color: 'transparent',\n        pointerEvents: 'none',\n\n        '> span': {\n          display: 'inline-block',\n          minHeight: '1em',\n        },\n      },\n\n      // ================== Dropdown ==================\n      '&-dropdown': {\n        // Ref select dropdown style\n        ...resetComponent(token),\n\n        position: 'absolute',\n        top: -9999,\n        insetInlineStart: -9999,\n        zIndex: token.zIndexPopup,\n        boxSizing: 'border-box',\n        fontSize,\n        fontVariant: 'initial',\n        backgroundColor: colorBgElevated,\n        borderRadius: borderRadiusLG,\n        outline: 'none',\n        boxShadow: boxShadowSecondary,\n\n        '&-hidden': {\n          display: 'none',\n        },\n\n        [`${componentCls}-dropdown-menu`]: {\n          maxHeight: token.dropdownHeight,\n          marginBottom: 0,\n          paddingInlineStart: 0, // Override default ul/ol\n          overflow: 'auto',\n          listStyle: 'none',\n          outline: 'none',\n\n          '&-item': {\n            ...textEllipsis,\n            position: 'relative',\n            display: 'block',\n            minWidth: token.controlItemWidth,\n            padding: `${itemPaddingVertical}px ${controlPaddingHorizontal}px`,\n            color: colorText,\n            fontWeight: 'normal',\n            lineHeight,\n            cursor: 'pointer',\n            transition: `background ${motionDurationSlow} ease`,\n\n            '&:hover': {\n              backgroundColor: controlItemBgHover,\n            },\n\n            '&:first-child': {\n              borderStartStartRadius: borderRadiusLG,\n              borderStartEndRadius: borderRadiusLG,\n              borderEndStartRadius: 0,\n              borderEndEndRadius: 0,\n            },\n\n            '&:last-child': {\n              borderStartStartRadius: 0,\n              borderStartEndRadius: 0,\n              borderEndStartRadius: borderRadiusLG,\n              borderEndEndRadius: borderRadiusLG,\n            },\n\n            '&-disabled': {\n              color: colorTextDisabled,\n              cursor: 'not-allowed',\n\n              '&:hover': {\n                color: colorTextDisabled,\n                backgroundColor: controlItemBgHover,\n                cursor: 'not-allowed',\n              },\n            },\n\n            '&-selected': {\n              color: colorText,\n              fontWeight: token.fontWeightStrong,\n              backgroundColor: controlItemBgHover,\n            },\n\n            '&-active': {\n              backgroundColor: controlItemBgHover,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Mentions',\n  token => {\n    const mentionsToken = initInputToken<FullToken<'Mentions'>>(token);\n    return [genMentionsStyle(mentionsToken)];\n  },\n  token => ({\n    dropdownHeight: 250,\n    controlItemWidth: 100,\n    zIndexPopup: token.zIndexPopupBase + 50,\n  }),\n);\n"
  },
  {
    "path": "components/menu/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/menu/demo/horizontal.vue correctly 1`] = `\n<ul class=\"ant-menu-overflow ant-menu ant-menu-root ant-menu-horizontal ant-menu-light\" role=\"menu\" data-menu-list=\"true\">\n  <!---->\n  <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-selected\" style=\"opacity: 1; order: 0;\" data-menu-id=\"mail\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation One\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span></li>\n  <!---->\n  <li class=\"ant-menu-overflow-item ant-menu-item\" style=\"opacity: 1; order: 1;\" data-menu-id=\"app\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation Two\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span></li>\n  <li class=\"ant-menu-overflow-item ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 1; order: 2;\" data-submenu-id=\"sub1\" role=\"none\">\n    <!---->\n    <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_1_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three - Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <!---->\n  </li>\n  <!---->\n  <li class=\"ant-menu-overflow-item ant-menu-item ant-menu-item-only-child\" style=\"opacity: 1; order: 3;\" data-menu-id=\"alipay\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation Four - Link\">\n    <!----><span class=\"ant-menu-title-content\"><a href=\"https://antdv.com\" target=\"_blank\">Navigation Four - Link</a></span>\n  </li>\n  <li class=\"ant-menu-overflow-item ant-menu-overflow-item ant-menu-overflow-item-rest ant-menu-submenu ant-menu-submenu-horizontal\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\" data-submenu-id=\"$$__vc-menu-more__key\" role=\"none\">\n    <!---->\n    <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"$$__vc-menu-more__key\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"$$__vc-menu-more__key-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <!---->\n  </li>\n  <!---->\n  <!---->\n  <!--teleport start-->\n  <!--teleport end-->\n</ul>\n`;\n\nexports[`renders ./components/menu/demo/inline.vue correctly 1`] = `\n<ul id=\"dddddd\" class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-light\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n  <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n    <!---->\n    <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_9_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <ul id=\"sub_menu_9_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n      <li class=\"ant-menu-item-group\">\n        <div title=\"Item 1\" class=\"ant-menu-item-group-title\">Item 1</div>\n        <ul class=\"ant-menu-item-group-list\">\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-selected ant-menu-item-only-child\" data-menu-id=\"1\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 1</span>\n          </li>\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"2\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 2</span>\n          </li>\n        </ul>\n      </li>\n      <li class=\"ant-menu-item-group\">\n        <div title=\"Item 2\" class=\"ant-menu-item-group-title\">Item 2</div>\n        <ul class=\"ant-menu-item-group-list\">\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 3</span>\n          </li>\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 4</span>\n          </li>\n        </ul>\n      </li>\n    </ul>\n  </li>\n  <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n    <!---->\n    <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_10_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <ul id=\"sub_menu_10_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 5</span>\n      </li>\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 6</span>\n      </li>\n      <li role=\"none\" class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub3\">\n        <!---->\n        <div style=\"padding-left: 48px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub3\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_11_$$_sub3-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\">Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n        <ul id=\"sub_menu_11_$$_sub3-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline\" data-menu-list=\"true\" style=\"display: none;\">\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 7</span>\n          </li>\n          <!---->\n          <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n            <!----><span class=\"ant-menu-title-content\">Option 8</span>\n          </li>\n        </ul>\n      </li>\n    </ul>\n  </li>\n  <li class=\"ant-menu-item-divider\"></li>\n  <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub4\" role=\"none\">\n    <!---->\n    <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub4\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_12_$$_sub4-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <ul id=\"sub_menu_12_$$_sub4-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 9</span>\n      </li>\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 10</span>\n      </li>\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"11\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 11</span>\n      </li>\n      <!---->\n      <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"12\" aria-disabled=\"false\">\n        <!----><span class=\"ant-menu-title-content\">Option 12</span>\n      </li>\n    </ul>\n  </li>\n  <li class=\"ant-menu-item-group\">\n    <div title=\"Group\" class=\"ant-menu-item-group-title\">Group</div>\n    <ul class=\"ant-menu-item-group-list\">\n      <!---->\n      <li class=\"ant-menu-item ant-menu-item-only-child\" style=\"padding-left: 24px;\" data-menu-id=\"13\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">Option 13</span>\n      </li>\n      <!---->\n      <li class=\"ant-menu-item ant-menu-item-only-child\" style=\"padding-left: 24px;\" data-menu-id=\"14\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-menu-title-content\">Option 14</span>\n      </li>\n    </ul>\n  </li>\n  <!---->\n  <!---->\n  <!--teleport start-->\n  <!--teleport end-->\n</ul>\n`;\n\nexports[`renders ./components/menu/demo/inline-collapsed.vue correctly 1`] = `\n<div style=\"width: 256px;\"><button style=\"margin-bottom: 16px;\" class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span role=\"img\" aria-label=\"menu-fold\" class=\"anticon anticon-menu-fold\"><svg focusable=\"false\" class=\"\" data-icon=\"menu-fold\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 000 13.8z\"></path></svg></span>\n  </button>\n  <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" role=\"menu\" data-menu-list=\"true\">\n    <!---->\n    <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Option 1\"><span role=\"img\" aria-label=\"pie-chart\" class=\"anticon anticon-pie-chart ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"pie-chart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 00-282.8 117.1 398.19 398.19 0 00-85.7 127.1A397.61 397.61 0 0072 552a398.46 398.46 0 00117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 00472 952a398.46 398.46 0 00282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 00872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 01470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 00589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 01166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z\"></path></svg></span><span class=\"ant-menu-title-content\">Option 1</span></li>\n    <!---->\n    <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Option 2\"><span role=\"img\" aria-label=\"desktop\" class=\"anticon anticon-desktop ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"desktop\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z\"></path></svg></span><span class=\"ant-menu-title-content\">Option 2</span></li>\n    <!---->\n    <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"3\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Option 3\"><span role=\"img\" aria-label=\"inbox\" class=\"anticon anticon-inbox ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"inbox\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z\"></path></svg></span><span class=\"ant-menu-title-content\">Option 3</span></li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_3_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_3_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 5\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 5</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 6\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 6</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 7\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 7</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 8\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 8</span>\n        </li>\n      </ul>\n    </li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_4_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_4_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 9\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 9</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 10\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 10</span>\n        </li>\n        <li role=\"none\" class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub3\">\n          <!---->\n          <div style=\"padding-left: 48px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub3\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_5_$$_sub3-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\">Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_5_$$_sub3-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 11\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"11\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 11</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 12\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"12\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 12</span>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </li>\n    <!---->\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/menu/demo/sider-current.vue correctly 1`] = `\n<div>\n  <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-light\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_17_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_17_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"1\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 1</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"2\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 2</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 3</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 4</span>\n        </li>\n      </ul>\n    </li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_18_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_18_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 5</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 6</span>\n        </li>\n        <li role=\"none\" class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub3\">\n          <!---->\n          <div style=\"padding-left: 48px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub3\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_19_$$_sub3-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\">Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_19_$$_sub3-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 7</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 8</span>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub4\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub4\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_20_$$_sub4-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_20_$$_sub4-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 9</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 10</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"11\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 11</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"12\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 12</span>\n        </li>\n      </ul>\n    </li>\n    <!---->\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/menu/demo/submenu-theme.vue correctly 1`] = `\n<div><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">dark</span><span class=\"ant-switch-inner-unchecked\">light</span></span>\n  </button><br><br>\n  <ul class=\"ant-menu ant-menu-root ant-menu-vertical ant-menu-dark\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n    <li class=\"ant-menu-submenu ant-menu-submenu-vertical ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n      <!---->\n      <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_25_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <!---->\n    </li>\n    <!---->\n    <li class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n      <!----><span class=\"ant-menu-title-content\">Option 5</span>\n    </li>\n    <!---->\n    <li class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n      <!----><span class=\"ant-menu-title-content\">Option 6</span>\n    </li>\n    <!---->\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/menu/demo/switch-mode.vue correctly 1`] = `\n<div><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button> Change Mode <span class=\"ant-divider\" style=\"margin: 0px 1em;\"></span><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button> Change Theme <br><br>\n  <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-light\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n    <!---->\n    <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span></li>\n    <!---->\n    <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span></li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_27_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_27_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 3</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 4</span>\n        </li>\n        <li role=\"none\" class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub1-2\">\n          <!---->\n          <div style=\"padding-left: 48px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1-2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_28_$$_sub1-2-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\">Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_28_$$_sub1-2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 5</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 6</span>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_29_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_29_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 7</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 8</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 9</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 10</span>\n        </li>\n      </ul>\n    </li>\n    <!---->\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/menu/demo/theme.vue correctly 1`] = `\n<div><button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">Dark</span><span class=\"ant-switch-inner-unchecked\">Light</span></span>\n  </button><br><br>\n  <ul class=\"ant-menu ant-menu-root ant-menu-inline ant-menu-dark\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n    <!---->\n    <li class=\"ant-menu-item ant-menu-item-selected\" style=\"padding-left: 24px;\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation One\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span></li>\n    <!---->\n    <li class=\"ant-menu-item\" style=\"padding-left: 24px;\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation Two\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span></li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline ant-menu-submenu-open\" data-submenu-id=\"sub1\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"true\" aria-haspopup=\"true\" aria-controls=\"sub_menu_33_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_33_$$_sub1-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 3\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"3\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 3</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 4\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"4\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 4</span>\n        </li>\n        <li role=\"none\" class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub1-2\">\n          <!---->\n          <div style=\"padding-left: 48px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1-2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_34_$$_sub1-2-popup\" aria-disabled=\"false\"><span class=\"ant-menu-title-content\">Submenu</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n          <ul id=\"sub_menu_34_$$_sub1-2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline\" data-menu-list=\"true\" style=\"display: none;\">\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 5\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"5\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 5</span>\n            </li>\n            <!---->\n            <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 6\" style=\"padding-left: 72px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"6\" aria-disabled=\"false\">\n              <!----><span class=\"ant-menu-title-content\">Option 6</span>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </li>\n    <li class=\"ant-menu-submenu ant-menu-submenu-inline\" data-submenu-id=\"sub2\" role=\"none\">\n      <!---->\n      <div style=\"padding-left: 24px;\" class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_35_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Four</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n      <ul id=\"sub_menu_35_$$_sub2-popup\" class=\"ant-menu ant-menu-sub ant-menu-inline v-enter-from v-enter-active\" data-menu-list=\"true\" style=\"display: none;\">\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 7\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"7\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 7</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 8\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"8\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 8</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 9\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"9\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 9</span>\n        </li>\n        <!---->\n        <li role=\"menuitem\" tabindex=\"-1\" title=\"Option 10\" style=\"padding-left: 48px;\" class=\"ant-menu-item ant-menu-item-only-child\" data-menu-id=\"10\" aria-disabled=\"false\">\n          <!----><span class=\"ant-menu-title-content\">Option 10</span>\n        </li>\n      </ul>\n    </li>\n    <!---->\n    <!---->\n    <!--teleport start-->\n    <!--teleport end-->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/menu/demo/vertical.vue correctly 1`] = `\n<ul class=\"ant-menu ant-menu-root ant-menu-vertical ant-menu-light\" style=\"width: 256px;\" role=\"menu\" data-menu-list=\"true\">\n  <!---->\n  <li class=\"ant-menu-item\" data-menu-id=\"1\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation One\"><span role=\"img\" aria-label=\"mail\" class=\"anticon anticon-mail ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"mail\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0068.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation One</span></li>\n  <!---->\n  <li class=\"ant-menu-item\" data-menu-id=\"2\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\" title=\"Navigation Two\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Two</span></li>\n  <li class=\"ant-menu-submenu ant-menu-submenu-vertical\" data-submenu-id=\"sub1\" role=\"none\">\n    <!---->\n    <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub1\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_39_$$_sub1-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"appstore\" class=\"anticon anticon-appstore ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"appstore\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Three</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <!---->\n  </li>\n  <li class=\"ant-menu-submenu ant-menu-submenu-vertical\" data-submenu-id=\"sub2\" role=\"none\">\n    <!---->\n    <div class=\"ant-menu-submenu-title\" tabindex=\"-1\" data-menu-id=\"sub2\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sub_menu_40_$$_sub2-popup\" aria-disabled=\"false\"><span role=\"img\" aria-label=\"setting\" class=\"anticon anticon-setting ant-menu-item-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"setting\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\"></path></svg></span><span class=\"ant-menu-title-content\">Navigation Four</span><i class=\"ant-menu-submenu-arrow\"></i></div>\n    <!---->\n  </li>\n  <!---->\n  <!---->\n  <!--teleport start-->\n  <!--teleport end-->\n</ul>\n`;\n"
  },
  {
    "path": "components/menu/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('menu');\n"
  },
  {
    "path": "components/menu/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport Menu from '..';\nimport { InboxOutlined, PieChartOutlined } from '@ant-design/icons-vue';\nimport mountTest from '../../../tests/shared/mountTest';\n\nconst { SubMenu } = Menu;\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\ndescribe('Menu', () => {\n  window.requestAnimationFrame = callback => window.setTimeout(callback, 16);\n  window.cancelAnimationFrame = window.clearTimeout;\n  mountTest({\n    render() {\n      return (\n        <div>\n          <Menu>\n            <Menu.Item />\n            <Menu.ItemGroup />\n            <Menu.SubMenu />\n          </Menu>\n        </div>\n      );\n    },\n  });\n  beforeEach(() => {\n    document.body.innerHTML = '';\n    // jest.useFakeTimers()\n  });\n\n  afterEach(() => {\n    // jest.useRealTimers()\n  });\n  it('If has select nested submenu item ,the menu items on the grandfather level should be highlight', async () => {\n    mount(\n      {\n        render() {\n          return (\n            <Menu selectedKeys={['1-3-2']} mode=\"vertical\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"1-1\">Option 1</Menu.Item>\n                <Menu.Item key=\"1-2\">Option 2</Menu.Item>\n                <SubMenu key=\"1-3\" title=\"submenu1-3\">\n                  <Menu.Item key=\"1-3-1\">Option 3</Menu.Item>\n                  <Menu.Item key=\"1-3-2\">Option 4</Menu.Item>\n                </SubMenu>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('li.ant-menu-submenu-selected').length).toBe(1);\n    });\n  });\n  it('should accept openKeys in mode horizontal', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Menu openKeys={['1']} mode=\"horizontal\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.exists('.ant-menu-sub')).toBe(true);\n    });\n  });\n\n  it('should accept openKeys in mode inline', async () => {\n    mount(\n      {\n        render() {\n          return (\n            <Menu openKeys={['1']} mode=\"inline\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    });\n  });\n\n  // it('should accept openKeys in mode vertical', async () => {\n  //   mount(\n  //     {\n  //       render() {\n  //         return (\n  //           <Menu openKeys={['1']} mode=\"vertical\">\n  //             <SubMenu key=\"1\" title=\"submenu1\">\n  //               <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n  //               <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n  //             </SubMenu>\n  //             <Menu.Item key=\"2\">menu2</Menu.Item>\n  //           </Menu>\n  //         );\n  //       },\n  //     },\n  //     { attachTo: 'body', sync: false },\n  //   );\n  //   await asyncExpect(() => {\n  //     expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n  //   }, 100);\n  // });\n\n  it('horizontal', async () => {\n    mount(\n      {\n        props: {\n          openKeys: {\n            type: Array,\n            default() {\n              return ['1'];\n            },\n          },\n        },\n        render() {\n          return (\n            <Menu openKeys={this.openKeys} mode=\"horizontal\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await sleep(100);\n    expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n  });\n\n  // it('inline', async () => {\n  //   const openKeys = ref(['1']);\n  //   // eslint-disable-next-line no-unused-vars\n  //   const wrapper = mount(\n  //     {\n  //       setup() {\n  //         return () => {\n  //           return (\n  //             <Menu openKeys={openKeys.value} mode=\"inline\">\n  //               <SubMenu key=\"1\" title=\"submenu1\">\n  //                 <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n  //                 <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n  //               </SubMenu>\n  //               <Menu.Item key=\"2\">menu2</Menu.Item>\n  //             </Menu>\n  //           );\n  //         };\n  //       },\n  //     },\n  //     { attachTo: 'body', sync: false },\n  //   );\n  //   await asyncExpect(() => {\n  //     expect($$('.ant-menu-sub')[0].style.display).not.toBe('none');\n  //   }, 0);\n  //   openKeys.value = [];\n  //   await asyncExpect(() => {\n  //     expect($$('.ant-menu-sub')[0].style.display).toBe('none');\n  //   }, 100);\n  //   openKeys.value = ['1'];\n  //   await asyncExpect(() => {\n  //     expect($$('.ant-menu-sub')[0].style.display).not.toBe('none');\n  //   }, 100);\n  // });\n\n  it('vertical', async () => {\n    const wrapper = mount(\n      {\n        props: {\n          openKeys: {\n            type: Array,\n            default() {\n              return ['1'];\n            },\n          },\n        },\n        render() {\n          return (\n            <Menu openKeys={this.openKeys} mode=\"vertical\" openTransitionName=\"\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n    }, 100);\n    wrapper.setProps({ openKeys: [] });\n    await asyncExpect(() => {\n      expect($$('.ant-menu-submenu-popup')[0].style.display).toBe('none');\n    }, 500);\n    wrapper.setProps({ openKeys: ['1'] });\n    await asyncExpect(() => {\n      expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n    }, 100);\n  });\n\n  // https://github.com/ant-design/ant-design/pulls/4677\n  // https://github.com/ant-design/ant-design/issues/4692\n  // TypeError: Cannot read property 'indexOf' of undefined\n  it('pr #4677 and issue #4692', () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Menu mode=\"horizontal\">\n              <SubMenu title=\"submenu\">\n                <Menu.Item key=\"1\">menu1</Menu.Item>\n                <Menu.Item key=\"2\">menu2</Menu.Item>\n              </SubMenu>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    wrapper.vm.$forceUpdate();\n    // just expect no error emit\n  });\n\n  xit('should always follow openKeys when mode is switched', async () => {\n    const wrapper = mount(\n      {\n        props: {\n          mode: {\n            type: String,\n            default: 'inline',\n          },\n        },\n        render() {\n          return (\n            <Menu openKeys={['1']} mode={this.mode}>\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    });\n    wrapper.setProps({ mode: 'vertical' });\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].parentElement.style.display).not.toBe('none');\n    }, 0);\n    wrapper.setProps({ mode: 'inline' });\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    }, 0);\n  });\n\n  it('should always follow openKeys when inlineCollapsed is switched', async () => {\n    const wrapper = mount(\n      {\n        props: {\n          inlineCollapsed: {\n            type: Boolean,\n            default: false,\n          },\n        },\n        render() {\n          return (\n            <Menu ref=\"menu\" openKeys={['1']} mode=\"inline\" inlineCollapsed={this.inlineCollapsed}>\n              <Menu.Item key=\"menu1\">\n                <InboxOutlined />\n                <span>Option</span>\n              </Menu.Item>\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option</Menu.Item>\n              </SubMenu>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].className).toContain('ant-menu-inline');\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    }, 0);\n    wrapper.setProps({ inlineCollapsed: true });\n    await asyncExpect(() => {\n      // 动画完成后的回调\n      wrapper.vm.$refs.menu.switchModeFromInline = false;\n      wrapper.vm.$forceUpdate();\n    });\n    // await asyncExpect(() => {\n    //   wrapper.trigger('transitionend', { propertyName: 'width' });\n    // });\n    // await asyncExpect(() => {\n    //   expect(wrapper.findAll('ul.ant-menu-root')[0].classes()).toContain('ant-menu-vertical');\n    //   expect(wrapper.findAll('ul.ant-menu-sub').length).toBe(0);\n    // }, 500);\n    wrapper.setProps({ inlineCollapsed: false });\n    await asyncExpect(() => {\n      expect($$('ul.ant-menu-sub')[0].className).toContain('ant-menu-inline');\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    }, 0);\n  });\n\n  xit('inlineCollapsed should works well when specify a not existed default openKeys', async () => {\n    const wrapper = mount(\n      {\n        props: {\n          inlineCollapsed: {\n            type: Boolean,\n            default: false,\n          },\n        },\n        render() {\n          return (\n            <Menu\n              ref=\"menu\"\n              openKeys={['not-existed']}\n              mode=\"inline\"\n              inlineCollapsed={this.inlineCollapsed}\n            >\n              <Menu.Item key=\"menu1\">\n                <InboxOutlined />\n                <span>Option</span>\n              </Menu.Item>\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option</Menu.Item>\n              </SubMenu>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-menu-sub').length).toBe(1);\n    });\n    wrapper.setProps({ inlineCollapsed: true });\n    // await asyncExpect(() => {\n    //   // 动画完成后的回调\n    //   wrapper.vm.$refs.menu.switchModeFromInline = false;\n    //   wrapper.vm.$forceUpdate();\n    // });\n    // await asyncExpect(() => {\n    //   wrapper.trigger('transitionend', { propertyName: 'width' });\n    // });\n    await asyncExpect(() => {\n      $$('.ant-menu-submenu-title')[0].dispatchEvent(new MouseEvent('mouseenter'));\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-menu-submenu')[0].classes()).toContain(\n        'ant-menu-submenu-vertical',\n      );\n      expect(wrapper.findAll('.ant-menu-submenu')[0].classes()).toContain('ant-menu-submenu-open');\n      expect($$('ul.ant-menu-sub')[0].className).toContain('ant-menu-vertical');\n      expect($$('ul.ant-menu-sub')[0].style.display).not.toBe('none');\n    }, 500);\n  });\n\n  // describe('open submenu when click submenu title', () => {\n  //   beforeEach(() => {\n  //     document.body.innerHTML = '';\n  //   });\n\n  const toggleMenu = (wrapper, index, event) => {\n    $$('.ant-menu-submenu-title')[index].dispatchEvent(new MouseEvent(event));\n  };\n\n  it('inline', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Menu mode=\"inline\">\n              <SubMenu key=\"1\" title=\"submenu1\">\n                <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n                <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n              </SubMenu>\n              <Menu.Item key=\"2\">menu2</Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { attachTo: 'body', sync: false },\n    );\n    await asyncExpect(() => {\n      expect($$('.ant-menu-sub').length).toBe(1);\n      toggleMenu(wrapper, 0, 'click');\n    }, 0);\n    await asyncExpect(() => {\n      expect($$('.ant-menu-sub').length).toBe(1);\n      expect($$('.ant-menu-sub')[0].style.display).not.toBe('none');\n      toggleMenu(wrapper, 0, 'click');\n    }, 500);\n    await asyncExpect(() => {\n      expect($$('.ant-menu-sub')[0].style.display).toBe('none');\n    }, 500);\n  });\n\n  //   it('vertical', async () => {\n  //     const wrapper = mount(\n  //       {\n  //         render() {\n  //           return (\n  //             <Menu mode=\"vertical\">\n  //               <SubMenu key=\"1\" title=\"submenu1\">\n  //                 <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n  //                 <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n  //               </SubMenu>\n  //               <Menu.Item key=\"2\">menu2</Menu.Item>\n  //             </Menu>\n  //           );\n  //         },\n  //       },\n  //       { attachTo: 'body', sync: false },\n  //     );\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-sub').length).toBe(0);\n  //       toggleMenu(wrapper, 0, 'mouseenter');\n  //     }, 0);\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-sub').length).toBe(1);\n  //       expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n  //       toggleMenu(wrapper, 0, 'mouseleave');\n  //     }, 500);\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-submenu-popup')[0].style.display).toBe('none');\n  //     }, 500);\n  //   });\n\n  //   it('horizontal', async () => {\n  //     const wrapper = mount(\n  //       {\n  //         render() {\n  //           return (\n  //             <Menu mode=\"horizontal\">\n  //               <SubMenu key=\"1\" title=\"submenu1\">\n  //                 <Menu.Item key=\"submenu1\">Option 1</Menu.Item>\n  //                 <Menu.Item key=\"submenu2\">Option 2</Menu.Item>\n  //               </SubMenu>\n  //               <Menu.Item key=\"2\">menu2</Menu.Item>\n  //             </Menu>\n  //           );\n  //         },\n  //       },\n  //       { attachTo: 'body', sync: false },\n  //     );\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-sub').length).toBe(0);\n  //       toggleMenu(wrapper, 1, 'mouseenter');\n  //     }, 100);\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-sub').length).toBe(1);\n  //       expect($$('.ant-menu-submenu-popup')[0].style.display).not.toBe('none');\n  //       toggleMenu(wrapper, 1, 'mouseleave');\n  //     }, 500);\n  //     await asyncExpect(() => {\n  //       expect($$('.ant-menu-submenu-popup')[0].style.display).toBe('none');\n  //     }, 500);\n  //   });\n  // });\n\n  it('inline title', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Menu mode=\"inline\" inlineCollapsed>\n              <Menu.Item key=\"1\" title=\"bamboo lucky\">\n                <PieChartOutlined />\n                <span>\n                  Option 1\n                  <img\n                    style={{ width: 20 }}\n                    alt=\"test\"\n                    src=\"https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg\"\n                  />\n                </span>\n              </Menu.Item>\n            </Menu>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n\n    wrapper.find('.ant-menu-item').trigger('mouseenter');\n    await asyncExpect(() => {\n      const text = $$('.ant-tooltip-inner')[0].textContent;\n      expect(text).toBe('bamboo lucky');\n    }, 500);\n  });\n});\n"
  },
  {
    "path": "components/menu/demo/horizontal.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 顶部导航\n  en-US: Top Navigation\n---\n\n## zh-CN\n\n水平的顶部导航菜单。\n\n## en-US\n\nHorizontal top navigation menu.\n\n</docs>\n\n<template>\n  <a-menu v-model:selectedKeys=\"current\" mode=\"horizontal\" :items=\"items\" />\n</template>\n<script lang=\"ts\" setup>\nimport { h, ref } from 'vue';\nimport { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';\nimport { MenuProps } from 'ant-design-vue';\nconst current = ref<string[]>(['mail']);\nconst items = ref<MenuProps['items']>([\n  {\n    key: 'mail',\n    icon: () => h(MailOutlined),\n    label: 'Navigation One',\n    title: 'Navigation One',\n  },\n  {\n    key: 'app',\n    icon: () => h(AppstoreOutlined),\n    label: 'Navigation Two',\n    title: 'Navigation Two',\n  },\n  {\n    key: 'sub1',\n    icon: () => h(SettingOutlined),\n    label: 'Navigation Three - Submenu',\n    title: 'Navigation Three - Submenu',\n    children: [\n      {\n        type: 'group',\n        label: 'Item 1',\n        children: [\n          {\n            label: 'Option 1',\n            key: 'setting:1',\n          },\n          {\n            label: 'Option 2',\n            key: 'setting:2',\n          },\n        ],\n      },\n      {\n        type: 'group',\n        label: 'Item 2',\n        children: [\n          {\n            label: 'Option 3',\n            key: 'setting:3',\n          },\n          {\n            label: 'Option 4',\n            key: 'setting:4',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    key: 'alipay',\n    label: h('a', { href: 'https://antdv.com', target: '_blank' }, 'Navigation Four - Link'),\n    title: 'Navigation Four - Link',\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/menu/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <horizontal />\n    <inline />\n    <inline-collapsed />\n    <sider-current />\n    <vertical />\n    <theme />\n    <submenu-theme />\n    <switch-mode />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport Horizontal from './horizontal.vue';\nimport InlineCollapsed from './inline-collapsed.vue';\nimport Inline from './inline.vue';\nimport SiderCurrent from './sider-current.vue';\nimport SwitchMode from './switch-mode.vue';\nimport Theme from './theme.vue';\nimport Vertical from './vertical.vue';\nimport SubmenuTheme from './submenu-theme.vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Horizontal,\n    InlineCollapsed,\n    Inline,\n    SiderCurrent,\n    SwitchMode,\n    Theme,\n    Vertical,\n    SubmenuTheme,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/menu/demo/inline-collapsed.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 缩起内嵌菜单\n  en-US: Collapsed inline menu\n---\n\n## zh-CN\n\n内嵌菜单可以被缩起/展开。\n\n你可以在 [Layout](/components/layout-cn/#components-layout-demo-side) 里查看侧边布局结合的完整示例。\n\n## en-US\n\nInline menu could be collapsed.\n\nHere is [a complete demo](/components/layout/#components-layout-demo-side) with sider layout.\n\n</docs>\n\n<template>\n  <div style=\"width: 256px\">\n    <a-button type=\"primary\" style=\"margin-bottom: 16px\" @click=\"toggleCollapsed\">\n      <MenuUnfoldOutlined v-if=\"state.collapsed\" />\n      <MenuFoldOutlined v-else />\n    </a-button>\n    <a-menu\n      v-model:openKeys=\"state.openKeys\"\n      v-model:selectedKeys=\"state.selectedKeys\"\n      mode=\"inline\"\n      theme=\"dark\"\n      :inline-collapsed=\"state.collapsed\"\n      :items=\"items\"\n    ></a-menu>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, watch, h } from 'vue';\nimport {\n  MenuFoldOutlined,\n  MenuUnfoldOutlined,\n  PieChartOutlined,\n  MailOutlined,\n  DesktopOutlined,\n  InboxOutlined,\n  AppstoreOutlined,\n} from '@ant-design/icons-vue';\nconst state = reactive({\n  collapsed: false,\n  selectedKeys: ['1'],\n  openKeys: ['sub1'],\n  preOpenKeys: ['sub1'],\n});\nconst items = reactive([\n  {\n    key: '1',\n    icon: () => h(PieChartOutlined),\n    label: 'Option 1',\n    title: 'Option 1',\n  },\n  {\n    key: '2',\n    icon: () => h(DesktopOutlined),\n    label: 'Option 2',\n    title: 'Option 2',\n  },\n  {\n    key: '3',\n    icon: () => h(InboxOutlined),\n    label: 'Option 3',\n    title: 'Option 3',\n  },\n  {\n    key: 'sub1',\n    icon: () => h(MailOutlined),\n    label: 'Navigation One',\n    title: 'Navigation One',\n    children: [\n      {\n        key: '5',\n        label: 'Option 5',\n        title: 'Option 5',\n      },\n      {\n        key: '6',\n        label: 'Option 6',\n        title: 'Option 6',\n      },\n      {\n        key: '7',\n        label: 'Option 7',\n        title: 'Option 7',\n      },\n      {\n        key: '8',\n        label: 'Option 8',\n        title: 'Option 8',\n      },\n    ],\n  },\n  {\n    key: 'sub2',\n    icon: () => h(AppstoreOutlined),\n    label: 'Navigation Two',\n    title: 'Navigation Two',\n    children: [\n      {\n        key: '9',\n        label: 'Option 9',\n        title: 'Option 9',\n      },\n      {\n        key: '10',\n        label: 'Option 10',\n        title: 'Option 10',\n      },\n      {\n        key: 'sub3',\n        label: 'Submenu',\n        title: 'Submenu',\n        children: [\n          {\n            key: '11',\n            label: 'Option 11',\n            title: 'Option 11',\n          },\n          {\n            key: '12',\n            label: 'Option 12',\n            title: 'Option 12',\n          },\n        ],\n      },\n    ],\n  },\n]);\nwatch(\n  () => state.openKeys,\n  (_val, oldVal) => {\n    state.preOpenKeys = oldVal;\n  },\n);\nconst toggleCollapsed = () => {\n  state.collapsed = !state.collapsed;\n  state.openKeys = state.collapsed ? [] : state.preOpenKeys;\n};\n</script>\n"
  },
  {
    "path": "components/menu/demo/inline.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 内嵌菜单\n  en-US: Inline menu\n---\n\n## zh-CN\n\n垂直菜单，子菜单内嵌在菜单区域。\n\n## en-US\n\nVertical menu with inline submenus.\n\n</docs>\n<template>\n  <a-menu\n    id=\"dddddd\"\n    v-model:openKeys=\"openKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    style=\"width: 256px\"\n    mode=\"inline\"\n    :items=\"items\"\n    @click=\"handleClick\"\n  ></a-menu>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref, watch, VueElement, h } from 'vue';\nimport { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps, ItemType } from 'ant-design-vue';\n\nconst selectedKeys = ref<string[]>(['1']);\nconst openKeys = ref<string[]>(['sub1']);\n\nfunction getItem(\n  label: VueElement | string,\n  key: string,\n  icon?: any,\n  children?: ItemType[],\n  type?: 'group',\n): ItemType {\n  return {\n    key,\n    icon,\n    children,\n    label,\n    type,\n  } as ItemType;\n}\n\nconst items: ItemType[] = reactive([\n  getItem('Navigation One', 'sub1', () => h(MailOutlined), [\n    getItem('Item 1', 'g1', null, [getItem('Option 1', '1'), getItem('Option 2', '2')], 'group'),\n    getItem('Item 2', 'g2', null, [getItem('Option 3', '3'), getItem('Option 4', '4')], 'group'),\n  ]),\n\n  getItem('Navigation Two', 'sub2', () => h(AppstoreOutlined), [\n    getItem('Option 5', '5'),\n    getItem('Option 6', '6'),\n    getItem('Submenu', 'sub3', null, [getItem('Option 7', '7'), getItem('Option 8', '8')]),\n  ]),\n\n  { type: 'divider' },\n\n  getItem('Navigation Three', 'sub4', () => h(SettingOutlined), [\n    getItem('Option 9', '9'),\n    getItem('Option 10', '10'),\n    getItem('Option 11', '11'),\n    getItem('Option 12', '12'),\n  ]),\n\n  getItem('Group', 'grp', null, [getItem('Option 13', '13'), getItem('Option 14', '14')], 'group'),\n]);\n\nconst handleClick: MenuProps['onClick'] = e => {\n  console.log('click', e);\n};\n\nwatch(openKeys, val => {\n  console.log('openKeys', val);\n});\n</script>\n"
  },
  {
    "path": "components/menu/demo/sider-current.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 只展开当前父级菜单\n  en-US: Open current submenu only\n---\n\n## zh-CN\n\n点击菜单，收起其他展开的所有菜单，保持菜单聚焦简洁。\n\n## en-US\n\nClick the menu and you will see that all the other menus gets collapsed to keep the entire menu compact.\n\n</docs>\n\n<template>\n  <div>\n    <a-menu\n      v-model:selectedKeys=\"state.selectedKeys\"\n      style=\"width: 256px\"\n      mode=\"inline\"\n      :open-keys=\"state.openKeys\"\n      :items=\"items\"\n      @openChange=\"onOpenChange\"\n    ></a-menu>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { VueElement, h, reactive } from 'vue';\nimport { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';\nimport { ItemType } from 'ant-design-vue';\n\nfunction getItem(\n  label: VueElement | string,\n  key: string,\n  icon?: any,\n  children?: ItemType[],\n  type?: 'group',\n): ItemType {\n  return {\n    key,\n    icon,\n    children,\n    label,\n    type,\n  } as ItemType;\n}\n\nconst items: ItemType[] = reactive([\n  getItem('Navigation One', 'sub1', () => h(MailOutlined), [\n    getItem('Option 1', '1'),\n    getItem('Option 2', '2'),\n    getItem('Option 3', '3'),\n    getItem('Option 4', '4'),\n  ]),\n  getItem('Navigation Two', 'sub2', () => h(AppstoreOutlined), [\n    getItem('Option 5', '5'),\n    getItem('Option 6', '6'),\n    getItem('Submenu', 'sub3', null, [getItem('Option 7', '7'), getItem('Option 8', '8')]),\n  ]),\n  getItem('Navigation Three', 'sub4', () => h(SettingOutlined), [\n    getItem('Option 9', '9'),\n    getItem('Option 10', '10'),\n    getItem('Option 11', '11'),\n    getItem('Option 12', '12'),\n  ]),\n]);\n\nconst state = reactive({\n  rootSubmenuKeys: ['sub1', 'sub2', 'sub4'],\n  openKeys: ['sub1'],\n  selectedKeys: [],\n});\nconst onOpenChange = (openKeys: string[]) => {\n  const latestOpenKey = openKeys.find(key => state.openKeys.indexOf(key) === -1);\n  if (state.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {\n    state.openKeys = openKeys;\n  } else {\n    state.openKeys = latestOpenKey ? [latestOpenKey] : [];\n  }\n};\n</script>\n"
  },
  {
    "path": "components/menu/demo/submenu-theme.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 子菜单主题\n  en-US: SubMenu theme\n---\n\n## zh-CN\n\n你可以通过 `theme` 属性来设置 SubMenu 的主题从而达到不同目录树下不同主题色的效果。该例子默认为根目录深色，子目录浅色效果。\n\n## en-US\n\nYou can config SubMenu theme with `theme` prop to enable different theme color effect. This sample is dark for root and light for SubMenu.\n\n</docs>\n\n<template>\n  <div>\n    <a-switch\n      :checked=\"theme === 'dark'\"\n      checked-children=\"dark\"\n      un-checked-children=\"light\"\n      @Change=\"changeTheme\"\n    />\n    <br />\n    <br />\n    <a-menu\n      :style=\"{ width: '256px' }\"\n      :open-keys=\"openKeys\"\n      :selected-keys=\"selectedKeys\"\n      mode=\"vertical\"\n      theme=\"dark\"\n      :items=\"items\"\n      @click=\"handleClick\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, VueElement, ComputedRef, h } from 'vue';\nimport { MailOutlined } from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\n\nconst selectedKeys = ref<string[]>(['1']);\nconst openKeys = ref<string[]>(['sub1']);\nconst theme = ref<MenuProps['theme']>('light');\n\nfunction getItem(\n  label: VueElement | string,\n  key: string,\n  icon?: any,\n  children?: MenuProps['items'],\n  theme?: 'light' | 'dark',\n): MenuProps['items'][number] {\n  return {\n    key,\n    icon,\n    children,\n    label,\n    theme,\n  };\n}\n\nconst items: ComputedRef<MenuProps['items']> = computed(() => [\n  getItem(\n    'Navigation One',\n    'sub1',\n    () => h(MailOutlined),\n    [getItem('Option 1', '1'), getItem('Option 2', '2'), getItem('Option 3', '3')],\n    theme.value,\n  ),\n  getItem('Option 5', '5'),\n  getItem('Option 6', '6'),\n]);\n\nfunction handleClick(info: any) {\n  console.log('click', info);\n}\n\nfunction changeTheme(checked: boolean) {\n  theme.value = checked ? 'dark' : 'light';\n}\n</script>\n"
  },
  {
    "path": "components/menu/demo/switch-mode.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 切换菜单类型\n  en-US: Switch the menu type\n---\n\n## zh-CN\n\n展示动态切换模式。\n\n## en-US\n\nShow the dynamic switching mode (between `inline` and `vertical`).\n\n</docs>\n\n<template>\n  <div>\n    <a-switch :checked=\"state.mode === 'vertical'\" @change=\"changeMode\" />\n    Change Mode\n    <span class=\"ant-divider\" style=\"margin: 0 1em\" />\n    <a-switch :checked=\"state.theme === 'dark'\" @change=\"changeTheme\" />\n    Change Theme\n    <br />\n    <br />\n    <a-menu\n      v-model:openKeys=\"state.openKeys\"\n      v-model:selectedKeys=\"state.selectedKeys\"\n      style=\"width: 256px\"\n      :mode=\"state.mode\"\n      :items=\"items\"\n      :theme=\"state.theme\"\n    ></a-menu>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { h, reactive } from 'vue';\nimport {\n  MailOutlined,\n  CalendarOutlined,\n  AppstoreOutlined,\n  SettingOutlined,\n} from '@ant-design/icons-vue';\nimport type { MenuMode, MenuTheme } from 'ant-design-vue';\nimport { ItemType } from 'ant-design-vue';\n\nconst state = reactive({\n  mode: 'inline' as MenuMode,\n  theme: 'light' as MenuTheme,\n  selectedKeys: ['1'],\n  openKeys: ['sub1'],\n});\n\nfunction getItem(\n  label: string,\n  key: string,\n  icon?: any,\n  children?: ItemType[],\n  type?: 'group',\n): ItemType {\n  return {\n    key,\n    icon,\n    children,\n    label,\n    type,\n  } as ItemType;\n}\n\nconst items: ItemType[] = reactive([\n  getItem('Navigation One', '1', h(MailOutlined)),\n  getItem('Navigation Two', '2', h(CalendarOutlined)),\n  getItem('Navigation Two', 'sub1', h(AppstoreOutlined), [\n    getItem('Option 3', '3'),\n    getItem('Option 4', '4'),\n    getItem('Submenu', 'sub1-2', null, [getItem('Option 5', '5'), getItem('Option 6', '6')]),\n  ]),\n  getItem('Navigation Three', 'sub2', h(SettingOutlined), [\n    getItem('Option 7', '7'),\n    getItem('Option 8', '8'),\n    getItem('Option 9', '9'),\n    getItem('Option 10', '10'),\n  ]),\n]);\n\nconst changeMode = (checked: boolean) => {\n  state.mode = checked ? 'vertical' : 'inline';\n};\n\nconst changeTheme = (checked: boolean) => {\n  state.theme = checked ? 'dark' : 'light';\n};\n</script>\n"
  },
  {
    "path": "components/menu/demo/theme.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 主题\n  en-US: Menu Themes\n---\n\n## zh-CN\n\n内建了两套主题 `light` 和 `dark`，默认 `light`。\n\n## en-US\n\nThere are two built-in themes: `light` and `dark`. The default value is `light`.\n\n</docs>\n\n<template>\n  <div>\n    <a-switch\n      :checked=\"theme === 'dark'\"\n      checked-children=\"Dark\"\n      un-checked-children=\"Light\"\n      @change=\"changeTheme\"\n    />\n    <br />\n    <br />\n    <a-menu\n      v-model:openKeys=\"openKeys\"\n      v-model:selectedKeys=\"selectedKeys\"\n      style=\"width: 256px\"\n      mode=\"inline\"\n      :theme=\"theme\"\n      :items=\"items\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { h, ref } from 'vue';\nimport {\n  MailOutlined,\n  CalendarOutlined,\n  AppstoreOutlined,\n  SettingOutlined,\n} from '@ant-design/icons-vue';\nimport type { MenuTheme } from 'ant-design-vue';\nconst theme = ref<MenuTheme>('dark');\nconst selectedKeys = ref(['1']);\nconst openKeys = ref(['sub1']);\nconst items = ref([\n  {\n    key: '1',\n    icon: () => h(MailOutlined),\n    label: 'Navigation One',\n    title: 'Navigation One',\n  },\n  {\n    key: '2',\n    icon: () => h(CalendarOutlined),\n    label: 'Navigation Two',\n    title: 'Navigation Two',\n  },\n  {\n    key: 'sub1',\n    icon: () => h(AppstoreOutlined),\n    label: 'Navigation Three',\n    title: 'Navigation Three',\n    children: [\n      {\n        key: '3',\n        label: 'Option 3',\n        title: 'Option 3',\n      },\n      {\n        key: '4',\n        label: 'Option 4',\n        title: 'Option 4',\n      },\n      {\n        key: 'sub1-2',\n        label: 'Submenu',\n        title: 'Submenu',\n        children: [\n          {\n            key: '5',\n            label: 'Option 5',\n            title: 'Option 5',\n          },\n          {\n            key: '6',\n            label: 'Option 6',\n            title: 'Option 6',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    key: 'sub2',\n    icon: () => h(SettingOutlined),\n    label: 'Navigation Four',\n    title: 'Navigation Four',\n    children: [\n      {\n        key: '7',\n        label: 'Option 7',\n        title: 'Option 7',\n      },\n      {\n        key: '8',\n        label: 'Option 8',\n        title: 'Option 8',\n      },\n      {\n        key: '9',\n        label: 'Option 9',\n        title: 'Option 9',\n      },\n      {\n        key: '10',\n        label: 'Option 10',\n        title: 'Option 10',\n      },\n    ],\n  },\n]);\nconst changeTheme = (checked: boolean) => {\n  theme.value = checked ? 'dark' : 'light';\n};\n</script>\n"
  },
  {
    "path": "components/menu/demo/vertical.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 垂直菜单\n  en-US: Vertical menu\n---\n\n## zh-CN\n\n子菜单是弹出的形式。\n\n## en-US\n\nSubmenus open as pop-ups.\n\n</docs>\n\n<template>\n  <a-menu\n    v-model:openKeys=\"openKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    style=\"width: 256px\"\n    mode=\"vertical\"\n    :items=\"items\"\n    @click=\"handleClick\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { h, ref } from 'vue';\nimport {\n  MailOutlined,\n  CalendarOutlined,\n  AppstoreOutlined,\n  SettingOutlined,\n} from '@ant-design/icons-vue';\nimport type { MenuProps } from 'ant-design-vue';\n\nconst selectedKeys = ref([]);\nconst openKeys = ref([]);\nconst items = ref([\n  {\n    key: '1',\n    icon: () => h(MailOutlined),\n    label: 'Navigation One',\n    title: 'Navigation One',\n  },\n  {\n    key: '2',\n    icon: () => h(CalendarOutlined),\n    label: 'Navigation Two',\n    title: 'Navigation Two',\n  },\n  {\n    key: 'sub1',\n    icon: () => h(AppstoreOutlined),\n    label: 'Navigation Three',\n    title: 'Navigation Three',\n    children: [\n      {\n        key: '3',\n        label: 'Option 3',\n        title: 'Option 3',\n      },\n      {\n        key: '4',\n        label: 'Option 4',\n        title: 'Option 4',\n      },\n      {\n        key: 'sub1-2',\n        label: 'Submenu',\n        title: 'Submenu',\n        children: [\n          {\n            key: '5',\n            label: 'Option 5',\n            title: 'Option 5',\n          },\n          {\n            key: '6',\n            label: 'Option 6',\n            title: 'Option 6',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    key: 'sub2',\n    icon: () => h(SettingOutlined),\n    label: 'Navigation Four',\n    title: 'Navigation Four',\n    children: [\n      {\n        key: '7',\n        label: 'Option 7',\n        title: 'Option 7',\n      },\n      {\n        key: '8',\n        label: 'Option 8',\n        title: 'Option 8',\n      },\n      {\n        key: '9',\n        label: 'Option 9',\n        title: 'Option 9',\n      },\n      {\n        key: '10',\n        label: 'Option 10',\n        title: 'Option 10',\n      },\n    ],\n  },\n]);\nconst handleClick: MenuProps['onClick'] = menuInfo => {\n  console.log('click ', menuInfo);\n};\n</script>\n"
  },
  {
    "path": "components/menu/index.en-US.md",
    "content": "---\ncategory: Components\ncols: 1\ntype: Navigation\ntitle: Menu\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*KeyQQL5iKkkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Vn4XSqJFAxcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA versatile menu for navigation.\n\n## When To Use\n\nNavigation is an important part of any website, as a good navigation setup allows users to move around the site quickly and efficiently. Ant Design offers two navigation options: top and side. Top navigation provides all the categories and functions of the website. Side navigation provides the multi-level structure of the website.\n\nMore layouts with navigation: [Layout](/components/layout).\n\n## Notes for developers\n\n- Menu is rendered as a `ul` element, so it only supports [`li` and `script-supporting` elements](https://html.spec.whatwg.org/multipage/grouping-content.html#the-ul-element) as children nodes。Your customized node should be wrapped by `Menu.Item`.\n- Menu needs to collect its node structure, so its children should be `Menu.*` or encapsulated HOCs.\n- Must set unique key for `SubMenu`\n\n## API\n\n### Menu\n\n| Param | Description | Type | Default value |\n| --- | --- | --- | --- | --- |\n| forceSubMenuRender | render submenu into DOM before it shows | boolean | false |\n| inlineCollapsed | specifies the collapsed status when menu is inline mode | boolean | - |\n| inlineIndent | indent px of inline menu item on each level | number | 24 |\n| items | Menu item content | [ItemType\\[\\]](#itemtype) | - | 4.20.0 |\n| mode | type of the menu; `vertical`, `horizontal`, and `inline` modes are supported | `vertical` \\| `horizontal` \\| `inline` | `vertical` |\n| multiple | Allow selection of multiple items | boolean | false |\n| openKeys(v-model) | array with the keys of currently opened sub menus | (string \\| number)[] |  |\n| overflowedIndicator | Customized the ellipsis icon when menu is collapsed horizontally | slot | `<EllipsisOutlined />` |\n| selectable | allow selecting menu items | boolean | true |\n| selectedKeys(v-model) | array with the keys of currently selected menu items | (string \\| number)[] |  |\n| style | style of the root node | object |  |\n| subMenuCloseDelay | delay time to hide submenu when mouse leave, unit: second | number | 0.1 |\n| subMenuOpenDelay | delay time to show submenu when mouse enter, unit: second | number | 0 |\n| theme | color theme of the menu | `light` \\| `dark` | `light` |\n| triggerSubMenuAction | method of trigger submenu | `click` \\| `hover` | `hover` |\n\n### Menu Events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| click | callback executed when a menu item is clicked | function({ item, key, keyPath }) |\n| deselect | callback executed when a menu item is deselected, only supported for multiple mode | function({ item, key, selectedKeys }) |\n| openChange | called when open/close sub menu | function(openKeys: (string \\| number)[]) |\n| select | callback executed when a menu item is selected | function({ item, key, selectedKeys }) |\n\n### Menu.Item\n\n| Param    | Description                          | Type             | Default value |\n| -------- | ------------------------------------ | ---------------- | ------------- |\n| disabled | whether menu item is disabled or not | boolean          | false         |\n| key      | unique id of the menu item           | string \\| number |               |\n| title    | set display title for collapsed item | string \\| slot   |               |\n\n### ItemType\n\n> type ItemType = [MenuItemType](#menuitemtype) | [SubMenuType](#submenutype) | [MenuItemGroupType](#menuitemgrouptype) | [MenuDividerType](#menudividertype);\n\n#### MenuItemType\n\n| Param | Description | Type | Default value | Version |\n| --- | --- | --- | --- | --- |\n| danger | Display the danger style | boolean | false |  |\n| disabled | Whether menu item is disabled | boolean | false |  |\n| icon | The icon of the menu item | VueNode \\| (item: MenuItemType) => VNode | - |  |\n| key | Unique ID of the menu item | string \\| number | - |  |\n| label | Menu label | VueNode | - |  |\n| title | Set display title for collapsed item | string | - |  |\n\n#### SubMenuType\n\n<!-- prettier-ignore -->\n| Property | Description | Type | Default value | Version |\n| --- | --- | --- | --- | --- |\n| children | Sub-menus or sub-menu items | [ItemType\\[\\]](#itemtype) | - |  |\n| disabled | Whether sub-menu is disabled | boolean | false |  |\n| icon | Icon of sub menu | VueNode \\| (item: SubMenuType) => VueNode | - |  |\n| key | Unique ID of the sub-menu | string \\| number | - |  |\n| label | Menu label | VueNode | - |  |\n| popupClassName | Sub-menu class name, not working when `mode=\"inline\"` | string | - |  |\n| popupOffset | Sub-menu offset, not working when `mode=\"inline\"` | \\[number, number] | - |  |\n| theme | Color theme of the SubMenu (inherits from Menu by default) |  | `light` \\| `dark` | - |  |\n| onTitleClick | Callback executed when the sub-menu title is clicked | function({ key, domEvent }) | - |  |\n\n#### MenuItemGroupType\n\nDefine `type` as `group` to make as group:\n\n```ts\nconst groupItem = {\n  type: 'group', // Must have\n  label: 'My Group',\n  children: [],\n};\n```\n\n| Param    | Description            | Type                              | Default value | Version |\n| -------- | ---------------------- | --------------------------------- | ------------- | ------- |\n| children | Sub-menu items         | [MenuItemType\\[\\]](#menuitemtype) | -             |         |\n| label    | The title of the group | VueNode                           | -             |         |\n\n#### MenuDividerType\n\nDivider line in between menu items, only used in vertical popup Menu or Dropdown Menu. Need define the `type` as `divider`：\n\n```ts\nconst dividerItem = {\n  type: 'divider', // Must have\n};\n```\n\n| Param  | Description            | Type    | Default value | Version |\n| ------ | ---------------------- | ------- | ------------- | ------- |\n| dashed | Whether line is dashed | boolean | false         |         |\n\n### Menu.SubMenu\n\n| Param | Description | Type | Default value | Version |\n| --- | --- | --- | --- | --- |\n| disabled | whether sub menu is disabled or not | boolean | false |  |\n| expandIcon | Customized expandIcon | slot | arrow icon | ｜ |\n| key | Unique ID of the sub menu, required | string \\| number |  |  |\n| popupClassName | Sub-menu class name | string |  | 1.5.0 |\n| popupOffset | Sub-menu offset, not working when `mode=\"inline\"` | \\[number, number] | - |  |\n| title | title of the sub menu | string\\|slot |  |  |\n\nThe children of Menu.SubMenu must be `MenuItem` or `SubMenu`.\n\n`SubMenu` must pass the key. If it is not passed, the sub-elements under the SubMenu will be rendered in advance, and some scenes cannot be effectively highlighted.\n\n### Menu.SubMenu Events\n\n| Events Name | Description                                          | Arguments                   |\n| ----------- | ---------------------------------------------------- | --------------------------- |\n| titleClick  | callback executed when the sub menu title is clicked | function({ key, domEvent }) |\n\n### Menu.ItemGroup\n\n| Param    | Description        | Type         | Default value |\n| -------- | ------------------ | ------------ | ------------- |\n| children | sub-menu items     | MenuItem\\[]  |               |\n| title    | title of the group | string\\|slot |               |\n\nThe children of Menu.ItemGroup must be `MenuItem`.\n\n### Menu.Divider\n\nDivider line in between menu items, only used in vertical popup Menu or Dropdown Menu.\n\n| Param  | Description            | Type    | Default value | Version |\n| ------ | ---------------------- | ------- | ------------- | ------- |\n| dashed | Whether line is dashed | boolean | false         | 4.17.0  |\n\n## FAQ\n\n### Why will Menu's children be rendered twice?\n\nMenu collects structure info with twice-render to support HOC usage. Merging into one render may cause the logic to become much more complex. Contributions to help improve the collection logic are welcomed.\n"
  },
  {
    "path": "components/menu/index.tsx",
    "content": "import type { MenuProps } from './src/Menu';\nimport Menu from './src/Menu';\nimport type { MenuItemProps } from './src/MenuItem';\nimport MenuItem from './src/MenuItem';\nimport type { SubMenuProps } from './src/SubMenu';\nimport SubMenu from './src/SubMenu';\nimport type { MenuItemGroupProps } from './src/ItemGroup';\nimport ItemGroup from './src/ItemGroup';\nimport Divider from './src/Divider';\nimport type { MenuDividerProps } from './src/Divider';\nimport type { App, Plugin } from 'vue';\nimport type { MenuTheme, MenuMode } from './src/interface';\nimport type { ItemType } from './src/hooks/useItems';\n/* istanbul ignore next */\nMenu.install = function (app: App) {\n  app.component(Menu.name, Menu);\n  app.component(MenuItem.name, MenuItem);\n  app.component(SubMenu.name, SubMenu);\n  app.component(Divider.name, Divider);\n  app.component(ItemGroup.name, ItemGroup);\n  return app;\n};\n\nMenu.Item = MenuItem;\nMenu.Divider = Divider;\nMenu.SubMenu = SubMenu;\nMenu.ItemGroup = ItemGroup;\nexport type {\n  MenuProps,\n  SubMenuProps,\n  MenuItemProps,\n  MenuItemGroupProps,\n  MenuTheme,\n  MenuMode,\n  MenuDividerProps,\n  ItemType,\n};\nexport {\n  SubMenu,\n  MenuItem as Item,\n  MenuItem,\n  ItemGroup,\n  ItemGroup as MenuItemGroup,\n  Divider,\n  Divider as MenuDivider,\n};\n\nexport default Menu as typeof Menu &\n  Plugin & {\n    readonly Item: typeof MenuItem;\n    readonly SubMenu: typeof SubMenu;\n    readonly Divider: typeof Divider;\n    readonly ItemGroup: typeof ItemGroup;\n  };\n"
  },
  {
    "path": "components/menu/index.zh-CN.md",
    "content": "---\ncategory: Components\ncols: 1\ntype: 导航\ntitle: Menu\nsubtitle: 导航菜单\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*KeyQQL5iKkkAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Vn4XSqJFAxcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n为页面和功能提供导航的菜单列表。\n\n## 何时使用\n\n导航菜单是一个网站的灵魂，用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航，顶部导航提供全局性的类目和功能，侧边导航提供多级结构来收纳和排列网站架构。\n\n更多布局和导航的使用可以参考：[通用布局](/components/layout-cn)。\n\n## 开发者注意事项\n\n- Menu 元素为 `ul`，因而仅支持 [`li` 以及 `script-supporting` 子元素](https://html.spec.whatwg.org/multipage/grouping-content.html#the-ul-element)。因而你的子节点元素应该都在 `Menu.Item` 内使用。\n- Menu 需要计算节点结构，因而其子元素仅支持 `Menu.*` 以及对此进行封装的 HOC 组件。\n- 必须为 SubMenu 设置唯一 key\n\n## API\n\n### Menu\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- | --- |\n| forceSubMenuRender | 在子菜单展示之前就渲染进 DOM | boolean | false |\n| inlineCollapsed | inline 时菜单是否收起状态 | boolean | - |\n| inlineIndent | inline 模式的菜单缩进宽度 | number | 24 |\n| items | 菜单内容 | [ItemType\\[\\]](#itemtype) | - |  |\n| mode | 菜单类型，现在支持垂直、水平、和内嵌模式三种 | `vertical` \\| `horizontal` \\| `inline` | `vertical` |\n| multiple | 是否允许多选 | boolean | false |\n| openKeys(v-model) | 当前展开的 SubMenu 菜单项 key 数组 | (string \\| number)[] |  |\n| overflowedIndicator | 用于自定义 Menu 水平空间不足时的省略收缩的图标 | slot | `<EllipsisOutlined />` |\n| selectable | 是否允许选中 | boolean | true |\n| selectedKeys(v-model) | 当前选中的菜单项 key 数组 | (string \\| number)[] |  |\n| subMenuCloseDelay | 用户鼠标离开子菜单后关闭延时，单位：秒 | number | 0.1 |\n| subMenuOpenDelay | 用户鼠标进入子菜单后开启延时，单位：秒 | number | 0 |\n| theme | 主题颜色 | `light` \\| `dark` | `light` |\n| triggerSubMenuAction | 修改 Menu 子菜单的触发方式 | `click` \\| `hover` | `hover` |\n\n### Menu 事件\n\n| 事件名称   | 说明                               | 回调参数                                 |\n| ---------- | ---------------------------------- | ---------------------------------------- |\n| click      | 点击 MenuItem 调用此函数           | function({ item, key, keyPath })         |\n| deselect   | 取消选中时调用，仅在 multiple 生效 | function({ item, key, selectedKeys })    |\n| openChange | SubMenu 展开/关闭的回调            | function(openKeys: (string \\| number)[]) |\n| select     | 被选中时调用                       | function({ item, key, selectedKeys })    |\n\n### Menu.Item\n\n| 参数     | 说明                     | 类型             | 默认值 | 版本  |\n| -------- | ------------------------ | ---------------- | ------ | ----- |\n| disabled | 是否禁用                 | boolean          | false  |       |\n| icon     | 菜单图标                 | slot             |        | 2.8.0 |\n| key      | item 的唯一标志          | string \\| number |        |       |\n| title    | 设置收缩时展示的悬浮标题 | string \\| slot   |        |       |\n\n### ItemType\n\n> type ItemType = [MenuItemType](#menuitemtype) | [SubMenuType](#submenutype) | [MenuItemGroupType](#menuitemgrouptype) | [MenuDividerType](#menudividertype);\n\n### MenuItemType\n\n| 参数     | 说明                     | 类型                                   | 默认值 | 版本 |\n| -------- | ------------------------ | -------------------------------------- | ------ | ---- |\n| danger   | 展示错误状态样式         | boolean                                | false  |      |\n| disabled | 是否禁用                 | boolean                                | false  |      |\n| icon     | 菜单图标                 | VueNode\\|(item: MenuItemType)=>VueNode | -      |      |\n| key      | item 的唯一标志          | string \\| number                       | -      |      |\n| label    | 菜单项标题               | VueNode                                | -      |      |\n| title    | 设置收缩时展示的悬浮标题 | string                                 | -      |      |\n\n#### SubMenuType\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| children | 子菜单的菜单项 | [ItemType\\[\\]](#itemtype) | - |  |\n| disabled | 是否禁用 | boolean | false |  |\n| icon | 菜单图标 | VueNode\\|(item: SubMenuType)=>VueNode | - |  |\n| key | 唯一标志 | string \\| number | - |  |\n| label | 菜单项标题 | VueNode | - |  |\n| popupClassName | 子菜单样式，`mode=\"inline\"` 时无效 | string | - |  |\n| popupOffset | 子菜单偏移量，`mode=\"inline\"` 时无效 | \\[number, number] | - |  |\n| onTitleClick | 点击子菜单标题 | function({ key, domEvent }) | - |  |\n| theme | 设置子菜单的主题，默认从 Menu 上继承 | `light` \\| `dark` | - |  |\n\n#### MenuItemGroupType\n\n定义类型为 `group` 时，会作为分组处理:\n\n```ts\nconst groupItem = {\n  type: 'group', // Must have\n  label: 'My Group',\n  children: [],\n};\n```\n\n| 参数     | 说明         | 类型                              | 默认值 | 版本 |\n| -------- | ------------ | --------------------------------- | ------ | ---- |\n| children | 分组的菜单项 | [MenuItemType\\[\\]](#menuitemtype) | -      |      |\n| label    | 分组标题     | VueNode                           | -      |      |\n\n#### MenuDividerType\n\n菜单项分割线，只用在弹出菜单内，需要定义类型为 `divider`：\n\n```ts\nconst dividerItem = {\n  type: 'divider', // Must have\n};\n```\n\n| 参数   | 说明     | 类型    | 默认值 | 版本 |\n| ------ | -------- | ------- | ------ | ---- |\n| dashed | 是否虚线 | boolean | false  |      |\n\n### Menu.SubMenu\n\n| 参数           | 说明                                 | 类型              | 默认值   | 版本  |\n| -------------- | ------------------------------------ | ----------------- | -------- | ----- |\n| disabled       | 是否禁用                             | boolean           | false    |       |\n| expandIcon     | 自定义 Menu 展开收起图标             | slot              | 箭头图标 |       |\n| icon           | 菜单图标                             | slot              |          | 2.8.0 |\n| key            | 唯一标志, 必填                       | string \\| number  |          |       |\n| popupClassName | 子菜单样式                           | string            |          | 1.5.0 |\n| popupOffset    | 子菜单偏移量，`mode=\"inline\"` 时无效 | \\[number, number] | -        |       |\n| title          | 子菜单项值                           | string\\|slot      |          |       |\n\nMenu.SubMenu 的子元素必须是 `MenuItem` 或者 `SubMenu`.\n\n`SubMenu` 必须传递 key，如不传递，该 SubMenu 下子元素将提前渲染，而且部分场景无法进行有效高亮。\n\n### SubMenu 事件\n\n| 事件名称   | 说明           | 回调参数            |\n| ---------- | -------------- | ------------------- |\n| titleClick | 点击子菜单标题 | ({ key, domEvent }) |\n\n### Menu.ItemGroup\n\n| 参数  | 说明     | 类型         | 默认值 |\n| ----- | -------- | ------------ | ------ |\n| title | 分组标题 | string\\|slot |        |\n\nMenu.ItemGroup 的子元素必须是 `MenuItem`.\n\n### Menu.Divider\n\n菜单项分割线，只用在弹出菜单内。\n\n| 参数   | 说明     | 类型    | 默认值 | 版本 |\n| ------ | -------- | ------- | ------ | ---- |\n| dashed | 是否虚线 | boolean | false  | 3.0  |\n\n## FAQ\n\n### 为何 Menu 的子元素会渲染两次？\n\nMenu 通过二次渲染收集嵌套结构信息以支持 HOC 的结构。合并成一个推导结构会使得逻辑变得十分复杂，欢迎 PR 以协助改进该设计。\n"
  },
  {
    "path": "components/menu/src/Divider.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport { useInjectMenu } from './hooks/useMenuContext';\n\nexport const menuDividerProps = () => ({\n  prefixCls: String,\n  dashed: Boolean,\n});\n\nexport type MenuDividerProps = Partial<ExtractPropTypes<ReturnType<typeof menuDividerProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMenuDivider',\n  props: menuDividerProps(),\n  setup(props) {\n    const { prefixCls } = useInjectMenu();\n    const cls = computed(() => {\n      return {\n        [`${prefixCls.value}-item-divider`]: true,\n        [`${prefixCls.value}-item-divider-dashed`]: !!props.dashed,\n      };\n    });\n    return () => {\n      return <li class={cls.value} />;\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/InlineSubMenuList.tsx",
    "content": "import { computed, Transition, defineComponent, ref, watch } from 'vue';\nimport { useInjectMenu, MenuContextProvider } from './hooks/useMenuContext';\nimport type { MenuMode } from './interface';\nimport SubMenuList from './SubMenuList';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'InlineSubMenuList',\n  inheritAttrs: false,\n  props: {\n    id: String,\n    open: Boolean,\n    keyPath: Array,\n  },\n  setup(props, { slots }) {\n    const fixedMode = computed<MenuMode>(() => 'inline');\n    const { motion, mode, defaultMotions } = useInjectMenu();\n    const sameModeRef = computed(() => mode.value === fixedMode.value);\n    const destroy = ref(!sameModeRef.value);\n\n    const mergedOpen = computed(() => (sameModeRef.value ? props.open : false));\n\n    // ================================= Effect =================================\n    // Reset destroy state when mode change back\n    watch(\n      mode,\n      () => {\n        if (sameModeRef.value) {\n          destroy.value = false;\n        }\n      },\n      { flush: 'post' },\n    );\n    const mergedMotion = computed(() => {\n      const m =\n        motion.value || defaultMotions.value?.[fixedMode.value] || defaultMotions.value?.other;\n      const res = typeof m === 'function' ? m() : m;\n      return { ...res, appear: props.keyPath.length <= 1 };\n    });\n    return () => {\n      if (destroy.value) {\n        return null;\n      }\n      return (\n        <MenuContextProvider mode={fixedMode.value}>\n          <Transition {...mergedMotion.value}>\n            <SubMenuList v-show={mergedOpen.value} id={props.id}>\n              {slots.default?.()}\n            </SubMenuList>\n          </Transition>\n        </MenuContextProvider>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/ItemGroup.tsx",
    "content": "import { getPropsSlot } from '../../_util/props-util';\nimport type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport { useInjectMenu } from './hooks/useMenuContext';\nimport { useMeasure } from './hooks/useKeyPath';\nimport type { ItemType } from './interface';\nimport { objectType } from '../../_util/type';\nimport type { CustomSlotsType } from '../../_util/type';\n\nexport const menuItemGroupProps = () => ({\n  title: PropTypes.any,\n  // Internal user prop\n  originItemValue: objectType<ItemType>(),\n});\n\nexport type MenuItemGroupProps = Partial<ExtractPropTypes<ReturnType<typeof menuItemGroupProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMenuItemGroup',\n  inheritAttrs: false,\n  props: menuItemGroupProps(),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls } = useInjectMenu();\n    const groupPrefixCls = computed(() => `${prefixCls.value}-item-group`);\n    const isMeasure = useMeasure();\n    return () => {\n      if (isMeasure) return slots.default?.();\n      return (\n        <li {...attrs} onClick={e => e.stopPropagation()} class={groupPrefixCls.value}>\n          <div\n            title={typeof props.title === 'string' ? props.title : undefined}\n            class={`${groupPrefixCls.value}-title`}\n          >\n            {getPropsSlot(slots, props, 'title')}\n          </div>\n          <ul class={`${groupPrefixCls.value}-list`}>{slots.default?.()}</ul>\n        </li>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/Menu.tsx",
    "content": "import type { CustomSlotsType, Key } from '../../_util/type';\nimport type { ExtractPropTypes, PropType, VNode } from 'vue';\nimport {\n  shallowRef,\n  Teleport,\n  computed,\n  defineComponent,\n  ref,\n  inject,\n  watchEffect,\n  watch,\n  onMounted,\n  unref,\n} from 'vue';\nimport shallowEqual from '../../_util/shallowequal';\nimport type { StoreMenuInfo } from './hooks/useMenuContext';\nimport useProvideMenu, { MenuContextProvider, useProvideFirstLevel } from './hooks/useMenuContext';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport type {\n  MenuTheme,\n  MenuMode,\n  BuiltinPlacements,\n  TriggerSubMenuAction,\n  MenuInfo,\n  SelectInfo,\n  MenuClickEventHandler,\n  SelectEventHandler,\n} from './interface';\nimport devWarning from '../../vc-util/devWarning';\nimport type { CSSMotionProps } from '../../_util/transition';\nimport uniq from 'lodash-es/uniq';\nimport { SiderCollapsedKey } from '../../layout/injectionKey';\nimport { flattenChildren } from '../../_util/props-util';\nimport Overflow from '../../vc-overflow';\nimport MenuItem from './MenuItem';\nimport SubMenu from './SubMenu';\nimport EllipsisOutlined from '@ant-design/icons-vue/EllipsisOutlined';\nimport { cloneElement } from '../../_util/vnode';\nimport { OVERFLOW_KEY, PathContext } from './hooks/useKeyPath';\nimport type { FocusEventHandler, MouseEventHandler } from '../../_util/EventInterface';\nimport collapseMotion from '../../_util/collapseMotion';\nimport type { ItemType } from './hooks/useItems';\nimport useItems from './hooks/useItems';\nimport useStyle from '../style';\nimport { useInjectOverride } from './OverrideContext';\n\nexport const menuProps = () => ({\n  id: String,\n  prefixCls: String,\n  // donot use items, now only support inner use\n  items: Array as PropType<ItemType[]>,\n  disabled: Boolean,\n  inlineCollapsed: Boolean,\n  disabledOverflow: Boolean,\n  forceSubMenuRender: Boolean,\n  openKeys: Array as PropType<Key[]>,\n  selectedKeys: Array as PropType<Key[]>,\n  activeKey: String, // 内部组件使用\n  selectable: { type: Boolean, default: true },\n  multiple: { type: Boolean, default: false },\n  tabindex: { type: [Number, String] },\n  motion: Object as PropType<CSSMotionProps>,\n  role: String,\n  theme: { type: String as PropType<MenuTheme>, default: 'light' },\n  mode: { type: String as PropType<MenuMode>, default: 'vertical' },\n\n  inlineIndent: { type: Number, default: 24 },\n  subMenuOpenDelay: { type: Number, default: 0 },\n  subMenuCloseDelay: { type: Number, default: 0.1 },\n\n  builtinPlacements: { type: Object as PropType<BuiltinPlacements> },\n\n  triggerSubMenuAction: { type: String as PropType<TriggerSubMenuAction>, default: 'hover' },\n\n  getPopupContainer: Function as PropType<(node: HTMLElement) => HTMLElement>,\n\n  expandIcon: Function as PropType<(p?: { isOpen: boolean; [key: string]: any }) => any>,\n  onOpenChange: Function as PropType<(keys: Key[]) => void>,\n  onSelect: Function as PropType<SelectEventHandler>,\n  onDeselect: Function as PropType<SelectEventHandler>,\n  onClick: [Function, Array] as PropType<MenuClickEventHandler>,\n  onFocus: Function as PropType<FocusEventHandler>,\n  onBlur: Function as PropType<FocusEventHandler>,\n  onMousedown: Function as PropType<MouseEventHandler>,\n  'onUpdate:openKeys': Function as PropType<(keys: Key[]) => void>,\n  'onUpdate:selectedKeys': Function as PropType<(keys: Key[]) => void>,\n  'onUpdate:activeKey': Function as PropType<(key: Key) => void>,\n});\n\nexport type MenuProps = Partial<ExtractPropTypes<ReturnType<typeof menuProps>>>;\n\nconst EMPTY_LIST: string[] = [];\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMenu',\n  inheritAttrs: false,\n  props: menuProps(),\n  slots: Object as CustomSlotsType<{\n    expandIcon?: { isOpen: boolean; [key: string]: any };\n    overflowedIndicator?: any;\n    default: any;\n  }>,\n  setup(props, { slots, emit, attrs }) {\n    const { direction, getPrefixCls } = useConfigInject('menu', props);\n    const override = useInjectOverride();\n    const prefixCls = computed(() => {\n      return getPrefixCls('menu', props.prefixCls || override?.prefixCls?.value);\n    });\n    const [wrapSSR, hashId] = useStyle(\n      prefixCls,\n      computed(() => {\n        return !override;\n      }),\n    );\n    const store = shallowRef(new Map<string, StoreMenuInfo>());\n    const siderCollapsed = inject(SiderCollapsedKey, ref(undefined));\n    const inlineCollapsed = computed(() => {\n      if (siderCollapsed.value !== undefined) {\n        return siderCollapsed.value;\n      }\n      return props.inlineCollapsed;\n    });\n    const { itemsNodes } = useItems(props);\n    const isMounted = shallowRef(false);\n    onMounted(() => {\n      isMounted.value = true;\n    });\n    watchEffect(() => {\n      devWarning(\n        !(props.inlineCollapsed === true && props.mode !== 'inline'),\n        'Menu',\n        '`inlineCollapsed` should only be used when `mode` is inline.',\n      );\n\n      devWarning(\n        !(siderCollapsed.value !== undefined && props.inlineCollapsed === true),\n        'Menu',\n        '`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.',\n      );\n      // devWarning(\n      //   !!props.items && !slots.default,\n      //   'Menu',\n      //   '`children` will be removed in next major version. Please use `items` instead.',\n      // );\n    });\n\n    const activeKeys = ref([]);\n    const mergedSelectedKeys = ref([]);\n    const keyMapStore = ref<Record<Key, StoreMenuInfo>>({});\n    watch(\n      store,\n      () => {\n        const newKeyMapStore = {};\n        for (const menuInfo of store.value.values()) {\n          newKeyMapStore[menuInfo.key] = menuInfo;\n        }\n        keyMapStore.value = newKeyMapStore;\n      },\n      { flush: 'post' },\n    );\n    watchEffect(() => {\n      if (props.activeKey !== undefined) {\n        let keys = [];\n        const menuInfo = props.activeKey ? keyMapStore.value[props.activeKey] : undefined;\n        if (menuInfo && props.activeKey !== undefined) {\n          keys = uniq([].concat(unref(menuInfo.parentKeys), props.activeKey));\n        } else {\n          keys = [];\n        }\n        if (!shallowEqual(activeKeys.value, keys)) {\n          activeKeys.value = keys;\n        }\n      }\n    });\n\n    watch(\n      () => props.selectedKeys,\n      selectedKeys => {\n        if (selectedKeys) {\n          mergedSelectedKeys.value = selectedKeys.slice();\n        }\n      },\n      { immediate: true, deep: true },\n    );\n\n    const selectedSubMenuKeys = ref([]);\n    watch(\n      [keyMapStore, mergedSelectedKeys],\n      () => {\n        let subMenuParentKeys = [];\n        mergedSelectedKeys.value.forEach(key => {\n          const menuInfo = keyMapStore.value[key];\n          if (menuInfo) {\n            subMenuParentKeys = subMenuParentKeys.concat(unref(menuInfo.parentKeys));\n          }\n        });\n\n        subMenuParentKeys = uniq(subMenuParentKeys);\n        if (!shallowEqual(selectedSubMenuKeys.value, subMenuParentKeys)) {\n          selectedSubMenuKeys.value = subMenuParentKeys;\n        }\n      },\n      { immediate: true },\n    );\n\n    // >>>>> Trigger select\n    const triggerSelection = (info: MenuInfo) => {\n      if (props.selectable) {\n        // Insert or Remove\n        const { key: targetKey } = info;\n        const exist = mergedSelectedKeys.value.includes(targetKey);\n        let newSelectedKeys: Key[];\n\n        if (props.multiple) {\n          if (exist) {\n            newSelectedKeys = mergedSelectedKeys.value.filter(key => key !== targetKey);\n          } else {\n            newSelectedKeys = [...mergedSelectedKeys.value, targetKey];\n          }\n        } else {\n          newSelectedKeys = [targetKey];\n        }\n\n        // Trigger event\n        const selectInfo: SelectInfo = {\n          ...info,\n          selectedKeys: newSelectedKeys,\n        };\n        if (!shallowEqual(newSelectedKeys, mergedSelectedKeys.value)) {\n          if (props.selectedKeys === undefined) {\n            mergedSelectedKeys.value = newSelectedKeys;\n          }\n          emit('update:selectedKeys', newSelectedKeys);\n          if (exist && props.multiple) {\n            emit('deselect', selectInfo);\n          } else {\n            emit('select', selectInfo);\n          }\n        }\n      }\n      // Whatever selectable, always close it\n      if (mergedMode.value !== 'inline' && !props.multiple && mergedOpenKeys.value.length) {\n        triggerOpenKeys(EMPTY_LIST);\n      }\n    };\n\n    const mergedOpenKeys = ref([]);\n\n    watch(\n      () => props.openKeys,\n      (openKeys = mergedOpenKeys.value) => {\n        if (!shallowEqual(mergedOpenKeys.value, openKeys)) {\n          mergedOpenKeys.value = openKeys.slice();\n        }\n      },\n      { immediate: true, deep: true },\n    );\n\n    let timeout: any;\n    const changeActiveKeys = (keys: Key[]) => {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        if (props.activeKey === undefined) {\n          activeKeys.value = keys;\n        }\n        emit('update:activeKey', keys[keys.length - 1]);\n      });\n    };\n\n    const disabled = computed(() => !!props.disabled);\n    const isRtl = computed(() => direction.value === 'rtl');\n    const mergedMode = ref<MenuMode>('vertical');\n    const mergedInlineCollapsed = shallowRef(false);\n\n    watchEffect(() => {\n      if ((props.mode === 'inline' || props.mode === 'vertical') && inlineCollapsed.value) {\n        mergedMode.value = 'vertical';\n        mergedInlineCollapsed.value = inlineCollapsed.value;\n      } else {\n        mergedMode.value = props.mode;\n        mergedInlineCollapsed.value = false;\n      }\n      if (override?.mode?.value) {\n        mergedMode.value = override.mode.value;\n      }\n    });\n\n    const isInlineMode = computed(() => mergedMode.value === 'inline');\n\n    const triggerOpenKeys = (keys: string[]) => {\n      mergedOpenKeys.value = keys;\n      emit('update:openKeys', keys);\n      emit('openChange', keys);\n    };\n\n    // >>>>> Cache & Reset open keys when inlineCollapsed changed\n    const inlineCacheOpenKeys = ref(mergedOpenKeys.value);\n\n    const mountRef = shallowRef(false);\n\n    // Cache\n    watch(\n      mergedOpenKeys,\n      () => {\n        if (isInlineMode.value) {\n          inlineCacheOpenKeys.value = mergedOpenKeys.value;\n        }\n      },\n      { immediate: true },\n    );\n\n    // Restore\n    watch(\n      isInlineMode,\n      () => {\n        if (!mountRef.value) {\n          mountRef.value = true;\n          return;\n        }\n\n        if (isInlineMode.value) {\n          mergedOpenKeys.value = inlineCacheOpenKeys.value;\n        } else {\n          // Trigger open event in case its in control\n          triggerOpenKeys(EMPTY_LIST);\n        }\n      },\n      { immediate: true },\n    );\n\n    const className = computed(() => {\n      return {\n        [`${prefixCls.value}`]: true,\n        [`${prefixCls.value}-root`]: true,\n        [`${prefixCls.value}-${mergedMode.value}`]: true,\n        [`${prefixCls.value}-inline-collapsed`]: mergedInlineCollapsed.value,\n        [`${prefixCls.value}-rtl`]: isRtl.value,\n        [`${prefixCls.value}-${props.theme}`]: true,\n      };\n    });\n    const rootPrefixCls = computed(() => getPrefixCls());\n    const defaultMotions = computed(() => ({\n      horizontal: { name: `${rootPrefixCls.value}-slide-up` },\n      inline: collapseMotion(`${rootPrefixCls.value}-motion-collapse`),\n      other: { name: `${rootPrefixCls.value}-zoom-big` },\n    }));\n\n    useProvideFirstLevel(true);\n\n    const getChildrenKeys = (eventKeys: string[] = []): Key[] => {\n      const keys = [];\n      const storeValue = store.value;\n      eventKeys.forEach(eventKey => {\n        const { key, childrenEventKeys } = storeValue.get(eventKey);\n        keys.push(key, ...getChildrenKeys(unref(childrenEventKeys)));\n      });\n      return keys;\n    };\n\n    // ========================= Open =========================\n    /**\n     * Click for item. SubMenu do not have selection status\n     */\n    const onInternalClick = (info: MenuInfo) => {\n      emit('click', info);\n      triggerSelection(info);\n      override?.onClick?.();\n    };\n\n    const onInternalOpenChange = (key: Key, open: boolean) => {\n      const childrenEventKeys = keyMapStore.value[key]?.childrenEventKeys || [];\n      let newOpenKeys = mergedOpenKeys.value.filter(k => k !== key);\n\n      if (open) {\n        newOpenKeys.push(key);\n      } else if (mergedMode.value !== 'inline') {\n        // We need find all related popup to close\n        const subPathKeys = getChildrenKeys(unref(childrenEventKeys));\n        newOpenKeys = uniq(newOpenKeys.filter(k => !subPathKeys.includes(k)));\n      }\n\n      if (!shallowEqual(mergedOpenKeys, newOpenKeys)) {\n        triggerOpenKeys(newOpenKeys);\n      }\n    };\n\n    const registerMenuInfo = (key: string, info: StoreMenuInfo) => {\n      store.value.set(key, info);\n      store.value = new Map(store.value);\n    };\n    const unRegisterMenuInfo = (key: string) => {\n      store.value.delete(key);\n      store.value = new Map(store.value);\n    };\n\n    const lastVisibleIndex = ref(0);\n    const expandIcon = computed<MenuProps['expandIcon']>(() =>\n      props.expandIcon || slots.expandIcon || override?.expandIcon?.value\n        ? opt => {\n            let icon = props.expandIcon || slots.expandIcon;\n            icon = typeof icon === 'function' ? icon(opt) : icon;\n            return cloneElement(\n              icon as unknown as VNode,\n              {\n                class: `${prefixCls.value}-submenu-expand-icon`,\n              },\n              false,\n            );\n          }\n        : null,\n    );\n    useProvideMenu({\n      prefixCls,\n      activeKeys,\n      openKeys: mergedOpenKeys,\n      selectedKeys: mergedSelectedKeys,\n      changeActiveKeys,\n      disabled,\n      rtl: isRtl,\n      mode: mergedMode,\n      inlineIndent: computed(() => props.inlineIndent),\n      subMenuCloseDelay: computed(() => props.subMenuCloseDelay),\n      subMenuOpenDelay: computed(() => props.subMenuOpenDelay),\n      builtinPlacements: computed(() => props.builtinPlacements),\n      triggerSubMenuAction: computed(() => props.triggerSubMenuAction),\n      getPopupContainer: computed(() => props.getPopupContainer),\n      inlineCollapsed: mergedInlineCollapsed,\n      theme: computed(() => props.theme),\n      siderCollapsed,\n      defaultMotions: computed(() => (isMounted.value ? defaultMotions.value : null)),\n      motion: computed(() => (isMounted.value ? props.motion : null)),\n      overflowDisabled: shallowRef(undefined),\n      onOpenChange: onInternalOpenChange,\n      onItemClick: onInternalClick,\n      registerMenuInfo,\n      unRegisterMenuInfo,\n      selectedSubMenuKeys,\n      expandIcon,\n      forceSubMenuRender: computed(() => props.forceSubMenuRender),\n      rootClassName: hashId,\n    });\n\n    const getChildrenList = () => itemsNodes.value || flattenChildren(slots.default?.());\n    return () => {\n      const childList = getChildrenList();\n      const allVisible =\n        lastVisibleIndex.value >= childList.length - 1 ||\n        mergedMode.value !== 'horizontal' ||\n        props.disabledOverflow;\n      // >>>>> Children\n      const getWrapperList = childList => {\n        return mergedMode.value !== 'horizontal' || props.disabledOverflow\n          ? childList\n          : // Need wrap for overflow dropdown that do not response for open\n            childList.map((child, index) => (\n              // Always wrap provider to avoid sub node re-mount\n              <MenuContextProvider\n                key={child.key}\n                overflowDisabled={index > lastVisibleIndex.value}\n                v-slots={{ default: () => child }}\n              ></MenuContextProvider>\n            ));\n      };\n      const overflowedIndicator = slots.overflowedIndicator?.() || <EllipsisOutlined />;\n\n      return wrapSSR(\n        <Overflow\n          {...attrs}\n          onMousedown={props.onMousedown}\n          prefixCls={`${prefixCls.value}-overflow`}\n          component=\"ul\"\n          itemComponent={MenuItem}\n          class={[className.value, attrs.class, hashId.value]}\n          role=\"menu\"\n          id={props.id}\n          data={getWrapperList(childList)}\n          renderRawItem={node => node}\n          renderRawRest={omitItems => {\n            // We use origin list since wrapped list use context to prevent open\n            const len = omitItems.length;\n\n            const originOmitItems = len ? childList.slice(-len) : null;\n\n            return (\n              <>\n                <SubMenu\n                  eventKey={OVERFLOW_KEY}\n                  key={OVERFLOW_KEY}\n                  title={overflowedIndicator}\n                  disabled={allVisible}\n                  internalPopupClose={len === 0}\n                  v-slots={{ default: () => originOmitItems }}\n                ></SubMenu>\n                <PathContext>\n                  <SubMenu\n                    eventKey={OVERFLOW_KEY}\n                    key={OVERFLOW_KEY}\n                    title={overflowedIndicator}\n                    disabled={allVisible}\n                    internalPopupClose={len === 0}\n                    v-slots={{ default: () => originOmitItems }}\n                  ></SubMenu>\n                </PathContext>\n              </>\n            );\n          }}\n          maxCount={\n            mergedMode.value !== 'horizontal' || props.disabledOverflow\n              ? Overflow.INVALIDATE\n              : Overflow.RESPONSIVE\n          }\n          ssr=\"full\"\n          data-menu-list\n          onVisibleChange={newLastIndex => {\n            lastVisibleIndex.value = newLastIndex;\n          }}\n        >\n          <Teleport to=\"body\">\n            <div style={{ display: 'none' }} aria-hidden>\n              <PathContext>{getWrapperList(getChildrenList())}</PathContext>\n            </div>\n          </Teleport>\n        </Overflow>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/MenuItem.tsx",
    "content": "import { flattenChildren, isValidElement } from '../../_util/props-util';\nimport PropTypes from '../../_util/vue-types';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  shallowRef,\n  watch,\n} from 'vue';\nimport { useInjectKeyPath, useMeasure } from './hooks/useKeyPath';\nimport { useInjectFirstLevel, useInjectMenu } from './hooks/useMenuContext';\nimport { cloneElement } from '../../_util/vnode';\nimport Tooltip from '../../tooltip';\nimport type { ItemType, MenuInfo } from './interface';\nimport KeyCode from '../../_util/KeyCode';\nimport useDirectionStyle from './hooks/useDirectionStyle';\nimport Overflow from '../../vc-overflow';\nimport devWarning from '../../vc-util/devWarning';\nimport type { MouseEventHandler } from '../../_util/EventInterface';\nimport { objectType } from '../../_util/type';\nimport type { CustomSlotsType } from '../../_util/type';\n\nlet indexGuid = 0;\nexport const menuItemProps = () => ({\n  id: String,\n  role: String,\n  disabled: Boolean,\n  danger: Boolean,\n  title: { type: [String, Boolean], default: undefined },\n  icon: PropTypes.any,\n  onMouseenter: Function as PropType<MouseEventHandler>,\n  onMouseleave: Function as PropType<MouseEventHandler>,\n  onClick: Function as PropType<MouseEventHandler>,\n  onKeydown: Function as PropType<MouseEventHandler>,\n  onFocus: Function as PropType<MouseEventHandler>,\n  // Internal user prop\n  originItemValue: objectType<ItemType>(),\n});\n\nexport type MenuItemProps = Partial<ExtractPropTypes<ReturnType<typeof menuItemProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMenuItem',\n  inheritAttrs: false,\n  props: menuItemProps(),\n  slots: Object as CustomSlotsType<{\n    icon?: any;\n    title?: any;\n    default?: any;\n  }>,\n\n  setup(props, { slots, emit, attrs }) {\n    const instance = getCurrentInstance();\n    const isMeasure = useMeasure();\n    const key =\n      typeof instance.vnode.key === 'symbol' ? String(instance.vnode.key) : instance.vnode.key;\n    devWarning(\n      typeof instance.vnode.key !== 'symbol',\n      'MenuItem',\n      `MenuItem \\`:key=\"${String(key)}\"\\` not support Symbol type`,\n    );\n\n    const eventKey = `menu_item_${++indexGuid}_$$_${key}`;\n    const { parentEventKeys, parentKeys } = useInjectKeyPath();\n    const {\n      prefixCls,\n      activeKeys,\n      disabled,\n      changeActiveKeys,\n      rtl,\n      inlineCollapsed,\n      siderCollapsed,\n      onItemClick,\n      selectedKeys,\n      registerMenuInfo,\n      unRegisterMenuInfo,\n    } = useInjectMenu();\n    const firstLevel = useInjectFirstLevel();\n    const isActive = shallowRef(false);\n    const keysPath = computed(() => {\n      return [...parentKeys.value, key];\n    });\n\n    // const keysPath = computed(() => [...parentEventKeys.value, eventKey]);\n    const menuInfo = {\n      eventKey,\n      key,\n      parentEventKeys,\n      parentKeys,\n      isLeaf: true,\n    };\n    registerMenuInfo(eventKey, menuInfo);\n\n    onBeforeUnmount(() => {\n      unRegisterMenuInfo(eventKey);\n    });\n\n    watch(\n      activeKeys,\n      () => {\n        isActive.value = !!activeKeys.value.find(val => val === key);\n      },\n      { immediate: true },\n    );\n    const mergedDisabled = computed(() => disabled.value || props.disabled);\n    const selected = computed(() => selectedKeys.value.includes(key));\n    const classNames = computed(() => {\n      const itemCls = `${prefixCls.value}-item`;\n      return {\n        [`${itemCls}`]: true,\n        [`${itemCls}-danger`]: props.danger,\n        [`${itemCls}-active`]: isActive.value,\n        [`${itemCls}-selected`]: selected.value,\n        [`${itemCls}-disabled`]: mergedDisabled.value,\n      };\n    });\n\n    const getEventInfo = (e: MouseEvent | KeyboardEvent): MenuInfo => {\n      return {\n        key,\n        eventKey,\n        keyPath: keysPath.value,\n        eventKeyPath: [...parentEventKeys.value, eventKey],\n        domEvent: e,\n        item: {\n          ...props,\n          ...attrs,\n        },\n      };\n    };\n\n    // ============================ Events ============================\n    const onInternalClick = (e: MouseEvent) => {\n      if (mergedDisabled.value) {\n        return;\n      }\n\n      const info = getEventInfo(e);\n      emit('click', e);\n      onItemClick(info);\n    };\n\n    const onMouseEnter = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys(keysPath.value);\n        emit('mouseenter', event);\n      }\n    };\n    const onMouseLeave = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys([]);\n        emit('mouseleave', event);\n      }\n    };\n\n    const onInternalKeyDown = (e: KeyboardEvent) => {\n      emit('keydown', e);\n\n      if (e.which === KeyCode.ENTER) {\n        const info = getEventInfo(e);\n\n        // Legacy. Key will also trigger click event\n        emit('click', e);\n        onItemClick(info);\n      }\n    };\n\n    /**\n     * Used for accessibility. Helper will focus element without key board.\n     * We should manually trigger an active\n     */\n    const onInternalFocus = (e: FocusEvent) => {\n      changeActiveKeys(keysPath.value);\n      emit('focus', e);\n    };\n\n    const renderItemChildren = (icon: any, children: any) => {\n      const wrapNode = <span class={`${prefixCls.value}-title-content`}>{children}</span>;\n      // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性，则内部包裹一个 span\n      // ref: https://github.com/ant-design/ant-design/pull/23456\n      if (!icon || (isValidElement(children) && children.type === 'span')) {\n        if (children && inlineCollapsed.value && firstLevel && typeof children === 'string') {\n          return (\n            <div class={`${prefixCls.value}-inline-collapsed-noicon`}>{children.charAt(0)}</div>\n          );\n        }\n      }\n      return wrapNode;\n    };\n\n    // ========================== DirectionStyle ==========================\n    const directionStyle = useDirectionStyle(computed(() => keysPath.value.length));\n\n    return () => {\n      if (isMeasure) return null;\n      const title = props.title ?? slots.title?.();\n      const children = flattenChildren(slots.default?.());\n      const childrenLength = children.length;\n      let tooltipTitle: any = title;\n      if (typeof title === 'undefined') {\n        tooltipTitle = firstLevel && childrenLength ? children : '';\n      } else if (title === false) {\n        tooltipTitle = '';\n      }\n      const tooltipProps: any = {\n        title: tooltipTitle,\n      };\n\n      if (!siderCollapsed.value && !inlineCollapsed.value) {\n        tooltipProps.title = null;\n        // Reset `visible` to fix control mode tooltip display not correct\n        // ref: https://github.com/ant-design/ant-design/issues/16742\n        tooltipProps.open = false;\n      }\n\n      // ============================ Render ============================\n      const optionRoleProps = {};\n\n      if (props.role === 'option') {\n        optionRoleProps['aria-selected'] = selected.value;\n      }\n\n      const icon = props.icon ?? slots.icon?.(props);\n      return (\n        <Tooltip\n          {...tooltipProps}\n          placement={rtl.value ? 'left' : 'right'}\n          overlayClassName={`${prefixCls.value}-inline-collapsed-tooltip`}\n        >\n          <Overflow.Item\n            component=\"li\"\n            {...attrs}\n            id={props.id}\n            style={{ ...((attrs.style as any) || {}), ...directionStyle.value }}\n            class={[\n              classNames.value,\n              {\n                [`${attrs.class}`]: !!attrs.class,\n                [`${prefixCls.value}-item-only-child`]:\n                  (icon ? childrenLength + 1 : childrenLength) === 1,\n              },\n            ]}\n            role={props.role || 'menuitem'}\n            tabindex={props.disabled ? null : -1}\n            data-menu-id={key}\n            aria-disabled={props.disabled}\n            {...optionRoleProps}\n            onMouseenter={onMouseEnter}\n            onMouseleave={onMouseLeave}\n            onClick={onInternalClick}\n            onKeydown={onInternalKeyDown}\n            onFocus={onInternalFocus}\n            title={typeof title === 'string' ? title : undefined}\n          >\n            {cloneElement(\n              typeof icon === 'function' ? icon(props.originItemValue) : icon,\n              {\n                class: `${prefixCls.value}-item-icon`,\n              },\n              false,\n            )}\n            {renderItemChildren(icon, children)}\n          </Overflow.Item>\n        </Tooltip>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/OverrideContext.ts",
    "content": "import type { ComputedRef, InjectionKey } from 'vue';\nimport { provide, computed, inject } from 'vue';\nimport type { MenuProps } from './Menu';\n\n// Used for Dropdown only\nexport interface OverrideContextProps {\n  prefixCls?: ComputedRef<string>;\n  mode?: ComputedRef<MenuProps['mode']>;\n  selectable?: ComputedRef<boolean>;\n  validator?: (menuProps: Pick<MenuProps, 'mode'>) => void;\n  onClick?: () => void;\n  expandIcon?: ComputedRef<any>;\n}\nexport const OverrideContextKey: InjectionKey<OverrideContextProps> = Symbol('OverrideContextKey');\nexport const useInjectOverride = () => {\n  return inject(OverrideContextKey, undefined);\n};\n\nexport const useProvideOverride = (props: OverrideContextProps) => {\n  const { prefixCls, mode, selectable, validator, onClick, expandIcon } = useInjectOverride() || {};\n  provide(OverrideContextKey, {\n    prefixCls: computed(() => (props.prefixCls?.value ?? prefixCls?.value) as string),\n    mode: computed(() => props.mode?.value ?? mode?.value),\n    selectable: computed(() => (props.selectable?.value ?? selectable?.value) as boolean),\n    validator: props.validator ?? validator,\n    onClick: props.onClick ?? onClick,\n    expandIcon: props.expandIcon ?? expandIcon?.value,\n  });\n};\n"
  },
  {
    "path": "components/menu/src/PopupTrigger.tsx",
    "content": "import Trigger from '../../vc-trigger';\nimport type { PropType } from 'vue';\nimport { computed, defineComponent, onBeforeUnmount, shallowRef, watch } from 'vue';\nimport type { MenuMode } from './interface';\nimport { useInjectForceRender, useInjectMenu } from './hooks/useMenuContext';\nimport { placements, placementsRtl } from './placements';\nimport raf from '../../_util/raf';\nimport classNames from '../../_util/classNames';\nimport { getTransitionProps } from '../../_util/transition';\nimport type { CustomSlotsType } from '../../_util/type';\n\nconst popupPlacementMap = {\n  horizontal: 'bottomLeft',\n  vertical: 'rightTop',\n  'vertical-left': 'rightTop',\n  'vertical-right': 'leftTop',\n};\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PopupTrigger',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    mode: String as PropType<MenuMode>,\n    visible: Boolean,\n    // popup: React.ReactNode;\n    popupClassName: String,\n    popupOffset: Array as PropType<number[]>,\n    disabled: Boolean,\n    onVisibleChange: Function as PropType<(visible: boolean) => void>,\n  },\n  slots: Object as CustomSlotsType<{\n    default?: any;\n    popup?: any;\n  }>,\n  emits: ['visibleChange'],\n  setup(props, { slots, emit }) {\n    const innerVisible = shallowRef(false);\n    const {\n      getPopupContainer,\n      rtl,\n      subMenuOpenDelay,\n      subMenuCloseDelay,\n      builtinPlacements,\n      triggerSubMenuAction,\n      forceSubMenuRender,\n      motion,\n      defaultMotions,\n      rootClassName,\n    } = useInjectMenu();\n    const forceRender = useInjectForceRender();\n    const placement = computed(() =>\n      rtl.value\n        ? { ...placementsRtl, ...builtinPlacements.value }\n        : { ...placements, ...builtinPlacements.value },\n    );\n\n    const popupPlacement = computed(() => popupPlacementMap[props.mode]);\n\n    const visibleRef = shallowRef<number>();\n    watch(\n      () => props.visible,\n      visible => {\n        raf.cancel(visibleRef.value);\n        visibleRef.value = raf(() => {\n          innerVisible.value = visible;\n        });\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      raf.cancel(visibleRef.value);\n    });\n\n    const onVisibleChange = (visible: boolean) => {\n      emit('visibleChange', visible);\n    };\n    const mergedMotion = computed(() => {\n      const m = motion.value || defaultMotions.value?.[props.mode] || defaultMotions.value?.other;\n      const res = typeof m === 'function' ? m() : m;\n      return res ? getTransitionProps(res.name, { css: true }) : undefined;\n    });\n    return () => {\n      const { prefixCls, popupClassName, mode, popupOffset, disabled } = props;\n      return (\n        <Trigger\n          prefixCls={prefixCls}\n          popupClassName={classNames(\n            `${prefixCls}-popup`,\n            {\n              [`${prefixCls}-rtl`]: rtl.value,\n            },\n            popupClassName,\n            rootClassName.value,\n          )}\n          stretch={mode === 'horizontal' ? 'minWidth' : null}\n          getPopupContainer={getPopupContainer.value}\n          builtinPlacements={placement.value}\n          popupPlacement={popupPlacement.value}\n          popupVisible={innerVisible.value}\n          popupAlign={popupOffset && { offset: popupOffset }}\n          action={disabled ? [] : [triggerSubMenuAction.value]}\n          mouseEnterDelay={subMenuOpenDelay.value}\n          mouseLeaveDelay={subMenuCloseDelay.value}\n          onPopupVisibleChange={onVisibleChange}\n          forceRender={forceRender || forceSubMenuRender.value}\n          popupAnimation={mergedMotion.value}\n          v-slots={{\n            popup: slots.popup,\n            default: slots.default,\n          }}\n        ></Trigger>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/SubMenu.tsx",
    "content": "import PropTypes from '../../_util/vue-types';\nimport type { PropType, ExtractPropTypes } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  shallowRef,\n  watch,\n  onBeforeUnmount,\n} from 'vue';\nimport useProvideKeyPath, { useInjectKeyPath, useMeasure } from './hooks/useKeyPath';\nimport {\n  useInjectMenu,\n  useProvideFirstLevel,\n  MenuContextProvider,\n  useProvideForceRender,\n  useInjectForceRender,\n} from './hooks/useMenuContext';\nimport { getPropsSlot, isValidElement } from '../../_util/props-util';\nimport classNames from '../../_util/classNames';\nimport useDirectionStyle from './hooks/useDirectionStyle';\nimport PopupTrigger from './PopupTrigger';\nimport SubMenuList from './SubMenuList';\nimport InlineSubMenuList from './InlineSubMenuList';\nimport { cloneElement } from '../../_util/vnode';\nimport Overflow from '../../vc-overflow';\nimport devWarning from '../../vc-util/devWarning';\nimport isValid from '../../_util/isValid';\nimport type { MouseEventHandler } from '../../_util/EventInterface';\nimport type { Key, CustomSlotsType } from '../../_util/type';\nimport { objectType } from '../../_util/type';\nimport type { ItemType, MenuTheme } from './interface';\n\nlet indexGuid = 0;\n\nexport const subMenuProps = () => ({\n  icon: PropTypes.any,\n  title: PropTypes.any,\n  disabled: Boolean,\n  level: Number,\n  popupClassName: String,\n  popupOffset: Array as unknown as PropType<[number, number]>,\n  internalPopupClose: Boolean,\n  eventKey: String,\n  expandIcon: Function as PropType<(p?: { isOpen: boolean; [key: string]: any }) => any>,\n  theme: String as PropType<MenuTheme>,\n  onMouseenter: Function as PropType<MouseEventHandler>,\n  onMouseleave: Function as PropType<MouseEventHandler>,\n  onTitleClick: Function as PropType<(e: MouseEvent, key: Key) => void>,\n\n  // Internal user prop\n  originItemValue: objectType<ItemType>(),\n});\n\nexport type SubMenuProps = Partial<ExtractPropTypes<ReturnType<typeof subMenuProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASubMenu',\n  inheritAttrs: false,\n  props: subMenuProps(),\n  slots: Object as CustomSlotsType<{\n    icon?: any;\n    title?: any;\n    expandIcon?: { isOpen: boolean; [key: string]: any };\n    default?: any;\n  }>,\n  setup(props, { slots, attrs, emit }) {\n    useProvideFirstLevel(false);\n    const isMeasure = useMeasure();\n    const instance = getCurrentInstance();\n    const vnodeKey =\n      typeof instance.vnode.key === 'symbol' ? String(instance.vnode.key) : instance.vnode.key;\n    devWarning(\n      typeof instance.vnode.key !== 'symbol',\n      'SubMenu',\n      `SubMenu \\`:key=\"${String(vnodeKey)}\"\\` not support Symbol type`,\n    );\n    const key = isValid(vnodeKey) ? vnodeKey : `sub_menu_${++indexGuid}_$$_not_set_key`;\n    const eventKey =\n      props.eventKey ??\n      (isValid(vnodeKey) ? `sub_menu_${++indexGuid}_$$_${vnodeKey}` : (key as string));\n    const { parentEventKeys, parentInfo, parentKeys } = useInjectKeyPath();\n    const keysPath = computed(() => [...parentKeys.value, key]);\n    const childrenEventKeys = shallowRef([]);\n    const menuInfo = {\n      eventKey,\n      key,\n      parentEventKeys,\n      childrenEventKeys,\n      parentKeys,\n    };\n    parentInfo.childrenEventKeys?.value.push(eventKey);\n    onBeforeUnmount(() => {\n      if (parentInfo.childrenEventKeys) {\n        parentInfo.childrenEventKeys.value = parentInfo.childrenEventKeys?.value.filter(\n          k => k != eventKey,\n        );\n      }\n    });\n\n    useProvideKeyPath(eventKey, key, menuInfo);\n\n    const {\n      prefixCls,\n      activeKeys,\n      disabled: contextDisabled,\n      changeActiveKeys,\n      mode,\n      inlineCollapsed,\n      openKeys,\n      overflowDisabled,\n      onOpenChange,\n      registerMenuInfo,\n      unRegisterMenuInfo,\n      selectedSubMenuKeys,\n      expandIcon: menuExpandIcon,\n      theme,\n    } = useInjectMenu();\n\n    const hasKey = vnodeKey !== undefined && vnodeKey !== null;\n    // If not set key, use forceRender = true for children\n    // 如果没有 key，强制 render 子元素\n    const forceRender = !isMeasure && (useInjectForceRender() || !hasKey);\n    useProvideForceRender(forceRender);\n\n    if ((isMeasure && hasKey) || (!isMeasure && !hasKey) || forceRender) {\n      registerMenuInfo(eventKey, menuInfo);\n\n      onBeforeUnmount(() => {\n        unRegisterMenuInfo(eventKey);\n      });\n    }\n\n    const subMenuPrefixCls = computed(() => `${prefixCls.value}-submenu`);\n    const mergedDisabled = computed(() => contextDisabled.value || props.disabled);\n    const elementRef = shallowRef();\n    const popupRef = shallowRef();\n\n    // // ================================ Icon ================================\n    // const mergedItemIcon = itemIcon || contextItemIcon;\n    // const mergedExpandIcon = expandIcon || contextExpandIcon;\n\n    // ================================ Open ================================\n    const originOpen = computed(() => openKeys.value.includes(key));\n    const open = computed(() => !overflowDisabled.value && originOpen.value);\n\n    // =============================== Select ===============================\n    const childrenSelected = computed(() => {\n      return selectedSubMenuKeys.value.includes(key);\n    });\n\n    const isActive = shallowRef(false);\n    watch(\n      activeKeys,\n      () => {\n        isActive.value = !!activeKeys.value.find(val => val === key);\n      },\n      { immediate: true },\n    );\n\n    // =============================== Events ===============================\n    // >>>> Title click\n    const onInternalTitleClick = (e: Event) => {\n      // Skip if disabled\n      if (mergedDisabled.value) {\n        return;\n      }\n      emit('titleClick', e, key);\n\n      // Trigger open by click when mode is `inline`\n      if (mode.value === 'inline') {\n        onOpenChange(key, !originOpen.value);\n      }\n    };\n\n    const onMouseEnter = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys(keysPath.value);\n        emit('mouseenter', event);\n      }\n    };\n    const onMouseLeave = (event: MouseEvent) => {\n      if (!mergedDisabled.value) {\n        changeActiveKeys([]);\n        emit('mouseleave', event);\n      }\n    };\n\n    // ========================== DirectionStyle ==========================\n    const directionStyle = useDirectionStyle(computed(() => keysPath.value.length));\n\n    // >>>>> Visible change\n    const onPopupVisibleChange = (newVisible: boolean) => {\n      if (mode.value !== 'inline') {\n        onOpenChange(key, newVisible);\n      }\n    };\n\n    /**\n     * Used for accessibility. Helper will focus element without key board.\n     * We should manually trigger an active\n     */\n    const onInternalFocus = () => {\n      changeActiveKeys(keysPath.value);\n    };\n\n    // =============================== Render ===============================\n    const popupId = eventKey && `${eventKey}-popup`;\n\n    const popupClassName = computed(() =>\n      classNames(\n        prefixCls.value,\n        `${prefixCls.value}-${props.theme || theme.value}`,\n        props.popupClassName,\n      ),\n    );\n    const renderTitle = (title: any, icon: any) => {\n      if (!icon) {\n        return inlineCollapsed.value &&\n          !parentKeys.value.length &&\n          title &&\n          typeof title === 'string' ? (\n          <div class={`${prefixCls.value}-inline-collapsed-noicon`}>{title.charAt(0)}</div>\n        ) : (\n          <span class={`${prefixCls.value}-title-content`}>{title}</span>\n        );\n      }\n      // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性，则内部包裹一个 span\n      // ref: https://github.com/ant-design/ant-design/pull/23456\n      const titleIsSpan = isValidElement(title) && title.type === 'span';\n      return (\n        <>\n          {cloneElement(\n            typeof icon === 'function' ? icon(props.originItemValue) : icon,\n            {\n              class: `${prefixCls.value}-item-icon`,\n            },\n            false,\n          )}\n          {titleIsSpan ? title : <span class={`${prefixCls.value}-title-content`}>{title}</span>}\n        </>\n      );\n    };\n\n    // Cache mode if it change to `inline` which do not have popup motion\n    const triggerModeRef = computed(() => {\n      return mode.value !== 'inline' && keysPath.value.length > 1 ? 'vertical' : mode.value;\n    });\n\n    const renderMode = computed(() => (mode.value === 'horizontal' ? 'vertical' : mode.value));\n\n    const subMenuTriggerModeRef = computed(() =>\n      triggerModeRef.value === 'horizontal' ? 'vertical' : triggerModeRef.value,\n    );\n    const baseTitleNode = () => {\n      const subMenuPrefixClsValue = subMenuPrefixCls.value;\n      const icon = props.icon ?? slots.icon?.(props);\n      const expandIcon = props.expandIcon || slots.expandIcon || menuExpandIcon.value;\n      const title = renderTitle(getPropsSlot(slots, props, 'title'), icon);\n      return (\n        <div\n          style={directionStyle.value}\n          class={`${subMenuPrefixClsValue}-title`}\n          tabindex={mergedDisabled.value ? null : -1}\n          ref={elementRef}\n          title={typeof title === 'string' ? title : null}\n          data-menu-id={key}\n          aria-expanded={open.value}\n          aria-haspopup\n          aria-controls={popupId}\n          aria-disabled={mergedDisabled.value}\n          onClick={onInternalTitleClick}\n          onFocus={onInternalFocus}\n        >\n          {title}\n\n          {/* Only non-horizontal mode shows the icon */}\n          {mode.value !== 'horizontal' && expandIcon ? (\n            expandIcon({ ...props, isOpen: open.value })\n          ) : (\n            <i class={`${subMenuPrefixClsValue}-arrow`} />\n          )}\n        </div>\n      );\n    };\n    return () => {\n      if (isMeasure) {\n        if (!hasKey) {\n          return null;\n        }\n        return slots.default?.();\n      }\n      const subMenuPrefixClsValue = subMenuPrefixCls.value;\n      let titleNode = () => null;\n      if (!overflowDisabled.value && mode.value !== 'inline') {\n        const popupOffset = mode.value === 'horizontal' ? [0, 8] : [10, 0];\n        titleNode = () => (\n          <PopupTrigger\n            mode={triggerModeRef.value}\n            prefixCls={subMenuPrefixClsValue}\n            visible={!props.internalPopupClose && open.value}\n            popupClassName={popupClassName.value}\n            popupOffset={props.popupOffset || popupOffset}\n            disabled={mergedDisabled.value}\n            onVisibleChange={onPopupVisibleChange}\n            v-slots={{\n              popup: () => (\n                <MenuContextProvider mode={subMenuTriggerModeRef.value}>\n                  <SubMenuList\n                    id={popupId}\n                    ref={popupRef}\n                    v-slots={{ default: slots.default }}\n                  ></SubMenuList>\n                </MenuContextProvider>\n              ),\n            }}\n          >\n            {baseTitleNode()}\n          </PopupTrigger>\n        );\n      } else {\n        // 包裹一层，保持结构一致，防止动画丢失\n        // https://github.com/vueComponent/ant-design-vue/issues/4325\n        titleNode = () => <PopupTrigger v-slots={{ default: baseTitleNode }}></PopupTrigger>;\n      }\n      return (\n        <MenuContextProvider mode={renderMode.value}>\n          <Overflow.Item\n            component=\"li\"\n            {...attrs}\n            role=\"none\"\n            class={classNames(\n              subMenuPrefixClsValue,\n              `${subMenuPrefixClsValue}-${mode.value}`,\n              attrs.class,\n              {\n                [`${subMenuPrefixClsValue}-open`]: open.value,\n                [`${subMenuPrefixClsValue}-active`]: isActive.value,\n                [`${subMenuPrefixClsValue}-selected`]: childrenSelected.value,\n                [`${subMenuPrefixClsValue}-disabled`]: mergedDisabled.value,\n              },\n            )}\n            onMouseenter={onMouseEnter}\n            onMouseleave={onMouseLeave}\n            data-submenu-id={key}\n            v-slots={{\n              default: () => {\n                return (\n                  <>\n                    {titleNode()}\n\n                    {/* Inline mode */}\n                    {!overflowDisabled.value && (\n                      <InlineSubMenuList\n                        id={popupId}\n                        open={open.value}\n                        keyPath={keysPath.value}\n                        v-slots={{ default: slots.default }}\n                      ></InlineSubMenuList>\n                    )}\n                  </>\n                );\n              },\n            }}\n          ></Overflow.Item>\n        </MenuContextProvider>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/menu/src/SubMenuList.tsx",
    "content": "import classNames from '../../_util/classNames';\nimport type { FunctionalComponent } from 'vue';\nimport { useInjectMenu } from './hooks/useMenuContext';\nconst InternalSubMenuList: FunctionalComponent<any> = (_props, { slots, attrs }) => {\n  const { prefixCls, mode } = useInjectMenu();\n  return (\n    <ul\n      {...attrs}\n      class={classNames(\n        prefixCls.value,\n        `${prefixCls.value}-sub`,\n        `${prefixCls.value}-${mode.value === 'inline' ? 'inline' : 'vertical'}`,\n      )}\n      data-menu-list\n    >\n      {slots.default?.()}\n    </ul>\n  );\n};\n\nInternalSubMenuList.displayName = 'SubMenuList';\n\nexport default InternalSubMenuList;\n"
  },
  {
    "path": "components/menu/src/hooks/useDirectionStyle.ts",
    "content": "import type { ComputedRef, CSSProperties } from 'vue';\nimport { computed } from 'vue';\nimport { useInjectMenu } from './useMenuContext';\n\nexport default function useDirectionStyle(level: ComputedRef<number>): ComputedRef<CSSProperties> {\n  const { mode, rtl, inlineIndent } = useInjectMenu();\n\n  return computed(() =>\n    mode.value !== 'inline'\n      ? null\n      : rtl.value\n      ? { paddingRight: `${level.value * inlineIndent.value}px` }\n      : { paddingLeft: `${level.value * inlineIndent.value}px` },\n  );\n}\n"
  },
  {
    "path": "components/menu/src/hooks/useItems.tsx",
    "content": "import type {\n  MenuItemType as VcMenuItemType,\n  MenuDividerType as VcMenuDividerType,\n  SubMenuType as VcSubMenuType,\n  MenuItemGroupType as VcMenuItemGroupType,\n} from '../interface';\nimport SubMenu from '../SubMenu';\nimport ItemGroup from '../ItemGroup';\nimport MenuDivider from '../Divider';\nimport MenuItem from '../MenuItem';\nimport type { Key } from '../../../_util/type';\nimport type { VNode } from 'vue';\nimport { ref, shallowRef, watch } from 'vue';\nimport type { MenuProps } from '../Menu';\nimport type { StoreMenuInfo } from './useMenuContext';\n\nexport interface MenuItemType extends VcMenuItemType {\n  danger?: boolean;\n  icon?: VNode | ((item: MenuItemType) => VNode);\n  title?: string;\n}\n\nexport interface SubMenuType extends Omit<VcSubMenuType, 'children'> {\n  icon?: VNode | ((item: SubMenuType) => VNode);\n  children: ItemType[];\n}\n\nexport interface MenuItemGroupType extends Omit<VcMenuItemGroupType, 'children'> {\n  children?: MenuItemType[];\n  key?: Key;\n}\n\nexport interface MenuDividerType extends VcMenuDividerType {\n  dashed?: boolean;\n  key?: Key;\n}\n\nexport type ItemType = MenuItemType | SubMenuType | MenuItemGroupType | MenuDividerType | null;\n\nfunction convertItemsToNodes(\n  list: ItemType[],\n  store: Map<string, StoreMenuInfo>,\n  parentMenuInfo?: {\n    childrenEventKeys: string[];\n    parentKeys: string[];\n  },\n) {\n  return (list || [])\n    .map((opt, index) => {\n      if (opt && typeof opt === 'object') {\n        const { label, children, key, type, ...restProps } = opt as any;\n        const mergedKey = key ?? `tmp-${index}`;\n        // 此处 eventKey === key, 移除 children 后可以移除 eventKey\n        const parentKeys = parentMenuInfo ? parentMenuInfo.parentKeys.slice() : [];\n        const childrenEventKeys = [];\n        // if\n        const menuInfo = {\n          eventKey: mergedKey,\n          key: mergedKey,\n          parentEventKeys: ref<string[]>(parentKeys),\n          parentKeys: ref<string[]>(parentKeys),\n          childrenEventKeys: ref<string[]>(childrenEventKeys),\n          isLeaf: false,\n        };\n\n        // MenuItemGroup & SubMenuItem\n        if (children || type === 'group') {\n          if (type === 'group') {\n            const childrenNodes = convertItemsToNodes(children, store, parentMenuInfo);\n            // Group\n            return (\n              <ItemGroup key={mergedKey} {...restProps} title={label} originItemValue={opt}>\n                {childrenNodes}\n              </ItemGroup>\n            );\n          }\n          store.set(mergedKey, menuInfo);\n          if (parentMenuInfo) {\n            parentMenuInfo.childrenEventKeys.push(mergedKey);\n          }\n          // Sub Menu\n          const childrenNodes = convertItemsToNodes(children, store, {\n            childrenEventKeys,\n            parentKeys: [].concat(parentKeys, mergedKey),\n          });\n          return (\n            <SubMenu key={mergedKey} {...restProps} title={label} originItemValue={opt}>\n              {childrenNodes}\n            </SubMenu>\n          );\n        }\n\n        // MenuItem & Divider\n        if (type === 'divider') {\n          return <MenuDivider key={mergedKey} {...restProps} />;\n        }\n        menuInfo.isLeaf = true;\n        store.set(mergedKey, menuInfo);\n        return (\n          <MenuItem key={mergedKey} {...restProps} originItemValue={opt}>\n            {label}\n          </MenuItem>\n        );\n      }\n\n      return null;\n    })\n    .filter(opt => opt);\n}\n\n// FIXME: Move logic here in v4\n/**\n * We simply convert `items` to VueNode for reuse origin component logic. But we need move all the\n * logic from component into this hooks when in v4\n */\nexport default function useItems(props: MenuProps) {\n  const itemsNodes = shallowRef([]);\n  const hasItmes = shallowRef(false);\n  const store = shallowRef(new Map<string, StoreMenuInfo>());\n  watch(\n    () => props.items,\n    () => {\n      const newStore = new Map<string, StoreMenuInfo>();\n      hasItmes.value = false;\n      if (props.items) {\n        hasItmes.value = true;\n        itemsNodes.value = convertItemsToNodes(props.items as ItemType[], newStore);\n      } else {\n        itemsNodes.value = undefined;\n      }\n      store.value = newStore;\n    },\n    { immediate: true, deep: true },\n  );\n  return { itemsNodes, store, hasItmes };\n}\n"
  },
  {
    "path": "components/menu/src/hooks/useKeyPath.ts",
    "content": "import type { Key } from '../../../_util/type';\nimport type { ComputedRef, InjectionKey } from 'vue';\nimport { computed, inject, provide, defineComponent } from 'vue';\nimport type { StoreMenuInfo } from './useMenuContext';\n\nexport const OVERFLOW_KEY = '$$__vc-menu-more__key';\nconst KeyPathContext: InjectionKey<{\n  parentEventKeys: ComputedRef<string[]>;\n  parentKeys: ComputedRef<Key[]>;\n  parentInfo: StoreMenuInfo;\n}> = Symbol('KeyPathContext');\n\nconst useInjectKeyPath = () => {\n  return inject(KeyPathContext, {\n    parentEventKeys: computed(() => []),\n    parentKeys: computed(() => []),\n    parentInfo: {} as StoreMenuInfo,\n  });\n};\n\nconst useProvideKeyPath = (eventKey: string, key: Key, menuInfo: StoreMenuInfo) => {\n  const { parentEventKeys, parentKeys } = useInjectKeyPath();\n  const eventKeys = computed(() => [...parentEventKeys.value, eventKey]);\n  const keys = computed(() => [...parentKeys.value, key]);\n  provide(KeyPathContext, { parentEventKeys: eventKeys, parentKeys: keys, parentInfo: menuInfo });\n  return keys;\n};\n\nconst measure = Symbol('measure');\nexport const PathContext = defineComponent({\n  compatConfig: { MODE: 3 },\n  setup(_props, { slots }) {\n    // 不需要响应式\n    provide(measure, true);\n    return () => slots.default?.();\n  },\n});\n\nexport const useMeasure = () => {\n  return inject(measure, false);\n};\n\nexport { useProvideKeyPath, useInjectKeyPath, KeyPathContext };\n\nexport default useProvideKeyPath;\n"
  },
  {
    "path": "components/menu/src/hooks/useMenuContext.ts",
    "content": "import type { Key } from '../../../_util/type';\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue';\nimport { defineComponent, inject, provide, toRef } from 'vue';\nimport type {\n  BuiltinPlacements,\n  MenuClickEventHandler,\n  MenuMode,\n  MenuTheme,\n  TriggerSubMenuAction,\n} from '../interface';\nimport type { CSSMotionProps } from '../../../_util/transition';\n\nexport interface StoreMenuInfo {\n  eventKey: string;\n  key: Key;\n  parentEventKeys: Ref<string[]>;\n  childrenEventKeys?: Ref<string[]>;\n  isLeaf?: boolean;\n  parentKeys: Ref<Key[]>;\n}\nexport interface MenuContextProps {\n  rootClassName: Ref<string>;\n  registerMenuInfo: (key: string, info: StoreMenuInfo) => void;\n  unRegisterMenuInfo: (key: string) => void;\n  prefixCls: ComputedRef<string>;\n  openKeys: Ref<Key[]>;\n  selectedKeys: Ref<Key[]>;\n\n  selectedSubMenuKeys: Ref<Array<number | string>>;\n  rtl?: ComputedRef<boolean>;\n\n  inlineCollapsed: Ref<boolean>;\n  theme?: ComputedRef<MenuTheme>;\n\n  siderCollapsed?: Ref<boolean>;\n\n  // // Mode\n  mode: Ref<MenuMode>;\n\n  // // Disabled\n  disabled?: ComputedRef<boolean>;\n  // // Used for overflow only. Prevent hidden node trigger open\n  overflowDisabled?: Ref<boolean>;\n\n  // // Active\n  activeKeys: Ref<Key[]>;\n  changeActiveKeys: (keys: Key[]) => void;\n  // onActive: (key: string) => void;\n  // onInactive: (key: string) => void;\n\n  // // Selection\n  // selectedKeys: string[];\n\n  // // Level\n  inlineIndent: ComputedRef<number>;\n\n  // // Motion\n  motion?: ComputedRef<CSSMotionProps | null>;\n  defaultMotions?: ComputedRef<Partial<{\n    [key in MenuMode | 'other']: CSSMotionProps | ((name?: string) => CSSMotionProps);\n  }> | null>;\n\n  // // Popup\n  subMenuOpenDelay: ComputedRef<number>;\n  subMenuCloseDelay: ComputedRef<number>;\n  forceSubMenuRender: ComputedRef<boolean>;\n  builtinPlacements?: ComputedRef<BuiltinPlacements>;\n  triggerSubMenuAction?: ComputedRef<TriggerSubMenuAction>;\n\n  // // Icon\n  // itemIcon?: RenderIconType;\n  expandIcon?: ComputedRef<(p?: { isOpen: boolean; [key: string]: any }) => any>;\n\n  // // Function\n  onItemClick: MenuClickEventHandler;\n  onOpenChange: (key: Key, open: boolean) => void;\n  getPopupContainer: ComputedRef<(node: HTMLElement) => HTMLElement>;\n}\n\nconst MenuContextKey: InjectionKey<MenuContextProps> = Symbol('menuContextKey');\n\nconst useProvideMenu = (props: MenuContextProps) => {\n  provide(MenuContextKey, props);\n};\n\nconst useInjectMenu = () => {\n  return inject(MenuContextKey);\n};\n\nconst ForceRenderKey: InjectionKey<boolean> = Symbol('ForceRenderKey');\n\nexport const useProvideForceRender = (forceRender: boolean) => {\n  provide(ForceRenderKey, forceRender);\n};\n\nexport const useInjectForceRender = () => {\n  return inject(ForceRenderKey, false);\n};\n\nconst MenuFirstLevelContextKey: InjectionKey<Boolean> = Symbol('menuFirstLevelContextKey');\nconst useProvideFirstLevel = (firstLevel: Boolean) => {\n  provide(MenuFirstLevelContextKey, firstLevel);\n};\n\nconst useInjectFirstLevel = () => {\n  return inject(MenuFirstLevelContextKey, true);\n};\n\nconst MenuContextProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'MenuContextProvider',\n  inheritAttrs: false,\n  props: {\n    mode: { type: String as PropType<MenuMode>, default: undefined },\n    overflowDisabled: { type: Boolean, default: undefined },\n  },\n  setup(props, { slots }) {\n    const menuContext = useInjectMenu();\n    const newContext = { ...menuContext };\n    // 确保传入的属性不会动态增删\n    // 不需要 watch 变化\n    if (props.mode !== undefined) {\n      newContext.mode = toRef(props, 'mode');\n    }\n    if (props.overflowDisabled !== undefined) {\n      newContext.overflowDisabled = toRef(props, 'overflowDisabled');\n    }\n    useProvideMenu(newContext);\n    return () => slots.default?.();\n  },\n});\n\nexport {\n  useProvideMenu,\n  MenuContextKey,\n  useInjectMenu,\n  MenuFirstLevelContextKey,\n  useProvideFirstLevel,\n  useInjectFirstLevel,\n  MenuContextProvider,\n};\n\nexport default useProvideMenu;\n"
  },
  {
    "path": "components/menu/src/interface.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { Key } from '../../_util/type';\nimport type { MenuItemProps } from './MenuItem';\n\n// ========================= Options =========================\ninterface ItemSharedProps {\n  style?: CSSProperties;\n  class?: string;\n}\n\nexport interface SubMenuType extends ItemSharedProps {\n  label?: any;\n\n  children: ItemType[];\n\n  disabled?: boolean;\n\n  key: Key;\n  theme?: MenuTheme;\n  rootClassName?: string;\n\n  // >>>>> Icon\n  itemIcon?: RenderIconType;\n  expandIcon?: RenderIconType;\n\n  // >>>>> Active\n  onMouseenter?: MenuHoverEventHandler;\n  onMouseleave?: MenuHoverEventHandler;\n\n  // >>>>> Popup\n  popupClassName?: string;\n  popupOffset?: number[];\n\n  // >>>>> Events\n  onClick?: MenuClickEventHandler;\n  onTitleClick?: (info: MenuTitleInfo) => void;\n  onTitleMouseenter?: MenuHoverEventHandler;\n  onTitleMouseleave?: MenuHoverEventHandler;\n}\n\nexport interface MenuItemType extends ItemSharedProps {\n  label?: any;\n\n  disabled?: boolean;\n\n  itemIcon?: RenderIconType;\n\n  key: Key;\n\n  // >>>>> Active\n  onMouseenter?: MenuHoverEventHandler;\n  onMouseleave?: MenuHoverEventHandler;\n\n  // >>>>> Events\n  onClick?: MenuClickEventHandler;\n}\n\nexport interface MenuItemGroupType extends ItemSharedProps {\n  type: 'group';\n\n  label?: any;\n\n  children?: ItemType[];\n}\n\nexport interface MenuDividerType extends ItemSharedProps {\n  type: 'divider';\n}\n\nexport type ItemType = SubMenuType | MenuItemType | MenuItemGroupType | MenuDividerType | null;\n\nexport type MenuTheme = 'light' | 'dark';\n\n// ========================== Basic ==========================\nexport type MenuMode = 'horizontal' | 'vertical' | 'inline';\n\nexport type BuiltinPlacements = Record<string, any>;\n\nexport type TriggerSubMenuAction = 'click' | 'hover';\n\nexport interface RenderIconInfo {\n  isSelected?: boolean;\n  isOpen?: boolean;\n  isSubMenu?: boolean;\n  disabled?: boolean;\n}\n\nexport type RenderIconType = (props: RenderIconInfo) => any;\n\nexport interface MenuInfo {\n  key: Key;\n  eventKey: string;\n  keyPath?: Key[];\n  eventKeyPath: string[];\n  domEvent: MouseEvent | KeyboardEvent;\n  item: MenuItemProps & { [key: string]: any };\n}\n\nexport interface MenuTitleInfo {\n  key: Key;\n  domEvent: MouseEvent | KeyboardEvent;\n}\n\n// ========================== Hover ==========================\nexport type MenuHoverEventHandler = (info: { key: Key; domEvent: MouseEvent }) => void;\n\n// ======================== Selection ========================\nexport interface SelectInfo extends MenuInfo {\n  selectedKeys: Key[];\n}\n\nexport type SelectEventHandler = (info: SelectInfo) => void;\n\n// ========================== Click ==========================\nexport type MenuClickEventHandler = (info: MenuInfo) => void;\n"
  },
  {
    "path": "components/menu/src/placements.ts",
    "content": "const autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1,\n};\n\nexport const placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -7],\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 7],\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [-4, 0],\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [4, 0],\n  },\n};\n\nexport const placementsRtl = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -7],\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 7],\n  },\n  rightTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [-4, 0],\n  },\n  leftTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [4, 0],\n  },\n};\n\nexport default placements;\n"
  },
  {
    "path": "components/menu/style/horizontal.ts",
    "content": "import type { MenuToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst getHorizontalStyle: GenerateStyle<MenuToken> = token => {\n  const {\n    componentCls,\n    motionDurationSlow,\n    menuHorizontalHeight,\n    colorSplit,\n    lineWidth,\n    lineType,\n    menuItemPaddingInline,\n  } = token;\n\n  return {\n    [`${componentCls}-horizontal`]: {\n      lineHeight: `${menuHorizontalHeight}px`,\n      border: 0,\n      borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n      boxShadow: 'none',\n\n      '&::after': {\n        display: 'block',\n        clear: 'both',\n        height: 0,\n        content: '\"\\\\20\"',\n      },\n\n      // ======================= Item =======================\n      [`${componentCls}-item, ${componentCls}-submenu`]: {\n        position: 'relative',\n        display: 'inline-block',\n        verticalAlign: 'bottom',\n        paddingInline: menuItemPaddingInline,\n      },\n\n      [`> ${componentCls}-item:hover,\n        > ${componentCls}-item-active,\n        > ${componentCls}-submenu ${componentCls}-submenu-title:hover`]: {\n        backgroundColor: 'transparent',\n      },\n\n      [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n        transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`].join(\n          ',',\n        ),\n      },\n\n      // ===================== Sub Menu =====================\n      [`${componentCls}-submenu-arrow`]: {\n        display: 'none',\n      },\n    },\n  };\n};\n\nexport default getHorizontalStyle;\n"
  },
  {
    "path": "components/menu/style/index.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport type { CSSObject } from '../../_util/cssinjs';\nimport { genCollapseMotion, initSlideMotion, initZoomMotion } from '../../style/motion';\nimport type { FullToken, GenerateStyle, UseComponentStyleResult } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport getHorizontalStyle from './horizontal';\nimport getRTLStyle from './rtl';\nimport getThemeStyle from './theme';\nimport getVerticalStyle from './vertical';\nimport { clearFix, resetComponent, resetIcon } from '../../style';\nimport { Ref } from 'vue';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  dropdownWidth: number;\n  zIndexPopup: number;\n\n  // Group\n  colorGroupTitle: string;\n\n  // radius\n  radiusItem: number;\n  radiusSubMenuItem: number;\n\n  // Item Text\n  // > Default\n  colorItemText: string;\n  colorItemTextHover: string;\n  colorItemTextHoverHorizontal: string;\n  colorItemTextSelected: string;\n  colorItemTextSelectedHorizontal: string;\n\n  // > Disabled\n  colorItemTextDisabled: string;\n\n  // > Danger\n  colorDangerItemText: string;\n  colorDangerItemTextHover: string;\n  colorDangerItemTextSelected: string;\n  colorDangerItemBgActive: string;\n  colorDangerItemBgSelected: string;\n\n  // Item Bg\n  colorItemBg: string;\n  colorItemBgHover: string;\n  colorSubItemBg: string;\n\n  // > Default\n  colorItemBgActive: string;\n  colorItemBgSelected: string;\n  colorItemBgSelectedHorizontal: string;\n\n  // Ink Bar\n  colorActiveBarWidth: number;\n  colorActiveBarHeight: number;\n  colorActiveBarBorderSize: number;\n\n  itemMarginInline: number;\n}\n\nexport interface MenuToken extends FullToken<'Menu'> {\n  menuItemHeight: number;\n  menuHorizontalHeight: number;\n  menuItemPaddingInline: number;\n  menuArrowSize: number;\n  menuArrowOffset: string;\n  menuPanelMaskInset: number;\n  menuSubMenuBg: string;\n}\n\nconst genMenuItemStyle = (token: MenuToken): CSSObject => {\n  const {\n    componentCls,\n    fontSize,\n    motionDurationSlow,\n    motionDurationMid,\n    motionEaseInOut,\n    motionEaseOut,\n    iconCls,\n    controlHeightSM,\n  } = token;\n\n  return {\n    // >>>>> Item\n    [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n      position: 'relative',\n      display: 'block',\n      margin: 0,\n      whiteSpace: 'nowrap',\n      cursor: 'pointer',\n      transition: [\n        `border-color ${motionDurationSlow}`,\n        `background ${motionDurationSlow}`,\n        `padding ${motionDurationSlow} ${motionEaseInOut}`,\n      ].join(','),\n\n      [`${componentCls}-item-icon, ${iconCls}`]: {\n        minWidth: fontSize,\n        fontSize,\n        transition: [\n          `font-size ${motionDurationMid} ${motionEaseOut}`,\n          `margin ${motionDurationSlow} ${motionEaseInOut}`,\n          `color ${motionDurationSlow}`,\n        ].join(','),\n\n        '+ span': {\n          marginInlineStart: controlHeightSM - fontSize,\n          opacity: 1,\n          transition: [\n            `opacity ${motionDurationSlow} ${motionEaseInOut}`,\n            `margin ${motionDurationSlow}`,\n            `color ${motionDurationSlow}`,\n          ].join(','),\n        },\n      },\n\n      [`${componentCls}-item-icon`]: {\n        ...resetIcon(),\n      },\n\n      [`&${componentCls}-item-only-child`]: {\n        [`> ${iconCls}, > ${componentCls}-item-icon`]: {\n          marginInlineEnd: 0,\n        },\n      },\n    },\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {\n      background: 'none !important',\n      cursor: 'not-allowed',\n\n      '&::after': {\n        borderColor: 'transparent !important',\n      },\n\n      a: {\n        color: 'inherit !important',\n      },\n\n      [`> ${componentCls}-submenu-title`]: {\n        color: 'inherit !important',\n        cursor: 'not-allowed',\n      },\n    },\n  };\n};\n\nconst genSubMenuArrowStyle = (token: MenuToken): CSSObject => {\n  const {\n    componentCls,\n    motionDurationSlow,\n    motionEaseInOut,\n    borderRadius,\n    menuArrowSize,\n    menuArrowOffset,\n  } = token;\n\n  return {\n    [`${componentCls}-submenu`]: {\n      [`&-expand-icon, &-arrow`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineEnd: token.margin,\n        width: menuArrowSize,\n        color: 'currentcolor',\n        transform: 'translateY(-50%)',\n        transition: `transform ${motionDurationSlow} ${motionEaseInOut}, opacity ${motionDurationSlow}`,\n      },\n\n      '&-arrow': {\n        // →\n        '&::before, &::after': {\n          position: 'absolute',\n          width: menuArrowSize * 0.6,\n          height: menuArrowSize * 0.15,\n          backgroundColor: 'currentcolor',\n          borderRadius,\n          transition: [\n            `background ${motionDurationSlow} ${motionEaseInOut}`,\n            `transform ${motionDurationSlow} ${motionEaseInOut}`,\n            `top ${motionDurationSlow} ${motionEaseInOut}`,\n            `color ${motionDurationSlow} ${motionEaseInOut}`,\n          ].join(','),\n          content: '\"\"',\n        },\n\n        '&::before': {\n          transform: `rotate(45deg) translateY(-${menuArrowOffset})`,\n        },\n\n        '&::after': {\n          transform: `rotate(-45deg) translateY(${menuArrowOffset})`,\n        },\n      },\n    },\n  };\n};\n\n// =============================== Base ===============================\nconst getBaseStyle: GenerateStyle<MenuToken> = token => {\n  const {\n    antCls,\n    componentCls,\n    fontSize,\n    motionDurationSlow,\n    motionDurationMid,\n    motionEaseInOut,\n    lineHeight,\n    paddingXS,\n    padding,\n    colorSplit,\n    lineWidth,\n    zIndexPopup,\n    borderRadiusLG,\n    radiusSubMenuItem,\n    menuArrowSize,\n    menuArrowOffset,\n    lineType,\n    menuPanelMaskInset,\n  } = token;\n\n  return [\n    // Misc\n    {\n      '': {\n        [`${componentCls}`]: {\n          ...clearFix(),\n\n          // Hidden\n          [`&-hidden`]: {\n            display: 'none',\n          },\n        },\n      },\n      [`${componentCls}-submenu-hidden`]: {\n        display: 'none',\n      },\n    },\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        ...clearFix(),\n\n        marginBottom: 0,\n        paddingInlineStart: 0, // Override default ul/ol\n        fontSize,\n        lineHeight: 0, // Fix display inline-block gap\n        listStyle: 'none',\n        outline: 'none',\n        transition: `width ${motionDurationSlow} cubic-bezier(0.2, 0, 0, 1) 0s`,\n\n        [`ul, ol`]: {\n          margin: 0,\n          padding: 0,\n          listStyle: 'none',\n        },\n\n        // Overflow ellipsis\n        [`&-overflow`]: {\n          display: 'flex',\n\n          [`${componentCls}-item`]: {\n            flex: 'none',\n          },\n        },\n        [`${componentCls}-item, ${componentCls}-submenu, ${componentCls}-submenu-title`]: {\n          borderRadius: token.radiusItem,\n        },\n\n        [`${componentCls}-item-group-title`]: {\n          padding: `${paddingXS}px ${padding}px`,\n          fontSize,\n          lineHeight,\n          transition: `all ${motionDurationSlow}`,\n        },\n\n        [`&-horizontal ${componentCls}-submenu`]: {\n          transition: [\n            `border-color ${motionDurationSlow} ${motionEaseInOut}`,\n            `background ${motionDurationSlow} ${motionEaseInOut}`,\n          ].join(','),\n        },\n\n        [`${componentCls}-submenu, ${componentCls}-submenu-inline`]: {\n          transition: [\n            `border-color ${motionDurationSlow} ${motionEaseInOut}`,\n            `background ${motionDurationSlow} ${motionEaseInOut}`,\n            `padding ${motionDurationMid} ${motionEaseInOut}`,\n          ].join(','),\n        },\n\n        [`${componentCls}-submenu ${componentCls}-sub`]: {\n          cursor: 'initial',\n          transition: [\n            `background ${motionDurationSlow} ${motionEaseInOut}`,\n            `padding ${motionDurationSlow} ${motionEaseInOut}`,\n          ].join(','),\n        },\n\n        [`${componentCls}-title-content`]: {\n          transition: `color ${motionDurationSlow}`,\n        },\n\n        [`${componentCls}-item a`]: {\n          '&::before': {\n            position: 'absolute',\n            inset: 0,\n            backgroundColor: 'transparent',\n            content: '\"\"',\n          },\n        },\n\n        // Removed a Badge related style seems it's safe\n        // https://github.com/ant-design/ant-design/issues/19809\n\n        // >>>>> Divider\n        [`${componentCls}-item-divider`]: {\n          overflow: 'hidden',\n          lineHeight: 0,\n          borderColor: colorSplit,\n          borderStyle: lineType,\n          borderWidth: 0,\n          borderTopWidth: lineWidth,\n          marginBlock: lineWidth,\n          padding: 0,\n\n          '&-dashed': {\n            borderStyle: 'dashed',\n          },\n        },\n\n        // Item\n        ...genMenuItemStyle(token),\n\n        [`${componentCls}-item-group`]: {\n          [`${componentCls}-item-group-list`]: {\n            margin: 0,\n            padding: 0,\n\n            [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n              paddingInline: `${fontSize * 2}px ${padding}px`,\n            },\n          },\n        },\n\n        // ======================= Sub Menu =======================\n        '&-submenu': {\n          '&-popup': {\n            position: 'absolute',\n            zIndex: zIndexPopup,\n            background: 'transparent',\n            borderRadius: borderRadiusLG,\n            boxShadow: 'none',\n            transformOrigin: '0 0',\n\n            // https://github.com/ant-design/ant-design/issues/13955\n            '&::before': {\n              position: 'absolute',\n              inset: `${menuPanelMaskInset}px 0 0`,\n              zIndex: -1,\n              width: '100%',\n              height: '100%',\n              opacity: 0,\n              content: '\"\"',\n            },\n          },\n\n          // https://github.com/ant-design/ant-design/issues/13955\n          '&-placement-rightTop::before': {\n            top: 0,\n            insetInlineStart: menuPanelMaskInset,\n          },\n\n          [`> ${componentCls}`]: {\n            borderRadius: borderRadiusLG,\n\n            ...genMenuItemStyle(token),\n            ...genSubMenuArrowStyle(token),\n\n            [`${componentCls}-item, ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n              borderRadius: radiusSubMenuItem,\n            },\n\n            [`${componentCls}-submenu-title::after`]: {\n              transition: `transform ${motionDurationSlow} ${motionEaseInOut}`,\n            },\n          },\n        },\n\n        ...genSubMenuArrowStyle(token),\n\n        [`&-inline-collapsed ${componentCls}-submenu-arrow,\n        &-inline ${componentCls}-submenu-arrow`]: {\n          // ↓\n          '&::before': {\n            transform: `rotate(-45deg) translateX(${menuArrowOffset})`,\n          },\n\n          '&::after': {\n            transform: `rotate(45deg) translateX(-${menuArrowOffset})`,\n          },\n        },\n\n        [`${componentCls}-submenu-open${componentCls}-submenu-inline > ${componentCls}-submenu-title > ${componentCls}-submenu-arrow`]:\n          {\n            // ↑\n            transform: `translateY(-${menuArrowSize * 0.2}px)`,\n\n            '&::after': {\n              transform: `rotate(-45deg) translateX(-${menuArrowOffset})`,\n            },\n\n            '&::before': {\n              transform: `rotate(45deg) translateX(${menuArrowOffset})`,\n            },\n          },\n      },\n    },\n\n    // Integration with header element so menu items have the same height\n    {\n      [`${antCls}-layout-header`]: {\n        [componentCls]: {\n          lineHeight: 'inherit',\n        },\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default (prefixCls: Ref<string>, injectStyle?: Ref<boolean>): UseComponentStyleResult => {\n  const useOriginHook = genComponentStyleHook(\n    'Menu',\n    (token, { overrideComponentToken }) => {\n      // Dropdown will handle menu style self. We do not need to handle this.\n      if (injectStyle?.value === false) {\n        return [];\n      }\n\n      const { colorBgElevated, colorPrimary, colorError, colorErrorHover, colorTextLightSolid } =\n        token;\n\n      const { controlHeightLG, fontSize } = token;\n\n      const menuArrowSize = (fontSize / 7) * 5;\n\n      // Menu Token\n      const menuToken = mergeToken<MenuToken>(token, {\n        menuItemHeight: controlHeightLG,\n        menuItemPaddingInline: token.margin,\n        menuArrowSize,\n        menuHorizontalHeight: controlHeightLG * 1.15,\n        menuArrowOffset: `${menuArrowSize * 0.25}px`,\n        menuPanelMaskInset: -7, // Still a hardcode here since it's offset by rc-align\n        menuSubMenuBg: colorBgElevated,\n      });\n\n      const colorTextDark = new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString();\n\n      const menuDarkToken = mergeToken<MenuToken>(\n        menuToken,\n        {\n          colorItemText: colorTextDark,\n          colorItemTextHover: colorTextLightSolid,\n          colorGroupTitle: colorTextDark,\n          colorItemTextSelected: colorTextLightSolid,\n          colorItemBg: '#001529',\n          colorSubItemBg: '#000c17',\n          colorItemBgActive: 'transparent',\n          colorItemBgSelected: colorPrimary,\n          colorActiveBarWidth: 0,\n          colorActiveBarHeight: 0,\n          colorActiveBarBorderSize: 0,\n\n          // Disabled\n          colorItemTextDisabled: new TinyColor(colorTextLightSolid).setAlpha(0.25).toRgbString(),\n\n          // Danger\n          colorDangerItemText: colorError,\n          colorDangerItemTextHover: colorErrorHover,\n          colorDangerItemTextSelected: colorTextLightSolid,\n          colorDangerItemBgActive: colorError,\n          colorDangerItemBgSelected: colorError,\n\n          menuSubMenuBg: '#001529',\n\n          // Horizontal\n          colorItemTextSelectedHorizontal: colorTextLightSolid,\n          colorItemBgSelectedHorizontal: colorPrimary,\n        },\n        {\n          ...overrideComponentToken,\n        },\n      );\n\n      return [\n        // Basic\n        getBaseStyle(menuToken),\n\n        // Horizontal\n        getHorizontalStyle(menuToken), // Hard code for some light style\n\n        // Vertical\n        getVerticalStyle(menuToken), // Hard code for some light style\n\n        // Theme\n        getThemeStyle(menuToken, 'light'),\n        getThemeStyle(menuDarkToken, 'dark'),\n\n        // RTL\n        getRTLStyle(menuToken),\n\n        // Motion\n        genCollapseMotion(menuToken),\n\n        initSlideMotion(menuToken, 'slide-up'),\n        initSlideMotion(menuToken, 'slide-down'),\n        initZoomMotion(menuToken, 'zoom-big'),\n      ];\n    },\n    token => {\n      const {\n        colorPrimary,\n        colorError,\n        colorTextDisabled,\n        colorErrorBg,\n        colorText,\n        colorTextDescription,\n        colorBgContainer,\n        colorFillAlter,\n        colorFillContent,\n        lineWidth,\n        lineWidthBold,\n        controlItemBgActive,\n        colorBgTextHover,\n      } = token;\n\n      return {\n        dropdownWidth: 160,\n        zIndexPopup: token.zIndexPopupBase + 50,\n        radiusItem: token.borderRadiusLG,\n        radiusSubMenuItem: token.borderRadiusSM,\n        colorItemText: colorText,\n        colorItemTextHover: colorText,\n        colorItemTextHoverHorizontal: colorPrimary,\n        colorGroupTitle: colorTextDescription,\n        colorItemTextSelected: colorPrimary,\n        colorItemTextSelectedHorizontal: colorPrimary,\n        colorItemBg: colorBgContainer,\n        colorItemBgHover: colorBgTextHover,\n        colorItemBgActive: colorFillContent,\n        colorSubItemBg: colorFillAlter,\n        colorItemBgSelected: controlItemBgActive,\n        colorItemBgSelectedHorizontal: 'transparent',\n        colorActiveBarWidth: 0,\n        colorActiveBarHeight: lineWidthBold,\n        colorActiveBarBorderSize: lineWidth,\n\n        // Disabled\n        colorItemTextDisabled: colorTextDisabled,\n\n        // Danger\n        colorDangerItemText: colorError,\n        colorDangerItemTextHover: colorError,\n        colorDangerItemTextSelected: colorError,\n        colorDangerItemBgActive: colorErrorBg,\n        colorDangerItemBgSelected: colorErrorBg,\n\n        itemMarginInline: token.marginXXS,\n      };\n    },\n  );\n\n  return useOriginHook(prefixCls);\n};\n"
  },
  {
    "path": "components/menu/style/rtl.ts",
    "content": "import type { MenuToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst getRTLStyle: GenerateStyle<MenuToken> = ({ componentCls, menuArrowOffset }) => ({\n  [`${componentCls}-rtl`]: {\n    direction: 'rtl',\n  },\n\n  [`${componentCls}-submenu-rtl`]: {\n    transformOrigin: '100% 0',\n  },\n\n  // Vertical Arrow\n  [`${componentCls}-rtl${componentCls}-vertical,\n    ${componentCls}-submenu-rtl ${componentCls}-vertical`]: {\n    [`${componentCls}-submenu-arrow`]: {\n      '&::before': {\n        transform: `rotate(-45deg) translateY(-${menuArrowOffset})`,\n      },\n\n      '&::after': {\n        transform: `rotate(45deg) translateY(${menuArrowOffset})`,\n      },\n    },\n  },\n});\n\nexport default getRTLStyle;\n"
  },
  {
    "path": "components/menu/style/theme.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\nimport { genFocusOutline } from '../../style';\nimport type { MenuToken } from '.';\n\nconst accessibilityFocus = (token: MenuToken) => ({\n  ...genFocusOutline(token),\n});\n\nconst getThemeStyle = (token: MenuToken, themeSuffix: string): CSSInterpolation => {\n  const {\n    componentCls,\n    colorItemText,\n    colorItemTextSelected,\n    colorGroupTitle,\n    colorItemBg,\n    colorSubItemBg,\n    colorItemBgSelected,\n    colorActiveBarHeight,\n    colorActiveBarWidth,\n    colorActiveBarBorderSize,\n    motionDurationSlow,\n    motionEaseInOut,\n    motionEaseOut,\n    menuItemPaddingInline,\n    motionDurationMid,\n    colorItemTextHover,\n    lineType,\n    colorSplit,\n\n    // Disabled\n    colorItemTextDisabled,\n\n    // Danger\n    colorDangerItemText,\n    colorDangerItemTextHover,\n    colorDangerItemTextSelected,\n    colorDangerItemBgActive,\n    colorDangerItemBgSelected,\n\n    colorItemBgHover,\n    menuSubMenuBg,\n\n    // Horizontal\n    colorItemTextSelectedHorizontal,\n    colorItemBgSelectedHorizontal,\n  } = token;\n\n  return {\n    [`${componentCls}-${themeSuffix}`]: {\n      color: colorItemText,\n      background: colorItemBg,\n\n      [`&${componentCls}-root:focus-visible`]: {\n        ...accessibilityFocus(token),\n      },\n\n      // ======================== Item ========================\n      [`${componentCls}-item-group-title`]: {\n        color: colorGroupTitle,\n      },\n\n      [`${componentCls}-submenu-selected`]: {\n        [`> ${componentCls}-submenu-title`]: {\n          color: colorItemTextSelected,\n        },\n      },\n\n      // Disabled\n      [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {\n        color: `${colorItemTextDisabled} !important`,\n      },\n\n      // Hover\n      [`${componentCls}-item:hover, ${componentCls}-submenu-title:hover`]: {\n        [`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {\n          color: colorItemTextHover,\n        },\n      },\n\n      [`&:not(${componentCls}-horizontal)`]: {\n        [`${componentCls}-item:not(${componentCls}-item-selected)`]: {\n          '&:hover': {\n            backgroundColor: colorItemBgHover,\n          },\n\n          '&:active': {\n            backgroundColor: colorItemBgSelected,\n          },\n        },\n\n        [`${componentCls}-submenu-title`]: {\n          '&:hover': {\n            backgroundColor: colorItemBgHover,\n          },\n\n          '&:active': {\n            backgroundColor: colorItemBgSelected,\n          },\n        },\n      },\n\n      // Danger - only Item has\n      [`${componentCls}-item-danger`]: {\n        color: colorDangerItemText,\n\n        [`&${componentCls}-item:hover`]: {\n          [`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {\n            color: colorDangerItemTextHover,\n          },\n        },\n\n        [`&${componentCls}-item:active`]: {\n          background: colorDangerItemBgActive,\n        },\n      },\n\n      [`${componentCls}-item a`]: {\n        '&, &:hover': {\n          color: 'inherit',\n        },\n      },\n\n      [`${componentCls}-item-selected`]: {\n        color: colorItemTextSelected,\n\n        // Danger\n        [`&${componentCls}-item-danger`]: {\n          color: colorDangerItemTextSelected,\n        },\n\n        [`a, a:hover`]: {\n          color: 'inherit',\n        },\n      },\n\n      [`& ${componentCls}-item-selected`]: {\n        backgroundColor: colorItemBgSelected,\n\n        // Danger\n        [`&${componentCls}-item-danger`]: {\n          backgroundColor: colorDangerItemBgSelected,\n        },\n      },\n\n      [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n        [`&:not(${componentCls}-item-disabled):focus-visible`]: {\n          ...accessibilityFocus(token),\n        },\n      },\n\n      [`&${componentCls}-submenu > ${componentCls}`]: {\n        backgroundColor: menuSubMenuBg,\n      },\n\n      [`&${componentCls}-popup > ${componentCls}`]: {\n        backgroundColor: colorItemBg,\n      },\n\n      // ====================== Horizontal ======================\n      [`&${componentCls}-horizontal`]: {\n        ...(themeSuffix === 'dark'\n          ? {\n              borderBottom: 0,\n            }\n          : {}),\n\n        [`> ${componentCls}-item, > ${componentCls}-submenu`]: {\n          top: colorActiveBarBorderSize,\n          marginTop: -colorActiveBarBorderSize,\n          marginBottom: 0,\n          borderRadius: 0,\n\n          '&::after': {\n            position: 'absolute',\n            insetInline: menuItemPaddingInline,\n            bottom: 0,\n            borderBottom: `${colorActiveBarHeight}px solid transparent`,\n            transition: `border-color ${motionDurationSlow} ${motionEaseInOut}`,\n            content: '\"\"',\n          },\n\n          [`&:hover, &-active, &-open`]: {\n            '&::after': {\n              borderBottomWidth: colorActiveBarHeight,\n              borderBottomColor: colorItemTextSelectedHorizontal,\n            },\n          },\n          [`&-selected`]: {\n            color: colorItemTextSelectedHorizontal,\n            backgroundColor: colorItemBgSelectedHorizontal,\n            '&::after': {\n              borderBottomWidth: colorActiveBarHeight,\n              borderBottomColor: colorItemTextSelectedHorizontal,\n            },\n          },\n        },\n      },\n\n      // ================== Inline & Vertical ===================\n      //\n      [`&${componentCls}-root`]: {\n        [`&${componentCls}-inline, &${componentCls}-vertical`]: {\n          borderInlineEnd: `${colorActiveBarBorderSize}px ${lineType} ${colorSplit}`,\n        },\n      },\n\n      // ======================== Inline ========================\n      [`&${componentCls}-inline`]: {\n        // Sub\n        [`${componentCls}-sub${componentCls}-inline`]: {\n          background: colorSubItemBg,\n        },\n\n        // Item\n        [`${componentCls}-item, ${componentCls}-submenu-title`]:\n          colorActiveBarBorderSize && colorActiveBarWidth\n            ? {\n                width: `calc(100% + ${colorActiveBarBorderSize}px)`,\n              }\n            : {},\n\n        [`${componentCls}-item`]: {\n          position: 'relative',\n\n          '&::after': {\n            position: 'absolute',\n            insetBlock: 0,\n            insetInlineEnd: 0,\n            borderInlineEnd: `${colorActiveBarWidth}px solid ${colorItemTextSelected}`,\n            transform: 'scaleY(0.0001)',\n            opacity: 0,\n            transition: [\n              `transform ${motionDurationMid} ${motionEaseOut}`,\n              `opacity ${motionDurationMid} ${motionEaseOut}`,\n            ].join(','),\n            content: '\"\"',\n          },\n\n          // Danger\n          [`&${componentCls}-item-danger`]: {\n            '&::after': {\n              borderInlineEndColor: colorDangerItemTextSelected,\n            },\n          },\n        },\n\n        [`${componentCls}-selected, ${componentCls}-item-selected`]: {\n          '&::after': {\n            transform: 'scaleY(1)',\n            opacity: 1,\n            transition: [\n              `transform ${motionDurationMid} ${motionEaseInOut}`,\n              `opacity ${motionDurationMid} ${motionEaseInOut}`,\n            ].join(','),\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default getThemeStyle;\n"
  },
  {
    "path": "components/menu/style/vertical.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { textEllipsis } from '../../style';\nimport type { MenuToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst getVerticalInlineStyle: GenerateStyle<MenuToken, CSSObject> = token => {\n  const {\n    componentCls,\n    menuItemHeight,\n    itemMarginInline,\n    padding,\n    menuArrowSize,\n    marginXS,\n    marginXXS,\n  } = token;\n\n  const paddingWithArrow = padding + menuArrowSize + marginXS;\n\n  return {\n    [`${componentCls}-item`]: {\n      position: 'relative',\n    },\n\n    [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n      height: menuItemHeight,\n      lineHeight: `${menuItemHeight}px`,\n      paddingInline: padding,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n\n      marginInline: itemMarginInline,\n      marginBlock: marginXXS,\n      width: `calc(100% - ${itemMarginInline * 2}px)`,\n    },\n\n    // disable margin collapsed\n    [`${componentCls}-submenu`]: {\n      paddingBottom: 0.02,\n    },\n\n    [`> ${componentCls}-item,\n            > ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n      height: menuItemHeight,\n      lineHeight: `${menuItemHeight}px`,\n    },\n\n    [`${componentCls}-item-group-list ${componentCls}-submenu-title,\n            ${componentCls}-submenu-title`]: {\n      paddingInlineEnd: paddingWithArrow,\n    },\n  };\n};\n\nconst getVerticalStyle: GenerateStyle<MenuToken> = token => {\n  const {\n    componentCls,\n    iconCls,\n    menuItemHeight,\n    colorTextLightSolid,\n    dropdownWidth,\n    controlHeightLG,\n    motionDurationMid,\n    motionEaseOut,\n    paddingXL,\n    fontSizeSM,\n    fontSizeLG,\n    motionDurationSlow,\n    paddingXS,\n    boxShadowSecondary,\n  } = token;\n\n  const inlineItemStyle: CSSObject = {\n    height: menuItemHeight,\n    lineHeight: `${menuItemHeight}px`,\n    listStylePosition: 'inside',\n    listStyleType: 'disc',\n  };\n\n  return [\n    {\n      [componentCls]: {\n        [`&-inline, &-vertical`]: {\n          [`&${componentCls}-root`]: {\n            boxShadow: 'none',\n          },\n\n          ...getVerticalInlineStyle(token),\n        },\n      },\n\n      [`${componentCls}-submenu-popup`]: {\n        [`${componentCls}-vertical`]: {\n          ...getVerticalInlineStyle(token),\n          boxShadow: boxShadowSecondary,\n        },\n      },\n    },\n\n    // Vertical only\n    {\n      [`${componentCls}-submenu-popup ${componentCls}-vertical${componentCls}-sub`]: {\n        minWidth: dropdownWidth,\n        maxHeight: `calc(100vh - ${controlHeightLG * 2.5}px)`,\n        padding: '0',\n        overflow: 'hidden',\n        borderInlineEnd: 0,\n\n        // https://github.com/ant-design/ant-design/issues/22244\n        // https://github.com/ant-design/ant-design/issues/26812\n        \"&:not([class*='-active'])\": {\n          overflowX: 'hidden',\n          overflowY: 'auto',\n        },\n      },\n    },\n\n    // Inline Only\n    {\n      [`${componentCls}-inline`]: {\n        width: '100%',\n\n        // Motion enhance for first level\n        [`&${componentCls}-root`]: {\n          [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n            display: 'flex',\n            alignItems: 'center',\n            transition: [\n              `border-color ${motionDurationSlow}`,\n              `background ${motionDurationSlow}`,\n              `padding ${motionDurationMid} ${motionEaseOut}`,\n            ].join(','),\n\n            [`> ${componentCls}-title-content`]: {\n              flex: 'auto',\n              minWidth: 0,\n              overflow: 'hidden',\n              textOverflow: 'ellipsis',\n            },\n\n            '> *': {\n              flex: 'none',\n            },\n          },\n        },\n\n        // >>>>> Sub\n        [`${componentCls}-sub${componentCls}-inline`]: {\n          padding: 0,\n          border: 0,\n          borderRadius: 0,\n          boxShadow: 'none',\n\n          [`& > ${componentCls}-submenu > ${componentCls}-submenu-title`]: inlineItemStyle,\n\n          [`& ${componentCls}-item-group-title`]: {\n            paddingInlineStart: paddingXL,\n          },\n        },\n\n        // >>>>> Item\n        [`${componentCls}-item`]: inlineItemStyle,\n      },\n    },\n\n    // Inline Collapse Only\n    {\n      [`${componentCls}-inline-collapsed`]: {\n        width: menuItemHeight * 2,\n\n        [`&${componentCls}-root`]: {\n          [`${componentCls}-item, ${componentCls}-submenu ${componentCls}-submenu-title`]: {\n            [`> ${componentCls}-inline-collapsed-noicon`]: {\n              fontSize: fontSizeLG,\n              textAlign: 'center',\n            },\n          },\n        },\n\n        [`> ${componentCls}-item,\n          > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-item,\n          > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-submenu > ${componentCls}-submenu-title,\n          > ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n          insetInlineStart: 0,\n          paddingInline: `calc(50% - ${fontSizeSM}px)`,\n          textOverflow: 'clip',\n\n          [`\n            ${componentCls}-submenu-arrow,\n            ${componentCls}-submenu-expand-icon\n          `]: {\n            opacity: 0,\n          },\n\n          [`${componentCls}-item-icon, ${iconCls}`]: {\n            margin: 0,\n            fontSize: fontSizeLG,\n            lineHeight: `${menuItemHeight}px`,\n\n            '+ span': {\n              display: 'inline-block',\n              opacity: 0,\n            },\n          },\n        },\n\n        [`${componentCls}-item-icon, ${iconCls}`]: {\n          display: 'inline-block',\n        },\n\n        '&-tooltip': {\n          pointerEvents: 'none',\n\n          [`${componentCls}-item-icon, ${iconCls}`]: {\n            display: 'none',\n          },\n\n          'a, a:hover': {\n            color: colorTextLightSolid,\n          },\n        },\n\n        [`${componentCls}-item-group-title`]: {\n          ...textEllipsis,\n          paddingInline: paddingXS,\n        },\n      },\n    },\n  ];\n};\n\nexport default getVerticalStyle;\n"
  },
  {
    "path": "components/message/PurePanel.tsx",
    "content": "import Notice from '../vc-notification/Notice';\nimport type { NoticeProps } from '../vc-notification/Notice';\nimport useStyle from './style';\nimport type { NoticeType } from './interface';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled';\nimport type { VueNode } from '../_util/type';\nimport classNames from '../_util/classNames';\nimport { useConfigContextInject } from '../config-provider/context';\nimport { computed, defineComponent } from 'vue';\n\nexport const TypeIcon = {\n  info: <InfoCircleFilled />,\n  success: <CheckCircleFilled />,\n  error: <CloseCircleFilled />,\n  warning: <ExclamationCircleFilled />,\n  loading: <LoadingOutlined />,\n};\n\nexport interface PureContentProps {\n  prefixCls: string;\n  type?: NoticeType;\n  icon?: VueNode;\n}\n\nexport const PureContent = defineComponent<PureContentProps>({\n  name: 'PureContent',\n  inheritAttrs: false,\n  props: ['prefixCls', 'type', 'icon'] as any,\n\n  setup(props, { slots }) {\n    return () => (\n      <div\n        class={classNames(`${props.prefixCls}-custom-content`, `${props.prefixCls}-${props.type}`)}\n      >\n        {props.icon || TypeIcon[props.type!]}\n        <span>{slots.default?.()}</span>\n      </div>\n    );\n  },\n});\n\nexport interface PurePanelProps\n  extends Omit<NoticeProps, 'prefixCls' | 'eventKey'>,\n    Omit<PureContentProps, 'prefixCls'> {\n  prefixCls?: string;\n}\n\n/** @private Internal Component. Do not use in your production. */\n\nexport default defineComponent<PurePanelProps>({\n  name: 'PurePanel',\n  inheritAttrs: false,\n  props: ['prefixCls', 'class', 'type', 'icon', 'content'] as any,\n  setup(props, { slots, attrs }) {\n    const { getPrefixCls } = useConfigContextInject();\n    const prefixCls = computed(() => props.prefixCls || getPrefixCls('message'));\n    const [, hashId] = useStyle(prefixCls);\n    return (\n      <Notice\n        {...attrs}\n        prefixCls={prefixCls.value}\n        class={classNames(hashId.value, `${prefixCls.value}-notice-pure-panel`)}\n        noticeKey=\"pure\"\n        duration={null}\n      >\n        <PureContent prefixCls={prefixCls.value} type={props.type} icon={props.icon}>\n          {slots.default?.()}\n        </PureContent>\n      </Notice>\n    );\n  },\n});\n"
  },
  {
    "path": "components/message/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/message/demo/custom-style.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Customized style</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/duration.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Customized display duration</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/hook.vue correctly 1`] = `\n<!--teleport start-->\n<!--teleport end-->\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Display normal message</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/info.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Display normal message</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/loading.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Display a loading indicator</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/other.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Success</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Error</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Warning</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/message/demo/thenable.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Display a sequence of message</span>\n</button>\n`;\n\nexports[`renders ./components/message/demo/update.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the message box (update by key)</span>\n</button>\n<br>\n<br>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the message box (update by reactive)</span>\n</button>\n`;\n"
  },
  {
    "path": "components/message/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('message');\n"
  },
  {
    "path": "components/message/__tests__/index.test.js",
    "content": "import { asyncExpect } from '../../../tests/utils';\nimport message, { getInstance } from '..';\nimport SmileOutlined from '@ant-design/icons-vue/SmileOutlined';\n\ndescribe('message', () => {\n  beforeEach(() => {\n    jest.useFakeTimers();\n    document.body.outerHTML = '';\n  });\n\n  afterEach(() => {\n    message.destroy();\n  });\n\n  afterEach(() => {\n    message.destroy();\n    jest.useRealTimers();\n  });\n\n  it('should be able to config top', async () => {\n    message.config({\n      top: '100px',\n    });\n    message.info('whatever');\n    await asyncExpect(() => {\n      expect(document.querySelectorAll('.ant-message')[0].style.top).toBe('100px');\n    });\n  });\n  it('should be able to config getContainer', () => {\n    message.config({\n      getContainer: () => {\n        const div = document.createElement('div');\n        div.className = 'custom-container';\n        document.body.appendChild(div);\n        return div;\n      },\n    });\n    message.info('whatever');\n    expect(document.querySelectorAll('.custom-container').length).toBe(1);\n  });\n\n  it('should be able to config maxCount', async () => {\n    message.config({\n      maxCount: 5,\n    });\n    for (let i = 0; i < 10; i += 1) {\n      message.info('test');\n    }\n    message.info('last');\n    await Promise.resolve();\n    jest.runAllTimers();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(5);\n    expect(document.querySelectorAll('.ant-message-notice')[4].textContent).toBe('last');\n  });\n\n  it('should be able to hide manually', async () => {\n    const hide1 = message.info('whatever', 0);\n    const hide2 = message.info('whatever', 0);\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(2);\n    hide1();\n    jest.runAllTimers();\n    expect(getInstance().component.value.notices).toHaveLength(1);\n    hide2();\n    jest.runAllTimers();\n    expect(getInstance().component.value.notices).toHaveLength(0);\n  });\n\n  it('should be able to destroy globally', async () => {\n    message.info('whatever', 0);\n    message.info('whatever', 0);\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-message').length).toBe(1);\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(2);\n    message.destroy();\n    expect(document.querySelectorAll('.ant-message').length).toBe(0);\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(0);\n  });\n\n  it('should not need to use duration argument when using the onClose arguments', () => {\n    message.info('whatever', () => {});\n  });\n\n  it('should have the default duration when using the onClose arguments', done => {\n    jest.useRealTimers();\n    const defaultDuration = 3;\n    const now = Date.now();\n    message.info('whatever', () => {\n      // calculate the approximately duration value\n      const aboutDuration = parseInt((Date.now() - now) / 1000, 10);\n      expect(aboutDuration).toBe(defaultDuration);\n      done();\n    });\n  });\n\n  it('should be called like promise', done => {\n    jest.useRealTimers();\n    const defaultDuration = 3;\n    const now = Date.now();\n    message.info('whatever').then(() => {\n      // calculate the approximately duration value\n      const aboutDuration = parseInt((Date.now() - now) / 1000, 10);\n      expect(aboutDuration).toBe(defaultDuration);\n      done();\n    });\n  });\n\n  // https:// github.com/ant-design/ant-design/issues/8201\n  it('should hide message correctly', async () => {\n    const hide = message.loading('Action in progress..', 0);\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(1);\n    hide();\n    await Promise.resolve();\n    jest.runAllTimers();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(0);\n  });\n  it('should allow custom icon', async () => {\n    message.open({ content: 'Message', icon: <SmileOutlined /> });\n    await Promise.resolve();\n    expect(document.querySelectorAll('.anticon-smile').length).toBe(1);\n  });\n\n  it('should have no icon', async () => {\n    message.open({ content: 'Message' });\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-message-notice .anticon').length).toBe(0);\n  });\n  // https://github.com/ant-design/ant-design/issues/8201\n  it('should destroy messages correctly', async () => {\n    message.loading('Action in progress1..', 0);\n    message.loading('Action in progress2..', 0);\n    setTimeout(() => message.destroy(), 1000);\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(2);\n    jest.runAllTimers();\n    expect(document.querySelectorAll('.ant-message-notice').length).toBe(0);\n  });\n});\n"
  },
  {
    "path": "components/message/demo/custom-style.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 自定义样式\n  en-US: Customized style\n---\n\n## zh-CN\n\n使用 `style` 和 `class` 来定义样式。\n\n## en-US\n\nThe `style` and `class` are available to customize Message.\n\n</docs>\n\n<template>\n  <a-button @click=\"success\">Customized style</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst success = () => {\n  message.success({\n    content: () => 'This is a prompt message with custom className and style',\n    class: 'custom-class',\n    style: {\n      marginTop: '20vh',\n    },\n  });\n};\n</script>\n<style>\n.custom-class {\n  color: red;\n}\n</style>\n"
  },
  {
    "path": "components/message/demo/duration.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 修改延时\n  en-US: Customize duration\n---\n\n## zh-CN\n\n自定义时长 `10s`，默认时长为 `3s`。\n\n## en-US\n\nCustomize message display duration from default `3s` to `10s`.\n\n</docs>\n\n<template>\n  <a-button @click=\"success\">Customized display duration</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst success = () => {\n  message.success('This is a prompt message for success, and it will disappear in 10 seconds', 10);\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/hook.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: Hooks 调用（推荐）\n  en-US: Hooks Usage (Recommend)\n---\n\n## zh-CN\n\n通过 `message.useMessage` 创建支持读取 context 的 `contextHolder`。请注意，我们推荐通过顶层注册的方式代替 `message` 静态方法，因为静态方法无法消费上下文，因而 ConfigProvider 的数据也不会生效。\n\n## en-US\n\nUse `message.useMessage` to get `contextHolder` with context accessible issue. Please note that, we recommend to use top level registration instead of `message` static method, because static method cannot consume context, and ConfigProvider data will not work.\n\n</docs>\n\n<template>\n  <context-holder />\n  <a-button type=\"primary\" @click=\"info\">Display normal message</a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst [messageApi, contextHolder] = message.useMessage();\n\nconst info = () => {\n  messageApi.info('Hello, Ant Design Vue!');\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Hook />\n    <info />\n    <duration />\n    <other />\n    <loading />\n    <thenable />\n    <update />\n    <customStyleVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Info from './info.vue';\nimport Other from './other.vue';\nimport Duration from './duration.vue';\nimport Loading from './loading.vue';\nimport Thenable from './thenable.vue';\nimport Update from './update.vue';\nimport customStyleVue from './custom-style.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nimport Hook from './hook.vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Info,\n    Other,\n    Duration,\n    Loading,\n    Thenable,\n    Update,\n    customStyleVue,\n    Hook,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/message/demo/info.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 普通提示\n  en-US: Normal prompt\n---\n\n## zh-CN\n\n信息提醒反馈。\n\n## en-US\n\nNormal message for information.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"info\">Display normal message</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst info = () => {\n  message.info('This is a normal message');\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/loading.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 加载中\n  en-US: Message with loading indicator\n---\n\n## zh-CN\n\n进行全局 loading，异步自行移除。\n\n## en-US\n\nDisplay a global loading indicator, which is dismissed by itself asynchronously.\n\n</docs>\n\n<template>\n  <a-button @click=\"success\">Display a loading indicator</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst success = () => {\n  const hide = message.loading('Action in progress..', 0);\n  setTimeout(hide, 2500);\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/other.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 其他提示类型\n  en-US: Other types of message\n---\n\n## zh-CN\n\n包括成功、失败、警告。\n\n## en-US\n\nMessages of success, error and warning types.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-button @click=\"success\">Success</a-button>\n    <a-button @click=\"error\">Error</a-button>\n    <a-button @click=\"warning\">Warning</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst success = () => {\n  message.success('This is a success message');\n};\nconst error = () => {\n  message.error('This is an error message');\n};\nconst warning = () => {\n  message.warning('This is a warning message');\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/thenable.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: Promise 接口\n  en-US: Promise interface\n---\n\n## zh-CN\n\n可以通过 then 接口在关闭后运行 callback 。以上用例将在每个 message 将要结束时通过 then 显示新的 message 。\n\n## en-US\n\n`message` provides promise interface for `onClose`. The above example will display a new message when old message is about to finish.\n\n</docs>\n\n<template>\n  <a-button @click=\"success\">Display a sequence of message</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst success = () => {\n  message\n    .loading('Action in progress..', 2.5)\n    .then(\n      () => message.success('Loading finished', 2.5),\n      // eslint-disable-next-line @typescript-eslint/no-empty-function\n      () => {},\n    )\n    .then(() => message.info('Loading finished is finished', 2.5));\n};\n</script>\n"
  },
  {
    "path": "components/message/demo/update.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 更新消息内容\n  en-US: Update Message Content\n---\n\n## zh-CN\n\n可以通过唯一的 `key` 来更新内容、或者响应式数据。\n\n## en-US\n\nUpdate message content with unique `key`，or use reactive data.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openMessage\">Open the message box (update by key)</a-button>\n  <br />\n  <br />\n  <a-button type=\"primary\" @click=\"openMessage2\">\n    Open the message box (update by reactive)\n  </a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst key = 'updatable';\nconst openMessage = () => {\n  message.loading({ content: 'Loading...', key });\n  setTimeout(() => {\n    message.success({ content: 'Loaded!', key, duration: 2 });\n  }, 1000);\n};\nconst content = ref('Loading...');\nconst openMessage2 = () => {\n  // content must use function\n  message.loading({ content: () => content.value });\n  setTimeout(() => {\n    content.value = 'Loaded!';\n  }, 1000);\n};\n</script>\n"
  },
  {
    "path": "components/message/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Message\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JjZBT6N1MusAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*7qMTRoq3ZGkAAAAAAAAAAAAADrJ8AQ/original\n---\n\nDisplay global messages as feedback in response to user operations.\n\n## When To Use\n\n- To provide feedback such as success, warning, error etc.\n- A message is displayed at top and center and will be dismissed automatically, as a non-interrupting light-weighted prompt.\n\n## API\n\nThis components provides some static methods, with usage and arguments as following:\n\n- `message.success(content, [duration], onClose)`\n- `message.error(content, [duration], onClose)`\n- `message.info(content, [duration], onClose)`\n- `message.warning(content, [duration], onClose)`\n- `message.warn(content, [duration], onClose)` // alias of warning\n- `message.loading(content, [duration], onClose)`\n\n| Argument | Description | Type | Default |\n| --- | --- | --- | --- |\n| content | content of the message | string\\| VNode \\| () => VNode | - |\n| duration | time(seconds) before auto-dismiss, don't dismiss if set to 0 | number | 1.5 |\n| onClose | Specify a function that will be called when the message is closed | function | - |\n\n`afterClose` can be called in then-able interface:\n\n- `message[level](content, [duration]).then(afterClose)`\n- `message[level](content, [duration], onClose).then(afterClose)`\n\nwhere `level` refers one static methods of `message`. The result of `then` method will be a Promise.\n\n- `message.open(config)`\n- `message.success(config)`\n- `message.error(config)`\n- `message.info(config)`\n- `message.warning(config)`\n- `message.warn(config)` // alias of warning\n- `message.loading(config)`\n\nThe properties of config are as follows:\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| class | Customized CSS class | string | - |  |\n| content | content of the message | string\\| VNode \\| () => VNode | - |  |\n| duration | time(seconds) before auto-dismiss, don't dismiss if set to 0 | number | 3 |  |\n| icon | Customized Icon | VNode \\| ()=> VNode | - |  |\n| key | The unique identifier of the Message | string\\|number | - |  |\n| style | Customized inline style | CSSProperties | - |  |\n| onClick | Specify a function that will be called when the message is clicked | function | - |  |\n| onClose | Specify a function that will be called when the message is closed | function | - |  |\n\n### Global static methods\n\nMethods for global configuration and destruction are also provided:\n\n- `message.config(options)`\n- `message.destroy()`\n- `message.useMessage()`\n\n#### message.config\n\n```js\nmessage.config({\n  top: '100px',\n  duration: 2,\n  maxCount: 3,\n  rtl: true,\n  prefixCls: 'my-message',\n});\n```\n\n| Argument | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| duration | time before auto-dismiss, in seconds | number | 1.5 |  |\n| getContainer | Return the mount node for Message | () => HTMLElement | () => document.body |  |\n| maxCount | max message show, drop oldest if exceed limit | number | - |  |\n| prefixCls | The prefix className of message node | string | `ant-message` | 3.0 |\n| rtl | Whether to enable RTL mode | boolean | false | 3.0 |\n| top | distance from top | string | `8px` |  |\n\n## FAQ\n\n### Why I can not access context, Pinia, ConfigProvider `locale/prefixCls/theme` in message?\n\nantdv will dynamic create Vue instance by `Vue.render` when call message methods. Whose context is different with origin code located context.\n\nWhen you need context info (like ConfigProvider context), you can use `message.useMessage` to get `api` instance and `contextHolder` node. And put it in your children:\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { message } from 'ant-design-vue';\n  const [messageApi, contextHolder] = message.useMessage();\n  messageApi.open({\n    // ...\n  });\n</script>\n```\n\n**Note:** You must insert `contextHolder` into your children with hooks. You can use origin method if you do not need context connection.\n\n> [App Package Component](/components/app) can be used to simplify the problem of `useMessage` and other methods that need to manually implant contextHolder.\n\n### How to set static methods prefixCls ？\n\nYou can config with [`ConfigProvider.config`](/components/config-provider#configproviderconfig-4130)\n"
  },
  {
    "path": "components/message/index.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport Notification from '../vc-notification';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled';\nimport type { Key, VueNode } from '../_util/type';\nimport type { NotificationInstance } from '../vc-notification/Notification';\nimport classNames from '../_util/classNames';\nimport useStyle from './style';\nimport useMessage from './useMessage';\nlet defaultDuration = 3;\nlet defaultTop: string;\nlet messageInstance: NotificationInstance;\nlet key = 1;\nlet localPrefixCls = '';\nlet transitionName = 'move-up';\nlet hasTransitionName = false;\nlet getContainer = () => document.body;\nlet maxCount: number;\nlet rtl = false;\n\nexport function getKeyThenIncreaseKey() {\n  return key++;\n}\n\nexport interface ConfigOptions {\n  top?: string;\n  duration?: number;\n  prefixCls?: string;\n  getContainer?: () => HTMLElement;\n  transitionName?: string;\n  maxCount?: number;\n  rtl?: boolean;\n}\n\nfunction setMessageConfig(options: ConfigOptions) {\n  if (options.top !== undefined) {\n    defaultTop = options.top;\n    messageInstance = null; // delete messageInstance for new defaultTop\n  }\n  if (options.duration !== undefined) {\n    defaultDuration = options.duration;\n  }\n\n  if (options.prefixCls !== undefined) {\n    localPrefixCls = options.prefixCls;\n  }\n  if (options.getContainer !== undefined) {\n    getContainer = options.getContainer;\n    messageInstance = null; // delete messageInstance for new getContainer\n  }\n  if (options.transitionName !== undefined) {\n    transitionName = options.transitionName;\n    messageInstance = null; // delete messageInstance for new transitionName\n    hasTransitionName = true;\n  }\n  if (options.maxCount !== undefined) {\n    maxCount = options.maxCount;\n    messageInstance = null;\n  }\n  if (options.rtl !== undefined) {\n    rtl = options.rtl;\n  }\n}\n\nfunction getMessageInstance(args: MessageArgsProps, callback: (i: NotificationInstance) => void) {\n  if (messageInstance) {\n    callback(messageInstance);\n    return;\n  }\n\n  Notification.newInstance(\n    {\n      appContext: args.appContext,\n      prefixCls: args.prefixCls || localPrefixCls,\n      rootPrefixCls: args.rootPrefixCls,\n      transitionName,\n      hasTransitionName,\n      style: { top: defaultTop }, // 覆盖原来的样式\n      getContainer: getContainer || args.getPopupContainer,\n      maxCount,\n      name: 'message',\n      useStyle,\n    },\n    (instance: any) => {\n      if (messageInstance) {\n        callback(messageInstance);\n        return;\n      }\n      messageInstance = instance;\n      callback(instance);\n    },\n  );\n}\n\nexport type NoticeType = 'info' | 'success' | 'error' | 'warning' | 'loading';\n\nexport interface ThenableArgument {\n  (val: any): void;\n}\n\nconst typeToIcon = {\n  info: InfoCircleFilled,\n  success: CheckCircleFilled,\n  error: CloseCircleFilled,\n  warning: ExclamationCircleFilled,\n  loading: LoadingOutlined,\n};\nexport const typeList = Object.keys(typeToIcon) as NoticeType[];\nexport interface MessageType extends PromiseLike<any> {\n  (): void;\n}\n\nexport interface MessageArgsProps {\n  content: string | (() => VueNode) | VueNode;\n  duration?: number;\n  type?: NoticeType;\n  prefixCls?: string;\n  rootPrefixCls?: string;\n  getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n  onClose?: () => void;\n  icon?: (() => VueNode) | VueNode;\n  key?: string | number;\n  style?: CSSProperties;\n  class?: string;\n  appContext?: any;\n  onClick?: (e: MouseEvent) => void;\n}\n\nfunction notice(args: MessageArgsProps): MessageType {\n  const duration = args.duration !== undefined ? args.duration : defaultDuration;\n\n  const target = args.key || getKeyThenIncreaseKey();\n  const closePromise = new Promise(resolve => {\n    const callback = () => {\n      if (typeof args.onClose === 'function') {\n        args.onClose();\n      }\n      return resolve(true);\n    };\n    getMessageInstance(args, instance => {\n      instance.notice({\n        key: target,\n        duration,\n        style: args.style || {},\n        class: args.class,\n        content: ({ prefixCls }) => {\n          const Icon = typeToIcon[args.type];\n          const iconNode = Icon ? <Icon /> : '';\n          const messageClass = classNames(`${prefixCls}-custom-content`, {\n            [`${prefixCls}-${args.type}`]: args.type,\n            [`${prefixCls}-rtl`]: rtl === true,\n          });\n          return (\n            <div class={messageClass}>\n              {typeof args.icon === 'function' ? args.icon() : args.icon || iconNode}\n              <span>{typeof args.content === 'function' ? args.content() : args.content}</span>\n            </div>\n          );\n        },\n        onClose: callback,\n        onClick: args.onClick,\n      });\n    });\n  });\n  const result: any = () => {\n    if (messageInstance) {\n      messageInstance.removeNotice(target);\n    }\n  };\n  result.then = (filled: ThenableArgument, rejected: ThenableArgument) =>\n    closePromise.then(filled, rejected);\n  result.promise = closePromise;\n  return result;\n}\n\ntype ConfigDuration = number;\ntype JointContent = VueNode | MessageArgsProps;\nexport type ConfigOnClose = () => void;\n\nfunction isArgsProps(content: JointContent): content is MessageArgsProps {\n  return (\n    Object.prototype.toString.call(content) === '[object Object]' &&\n    !!(content as MessageArgsProps).content\n  );\n}\n\nconst api: any = {\n  open: notice,\n  config: setMessageConfig,\n  destroy(messageKey?: Key) {\n    if (messageInstance) {\n      if (messageKey) {\n        const { removeNotice } = messageInstance;\n        removeNotice(messageKey);\n      } else {\n        const { destroy } = messageInstance;\n        destroy();\n        messageInstance = null;\n      }\n    }\n  },\n};\n\nexport function attachTypeApi(originalApi: MessageApi, type: NoticeType) {\n  originalApi[type] = (\n    content: JointContent,\n    duration?: ConfigDuration,\n    onClose?: ConfigOnClose,\n  ) => {\n    if (isArgsProps(content)) {\n      return originalApi.open({ ...content, type });\n    }\n\n    if (typeof duration === 'function') {\n      onClose = duration;\n      duration = undefined;\n    }\n\n    return originalApi.open({ content, duration, type, onClose });\n  };\n}\n\ntypeList.forEach(type => attachTypeApi(api, type));\n\napi.warn = api.warning;\napi.useMessage = useMessage;\nexport interface MessageInstance {\n  info(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  success(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  error(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  warning(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  loading(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  open(args: MessageArgsProps): MessageType;\n  useMessage: typeof useMessage;\n}\n\nexport interface MessageApi extends MessageInstance {\n  warn(content: JointContent, duration?: ConfigDuration, onClose?: ConfigOnClose): MessageType;\n  config(options: ConfigOptions): void;\n  destroy(messageKey?: Key): void;\n}\n\n/** @private test Only function. Not work on production */\nexport const getInstance = () => (process.env.NODE_ENV === 'test' ? messageInstance : null);\n\nexport default api as MessageApi;\n"
  },
  {
    "path": "components/message/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Message\nsubtitle: 全局提示\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JjZBT6N1MusAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*7qMTRoq3ZGkAAAAAAAAAAAAADrJ8AQ/original\n---\n\n全局展示操作反馈信息。\n\n## 何时使用\n\n- 可提供成功、警告和错误等反馈信息。\n- 顶部居中显示并自动消失，是一种不打断用户操作的轻量级提示方式。\n\n## API\n\n组件提供了一些静态方法，使用方式和参数如下：\n\n- `message.success(content, [duration], onClose)`\n- `message.error(content, [duration], onClose)`\n- `message.info(content, [duration], onClose)`\n- `message.warning(content, [duration], onClose)`\n- `message.warn(content, [duration], onClose)` // alias of warning\n- `message.loading(content, [duration], onClose)`\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| content | 提示内容 | string\\| VNode \\| () => VNode | - |\n| duration | 自动关闭的延时，单位秒。设为 0 时不自动关闭。 | number | 3 |\n| onClose | 关闭时触发的回调函数 | function | - |\n\n组件同时提供 promise 接口\n\n- `message[level](content, [duration]).then(afterClose)`\n- `message[level](content, [duration], onClose).then(afterClose)`\n\n其中`message[level]` 是组件已经提供的静态方法。`then` 接口返回值是 Promise 。\n\n也可以对象的形式传递参数：\n\n- `message.open(config)`\n- `message.success(config)`\n- `message.error(config)`\n- `message.info(config)`\n- `message.warning(config)`\n- `message.warn(config)` // alias of warning\n- `message.loading(config)`\n\n`config` 对象属性如下：\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| class | 自定义 CSS class | string | - |  |\n| content | 提示内容 | string\\| VNode \\| ()=> VNode | - |  |\n| duration | 自动关闭的延时，单位秒。设为 0 时不自动关闭。 | number | 3 |  |\n| icon | 自定义图标 | VNode \\| () => VNode | - |  |\n| key | 当前提示的唯一标志 | string \\| number | - |  |\n| style | 自定义内联样式 | CSSProperties | - |  |\n| onClick | 点击 message 时触发的回调函数 | function | - |  |\n| onClose | 关闭时触发的回调函数 | function | - |  |\n\n### 全局方法\n\n还提供了全局配置和全局销毁方法：\n\n- `message.config(options)`\n- `message.destroy()`\n- `message.useMessage()`\n\n#### message.config\n\n```js\nmessage.config({\n  top: `100px`,\n  duration: 2,\n  maxCount: 3,\n  rtl: true,\n  prefixCls: 'my-message',\n});\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| duration | 默认自动关闭延时，单位秒 | number | 3 |  |  |\n| getContainer | 配置渲染节点的输出位置 | () => HTMLElement | () => document.body |  |  |\n| maxCount | 最大显示数, 超过限制时，最早的消息会被自动关闭 | number | - |  |  |\n| prefixCls | 消息节点的 className 前缀 | string | `ant-message` | 3.0 |  |\n| rtl | 是否开启 RTL 模式 | boolean | false |  |  |\n| top | 消息距离顶部的位置 | string | `8px` |  |  |\n\n## FAQ\n\n### 为什么 message 不能获取 context、Pinia 的内容和 ConfigProvider 的 `locale/prefixCls/theme` 等配置？\n\n直接调用 message 方法，antdv 会通过 `Vue.render` 动态创建新的 Vue 实体。其 context 与当前代码所在 context 并不相同，因而无法获取 context 信息。\n\n当你需要 context 信息（例如 ConfigProvider 配置的内容）时，可以通过 `message.useMessage` 方法会返回 `api` 实体以及 `contextHolder` 节点。将其插入到你需要获取 context 位置即可：\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { message } from 'ant-design-vue';\n  const [messageApi, contextHolder] = message.useMessage();\n  messageApi.open({\n    // ...\n  });\n</script>\n```\n\n**异同**：通过 hooks 创建的 `contextHolder` 必须插入到子元素节点中才会生效，当你不需要上下文信息时请直接调用。\n\n> 可通过 [App 包裹组件](/components/app-cn) 简化 `useMessage` 等方法需要手动植入 contextHolder 的问题。\n\n### 静态方法如何设置 prefixCls ？\n\n你可以通过 [`ConfigProvider.config`](/components/config-provider-cn#configproviderconfig-4130) 进行设置。\n"
  },
  {
    "path": "components/message/interface.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { Key, VueNode } from '../_util/type';\n\nexport type NoticeType = 'info' | 'success' | 'error' | 'warning' | 'loading';\n\nexport interface ConfigOptions {\n  top?: number | string;\n  duration?: number;\n  prefixCls?: string;\n  getContainer?: () => HTMLElement;\n  transitionName?: string;\n  maxCount?: number;\n  rtl?: boolean;\n}\n\nexport interface ArgsProps {\n  content: string | (() => VueNode) | VueNode;\n  duration?: number;\n  type?: NoticeType;\n  onClose?: () => void;\n  icon?: (() => VueNode) | VueNode;\n  key?: string | number;\n  style?: CSSProperties;\n  class?: string;\n  onClick?: (e: Event) => void;\n}\n\nexport type JointContent = VueNode | ArgsProps;\n\nexport interface MessageType extends PromiseLike<boolean> {\n  (): void;\n}\n\nexport type TypeOpen = (\n  content: JointContent,\n  duration?: number | VoidFunction, // Also can use onClose directly\n  onClose?: VoidFunction,\n) => MessageType;\n\nexport interface MessageInstance {\n  info: TypeOpen;\n  success: TypeOpen;\n  error: TypeOpen;\n  warning: TypeOpen;\n  loading: TypeOpen;\n  open(args: ArgsProps): MessageType;\n  destroy(key?: Key): void;\n}\n"
  },
  {
    "path": "components/message/style/index.ts",
    "content": "// deps-lint-skip-all\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  // Component token here\n  height: number;\n  zIndexPopup: number;\n}\n\ninterface MessageToken extends FullToken<'Message'> {\n  // Custom token here\n  messageNoticeContentPadding: string;\n}\n\nconst genMessageStyle: GenerateStyle<MessageToken> = token => {\n  const {\n    componentCls,\n    iconCls,\n    boxShadowSecondary,\n    colorBgElevated,\n    colorSuccess,\n    colorError,\n    colorWarning,\n    colorInfo,\n    fontSizeLG,\n    motionEaseInOutCirc,\n    motionDurationSlow,\n    marginXS,\n    paddingXS,\n    borderRadiusLG,\n    zIndexPopup,\n    // Custom token\n    messageNoticeContentPadding,\n  } = token;\n\n  const messageMoveIn = new Keyframes('MessageMoveIn', {\n    '0%': {\n      padding: 0,\n      transform: 'translateY(-100%)',\n      opacity: 0,\n    },\n\n    '100%': {\n      padding: paddingXS,\n      transform: 'translateY(0)',\n      opacity: 1,\n    },\n  });\n\n  const messageMoveOut = new Keyframes('MessageMoveOut', {\n    '0%': {\n      maxHeight: token.height,\n      padding: paddingXS,\n      opacity: 1,\n    },\n    '100%': {\n      maxHeight: 0,\n      padding: 0,\n      opacity: 0,\n    },\n  });\n\n  return [\n    // ============================ Holder ============================\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        position: 'fixed',\n        top: marginXS,\n        left: '50%',\n        transform: 'translateX(-50%)',\n        width: '100%',\n        pointerEvents: 'none',\n        zIndex: zIndexPopup,\n\n        [`${componentCls}-move-up`]: {\n          animationFillMode: 'forwards',\n        },\n        [`\n        ${componentCls}-move-up-appear,\n        ${componentCls}-move-up-enter\n      `]: {\n          animationName: messageMoveIn,\n          animationDuration: motionDurationSlow,\n          animationPlayState: 'paused',\n          animationTimingFunction: motionEaseInOutCirc,\n        },\n        [`\n        ${componentCls}-move-up-appear${componentCls}-move-up-appear-active,\n        ${componentCls}-move-up-enter${componentCls}-move-up-enter-active\n      `]: {\n          animationPlayState: 'running',\n        },\n        [`${componentCls}-move-up-leave`]: {\n          animationName: messageMoveOut,\n          animationDuration: motionDurationSlow,\n          animationPlayState: 'paused',\n          animationTimingFunction: motionEaseInOutCirc,\n        },\n        [`${componentCls}-move-up-leave${componentCls}-move-up-leave-active`]: {\n          animationPlayState: 'running',\n        },\n        '&-rtl': {\n          direction: 'rtl',\n          span: {\n            direction: 'rtl',\n          },\n        },\n      },\n    },\n\n    // ============================ Notice ============================\n    {\n      [`${componentCls}-notice`]: {\n        padding: paddingXS,\n        textAlign: 'center',\n\n        [iconCls]: {\n          verticalAlign: 'text-bottom',\n          marginInlineEnd: marginXS, // affected by ltr or rtl\n          fontSize: fontSizeLG,\n        },\n\n        [`${componentCls}-notice-content`]: {\n          display: 'inline-block',\n          padding: messageNoticeContentPadding,\n          background: colorBgElevated,\n          borderRadius: borderRadiusLG,\n          boxShadow: boxShadowSecondary,\n          pointerEvents: 'all',\n        },\n\n        [`${componentCls}-success ${iconCls}`]: {\n          color: colorSuccess,\n        },\n        [`${componentCls}-error ${iconCls}`]: {\n          color: colorError,\n        },\n        [`${componentCls}-warning ${iconCls}`]: {\n          color: colorWarning,\n        },\n        [`\n        ${componentCls}-info ${iconCls},\n        ${componentCls}-loading ${iconCls}`]: {\n          color: colorInfo,\n        },\n      },\n    },\n\n    // ============================= Pure =============================\n    {\n      [`${componentCls}-notice-pure-panel`]: {\n        padding: 0,\n        textAlign: 'start',\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Message',\n  token => {\n    // Gen-style functions here\n    const combinedToken = mergeToken<MessageToken>(token, {\n      messageNoticeContentPadding: `${\n        (token.controlHeightLG - token.fontSize * token.lineHeight) / 2\n      }px ${token.paddingSM}px`,\n    });\n    return [genMessageStyle(combinedToken)];\n  },\n  token => ({\n    height: 150,\n    zIndexPopup: token.zIndexPopupBase + 10,\n  }),\n);\n"
  },
  {
    "path": "components/message/useMessage.tsx",
    "content": "import { shallowRef, computed, defineComponent } from 'vue';\nimport { useNotification as useVcNotification } from '../vc-notification';\nimport type { NotificationAPI } from '../vc-notification';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport useStyle from './style';\nimport type {\n  MessageInstance,\n  ArgsProps,\n  MessageType,\n  ConfigOptions,\n  NoticeType,\n  TypeOpen,\n} from './interface';\n\nimport { PureContent } from './PurePanel';\nimport { getMotion } from '../vc-trigger/utils/motionUtil';\nimport type { Key } from '../_util/type';\nimport { wrapPromiseFn } from '../_util/util';\nimport type { VNode } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\n\nconst DEFAULT_OFFSET = 8;\nconst DEFAULT_DURATION = 3;\n\n// ==============================================================================\n// ==                                  Holder                                  ==\n// ==============================================================================\ntype HolderProps = ConfigOptions & {\n  onAllRemoved?: VoidFunction;\n};\n\ninterface HolderRef extends NotificationAPI {\n  prefixCls: string;\n  hashId: string;\n}\n\nconst Holder = defineComponent({\n  name: 'Holder',\n  inheritAttrs: false,\n  props: [\n    'top',\n    'prefixCls',\n    'getContainer',\n    'maxCount',\n    'duration',\n    'rtl',\n    'transitionName',\n    'onAllRemoved',\n    'animation',\n    'staticGetContainer',\n  ],\n  setup(props, { expose }) {\n    const { getPrefixCls, getPopupContainer } = useConfigInject('message', props);\n\n    const prefixCls = computed(() => getPrefixCls('message', props.prefixCls));\n\n    const [, hashId] = useStyle(prefixCls);\n\n    // =============================== Style ===============================\n    const getStyles = () => {\n      const top = props.top ?? DEFAULT_OFFSET;\n      return {\n        left: '50%',\n        transform: 'translateX(-50%)',\n        top: typeof top === 'number' ? `${top}px` : top,\n      };\n    };\n    const getClassName = () => classNames(hashId.value, props.rtl ? `${prefixCls.value}-rtl` : '');\n\n    // ============================== Motion ===============================\n    const getNotificationMotion = () =>\n      getMotion({\n        prefixCls: prefixCls.value,\n        animation: props.animation ?? `move-up`,\n        transitionName: props.transitionName,\n      });\n\n    // ============================ Close Icon =============================\n    const mergedCloseIcon = (\n      <span class={`${prefixCls.value}-close-x`}>\n        <CloseOutlined class={`${prefixCls.value}-close-icon`} />\n      </span>\n    );\n    // ============================== Origin ===============================\n    const [api, holder] = useVcNotification({\n      //@ts-ignore\n      getStyles,\n      prefixCls: prefixCls.value,\n      getClassName,\n      motion: getNotificationMotion,\n      closable: false,\n      closeIcon: mergedCloseIcon,\n      duration: props.duration ?? DEFAULT_DURATION,\n      getContainer: props.staticGetContainer ?? getPopupContainer.value,\n      maxCount: props.maxCount,\n      onAllRemoved: props.onAllRemoved,\n    });\n\n    // ================================ Ref ================================\n    expose({\n      ...api,\n      prefixCls,\n      hashId,\n    });\n    return holder;\n  },\n});\n\n// ==============================================================================\n// ==                                   Hook                                   ==\n// ==============================================================================\nlet keyIndex = 0;\n\nexport function useInternalMessage(\n  messageConfig?: HolderProps,\n): readonly [MessageInstance, () => VNode] {\n  const holderRef = shallowRef<HolderRef>(null);\n  const holderKey = Symbol('messageHolderKey');\n  // ================================ API ================================\n\n  // Wrap with notification content\n  // >>> close\n  const close = (key: Key) => {\n    holderRef.value?.close(key);\n  };\n\n  // >>> Open\n  const open = (config: ArgsProps): MessageType => {\n    if (!holderRef.value) {\n      const fakeResult: any = () => {};\n      fakeResult.then = () => {};\n      return fakeResult;\n    }\n\n    const { open: originOpen, prefixCls, hashId } = holderRef.value;\n    const noticePrefixCls = `${prefixCls}-notice`;\n    const { content, icon, type, key, class: className, onClose, ...restConfig } = config;\n\n    let mergedKey: Key = key!;\n    if (mergedKey === undefined || mergedKey === null) {\n      keyIndex += 1;\n      mergedKey = `antd-message-${keyIndex}`;\n    }\n\n    return wrapPromiseFn(resolve => {\n      originOpen({\n        ...restConfig,\n        key: mergedKey,\n        content: () => (\n          <PureContent\n            prefixCls={prefixCls}\n            type={type}\n            icon={typeof icon === 'function' ? icon() : icon}\n          >\n            {typeof content === 'function' ? content() : content}\n          </PureContent>\n        ),\n        placement: 'top',\n        // @ts-ignore\n        class: classNames(type && `${noticePrefixCls}-${type}`, hashId, className),\n        onClose: () => {\n          onClose?.();\n          resolve();\n        },\n      });\n\n      // Return close function\n      return () => {\n        close(mergedKey);\n      };\n    });\n  };\n\n  // >>> destroy\n  const destroy = (key?: Key) => {\n    if (key !== undefined) {\n      close(key);\n    } else {\n      holderRef.value?.destroy();\n    }\n  };\n\n  const wrapAPI = {\n    open,\n    destroy,\n  } as MessageInstance;\n\n  const keys: NoticeType[] = ['info', 'success', 'warning', 'error', 'loading'];\n  keys.forEach(type => {\n    const typeOpen: TypeOpen = (jointContent, duration, onClose) => {\n      let config: ArgsProps;\n      if (jointContent && typeof jointContent === 'object' && 'content' in jointContent) {\n        config = jointContent;\n      } else {\n        config = {\n          content: jointContent as VNode,\n        };\n      }\n\n      // Params\n      let mergedDuration: number | undefined;\n      let mergedOnClose: VoidFunction | undefined;\n      if (typeof duration === 'function') {\n        mergedOnClose = duration;\n      } else {\n        mergedDuration = duration;\n        mergedOnClose = onClose;\n      }\n\n      const mergedConfig = {\n        onClose: mergedOnClose,\n        duration: mergedDuration,\n        ...config,\n        type,\n      };\n\n      return open(mergedConfig);\n    };\n\n    wrapAPI[type] = typeOpen;\n  });\n\n  // ============================== Return ===============================\n  return [wrapAPI, () => <Holder key={holderKey} {...messageConfig} ref={holderRef} />] as const;\n}\n\nexport default function useMessage(messageConfig?: ConfigOptions) {\n  return useInternalMessage(messageConfig);\n}\n"
  },
  {
    "path": "components/modal/ConfirmDialog.tsx",
    "content": "import CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled';\nimport classNames from '../_util/classNames';\nimport type { ModalFuncProps, ModalLocale } from './Modal';\nimport Dialog from './Modal';\nimport ActionButton from '../_util/ActionButton';\nimport { defineComponent } from 'vue';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport { getTransitionName } from '../_util/transition';\nimport warning from '../_util/warning';\n\ninterface ConfirmDialogProps extends ModalFuncProps {\n  afterClose?: () => void;\n  close?: (...args: any[]) => void;\n  autoFocusButton?: null | 'ok' | 'cancel';\n  rootPrefixCls: string;\n  iconPrefixCls?: string;\n\n  /** @private Internal Usage. Do not override this */\n  locale?: ModalLocale;\n}\n\nfunction renderSomeContent(someContent: any) {\n  if (typeof someContent === 'function') {\n    return someContent();\n  }\n  return someContent;\n}\n\nexport default defineComponent<ConfirmDialogProps>({\n  name: 'ConfirmDialog',\n  inheritAttrs: false,\n  props: [\n    'icon',\n    'onCancel',\n    'onOk',\n    'close',\n    'closable',\n    'zIndex',\n    'afterClose',\n    'visible',\n    'open',\n    'keyboard',\n    'centered',\n    'getContainer',\n    'maskStyle',\n    'okButtonProps',\n    'cancelButtonProps',\n    'okType',\n    'prefixCls',\n    'okCancel',\n    'width',\n    'mask',\n    'maskClosable',\n    'okText',\n    'cancelText',\n    'autoFocusButton',\n    'transitionName',\n    'maskTransitionName',\n    'type',\n    'title',\n    'content',\n    'direction',\n    'rootPrefixCls',\n    'bodyStyle',\n    'closeIcon',\n    'modalRender',\n    'focusTriggerAfterClose',\n    'wrapClassName',\n    'confirmPrefixCls',\n    'footer',\n  ] as any,\n  setup(props, { attrs }) {\n    const [locale] = useLocaleReceiver('Modal');\n\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        props.visible === undefined,\n        'Modal',\n        `\\`visible\\` is deprecated, please use \\`open\\` instead.`,\n      );\n    }\n    return () => {\n      const {\n        icon,\n        onCancel,\n        onOk,\n        close,\n        okText,\n        closable = false,\n        zIndex,\n        afterClose,\n        keyboard,\n        centered,\n        getContainer,\n        maskStyle,\n        okButtonProps,\n        cancelButtonProps,\n        okCancel,\n        width = 416,\n        mask = true,\n        maskClosable = false,\n        type,\n        open,\n        title,\n        content,\n        direction,\n        closeIcon,\n        modalRender,\n        focusTriggerAfterClose,\n        rootPrefixCls,\n        bodyStyle,\n        wrapClassName,\n        footer,\n      } = props;\n\n      // Icon\n      let mergedIcon = icon;\n\n      // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n      if (!icon && icon !== null) {\n        switch (type) {\n          case 'info':\n            mergedIcon = <InfoCircleFilled />;\n            break;\n\n          case 'success':\n            mergedIcon = <CheckCircleFilled />;\n            break;\n\n          case 'error':\n            mergedIcon = <CloseCircleFilled />;\n            break;\n\n          default:\n            mergedIcon = <ExclamationCircleFilled />;\n        }\n      }\n      const okType = props.okType || 'primary';\n      const prefixCls = props.prefixCls || 'ant-modal';\n      const contentPrefixCls = `${prefixCls}-confirm`;\n      const style = attrs.style || {};\n      const mergedOkCancel = okCancel ?? type === 'confirm';\n      const autoFocusButton =\n        props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n\n      const confirmPrefixCls = `${prefixCls}-confirm`;\n\n      const classString = classNames(\n        confirmPrefixCls,\n        `${confirmPrefixCls}-${props.type}`,\n        { [`${confirmPrefixCls}-rtl`]: direction === 'rtl' },\n        attrs.class,\n      );\n\n      const mergedLocal = locale.value;\n\n      const cancelButton = mergedOkCancel && (\n        <ActionButton\n          actionFn={onCancel}\n          close={close}\n          autofocus={autoFocusButton === 'cancel'}\n          buttonProps={cancelButtonProps}\n          prefixCls={`${rootPrefixCls}-btn`}\n        >\n          {renderSomeContent(props.cancelText) || mergedLocal.cancelText}\n        </ActionButton>\n      );\n      return (\n        <Dialog\n          prefixCls={prefixCls}\n          class={classString}\n          wrapClassName={classNames(\n            { [`${confirmPrefixCls}-centered`]: !!centered },\n            wrapClassName,\n          )}\n          onCancel={e => close?.({ triggerCancel: true }, e)}\n          open={open}\n          title=\"\"\n          footer=\"\"\n          transitionName={getTransitionName(rootPrefixCls, 'zoom', props.transitionName)}\n          maskTransitionName={getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName)}\n          mask={mask}\n          maskClosable={maskClosable}\n          maskStyle={maskStyle}\n          style={style}\n          bodyStyle={bodyStyle}\n          width={width}\n          zIndex={zIndex}\n          afterClose={afterClose}\n          keyboard={keyboard}\n          centered={centered}\n          getContainer={getContainer}\n          closable={closable}\n          closeIcon={closeIcon}\n          modalRender={modalRender}\n          focusTriggerAfterClose={focusTriggerAfterClose}\n        >\n          <div class={`${contentPrefixCls}-body-wrapper`}>\n            <div class={`${contentPrefixCls}-body`}>\n              {renderSomeContent(mergedIcon)}\n              {title === undefined ? null : (\n                <span class={`${contentPrefixCls}-title`}>{renderSomeContent(title)}</span>\n              )}\n              <div class={`${contentPrefixCls}-content`}>{renderSomeContent(content)}</div>\n            </div>\n            {footer !== undefined ? (\n              renderSomeContent(footer)\n            ) : (\n              <div class={`${contentPrefixCls}-btns`}>\n                {cancelButton}\n                <ActionButton\n                  type={okType}\n                  actionFn={onOk}\n                  close={close}\n                  autofocus={autoFocusButton === 'ok'}\n                  buttonProps={okButtonProps}\n                  prefixCls={`${rootPrefixCls}-btn`}\n                >\n                  {renderSomeContent(okText) ||\n                    (mergedOkCancel ? mergedLocal.okText : mergedLocal.justOkText)}\n                </ActionButton>\n              </div>\n            )}\n          </div>\n        </Dialog>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/modal/Modal.tsx",
    "content": "import type { ExtractPropTypes, CSSProperties, PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport Dialog from '../vc-dialog';\nimport PropTypes from '../_util/vue-types';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport Button from '../button';\nimport type { ButtonProps as ButtonPropsType, LegacyButtonType } from '../button/buttonTypes';\nimport { convertLegacyProps } from '../button/buttonTypes';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport type { Direction } from '../config-provider';\nimport type { VueNode } from '../_util/type';\nimport { objectType } from '../_util/type';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { getTransitionName } from '../_util/transition';\nimport warning from '../_util/warning';\nimport useStyle from './style';\n\ntype MousePosition = { x: number; y: number } | null;\n\nlet mousePosition: MousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nconst getClickPosition = (e: MouseEvent) => {\n  mousePosition = {\n    x: e.pageX,\n    y: e.pageY,\n  };\n  // 100ms 内发生过点击事件，则从点击位置动画展示\n  // 否则直接 zoom 展示\n  // 这样可以兼容非点击方式展开\n  setTimeout(() => (mousePosition = null), 100);\n};\n\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n  addEventListener(document.documentElement, 'click', getClickPosition, true);\n}\n\nexport const modalProps = () => ({\n  prefixCls: String,\n  /** @deprecated Please use `open` instead. */\n  visible: { type: Boolean, default: undefined },\n  open: { type: Boolean, default: undefined },\n  confirmLoading: { type: Boolean, default: undefined },\n  title: PropTypes.any,\n  closable: { type: Boolean, default: undefined },\n  closeIcon: PropTypes.any,\n  onOk: Function as PropType<(e: MouseEvent) => void>,\n  onCancel: Function as PropType<(e: MouseEvent) => void>,\n  'onUpdate:visible': Function as PropType<(visible: boolean) => void>,\n  'onUpdate:open': Function as PropType<(open: boolean) => void>,\n  onChange: Function as PropType<(open: boolean) => void>,\n  afterClose: Function as PropType<() => void>,\n  centered: { type: Boolean, default: undefined },\n  width: [String, Number],\n  footer: PropTypes.any,\n  okText: PropTypes.any,\n  okType: String as PropType<LegacyButtonType>,\n  cancelText: PropTypes.any,\n  icon: PropTypes.any,\n  maskClosable: { type: Boolean, default: undefined },\n  forceRender: { type: Boolean, default: undefined },\n  okButtonProps: objectType<ButtonPropsType>(),\n  cancelButtonProps: objectType<ButtonPropsType>(),\n  destroyOnClose: { type: Boolean, default: undefined },\n  wrapClassName: String,\n  maskTransitionName: String,\n  transitionName: String,\n  getContainer: {\n    type: [String, Function, Boolean, Object] as PropType<\n      string | HTMLElement | getContainerFunc | false\n    >,\n    default: undefined,\n  },\n  zIndex: Number,\n  bodyStyle: objectType<CSSProperties>(),\n  maskStyle: objectType<CSSProperties>(),\n  mask: { type: Boolean, default: undefined },\n  keyboard: { type: Boolean, default: undefined },\n  wrapProps: Object,\n  focusTriggerAfterClose: { type: Boolean, default: undefined },\n  modalRender: Function as PropType<(arg: { originVNode: VueNode }) => VueNode>,\n  mousePosition: objectType<MousePosition>(),\n});\n\nexport type ModalProps = Partial<ExtractPropTypes<ReturnType<typeof modalProps>>>;\n\nexport interface ModalFuncProps {\n  prefixCls?: string;\n  class?: string;\n  open?: boolean;\n  title?: string | (() => VueNode) | VueNode;\n  footer?: string | (() => VueNode) | VueNode;\n  closable?: boolean;\n  content?: string | (() => VueNode) | VueNode;\n  // TODO: find out exact types\n  onOk?: (...args: any[]) => any;\n  onCancel?: (...args: any[]) => any;\n  afterClose?: () => void;\n  okButtonProps?: ButtonPropsType;\n  cancelButtonProps?: ButtonPropsType;\n  centered?: boolean;\n  width?: string | number;\n  okText?: string | (() => VueNode) | VueNode;\n  okType?: LegacyButtonType;\n  cancelText?: string | (() => VueNode) | VueNode;\n  icon?: (() => VueNode) | VueNode;\n  wrapClassName?: String;\n  /* Deprecated */\n  iconType?: string;\n  mask?: boolean;\n  maskClosable?: boolean;\n  zIndex?: number;\n  okCancel?: boolean;\n  style?: CSSProperties | string;\n  maskStyle?: CSSProperties;\n  type?: 'info' | 'success' | 'error' | 'warn' | 'warning' | 'confirm';\n  keyboard?: boolean;\n  getContainer?: string | HTMLElement | getContainerFunc | false | null;\n  autoFocusButton?: null | 'ok' | 'cancel';\n  transitionName?: string;\n  maskTransitionName?: string;\n  direction?: Direction;\n  bodyStyle?: CSSProperties;\n  closeIcon?: string | (() => VueNode) | VueNode;\n  modalRender?: (arg: { originVNode: VueNode }) => VueNode;\n  focusTriggerAfterClose?: boolean;\n\n  /** @deprecated please use `appContext` instead */\n  parentContext?: any;\n  appContext?: any;\n\n  /** @deprecated please use `open` instead */\n  visible?: boolean;\n}\n\ntype getContainerFunc = () => HTMLElement;\n\nexport type ModalFunc = (props: ModalFuncProps) => {\n  destroy: () => void;\n  update: (newConfig: ModalFuncProps) => void;\n};\n\nexport interface ModalLocale {\n  okText: string;\n  cancelText: string;\n  justOkText: string;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AModal',\n  inheritAttrs: false,\n  props: initDefaultProps(modalProps(), {\n    width: 520,\n    confirmLoading: false,\n    okType: 'primary',\n  }),\n  setup(props, { emit, slots, attrs }) {\n    const [locale] = useLocaleReceiver('Modal');\n    const { prefixCls, rootPrefixCls, direction, getPopupContainer } = useConfigInject(\n      'modal',\n      props,\n    );\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    warning(\n      props.visible === undefined,\n      'Modal',\n      `\\`visible\\` will be removed in next major version, please use \\`open\\` instead.`,\n    );\n    const handleCancel = (e: MouseEvent) => {\n      emit('update:visible', false);\n      emit('update:open', false);\n      emit('cancel', e);\n      emit('change', false);\n    };\n\n    const handleOk = (e: MouseEvent) => {\n      emit('ok', e);\n    };\n\n    const renderFooter = () => {\n      const {\n        okText = slots.okText?.(),\n        okType,\n        cancelText = slots.cancelText?.(),\n        confirmLoading,\n      } = props;\n      return (\n        <>\n          <Button onClick={handleCancel} {...props.cancelButtonProps}>\n            {cancelText || locale.value.cancelText}\n          </Button>\n          <Button\n            {...convertLegacyProps(okType)}\n            loading={confirmLoading}\n            onClick={handleOk}\n            {...props.okButtonProps}\n          >\n            {okText || locale.value.okText}\n          </Button>\n        </>\n      );\n    };\n    return () => {\n      const {\n        prefixCls: customizePrefixCls,\n        visible,\n        open,\n        wrapClassName,\n        centered,\n        getContainer,\n        closeIcon = slots.closeIcon?.(),\n        focusTriggerAfterClose = true,\n        ...restProps\n      } = props;\n\n      const wrapClassNameExtended = classNames(wrapClassName, {\n        [`${prefixCls.value}-centered`]: !!centered,\n        [`${prefixCls.value}-wrap-rtl`]: direction.value === 'rtl',\n      });\n      return wrapSSR(\n        <Dialog\n          {...restProps}\n          {...attrs}\n          rootClassName={hashId.value}\n          class={classNames(hashId.value, attrs.class)}\n          getContainer={getContainer || getPopupContainer?.value}\n          prefixCls={prefixCls.value}\n          wrapClassName={wrapClassNameExtended}\n          visible={open ?? visible}\n          onClose={handleCancel}\n          focusTriggerAfterClose={focusTriggerAfterClose}\n          transitionName={getTransitionName(rootPrefixCls.value, 'zoom', props.transitionName)}\n          maskTransitionName={getTransitionName(\n            rootPrefixCls.value,\n            'fade',\n            props.maskTransitionName,\n          )}\n          mousePosition={restProps.mousePosition ?? mousePosition}\n          v-slots={{\n            ...slots,\n            footer: slots.footer || renderFooter,\n            closeIcon: () => {\n              return (\n                <span class={`${prefixCls.value}-close-x`}>\n                  {closeIcon || <CloseOutlined class={`${prefixCls.value}-close-icon`} />}\n                </span>\n              );\n            },\n          }}\n        ></Dialog>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/modal/__tests__/Modal.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Modal from '..';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { asyncExpect } from '../../../tests/utils';\njest.mock('../../_util/Portal');\nconst ModalTester = {\n  props: ['footer', 'visible'],\n  methods: {\n    getContainer() {\n      return this.$refs.container;\n    },\n  },\n  render() {\n    const modalProps = {\n      ...this.$props,\n      getContainer: this.getContainer,\n    };\n    return (\n      <div>\n        <div ref=\"container\" />\n        <Modal {...modalProps}>Here is content of Modal</Modal>\n      </div>\n    );\n  },\n};\n\ndescribe('Modal', () => {\n  mountTest(Modal);\n  it('render correctly', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <ModalTester visible />;\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n    // https://github.com/vuejs/vue-test-utils/issues/624\n    const wrapper1 = mount(ModalTester, {\n      sync: false,\n      attachTo: 'body',\n    });\n    wrapper1.setProps({ visible: true });\n    await asyncExpect(() => {\n      expect(wrapper1.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render without footer', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <ModalTester visible footer={null} />;\n        },\n      },\n      { attachTo: 'body', sync: true },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('should work with getContainer=false', async () => {\n    const wrapper1 = mount(Modal, {\n      sync: false,\n      props: {\n        getContainer: false,\n        visible: true,\n      },\n    });\n    await asyncExpect(() => {\n      expect(wrapper1.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/modal/__tests__/__snapshots__/Modal.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Modal render correctly 1`] = `\n<div>\n  <div></div>\n  <div class=\"ant-modal-root\">\n    <div class=\"ant-modal-mask ant-fade-enter ant-fade-enter-prepare ant-fade-enter-start\"></div>\n    <div tabindex=\"-1\" class=\"ant-modal-wrap\" role=\"dialog\">\n      <div style=\"width: 520px;\" class=\"ant-modal ant-zoom-enter ant-zoom-enter-prepare ant-zoom-enter-start\" role=\"document\">\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n        <div class=\"ant-modal-content\"><button type=\"button\" aria-label=\"Close\" class=\"ant-modal-close\"><span class=\"ant-modal-close-x\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close ant-modal-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></button>\n          <!---->\n          <div class=\"ant-modal-body\">Here is content of Modal</div>\n          <div class=\"ant-modal-footer\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Cancel</span>\n            </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>OK</span>\n            </button></div>\n        </div>\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Modal render correctly 2`] = `\n<div>\n  <div style=\"overflow: hidden; overflow-x: hidden; overflow-y: hidden;\" class=\"ant-scrolling-effect\"></div>\n  <div class=\"ant-modal-root\">\n    <div class=\"ant-modal-mask ant-fade-enter ant-fade-enter-prepare ant-fade-enter-start\"></div>\n    <div tabindex=\"-1\" class=\"ant-modal-wrap\" role=\"dialog\">\n      <div style=\"width: 520px;\" class=\"ant-modal ant-zoom-enter ant-zoom-enter-prepare ant-zoom-enter-start\" role=\"document\">\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n        <div class=\"ant-modal-content\"><button type=\"button\" aria-label=\"Close\" class=\"ant-modal-close\"><span class=\"ant-modal-close-x\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close ant-modal-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></button>\n          <!---->\n          <div class=\"ant-modal-body\">Here is content of Modal</div>\n          <div class=\"ant-modal-footer\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n              <!----><span>Cancel</span>\n            </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n              <!----><span>OK</span>\n            </button></div>\n        </div>\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Modal render without footer 1`] = `\n<div>\n  <div></div>\n  <div class=\"ant-modal-root\">\n    <div class=\"ant-modal-mask ant-fade-enter ant-fade-enter-prepare ant-fade-enter-start\"></div>\n    <div tabindex=\"-1\" class=\"ant-modal-wrap\" role=\"dialog\">\n      <div style=\"width: 520px;\" class=\"ant-modal ant-zoom-enter ant-zoom-enter-prepare ant-zoom-enter-start\" role=\"document\">\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n        <div class=\"ant-modal-content\"><button type=\"button\" aria-label=\"Close\" class=\"ant-modal-close\"><span class=\"ant-modal-close-x\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close ant-modal-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></button>\n          <!---->\n          <div class=\"ant-modal-body\">Here is content of Modal</div>\n          <!---->\n        </div>\n        <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Modal should work with getContainer=false 1`] = `\n<div class=\"ant-modal-root\">\n  <div class=\"ant-modal-mask ant-fade-enter ant-fade-enter-prepare ant-fade-enter-start\"></div>\n  <div tabindex=\"-1\" class=\"ant-modal-wrap\" role=\"dialog\">\n    <div style=\"width: 520px;\" class=\"ant-modal ant-zoom-enter ant-zoom-enter-prepare ant-zoom-enter-start\" role=\"document\">\n      <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n      <div class=\"ant-modal-content\"><button type=\"button\" aria-label=\"Close\" class=\"ant-modal-close\"><span class=\"ant-modal-close-x\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close ant-modal-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></button>\n        <!---->\n        <div class=\"ant-modal-body\">\n          <!---->\n        </div>\n        <div class=\"ant-modal-footer\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n            <!----><span>Cancel</span>\n          </button><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n            <!----><span>OK</span>\n          </button></div>\n      </div>\n      <div tabindex=\"0\" style=\"width: 0px; height: 0px; overflow: hidden; outline: none;\" aria-hidden=\"true\"></div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/modal/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/modal/demo/async.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal with async logic</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/basic.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/button-props.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal with customized button props</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/confirm.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Confirm</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>With promise</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>Delete</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>With extra props</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/confirm-promise.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Confirm</span>\n</button>\n`;\n\nexports[`renders ./components/modal/demo/confirm-router.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Confirm</span>\n</button>\n`;\n\nexports[`renders ./components/modal/demo/footer.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal with customized footer</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/fullscreen.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/hook-modal.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Confirm</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>With promise</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>Delete</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n      <!----><span>With extra props</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/info.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Info</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Success</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Error</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Warning</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/locale.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Modal</span>\n  </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Confirm</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/manual.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Open modal to close in 5s</span>\n</button>\n`;\n\nexports[`renders ./components/modal/demo/modal-render.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/position.vue correctly 1`] = `\n<div id=\"components-modal-demo-position\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Display a modal dialog at 20px to Top</span>\n  </button>\n  <!----><br><br><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Vertically centered modal dialog</span>\n  </button>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/modal/demo/width.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Open Modal of 1000px width</span>\n  </button>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/modal/__tests__/confirm.test.js",
    "content": "import Modal from '..';\nimport { sleep } from '../../../tests/utils';\nconst { confirm } = Modal;\njest.mock('../../_util/Portal');\n\ndescribe('Modal.confirm triggers callbacks correctly', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n  document.createDocumentFragment = () => {\n    const container = document.createElement('div');\n    document.body.appendChild(container);\n    return container;\n  };\n  afterEach(() => {\n    errorSpy.mockReset();\n    document.body.innerHTML = '';\n    Modal.destroyAll();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n\n  function $$(className) {\n    return document.body.querySelectorAll(className);\n  }\n\n  function open(args) {\n    jest.useFakeTimers();\n    confirm({\n      title: 'Want to delete these items?',\n      content: 'some descriptions',\n      ...args,\n    });\n    jest.runAllTimers();\n    jest.useRealTimers();\n  }\n\n  it('trigger onCancel once when click on cancel button', async () => {\n    const onCancel = jest.fn();\n    const onOk = jest.fn();\n    open({\n      onCancel,\n      onOk,\n    });\n    await sleep();\n    // first Modal\n    $$('.ant-btn')[0].click();\n    expect(onCancel.mock.calls.length).toBe(1);\n    expect(onOk.mock.calls.length).toBe(0);\n  });\n\n  it('trigger onOk once when click on ok button', async () => {\n    const onCancel = jest.fn();\n    const onOk = jest.fn();\n    open({\n      onCancel,\n      onOk,\n    });\n    await sleep();\n    // second Modal\n    $$('.ant-btn-primary')[0].click();\n    expect(onCancel.mock.calls.length).toBe(0);\n    expect(onOk.mock.calls.length).toBe(1);\n  });\n\n  it('should allow Modal.comfirm without onCancel been set', async () => {\n    open();\n    await sleep();\n    // Third Modal\n    $$('.ant-btn')[0].click();\n    expect(errorSpy).not.toHaveBeenCalled();\n  });\n\n  it('should allow Modal.comfirm without onOk been set', async () => {\n    open();\n    await sleep();\n    // Fourth Modal\n    $$('.ant-btn-primary')[0].click();\n    expect(errorSpy).not.toHaveBeenCalled();\n  });\n\n  it('ok only', async () => {\n    open({ okCancel: false });\n    await sleep();\n    expect($$('.ant-btn')).toHaveLength(1);\n    expect($$('.ant-btn')[0].innerHTML).toContain('OK');\n  });\n\n  it('allows extra props on buttons', async () => {\n    open({\n      okButtonProps: { disabled: true },\n      cancelButtonProps: { 'data-test': 'baz' },\n    });\n    await sleep();\n    expect($$('.ant-btn')).toHaveLength(2);\n    expect($$('.ant-btn')[0].attributes['data-test'].value).toBe('baz');\n    expect($$('.ant-btn')[1].disabled).toBe(true);\n  });\n\n  it('trigger onCancel once when click on cancel button', async () => {\n    const onCancel = jest.fn();\n    const onOk = jest.fn();\n    await open({\n      title: 'title',\n      content: 'content',\n      onCancel,\n      onOk,\n    });\n    await sleep();\n    $$('.ant-btn')[0].click();\n    expect(onCancel.mock.calls.length).toBe(1);\n    expect(onOk.mock.calls.length).toBe(0);\n  });\n});\n"
  },
  {
    "path": "components/modal/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('modal');\n"
  },
  {
    "path": "components/modal/confirm.tsx",
    "content": "import { createVNode, render as vueRender } from 'vue';\nimport ConfirmDialog from './ConfirmDialog';\nimport type { ModalFuncProps } from './Modal';\nimport ConfigProvider, { globalConfigForApi } from '../config-provider';\nimport omit from '../_util/omit';\nimport { triggerVNodeUpdate } from '../_util/vnode';\n\nimport { getConfirmLocale } from './locale';\nimport destroyFns from './destroyFns';\n\ntype ConfigUpdate = ModalFuncProps | ((prevConfig: ModalFuncProps) => ModalFuncProps);\nexport type ModalStaticFunctions<T = ModalFunc> = Record<NonNullable<ModalFuncProps['type']>, T>;\n\nexport type ModalFunc = (props: ModalFuncProps) => {\n  destroy: () => void;\n  update: (configUpdate: ConfigUpdate) => void;\n};\n\nconst confirm = (config: ModalFuncProps) => {\n  const container = document.createDocumentFragment();\n  let currentConfig = {\n    ...omit(config, ['parentContext', 'appContext']),\n    close,\n    open: true,\n  } as any;\n  let confirmDialogInstance = null;\n  function destroy(...args: any[]) {\n    if (confirmDialogInstance) {\n      // destroy\n      vueRender(null, container as any);\n      confirmDialogInstance = null;\n    }\n    const triggerCancel = args.some(param => param && param.triggerCancel);\n    if (config.onCancel && triggerCancel) {\n      config.onCancel(() => {}, ...args.slice(1));\n    }\n    for (let i = 0; i < destroyFns.length; i++) {\n      const fn = destroyFns[i];\n      if (fn === close) {\n        destroyFns.splice(i, 1);\n        break;\n      }\n    }\n  }\n\n  function close(this: typeof close, ...args: any[]) {\n    currentConfig = {\n      ...currentConfig,\n      open: false,\n      afterClose: () => {\n        if (typeof config.afterClose === 'function') {\n          config.afterClose();\n        }\n        destroy.apply(this, args);\n      },\n    };\n    // Legacy support\n    if (currentConfig.visible) {\n      delete currentConfig.visible;\n    }\n    update(currentConfig);\n  }\n  function update(configUpdate: ConfigUpdate) {\n    if (typeof configUpdate === 'function') {\n      currentConfig = configUpdate(currentConfig);\n    } else {\n      currentConfig = {\n        ...currentConfig,\n        ...configUpdate,\n      };\n    }\n    if (confirmDialogInstance) {\n      triggerVNodeUpdate(confirmDialogInstance, currentConfig, container);\n    }\n  }\n\n  const Wrapper = (p: ModalFuncProps) => {\n    const global = globalConfigForApi;\n    const rootPrefixCls = global.prefixCls;\n    const prefixCls = p.prefixCls || `${rootPrefixCls}-modal`;\n    const iconPrefixCls = global.iconPrefixCls;\n    const runtimeLocale = getConfirmLocale();\n    return (\n      <ConfigProvider {...(global as any)} prefixCls={rootPrefixCls}>\n        <ConfirmDialog\n          {...p}\n          rootPrefixCls={rootPrefixCls}\n          prefixCls={prefixCls}\n          iconPrefixCls={iconPrefixCls}\n          locale={runtimeLocale}\n          cancelText={p.cancelText || runtimeLocale.cancelText}\n        ></ConfirmDialog>\n      </ConfigProvider>\n    );\n  };\n  function render(props: ModalFuncProps) {\n    const vm = createVNode(Wrapper, { ...props });\n    vm.appContext = config.parentContext || config.appContext || vm.appContext;\n    vueRender(vm, container as any);\n    return vm;\n  }\n\n  confirmDialogInstance = render(currentConfig);\n  destroyFns.push(close);\n  return {\n    destroy: close,\n    update,\n  };\n};\n\nexport default confirm;\n\nexport function withWarn(props: ModalFuncProps): ModalFuncProps {\n  return {\n    ...props,\n    type: 'warning',\n  };\n}\n\nexport function withInfo(props: ModalFuncProps): ModalFuncProps {\n  return {\n    ...props,\n    type: 'info',\n  };\n}\n\nexport function withSuccess(props: ModalFuncProps): ModalFuncProps {\n  return {\n    ...props,\n    type: 'success',\n  };\n}\n\nexport function withError(props: ModalFuncProps): ModalFuncProps {\n  return {\n    ...props,\n    type: 'error',\n  };\n}\n\nexport function withConfirm(props: ModalFuncProps): ModalFuncProps {\n  return {\n    ...props,\n    type: 'confirm',\n  };\n}\n"
  },
  {
    "path": "components/modal/demo/async.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 异步关闭\n  en-US: Asynchronously close\n---\n\n## zh-CN\n\n点击确定后异步关闭对话框，例如提交表单。\n\n## en-US\n\n\nAsynchronously close a modal dialog when the OK button is pressed.\n\nFor example, you can use this pattern when you submit a form.\n\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal with async logic</a-button>\n    <a-modal v-model:open=\"open\" title=\"Title\" :confirm-loading=\"confirmLoading\" @ok=\"handleOk\">\n      <p>{{ modalText }}</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst modalText = ref<string>('Content of the modal');\nconst open = ref<boolean>(false);\nconst confirmLoading = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = () => {\n  modalText.value = 'The modal will be closed after two seconds';\n  confirmLoading.value = true;\n  setTimeout(() => {\n    open.value = false;\n    confirmLoading.value = false;\n  }, 2000);\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n第一个对话框。\n\n## en-US\n\nBasic modal.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal</a-button>\n    <a-modal v-model:open=\"open\" title=\"Basic Modal\" @ok=\"handleOk\">\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = (e: MouseEvent) => {\n  console.log(e);\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/button-props.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 自定义页脚按钮属性\n  en-US: Customize footer buttons props\n---\n\n## zh-CN\n\n传入 `okButtonProps` 和 `cancelButtonProps` 可分别自定义确定按钮和取消按钮的 props。\n\n## en-US\n\nPassing `okButtonProps` and `cancelButtonProps` can customize the ok button and cancel button props.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal with customized button props</a-button>\n    <a-modal\n      v-model:open=\"open\"\n      title=\"Basic Modal\"\n      :ok-button-props=\"{ disabled: true }\"\n      :cancel-button-props=\"{ disabled: true }\"\n      @ok=\"handleOk\"\n    >\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = (e: MouseEvent) => {\n  console.log(e);\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/confirm-promise.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 确认对话框(promise)\n  en-US: Confirmation modal dialog use promise\n---\n\n## zh-CN\n\n使用 `confirm()` 可以快捷地弹出确认框。onCancel/onOk 返回 promise 可以延迟关闭\n\n## en-US\n\nTo use `confirm()` to popup confirmation modal dialog. Let onCancel/onOk function return a promise object to\ndelay closing the dialog.\n\n</docs>\n\n<template>\n  <a-button @click=\"showConfirm\">Confirm</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { ExclamationCircleOutlined } from '@ant-design/icons-vue';\nimport { createVNode } from 'vue';\nimport { Modal } from 'ant-design-vue';\nconst showConfirm = () => {\n  Modal.confirm({\n    title: 'Do you want to delete these items?',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: 'When clicked the OK button, this dialog will be closed after 1 second',\n    onOk() {\n      return new Promise((resolve, reject) => {\n        setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);\n      }).catch(() => console.log('Oops errors!'));\n    },\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    onCancel() {},\n  });\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/confirm-router.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 销毁确认对话框\n  en-US: destroy confirmation modal dialog\n---\n\n## zh-CN\n\n使用 `Modal.destroyAll()` 可以销毁弹出的确认窗。通常用于路由监听当中，处理路由前进、后退不能销毁确认对话框的问题。\n\n## en-US\n\n`Modal.destroyAll()` could destroy all confirmation modal dialogs. Usually, you can use it in router change event to destroy confirm modal dialog automatically\n\n</docs>\n\n<template>\n  <a-button @click=\"showConfirm\">Confirm</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { ExclamationCircleOutlined } from '@ant-design/icons-vue';\nimport { createVNode } from 'vue';\nimport { Modal } from 'ant-design-vue';\nconst showConfirm = () => {\n  for (let i = 0; i < 3; i += 1) {\n    setTimeout(() => {\n      Modal.confirm({\n        content: 'destroy all',\n        icon: createVNode(ExclamationCircleOutlined),\n        onOk() {\n          return new Promise((resolve, reject) => {\n            setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);\n          }).catch(() => console.log('Oops errors!'));\n        },\n        cancelText: 'Click to destroy all',\n        onCancel() {\n          Modal.destroyAll();\n        },\n      });\n    }, i * 500);\n  }\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/confirm.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 确认对话框\n  en-US: Confirmation modal dialog\n---\n\n## zh-CN\n\n使用 `confirm()` 可以快捷地弹出确认框。\n\n## en-US\n\nTo use `confirm()` to show a confirmation modal dialog.\n\n</docs>\n\n<template>\n  <a-space wrap>\n    <a-button @click=\"showConfirm\">Confirm</a-button>\n    <a-button @click=\"showPromiseConfirm\">With promise</a-button>\n    <a-button type=\"dashed\" @click=\"showDeleteConfirm\">Delete</a-button>\n    <a-button type=\"dashed\" @click=\"showPropsConfirm\">With extra props</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ExclamationCircleOutlined } from '@ant-design/icons-vue';\nimport { createVNode } from 'vue';\nimport { Modal } from 'ant-design-vue';\nconst showConfirm = () => {\n  Modal.confirm({\n    title: 'Do you Want to delete these items?',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: createVNode('div', { style: 'color:red;' }, 'Some descriptions'),\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n    class: 'test',\n  });\n};\nconst showDeleteConfirm = () => {\n  Modal.confirm({\n    title: 'Are you sure delete this task?',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: 'Some descriptions',\n    okText: 'Yes',\n    okType: 'danger',\n    cancelText: 'No',\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n  });\n};\nconst showPropsConfirm = () => {\n  Modal.confirm({\n    title: 'Are you sure delete this task?',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: 'Some descriptions',\n    okText: 'Yes',\n    okType: 'danger',\n    okButtonProps: {\n      disabled: true,\n    },\n    cancelText: 'No',\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n  });\n};\n\nfunction showPromiseConfirm() {\n  Modal.confirm({\n    title: 'Do you want to delete these items?',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: 'When clicked the OK button, this dialog will be closed after 1 second',\n    async onOk() {\n      try {\n        return await new Promise((resolve, reject) => {\n          setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);\n        });\n      } catch {\n        return console.log('Oops errors!');\n      }\n    },\n    onCancel() {},\n  });\n}\n</script>\n"
  },
  {
    "path": "components/modal/demo/footer.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义页脚\n  en-US: Customized Footer\n---\n\n## zh-CN\n\n更复杂的例子，自定义了页脚的按钮，点击提交后进入 loading 状态，完成后关闭。\n不需要默认确定取消按钮时，你可以把 `footer` 设为 `null`。\n\n## en-US\n\nA more complex example which define a customized footer button bar,\nthe dialog will change to loading state after clicking submit button, when the loading is over,\nthe modal dialog will be closed.\nYou could set `footer` to `null` if you don't need default footer buttons.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal with customized footer</a-button>\n    <a-modal v-model:open=\"open\" title=\"Title\" @ok=\"handleOk\">\n      <template #footer>\n        <a-button key=\"back\" @click=\"handleCancel\">Return</a-button>\n        <a-button key=\"submit\" type=\"primary\" :loading=\"loading\" @click=\"handleOk\">Submit</a-button>\n      </template>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst loading = ref<boolean>(false);\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = () => {\n  loading.value = true;\n  setTimeout(() => {\n    loading.value = false;\n    open.value = false;\n  }, 2000);\n};\n\nconst handleCancel = () => {\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/fullscreen.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 全屏\n  en-US: full screen\n---\n\n## zh-CN\n\n使用样式定义一个全屏弹窗\n\n## en-US\n\nFull screen by custom style.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal</a-button>\n    <a-modal\n      v-model:open=\"open\"\n      title=\"Basic Modal\"\n      width=\"100%\"\n      wrap-class-name=\"full-modal\"\n      @ok=\"handleOk\"\n    >\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = (e: MouseEvent) => {\n  console.log(e);\n  open.value = false;\n};\n</script>\n<style lang=\"less\">\n.full-modal {\n  .ant-modal {\n    max-width: 100%;\n    top: 0;\n    padding-bottom: 0;\n    margin: 0;\n  }\n  .ant-modal-content {\n    display: flex;\n    flex-direction: column;\n    height: calc(100vh);\n  }\n  .ant-modal-body {\n    flex: 1;\n  }\n}\n</style>\n"
  },
  {
    "path": "components/modal/demo/hook-modal.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 使用useModal获取上下文\n  en-US: Use useModal to get context\n---\n\n## zh-CN\n\n通过 `Modal.useModal` 创建支持读取 context 的 `contextHolder`。\n\n## en-US\n\nUse `Modal.useModal` to get `contextHolder` with context accessible issue.\n\n</docs>\n\n<template>\n  <a-space wrap>\n    <a-button @click=\"showConfirm\">Confirm</a-button>\n    <a-button @click=\"showPromiseConfirm\">With promise</a-button>\n    <a-button type=\"dashed\" @click=\"showDeleteConfirm\">Delete</a-button>\n    <a-button type=\"dashed\" @click=\"showPropsConfirm\">With extra props</a-button>\n    <contextHolder />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Modal } from 'ant-design-vue';\nimport { ExclamationCircleOutlined } from '@ant-design/icons-vue';\nimport { h } from 'vue';\nconst [modal, contextHolder] = Modal.useModal();\nconst showConfirm = () => {\n  modal.confirm({\n    title: 'Do you Want to delete these items?',\n    icon: h(ExclamationCircleOutlined),\n    content: h('div', { style: 'color:red;' }, 'Some descriptions'),\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n    class: 'test',\n  });\n};\nconst showDeleteConfirm = () => {\n  modal.confirm({\n    title: 'Are you sure delete this task?',\n    icon: h(ExclamationCircleOutlined),\n    content: 'Some descriptions',\n    okText: 'Yes',\n    okType: 'danger',\n    cancelText: 'No',\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n  });\n};\nconst showPropsConfirm = () => {\n  modal.confirm({\n    title: 'Are you sure delete this task?',\n    icon: h(ExclamationCircleOutlined),\n    content: 'Some descriptions',\n    okText: 'Yes',\n    okType: 'danger',\n    okButtonProps: {\n      disabled: true,\n    },\n    cancelText: 'No',\n    onOk() {\n      console.log('OK');\n    },\n    onCancel() {\n      console.log('Cancel');\n    },\n  });\n};\n\nfunction showPromiseConfirm() {\n  modal.confirm({\n    title: 'Do you want to delete these items?',\n    icon: h(ExclamationCircleOutlined),\n    content: 'When clicked the OK button, this dialog will be closed after 1 second',\n    async onOk() {\n      try {\n        return await new Promise((resolve, reject) => {\n          setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);\n        });\n      } catch {\n        return console.log('Oops errors!');\n      }\n    },\n    onCancel() {},\n  });\n}\n</script>\n"
  },
  {
    "path": "components/modal/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <async />\n    <custom-footer />\n    <confirm />\n    <info />\n    <HookModal />\n    <locale />\n    <manual />\n    <position />\n    <confirm-router />\n    <confirm-promise />\n    <width />\n    <button-props />\n    <fullscreen />\n    <modalRenderVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Async from './async.vue';\nimport Footer from './footer.vue';\nimport Confirm from './confirm.vue';\nimport Info from './info.vue';\nimport Locale from './locale.vue';\nimport Manual from './manual.vue';\nimport Position from './position.vue';\nimport ConfirmRouter from './confirm-router.vue';\nimport ConfirmPromise from './confirm-promise.vue';\nimport Width from './width.vue';\nimport Fullscreen from './fullscreen.vue';\nimport ButtonProps from './button-props.vue';\nimport modalRenderVue from './modal-render.vue';\nimport HookModal from './hook-modal.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Async,\n    CustomFooter: Footer,\n    Confirm,\n    Info,\n    Locale,\n    Manual,\n    Position,\n    ConfirmRouter,\n    ConfirmPromise,\n    Width,\n    ButtonProps,\n    Fullscreen,\n    modalRenderVue,\n    HookModal,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style>\n[id^='components-modal-demo'] .ant-btn {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/modal/demo/info.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 信息提示\n  en-US: Information modal dialog\n---\n\n## zh-CN\n\n各种类型的信息提示，只提供一个按钮用于关闭。\n\n## en-US\n\nIn the various types of information modal dialog, only one button to close dialog is provided.\n\n</docs>\n\n<template>\n  <a-space wrap>\n    <a-button @click=\"info\">Info</a-button>\n    <a-button @click=\"success\">Success</a-button>\n    <a-button @click=\"error\">Error</a-button>\n    <a-button @click=\"warning\">Warning</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { Modal } from 'ant-design-vue';\nimport { h } from 'vue';\nconst info = () => {\n  Modal.info({\n    title: 'This is a notification message',\n    content: h('div', {}, [\n      h('p', 'some messages...some messages...'),\n      h('p', 'some messages...some messages...'),\n    ]),\n    onOk() {\n      console.log('ok');\n    },\n  });\n};\nconst success = () => {\n  Modal.success({\n    title: 'This is a success message',\n    content: h('div', {}, [\n      h('p', 'some messages...some messages...'),\n      h('p', 'some messages...some messages...'),\n    ]),\n  });\n};\n\nconst error = () => {\n  Modal.error({\n    title: 'This is an error message',\n    content: 'some messages...some messages...',\n  });\n};\n\nconst warning = () => {\n  Modal.warning({\n    title: 'This is a warning message',\n    content: 'some messages...some messages...',\n  });\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/locale.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 国际化\n  en-US: Internationalization\n---\n\n## zh-CN\n\n设置 `okText` 与 `cancelText` 以自定义按钮文字。\n\n## en-US\n\nTo customize the text of the buttons, you need to set `okText` and `cancelText` props.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Modal</a-button>\n    <a-button @click=\"confirm\">Confirm</a-button>\n    <a-modal v-model:open=\"open\" title=\"Modal\" ok-text=\"确认\" cancel-text=\"取消\" @ok=\"hideModal\">\n      <p>Bla bla ...</p>\n      <p>Bla bla ...</p>\n      <p>Bla bla ...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ExclamationCircleOutlined } from '@ant-design/icons-vue';\nimport { ref, createVNode } from 'vue';\nimport { Modal } from 'ant-design-vue';\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\nconst hideModal = () => {\n  open.value = false;\n};\n\nconst confirm = () => {\n  Modal.confirm({\n    title: 'Confirm',\n    icon: createVNode(ExclamationCircleOutlined),\n    content: 'Bla bla ...',\n    okText: '确认',\n    cancelText: '取消',\n  });\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/manual.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 手动更新和移除\n  en-US: Manual to update destroy\n---\n\n## zh-CN\n\n手动更新和关闭 `Modal.method` 方式创建的对话框。\n\n## en-US\n\nManually updating and destroying a modal from `Modal.method`.\n\n</docs>\n\n<template>\n  <a-button @click=\"countDown\">Open modal to close in 5s</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { Modal } from 'ant-design-vue';\nconst countDown = () => {\n  let secondsToGo = 5;\n  const modal = Modal.success({\n    title: 'This is a notification message',\n    content: `This modal will be destroyed after ${secondsToGo} second.`,\n  });\n  const interval = setInterval(() => {\n    secondsToGo -= 1;\n    modal.update({\n      content: `This modal will be destroyed after ${secondsToGo} second.`,\n    });\n  }, 1000);\n  setTimeout(() => {\n    clearInterval(interval);\n    modal.destroy();\n  }, secondsToGo * 1000);\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/modal-render.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 自定义渲染对话框\n  en-US: Custom modal content render\n---\n\n## zh-CN\n\n自定义渲染对话框, 可通过 `vueuse` 来实现拖拽。\n\n## en-US\n\nCustom modal content render. use `vueuse` implements draggable.\n\n</docs>\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal</a-button>\n    <a-modal ref=\"modalRef\" v-model:open=\"open\" :wrap-style=\"{ overflow: 'hidden' }\" @ok=\"handleOk\">\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <template #title>\n        <div ref=\"modalTitleRef\" style=\"width: 100%; cursor: move\">Draggable Modal</div>\n      </template>\n      <template #modalRender=\"{ originVNode }\">\n        <div :style=\"transformStyle\">\n          <component :is=\"originVNode\" />\n        </div>\n      </template>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, computed, CSSProperties, watch, watchEffect } from 'vue';\nimport { useDraggable } from '@vueuse/core';\nconst open = ref<boolean>(false);\nconst modalTitleRef = ref<HTMLElement>(null);\nconst showModal = () => {\n  open.value = true;\n};\nconst { x, y, isDragging } = useDraggable(modalTitleRef);\nconst handleOk = (e: MouseEvent) => {\n  console.log(e);\n  open.value = false;\n};\nconst startX = ref<number>(0);\nconst startY = ref<number>(0);\nconst startedDrag = ref(false);\nconst transformX = ref(0);\nconst transformY = ref(0);\nconst preTransformX = ref(0);\nconst preTransformY = ref(0);\nconst dragRect = ref({ left: 0, right: 0, top: 0, bottom: 0 });\nwatch([x, y], () => {\n  if (!startedDrag.value) {\n    startX.value = x.value;\n    startY.value = y.value;\n    const bodyRect = document.body.getBoundingClientRect();\n    const titleRect = modalTitleRef.value.getBoundingClientRect();\n    dragRect.value.right = bodyRect.width - titleRect.width;\n    dragRect.value.bottom = bodyRect.height - titleRect.height;\n    preTransformX.value = transformX.value;\n    preTransformY.value = transformY.value;\n  }\n  startedDrag.value = true;\n});\nwatch(isDragging, () => {\n  if (!isDragging) {\n    startedDrag.value = false;\n  }\n});\n\nwatchEffect(() => {\n  if (startedDrag.value) {\n    transformX.value =\n      preTransformX.value +\n      Math.min(Math.max(dragRect.value.left, x.value), dragRect.value.right) -\n      startX.value;\n    transformY.value =\n      preTransformY.value +\n      Math.min(Math.max(dragRect.value.top, y.value), dragRect.value.bottom) -\n      startY.value;\n  }\n});\nconst transformStyle = computed<CSSProperties>(() => {\n  return {\n    transform: `translate(${transformX.value}px, ${transformY.value}px)`,\n  };\n});\n</script>\n"
  },
  {
    "path": "components/modal/demo/position.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 自定义位置\n  en-US: To customize the position of modal\n---\n\n## zh-CN\n\n使用 `centered` 或类似 `style.top` 的样式来设置对话框位置。\n\n## en-US\n\nYou can use `centered`,`style.top` or other styles to set position of modal dialog.\n\n</docs>\n\n<template>\n  <div id=\"components-modal-demo-position\">\n    <a-button type=\"primary\" @click=\"setModal1Visible(true)\">\n      Display a modal dialog at 20px to Top\n    </a-button>\n    <a-modal\n      v-model:open=\"modal1Visible\"\n      title=\"20px to Top\"\n      style=\"top: 20px\"\n      @ok=\"setModal1Visible(false)\"\n    >\n      <p>some contents...</p>\n      <p>some contents...</p>\n      <p>some contents...</p>\n    </a-modal>\n    <br />\n    <br />\n    <a-button type=\"primary\" @click=\"modal2Visible = true\">\n      Vertically centered modal dialog\n    </a-button>\n    <a-modal\n      v-model:open=\"modal2Visible\"\n      title=\"Vertically centered modal dialog\"\n      centered\n      @ok=\"modal2Visible = false\"\n    >\n      <p>some contents...</p>\n      <p>some contents...</p>\n      <p>some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst modal1Visible = ref<boolean>(false);\nconst modal2Visible = ref<boolean>(false);\n\nconst setModal1Visible = (open: boolean) => {\n  modal1Visible.value = open;\n};\n</script>\n"
  },
  {
    "path": "components/modal/demo/width.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 自定义模态的宽度\n  en-US: To customize the width of modal\n---\n\n## zh-CN\n\n使用`width`来设置模态对话框的宽度\n\n## en-US\n\nUse `width` to set the width of the modal dialog\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"showModal\">Open Modal of 1000px width</a-button>\n    <a-modal v-model:open=\"open\" width=\"1000px\" title=\"Basic Modal\" @ok=\"handleOk\">\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n      <p>Some contents...</p>\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst open = ref<boolean>(false);\n\nconst showModal = () => {\n  open.value = true;\n};\n\nconst handleOk = (e: MouseEvent) => {\n  console.log(e);\n  open.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/modal/destroyFns.ts",
    "content": "const destroyFns: Array<Function> = [];\nexport default destroyFns;\n"
  },
  {
    "path": "components/modal/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Modal\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*wM3qQ5XrhlcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*fBrgSJBmavgAAAAAAAAAAAAADrJ8AQ/original\n---\n\nModal dialogs.\n\n## When To Use\n\nWhen requiring users to interact with the application, but without jumping to a new page and interrupting the user's workflow, you can use `Modal` to create a new floating layer over the current page to get user feedback or display information. Additionally, if you need show a simple confirmation dialog, you can use `antd.Modal.confirm()`, and so on.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| afterClose | Specify a function that will be called when modal is closed completely. | function | - |  |\n| bodyStyle | Body style for modal body element. Such as height, padding etc. | object | {} |  |\n| cancelButtonProps | The cancel button props | [ButtonProps](/components/button/#api) | - |  |\n| cancelText | Text of the Cancel button | string\\|slot | `Cancel` |  |\n| centered | Centered Modal | boolean | `false` |  |\n| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | true |  |\n| closeIcon | custom close icon | VNode \\| slot | - |  |\n| confirmLoading | Whether to apply loading visual effect for OK button or not | boolean | false |  |\n| destroyOnClose | Whether to unmount child components on onClose | boolean | false |  |\n| footer | Footer content, set as `:footer=\"null\"` when you don't need default buttons | string\\|slot | OK and Cancel buttons |  |\n| forceRender | Force render Modal | boolean | false |  |\n| getContainer | Return the mount node for Modal | (instance): HTMLElement | () => document.body |  |\n| mask | Whether show mask or not. | boolean | true |  |\n| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | boolean | true |  |\n| maskStyle | Style for modal's mask element. | object | {} |  |\n| okButtonProps | The ok button props | [ButtonProps](/components/button/#api) | - |  |\n| okText | Text of the OK button | string\\|slot | `OK` |  |\n| okType | Button `type` of the OK button | string | `primary` |  |\n| title | The modal dialog's title | string\\|slot | - |  |\n| open(v-model) | Whether the modal dialog is visible or not | boolean | false |  |\n| width | Width of the modal dialog | string\\|number | 520 |  |\n| wrapClassName | The class name of the container of the modal dialog | string | - |  |\n| zIndex | The `z-index` of the Modal | number | 1000 |  |\n\n### events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| cancel | Specify a function that will be called when a user clicks mask, close button on top right or Cancel button | function(e) |\n| ok | Specify a function that will be called when a user clicks the OK button | function(e) |\n\n#### Note\n\n> The state of Modal will be preserved at it's component lifecycle by default, if you wish to open it with a brand new state everytime, set `destroyOnClose` on it.\n\n### Modal.method()\n\nThere are five ways to display the information based on the content's nature:\n\n- `Modal.info`\n- `Modal.success`\n- `Modal.error`\n- `Modal.warning`\n- `Modal.confirm`\n\nThe items listed above are all functions, expecting a settings object as parameter. The properties of the object are follows:\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| appContext | The context of the pop-up window is generally used to obtain content such as global registered components, vuex, etc. | - | - |  |\n| autoFocusButton | Specify which button to autofocus | `null` \\| `ok` \\| `cancel` | `ok` |  |\n| cancelButtonProps | The cancel button props | [ButtonProps](/components/button) | - |  |\n| cancelText | Text of the Cancel button | string | `Cancel` |  |\n| centered | Centered Modal | boolean | `false` |  |\n| class | class of container | string | - |  |\n| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | `false` |  |\n| content | Content | string\\|VNode \\|function() | - |  |\n| footer | Footer content, set as `footer: null` when you don't need default buttons | string\\|VNode \\|function() | - | 4.0.0 |\n| icon | custom icon (`Added in 1.14.0`) | VNode \\|()=>VNode | - |  |\n| keyboard | Whether support press esc to close | boolean | true |  |\n| mask | Whether show mask or not. | boolean | true |  |\n| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | boolean | `false` |  |\n| okButtonProps | The ok button props | [ButtonProps](/components/button) | - |  |\n| okText | Text of the OK button | string | `OK` |  |\n| okType | Button `type` of the OK button | string | `primary` |  |\n| title | Title | string\\|VNode \\|function() | - |  |\n| width | Width of the modal dialog | string\\|number | 416 |  |\n| wrapClassName | The class name of the container of the modal dialog | string | - | 3.2.3 |\n| zIndex | The `z-index` of the Modal | number | 1000 |  |\n| onCancel | Specify a function that will be called when the user clicks the Cancel button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - |  |\n| onOk | Specify a function that will be called when the user clicks the OK button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - |  |\n\nAll the `Modal.method`s will return a reference, and then we can update and close the modal dialog by the reference.\n\n```jsx\nconst modal = Modal.info();\n\nmodal.update({\n  title: 'Updated title',\n  content: 'Updated content',\n});\n\nmodal.destroy();\n```\n\n- `Modal.destroyAll`\n\n`Modal.destroyAll()` could destroy all confirmation modal dialogs(Modal.info/Modal.success/Modal.error/Modal.warning/Modal.confirm). Usually, you can use it in router change event to destroy confirm modal dialog automatically without use modal reference to close( it's too complex to use for all modal dialogs)\n\n```jsx\nconst router = new VueRouter({ ... })\n\n// router change\nrouter.beforeEach((to, from, next) => {\n  Modal.destroyAll();\n})\n```\n\n### Modal.useModal()\n\nWhen you need using Context, you can use `contextHolder` which created by `Modal.useModal` to insert into children. Modal created by hooks will get all the context where `contextHolder` are. Created `modal` has the same creating function with `Modal.method`.\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { Modal } from 'ant-design-vue';\n  const [modal, contextHolder] = Modal.useModal();\n\n  modal.confirm({\n    // ...\n  });\n</script>\n```\n\n## FAQ\n\n### Why can't the Modal method obtain global registered components, context, vuex, etc. and ConfigProvider `locale/prefixCls/theme` configuration, and can't update data responsively?\n\nCall the Modal method directly, and the component will dynamically create a new Vue entity through `Vue.render`. Its context is not the same as the context where the current code is located, so the context information cannot be obtained.\n\nWhen you need context information (for example, using a globally registered component), you can use `Modal.useModal` to get `modal` instance and `contextHolder` node. And put it in your children:\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { Modal } from 'ant-design-vue';\n  const [modal, contextHolder] = Modal.useModal();\n\n  modal.confirm({\n    // ...\n  });\n</script>\n```\n\n> [App Package Component](/components/app) can be used to simplify the problem of `useModal` and other methods that need to manually implant contextHolder.\n"
  },
  {
    "path": "components/modal/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport type { ModalFunc, ModalFuncProps } from './Modal';\nimport Modal from './Modal';\nimport confirm, { withWarn, withInfo, withSuccess, withError, withConfirm } from './confirm';\nimport useModal from './useModal';\nimport destroyFns from './destroyFns';\nexport type { ActionButtonProps } from '../_util/ActionButton';\nexport type { ModalProps, ModalFuncProps } from './Modal';\n\nfunction modalWarn(props: ModalFuncProps) {\n  return confirm(withWarn(props));\n}\nModal.useModal = useModal;\nModal.info = function infoFn(props: ModalFuncProps) {\n  return confirm(withInfo(props));\n};\n\nModal.success = function successFn(props: ModalFuncProps) {\n  return confirm(withSuccess(props));\n};\n\nModal.error = function errorFn(props: ModalFuncProps) {\n  return confirm(withError(props));\n};\n\nModal.warning = modalWarn;\n\nModal.warn = modalWarn;\n\nModal.confirm = function confirmFn(props: ModalFuncProps) {\n  return confirm(withConfirm(props));\n};\n\nModal.destroyAll = function destroyAllFn() {\n  while (destroyFns.length) {\n    const close = destroyFns.pop();\n    if (close) {\n      close();\n    }\n  }\n};\n\n/* istanbul ignore next */\nModal.install = function (app: App) {\n  app.component(Modal.name, Modal);\n  return app;\n};\n\nexport default Modal as typeof Modal &\n  Plugin & {\n    readonly info: ModalFunc;\n\n    readonly success: ModalFunc;\n\n    readonly error: ModalFunc;\n\n    readonly warn: ModalFunc;\n\n    readonly warning: ModalFunc;\n\n    readonly confirm: ModalFunc;\n\n    readonly destroyAll: () => void;\n\n    readonly useModal: typeof useModal;\n  };\n"
  },
  {
    "path": "components/modal/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Modal\nsubtitle: 对话框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*wM3qQ5XrhlcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*fBrgSJBmavgAAAAAAAAAAAAADrJ8AQ/original\n---\n\n模态对话框。\n\n## 何时使用\n\n需要用户处理事务，又不希望跳转页面以致打断工作流程时，可以使用 `Modal` 在当前页面正中打开一个浮层，承载相应的操作。\n\n另外当需要一个简洁的确认框询问用户时，可以使用 `Modal.confirm()` 等语法糖方法。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| afterClose | Modal 完全关闭后的回调 | function | - |  |\n| bodyStyle | Modal body 样式 | object | {} |  |\n| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button/#api) | - |  |\n| cancelText | 取消按钮文字 | string\\| slot | 取消 |  |\n| centered | 垂直居中展示 Modal | boolean | `false` |  |\n| closable | 是否显示右上角的关闭按钮 | boolean | true |  |\n| closeIcon | 自定义关闭图标 | VNode \\| slot | - |  |\n| confirmLoading | 确定按钮 loading | boolean | - |  |\n| destroyOnClose | 关闭时销毁 Modal 里的子元素 | boolean | false |  |\n| footer | 底部内容，当不需要默认底部按钮时，可以设为 `:footer=\"null\"` | string\\|slot | 确定取消按钮 |  |\n| forceRender | 强制渲染 Modal | boolean | false |  |\n| getContainer | 指定 Modal 挂载的 HTML 节点 | (instance): HTMLElement | () => document.body |  |\n| keyboard | 是否支持键盘 esc 关闭 | boolean | true |  |\n| mask | 是否展示遮罩 | boolean | true |  |\n| maskClosable | 点击蒙层是否允许关闭 | boolean | true |  |\n| maskStyle | 遮罩样式 | object | {} |  |\n| okButtonProps | ok 按钮 props | [ButtonProps](/components/button/#api) | - |  |\n| okText | 确认按钮文字 | string\\|slot | 确定 |  |\n| okType | 确认按钮类型 | string | primary |  |\n| title | 标题 | string\\|slot | - |  |\n| open(v-model) | 对话框是否可见 | boolean | - |  |\n| width | 宽度 | string\\|number | 520 |  |\n| wrapClassName | 对话框外层容器的类名 | string | - |  |\n| zIndex | 设置 Modal 的 `z-index` | number | 1000 |  |\n\n### 事件\n\n| 事件名称 | 说明                                 | 回调参数    |\n| -------- | ------------------------------------ | ----------- |\n| cancel   | 点击遮罩层或右上角叉或取消按钮的回调 | function(e) |\n| ok       | 点击确定回调                         | function(e) |\n\n#### 注意\n\n> `<Modal />` 默认关闭后状态不会自动清空, 如果希望每次打开都是新内容，请设置 `destroyOnClose`。\n\n### Modal.method()\n\n包括：\n\n- `Modal.info`\n- `Modal.success`\n- `Modal.error`\n- `Modal.warning`\n- `Modal.confirm`\n\n以上均为一个函数，参数为 object，具体属性如下：\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| appContext | 弹窗的上下文，一般用于获取全局注册组件、vuex 等内容 | - | - |  |\n| autoFocusButton | 指定自动获得焦点的按钮 | `null` \\| `ok` \\| `cancel` | `ok` |  |\n| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button) | - |  |\n| cancelText | 取消按钮文字 | string | 取消 |  |\n| centered | 垂直居中展示 Modal | boolean | `false` |  |\n| class | 容器类名 | string | - |  |\n| closable | 是否显示右上角的关闭按钮 | boolean | `false` |  |\n| content | 内容 | string \\|VNode \\|function() | - |  |\n| footer | 底部内容，当不需要默认底部按钮时，可以设为 `footer: null` | string \\|VNode \\|function() | - | 4.0.0 |\n| icon | 自定义图标（1.14.0 新增） | VNode \\| ()=>VNode | - |  |\n| keyboard | 是否支持键盘 esc 关闭 | boolean | true |  |\n| mask | 是否展示遮罩 | boolean | true |  |\n| maskClosable | 点击蒙层是否允许关闭 | boolean | `false` |  |\n| okButtonProps | ok 按钮 props | [ButtonProps](/components/button) | - |  |\n| okText | 确认按钮文字 | string | 确定 |  |\n| okType | 确认按钮类型 | string | primary |  |\n| title | 标题 | string\\|VNode \\|function() | - |  |\n| width | 宽度 | string\\|number | 416 |  |\n| wrapClassName | 对话框外层容器的类名 | string | - | 3.2.3 |\n| zIndex | 设置 Modal 的 `z-index` | number | 1000 |  |\n| onCancel | 取消回调，参数为关闭函数，返回 promise 时 resolve 后自动关闭 | function | - |  |\n| onOk | 点击确定回调，参数为关闭函数，返回 promise 时 resolve 后自动关闭 | function | - |  |\n\n以上函数调用后，会返回一个引用，可以通过该引用更新和关闭弹窗。\n\n```jsx\nconst modal = Modal.info();\n\nmodal.update({\n  title: '修改的标题',\n  content: '修改的内容',\n});\n\nmodal.destroy();\n```\n\n- `Modal.destroyAll`\n\n使用 `Modal.destroyAll()` 可以销毁弹出的确认窗（即上述的 Modal.info、Modal.success、Modal.error、Modal.warning、Modal.confirm）。通常用于路由监听当中，处理路由前进、后退不能销毁确认对话框的问题，而不用各处去使用实例的返回值进行关闭（modal.destroy() 适用于主动关闭，而不是路由这样被动关闭）\n\n```jsx\nconst router = new VueRouter({ ... })\n\n// router change\nrouter.beforeEach((to, from, next) => {\n  Modal.destroyAll();\n})\n```\n\n### Modal.useModal()\n\n当你需要使用 Context 时，可以通过 `Modal.useModal` 创建一个 `contextHolder` 插入子节点中。通过 hooks 创建的临时 Modal 将会得到 `contextHolder` 所在位置的所有上下文。创建的 `modal` 对象拥有与 [`Modal.method`](#modalmethod) 相同的创建通知方法。\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { Modal } from 'ant-design-vue';\n  const [modal, contextHolder] = Modal.useModal();\n\n  modal.confirm({\n    // ...\n  });\n</script>\n```\n\n## FAQ\n\n### 为什么 Modal 方法不能获取 全局注册组件、context、vuex 等内容和 ConfigProvider `locale/prefixCls/theme` 配置， 以及不能响应式更新数据 ？\n\n直接调用 Modal 方法，组件会通过 `Vue.render` 动态创建新的 Vue 实体。其 context 与当前代码所在 context 并不相同，因而无法获取 context 信息。\n\n当你需要 context 信息（例如使用全局注册的组件）时，可以通过 Modal.useModal 方法会返回 modal 实体以及 contextHolder 节点。将其插入到你需要获取 context 位置即可：\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { Modal } from 'ant-design-vue';\n  const [modal, contextHolder] = Modal.useModal();\n\n  modal.confirm({\n    // ...\n  });\n</script>\n```\n\n> 可通过 [App 包裹组件](/components/app-cn) 简化`useModal`等方法需要手动植入 contextHolder 的问题。\n"
  },
  {
    "path": "components/modal/locale.ts",
    "content": "import defaultLocale from '../locale/en_US';\n\nexport interface ModalLocale {\n  okText: string;\n  cancelText: string;\n  justOkText: string;\n}\n\nlet runtimeLocale: ModalLocale = {\n  ...(defaultLocale.Modal as ModalLocale),\n};\n\nexport function changeConfirmLocale(newLocale?: ModalLocale) {\n  if (newLocale) {\n    runtimeLocale = {\n      ...runtimeLocale,\n      ...newLocale,\n    };\n  } else {\n    runtimeLocale = {\n      ...(defaultLocale.Modal as ModalLocale),\n    };\n  }\n}\n\nexport function getConfirmLocale() {\n  return runtimeLocale;\n}\n"
  },
  {
    "path": "components/modal/style/index.ts",
    "content": "import { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport type { AliasToken, FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { clearFix, genFocusStyle, resetComponent } from '../../style';\nimport { CSSProperties } from 'vue';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  // Component token here\n}\n\nexport interface ModalToken extends FullToken<'Modal'> {\n  // Custom token here\n  modalBodyPadding: number;\n  modalHeaderBg: string;\n  modalHeaderPadding: string;\n  modalHeaderBorderWidth: number;\n  modalHeaderBorderStyle: string;\n  modalHeaderTitleLineHeight: number;\n  modalHeaderTitleFontSize: number;\n  modalHeaderBorderColorSplit: string;\n  modalHeaderCloseSize: number;\n  modalContentBg: string;\n  modalHeadingColor: string;\n  modalCloseColor: string;\n  modalCloseBtnSize: number;\n  modalFooterBg: string;\n  modalFooterBorderColorSplit: string;\n  modalFooterBorderStyle: string;\n  modalFooterPaddingVertical: number;\n  modalFooterPaddingHorizontal: number;\n  modalFooterBorderWidth: number;\n  modalConfirmTitleFontSize: number;\n  modalIconHoverColor: string;\n  modalConfirmIconSize: number;\n}\n\nfunction box(position: CSSProperties['position']): CSSProperties {\n  return {\n    position,\n    top: 0,\n    insetInlineEnd: 0,\n    bottom: 0,\n    insetInlineStart: 0,\n  };\n}\n\nexport const genModalMaskStyle: GenerateStyle<TokenWithCommonCls<AliasToken>> = token => {\n  const { componentCls } = token;\n\n  return [\n    {\n      [`${componentCls}-root`]: {\n        [`${componentCls}${token.antCls}-zoom-enter, ${componentCls}${token.antCls}-zoom-appear`]: {\n          // reset scale avoid mousePosition bug\n          transform: 'none',\n          opacity: 0,\n          animationDuration: token.motionDurationSlow,\n          // https://github.com/ant-design/ant-design/issues/11777\n          userSelect: 'none',\n        },\n\n        [`${componentCls}${token.antCls}-zoom-leave ${componentCls}-content`]: {\n          pointerEvents: 'none',\n        },\n\n        [`${componentCls}-mask`]: {\n          ...box('fixed'),\n          zIndex: token.zIndexPopupBase,\n          height: '100%',\n          backgroundColor: token.colorBgMask,\n          [`${componentCls}-hidden`]: {\n            display: 'none',\n          },\n        },\n\n        [`${componentCls}-wrap`]: {\n          ...box('fixed'),\n          overflow: 'auto',\n          outline: 0,\n          WebkitOverflowScrolling: 'touch',\n        },\n      },\n    },\n    { [`${componentCls}-root`]: initFadeMotion(token) },\n  ];\n};\n\nconst genModalStyle: GenerateStyle<ModalToken> = token => {\n  const { componentCls } = token;\n\n  return [\n    // ======================== Root =========================\n    {\n      [`${componentCls}-root`]: {\n        [`${componentCls}-wrap`]: {\n          zIndex: token.zIndexPopupBase,\n          position: 'fixed',\n          inset: 0,\n          overflow: 'auto',\n          outline: 0,\n          WebkitOverflowScrolling: 'touch',\n        },\n        [`${componentCls}-wrap-rtl`]: {\n          direction: 'rtl',\n        },\n\n        [`${componentCls}-centered`]: {\n          textAlign: 'center',\n\n          '&::before': {\n            display: 'inline-block',\n            width: 0,\n            height: '100%',\n            verticalAlign: 'middle',\n            content: '\"\"',\n          },\n          [componentCls]: {\n            top: 0,\n            display: 'inline-block',\n            paddingBottom: 0,\n            textAlign: 'start',\n            verticalAlign: 'middle',\n          },\n        },\n\n        [`@media (max-width: ${token.screenSMMax})`]: {\n          [componentCls]: {\n            maxWidth: 'calc(100vw - 16px)',\n            margin: `${token.marginXS} auto`,\n          },\n          [`${componentCls}-centered`]: {\n            [componentCls]: {\n              flex: 1,\n            },\n          },\n        },\n      },\n    },\n\n    // ======================== Modal ========================\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        pointerEvents: 'none',\n        position: 'relative',\n        top: 100,\n        width: 'auto',\n        maxWidth: `calc(100vw - ${token.margin * 2}px)`,\n        margin: '0 auto',\n        paddingBottom: token.paddingLG,\n\n        [`${componentCls}-title`]: {\n          margin: 0,\n          color: token.modalHeadingColor,\n          fontWeight: token.fontWeightStrong,\n          fontSize: token.modalHeaderTitleFontSize,\n          lineHeight: token.modalHeaderTitleLineHeight,\n          wordWrap: 'break-word',\n        },\n\n        [`${componentCls}-content`]: {\n          position: 'relative',\n          backgroundColor: token.modalContentBg,\n          backgroundClip: 'padding-box',\n          border: 0,\n          borderRadius: token.borderRadiusLG,\n          boxShadow: token.boxShadowSecondary,\n          pointerEvents: 'auto',\n          padding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`,\n        },\n\n        [`${componentCls}-close`]: {\n          position: 'absolute',\n          top: (token.modalHeaderCloseSize - token.modalCloseBtnSize) / 2,\n          insetInlineEnd: (token.modalHeaderCloseSize - token.modalCloseBtnSize) / 2,\n          zIndex: token.zIndexPopupBase + 10,\n          padding: 0,\n          color: token.modalCloseColor,\n          fontWeight: token.fontWeightStrong,\n          lineHeight: 1,\n          textDecoration: 'none',\n          background: 'transparent',\n          borderRadius: token.borderRadiusSM,\n          width: token.modalConfirmIconSize,\n          height: token.modalConfirmIconSize,\n          border: 0,\n          outline: 0,\n          cursor: 'pointer',\n          transition: `color ${token.motionDurationMid}, background-color ${token.motionDurationMid}`,\n\n          '&-x': {\n            display: 'block',\n            fontSize: token.fontSizeLG,\n            fontStyle: 'normal',\n            lineHeight: `${token.modalCloseBtnSize}px`,\n            textAlign: 'center',\n            textTransform: 'none',\n            textRendering: 'auto',\n          },\n\n          '&:hover': {\n            color: token.modalIconHoverColor,\n            backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n            textDecoration: 'none',\n          },\n\n          '&:active': {\n            backgroundColor: token.wireframe ? 'transparent' : token.colorFillContentHover,\n          },\n\n          ...genFocusStyle(token),\n        },\n\n        [`${componentCls}-header`]: {\n          color: token.colorText,\n          background: token.modalHeaderBg,\n          borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n          marginBottom: token.marginXS,\n        },\n\n        [`${componentCls}-body`]: {\n          fontSize: token.fontSize,\n          lineHeight: token.lineHeight,\n          wordWrap: 'break-word',\n        },\n\n        [`${componentCls}-footer`]: {\n          textAlign: 'end',\n          background: token.modalFooterBg,\n          marginTop: token.marginSM,\n\n          [`${token.antCls}-btn + ${token.antCls}-btn:not(${token.antCls}-dropdown-trigger)`]: {\n            marginBottom: 0,\n            marginInlineStart: token.marginXS,\n          },\n        },\n\n        [`${componentCls}-open`]: {\n          overflow: 'hidden',\n        },\n      },\n    },\n\n    // ======================== Pure =========================\n    {\n      [`${componentCls}-pure-panel`]: {\n        top: 'auto',\n        padding: 0,\n        display: 'flex',\n        flexDirection: 'column',\n\n        [`${componentCls}-content,\n          ${componentCls}-body,\n          ${componentCls}-confirm-body-wrapper`]: {\n          display: 'flex',\n          flexDirection: 'column',\n          flex: 'auto',\n        },\n\n        [`${componentCls}-confirm-body`]: {\n          marginBottom: 'auto',\n        },\n      },\n    },\n  ];\n};\n\nconst genModalConfirmStyle: GenerateStyle<ModalToken> = token => {\n  const { componentCls } = token;\n  const confirmComponentCls = `${componentCls}-confirm`;\n\n  return {\n    [confirmComponentCls]: {\n      '&-rtl': {\n        direction: 'rtl',\n      },\n      [`${token.antCls}-modal-header`]: {\n        display: 'none',\n      },\n      [`${confirmComponentCls}-body-wrapper`]: {\n        ...clearFix(),\n      },\n      [`${confirmComponentCls}-body`]: {\n        display: 'flex',\n        flexWrap: 'wrap',\n        alignItems: 'center',\n\n        [`${confirmComponentCls}-title`]: {\n          flex: '0 0 100%',\n          display: 'block',\n          // create BFC to avoid\n          // https://user-images.githubusercontent.com/507615/37702510-ba844e06-2d2d-11e8-9b67-8e19be57f445.png\n          overflow: 'hidden',\n          color: token.colorTextHeading,\n          fontWeight: token.fontWeightStrong,\n          fontSize: token.modalHeaderTitleFontSize,\n          lineHeight: token.modalHeaderTitleLineHeight,\n\n          [`+ ${confirmComponentCls}-content`]: {\n            marginBlockStart: token.marginXS,\n            flexBasis: '100%',\n            maxWidth: `calc(100% - ${token.modalConfirmIconSize + token.marginSM}px)`,\n          },\n        },\n\n        [`${confirmComponentCls}-content`]: {\n          color: token.colorText,\n          fontSize: token.fontSize,\n        },\n\n        [`> ${token.iconCls}`]: {\n          flex: 'none',\n          marginInlineEnd: token.marginSM,\n          fontSize: token.modalConfirmIconSize,\n\n          [`+ ${confirmComponentCls}-title`]: {\n            flex: 1,\n          },\n\n          // `content` after `icon` should set marginLeft\n          [`+ ${confirmComponentCls}-title + ${confirmComponentCls}-content`]: {\n            marginInlineStart: token.modalConfirmIconSize + token.marginSM,\n          },\n        },\n      },\n      [`${confirmComponentCls}-btns`]: {\n        textAlign: 'end',\n        marginTop: token.marginSM,\n\n        [`${token.antCls}-btn + ${token.antCls}-btn`]: {\n          marginBottom: 0,\n          marginInlineStart: token.marginXS,\n        },\n      },\n    },\n\n    [`${confirmComponentCls}-error ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorError,\n    },\n\n    [`${confirmComponentCls}-warning ${confirmComponentCls}-body > ${token.iconCls},\n        ${confirmComponentCls}-confirm ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorWarning,\n    },\n\n    [`${confirmComponentCls}-info ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorInfo,\n    },\n\n    [`${confirmComponentCls}-success ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorSuccess,\n    },\n\n    // https://github.com/ant-design/ant-design/issues/37329\n    [`${componentCls}-zoom-leave ${componentCls}-btns`]: {\n      pointerEvents: 'none',\n    },\n  };\n};\n\nconst genRTLStyle: GenerateStyle<ModalToken> = token => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-root`]: {\n      [`${componentCls}-wrap-rtl`]: {\n        direction: 'rtl',\n\n        [`${componentCls}-confirm-body`]: {\n          direction: 'rtl',\n        },\n      },\n    },\n  };\n};\n\nconst genWireframeStyle: GenerateStyle<ModalToken> = token => {\n  const { componentCls, antCls } = token;\n  const confirmComponentCls = `${componentCls}-confirm`;\n\n  return {\n    [componentCls]: {\n      [`${componentCls}-content`]: {\n        padding: 0,\n      },\n\n      [`${componentCls}-header`]: {\n        padding: token.modalHeaderPadding,\n        borderBottom: `${token.modalHeaderBorderWidth}px ${token.modalHeaderBorderStyle} ${token.modalHeaderBorderColorSplit}`,\n        marginBottom: 0,\n      },\n\n      [`${componentCls}-body`]: {\n        padding: token.modalBodyPadding,\n      },\n\n      [`${componentCls}-footer`]: {\n        padding: `${token.modalFooterPaddingVertical}px ${token.modalFooterPaddingHorizontal}px`,\n        borderTop: `${token.modalFooterBorderWidth}px ${token.modalFooterBorderStyle} ${token.modalFooterBorderColorSplit}`,\n        borderRadius: `0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px`,\n        marginTop: 0,\n      },\n    },\n\n    [confirmComponentCls]: {\n      [`${antCls}-modal-body`]: {\n        padding: `${token.padding * 2}px ${token.padding * 2}px ${token.paddingLG}px`,\n      },\n      [`${confirmComponentCls}-body`]: {\n        [`> ${token.iconCls}`]: {\n          marginInlineEnd: token.margin,\n\n          // `content` after `icon` should set marginLeft\n          [`+ ${confirmComponentCls}-title + ${confirmComponentCls}-content`]: {\n            marginInlineStart: token.modalConfirmIconSize + token.margin,\n          },\n        },\n      },\n      [`${confirmComponentCls}-btns`]: {\n        marginTop: token.marginLG,\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Modal', token => {\n  const headerPaddingVertical = token.padding;\n  const headerFontSize = token.fontSizeHeading5;\n  const headerLineHeight = token.lineHeightHeading5;\n\n  const modalToken = mergeToken<ModalToken>(token, {\n    modalBodyPadding: token.paddingLG,\n    modalHeaderBg: token.colorBgElevated,\n    modalHeaderPadding: `${headerPaddingVertical}px ${token.paddingLG}px`,\n    modalHeaderBorderWidth: token.lineWidth,\n    modalHeaderBorderStyle: token.lineType,\n    modalHeaderTitleLineHeight: headerLineHeight,\n    modalHeaderTitleFontSize: headerFontSize,\n    modalHeaderBorderColorSplit: token.colorSplit,\n    modalHeaderCloseSize: headerLineHeight * headerFontSize + headerPaddingVertical * 2,\n    modalContentBg: token.colorBgElevated,\n    modalHeadingColor: token.colorTextHeading,\n    modalCloseColor: token.colorTextDescription,\n    modalFooterBg: 'transparent',\n    modalFooterBorderColorSplit: token.colorSplit,\n    modalFooterBorderStyle: token.lineType,\n    modalFooterPaddingVertical: token.paddingXS,\n    modalFooterPaddingHorizontal: token.padding,\n    modalFooterBorderWidth: token.lineWidth,\n    modalConfirmTitleFontSize: token.fontSizeLG,\n    modalIconHoverColor: token.colorIconHover,\n    modalConfirmIconSize: token.fontSize * token.lineHeight,\n    modalCloseBtnSize: token.controlHeightLG * 0.55,\n  });\n  return [\n    genModalStyle(modalToken),\n    genModalConfirmStyle(modalToken),\n    genRTLStyle(modalToken),\n    genModalMaskStyle(modalToken),\n    token.wireframe && genWireframeStyle(modalToken),\n    initZoomMotion(modalToken, 'zoom'),\n  ];\n});\n"
  },
  {
    "path": "components/modal/useModal/HookModal.tsx",
    "content": "import type { PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport { useConfigContextInject } from '../../config-provider/context';\nimport { useLocaleReceiver } from '../../locale-provider/LocaleReceiver';\nimport defaultLocale from '../../locale/en_US';\nimport ConfirmDialog from '../ConfirmDialog';\nimport type { ModalFuncProps } from '../Modal';\nimport initDefaultProps from '../../_util/props-util/initDefaultProps';\nexport interface HookModalProps {\n  afterClose: () => void;\n  config: ModalFuncProps;\n  destroyAction: (...args: any[]) => void;\n  open: boolean;\n}\n\nexport interface HookModalRef {\n  destroy: () => void;\n  update: (config: ModalFuncProps) => void;\n}\n\nconst comfirmFuncProps = () => ({\n  config: Object as PropType<ModalFuncProps>,\n  afterClose: Function as PropType<() => void>,\n  destroyAction: Function as PropType<(e: any) => void>,\n  open: Boolean,\n});\n\nexport default defineComponent({\n  name: 'HookModal',\n  inheritAttrs: false,\n  props: initDefaultProps(comfirmFuncProps(), {\n    config: {\n      width: 520,\n      okType: 'primary',\n    },\n  }),\n  setup(props: HookModalProps, { expose }) {\n    const open = computed(() => props.open);\n    const innerConfig = computed(() => props.config);\n    const { direction, getPrefixCls } = useConfigContextInject();\n    const prefixCls = getPrefixCls('modal');\n    const rootPrefixCls = getPrefixCls();\n\n    const afterClose = () => {\n      props?.afterClose();\n      innerConfig.value.afterClose?.();\n    };\n\n    const close = (...args: any[]) => {\n      props.destroyAction(...args);\n    };\n\n    expose({ destroy: close });\n    const mergedOkCancel = innerConfig.value.okCancel ?? innerConfig.value.type === 'confirm';\n    const [contextLocale] = useLocaleReceiver('Modal', defaultLocale.Modal);\n    return () => (\n      <ConfirmDialog\n        prefixCls={prefixCls}\n        rootPrefixCls={rootPrefixCls}\n        {...innerConfig.value}\n        close={close}\n        open={open.value}\n        afterClose={afterClose}\n        okText={\n          innerConfig.value.okText ||\n          (mergedOkCancel ? contextLocale?.value.okText : contextLocale?.value.justOkText)\n        }\n        direction={innerConfig.value.direction || direction.value}\n        cancelText={innerConfig.value.cancelText || contextLocale?.value.cancelText}\n      />\n    );\n  },\n});\n"
  },
  {
    "path": "components/modal/useModal/index.tsx",
    "content": "import type { Ref } from 'vue';\nimport { isRef, unref, computed, defineComponent, shallowRef, watch } from 'vue';\nimport type { MaybeRef, VueNode } from '../../_util/type';\nimport type { ModalFuncProps } from '../Modal';\nimport type { HookModalRef } from './HookModal';\nimport type { ModalStaticFunctions } from '../confirm';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\n\nimport HookModal from './HookModal';\nimport destroyFns from '../destroyFns';\n\nlet uuid = 0;\n\ninterface ElementsHolderRef {\n  addModal: (modal: () => VueNode) => () => void;\n}\n\nconst ElementsHolder = defineComponent({\n  name: 'ElementsHolder',\n  inheritAttrs: false,\n  setup(_, { expose }) {\n    const modals = shallowRef<(() => VueNode)[]>([]);\n    const addModal = (modal: () => VueNode) => {\n      modals.value.push(modal);\n      modals.value = modals.value.slice();\n      return () => {\n        modals.value = modals.value.filter(currentModal => currentModal !== modal);\n      };\n    };\n\n    expose({ addModal });\n    return () => {\n      return modals.value.map(modal => modal());\n    };\n  },\n});\nexport type ModalFuncWithRef = (props: MaybeRef<ModalFuncProps>) => {\n  destroy: () => void;\n  update: (configUpdate: ModalFuncProps) => void;\n};\n\nfunction useModal(): readonly [\n  Omit<ModalStaticFunctions<ModalFuncWithRef>, 'warn'>,\n  () => VueNode,\n] {\n  const holderRef = shallowRef<ElementsHolderRef>(null);\n  // ========================== Effect ==========================\n  const actionQueue = shallowRef([]);\n  watch(\n    actionQueue,\n    () => {\n      if (actionQueue.value.length) {\n        const cloneQueue = [...actionQueue.value];\n        cloneQueue.forEach(action => {\n          action();\n        });\n        actionQueue.value = [];\n      }\n    },\n    {\n      immediate: true,\n    },\n  );\n\n  // =========================== Hook ===========================\n  const getConfirmFunc = (withFunc: (config: ModalFuncProps) => ModalFuncProps) =>\n    function hookConfirm(config: Ref<ModalFuncProps> | ModalFuncProps) {\n      uuid += 1;\n      const open = shallowRef(true);\n      const modalRef = shallowRef<HookModalRef>(null);\n      const configRef = shallowRef(unref(config));\n      const updateConfig = shallowRef({});\n      watch(\n        () => config,\n        val => {\n          updateAction({\n            ...(isRef(val) ? val.value : val),\n            ...updateConfig.value,\n          });\n        },\n      );\n\n      const destroyAction = (...args: any[]) => {\n        open.value = false;\n        const triggerCancel = args.some(param => param && param.triggerCancel);\n        if (configRef.value.onCancel && triggerCancel) {\n          configRef.value.onCancel(() => {}, ...args.slice(1));\n        }\n      };\n      // eslint-disable-next-line prefer-const\n      let closeFunc: Function | undefined;\n      const modal = () => (\n        <HookModal\n          key={`modal-${uuid}`}\n          config={withFunc(configRef.value)}\n          ref={modalRef}\n          open={open.value}\n          destroyAction={destroyAction}\n          afterClose={() => {\n            closeFunc?.();\n          }}\n        />\n      );\n\n      closeFunc = holderRef.value?.addModal(modal);\n\n      if (closeFunc) {\n        destroyFns.push(closeFunc);\n      }\n\n      const updateAction = (newConfig: ModalFuncProps) => {\n        configRef.value = {\n          ...configRef.value,\n          ...newConfig,\n        };\n      };\n\n      const destroy = () => {\n        if (modalRef.value) {\n          destroyAction();\n        } else {\n          actionQueue.value = [...actionQueue.value, destroyAction];\n        }\n      };\n\n      const update = (newConfig: ModalFuncProps) => {\n        updateConfig.value = newConfig;\n        if (modalRef.value) {\n          updateAction(newConfig);\n        } else {\n          actionQueue.value = [...actionQueue.value, () => updateAction(newConfig)];\n        }\n      };\n      return {\n        destroy,\n        update,\n      };\n    };\n\n  const fns = computed(() => ({\n    info: getConfirmFunc(withInfo),\n    success: getConfirmFunc(withSuccess),\n    error: getConfirmFunc(withError),\n    warning: getConfirmFunc(withWarn),\n    confirm: getConfirmFunc(withConfirm),\n  }));\n  const holderKey = Symbol('modalHolderKey');\n  return [fns.value, () => <ElementsHolder key={holderKey} ref={holderRef} />] as const;\n}\n\nexport default useModal;\n"
  },
  {
    "path": "components/notification/PurePanel.tsx",
    "content": "import { computed, defineComponent } from 'vue';\nimport useStyle from './style';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { IconType } from './interface';\nimport Notice from '../vc-notification/Notice';\nimport classNames from '../_util/classNames';\nimport type { NoticeProps } from '../vc-notification/Notice';\nimport type { VueNode } from '../_util/type';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport { renderHelper } from '../_util/util';\n\nexport function getCloseIcon(prefixCls: string, closeIcon?: VueNode) {\n  return (\n    closeIcon || (\n      <span class={`${prefixCls}-close-x`}>\n        <CloseOutlined class={`${prefixCls}-close-icon`} />\n      </span>\n    )\n  );\n}\n\nexport interface PureContentProps {\n  prefixCls: string;\n  icon?: VueNode;\n  message?: VueNode;\n  description?: VueNode;\n  btn?: VueNode;\n  type?: IconType;\n}\n\nexport const TypeIcon = {\n  info: <InfoCircleFilled />,\n  success: <CheckCircleFilled />,\n  error: <CloseCircleFilled />,\n  warning: <ExclamationCircleFilled />,\n  loading: <LoadingOutlined />,\n};\n\nconst typeToIcon = {\n  success: CheckCircleFilled,\n  info: InfoCircleFilled,\n  error: CloseCircleFilled,\n  warning: ExclamationCircleFilled,\n};\n\nexport function PureContent({\n  prefixCls,\n  icon,\n  type,\n  message,\n  description,\n  btn,\n}: PureContentProps) {\n  let iconNode = null;\n  if (icon) {\n    iconNode = <span class={`${prefixCls}-icon`}>{renderHelper(icon)}</span>;\n  } else if (type) {\n    const Icon = typeToIcon[type];\n    iconNode = <Icon class={`${prefixCls}-icon ${prefixCls}-icon-${type}`} />;\n  }\n\n  return (\n    <div\n      class={classNames({\n        [`${prefixCls}-with-icon`]: iconNode,\n      })}\n      role=\"alert\"\n    >\n      {iconNode}\n      <div class={`${prefixCls}-message`}>{message}</div>\n      <div class={`${prefixCls}-description`}>{description}</div>\n      {btn && <div class={`${prefixCls}-btn`}>{btn}</div>}\n    </div>\n  );\n}\n\nexport interface PurePanelProps\n  extends Omit<NoticeProps, 'prefixCls' | 'eventKey'>,\n    Omit<PureContentProps, 'prefixCls'> {\n  prefixCls?: string;\n}\n\n/** @private Internal Component. Do not use in your production. */\nexport default defineComponent<PurePanelProps>({\n  name: 'PurePanel',\n  inheritAttrs: false,\n  props: ['prefixCls', 'icon', 'type', 'message', 'description', 'btn', 'closeIcon'] as any,\n  setup(props) {\n    const { getPrefixCls } = useConfigInject('notification', props);\n    const prefixCls = computed(() => props.prefixCls || getPrefixCls('notification'));\n    const noticePrefixCls = computed(() => `${prefixCls.value}-notice`);\n\n    const [, hashId] = useStyle(prefixCls);\n    return () => {\n      return (\n        <Notice\n          {...props}\n          prefixCls={prefixCls.value}\n          class={classNames(hashId.value, `${noticePrefixCls.value}-pure-panel`)}\n          noticeKey=\"pure\"\n          duration={null}\n          closable={props.closable}\n          closeIcon={getCloseIcon(prefixCls.value, props.closeIcon)}\n        >\n          <PureContent\n            prefixCls={noticePrefixCls.value}\n            icon={props.icon}\n            type={props.type}\n            message={props.message}\n            description={props.description}\n            btn={props.btn}\n          />\n        </Notice>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/notification/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/notification/demo/basic.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/custom-icon.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/custom-style.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/duration.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/hook.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"radius-upleft\" class=\"anticon anticon-radius-upleft\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-upleft\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"></path></svg></span><span>topLeft</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"radius-upright\" class=\"anticon anticon-radius-upright\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-upright\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z\"></path></svg></span><span>topRight</span>\n    </button></div>\n  <!---->\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"radius-bottomleft\" class=\"anticon anticon-radius-bottomleft\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-bottomleft\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"></path></svg></span><span>bottomLeft</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"radius-bottomright\" class=\"anticon anticon-radius-bottomright\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-bottomright\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z\"></path></svg></span><span>bottomRight</span>\n    </button></div>\n  <!---->\n</div>\n<!--teleport start-->\n<!--teleport end-->\n`;\n\nexports[`renders ./components/notification/demo/placement.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"border-top\" class=\"anticon anticon-border-top\"><svg focusable=\"false\" class=\"\" data-icon=\"border-top\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"></path></svg></span><span>top</span></button><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"border-bottom\" class=\"anticon anticon-border-bottom\"><svg focusable=\"false\" class=\"\" data-icon=\"border-bottom\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"></path></svg></span><span>bottom</span></button><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"radius-upleft\" class=\"anticon anticon-radius-upleft\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-upleft\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"></path></svg></span><span>topLeft</span></button><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"radius-upright\" class=\"anticon anticon-radius-upright\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-upright\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z\"></path></svg></span><span>topRight</span></button>\n  <div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n    <!---->\n  </div><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"radius-bottomleft\" class=\"anticon anticon-radius-bottomleft\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-bottomleft\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"></path></svg></span><span>bottomLeft</span></button><button class=\"ant-btn ant-btn-primary\" type=\"button\"><span role=\"img\" aria-label=\"radius-bottomright\" class=\"anticon anticon-radius-bottomright\"><svg focusable=\"false\" class=\"\" data-icon=\"radius-bottomright\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z\"></path></svg></span><span>bottomRight</span></button>\n</div>\n`;\n\nexports[`renders ./components/notification/demo/update.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box (update by key)</span>\n</button>\n<br>\n<br>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box (update by reactive)</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/with-btn.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open the notification box</span>\n</button>\n`;\n\nexports[`renders ./components/notification/demo/with-icon.vue correctly 1`] = `\n<div><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Success</span>\n  </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Info</span>\n  </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Warning</span>\n  </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Error</span>\n  </button></div>\n`;\n"
  },
  {
    "path": "components/notification/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('notification');\n"
  },
  {
    "path": "components/notification/__tests__/index.test.js",
    "content": "import { asyncExpect } from '../../../tests/utils';\nimport notification, { getInstance } from '..';\nimport { StepBackwardOutlined } from '@ant-design/icons-vue';\n\ndescribe('notification', () => {\n  beforeEach(() => {\n    jest.useFakeTimers();\n    document.body.outerHTML = '';\n  });\n\n  afterEach(() => {\n    jest.useRealTimers();\n    notification.destroy();\n  });\n\n  fit('should be able to hide manually', async () => {\n    notification.open({\n      message: 'Notification Title',\n      duration: 0,\n      key: '1',\n    });\n    await asyncExpect(() => {\n      notification.open({\n        message: 'Notification Title',\n        duration: 0,\n        key: '2',\n      });\n    });\n    await Promise.resolve();\n    expect(document.querySelectorAll('.ant-notification-notice').length).toBe(2);\n    notification.close('1');\n    jest.runAllTimers();\n    expect(\n      (await getInstance('ant-notification-topRight-false')).component.value.notices,\n    ).toHaveLength(1);\n    notification.close('2');\n    jest.runAllTimers();\n    expect(\n      (await getInstance('ant-notification-topRight-false')).component.value.notices,\n    ).toHaveLength(0);\n  });\n\n  it('should be able to destroy globally', async () => {\n    notification.open({\n      message: 'Notification Title',\n      duration: 0,\n    });\n    await asyncExpect(() => {\n      notification.open({\n        message: 'Notification Title',\n        duration: 0,\n      });\n    });\n    await asyncExpect(() => {\n      expect(document.querySelectorAll('.ant-notification').length).toBe(1);\n      expect(document.querySelectorAll('.ant-notification-notice').length).toBe(2);\n      notification.destroy();\n    }, 0);\n    await asyncExpect(() => {\n      expect(document.querySelectorAll('.ant-notification').length).toBe(0);\n      expect(document.querySelectorAll('.ant-notification-notice').length).toBe(0);\n    }, 0);\n  });\n\n  it('should be able to destroy after config', () => {\n    notification.config({\n      bottom: 100,\n    });\n    notification.destroy();\n  });\n\n  it('should be able to open with icon', async () => {\n    const openNotificationWithIcon = async type => {\n      const iconPrefix = '.ant-notification-notice-icon';\n      notification[type]({\n        message: 'Notification Title',\n        duration: 0,\n        description: 'This is the content of the notification.',\n      });\n      await asyncExpect(() => {\n        expect(document.querySelectorAll(`${iconPrefix}-${type}`).length).toBe(1);\n      }, 0);\n    };\n    await openNotificationWithIcon('success');\n    await openNotificationWithIcon('info');\n    await openNotificationWithIcon('warning');\n    await openNotificationWithIcon('error');\n  });\n\n  it('trigger onClick', () => {\n    notification.open({\n      message: 'Notification Title',\n      duration: 0,\n    });\n    expect(document.querySelectorAll('.ant-notification').length).toBe(1);\n  });\n\n  it('support closeIcon', async () => {\n    await asyncExpect(() => {\n      notification.open({\n        message: 'Notification Title',\n        duration: 0,\n        closeIcon: <StepBackwardOutlined />,\n      });\n    });\n    await asyncExpect(() => {\n      expect(document.querySelectorAll('.anticon-step-backward').length).toBe(1);\n    }, 100);\n  });\n\n  it('support config closeIcon', async () => {\n    notification.config({\n      closeIcon: <StepBackwardOutlined />,\n    });\n    await asyncExpect(() => {\n      notification.open({\n        message: 'Notification Title',\n        duration: 0,\n        closeIcon: <StepBackwardOutlined />,\n      });\n    });\n    await asyncExpect(() => {\n      expect(document.querySelectorAll('.anticon-step-backward').length).toBe(1);\n    }, 100);\n  });\n});\n"
  },
  {
    "path": "components/notification/__tests__/placement.test.js",
    "content": "import { asyncExpect } from '../../../tests/utils';\nimport notification from '..';\n\ndescribe('Notification.placement', () => {\n  afterEach(() => notification.destroy());\n\n  function $$(className) {\n    return document.body.querySelectorAll(className);\n  }\n\n  function getStyle(el, prop) {\n    const style = window.getComputedStyle ? window.getComputedStyle(el) : el.currentStyle;\n\n    // If a css property's value is `auto`, it will return an empty string.\n    return prop ? style[prop] : style;\n  }\n\n  function open(args) {\n    notification.open({\n      message: 'Notification Title',\n      description: 'This is the content of the notification.',\n      ...args,\n    });\n  }\n\n  function config(args) {\n    notification.config({\n      ...args,\n    });\n    open();\n  }\n\n  describe('placement', () => {\n    it('change notification placement by `open` method', async () => {\n      const defaultTop = '24px';\n      const defaultBottom = '24px';\n      let style;\n\n      // topLeft\n      open({\n        placement: 'topLeft',\n      });\n      await asyncExpect(() => {\n        style = getStyle($$('.ant-notification-topLeft')[0]);\n        expect(style.top).toBe(defaultTop);\n        expect(style.left).toBe('0px');\n        expect(style.bottom).toBe('');\n      });\n      open({\n        placement: 'topLeft',\n      });\n      await asyncExpect(() => {\n        expect($$('.ant-notification-topLeft').length).toBe(1);\n      });\n      // topRight\n      open({\n        placement: 'topRight',\n      });\n      await asyncExpect(() => {\n        style = getStyle($$('.ant-notification-topRight')[0]);\n        expect(style.top).toBe(defaultTop);\n        expect(style.right).toBe('0px');\n        expect(style.bottom).toBe('');\n      });\n      open({\n        placement: 'topRight',\n      });\n      await asyncExpect(() => {\n        expect($$('.ant-notification-topRight').length).toBe(1);\n      });\n      // bottomRight\n      open({\n        placement: 'bottomRight',\n        bottom: '100px',\n      });\n      await asyncExpect(() => {\n        style = getStyle($$('.ant-notification-bottomRight')[0]);\n        expect(style.top).toBe('');\n        expect(style.right).toBe('0px');\n        expect(style.bottom).toBe('100px');\n      });\n      open({\n        placement: 'bottomRight',\n      });\n      await asyncExpect(() => {\n        expect($$('.ant-notification-bottomRight').length).toBe(1);\n      });\n      // bottomLeft\n      open({\n        placement: 'bottomLeft',\n      });\n      await asyncExpect(() => {\n        style = getStyle($$('.ant-notification-bottomLeft')[0]);\n        expect(style.top).toBe('');\n        expect(style.left).toBe('0px');\n        expect(style.bottom).toBe(defaultBottom);\n      });\n      open({\n        placement: 'bottomLeft',\n      });\n      await asyncExpect(() => {\n        expect($$('.ant-notification-bottomLeft').length).toBe(1);\n      });\n      await asyncExpect(() => {});\n      await asyncExpect(() => {});\n    });\n\n    it('change notification placement by `config` method', () => {\n      let style;\n\n      // topLeft\n      config({\n        placement: 'topLeft',\n        top: '50px',\n        bottom: '50px',\n      });\n      style = getStyle($$('.ant-notification-topLeft')[0]);\n      expect(style.top).toBe('50px');\n      expect(style.left).toBe('0px');\n      expect(style.bottom).toBe('');\n\n      // topRight\n      config({\n        placement: 'topRight',\n        top: '100px',\n        bottom: '50px',\n      });\n      style = getStyle($$('.ant-notification-topRight')[0]);\n      expect(style.top).toBe('100px');\n      expect(style.right).toBe('0px');\n      expect(style.bottom).toBe('');\n\n      // bottomRight\n      config({\n        placement: 'bottomRight',\n        top: '50px',\n        bottom: '100px',\n      });\n      style = getStyle($$('.ant-notification-bottomRight')[0]);\n      expect(style.top).toBe('');\n      expect(style.right).toBe('0px');\n      expect(style.bottom).toBe('100px');\n\n      // bottomLeft\n      config({\n        placement: 'bottomLeft',\n        top: 100,\n        bottom: 50,\n      });\n      style = getStyle($$('.ant-notification-bottomLeft')[0]);\n      expect(style.top).toBe('');\n      expect(style.left).toBe('0px');\n      expect(style.bottom).toBe('50px');\n    });\n  });\n  it('change notification mountNode by `config` method', () => {\n    const $container = document.createElement('div');\n    document.body.appendChild($container);\n    config({\n      top: '50px',\n      bottom: '100px',\n      getContainer() {\n        return $container;\n      },\n    });\n    expect($container.querySelector('.ant-notification')).not.toBe(null);\n    $container.remove();\n  });\n});\n"
  },
  {
    "path": "components/notification/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法，4.5 秒后自动关闭。\n\n## en-US\n\nThe simplest usage that close the notification box after 4.5s.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">Open the notification box</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { notification } from 'ant-design-vue';\nconst openNotification = () => {\n  notification.open({\n    message: 'Notification Title',\n    description:\n      'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n    onClick: () => {\n      console.log('Notification Clicked!');\n    },\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/custom-icon.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义图标\n  en-US: Customized Icon\n---\n\n## zh-CN\n\n图标可以被自定义。\n\n## en-US\n\nThe icon can be customized to any vue node or (h) => vue node.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">Open the notification box</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\nimport { notification } from 'ant-design-vue';\nimport { h } from 'vue';\n\nconst openNotification = () => {\n  notification.open({\n    message: 'Notification Title',\n    description:\n      'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n    icon: () => h(SmileOutlined, { style: 'color: #108ee9' }),\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/custom-style.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义样式\n  en-US: Customized style\n---\n\n## zh-CN\n\n使用 `style` 和 `class` 来定义样式。\n\n## en-US\n\nThe `style` and `class` are available to customize Notification.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">Open the notification box</a-button>\n</template>\n<script>\nimport { notification } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  setup() {\n    const openNotification = () => {\n      notification.open({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n        style: {\n          width: '600px',\n          marginLeft: `${335 - 600}px`,\n        },\n        class: 'notification-custom-class',\n      });\n    };\n    return {\n      openNotification,\n    };\n  },\n});\n</script>\n<style scoped>\n.notification-custom-class {\n  color: red;\n}\n</style>\n"
  },
  {
    "path": "components/notification/demo/duration.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 自动关闭的延时\n  en-US: Duration after which the notification box is closed\n---\n\n## zh-CN\n\n自定义通知框自动关闭的延时，默认 `4.5s`，取消自动关闭只要将该值设为 `0` 即可。\n\n## en-US\n\n`Duration` can be used to specify how long the notification stays open. After the duration time elapses,\nthe notification closes automatically. If not specified, default value is 4.5 seconds. If you set the value to 0,\nthe notification box will never close automatically.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">Open the notification box</a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { notification } from 'ant-design-vue';\nconst openNotification = () => {\n  notification.open({\n    message: 'Notification Title',\n    description:\n      'I will never close automatically. I will be close automatically. I will never close automatically.',\n    duration: 0,\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/hook.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: Hooks 调用（推荐）\n  en-US: Hooks Usage (Recommend)\n---\n\n## zh-CN\n\n通过 `notification.useNotification` 创建支持读取 context 的 `contextHolder`。请注意，我们推荐通过顶层注册的方式代替 `notification` 静态方法，因为静态方法无法消费上下文，因而 ConfigProvider 的数据也不会生效。\n\n## en-US\n\nUse `notification.useNotification` to get `contextHolder` with context accessible issue. Please note that, we recommend to use top level registration instead of `notification` static method, because static method cannot consume context, and ConfigProvider data will not work.\n\n</docs>\n<template>\n  <a-space>\n    <a-button type=\"primary\" @click=\"() => open('topLeft')\">\n      <RadiusUpleftOutlined />\n      topLeft\n    </a-button>\n    <a-button type=\"primary\" @click=\"() => open('topRight')\">\n      <RadiusUprightOutlined />\n      topRight\n    </a-button>\n  </a-space>\n  <a-divider />\n  <a-space>\n    <a-button type=\"primary\" @click=\"() => open('bottomLeft')\">\n      <RadiusBottomleftOutlined />\n      bottomLeft\n    </a-button>\n    <a-button type=\"primary\" @click=\"() => open('bottomRight')\">\n      <RadiusBottomrightOutlined />\n      bottomRight\n    </a-button>\n  </a-space>\n  <contextHolder />\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  RadiusBottomleftOutlined,\n  RadiusBottomrightOutlined,\n  RadiusUpleftOutlined,\n  RadiusUprightOutlined,\n} from '@ant-design/icons-vue';\nimport { NotificationPlacement, notification } from 'ant-design-vue';\nconst [api, contextHolder] = notification.useNotification();\nconst open = (placement: NotificationPlacement) => openNotification(placement);\nconst openNotification = (placement: NotificationPlacement) => {\n  api.info({\n    message: `Notification ${placement}`,\n    description:\n      'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n    placement,\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <hook />\n    <basic />\n    <duratioin />\n    <with-icon />\n    <custom-icon />\n    <with-btn />\n    <custom-style />\n    <placement />\n    <update />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Hook from './hook.vue';\nimport Duratioin from './duration.vue';\nimport WithIcon from './with-icon.vue';\nimport CustomIcon from './custom-icon.vue';\nimport WithBtn from './with-btn.vue';\nimport CustomStyle from './custom-style.vue';\nimport Placement from './placement.vue';\nimport Update from './update.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Duratioin,\n    WithIcon,\n    CustomIcon,\n    WithBtn,\n    CustomStyle,\n    Placement,\n    Update,\n    Hook,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style>\n[id^='components-notification-demo-'] .ant-btn {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/notification/demo/placement.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 位置\n  en-US: Placement\n---\n\n## zh-CN\n\n使用 `placement` 可以配置通知从右上角、右下角、左下角、左上角弹出。\n\n## en-US\n\nA notification box can appear from the `topRight`, `bottomRight`, `bottomLeft` or `topLeft` of the viewport via `placement`.\n\n</docs>\n\n<template>\n  <div>\n    <a-button type=\"primary\" @click=\"openNotification('top')\">\n      <template #icon><BorderTopOutlined /></template>\n      top\n    </a-button>\n    <a-button type=\"primary\" @click=\"openNotification('bottom')\">\n      <template #icon><BorderBottomOutlined /></template>\n      bottom\n    </a-button>\n    <a-button type=\"primary\" @click=\"openNotification('topLeft')\">\n      <template #icon><radius-upleft-outlined /></template>\n      topLeft\n    </a-button>\n    <a-button type=\"primary\" @click=\"openNotification('topRight')\">\n      <template #icon><radius-upright-outlined /></template>\n      topRight\n    </a-button>\n    <a-divider />\n    <a-button type=\"primary\" @click=\"openNotification('bottomLeft')\">\n      <template #icon><radius-bottomleft-outlined /></template>\n      bottomLeft\n    </a-button>\n    <a-button type=\"primary\" @click=\"openNotification('bottomRight')\">\n      <template #icon><radius-bottomright-outlined /></template>\n      bottomRight\n    </a-button>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  RadiusUpleftOutlined,\n  RadiusUprightOutlined,\n  RadiusBottomleftOutlined,\n  RadiusBottomrightOutlined,\n  BorderTopOutlined,\n  BorderBottomOutlined,\n} from '@ant-design/icons-vue';\nimport { notification } from 'ant-design-vue';\nimport type { NotificationPlacement } from 'ant-design-vue';\nconst openNotification = (placement: NotificationPlacement) => {\n  notification.open({\n    message: `Notification ${placement}`,\n    description:\n      'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n    placement,\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/update.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 更新消息内容\n  en-US: Update Message Content\n---\n\n## zh-CN\n\n可以通过唯一的 key 来更新内容, 或者通过响应式数据更新。\n\n## en-US\n\nUpdate content with unique key, or use reactive data.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">\n    Open the notification box (update by key)\n  </a-button>\n  <br />\n  <br />\n  <a-button type=\"primary\" @click=\"openNotification2\">\n    Open the notification box (update by reactive)\n  </a-button>\n</template>\n<script lang=\"ts\" setup>\nimport { notification } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst key = 'updatable';\nconst openNotification = () => {\n  notification.open({\n    key,\n    message: 'Notification Title',\n    description: 'description.',\n  });\n  setTimeout(() => {\n    notification.open({\n      key,\n      message: 'New Title',\n      description: 'New description.',\n    });\n  }, 1000);\n};\nconst message = ref('Notification Title');\nconst description = ref('description');\nconst openNotification2 = () => {\n  // content must use function\n  notification.open({\n    message: () => message.value,\n    description: () => description.value,\n  });\n  setTimeout(() => {\n    message.value = 'New Title';\n    description.value = 'New description.';\n  }, 1000);\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/with-btn.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义按钮\n  en-US: Custom close button\n---\n\n## zh-CN\n\n自定义关闭按钮的样式和文字。\n\n## en-US\n\nTo customize the style or font of the close button.\n\n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"openNotification\">Open the notification box</a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { notification, Button } from 'ant-design-vue';\nimport { h } from 'vue';\n\nconst close = () => {\n  console.log(\n    'Notification was closed. Either the close button was clicked or duration time elapsed.',\n  );\n};\nconst openNotification = () => {\n  const key = `open${Date.now()}`;\n  notification.open({\n    message: 'Notification Title',\n    description:\n      'A function will be be called after the notification is closed (automatically after the \"duration\" time of manually).',\n    btn: () =>\n      h(\n        Button,\n        {\n          type: 'primary',\n          size: 'small',\n          onClick: () => notification.close(key),\n        },\n        { default: () => 'Confirm' },\n      ),\n    key,\n    onClose: close,\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/demo/with-icon.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 带有图标的通知提醒框\n  en-US: Notification with icon\n---\n\n## zh-CN\n\n通知提醒框左侧有图标。\n\n## en-US\n\nA notification box with a icon at the left side.\n\n</docs>\n\n<template>\n  <div>\n    <a-button @click=\"() => openNotificationWithIcon('success')\">Success</a-button>\n    <a-button @click=\"() => openNotificationWithIcon('info')\">Info</a-button>\n    <a-button @click=\"() => openNotificationWithIcon('warning')\">Warning</a-button>\n    <a-button @click=\"() => openNotificationWithIcon('error')\">Error</a-button>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { notification } from 'ant-design-vue';\nconst openNotificationWithIcon = (type: string) => {\n  notification[type]({\n    message: 'Notification Title',\n    description:\n      'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n  });\n};\n</script>\n"
  },
  {
    "path": "components/notification/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Notification\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*6RWNQ78WtvEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*9hTIToR-3YYAAAAAAAAAAAAADrJ8AQ/original\n---\n\nDisplay a notification message globally.\n\n## When To Use\n\nTo display a notification message at any of the four corners of the viewport. Typically it can be used in the following cases:\n\n- A notification with complex content.\n- A notification providing a feedback based on the user interaction. Or it may show some details about upcoming steps the user may have to follow.\n- A notification that is pushed by the application.\n\n## API\n\n- `notification.success(config)`\n- `notification.error(config)`\n- `notification.info(config)`\n- `notification.warning(config)`\n- `notification.warn(config)`\n- `notification.open(config)`\n- `notification.close(key: String)`\n- `notification.destroy()`\n- `notification.useNotification()`\n\nThe properties of config are as follows:\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels). | string | `24px` |  |\n| btn | Customized close button | VNode \\| () => VNode | - |  |\n| class | Customized CSS class | string | - |  |\n| closeIcon | custom close icon | VNode \\| () => VNode | - |  |\n| description | The content of notification box (required) | string\\| VNode \\| () => VNode | - |  |\n| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 |  |\n| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body |  |\n| icon | Customized icon | VNode \\| () => VNode | - |  |\n| key | The unique identifier of the Notification | string | - |  |\n| message | The title of notification box (required) | string\\| VNode \\| () => VNode | - |  |\n| placement | Position of Notification, can be one of `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` | string | `topRight` | `top` `bottom` 3.3.0 |\n| style | Customized inline style | Object \\| string | - |  |\n| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels). | string | `24px` |  |\n| onClick | Specify a function that will be called when the notification is clicked | Function | - |  |\n| onClose | Specify a function that will be called when the close button is clicked | Function | - |  |\n\n`notification` also provides a global `config()` method that can be used for specifying the default options. Once this method is used, all the notification boxes will take into account these globally defined options when displaying.\n\n- `notification.config(options)`\n\n  > When you use `ConfigProvider` for global configuration, the system will automatically start RTL mode by default.(4.3.0+)\n  >\n  > When you want to use it alone, you can start the RTL mode through the following settings.\n\n```js\nnotification.config({\n  placement: 'bottomRight',\n  bottom: '50px',\n  duration: 3,\n  rtl: true,\n});\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels). | string | `24px` |  |\n| closeIcon | custom close icon | VNode \\| () => VNode | - |  |\n| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 |  |\n| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body |  |\n| maxCount | Max Notification show, drop oldest if exceed limit | number | - | 3.0 |\n| placement | Position of Notification, can be one of `topLeft` `topRight` `bottomLeft` `bottomRight` | string | `topRight` |  |\n| rtl | Whether to enable RTL mode | boolean | false |  |\n| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels). | string | `24px` |  |\n\n## FAQ\n\n### Why I can not access context, Pinia, ConfigProvider `locale/prefixCls/theme` in notification?\n\nantdv will dynamic create Vue instance by `Vue.render` when call notification methods. Whose context is different with origin code located context.\n\nWhen you need context info (like ConfigProvider context), you can use `notification.useNotification` to get `api` instance and `contextHolder` node. And put it in your children:\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { notification } from 'ant-design-vue';\n  const [notificationApi, contextHolder] = notification.useNotification();\n  notificationApi.open({\n    // ...\n  });\n</script>\n```\n\n**Note:** You must insert `contextHolder` into your children with hooks. You can use origin method if you do not need context connection.\n\n> [App Package Component](/components/app) can be used to simplify the problem of `useNotification` and other methods that need to manually implant contextHolder.\n\n### How to set static methods prefixCls ？\n\nYou can config with [`ConfigProvider.config`](/components/config-provider#configproviderconfig-4130)\n"
  },
  {
    "path": "components/notification/index.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport Notification from '../vc-notification';\nimport CheckCircleOutlined from '@ant-design/icons-vue/CheckCircleOutlined';\nimport InfoCircleOutlined from '@ant-design/icons-vue/InfoCircleOutlined';\nimport CloseCircleOutlined from '@ant-design/icons-vue/CloseCircleOutlined';\nimport ExclamationCircleOutlined from '@ant-design/icons-vue/ExclamationCircleOutlined';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport type { VueNode } from '../_util/type';\nimport { renderHelper } from '../_util/util';\nimport { globalConfig } from '../config-provider';\nimport type { NotificationInstance as VCNotificationInstance } from '../vc-notification/Notification';\nimport classNames from '../_util/classNames';\nimport useStyle from './style';\nimport useNotification from './useNotification';\nimport { getPlacementStyle } from './util';\n\nexport type NotificationPlacement =\n  | 'top'\n  | 'topLeft'\n  | 'topRight'\n  | 'bottom'\n  | 'bottomLeft'\n  | 'bottomRight';\n\nexport type IconType = 'success' | 'info' | 'error' | 'warning';\n\nexport interface ConfigProps {\n  top?: string | number;\n  bottom?: string | number;\n  duration?: number;\n  prefixCls?: string;\n  placement?: NotificationPlacement;\n  getContainer?: () => HTMLElement;\n  closeIcon?: VueNode | (() => VueNode);\n  rtl?: boolean;\n  maxCount?: number;\n}\n\nconst notificationInstance: { [key: string]: VCNotificationInstance } = {};\nlet defaultDuration = 4.5;\nlet defaultTop = '24px';\nlet defaultBottom = '24px';\nlet defaultPrefixCls = '';\nlet defaultPlacement: NotificationPlacement = 'topRight';\nlet defaultGetContainer = () => document.body;\nlet defaultCloseIcon = null;\nlet rtl = false;\nlet maxCount: number;\n\nfunction setNotificationConfig(options: ConfigProps) {\n  const { duration, placement, bottom, top, getContainer, closeIcon, prefixCls } = options;\n  if (prefixCls !== undefined) {\n    defaultPrefixCls = prefixCls;\n  }\n  if (duration !== undefined) {\n    defaultDuration = duration;\n  }\n  if (placement !== undefined) {\n    defaultPlacement = placement;\n  }\n  if (bottom !== undefined) {\n    defaultBottom = typeof bottom === 'number' ? `${bottom}px` : bottom;\n  }\n  if (top !== undefined) {\n    defaultTop = typeof top === 'number' ? `${top}px` : top;\n  }\n  if (getContainer !== undefined) {\n    defaultGetContainer = getContainer;\n  }\n  if (closeIcon !== undefined) {\n    defaultCloseIcon = closeIcon;\n  }\n  if (options.rtl !== undefined) {\n    rtl = options.rtl;\n  }\n  if (options.maxCount !== undefined) {\n    maxCount = options.maxCount;\n  }\n}\n\nfunction getNotificationInstance(\n  {\n    prefixCls: customizePrefixCls,\n    placement = defaultPlacement,\n    getContainer = defaultGetContainer,\n    top,\n    bottom,\n    closeIcon = defaultCloseIcon,\n    appContext,\n  }: NotificationArgsProps,\n  callback: (n: VCNotificationInstance) => void,\n) {\n  const { getPrefixCls } = globalConfig();\n  const prefixCls = getPrefixCls('notification', customizePrefixCls || defaultPrefixCls);\n  const cacheKey = `${prefixCls}-${placement}-${rtl}`;\n  const cacheInstance = notificationInstance[cacheKey];\n  if (cacheInstance) {\n    Promise.resolve(cacheInstance).then(instance => {\n      callback(instance);\n    });\n\n    return;\n  }\n\n  const notificationClass = classNames(`${prefixCls}-${placement}`, {\n    [`${prefixCls}-rtl`]: rtl === true,\n  });\n  Notification.newInstance(\n    {\n      name: 'notification',\n      prefixCls: customizePrefixCls || defaultPrefixCls,\n      useStyle,\n      class: notificationClass,\n      style: getPlacementStyle(placement, top ?? defaultTop, bottom ?? defaultBottom),\n      appContext,\n      getContainer,\n      closeIcon: ({ prefixCls }) => {\n        const closeIconToRender = (\n          <span class={`${prefixCls}-close-x`}>\n            {renderHelper(closeIcon, {}, <CloseOutlined class={`${prefixCls}-close-icon`} />)}\n          </span>\n        );\n        return closeIconToRender;\n      },\n      maxCount,\n      hasTransitionName: true,\n    },\n    (notification: any) => {\n      notificationInstance[cacheKey] = notification;\n      callback(notification);\n    },\n  );\n}\n\nconst typeToIcon = {\n  success: CheckCircleOutlined,\n  info: InfoCircleOutlined,\n  error: CloseCircleOutlined,\n  warning: ExclamationCircleOutlined,\n};\n\nexport interface NotificationArgsProps {\n  message: VueNode | (() => VueNode);\n  description?: VueNode | (() => VueNode);\n  btn?: VueNode | (() => VueNode);\n  key?: string;\n  onClose?: () => void;\n  duration?: number | null;\n  icon?: VueNode | (() => VueNode);\n  placement?: NotificationPlacement;\n  maxCount?: number;\n  style?: CSSProperties;\n  prefixCls?: string;\n  class?: string;\n  readonly type?: IconType;\n  onClick?: () => void;\n  top?: string | number;\n  bottom?: string | number;\n  getContainer?: () => HTMLElement;\n  closeIcon?: VueNode | (() => VueNode);\n  appContext?: any;\n}\n\nfunction notice(args: NotificationArgsProps) {\n  const { icon, type, description, message, btn } = args;\n  const duration = args.duration === undefined ? defaultDuration : args.duration;\n  getNotificationInstance(args, notification => {\n    notification.notice({\n      content: ({ prefixCls: outerPrefixCls }) => {\n        const prefixCls = `${outerPrefixCls}-notice`;\n        let iconNode = null;\n        if (icon) {\n          iconNode = () => <span class={`${prefixCls}-icon`}>{renderHelper(icon)}</span>;\n        } else if (type) {\n          const Icon = typeToIcon[type];\n          iconNode = () => <Icon class={`${prefixCls}-icon ${prefixCls}-icon-${type}`} />;\n        }\n        return (\n          <div class={iconNode ? `${prefixCls}-with-icon` : ''}>\n            {iconNode && iconNode()}\n            <div class={`${prefixCls}-message`}>\n              {!description && iconNode ? (\n                <span class={`${prefixCls}-message-single-line-auto-margin`} />\n              ) : null}\n              {renderHelper(message)}\n            </div>\n            <div class={`${prefixCls}-description`}>{renderHelper(description)}</div>\n            {btn ? <span class={`${prefixCls}-btn`}>{renderHelper(btn)}</span> : null}\n          </div>\n        );\n      },\n      duration,\n      closable: true,\n      onClose: args.onClose,\n      onClick: args.onClick,\n      key: args.key,\n      style: args.style || {},\n      class: args.class,\n    });\n  });\n}\n\nconst api: any = {\n  open: notice,\n  close(key: string) {\n    Object.keys(notificationInstance).forEach(cacheKey =>\n      Promise.resolve(notificationInstance[cacheKey]).then(instance => {\n        instance.removeNotice(key);\n      }),\n    );\n  },\n  config: setNotificationConfig,\n  destroy() {\n    Object.keys(notificationInstance).forEach(cacheKey => {\n      Promise.resolve(notificationInstance[cacheKey]).then(instance => {\n        instance.destroy();\n      });\n      delete notificationInstance[cacheKey]; // lgtm[js/missing-await]\n    });\n  },\n};\n\nconst iconTypes: IconType[] = ['success', 'info', 'warning', 'error'];\niconTypes.forEach(type => {\n  api[type] = args =>\n    api.open({\n      ...args,\n      type,\n    });\n});\n\napi.warn = api.warning;\napi.useNotification = useNotification;\n\nexport interface NotificationInstance {\n  success(args: NotificationArgsProps): void;\n  error(args: NotificationArgsProps): void;\n  info(args: NotificationArgsProps): void;\n  warning(args: NotificationArgsProps): void;\n  open(args: NotificationArgsProps): void;\n}\n\nexport interface NotificationApi extends NotificationInstance {\n  warn(args: NotificationArgsProps): void;\n  close(key: string): void;\n  config(options: ConfigProps): void;\n  destroy(): void;\n  useNotification: typeof useNotification;\n}\n\n/** @private test Only function. Not work on production */\nexport const getInstance = async (cacheKey: string) =>\n  process.env.NODE_ENV === 'test' ? notificationInstance[cacheKey] : null;\n\nexport default api as NotificationApi;\n"
  },
  {
    "path": "components/notification/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Notification\nsubtitle: 通知提醒框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*6RWNQ78WtvEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*9hTIToR-3YYAAAAAAAAAAAAADrJ8AQ/original\n---\n\n全局展示通知提醒信息。\n\n## 何时使用\n\n在系统四个角显示通知提醒信息。经常用于以下情况：\n\n- 较为复杂的通知内容。\n- 带有交互的通知，给出用户下一步的行动点。\n- 系统主动推送。\n\n## API\n\n- `notification.success(config)`\n- `notification.error(config)`\n- `notification.info(config)`\n- `notification.warning(config)`\n- `notification.warn(config)`\n- `notification.open(config)`\n- `notification.close(key: String)`\n- `notification.destroy()`\n- `notification.useNotification()`\n\nconfig 参数如下：\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| bottom | 消息从底部弹出时，距离底部的位置，单位像素。 | string | `24px` |  |\n| btn | 自定义关闭按钮 | VNode \\| () => VNode | - |  |\n| class | 自定义 CSS class | string | - |  |\n| closeIcon | 自定义关闭图标 | VNode \\| () => VNode | - |  |\n| description | 通知提醒内容，必选 | string \\| VNode \\| () => VNode | - |  |\n| duration | 默认 4.5 秒后自动关闭，配置为 null 则不自动关闭 | number | 4.5 |  |\n| getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body |  |\n| icon | 自定义图标 | VNode \\| () => VNode | - |  |\n| key | 当前通知唯一标志 | string | - |  |\n| message | 通知提醒标题，必选 | string \\| VNode \\| () => VNode | - |  |\n| placement | 弹出位置，可选 `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` | string | `topRight` | `top` `bottom` 3.3.0 |\n| style | 自定义内联样式 | Object \\| string | - |  |\n| top | 消息从顶部弹出时，距离顶部的位置，单位像素。 | string | `24px` |  |\n| onClick | 点击通知时触发的回调函数 | Function | - |  |\n| onClose | 点击默认关闭按钮时触发的回调函数 | Function | - |  |\n\n还提供了一个全局配置方法，在调用前提前配置，全局一次生效。\n\n- `notification.config(options)`\n\n  > 当你使用 `ConfigProvider` 进行全局化配置时，系统会默认自动开启 RTL 模式。(3.0+)\n  >\n  > 当你想单独使用，可通过如下设置开启 RTL 模式。\n\n```js\nnotification.config({\n  placement: 'bottomRight',\n  bottom: '50px',\n  duration: 3,\n  rtl: true,\n});\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| bottom | 消息从底部弹出时，距离底部的位置，单位像素。 | string | `24px` |  |\n| closeIcon | 自定义关闭图标 | VNode \\| () => VNode | - |  |\n| duration | 默认自动关闭延时，单位秒 | number | 4.5 |  |\n| getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body |  |\n| maxCount | 最大显示数, 超过限制时，最早的消息会被自动关闭 | number | - | 3.0 |\n| placement | 弹出位置，可选 `topLeft` `topRight` `bottomLeft` `bottomRight` | string | topRight |  |\n| rtl | 是否开启 RTL 模式 | boolean | false | 3.0 |\n| top | 消息从顶部弹出时，距离顶部的位置，单位像素。 | string | `24px` |  |\n\n## FAQ\n\n### 为什么 notification 不能获取 context、Pinia 的内容和 ConfigProvider 的 `locale/prefixCls/theme` 等配置？\n\n直接调用 notification 方法，antdv 会通过 `Vue.render` 动态创建新的 Vue 实体。其 context 与当前代码所在 context 并不相同，因而无法获取 context 信息。\n\n当你需要 context 信息（例如 ConfigProvider 配置的内容）时，可以通过 `notification.useNotification` 方法会返回 `api` 实体以及 `contextHolder` 节点。将其插入到你需要获取 context 位置即可：\n\n```html\n<template>\n  <contextHolder />\n  <!-- <component :is='contextHolder'/> -->\n</template>\n<script setup>\n  import { notification } from 'ant-design-vue';\n  const [notificationApi, contextHolder] = notification.useNotification();\n  notificationApi.open({\n    // ...\n  });\n</script>\n```\n\n**异同**：通过 hooks 创建的 `contextHolder` 必须插入到子元素节点中才会生效，当你不需要上下文信息时请直接调用。\n\n> 可通过 [App 包裹组件](/components/app-cn) 简化 `useNotification` 等方法需要手动植入 contextHolder 的问题。\n\n### 静态方法如何设置 prefixCls ？\n\n你可以通过 [`ConfigProvider.config`](/components/config-provider-cn#configproviderconfig-4130) 进行设置。\n"
  },
  {
    "path": "components/notification/interface.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { Key, VueNode } from '../_util/type';\n\nexport type NotificationPlacement =\n  | 'top'\n  | 'topLeft'\n  | 'topRight'\n  | 'bottom'\n  | 'bottomLeft'\n  | 'bottomRight';\n\nexport type IconType = 'success' | 'info' | 'error' | 'warning';\n\nexport interface ArgsProps {\n  message: (() => VueNode) | VueNode;\n  description?: (() => VueNode) | VueNode;\n  btn?: (() => VueNode) | VueNode;\n  key?: Key;\n  onClose?: () => void;\n  duration?: number | null;\n  icon?: (() => VueNode) | VueNode;\n  placement?: NotificationPlacement;\n  style?: CSSProperties;\n  class?: string;\n  readonly type?: IconType;\n  onClick?: () => void;\n  closeIcon?: (() => VueNode) | VueNode;\n}\n\ntype StaticFn = (args: ArgsProps) => void;\n\nexport interface NotificationInstance {\n  success: StaticFn;\n  error: StaticFn;\n  info: StaticFn;\n  warning: StaticFn;\n  open: StaticFn;\n  destroy(key?: Key): void;\n}\n\nexport interface GlobalConfigProps {\n  top?: number | string;\n  bottom?: number | string;\n  duration?: number;\n  prefixCls?: string;\n  getContainer?: () => HTMLElement;\n  placement?: NotificationPlacement;\n  closeIcon?: (() => VueNode) | VueNode;\n  rtl?: boolean;\n  maxCount?: number;\n}\n\nexport interface NotificationConfig {\n  top?: number | string;\n  bottom?: number | string;\n  prefixCls?: string;\n  getContainer?: () => HTMLElement;\n  placement?: NotificationPlacement;\n  maxCount?: number;\n  rtl?: boolean;\n}\n"
  },
  {
    "path": "components/notification/style/index.ts",
    "content": "import { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genNotificationPlacementStyle from './placement';\nimport { resetComponent } from '../../style';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  zIndexPopup: number;\n  width: number;\n}\n\nexport interface NotificationToken extends FullToken<'Notification'> {\n  notificationBg: string;\n  notificationPaddingVertical: number;\n  notificationPaddingHorizontal: number;\n  notificationPadding: string;\n  notificationMarginBottom: number;\n  notificationMarginEdge: number;\n  animationMaxHeight: number;\n  notificationIconSize: number;\n  notificationCloseButtonSize: number;\n}\n\nconst genNotificationStyle: GenerateStyle<NotificationToken> = token => {\n  const {\n    iconCls,\n    componentCls, // .ant-notification\n    boxShadowSecondary,\n    fontSizeLG,\n    notificationMarginBottom,\n    borderRadiusLG,\n    colorSuccess,\n    colorInfo,\n    colorWarning,\n    colorError,\n    colorTextHeading,\n    notificationBg,\n    notificationPadding,\n    notificationMarginEdge,\n    motionDurationMid,\n    motionEaseInOut,\n    fontSize,\n    lineHeight,\n    width,\n    notificationIconSize,\n  } = token;\n\n  const noticeCls = `${componentCls}-notice`;\n\n  const notificationFadeIn = new Keyframes('antNotificationFadeIn', {\n    '0%': {\n      left: {\n        _skip_check_: true,\n        value: width,\n      },\n      opacity: 0,\n    },\n\n    '100%': {\n      left: {\n        _skip_check_: true,\n        value: 0,\n      },\n      opacity: 1,\n    },\n  });\n\n  const notificationFadeOut = new Keyframes('antNotificationFadeOut', {\n    '0%': {\n      maxHeight: token.animationMaxHeight,\n      marginBottom: notificationMarginBottom,\n      opacity: 1,\n    },\n\n    '100%': {\n      maxHeight: 0,\n      marginBottom: 0,\n      paddingTop: 0,\n      paddingBottom: 0,\n      opacity: 0,\n    },\n  });\n\n  return [\n    // ============================ Holder ============================\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n\n        position: 'fixed',\n        zIndex: token.zIndexPopup,\n        marginInlineEnd: notificationMarginEdge,\n\n        [`${componentCls}-hook-holder`]: {\n          position: 'relative',\n        },\n\n        [`&${componentCls}-top, &${componentCls}-bottom`]: {\n          [`${componentCls}-notice`]: {\n            marginInline: 'auto auto',\n          },\n        },\n\n        [`&${componentCls}-topLeft, &${componentCls}-bottomLeft`]: {\n          [`${componentCls}-notice`]: {\n            marginInlineEnd: 'auto',\n            marginInlineStart: 0,\n          },\n        },\n\n        //  animation\n        [`${componentCls}-fade-enter, ${componentCls}-fade-appear`]: {\n          animationDuration: token.motionDurationMid,\n          animationTimingFunction: motionEaseInOut,\n          animationFillMode: 'both',\n          opacity: 0,\n          animationPlayState: 'paused',\n        },\n\n        [`${componentCls}-fade-leave`]: {\n          animationTimingFunction: motionEaseInOut,\n          animationFillMode: 'both',\n\n          animationDuration: motionDurationMid,\n          animationPlayState: 'paused',\n        },\n\n        [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:\n          {\n            animationName: notificationFadeIn,\n            animationPlayState: 'running',\n          },\n\n        [`${componentCls}-fade-leave${componentCls}-fade-leave-active`]: {\n          animationName: notificationFadeOut,\n          animationPlayState: 'running',\n        },\n\n        // placement\n        ...genNotificationPlacementStyle(token),\n\n        // RTL\n        '&-rtl': {\n          direction: 'rtl',\n\n          [`${componentCls}-notice-btn`]: {\n            float: 'left',\n          },\n        },\n      },\n    },\n\n    // ============================ Notice ============================\n    {\n      [noticeCls]: {\n        position: 'relative',\n        width,\n        maxWidth: `calc(100vw - ${notificationMarginEdge * 2}px)`,\n        marginBottom: notificationMarginBottom,\n        marginInlineStart: 'auto',\n        padding: notificationPadding,\n        overflow: 'hidden',\n        lineHeight,\n        wordWrap: 'break-word',\n        background: notificationBg,\n        borderRadius: borderRadiusLG,\n        boxShadow: boxShadowSecondary,\n\n        [`${componentCls}-close-icon`]: {\n          fontSize,\n          cursor: 'pointer',\n        },\n\n        [`${noticeCls}-message`]: {\n          marginBottom: token.marginXS,\n          color: colorTextHeading,\n          fontSize: fontSizeLG,\n          lineHeight: token.lineHeightLG,\n        },\n\n        [`${noticeCls}-description`]: {\n          fontSize,\n        },\n\n        [`&${noticeCls}-closable ${noticeCls}-message`]: {\n          paddingInlineEnd: token.paddingLG,\n        },\n\n        [`${noticeCls}-with-icon ${noticeCls}-message`]: {\n          marginBottom: token.marginXS,\n          marginInlineStart: token.marginSM + notificationIconSize,\n          fontSize: fontSizeLG,\n        },\n\n        [`${noticeCls}-with-icon ${noticeCls}-description`]: {\n          marginInlineStart: token.marginSM + notificationIconSize,\n          fontSize,\n        },\n\n        // Icon & color style in different selector level\n        // https://github.com/ant-design/ant-design/issues/16503\n        // https://github.com/ant-design/ant-design/issues/15512\n        [`${noticeCls}-icon`]: {\n          position: 'absolute',\n          fontSize: notificationIconSize,\n          lineHeight: 0,\n\n          // icon-font\n          [`&-success${iconCls}`]: {\n            color: colorSuccess,\n          },\n          [`&-info${iconCls}`]: {\n            color: colorInfo,\n          },\n          [`&-warning${iconCls}`]: {\n            color: colorWarning,\n          },\n          [`&-error${iconCls}`]: {\n            color: colorError,\n          },\n        },\n\n        [`${noticeCls}-close`]: {\n          position: 'absolute',\n          top: token.notificationPaddingVertical,\n          insetInlineEnd: token.notificationPaddingHorizontal,\n          color: token.colorIcon,\n          outline: 'none',\n          width: token.notificationCloseButtonSize,\n          height: token.notificationCloseButtonSize,\n          borderRadius: token.borderRadiusSM,\n          transition: `background-color ${token.motionDurationMid}, color ${token.motionDurationMid}`,\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n\n          '&:hover': {\n            color: token.colorIconHover,\n            backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n          },\n        },\n\n        [`${noticeCls}-btn`]: {\n          float: 'right',\n          marginTop: token.marginSM,\n        },\n      },\n    },\n\n    // ============================= Pure =============================\n    {\n      [`${noticeCls}-pure-panel`]: {\n        margin: 0,\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Notification',\n  token => {\n    const notificationPaddingVertical = token.paddingMD;\n    const notificationPaddingHorizontal = token.paddingLG;\n\n    const notificationToken = mergeToken<NotificationToken>(token, {\n      // default.less variables\n      notificationBg: token.colorBgElevated,\n      notificationPaddingVertical,\n      notificationPaddingHorizontal,\n      // index.less variables\n      notificationPadding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`,\n      notificationMarginBottom: token.margin,\n      notificationMarginEdge: token.marginLG,\n      animationMaxHeight: 150,\n      notificationIconSize: token.fontSizeLG * token.lineHeightLG,\n      notificationCloseButtonSize: token.controlHeightLG * 0.55,\n    });\n\n    return [genNotificationStyle(notificationToken)];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase + 50,\n    width: 384,\n  }),\n);\n"
  },
  {
    "path": "components/notification/style/placement.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { NotificationToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genNotificationPlacementStyle: GenerateStyle<NotificationToken, CSSObject> = token => {\n  const { componentCls, width, notificationMarginEdge } = token;\n\n  const notificationTopFadeIn = new Keyframes('antNotificationTopFadeIn', {\n    '0%': {\n      marginTop: '-100%',\n      opacity: 0,\n    },\n\n    '100%': {\n      marginTop: 0,\n      opacity: 1,\n    },\n  });\n\n  const notificationBottomFadeIn = new Keyframes('antNotificationBottomFadeIn', {\n    '0%': {\n      marginBottom: '-100%',\n      opacity: 0,\n    },\n\n    '100%': {\n      marginBottom: 0,\n      opacity: 1,\n    },\n  });\n\n  const notificationLeftFadeIn = new Keyframes('antNotificationLeftFadeIn', {\n    '0%': {\n      right: {\n        _skip_check_: true,\n        value: width,\n      },\n      opacity: 0,\n    },\n\n    '100%': {\n      right: {\n        _skip_check_: true,\n        value: 0,\n      },\n      opacity: 1,\n    },\n  });\n\n  return {\n    [`&${componentCls}-top, &${componentCls}-bottom`]: {\n      marginInline: 0,\n    },\n\n    [`&${componentCls}-top`]: {\n      [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:\n        {\n          animationName: notificationTopFadeIn,\n        },\n    },\n\n    [`&${componentCls}-bottom`]: {\n      [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:\n        {\n          animationName: notificationBottomFadeIn,\n        },\n    },\n\n    [`&${componentCls}-topLeft, &${componentCls}-bottomLeft`]: {\n      marginInlineEnd: 0,\n      marginInlineStart: notificationMarginEdge,\n\n      [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:\n        {\n          animationName: notificationLeftFadeIn,\n        },\n    },\n  };\n};\nexport default genNotificationPlacementStyle;\n"
  },
  {
    "path": "components/notification/useNotification.tsx",
    "content": "import type { VNode } from 'vue';\nimport { shallowRef, computed, defineComponent } from 'vue';\nimport { useNotification as useVcNotification } from '../vc-notification';\nimport type { NotificationAPI } from '../vc-notification';\nimport type {\n  NotificationInstance,\n  ArgsProps,\n  NotificationPlacement,\n  NotificationConfig,\n} from './interface';\n\nimport useStyle from './style';\nimport { getCloseIcon, PureContent } from './PurePanel';\nimport { getMotion, getPlacementStyle } from './util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\nimport type { Key } from '../_util/type';\n\nconst DEFAULT_OFFSET = 24;\nconst DEFAULT_DURATION = 4.5;\n\n// ==============================================================================\n// ==                                  Holder                                  ==\n// ==============================================================================\ntype HolderProps = NotificationConfig & {\n  onAllRemoved?: VoidFunction;\n  getPopupContainer?: () => HTMLElement;\n};\n\ninterface HolderRef extends NotificationAPI {\n  prefixCls: string;\n  hashId: string;\n}\n\nconst Holder = defineComponent({\n  name: 'Holder',\n  inheritAttrs: false,\n  props: ['prefixCls', 'class', 'type', 'icon', 'content', 'onAllRemoved'],\n  setup(props: HolderProps, { expose }) {\n    const { getPrefixCls, getPopupContainer } = useConfigInject('notification', props);\n    const prefixCls = computed(() => props.prefixCls || getPrefixCls('notification'));\n    // =============================== Style ===============================\n    const getStyles = (placement: NotificationPlacement) =>\n      getPlacementStyle(placement, props.top ?? DEFAULT_OFFSET, props.bottom ?? DEFAULT_OFFSET);\n\n    // Style\n    const [, hashId] = useStyle(prefixCls);\n\n    const getClassName = () => classNames(hashId.value, { [`${prefixCls.value}-rtl`]: props.rtl });\n\n    // ============================== Motion ===============================\n    const getNotificationMotion = () => getMotion(prefixCls.value);\n\n    // ============================== Origin ===============================\n    const [api, holder] = useVcNotification({\n      prefixCls: prefixCls.value,\n      getStyles,\n      getClassName,\n      motion: getNotificationMotion,\n      closable: true,\n      closeIcon: getCloseIcon(prefixCls.value),\n      duration: DEFAULT_DURATION,\n      getContainer: () =>\n        props.getPopupContainer?.() || getPopupContainer.value?.() || document.body,\n      maxCount: props.maxCount,\n      hashId: hashId.value,\n      onAllRemoved: props.onAllRemoved,\n    });\n\n    // ================================ Ref ================================\n    expose({\n      ...api,\n      prefixCls: prefixCls.value,\n      hashId,\n    });\n    return holder;\n  },\n});\n\n// ==============================================================================\n// ==                                   Hook                                   ==\n// ==============================================================================\nexport function useInternalNotification(\n  notificationConfig?: HolderProps,\n): readonly [NotificationInstance, () => VNode] {\n  const holderRef = shallowRef<HolderRef>(null);\n  const holderKey = Symbol('notificationHolderKey');\n  // ================================ API ================================\n  // Wrap with notification content\n\n  // >>> Open\n  const open = (config: ArgsProps) => {\n    if (!holderRef.value) {\n      return;\n    }\n    const { open: originOpen, prefixCls, hashId } = holderRef.value;\n    const noticePrefixCls = `${prefixCls}-notice`;\n\n    const { message, description, icon, type, btn, class: className, ...restConfig } = config;\n    return originOpen({\n      placement: 'topRight',\n      ...restConfig,\n      content: () => (\n        <PureContent\n          prefixCls={noticePrefixCls}\n          icon={typeof icon === 'function' ? icon() : icon}\n          type={type}\n          message={typeof message === 'function' ? message() : message}\n          description={typeof description === 'function' ? description() : description}\n          btn={typeof btn === 'function' ? btn() : btn}\n        />\n      ),\n      // @ts-ignore\n      class: classNames(type && `${noticePrefixCls}-${type}`, hashId, className),\n    });\n  };\n\n  // >>> destroy\n  const destroy = (key?: Key) => {\n    if (key !== undefined) {\n      holderRef.value?.close(key);\n    } else {\n      holderRef.value?.destroy();\n    }\n  };\n\n  const wrapAPI = {\n    open,\n    destroy,\n  } as NotificationInstance;\n\n  const keys = ['success', 'info', 'warning', 'error'] as const;\n  keys.forEach(type => {\n    wrapAPI[type] = config =>\n      open({\n        ...config,\n        type,\n      });\n  });\n\n  // ============================== Return ===============================\n  return [\n    wrapAPI,\n    () => <Holder key={holderKey} {...notificationConfig} ref={holderRef} />,\n  ] as const;\n}\n\nexport default function useNotification(notificationConfig?: NotificationConfig) {\n  return useInternalNotification(notificationConfig);\n}\n"
  },
  {
    "path": "components/notification/util.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { NotificationPlacement } from './interface';\nimport type { CSSMotionProps } from '../_util/transition';\n\nexport function getPlacementStyle(\n  placement: NotificationPlacement,\n  top: number | string,\n  bottom: number | string,\n) {\n  let style: CSSProperties;\n  top = typeof top === 'number' ? `${top}px` : top;\n  bottom = typeof bottom === 'number' ? `${bottom}px` : bottom;\n  switch (placement) {\n    case 'top':\n      style = {\n        left: '50%',\n        transform: 'translateX(-50%)',\n        right: 'auto',\n        top,\n        bottom: 'auto',\n      };\n      break;\n\n    case 'topLeft':\n      style = {\n        left: 0,\n        top,\n        bottom: 'auto',\n      };\n      break;\n\n    case 'topRight':\n      style = {\n        right: 0,\n        top,\n        bottom: 'auto',\n      };\n      break;\n\n    case 'bottom':\n      style = {\n        left: '50%',\n        transform: 'translateX(-50%)',\n        right: 'auto',\n        top: 'auto',\n        bottom,\n      };\n      break;\n\n    case 'bottomLeft':\n      style = {\n        left: 0,\n        top: 'auto',\n        bottom,\n      };\n      break;\n\n    default:\n      style = {\n        right: 0,\n        top: 'auto',\n        bottom,\n      };\n      break;\n  }\n  return style;\n}\n\nexport function getMotion(prefixCls: string): CSSMotionProps {\n  return {\n    name: `${prefixCls}-fade`,\n  };\n}\n"
  },
  {
    "path": "components/page-header/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/page-header/demo/actions.vue correctly 1`] = `\n<div>\n  <div\n    class=\"ant-page-header ant-page-header-ghost demo-page-header\"\n    style=\"border: 1px solid rgb(235, 237, 240);\"\n  >\n    <!---->\n    <div\n      class=\"ant-page-header-heading\"\n    >\n      <div\n        class=\"ant-page-header-heading-left\"\n      >\n        <div\n          class=\"ant-page-header-back\"\n        >\n          <div\n            aria-label=\"Back\"\n            class=\"ant-page-header-back-button\"\n            role=\"button\"\n            style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"\n            tabindex=\"0\"\n          >\n            \n            <span\n              aria-label=\"arrow-left\"\n              class=\"anticon anticon-arrow-left\"\n              role=\"img\"\n            >\n              <svg\n                aria-hidden=\"true\"\n                class=\"\"\n                data-icon=\"arrow-left\"\n                fill=\"currentColor\"\n                focusable=\"false\"\n                height=\"1em\"\n                viewBox=\"64 64 896 896\"\n                width=\"1em\"\n              >\n                <path\n                  d=\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"\n                />\n              </svg>\n            </span>\n            \n          </div>\n        </div>\n        <!---->\n        <span\n          class=\"ant-page-header-heading-title\"\n          title=\"Title\"\n        >\n          Title\n        </span>\n        <span\n          class=\"ant-page-header-heading-sub-title\"\n          title=\"This is a subtitle\"\n        >\n          This is a subtitle\n        </span>\n        <!---->\n      </div>\n      <span\n        class=\"ant-page-header-heading-extra\"\n      >\n        <div\n          class=\"ant-space ant-space-horizontal ant-space-align-center\"\n        >\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n          >\n            <button\n              class=\"ant-btn ant-btn-primary\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Primary\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n        </div>\n      </span>\n    </div>\n    <div\n      class=\"ant-page-header-content\"\n    >\n      \n      <div\n        class=\"ant-descriptions ant-descriptions-small\"\n      >\n        <!---->\n        <div\n          class=\"ant-descriptions-view\"\n        >\n          <table>\n            <tbody>\n              \n              <tr\n                class=\"ant-descriptions-row\"\n              >\n                \n                <td\n                  class=\"ant-descriptions-item\"\n                  colspan=\"1\"\n                >\n                  <div\n                    class=\"ant-descriptions-item-container\"\n                  >\n                    <span\n                      class=\"ant-descriptions-item-label\"\n                    >\n                      Created\n                    </span>\n                    <span\n                      class=\"ant-descriptions-item-content\"\n                    >\n                      \n                      Lili Qu\n                      \n                    </span>\n                  </div>\n                </td>\n                <td\n                  class=\"ant-descriptions-item\"\n                  colspan=\"1\"\n                >\n                  <div\n                    class=\"ant-descriptions-item-container\"\n                  >\n                    <span\n                      class=\"ant-descriptions-item-label\"\n                    >\n                      Association\n                    </span>\n                    <span\n                      class=\"ant-descriptions-item-content\"\n                    >\n                      \n                      <a>\n                        421421\n                      </a>\n                      \n                    </span>\n                  </div>\n                </td>\n                <td\n                  class=\"ant-descriptions-item\"\n                  colspan=\"1\"\n                >\n                  <div\n                    class=\"ant-descriptions-item-container\"\n                  >\n                    <span\n                      class=\"ant-descriptions-item-label\"\n                    >\n                      Creation Time\n                    </span>\n                    <span\n                      class=\"ant-descriptions-item-content\"\n                    >\n                      \n                      2017-01-10\n                      \n                    </span>\n                  </div>\n                </td>\n                \n              </tr>\n              <tr\n                class=\"ant-descriptions-row\"\n              >\n                \n                <td\n                  class=\"ant-descriptions-item\"\n                  colspan=\"1\"\n                >\n                  <div\n                    class=\"ant-descriptions-item-container\"\n                  >\n                    <span\n                      class=\"ant-descriptions-item-label\"\n                    >\n                      Effective Time\n                    </span>\n                    <span\n                      class=\"ant-descriptions-item-content\"\n                    >\n                      \n                      2017-10-10\n                      \n                    </span>\n                  </div>\n                </td>\n                <td\n                  class=\"ant-descriptions-item\"\n                  colspan=\"2\"\n                >\n                  <div\n                    class=\"ant-descriptions-item-container\"\n                  >\n                    <span\n                      class=\"ant-descriptions-item-label\"\n                    >\n                      Remarks\n                    </span>\n                    <span\n                      class=\"ant-descriptions-item-content\"\n                    >\n                      \n                       Gonghu Road, Xihu District, Hangzhou, Zhejiang, China \n                      \n                    </span>\n                  </div>\n                </td>\n                \n              </tr>\n              \n            </tbody>\n          </table>\n        </div>\n      </div>\n      \n    </div>\n    <!---->\n  </div>\n  <br />\n  <div\n    class=\"ant-page-header ant-page-header-ghost\"\n  >\n    <!---->\n    <div\n      class=\"ant-page-header-heading\"\n    >\n      <div\n        class=\"ant-page-header-heading-left\"\n      >\n        <div\n          class=\"ant-page-header-back\"\n        >\n          <div\n            aria-label=\"Back\"\n            class=\"ant-page-header-back-button\"\n            role=\"button\"\n            style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"\n            tabindex=\"0\"\n          >\n            \n            <span\n              aria-label=\"arrow-left\"\n              class=\"anticon anticon-arrow-left\"\n              role=\"img\"\n            >\n              <svg\n                aria-hidden=\"true\"\n                class=\"\"\n                data-icon=\"arrow-left\"\n                fill=\"currentColor\"\n                focusable=\"false\"\n                height=\"1em\"\n                viewBox=\"64 64 896 896\"\n                width=\"1em\"\n              >\n                <path\n                  d=\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"\n                />\n              </svg>\n            </span>\n            \n          </div>\n        </div>\n        <!---->\n        <span\n          class=\"ant-page-header-heading-title\"\n          title=\"Title\"\n        >\n          Title\n        </span>\n        <span\n          class=\"ant-page-header-heading-sub-title\"\n          title=\"This is a subtitle\"\n        >\n          This is a subtitle\n        </span>\n        <span\n          class=\"ant-page-header-heading-tags\"\n        >\n          \n          <span\n            class=\"ant-tag ant-tag-blue\"\n          >\n            \n            Running\n            \n            <!---->\n          </span>\n          \n        </span>\n      </div>\n      <span\n        class=\"ant-page-header-heading-extra\"\n      >\n        <div\n          class=\"ant-space ant-space-horizontal ant-space-align-center\"\n        >\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n          >\n            <button\n              class=\"ant-btn ant-btn-primary\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Primary\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n        </div>\n      </span>\n    </div>\n    <div\n      class=\"ant-page-header-content\"\n    >\n      \n      <div\n        class=\"ant-row\"\n        type=\"flex\"\n      >\n        \n        <div\n          class=\"ant-statistic\"\n        >\n          <div\n            class=\"ant-statistic-title\"\n          >\n            Status\n          </div>\n          \n          <div\n            class=\"ant-statistic-content\"\n          >\n            <!---->\n            <span\n              class=\"ant-statistic-content-value\"\n            >\n              Pending\n            </span>\n            <!---->\n          </div>\n          \n        </div>\n        <div\n          class=\"ant-statistic\"\n          style=\"margin: 0px 32px;\"\n        >\n          <div\n            class=\"ant-statistic-title\"\n          >\n            Price\n          </div>\n          \n          <div\n            class=\"ant-statistic-content\"\n          >\n            <span\n              class=\"ant-statistic-content-prefix\"\n            >\n              $\n            </span>\n            <span\n              class=\"ant-statistic-content-value\"\n            >\n              \n              <span\n                class=\"ant-statistic-content-value-int\"\n              >\n                \n                568\n              </span>\n              <span\n                class=\"ant-statistic-content-value-decimal\"\n              >\n                .08\n              </span>\n              \n            </span>\n            <!---->\n          </div>\n          \n        </div>\n        <div\n          class=\"ant-statistic\"\n        >\n          <div\n            class=\"ant-statistic-title\"\n          >\n            Balance\n          </div>\n          \n          <div\n            class=\"ant-statistic-content\"\n          >\n            <span\n              class=\"ant-statistic-content-prefix\"\n            >\n              $\n            </span>\n            <span\n              class=\"ant-statistic-content-value\"\n            >\n              \n              <span\n                class=\"ant-statistic-content-value-int\"\n              >\n                \n                3,345\n              </span>\n              <span\n                class=\"ant-statistic-content-value-decimal\"\n              >\n                .08\n              </span>\n              \n            </span>\n            <!---->\n          </div>\n          \n        </div>\n        \n      </div>\n      \n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/page-header/demo/basic.vue correctly 1`] = `\n<div\n  class=\"ant-page-header ant-page-header-ghost\"\n  style=\"border: 1px solid rgb(235, 237, 240);\"\n>\n  <!---->\n  <div\n    class=\"ant-page-header-heading\"\n  >\n    <div\n      class=\"ant-page-header-heading-left\"\n    >\n      <div\n        class=\"ant-page-header-back\"\n      >\n        <div\n          aria-label=\"Back\"\n          class=\"ant-page-header-back-button\"\n          role=\"button\"\n          style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"\n          tabindex=\"0\"\n        >\n          \n          <span\n            aria-label=\"arrow-left\"\n            class=\"anticon anticon-arrow-left\"\n            role=\"img\"\n          >\n            <svg\n              aria-hidden=\"true\"\n              class=\"\"\n              data-icon=\"arrow-left\"\n              fill=\"currentColor\"\n              focusable=\"false\"\n              height=\"1em\"\n              viewBox=\"64 64 896 896\"\n              width=\"1em\"\n            >\n              <path\n                d=\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"\n              />\n            </svg>\n          </span>\n          \n        </div>\n      </div>\n      <!---->\n      <span\n        class=\"ant-page-header-heading-title\"\n        title=\"Title\"\n      >\n        Title\n      </span>\n      <span\n        class=\"ant-page-header-heading-sub-title\"\n        title=\"This is a subtitle\"\n      >\n        This is a subtitle\n      </span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/page-header/demo/breadcrumb.vue correctly 1`] = `\n<div\n  class=\"ant-page-header has-breadcrumb ant-page-header-ghost\"\n  style=\"border: 1px solid rgb(235, 237, 240);\"\n>\n  <nav\n    class=\"ant-breadcrumb\"\n  >\n    <ol>\n      \n      <li>\n        <span\n          class=\"ant-breadcrumb-link\"\n        >\n          \n          <a\n            href=\"#/index\"\n          >\n            First-level Menu\n          </a>\n          \n        </span>\n        <span\n          class=\"ant-breadcrumb-separator\"\n        >\n          /\n        </span>\n      </li>\n      <li>\n        <span\n          class=\"ant-breadcrumb-link\"\n        >\n          \n          <a\n            href=\"#/index/first\"\n          >\n            Second-level Menu\n          </a>\n          \n        </span>\n        <span\n          class=\"ant-breadcrumb-separator\"\n        >\n          /\n        </span>\n      </li>\n      <li>\n        <span\n          class=\"ant-breadcrumb-link\"\n        >\n          \n          <span>\n            Third-level Menu\n          </span>\n          \n        </span>\n        <span\n          class=\"ant-breadcrumb-separator\"\n        >\n          /\n        </span>\n      </li>\n      \n    </ol>\n  </nav>\n  <div\n    class=\"ant-page-header-heading\"\n  >\n    <div\n      class=\"ant-page-header-heading-left\"\n    >\n      <!---->\n      <!---->\n      <span\n        class=\"ant-page-header-heading-title\"\n        title=\"Title\"\n      >\n        Title\n      </span>\n      <span\n        class=\"ant-page-header-heading-sub-title\"\n        title=\"This is a subtitle\"\n      >\n        This is a subtitle\n      </span>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/page-header/demo/content.vue correctly 1`] = `\n<div\n  class=\"components-page-header-demo-content\"\n>\n  <div\n    class=\"ant-page-header has-breadcrumb ant-page-header-ghost site-page-header\"\n  >\n    <nav\n      class=\"ant-breadcrumb\"\n    >\n      <ol>\n        \n        <li>\n          <span\n            class=\"ant-breadcrumb-link\"\n          >\n            \n            <a\n              href=\"#/index\"\n            >\n              First-level Menu\n            </a>\n            \n          </span>\n          <span\n            class=\"ant-breadcrumb-separator\"\n          >\n            /\n          </span>\n        </li>\n        <li>\n          <span\n            class=\"ant-breadcrumb-link\"\n          >\n            \n            <a\n              href=\"#/index/first\"\n            >\n              Second-level Menu\n            </a>\n            \n          </span>\n          <span\n            class=\"ant-breadcrumb-separator\"\n          >\n            /\n          </span>\n        </li>\n        <li>\n          <span\n            class=\"ant-breadcrumb-link\"\n          >\n            \n            <span>\n              Third-level Menu\n            </span>\n            \n          </span>\n          <span\n            class=\"ant-breadcrumb-separator\"\n          >\n            /\n          </span>\n        </li>\n        \n      </ol>\n    </nav>\n    <div\n      class=\"ant-page-header-heading\"\n    >\n      <div\n        class=\"ant-page-header-heading-left\"\n      >\n        <!---->\n        <span\n          class=\"ant-avatar ant-avatar-circle ant-avatar-image\"\n        >\n          <img\n            src=\"https://avatars1.githubusercontent.com/u/8186664?s=460&v=4\"\n          />\n        </span>\n        <span\n          class=\"ant-page-header-heading-title\"\n          title=\"Title\"\n        >\n          Title\n        </span>\n        <span\n          class=\"ant-page-header-heading-sub-title\"\n          title=\"This is a subtitle\"\n        >\n          This is a subtitle\n        </span>\n        <span\n          class=\"ant-page-header-heading-tags\"\n        >\n          \n          <span\n            class=\"ant-tag ant-tag-blue\"\n          >\n            \n            Running\n            \n            <!---->\n          </span>\n          \n        </span>\n      </div>\n      <span\n        class=\"ant-page-header-heading-extra\"\n      >\n        <div\n          class=\"ant-space ant-space-horizontal ant-space-align-center\"\n        >\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-primary\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Primary\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n          >\n            \n            <button\n              class=\"ant-btn ant-btn-default ant-dropdown-trigger\"\n              style=\"padding: 0px;\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span\n                aria-label=\"ellipsis\"\n                class=\"anticon anticon-ellipsis\"\n                role=\"img\"\n                style=\"font-size: 20px; vertical-align: top;\"\n              >\n                <svg\n                  aria-hidden=\"true\"\n                  class=\"\"\n                  data-icon=\"ellipsis\"\n                  fill=\"currentColor\"\n                  focusable=\"false\"\n                  height=\"1em\"\n                  viewBox=\"64 64 896 896\"\n                  width=\"1em\"\n                >\n                  <path\n                    d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"\n                  />\n                </svg>\n              </span>\n              \n            </button>\n            <!---->\n            \n          </div>\n          <!---->\n          \n          \n        </div>\n      </span>\n    </div>\n    <div\n      class=\"ant-page-header-content\"\n    >\n      \n      <div\n        class=\"ant-row content\"\n      >\n        \n        <div\n          style=\"flex: 1;\"\n        >\n          <p>\n             Ant Design interprets the color system into two levels: a system-level color system and a product-level color system. \n          </p>\n          <p>\n             Ant Design's design team preferred to design with the HSB color model, which makes it easier for designers to have a clear psychological expectation of color when adjusting colors, as well as facilitate communication in teams. \n          </p>\n          <div>\n            \n            <a\n              class=\"example-link\"\n            >\n              <img\n                alt=\"Quick Start\"\n                class=\"example-link-icon\"\n                src=\"https://gw.alipayobjects.com/zos/rmsportal/MjEImQtenlyueSmVEfUD.svg\"\n              />\n               Quick Start\n            </a>\n            <a\n              class=\"example-link\"\n            >\n              <img\n                alt=\"Product Info\"\n                class=\"example-link-icon\"\n                src=\"https://gw.alipayobjects.com/zos/rmsportal/NbuDUAuBlIApFuDvWiND.svg\"\n              />\n               Product Info\n            </a>\n            <a\n              class=\"example-link\"\n            >\n              <img\n                alt=\"Product Doc\"\n                class=\"example-link-icon\"\n                src=\"https://gw.alipayobjects.com/zos/rmsportal/ohOEPSYdDTNnyMbGuyLb.svg\"\n              />\n               Product Doc\n            </a>\n            \n          </div>\n        </div>\n        <div\n          class=\"image\"\n        >\n          <img\n            alt=\"content\"\n            src=\"https://gw.alipayobjects.com/zos/antfincdn/K%24NnlsB%26hz/pageHeader.svg\"\n            style=\"width: 100%;\"\n          />\n        </div>\n        \n      </div>\n      \n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/page-header/demo/ghost.vue correctly 1`] = `\n<div\n  data-v-app=\"\"\n>\n  \n  <div\n    class=\"demo-page-header\"\n    style=\"background-color: rgb(245, 245, 245); padding: 24px;\"\n  >\n    <div\n      class=\"ant-page-header\"\n    >\n      <!---->\n      <div\n        class=\"ant-page-header-heading\"\n      >\n        <div\n          class=\"ant-page-header-heading-left\"\n        >\n          <div\n            class=\"ant-page-header-back\"\n          >\n            <div\n              aria-label=\"Back\"\n              class=\"ant-page-header-back-button\"\n              role=\"button\"\n              style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"\n              tabindex=\"0\"\n            >\n              \n              <span\n                aria-label=\"arrow-left\"\n                class=\"anticon anticon-arrow-left\"\n                role=\"img\"\n              >\n                <svg\n                  aria-hidden=\"true\"\n                  class=\"\"\n                  data-icon=\"arrow-left\"\n                  fill=\"currentColor\"\n                  focusable=\"false\"\n                  height=\"1em\"\n                  viewBox=\"64 64 896 896\"\n                  width=\"1em\"\n                >\n                  <path\n                    d=\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"\n                  />\n                </svg>\n              </span>\n              \n            </div>\n          </div>\n          <!---->\n          <span\n            class=\"ant-page-header-heading-title\"\n            title=\"Title\"\n          >\n            Title\n          </span>\n          <span\n            class=\"ant-page-header-heading-sub-title\"\n            title=\"This is a subtitle\"\n          >\n            This is a subtitle\n          </span>\n          <!---->\n        </div>\n        <span\n          class=\"ant-page-header-heading-extra\"\n        >\n          <div\n            class=\"ant-space ant-space-horizontal ant-space-align-center\"\n          >\n            \n            \n            <div\n              class=\"ant-space-item\"\n              style=\"margin-right: 8px;\"\n            >\n              <button\n                class=\"ant-btn ant-btn-default\"\n                type=\"button\"\n              >\n                <!---->\n                \n                <span>\n                  Operation\n                </span>\n                \n              </button>\n            </div>\n            <!---->\n            \n            \n            <div\n              class=\"ant-space-item\"\n              style=\"margin-right: 8px;\"\n            >\n              <button\n                class=\"ant-btn ant-btn-default\"\n                type=\"button\"\n              >\n                <!---->\n                \n                <span>\n                  Operation\n                </span>\n                \n              </button>\n            </div>\n            <!---->\n            \n            \n            <div\n              class=\"ant-space-item\"\n            >\n              <button\n                class=\"ant-btn ant-btn-primary\"\n                type=\"button\"\n              >\n                <!---->\n                \n                <span>\n                  Primary\n                </span>\n                \n              </button>\n            </div>\n            <!---->\n            \n            \n          </div>\n        </span>\n      </div>\n      <div\n        class=\"ant-page-header-content\"\n      >\n        \n        <div\n          class=\"ant-descriptions ant-descriptions-small\"\n        >\n          <!---->\n          <div\n            class=\"ant-descriptions-view\"\n          >\n            <table>\n              <tbody>\n                \n                <tr\n                  class=\"ant-descriptions-row\"\n                >\n                  \n                  <td\n                    class=\"ant-descriptions-item\"\n                    colspan=\"1\"\n                  >\n                    <div\n                      class=\"ant-descriptions-item-container\"\n                    >\n                      <span\n                        class=\"ant-descriptions-item-label\"\n                      >\n                        Created\n                      </span>\n                      <span\n                        class=\"ant-descriptions-item-content\"\n                      >\n                        \n                        Lili Qu\n                        \n                      </span>\n                    </div>\n                  </td>\n                  <td\n                    class=\"ant-descriptions-item\"\n                    colspan=\"1\"\n                  >\n                    <div\n                      class=\"ant-descriptions-item-container\"\n                    >\n                      <span\n                        class=\"ant-descriptions-item-label\"\n                      >\n                        Association\n                      </span>\n                      <span\n                        class=\"ant-descriptions-item-content\"\n                      >\n                        \n                        <a>\n                          421421\n                        </a>\n                        \n                      </span>\n                    </div>\n                  </td>\n                  <td\n                    class=\"ant-descriptions-item\"\n                    colspan=\"1\"\n                  >\n                    <div\n                      class=\"ant-descriptions-item-container\"\n                    >\n                      <span\n                        class=\"ant-descriptions-item-label\"\n                      >\n                        Creation Time\n                      </span>\n                      <span\n                        class=\"ant-descriptions-item-content\"\n                      >\n                        \n                        2017-01-10\n                        \n                      </span>\n                    </div>\n                  </td>\n                  \n                </tr>\n                <tr\n                  class=\"ant-descriptions-row\"\n                >\n                  \n                  <td\n                    class=\"ant-descriptions-item\"\n                    colspan=\"1\"\n                  >\n                    <div\n                      class=\"ant-descriptions-item-container\"\n                    >\n                      <span\n                        class=\"ant-descriptions-item-label\"\n                      >\n                        Effective Time\n                      </span>\n                      <span\n                        class=\"ant-descriptions-item-content\"\n                      >\n                        \n                        2017-10-10\n                        \n                      </span>\n                    </div>\n                  </td>\n                  <td\n                    class=\"ant-descriptions-item\"\n                    colspan=\"2\"\n                  >\n                    <div\n                      class=\"ant-descriptions-item-container\"\n                    >\n                      <span\n                        class=\"ant-descriptions-item-label\"\n                      >\n                        Remarks\n                      </span>\n                      <span\n                        class=\"ant-descriptions-item-content\"\n                      >\n                        \n                         Gonghu Road, Xihu District, Hangzhou, Zhejiang, China \n                        \n                      </span>\n                    </div>\n                  </td>\n                  \n                </tr>\n                \n              </tbody>\n            </table>\n          </div>\n        </div>\n        \n      </div>\n      <!---->\n    </div>\n  </div>\n  <label\n    class=\"ant-checkbox-wrapper\"\n    style=\"margin-top: 0.5rem;\"\n  >\n    <span\n      class=\"ant-checkbox\"\n    >\n      <input\n        class=\"ant-checkbox-input\"\n        type=\"checkbox\"\n      />\n      <span\n        class=\"ant-checkbox-inner\"\n      />\n    </span>\n    <span>\n      \n      toggle ghost\n      \n    </span>\n  </label>\n  \n</div>\n`;\n\nexports[`renders ./components/page-header/demo/responsive.vue correctly 1`] = `\n<div\n  class=\"components-page-header-demo-responsive\"\n  style=\"border: 1px solid rgb(235, 237, 240);\"\n>\n  <div\n    class=\"ant-page-header has-footer ant-page-header-ghost\"\n  >\n    <!---->\n    <div\n      class=\"ant-page-header-heading\"\n    >\n      <div\n        class=\"ant-page-header-heading-left\"\n      >\n        <div\n          class=\"ant-page-header-back\"\n        >\n          <div\n            aria-label=\"Back\"\n            class=\"ant-page-header-back-button\"\n            role=\"button\"\n            style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"\n            tabindex=\"0\"\n          >\n            \n            <span\n              aria-label=\"arrow-left\"\n              class=\"anticon anticon-arrow-left\"\n              role=\"img\"\n            >\n              <svg\n                aria-hidden=\"true\"\n                class=\"\"\n                data-icon=\"arrow-left\"\n                fill=\"currentColor\"\n                focusable=\"false\"\n                height=\"1em\"\n                viewBox=\"64 64 896 896\"\n                width=\"1em\"\n              >\n                <path\n                  d=\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"\n                />\n              </svg>\n            </span>\n            \n          </div>\n        </div>\n        <!---->\n        <span\n          class=\"ant-page-header-heading-title\"\n          title=\"Title\"\n        >\n          Title\n        </span>\n        <span\n          class=\"ant-page-header-heading-sub-title\"\n          title=\"This is a subtitle\"\n        >\n          This is a subtitle\n        </span>\n        <!---->\n      </div>\n      <span\n        class=\"ant-page-header-heading-extra\"\n      >\n        <div\n          class=\"ant-space ant-space-horizontal ant-space-align-center\"\n        >\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n            style=\"margin-right: 8px;\"\n          >\n            <button\n              class=\"ant-btn ant-btn-default\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Operation\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n          <div\n            class=\"ant-space-item\"\n          >\n            <button\n              class=\"ant-btn ant-btn-primary\"\n              type=\"button\"\n            >\n              <!---->\n              \n              <span>\n                Primary\n              </span>\n              \n            </button>\n          </div>\n          <!---->\n          \n          \n        </div>\n      </span>\n    </div>\n    <div\n      class=\"ant-page-header-content\"\n    >\n      \n      <div\n        class=\"content\"\n      >\n        <div\n          class=\"main\"\n        >\n          <div\n            class=\"ant-descriptions ant-descriptions-small\"\n          >\n            <!---->\n            <div\n              class=\"ant-descriptions-view\"\n            >\n              <table>\n                <tbody>\n                  \n                  <tr\n                    class=\"ant-descriptions-row\"\n                  >\n                    \n                    <td\n                      class=\"ant-descriptions-item\"\n                      colspan=\"1\"\n                    >\n                      <div\n                        class=\"ant-descriptions-item-container\"\n                      >\n                        <span\n                          class=\"ant-descriptions-item-label\"\n                        >\n                          Created\n                        </span>\n                        <span\n                          class=\"ant-descriptions-item-content\"\n                        >\n                          \n                          Lili Qu\n                          \n                        </span>\n                      </div>\n                    </td>\n                    <td\n                      class=\"ant-descriptions-item\"\n                      colspan=\"1\"\n                    >\n                      <div\n                        class=\"ant-descriptions-item-container\"\n                      >\n                        <span\n                          class=\"ant-descriptions-item-label\"\n                        >\n                          Association\n                        </span>\n                        <span\n                          class=\"ant-descriptions-item-content\"\n                        >\n                          \n                          <a>\n                            421421\n                          </a>\n                          \n                        </span>\n                      </div>\n                    </td>\n                    \n                  </tr>\n                  <tr\n                    class=\"ant-descriptions-row\"\n                  >\n                    \n                    <td\n                      class=\"ant-descriptions-item\"\n                      colspan=\"1\"\n                    >\n                      <div\n                        class=\"ant-descriptions-item-container\"\n                      >\n                        <span\n                          class=\"ant-descriptions-item-label\"\n                        >\n                          Creation Time\n                        </span>\n                        <span\n                          class=\"ant-descriptions-item-content\"\n                        >\n                          \n                          2017-01-10\n                          \n                        </span>\n                      </div>\n                    </td>\n                    <td\n                      class=\"ant-descriptions-item\"\n                      colspan=\"1\"\n                    >\n                      <div\n                        class=\"ant-descriptions-item-container\"\n                      >\n                        <span\n                          class=\"ant-descriptions-item-label\"\n                        >\n                          Effective Time\n                        </span>\n                        <span\n                          class=\"ant-descriptions-item-content\"\n                        >\n                          \n                          2017-10-10\n                          \n                        </span>\n                      </div>\n                    </td>\n                    \n                  </tr>\n                  <tr\n                    class=\"ant-descriptions-row\"\n                  >\n                    \n                    <td\n                      class=\"ant-descriptions-item\"\n                      colspan=\"2\"\n                    >\n                      <div\n                        class=\"ant-descriptions-item-container\"\n                      >\n                        <span\n                          class=\"ant-descriptions-item-label\"\n                        >\n                          Remarks\n                        </span>\n                        <span\n                          class=\"ant-descriptions-item-content\"\n                        >\n                          \n                           Gonghu Road, Xihu District, Hangzhou, Zhejiang, China \n                          \n                        </span>\n                      </div>\n                    </td>\n                    \n                  </tr>\n                  \n                </tbody>\n              </table>\n            </div>\n          </div>\n        </div>\n        <div\n          class=\"extra\"\n        >\n          <div\n            style=\"display: flex; justify-content: flex-end;\"\n          >\n            <div\n              class=\"ant-statistic\"\n              style=\"margin-right: 32px;\"\n            >\n              <div\n                class=\"ant-statistic-title\"\n              >\n                Status\n              </div>\n              \n              <div\n                class=\"ant-statistic-content\"\n              >\n                <!---->\n                <span\n                  class=\"ant-statistic-content-value\"\n                >\n                  Pending\n                </span>\n                <!---->\n              </div>\n              \n            </div>\n            <div\n              class=\"ant-statistic\"\n            >\n              <div\n                class=\"ant-statistic-title\"\n              >\n                Price\n              </div>\n              \n              <div\n                class=\"ant-statistic-content\"\n              >\n                <span\n                  class=\"ant-statistic-content-prefix\"\n                >\n                  $\n                </span>\n                <span\n                  class=\"ant-statistic-content-value\"\n                >\n                  \n                  <span\n                    class=\"ant-statistic-content-value-int\"\n                  >\n                    \n                    568\n                  </span>\n                  <span\n                    class=\"ant-statistic-content-value-decimal\"\n                  >\n                    .08\n                  </span>\n                  \n                </span>\n                <!---->\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n      \n    </div>\n    <div\n      class=\"ant-page-header-footer\"\n    >\n      \n      <div\n        class=\"ant-tabs ant-tabs-top \"\n      >\n        <div\n          class=\"ant-tabs-nav\"\n          role=\"tablist\"\n        >\n          <!---->\n          <div\n            class=\"ant-tabs-nav-wrap\"\n          >\n            <div\n              class=\"ant-tabs-nav-list\"\n              style=\"transform: translate(0px, 0px);\"\n            >\n              \n              <div\n                class=\"ant-tabs-tab ant-tabs-tab-active\"\n              >\n                <div\n                  aria-selected=\"true\"\n                  class=\"ant-tabs-tab-btn\"\n                  role=\"tab\"\n                  tabindex=\"0\"\n                >\n                  Details\n                </div>\n                <!---->\n              </div>\n              <div\n                class=\"ant-tabs-tab\"\n              >\n                <div\n                  aria-selected=\"false\"\n                  class=\"ant-tabs-tab-btn\"\n                  role=\"tab\"\n                  tabindex=\"0\"\n                >\n                  Rule\n                </div>\n                <!---->\n              </div>\n              \n              <!---->\n              <div\n                class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"\n              />\n            </div>\n          </div>\n          <div\n            class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\"\n          >\n            \n            <button\n              aria-controls=\"null-more-popup\"\n              aria-expanded=\"false\"\n              aria-haspopup=\"listbox\"\n              aria-hidden=\"true\"\n              class=\"ant-tabs-nav-more\"\n              id=\"null-more\"\n              style=\"visibility: hidden; order: 1;\"\n              tabindex=\"-1\"\n              type=\"button\"\n            >\n              <span\n                aria-label=\"ellipsis\"\n                class=\"anticon anticon-ellipsis\"\n                role=\"img\"\n              >\n                <svg\n                  aria-hidden=\"true\"\n                  class=\"\"\n                  data-icon=\"ellipsis\"\n                  fill=\"currentColor\"\n                  focusable=\"false\"\n                  height=\"1em\"\n                  viewBox=\"64 64 896 896\"\n                  width=\"1em\"\n                >\n                  <path\n                    d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"\n                  />\n                </svg>\n              </span>\n            </button>\n            <!---->\n            \n            <!---->\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <div\n          class=\"ant-tabs-content-holder\"\n        >\n          <div\n            class=\"ant-tabs-content ant-tabs-content-top\"\n          >\n            \n            <div\n              aria-hidden=\"false\"\n              class=\"ant-tabs-tabpane ant-tabs-tabpane-active\"\n              role=\"tabpanel\"\n              tabindex=\"0\"\n            >\n              <!---->\n            </div>\n            <div\n              aria-hidden=\"true\"\n              class=\"ant-tabs-tabpane\"\n              role=\"tabpanel\"\n              style=\"display: none;\"\n              tabindex=\"-1\"\n            >\n              <!---->\n            </div>\n            \n          </div>\n        </div>\n      </div>\n      \n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/page-header/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`PageHeader pageHeader should not render blank dom 1`] = `\n<div\n  class=\"ant-page-header ant-page-header-ghost\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`PageHeader pageHeader should support class 1`] = `\n<div\n  class=\"ant-page-header ant-page-header-ghost not-works\"\n>\n  <!---->\n  <div\n    class=\"ant-page-header-heading\"\n  >\n    <div\n      class=\"ant-page-header-heading-left\"\n    >\n      <!---->\n      <!---->\n      <span\n        class=\"ant-page-header-heading-title\"\n        title=\"Page Title\"\n      >\n        Page Title\n      </span>\n      <!---->\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/page-header/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('page-header', { getDomFromElement: true });\n"
  },
  {
    "path": "components/page-header/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport PageHeader from '..';\n\ndescribe('PageHeader', () => {\n  it('pageHeader should not contain back it back', () => {\n    const routes = [\n      {\n        path: 'index',\n        breadcrumbName: 'First-level Menu',\n      },\n      {\n        path: 'first',\n        breadcrumbName: 'Second-level Menu',\n      },\n      {\n        path: 'second',\n        breadcrumbName: 'Third-level Menu',\n      },\n    ];\n    const wrapper = mount({\n      render() {\n        return <PageHeader title=\"Page Title\" breadcrumb={{ routes }} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0);\n  });\n\n  it('pageHeader should have breadcrumb', () => {\n    const routes = [\n      {\n        path: 'index',\n        breadcrumbName: 'First-level Menu',\n      },\n    ];\n    const wrapper = mount({\n      render() {\n        return <PageHeader title=\"Page Title\" breadcrumb={{ routes }} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);\n    expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0);\n  });\n\n  it('pageHeader should no contain back', () => {\n    const wrapper = mount({\n      render() {\n        return <PageHeader title=\"Page Title\" backIcon={false} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0);\n  });\n\n  it('pageHeader should contain back it back', () => {\n    const callback = jest.fn(() => true);\n    const wrapper = mount(\n      {\n        render() {\n          return <PageHeader title=\"Page Title\" onBack={callback} />;\n        },\n      },\n      { sync: false },\n    );\n    expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(1);\n  });\n\n  it('pageHeader onBack transfer', () => {\n    const callback = jest.fn(() => true);\n    const wrapper = mount(\n      {\n        render() {\n          return <PageHeader title=\"Page Title\" onBack={callback} />;\n        },\n      },\n      { sync: false },\n    );\n    wrapper.find('div.ant-page-header-back-button').trigger('click');\n    expect(callback).toHaveBeenCalled();\n  });\n\n  it('pageHeader should support class', () => {\n    const wrapper = mount({\n      render() {\n        return <PageHeader title=\"Page Title\" class=\"not-works\" backIcon={false} />;\n      },\n    });\n    expect(wrapper.element).toMatchSnapshot();\n  });\n\n  it('pageHeader should not render blank dom', () => {\n    const wrapper = mount({\n      render() {\n        return <PageHeader title={false} />;\n      },\n    });\n    expect(wrapper.element).toMatchSnapshot();\n  });\n\n  it('breadcrumbs and back icon can coexist', () => {\n    const routes = [\n      {\n        path: 'index',\n        breadcrumbName: 'First-level Menu',\n      },\n      {\n        path: 'first',\n        breadcrumbName: 'Second-level Menu',\n      },\n      {\n        path: 'second',\n        breadcrumbName: 'Third-level Menu',\n      },\n    ];\n    const wrapper = mount({\n      render() {\n        return <PageHeader title=\"Title\" breadcrumb={{ routes }} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1);\n\n    const wrapperBack = mount({\n      render() {\n        return <PageHeader title=\"Title\" breadcrumb={{ routes }} onBack={() => {}} />;\n      },\n    });\n    expect(wrapperBack.findAll('.ant-breadcrumb')).toHaveLength(1);\n  });\n});\n"
  },
  {
    "path": "components/page-header/demo/actions.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 多种形态的 PageHeader\n  en-US: Various forms of PageHeader\n---\n\n## zh-CN\n\n使用操作区，并自定义子节点，适合使用在需要展示一些复杂的信息，帮助用户快速了解这个页面的信息和操作。\n\n## en-US\n\nUse the operating area and customize the sub-nodes, suitable for use in the need to display some complex information to help users quickly understand the information and operations of this page.\n\n</docs>\n\n<template>\n  <div>\n    <a-page-header\n      class=\"demo-page-header\"\n      style=\"border: 1px solid rgb(235, 237, 240)\"\n      title=\"Title\"\n      sub-title=\"This is a subtitle\"\n      @back=\"() => $router.go(-1)\"\n    >\n      <template #extra>\n        <a-button key=\"3\">Operation</a-button>\n        <a-button key=\"2\">Operation</a-button>\n        <a-button key=\"1\" type=\"primary\">Primary</a-button>\n      </template>\n      <a-descriptions size=\"small\" :column=\"3\">\n        <a-descriptions-item label=\"Created\">Lili Qu</a-descriptions-item>\n        <a-descriptions-item label=\"Association\">\n          <a>421421</a>\n        </a-descriptions-item>\n        <a-descriptions-item label=\"Creation Time\">2017-01-10</a-descriptions-item>\n        <a-descriptions-item label=\"Effective Time\">2017-10-10</a-descriptions-item>\n        <a-descriptions-item label=\"Remarks\">\n          Gonghu Road, Xihu District, Hangzhou, Zhejiang, China\n        </a-descriptions-item>\n      </a-descriptions>\n    </a-page-header>\n    <br />\n    <a-page-header title=\"Title\" sub-title=\"This is a subtitle\" @back=\"() => $router.go(-1)\">\n      <template #tags>\n        <a-tag color=\"blue\">Running</a-tag>\n      </template>\n      <template #extra>\n        <a-button key=\"3\">Operation</a-button>\n        <a-button key=\"2\">Operation</a-button>\n        <a-button key=\"1\" type=\"primary\">Primary</a-button>\n      </template>\n      <a-row type=\"flex\">\n        <a-statistic title=\"Status\" value=\"Pending\" />\n        <a-statistic\n          title=\"Price\"\n          prefix=\"$\"\n          :value=\"568.08\"\n          :style=\"{\n            margin: '0 32px',\n          }\"\n        />\n        <a-statistic title=\"Balance\" prefix=\"$\" :value=\"3345.08\" />\n      </a-row>\n    </a-page-header>\n  </div>\n</template>\n<style scoped>\n.demo-page-header :deep(tr:last-child td) {\n  padding-bottom: 0;\n}\n</style>\n"
  },
  {
    "path": "components/page-header/demo/basic.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 标准样式\n  en-US: Basic Page Header\n---\n\n## zh-CN\n\n标准页头，适合使用在需要简单描述的场景。\n\n## en-US\n\nStandard header, suitable for use in scenarios that require a brief description.\n\n</docs>\n\n<template>\n  <a-page-header\n    style=\"border: 1px solid rgb(235, 237, 240)\"\n    title=\"Title\"\n    sub-title=\"This is a subtitle\"\n    @back=\"() => null\"\n  />\n</template>\n"
  },
  {
    "path": "components/page-header/demo/breadcrumb.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 带面包屑页头\n  en-US: Use with breadcrumbs\n---\n\n## zh-CN\n\n带面包屑页头，适合层级比较深的页面，让用户可以快速导航。\n\n## en-US\n\nWith breadcrumbs, it is suitable for deeper pages, allowing users to navigate quickly.\n\n</docs>\n\n<template>\n  <a-page-header\n    style=\"border: 1px solid rgb(235, 237, 240)\"\n    title=\"Title\"\n    :breadcrumb=\"{ routes }\"\n    sub-title=\"This is a subtitle\"\n  />\n</template>\n<script lang=\"ts\" setup>\nconst routes = [\n  {\n    path: 'index',\n    breadcrumbName: 'First-level Menu',\n  },\n  {\n    path: 'first',\n    breadcrumbName: 'Second-level Menu',\n  },\n  {\n    path: 'second',\n    breadcrumbName: 'Third-level Menu',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/page-header/demo/content.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 组合示例\n  en-US: Complete example\n---\n\n## zh-CN\n\n使用了 PageHeader 提供的所有能力。\n\n## en-US\n\nShow all props provided by PageHeader.\n\n</docs>\n\n<template>\n  <div class=\"components-page-header-demo-content\">\n    <a-page-header\n      title=\"Title\"\n      class=\"site-page-header\"\n      sub-title=\"This is a subtitle\"\n      :avatar=\"{ src: 'https://avatars1.githubusercontent.com/u/8186664?s=460&v=4' }\"\n      :breadcrumb=\"{ routes }\"\n    >\n      <template #tags>\n        <a-tag color=\"blue\">Running</a-tag>\n      </template>\n      <template #extra>\n        <a-button key=\"3\">Operation</a-button>\n        <a-button key=\"2\">Operation</a-button>\n        <a-button key=\"1\" type=\"primary\">Primary</a-button>\n        <a-dropdown key=\"more\">\n          <a-button :style=\"{ border: 'none', padding: 0 }\">\n            <EllipsisOutlined :style=\"{ fontSize: '20px', verticalAlign: 'top' }\" />\n          </a-button>\n          <template #overlay>\n            <a-menu>\n              <a-menu-item>\n                <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.alipay.com/\">\n                  1st menu item\n                </a>\n              </a-menu-item>\n              <a-menu-item>\n                <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.taobao.com/\">\n                  2nd menu item\n                </a>\n              </a-menu-item>\n              <a-menu-item>\n                <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.tmall.com/\">\n                  3rd menu item\n                </a>\n              </a-menu-item>\n            </a-menu>\n          </template>\n        </a-dropdown>\n      </template>\n      <a-row class=\"content\">\n        <div style=\"flex: 1\">\n          <p>\n            Ant Design interprets the color system into two levels: a system-level color system and\n            a product-level color system.\n          </p>\n          <p>\n            Ant Design&#x27;s design team preferred to design with the HSB color model, which makes\n            it easier for designers to have a clear psychological expectation of color when\n            adjusting colors, as well as facilitate communication in teams.\n          </p>\n          <div>\n            <template v-for=\"item in iconLinks\" :key=\"item.src\">\n              <a class=\"example-link\">\n                <img class=\"example-link-icon\" :src=\"item.src\" :alt=\"item.text\" />\n                {{ item.text }}\n              </a>\n            </template>\n          </div>\n        </div>\n        <div class=\"image\">\n          <img\n            src=\"https://gw.alipayobjects.com/zos/antfincdn/K%24NnlsB%26hz/pageHeader.svg\"\n            alt=\"content\"\n            style=\"width: 100%\"\n          />\n        </div>\n      </a-row>\n    </a-page-header>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\n\nconst routes = [\n  {\n    path: 'index',\n    breadcrumbName: 'First-level Menu',\n  },\n  {\n    path: 'first',\n    breadcrumbName: 'Second-level Menu',\n  },\n  {\n    path: 'second',\n    breadcrumbName: 'Third-level Menu',\n  },\n];\n\ninterface IconLink {\n  src: string;\n  text: string;\n}\nconst iconLinks: IconLink[] = [\n  {\n    src: 'https://gw.alipayobjects.com/zos/rmsportal/MjEImQtenlyueSmVEfUD.svg',\n    text: 'Quick Start',\n  },\n  {\n    src: 'https://gw.alipayobjects.com/zos/rmsportal/NbuDUAuBlIApFuDvWiND.svg',\n    text: 'Product Info',\n  },\n  {\n    src: 'https://gw.alipayobjects.com/zos/rmsportal/ohOEPSYdDTNnyMbGuyLb.svg',\n    text: 'Product Doc',\n  },\n];\n</script>\n<style scoped>\n#components-page-header-demo-content .image {\n  margin: 0 0 0 60px;\n  display: flex;\n  align-items: center;\n}\n\n#components-page-header-demo-content .ant-page-header-rtl .image {\n  margin: 0 60px 0 0;\n}\n\n#components-page-header-demo-content .example-link {\n  line-height: 24px;\n  margin-right: 16px;\n}\n[data-theme='compact'] #components-page-header-demo-content .example-link {\n  line-height: 20px;\n}\n#components-page-header-demo-content .example-link-icon {\n  margin-right: 8px;\n}\n\n[data-theme='compact'] #components-page-header-demo-content .example-link-icon {\n  width: 20px;\n  height: 20px;\n}\n\n#components-page-header-demo-content .ant-page-header-rtl .example-link {\n  float: right;\n  margin-right: 0;\n  margin-left: 16px;\n}\n#components-page-header-demo-content .ant-page-header-rtl .example-link-icon {\n  margin-right: 0;\n  margin-left: 8px;\n}\n#components-page-header-demo-content .content p {\n  margin-bottom: 1em;\n  color: rgba(0, 0, 0, 0.85);\n  overflow-wrap: break-word;\n}\n\n@media (max-width: 768px) {\n  #components-page-header-demo-content .image {\n    flex: 100%;\n    margin: 24px 0 0;\n  }\n}\n</style>\n"
  },
  {
    "path": "components/page-header/demo/ghost.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 白底模式\n  en-US: white background mode\n---\n\n## zh-CN\n\n默认 PageHeader 是透明底色的。在某些情况下，PageHeader 需要自己的背景颜色。\n\n## en-US\n\nThe default PageHeader is a transparent background. In some cases, PageHeader needs its own background color.\n\n</docs>\n\n<template>\n  <div class=\"demo-page-header\" style=\"background-color: #f5f5f5; padding: 24px\">\n    <a-page-header\n      :ghost=\"ghost\"\n      title=\"Title\"\n      sub-title=\"This is a subtitle\"\n      @back=\"() => $router.go(-1)\"\n    >\n      <template #extra>\n        <a-button key=\"3\">Operation</a-button>\n        <a-button key=\"2\">Operation</a-button>\n        <a-button key=\"1\" type=\"primary\">Primary</a-button>\n      </template>\n      <a-descriptions size=\"small\" :column=\"3\">\n        <a-descriptions-item label=\"Created\">Lili Qu</a-descriptions-item>\n        <a-descriptions-item label=\"Association\">\n          <a>421421</a>\n        </a-descriptions-item>\n        <a-descriptions-item label=\"Creation Time\">2017-01-10</a-descriptions-item>\n        <a-descriptions-item label=\"Effective Time\">2017-10-10</a-descriptions-item>\n        <a-descriptions-item label=\"Remarks\">\n          Gonghu Road, Xihu District, Hangzhou, Zhejiang, China\n        </a-descriptions-item>\n      </a-descriptions>\n    </a-page-header>\n  </div>\n  <a-checkbox v-model:checked=\"ghost\" style=\"margin-top: 0.5rem\">toggle ghost</a-checkbox>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst ghost = ref(false);\n</script>\n<style scoped>\n.demo-page-header :deep(tr:last-child td) {\n  padding-bottom: 0;\n}\n</style>\n"
  },
  {
    "path": "components/page-header/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n    <breadcrumb />\n    <actions />\n    <context />\n    <responsive />\n    <ghost />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Basic from './basic.vue';\nimport Breadcrumb from './breadcrumb.vue';\nimport Actions from './actions.vue';\nimport Context from './content.vue';\nimport Responsive from './responsive.vue';\nimport Ghost from './ghost.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Breadcrumb,\n    Actions,\n    Context,\n    Responsive,\n    Ghost,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/page-header/demo/responsive.vue",
    "content": "<docs>\n---\norder: 6\niframe: 228\ntitle:\n  zh-CN: 响应式\n  en-US: responsive\n---\n\n## zh-CN\n\n在不同大小的屏幕下，应该有不同的表现。\n\n## en-US\n\nUnder different screen sizes, there should be different performance\n\n</docs>\n\n<template>\n  <div class=\"components-page-header-demo-responsive\" style=\"border: 1px solid rgb(235, 237, 240)\">\n    <a-page-header title=\"Title\" sub-title=\"This is a subtitle\" @back=\"() => $router.go(-1)\">\n      <template #extra>\n        <a-button key=\"3\">Operation</a-button>\n        <a-button key=\"2\">Operation</a-button>\n        <a-button key=\"1\" type=\"primary\">Primary</a-button>\n      </template>\n      <template #footer>\n        <a-tabs>\n          <a-tab-pane key=\"1\" tab=\"Details\" />\n          <a-tab-pane key=\"2\" tab=\"Rule\" />\n        </a-tabs>\n      </template>\n      <div class=\"content\">\n        <div class=\"main\">\n          <a-descriptions size=\"small\" :column=\"2\">\n            <a-descriptions-item label=\"Created\">Lili Qu</a-descriptions-item>\n            <a-descriptions-item label=\"Association\">\n              <a>421421</a>\n            </a-descriptions-item>\n            <a-descriptions-item label=\"Creation Time\">2017-01-10</a-descriptions-item>\n            <a-descriptions-item label=\"Effective Time\">2017-10-10</a-descriptions-item>\n            <a-descriptions-item label=\"Remarks\">\n              Gonghu Road, Xihu District, Hangzhou, Zhejiang, China\n            </a-descriptions-item>\n          </a-descriptions>\n        </div>\n        <div class=\"extra\">\n          <div\n            :style=\"{\n              display: 'flex',\n              width: 'max-content',\n              justifyContent: 'flex-end',\n            }\"\n          >\n            <a-statistic\n              title=\"Status\"\n              value=\"Pending\"\n              :style=\"{\n                marginRight: '32px',\n              }\"\n            />\n            <a-statistic title=\"Price\" prefix=\"$\" :value=\"568.08\" />\n          </div>\n        </div>\n      </div>\n    </a-page-header>\n  </div>\n</template>\n<style scoped>\n.components-page-header-demo-responsive {\n  padding-bottom: 20px;\n}\n.components-page-header-demo-responsive tr:last-child td {\n  padding-bottom: 0;\n}\n#components-page-header-demo-responsive .content {\n  display: flex;\n}\n#components-page-header-demo-responsive .ant-statistic-content {\n  font-size: 20px;\n  line-height: 28px;\n}\n@media (max-width: 576px) {\n  #components-page-header-demo-responsive .content {\n    display: block;\n  }\n\n  #components-page-header-demo-responsive .main {\n    width: 100%;\n    margin-bottom: 12px;\n  }\n\n  #components-page-header-demo-responsive .extra {\n    width: 100%;\n    margin-left: 0;\n    text-align: left;\n  }\n}\n</style>\n"
  },
  {
    "path": "components/page-header/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ntitle: PageHeader\ncols: 1\nsubtitle:\ncover: https://gw.alipayobjects.com/zos/alicdn/6bKE0Cq0R/PageHeader.svg\n---\n\nA header with common actions and design elements built in.\n\n## When To Use\n\nPageHeader can be used to highlight the page topic, display important information about the page, and carry the action items related to the current page (including page-level operations, inter-page navigation, etc.) It can also be used as inter-page navigation.\n\n## API\n\n| Param | Description | Type | Default value |\n| --- | --- | --- | --- |\n| avatar | Avatar next to the title bar | [avatar props](/components/avatar/) | - |\n| backIcon | custom back icon, if false the back icon will not be displayed | string\\|slot | `<ArrowLeft />` |\n| breadcrumb | Breadcrumb configuration | [breadcrumb](/components/breadcrumb/) | - |\n| extra | Operating area, at the end of the line of the title line | string\\|slot | - |\n| footer | PageHeader's footer, generally used to render TabBar | string\\|slot | - |\n| ghost | PageHeader type, will change background color | boolean | true |\n| subTitle | custom subTitle text | string\\|slot | - |\n| tags | Tag list next to title | [Tag](/components/tag/)\\[] \\| [Tag](/components/tag/) | - |\n| title | custom title text | string\\|slot | - |\n\n### Events\n\n| Events Name | Description           | Arguments   |\n| ----------- | --------------------- | ----------- |\n| back        | back icon click event | function(e) |\n"
  },
  {
    "path": "components/page-header/index.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, shallowRef, computed } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty, flattenChildren, isEmptyContent } from '../_util/props-util';\nimport ArrowLeftOutlined from '@ant-design/icons-vue/ArrowLeftOutlined';\nimport ArrowRightOutlined from '@ant-design/icons-vue/ArrowRightOutlined';\nimport Breadcrumb from '../breadcrumb';\nimport type { AvatarProps } from '../avatar';\nimport Avatar from '../avatar';\nimport TransButton from '../_util/transButton';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\n\nimport { objectType, vNodeType, withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CustomSlotsType } from '../_util/type';\n\nimport classNames from '../_util/classNames';\nimport ResizeObserver from '../vc-resize-observer';\nimport useDestroyed from '../_util/hooks/useDestroyed';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport Space from '../space';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport const pageHeaderProps = () => ({\n  backIcon: vNodeType(),\n  prefixCls: String,\n  title: vNodeType(),\n  subTitle: vNodeType(),\n  breadcrumb: PropTypes.object,\n  tags: vNodeType(),\n  footer: vNodeType(),\n  extra: vNodeType(),\n  avatar: objectType<AvatarProps>(),\n  ghost: { type: Boolean, default: undefined },\n  onBack: Function as PropType<MouseEventHandler>,\n});\n\nexport type PageHeaderProps = Partial<ExtractPropTypes<ReturnType<typeof pageHeaderProps>>>;\n\nconst PageHeader = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'APageHeader',\n  inheritAttrs: false,\n  props: pageHeaderProps(),\n  // emits: ['back'],\n  slots: Object as CustomSlotsType<{\n    backIcon: any;\n    avatar: any;\n    breadcrumb: any;\n    title: any;\n    subTitle: any;\n    tags: any;\n    extra: any;\n    footer: any;\n    default: any;\n  }>,\n  setup(props, { emit, slots, attrs }) {\n    const { prefixCls, direction, pageHeader } = useConfigInject('page-header', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const compact = shallowRef(false);\n    const isDestroyed = useDestroyed();\n    const onResize = ({ width }: { width: number }) => {\n      if (!isDestroyed.value) {\n        compact.value = width < 768;\n      }\n    };\n    const ghost = computed(() => props.ghost ?? pageHeader?.value?.ghost ?? true);\n\n    const getBackIcon = () => {\n      return (\n        props.backIcon ??\n        slots.backIcon?.() ??\n        (direction.value === 'rtl' ? <ArrowRightOutlined /> : <ArrowLeftOutlined />)\n      );\n    };\n\n    const renderBack = (backIcon: any) => {\n      if (!backIcon || !props.onBack) {\n        return null;\n      }\n      return (\n        <LocaleReceiver\n          componentName=\"PageHeader\"\n          children={({ back }: any) => (\n            <div class={`${prefixCls.value}-back`}>\n              <TransButton\n                onClick={e => {\n                  emit('back', e);\n                }}\n                class={`${prefixCls.value}-back-button`}\n                aria-label={back}\n              >\n                {backIcon}\n              </TransButton>\n            </div>\n          )}\n        ></LocaleReceiver>\n      );\n    };\n\n    const renderBreadcrumb = () => {\n      return props.breadcrumb ? <Breadcrumb {...props.breadcrumb} /> : slots.breadcrumb?.();\n    };\n\n    const renderTitle = () => {\n      const { avatar } = props;\n      const title = props.title ?? slots.title?.();\n      const subTitle = props.subTitle ?? slots.subTitle?.();\n      const tags = props.tags ?? slots.tags?.();\n      const extra = props.extra ?? slots.extra?.();\n      const headingPrefixCls = `${prefixCls.value}-heading`;\n      const hasHeading = title || subTitle || tags || extra;\n      // If there is nothing, return a null\n      if (!hasHeading) {\n        return null;\n      }\n      const backIcon = getBackIcon();\n      const backIconDom = renderBack(backIcon);\n      const hasTitle = backIconDom || avatar || hasHeading;\n      return (\n        <div class={headingPrefixCls}>\n          {hasTitle && (\n            <div class={`${headingPrefixCls}-left`}>\n              {backIconDom}\n              {avatar ? <Avatar {...avatar} /> : slots.avatar?.()}\n              {title && (\n                <span\n                  class={`${headingPrefixCls}-title`}\n                  title={typeof title === 'string' ? title : undefined}\n                >\n                  {title}\n                </span>\n              )}\n              {subTitle && (\n                <span\n                  class={`${headingPrefixCls}-sub-title`}\n                  title={typeof subTitle === 'string' ? subTitle : undefined}\n                >\n                  {subTitle}\n                </span>\n              )}\n              {tags && <span class={`${headingPrefixCls}-tags`}>{tags}</span>}\n            </div>\n          )}\n          {extra && (\n            <span class={`${headingPrefixCls}-extra`}>\n              <Space>{extra}</Space>\n            </span>\n          )}\n        </div>\n      );\n    };\n\n    const renderFooter = () => {\n      const footer = props.footer ?? filterEmpty(slots.footer?.());\n      return isEmptyContent(footer) ? null : (\n        <div class={`${prefixCls.value}-footer`}>{footer}</div>\n      );\n    };\n\n    const renderChildren = (children: any) => {\n      return <div class={`${prefixCls.value}-content`}>{children}</div>;\n    };\n    return () => {\n      const hasBreadcrumb = props.breadcrumb?.routes || slots.breadcrumb;\n      const hasFooter = props.footer || slots.footer;\n      const children = flattenChildren(slots.default?.());\n      const className = classNames(\n        prefixCls.value,\n        {\n          'has-breadcrumb': hasBreadcrumb,\n          'has-footer': hasFooter,\n          [`${prefixCls.value}-ghost`]: ghost.value,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-compact`]: compact.value,\n        },\n        attrs.class,\n        hashId.value,\n      );\n      return wrapSSR(\n        <ResizeObserver onResize={onResize}>\n          <div {...attrs} class={className}>\n            {renderBreadcrumb()}\n            {renderTitle()}\n            {children.length ? renderChildren(children) : null}\n            {renderFooter()}\n          </div>\n        </ResizeObserver>,\n      );\n    };\n  },\n});\n\nexport default withInstall(PageHeader);\n"
  },
  {
    "path": "components/page-header/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 导航\ntitle: PageHeader\ncols: 1\nsubtitle: 页头\ncover: https://gw.alipayobjects.com/zos/alicdn/6bKE0Cq0R/PageHeader.svg\n---\n\n页头位于页容器中，页容器顶部，起到了内容概览和引导页级操作的作用。包括由面包屑、标题、页面内容简介、页面级操作等、页面级导航组成。\n\n## 何时使用\n\n当需要使用户快速理解当前页是什么以及方便用户使用页面功能时使用，通常也可被用作页面间导航。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| avatar | 标题栏旁的头像 | [avatar props](/components/avatar-cn/) | - |\n| backIcon | 自定义 back icon ，如果为 false 不渲染 back icon | string\\|slot | `<ArrowLeft />` |\n| breadcrumb | 面包屑的配置 | [breadcrumb](/components/breadcrumb-cn/) | - |\n| extra | 操作区，位于 title 行的行尾 | string\\|slot | - |\n| footer | PageHeader 的页脚，一般用于渲染 TabBar | string\\|slot | - |\n| ghost | pageHeader 的类型，将会改变背景颜色 | boolean | true |\n| subTitle | 自定义的二级标题文字 | string\\|slot | - |\n| tags | title 旁的 tag 列表 | [Tag](/components/tag-cn/)\\[] \\| [Tag](/components/tag-cn/) | - |\n| title | 自定义标题文字 | string\\|slot | - |\n\n### 事件\n\n| 事件名称 | 说明               | 回调参数    |\n| -------- | ------------------ | ----------- |\n| back     | 返回按钮的点击事件 | function(e) |\n"
  },
  {
    "path": "components/page-header/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\nimport { operationUnit } from '../../style';\n\ninterface PageHeaderToken extends FullToken<'PageHeader'> {\n  pageHeaderPadding: number;\n  pageHeaderPaddingVertical: number;\n  pageHeaderPaddingBreadcrumb: number;\n  pageHeaderGhostBg: string;\n  pageHeaderBackColor: string;\n  pageHeaderHeadingTitle: number;\n  pageHeaderHeadingSubTitle: number;\n  pageHeaderContentPaddingVertical: number;\n  pageHeaderTabFontSize: number;\n}\n\nconst genPageHeaderStyle: GenerateStyle<PageHeaderToken, CSSObject> = token => {\n  const { componentCls, antCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      position: 'relative',\n      padding: `${token.pageHeaderPaddingVertical}px ${token.pageHeaderPadding}px`,\n      backgroundColor: token.colorBgContainer,\n\n      [`&${componentCls}-ghost`]: {\n        backgroundColor: token.pageHeaderGhostBg,\n      },\n\n      [`&.has-footer`]: {\n        paddingBottom: 0,\n      },\n\n      [`${componentCls}-back`]: {\n        marginRight: token.marginMD,\n        fontSize: token.fontSizeLG,\n        lineHeight: 1,\n\n        [`&-button`]: {\n          ...operationUnit(token),\n          color: token.pageHeaderBackColor,\n          cursor: 'pointer',\n        },\n      },\n\n      [`${antCls}-divider-vertical`]: {\n        height: '14px',\n        margin: `0 ${token.marginSM}`,\n        verticalAlign: 'middle',\n      },\n\n      [`${antCls}-breadcrumb + &-heading`]: {\n        marginTop: token.marginXS,\n      },\n\n      [`${componentCls}-heading`]: {\n        display: 'flex',\n        justifyContent: 'space-between',\n\n        [`&-left`]: {\n          display: 'flex',\n          alignItems: 'center',\n          margin: `${token.marginXS / 2}px 0`,\n          overflow: 'hidden',\n        },\n\n        [`&-title`]: {\n          marginRight: token.marginSM,\n          marginBottom: 0,\n          color: token.colorTextHeading,\n          fontWeight: 600,\n          fontSize: token.pageHeaderHeadingTitle,\n          lineHeight: `${token.controlHeight}px`,\n          ...textEllipsis,\n        },\n\n        [`${antCls}-avatar`]: {\n          marginRight: token.marginSM,\n        },\n\n        [`&-sub-title`]: {\n          marginRight: token.marginSM,\n          color: token.colorTextDescription,\n          fontSize: token.pageHeaderHeadingSubTitle,\n          lineHeight: token.lineHeight,\n          ...textEllipsis,\n        },\n\n        [`&-extra`]: {\n          margin: `${token.marginXS / 2}px 0`,\n          whiteSpace: 'nowrap',\n\n          [`> *`]: {\n            marginLeft: token.marginSM,\n            whiteSpace: 'unset',\n          },\n\n          [`> *:first-child`]: {\n            marginLeft: 0,\n          },\n        },\n      },\n\n      [`${componentCls}-content`]: {\n        paddingTop: token.pageHeaderContentPaddingVertical,\n      },\n\n      [`${componentCls}-footer`]: {\n        marginTop: token.marginMD,\n        [`${antCls}-tabs`]: {\n          [`> ${antCls}-tabs-nav`]: {\n            margin: 0,\n\n            [`&::before`]: {\n              border: 'none',\n            },\n          },\n          [`${antCls}-tabs-tab`]: {\n            paddingTop: token.paddingXS,\n            paddingBottom: token.paddingXS,\n            fontSize: token.pageHeaderTabFontSize,\n          },\n        },\n      },\n\n      [`${componentCls}-compact ${componentCls}-heading`]: {\n        flexWrap: 'wrap',\n      },\n\n      // rtl style\n      [`&${token.componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('PageHeader', token => {\n  const PageHeaderToken = mergeToken<PageHeaderToken>(token, {\n    pageHeaderPadding: token.paddingLG,\n    pageHeaderPaddingVertical: token.paddingMD,\n    pageHeaderPaddingBreadcrumb: token.paddingSM,\n    pageHeaderContentPaddingVertical: token.paddingSM,\n    pageHeaderBackColor: token.colorTextBase,\n    pageHeaderGhostBg: 'transparent',\n    pageHeaderHeadingTitle: token.fontSizeHeading4,\n    pageHeaderHeadingSubTitle: token.fontSize,\n    pageHeaderTabFontSize: token.fontSizeLG,\n  });\n\n  return [genPageHeaderStyle(PageHeaderToken)];\n});\n"
  },
  {
    "path": "components/pagination/Pagination.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, toRef, defineComponent } from 'vue';\nimport LeftOutlined from '@ant-design/icons-vue/LeftOutlined';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport DoubleLeftOutlined from '@ant-design/icons-vue/DoubleLeftOutlined';\nimport DoubleRightOutlined from '@ant-design/icons-vue/DoubleRightOutlined';\nimport MiniSelect, { MiddleSelect } from './Select';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport VcPagination from '../vc-pagination';\nimport enUS from '../vc-pagination/locale/en_US';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\nimport { booleanType, arrayType, stringType, functionType, someType } from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport const paginationProps = () => ({\n  total: Number,\n  defaultCurrent: Number,\n  disabled: booleanType(),\n  current: Number,\n  defaultPageSize: Number,\n  pageSize: Number,\n  hideOnSinglePage: booleanType(),\n  showSizeChanger: booleanType(),\n  pageSizeOptions: arrayType<(string | number)[]>(),\n  buildOptionText: functionType<(opt: { value: any }) => any>(),\n  showQuickJumper: someType<boolean | { goButton?: any }>([Boolean, Object]),\n  showTotal: functionType<(total: number, range: [number, number]) => any>(),\n  size: stringType<'default' | 'small'>(),\n  simple: booleanType(),\n  locale: Object,\n  prefixCls: String,\n  selectPrefixCls: String,\n  totalBoundaryShowSizeChanger: Number,\n  selectComponentClass: String,\n  itemRender:\n    functionType<\n      (opt: {\n        page: number;\n        type: 'page' | 'prev' | 'next' | 'jump-prev' | 'jump-next';\n        originalElement: any;\n      }) => any\n    >(),\n  role: String,\n  responsive: Boolean,\n  showLessItems: booleanType(),\n  onChange: functionType<(page: number, pageSize: number) => void>(),\n  onShowSizeChange: functionType<(current: number, size: number) => void>(),\n  'onUpdate:current': functionType<(current: number) => void>(),\n  'onUpdate:pageSize': functionType<(size: number) => void>(),\n});\n\nexport type PaginationPosition = 'top' | 'bottom' | 'both';\nexport const paginationConfig = () => ({\n  ...paginationProps(),\n  position: stringType<PaginationPosition>(),\n});\n\nexport type PaginationProps = Partial<ExtractPropTypes<ReturnType<typeof paginationProps>>>;\nexport type PaginationConfig = Partial<ExtractPropTypes<ReturnType<typeof paginationConfig>>>;\n\nexport interface PaginationLocale {\n  items_per_page?: string;\n  jump_to?: string;\n  jump_to_confirm?: string;\n  page?: string;\n  prev_page?: string;\n  next_page?: string;\n  prev_5?: string;\n  next_5?: string;\n  prev_3?: string;\n  next_3?: string;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'APagination',\n  inheritAttrs: false,\n  props: paginationProps(),\n  // emits: ['change', 'showSizeChange', 'update:current', 'update:pageSize'],\n  setup(props, { slots, attrs }) {\n    const { prefixCls, configProvider, direction, size } = useConfigInject('pagination', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const selectPrefixCls = computed(() =>\n      configProvider.getPrefixCls('select', props.selectPrefixCls),\n    );\n    const breakpoint = useBreakpoint();\n    const [locale] = useLocaleReceiver('Pagination', enUS, toRef(props, 'locale'));\n    const getIconsProps = (pre: string) => {\n      const ellipsis = <span class={`${pre}-item-ellipsis`}>•••</span>;\n      const prevIcon = (\n        <button class={`${pre}-item-link`} type=\"button\" tabindex={-1}>\n          {direction.value === 'rtl' ? <RightOutlined /> : <LeftOutlined />}\n        </button>\n      );\n      const nextIcon = (\n        <button class={`${pre}-item-link`} type=\"button\" tabindex={-1}>\n          {direction.value === 'rtl' ? <LeftOutlined /> : <RightOutlined />}\n        </button>\n      );\n      const jumpPrevIcon = (\n        <a rel=\"nofollow\" class={`${pre}-item-link`}>\n          <div class={`${pre}-item-container`}>\n            {direction.value === 'rtl' ? (\n              <DoubleRightOutlined class={`${pre}-item-link-icon`} />\n            ) : (\n              <DoubleLeftOutlined class={`${pre}-item-link-icon`} />\n            )}\n            {ellipsis}\n          </div>\n        </a>\n      );\n      const jumpNextIcon = (\n        <a rel=\"nofollow\" class={`${pre}-item-link`}>\n          <div class={`${pre}-item-container`}>\n            {direction.value === 'rtl' ? (\n              <DoubleLeftOutlined class={`${pre}-item-link-icon`} />\n            ) : (\n              <DoubleRightOutlined class={`${pre}-item-link-icon`} />\n            )}\n            {ellipsis}\n          </div>\n        </a>\n      );\n      return { prevIcon, nextIcon, jumpPrevIcon, jumpNextIcon };\n    };\n\n    return () => {\n      const {\n        itemRender = slots.itemRender,\n        buildOptionText = slots.buildOptionText,\n        selectComponentClass,\n        responsive,\n        ...restProps\n      } = props;\n\n      const isSmall =\n        size.value === 'small' || !!(breakpoint.value?.xs && !size.value && responsive);\n      const paginationProps = {\n        ...restProps,\n        ...getIconsProps(prefixCls.value),\n        prefixCls: prefixCls.value,\n        selectPrefixCls: selectPrefixCls.value,\n        selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),\n        locale: locale.value,\n        buildOptionText,\n        ...attrs,\n        class: classNames(\n          {\n            [`${prefixCls.value}-mini`]: isSmall,\n            [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          },\n          attrs.class,\n          hashId.value,\n        ),\n        itemRender,\n      };\n\n      return wrapSSR(<VcPagination {...paginationProps} />);\n    };\n  },\n});\n"
  },
  {
    "path": "components/pagination/Select.tsx",
    "content": "import { defineComponent } from 'vue';\nimport VcSelect, { selectProps } from '../select';\n\nexport default defineComponent({\n  name: 'MiniSelect',\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: selectProps(),\n  Option: VcSelect.Option,\n  setup(props, { attrs, slots }) {\n    return () => {\n      const selelctProps: any = {\n        ...props,\n        size: 'small',\n        ...attrs,\n      };\n      return <VcSelect {...selelctProps} v-slots={slots}></VcSelect>;\n    };\n  },\n});\n\nexport const MiddleSelect = defineComponent({\n  name: 'MiddleSelect',\n  inheritAttrs: false,\n  props: selectProps(),\n  Option: VcSelect.Option,\n  setup(props, { attrs, slots }) {\n    return () => {\n      const selelctProps: any = {\n        ...props,\n        size: 'middle',\n        ...attrs,\n      };\n      return <VcSelect {...selelctProps} v-slots={slots}></VcSelect>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/pagination/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/pagination/demo/basic.vue correctly 1`] = `\n<ul unselectable=\"on\" class=\"ant-pagination\">\n  <!---->\n  <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n  <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2 ant-pagination-item-active\"><a rel=\"nofollow\">2</a></li>\n  <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n  <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n  <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n  <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n  <!---->\n</ul>\n`;\n\nexports[`renders ./components/pagination/demo/changer.vue correctly 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3 ant-pagination-item-active\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n        <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n      </a></li>\n    <li title=\"25\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-25\"><a rel=\"nofollow\">25</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">20 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul><br>\n  <ul unselectable=\"on\" class=\"ant-pagination ant-pagination-disabled\">\n    <!---->\n    <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4 ant-pagination-item-active\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"6\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-6 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">6</a></li>\n    <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n        <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n      </a></li>\n    <li title=\"50\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-50\"><a rel=\"nofollow\">50</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow ant-select-disabled\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/pagination/demo/custom-changer.vue correctly 1`] = `\n<ul unselectable=\"on\" class=\"ant-pagination\">\n  <!---->\n  <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n  <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n  <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n  <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n  <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n  <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n  <li class=\"ant-pagination-options\">\n    <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\"><span>10条/页</span></span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/pagination/demo/itemRender.vue correctly 1`] = `\n<ul unselectable=\"on\" class=\"ant-pagination\">\n  <!---->\n  <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><a disabled=\"true\">Previous</a></li>\n  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n  <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n  <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n  <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n  <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n  <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n      <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n    </a></li>\n  <li title=\"50\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-50\"><a rel=\"nofollow\">50</a></li>\n  <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><a>Next</a></li>\n  <li class=\"ant-pagination-options\">\n    <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/pagination/demo/jump.vue correctly 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n        <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n      </a></li>\n    <li title=\"50\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-50\"><a rel=\"nofollow\">50</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-pagination-options-quick-jumper\">Go to<input type=\"text\">\n        <!---->\n      </div>\n    </li>\n  </ul><br>\n  <ul unselectable=\"on\" class=\"ant-pagination ant-pagination-disabled\">\n    <!---->\n    <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2 ant-pagination-item-active\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"Next 3 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n        <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n      </a></li>\n    <li title=\"50\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-50\"><a rel=\"nofollow\">50</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow ant-select-disabled\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-pagination-options-quick-jumper\">Go to<input disabled=\"\" type=\"text\">\n        <!---->\n      </div>\n    </li>\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/pagination/demo/mini.vue correctly 1`] = `\n<div id=\"components-pagination-demo-mini\">\n  <ul unselectable=\"on\" class=\"ant-pagination mini\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <!---->\n  </ul>\n  <ul unselectable=\"on\" class=\"ant-pagination mini\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-select-sm ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <div class=\"ant-pagination-options-quick-jumper\">Go to<input type=\"text\">\n        <!---->\n      </div>\n    </li>\n  </ul>\n  <ul unselectable=\"on\" class=\"ant-pagination mini\">\n    <li class=\"ant-pagination-total-text\">Total 50 items</li>\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <!---->\n  </ul>\n</div>\n`;\n\nexports[`renders ./components/pagination/demo/more.vue correctly 1`] = `\n<ul unselectable=\"on\" class=\"ant-pagination\">\n  <!---->\n  <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n  <li title=\"Previous 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-prev ant-pagination-jump-prev-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n      <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-left\" class=\"anticon anticon-double-left ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n    </a></li>\n  <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4 ant-pagination-item-after-jump-prev\"><a rel=\"nofollow\">4</a></li>\n  <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n  <li title=\"6\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-6 ant-pagination-item-active\"><a rel=\"nofollow\">6</a></li>\n  <li title=\"7\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-7\"><a rel=\"nofollow\">7</a></li>\n  <li title=\"8\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-8 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">8</a></li>\n  <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n      <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n    </a></li>\n  <li title=\"50\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-50\"><a rel=\"nofollow\">50</a></li>\n  <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n  <li class=\"ant-pagination-options\">\n    <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <!---->\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/pagination/demo/simple.vue correctly 1`] = `\n<ul class=\"ant-pagination ant-pagination-simple\">\n  <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n  <li title=\"2/5\" class=\"ant-pagination-simple-pager\"><input type=\"text\" size=\"3\"><span class=\"ant-pagination-slash\">／</span>5</li>\n  <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n  <!---->\n</ul>\n`;\n\nexports[`renders ./components/pagination/demo/total.vue correctly 1`] = `\n<div>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <li class=\"ant-pagination-total-text\">Total 85 items</li>\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">20 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul><br>\n  <ul unselectable=\"on\" class=\"ant-pagination\">\n    <li class=\"ant-pagination-total-text\">21-40 of 85 items</li>\n    <li title=\"Previous Page\" tabindex=\"0\" class=\"ant-pagination-prev\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2 ant-pagination-item-active\"><a rel=\"nofollow\">2</a></li>\n    <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n    <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n    <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n    <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <li class=\"ant-pagination-options\">\n      <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n        <!---->\n        <!---->\n        <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">20 / page</span>\n          <!---->\n        </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </li>\n  </ul>\n</div>\n`;\n"
  },
  {
    "path": "components/pagination/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('pagination');\n"
  },
  {
    "path": "components/pagination/__tests__/index.test.js",
    "content": "import Pagination from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Pagination', () => {\n  mountTest(Pagination);\n});\n"
  },
  {
    "path": "components/pagination/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n基础分页。\n\n## en-US\n\nBasic pagination.\n\n</docs>\n\n<template>\n  <a-pagination v-model:current=\"current\" :total=\"50\" show-less-items />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref(2);\n</script>\n"
  },
  {
    "path": "components/pagination/demo/changer.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 改变\n  en-US: Changer\n---\n\n## zh-CN\n\n改变每页显示条目数。\n\n## en-US\n\nChange `pageSize`.\n</docs>\n\n<template>\n  <div>\n    <a-pagination\n      v-model:current=\"current1\"\n      v-model:pageSize=\"pageSize\"\n      show-size-changer\n      :total=\"500\"\n      @showSizeChange=\"onShowSizeChange\"\n    />\n    <br />\n    <a-pagination\n      v-model:current=\"current2\"\n      show-size-changer\n      :total=\"500\"\n      disabled\n      @showSizeChange=\"onShowSizeChange\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nconst pageSize = ref(20);\nconst current1 = ref(3);\nconst current2 = ref(4);\nconst onShowSizeChange = (current: number, pageSize: number) => {\n  console.log(current, pageSize);\n};\nwatch(pageSize, () => {\n  console.log('pageSize', pageSize.value);\n});\nwatch(current1, () => {\n  console.log('current', current1.value);\n});\n</script>\n"
  },
  {
    "path": "components/pagination/demo/custom-changer.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义下拉选项\n  en-US: Custom dropdown options\n---\n\n## zh-CN\n\n自定义下拉选项，例如添加全部选项\n\n## en-US\n\nCustomize dropdown options such as adding all options\n</docs>\n\n<template>\n  <a-pagination\n    v-model:current=\"current\"\n    v-model:page-size=\"pageSizeRef\"\n    :page-size-options=\"pageSizeOptions\"\n    :total=\"total\"\n    show-size-changer\n    @showSizeChange=\"onShowSizeChange\"\n  >\n    <template #buildOptionText=\"props\">\n      <span v-if=\"props.value !== '50'\">{{ props.value }}条/页</span>\n      <span v-else>全部</span>\n    </template>\n  </a-pagination>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst pageSizeOptions = ref<string[]>(['10', '20', '30', '40', '50']);\nconst current = ref(1);\nconst pageSizeRef = ref(10);\nconst total = ref(50);\nconst onShowSizeChange = (current: number, pageSize: number) => {\n  console.log(current, pageSize);\n  pageSizeRef.value = pageSize;\n};\n</script>\n"
  },
  {
    "path": "components/pagination/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <More />\n    <Changer />\n    <CustomChanger />\n    <Jump />\n    <Mini />\n    <Simple />\n    <Total />\n    <ItemRender />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport More from './more.vue';\nimport Changer from './changer.vue';\nimport CustomChanger from './custom-changer.vue';\nimport Jump from './jump.vue';\nimport Simple from './simple.vue';\nimport ItemRender from './itemRender.vue';\nimport Mini from './mini.vue';\nimport Total from './total.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    More,\n    Changer,\n    CustomChanger,\n    Jump,\n    Simple,\n    Mini,\n    Total,\n    ItemRender,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/pagination/demo/itemRender.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 上一步和下一步\n  en-US: Prev and next\n---\n\n## zh-CN\n\n修改上一步和下一步为文字链接。\n\n## en-US\n\nUse text link for prev and next button.\n</docs>\n\n<template>\n  <a-pagination v-model:current=\"current\" :total=\"500\">\n    <template #itemRender=\"{ type, originalElement }\">\n      <a v-if=\"type === 'prev'\">Previous</a>\n      <a v-else-if=\"type === 'next'\">Next</a>\n      <component :is=\"originalElement\" v-else></component>\n    </template>\n  </a-pagination>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref(1);\n</script>\n"
  },
  {
    "path": "components/pagination/demo/jump.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 跳转\n  en-US: Jumper\n---\n\n## zh-CN\n\n快速跳转到某一页。\n\n## en-US\n\nJump to a page directly.\n</docs>\n<template>\n  <div>\n    <a-pagination v-model:current=\"current1\" show-quick-jumper :total=\"500\" @change=\"onChange\" />\n    <br />\n    <a-pagination\n      v-model:current=\"current2\"\n      show-quick-jumper\n      :total=\"500\"\n      disabled\n      show-less-items\n      @change=\"onChange\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current1 = ref<number>(1);\nconst current2 = ref<number>(2);\nconst onChange = (pageNumber: number) => {\n  console.log('Page: ', pageNumber);\n};\n</script>\n"
  },
  {
    "path": "components/pagination/demo/mini.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 迷你\n  en-US: Mini size\n---\n\n## zh-CN\n\n迷你版本。\n\n## en-US\n\nMini size pagination.\n</docs>\n<template>\n  <div id=\"components-pagination-demo-mini\">\n    <a-pagination size=\"small\" :total=\"50\" />\n    <a-pagination size=\"small\" :total=\"50\" show-size-changer show-quick-jumper />\n    <a-pagination size=\"small\" :total=\"50\" :show-total=\"total => `Total ${total} items`\" />\n  </div>\n</template>\n<style scoped>\n#components-pagination-demo-mini .ant-pagination:not(:last-child) {\n  margin-bottom: 24px;\n}\n</style>\n"
  },
  {
    "path": "components/pagination/demo/more.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 更多\n  en-US: More\n---\n\n## zh-CN\n\n更多分页。\n\n## en-US\n\nMore pages.\n</docs>\n\n<template>\n  <a-pagination v-model:current=\"current\" :total=\"500\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref(6);\n</script>\n"
  },
  {
    "path": "components/pagination/demo/simple.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 简洁\n  en-US: Simple mode\n---\n\n## zh-CN\n\n简单的翻页。\n\n## en-US\n\nSimple mode.\n</docs>\n<template>\n  <a-pagination v-model:current=\"current\" simple :total=\"50\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(2);\n</script>\n"
  },
  {
    "path": "components/pagination/demo/total.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 总数\n  en-US: Total number\n---\n\n## zh-CN\n\n通过设置 `showTotal` 展示总共有多少数据。\n\n## en-US\n\nYou can show the total number of data by setting `showTotal`.\n</docs>\n\n<template>\n  <div>\n    <a-pagination\n      v-model:current=\"current1\"\n      v-model:page-size=\"pageSize1\"\n      :total=\"85\"\n      :show-total=\"total => `Total ${total} items`\"\n    />\n    <br />\n    <a-pagination\n      v-model:current=\"current2\"\n      v-model:page-size=\"pageSize2\"\n      :total=\"85\"\n      :show-total=\"(total, range) => `${range[0]}-${range[1]} of ${total} items`\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current1 = ref<number>(1);\nconst current2 = ref<number>(2);\nconst pageSize1 = ref<number>(20);\nconst pageSize2 = ref<number>(20);\n</script>\n"
  },
  {
    "path": "components/pagination/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ntitle: Pagination\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8y_iTJGY_aUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WM86SrBC8TsAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA long list can be divided into several pages using `Pagination`, and only one page will be loaded at a time.\n\n## When To Use\n\n- When it will take a long time to load/render all items.\n- If you want to browse the data by navigating through pages.\n\n## API\n\n```html\n<a-pagination @change=\"onChange\" :total=\"50\" />\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| current(v-model) | current page number | number | - |  |\n| defaultCurrent | default initial page number | number | 1 |  |\n| defaultPageSize | default number of data items per page | number | 10 |  |\n| disabled | Disable pagination | boolean | - | 1.5.0 |\n| hideOnSinglePage | Whether to hide pager on single page | boolean | false |  |\n| itemRender | to customize item innerHTML | (page, type: 'page' \\| 'prev' \\| 'next', originalElement) => vNode \\| v-slot | - |  |\n| pageSize(v-model) | number of data items per page | number | - |  |\n| pageSizeOptions | specify the sizeChanger options | string\\[] \\| number\\[] | \\['10', '20', '50', '100'] |  |\n| responsive | If `size` is not specified, `Pagination` would resize according to the width of the window | boolean | - | 3.1 |\n| showLessItems | Show less page items | boolean | false | 1.5.0 |\n| showQuickJumper | determine whether you can jump to pages directly | boolean | false |  |\n| showSizeChanger | Determine whether to show `pageSize` select, it will be true when `total > 50` | boolean | - |  |\n| showTitle | Show page item's title | boolean | true | 1.5.0 |\n| showTotal | to display the total number and range | Function(total, range) | - |  |\n| simple | whether to use simple mode | boolean | - |  |\n| size | specify the size of `Pagination`, can be set to `small` | string | \"\" |  |\n| total | total number of data items | number | 0 |  |\n\n### events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | Called when the page number or `pageSize` is changed, and it takes the resulting page number and pageSize as its arguments | Function(page, pageSize) | noop |\n| showSizeChange | a callback function, executed when `pageSize` is changed | Function(current, size) | noop |\n"
  },
  {
    "path": "components/pagination/index.ts",
    "content": "import Pagination from './Pagination';\nimport { withInstall } from '../_util/type';\n\nexport { paginationProps, paginationConfig } from './Pagination';\nexport type { PaginationProps, PaginationConfig } from './Pagination';\n\nexport default withInstall(Pagination);\n"
  },
  {
    "path": "components/pagination/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 分页\ntype: 导航\ntitle: Pagination\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8y_iTJGY_aUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WM86SrBC8TsAAAAAAAAAAAAADrJ8AQ/original\n---\n\n采用分页的形式分隔长列表，每次只加载一个页面。\n\n## API\n\n```html\n<a-pagination @change=\"onChange\" :total=\"50\" />\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| current(v-model) | 当前页数 | number | - |  |\n| defaultPageSize | 默认的每页条数 | number | 10 |  |\n| disabled | 禁用分页 | boolean | - | 1.5.0 |\n| hideOnSinglePage | 只有一页时是否隐藏分页器 | boolean | false |  |\n| itemRender | 用于自定义页码的结构，可用于优化 SEO | ({page, type: 'page' \\| 'prev' \\| 'next', originalElement}) => vNode \\| v-slot | - |  |\n| pageSize(v-model) | 每页条数 | number | - |  |\n| pageSizeOptions | 指定每页可以显示多少条 | string\\[] \\| number\\[] | \\['10', '20', '50', '100'] |  |\n| responsive | 当 size 未指定时，根据屏幕宽度自动调整尺寸 | boolean | - | 3.1 |\n| showLessItems | 是否显示较少页面内容 | boolean | false | 1.5.0 |\n| showQuickJumper | 是否可以快速跳转至某页 | boolean | false |  |\n| showSizeChanger | 是否展示 `pageSize` 切换器，当 `total` 大于 50 时默认为 true | boolean | - |  |\n| showTotal | 用于显示数据总量和当前数据顺序 | Function(total, range) | - |  |\n| simple | 当添加该属性时，显示为简单分页 | boolean | - |  |\n| size | 当为「small」时，是小尺寸分页 | string | \"\" |  |\n| total | 数据总数 | number | 0 |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |  |\n| --- | --- | --- | --- |\n| change | 页码或 `pageSize` 改变的回调，参数是改变后的页码及每页条数 | Function(page, pageSize) | noop |\n| showSizeChange | pageSize 变化的回调 | Function(current, size) | noop |\n"
  },
  {
    "path": "components/pagination/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport {\n  genBasicInputStyle,\n  genInputSmallStyle,\n  initInputToken,\n  type InputToken,\n} from '../../input/style';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\n\ninterface PaginationToken extends InputToken<FullToken<'Pagination'>> {\n  paginationItemSize: number;\n  paginationFontFamily: string;\n  paginationItemBg: string;\n  paginationItemBgActive: string;\n  paginationFontWeightActive: number;\n  paginationItemSizeSM: number;\n  paginationItemInputBg: string;\n  paginationMiniOptionsSizeChangerTop: number;\n  paginationItemDisabledBgActive: string;\n  paginationItemDisabledColorActive: string;\n  paginationItemLinkBg: string;\n  inputOutlineOffset: string;\n  paginationMiniOptionsMarginInlineStart: number;\n  paginationMiniQuickJumperInputWidth: number;\n  paginationItemPaddingInline: number;\n  paginationEllipsisLetterSpacing: number;\n  paginationEllipsisTextIndent: string;\n  paginationSlashMarginInlineStart: number;\n  paginationSlashMarginInlineEnd: number;\n}\n\nconst genPaginationDisabledStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-disabled`]: {\n      '&, &:hover': {\n        cursor: 'not-allowed',\n\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n      },\n\n      '&:focus-visible': {\n        cursor: 'not-allowed',\n\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n      },\n    },\n\n    [`&${componentCls}-disabled`]: {\n      cursor: 'not-allowed',\n      [`&${componentCls}-mini`]: {\n        [`\n          &:hover ${componentCls}-item:not(${componentCls}-item-active),\n          &:active ${componentCls}-item:not(${componentCls}-item-active),\n          &:hover ${componentCls}-item-link,\n          &:active ${componentCls}-item-link\n        `]: {\n          backgroundColor: 'transparent',\n        },\n      },\n      [`${componentCls}-item`]: {\n        cursor: 'not-allowed',\n\n        '&:hover, &:active': {\n          backgroundColor: 'transparent',\n        },\n\n        a: {\n          color: token.colorTextDisabled,\n          backgroundColor: 'transparent',\n          border: 'none',\n          cursor: 'not-allowed',\n        },\n\n        '&-active': {\n          borderColor: token.colorBorder,\n          backgroundColor: token.paginationItemDisabledBgActive,\n\n          '&:hover, &:active': {\n            backgroundColor: token.paginationItemDisabledBgActive,\n          },\n\n          a: {\n            color: token.paginationItemDisabledColorActive,\n          },\n        },\n      },\n\n      [`${componentCls}-item-link`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        '&:hover, &:active': {\n          backgroundColor: 'transparent',\n        },\n        [`${componentCls}-simple&`]: {\n          backgroundColor: 'transparent',\n          '&:hover, &:active': {\n            backgroundColor: 'transparent',\n          },\n        },\n      },\n\n      [`${componentCls}-simple-pager`]: {\n        color: token.colorTextDisabled,\n      },\n\n      [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 0,\n        },\n\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 1,\n        },\n      },\n    },\n    [`&${componentCls}-simple`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&${componentCls}-disabled ${componentCls}-item-link`]: {\n          '&:hover, &:active': {\n            backgroundColor: 'transparent',\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genPaginationMiniStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]:\n      {\n        height: token.paginationItemSizeSM,\n        lineHeight: `${token.paginationItemSizeSM}px`,\n      },\n\n    [`&${componentCls}-mini ${componentCls}-item`]: {\n      minWidth: token.paginationItemSizeSM,\n      height: token.paginationItemSizeSM,\n      margin: 0,\n      lineHeight: `${token.paginationItemSizeSM - 2}px`,\n    },\n\n    [`&${componentCls}-mini ${componentCls}-item:not(${componentCls}-item-active)`]: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n      '&:hover': {\n        backgroundColor: token.colorBgTextHover,\n      },\n      '&:active': {\n        backgroundColor: token.colorBgTextActive,\n      },\n    },\n\n    [`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {\n      minWidth: token.paginationItemSizeSM,\n      height: token.paginationItemSizeSM,\n      margin: 0,\n      lineHeight: `${token.paginationItemSizeSM}px`,\n      [`&:hover ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextHover,\n      },\n      [`&:active ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextActive,\n      },\n      [`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {\n        backgroundColor: 'transparent',\n      },\n    },\n\n    [`\n    &${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,\n    &${componentCls}-mini ${componentCls}-next ${componentCls}-item-link\n    `]: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n\n      '&::after': {\n        height: token.paginationItemSizeSM,\n        lineHeight: `${token.paginationItemSizeSM}px`,\n      },\n    },\n\n    [`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]:\n      {\n        height: token.paginationItemSizeSM,\n        marginInlineEnd: 0,\n        lineHeight: `${token.paginationItemSizeSM}px`,\n      },\n\n    [`&${componentCls}-mini ${componentCls}-options`]: {\n      marginInlineStart: token.paginationMiniOptionsMarginInlineStart,\n\n      [`&-size-changer`]: {\n        top: token.paginationMiniOptionsSizeChangerTop,\n      },\n\n      [`&-quick-jumper`]: {\n        height: token.paginationItemSizeSM,\n        lineHeight: `${token.paginationItemSizeSM}px`,\n\n        input: {\n          ...genInputSmallStyle(token),\n\n          width: token.paginationMiniQuickJumperInputWidth,\n          height: token.controlHeightSM,\n        },\n      },\n    },\n  };\n};\n\nconst genPaginationSimpleStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`\n    &${componentCls}-simple ${componentCls}-prev,\n    &${componentCls}-simple ${componentCls}-next\n    `]: {\n      height: token.paginationItemSizeSM,\n      lineHeight: `${token.paginationItemSizeSM}px`,\n      verticalAlign: 'top',\n      [`${componentCls}-item-link`]: {\n        height: token.paginationItemSizeSM,\n        backgroundColor: 'transparent',\n        border: 0,\n        '&:hover': {\n          backgroundColor: token.colorBgTextHover,\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive,\n        },\n        '&::after': {\n          height: token.paginationItemSizeSM,\n          lineHeight: `${token.paginationItemSizeSM}px`,\n        },\n      },\n    },\n\n    [`&${componentCls}-simple ${componentCls}-simple-pager`]: {\n      display: 'inline-block',\n      height: token.paginationItemSizeSM,\n      marginInlineEnd: token.marginXS,\n\n      input: {\n        boxSizing: 'border-box',\n        height: '100%',\n        marginInlineEnd: token.marginXS,\n        padding: `0 ${token.paginationItemPaddingInline}px`,\n        textAlign: 'center',\n        backgroundColor: token.paginationItemInputBg,\n        border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `border-color ${token.motionDurationMid}`,\n        color: 'inherit',\n\n        '&:hover': {\n          borderColor: token.colorPrimary,\n        },\n\n        '&:focus': {\n          borderColor: token.colorPrimaryHover,\n          boxShadow: `${token.inputOutlineOffset}px 0 ${token.controlOutlineWidth}px ${token.controlOutline}`,\n        },\n\n        '&[disabled]': {\n          color: token.colorTextDisabled,\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          cursor: 'not-allowed',\n        },\n      },\n    },\n  };\n};\n\nconst genPaginationJumpStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n      outline: 0,\n\n      [`${componentCls}-item-container`]: {\n        position: 'relative',\n\n        [`${componentCls}-item-link-icon`]: {\n          color: token.colorPrimary,\n          fontSize: token.fontSizeSM,\n          opacity: 0,\n          transition: `all ${token.motionDurationMid}`,\n\n          '&-svg': {\n            top: 0,\n            insetInlineEnd: 0,\n            bottom: 0,\n            insetInlineStart: 0,\n            margin: 'auto',\n          },\n        },\n\n        [`${componentCls}-item-ellipsis`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          display: 'block',\n          margin: 'auto',\n          color: token.colorTextDisabled,\n          fontFamily: 'Arial, Helvetica, sans-serif',\n          letterSpacing: token.paginationEllipsisLetterSpacing,\n          textAlign: 'center',\n          textIndent: token.paginationEllipsisTextIndent,\n          opacity: 1,\n          transition: `all ${token.motionDurationMid}`,\n        },\n      },\n\n      '&:hover': {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 1,\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 0,\n        },\n      },\n\n      '&:focus-visible': {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 1,\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 0,\n        },\n        ...genFocusOutline(token),\n      },\n    },\n\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      marginInlineEnd: token.marginXS,\n    },\n\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-next,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      display: 'inline-block',\n      minWidth: token.paginationItemSize,\n      height: token.paginationItemSize,\n      color: token.colorText,\n      fontFamily: token.paginationFontFamily,\n      lineHeight: `${token.paginationItemSize}px`,\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      borderRadius: token.borderRadius,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid}`,\n    },\n\n    [`${componentCls}-prev, ${componentCls}-next`]: {\n      fontFamily: 'Arial, Helvetica, sans-serif',\n      outline: 0,\n\n      button: {\n        color: token.colorText,\n        cursor: 'pointer',\n        userSelect: 'none',\n      },\n\n      [`${componentCls}-item-link`]: {\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        padding: 0,\n        fontSize: token.fontSizeSM,\n        textAlign: 'center',\n        backgroundColor: 'transparent',\n        border: `${token.lineWidth}px ${token.lineType} transparent`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `all ${token.motionDurationMid}`,\n      },\n\n      [`&:focus-visible ${componentCls}-item-link`]: {\n        ...genFocusOutline(token),\n      },\n\n      [`&:hover ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextHover,\n      },\n\n      [`&:active ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextActive,\n      },\n\n      [`&${componentCls}-disabled:hover`]: {\n        [`${componentCls}-item-link`]: {\n          backgroundColor: 'transparent',\n        },\n      },\n    },\n\n    [`${componentCls}-slash`]: {\n      marginInlineEnd: token.paginationSlashMarginInlineEnd,\n      marginInlineStart: token.paginationSlashMarginInlineStart,\n    },\n\n    [`${componentCls}-options`]: {\n      display: 'inline-block',\n      marginInlineStart: token.margin,\n      verticalAlign: 'middle',\n\n      '&-size-changer.-select': {\n        display: 'inline-block',\n        width: 'auto',\n      },\n\n      '&-quick-jumper': {\n        display: 'inline-block',\n        height: token.controlHeight,\n        marginInlineStart: token.marginXS,\n        lineHeight: `${token.controlHeight}px`,\n        verticalAlign: 'top',\n\n        input: {\n          ...genBasicInputStyle(token),\n\n          width: token.controlHeightLG * 1.25,\n          height: token.controlHeight,\n          boxSizing: 'border-box',\n          margin: 0,\n          marginInlineStart: token.marginXS,\n          marginInlineEnd: token.marginXS,\n        },\n      },\n    },\n  };\n};\n\nconst genPaginationItemStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-item`]: {\n      display: 'inline-block',\n      minWidth: token.paginationItemSize,\n      height: token.paginationItemSize,\n      marginInlineEnd: token.marginXS,\n      fontFamily: token.paginationFontFamily,\n      lineHeight: `${token.paginationItemSize - 2}px`,\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      backgroundColor: 'transparent',\n      border: `${token.lineWidth}px ${token.lineType} transparent`,\n      borderRadius: token.borderRadius,\n      outline: 0,\n      cursor: 'pointer',\n      userSelect: 'none',\n\n      a: {\n        display: 'block',\n        padding: `0 ${token.paginationItemPaddingInline}px`,\n        color: token.colorText,\n        transition: 'none',\n\n        '&:hover': {\n          textDecoration: 'none',\n        },\n      },\n\n      [`&:not(${componentCls}-item-active)`]: {\n        '&:hover': {\n          transition: `all ${token.motionDurationMid}`,\n          backgroundColor: token.colorBgTextHover,\n        },\n\n        '&:active': {\n          backgroundColor: token.colorBgTextActive,\n        },\n      },\n\n      // cannot merge with `&:hover`\n      // see https://github.com/ant-design/ant-design/pull/34002\n      ...genFocusStyle(token),\n\n      '&-active': {\n        fontWeight: token.paginationFontWeightActive,\n        backgroundColor: token.paginationItemBgActive,\n        borderColor: token.colorPrimary,\n\n        a: {\n          color: token.colorPrimary,\n        },\n\n        '&:hover': {\n          borderColor: token.colorPrimaryHover,\n        },\n\n        '&:hover a': {\n          color: token.colorPrimaryHover,\n        },\n      },\n    },\n  };\n};\n\nconst genPaginationStyle: GenerateStyle<PaginationToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      'ul, ol': {\n        margin: 0,\n        padding: 0,\n        listStyle: 'none',\n      },\n\n      '&::after': {\n        display: 'block',\n        clear: 'both',\n        height: 0,\n        overflow: 'hidden',\n        visibility: 'hidden',\n        content: '\"\"',\n      },\n\n      [`${componentCls}-total-text`]: {\n        display: 'inline-block',\n        height: token.paginationItemSize,\n        marginInlineEnd: token.marginXS,\n        lineHeight: `${token.paginationItemSize - 2}px`,\n        verticalAlign: 'middle',\n      },\n\n      // item style\n      ...genPaginationItemStyle(token),\n\n      // jump btn style\n      ...genPaginationJumpStyle(token),\n\n      // simple style\n      ...genPaginationSimpleStyle(token),\n\n      // mini style\n      ...genPaginationMiniStyle(token),\n\n      // disabled style\n      ...genPaginationDisabledStyle(token),\n\n      // media query style\n      [`@media only screen and (max-width: ${token.screenLG}px)`]: {\n        [`${componentCls}-item`]: {\n          '&-after-jump-prev, &-before-jump-next': {\n            display: 'none',\n          },\n        },\n      },\n\n      [`@media only screen and (max-width: ${token.screenSM}px)`]: {\n        [`${componentCls}-options`]: {\n          display: 'none',\n        },\n      },\n    },\n\n    // rtl style\n    [`&${token.componentCls}-rtl`]: {\n      direction: 'rtl',\n    },\n  };\n};\n\nconst genBorderedStyle: GenerateStyle<PaginationToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}${componentCls}-disabled`]: {\n      '&, &:hover': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder,\n        },\n      },\n\n      '&:focus-visible': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder,\n        },\n      },\n\n      [`${componentCls}-item, ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgContainerDisabled,\n        borderColor: token.colorBorder,\n\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n\n          a: {\n            color: token.colorTextDisabled,\n          },\n        },\n\n        [`&${componentCls}-item-active`]: {\n          backgroundColor: token.paginationItemDisabledBgActive,\n        },\n      },\n\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          color: token.colorTextDisabled,\n        },\n\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n        },\n      },\n    },\n\n    [componentCls]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          borderColor: token.colorPrimaryHover,\n          backgroundColor: token.paginationItemBg,\n        },\n\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.paginationItemLinkBg,\n          borderColor: token.colorBorder,\n        },\n\n        [`&:hover ${componentCls}-item-link`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.paginationItemBg,\n          color: token.colorPrimary,\n        },\n\n        [`&${componentCls}-disabled`]: {\n          [`${componentCls}-item-link`]: {\n            borderColor: token.colorBorder,\n            color: token.colorTextDisabled,\n          },\n        },\n      },\n\n      [`${componentCls}-item`]: {\n        backgroundColor: token.paginationItemBg,\n        border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.paginationItemBg,\n\n          a: {\n            color: token.colorPrimary,\n          },\n        },\n\n        '&-active': {\n          borderColor: token.colorPrimary,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Pagination', token => {\n  const paginationToken = mergeToken<PaginationToken>(\n    token,\n    {\n      paginationItemSize: token.controlHeight,\n      paginationFontFamily: token.fontFamily,\n      paginationItemBg: token.colorBgContainer,\n      paginationItemBgActive: token.colorBgContainer,\n      paginationFontWeightActive: token.fontWeightStrong,\n      paginationItemSizeSM: token.controlHeightSM,\n      paginationItemInputBg: token.colorBgContainer,\n      paginationMiniOptionsSizeChangerTop: 0,\n      paginationItemDisabledBgActive: token.controlItemBgActiveDisabled,\n      paginationItemDisabledColorActive: token.colorTextDisabled,\n      paginationItemLinkBg: token.colorBgContainer,\n      inputOutlineOffset: '0 0',\n      paginationMiniOptionsMarginInlineStart: token.marginXXS / 2,\n      paginationMiniQuickJumperInputWidth: token.controlHeightLG * 1.1,\n      paginationItemPaddingInline: token.marginXXS * 1.5,\n      paginationEllipsisLetterSpacing: token.marginXXS / 2,\n      paginationSlashMarginInlineStart: token.marginXXS,\n      paginationSlashMarginInlineEnd: token.marginSM,\n      paginationEllipsisTextIndent: '0.13em', // magic for ui experience\n    },\n    initInputToken(token),\n  );\n  return [\n    genPaginationStyle(paginationToken),\n    token.wireframe && genBorderedStyle(paginationToken),\n  ];\n});\n"
  },
  {
    "path": "components/popconfirm/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/popconfirm/demo/basic.vue correctly 1`] = `<a href=\"#\">Delete</a>`;\n\nexports[`renders ./components/popconfirm/demo/dynamic-trigger.vue correctly 1`] = `\n<div>\n  <!----><a href=\"#\">Delete a task</a><br><br> Whether directly execute： <label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n    <!---->\n  </label>\n</div>\n`;\n\nexports[`renders ./components/popconfirm/demo/icon.vue correctly 1`] = `<a href=\"#\">Delete</a>`;\n\nexports[`renders ./components/popconfirm/demo/local.vue correctly 1`] = `<a href=\"#\">Delete</a>`;\n\nexports[`renders ./components/popconfirm/demo/placement.vue correctly 1`] = `\n<div id=\"components-a-popconfirm-demo-placement\">\n  <div style=\"margin-left: 70px; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Top</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TR</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; float: left;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Left</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LB</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; margin-left: 304px;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Right</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RB</span>\n    </button>\n  </div>\n  <div style=\"margin-left: 70px; clear: both; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Bottom</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BR</span>\n    </button>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/popconfirm/demo/promise.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Open Popconfirm with Promise</span>\n</button>\n`;\n"
  },
  {
    "path": "components/popconfirm/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Popconfirm should show overlay when trigger is clicked 1`] = `\n<div class=\"ant-popover-content\">\n  <div class=\"ant-popover-arrow\"><span class=\"ant-popover-arrow-content\"></span></div>\n  <div class=\"ant-popover-inner\" role=\"tooltip\"><!---->\n    <div class=\"ant-popover-inner-content\">\n      <div class=\"ant-popconfirm-inner-content\">\n        <div class=\"ant-popconfirm-message\"><span class=\"ant-popconfirm-message-icon\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span></span>\n          <div class=\"ant-popconfirm-message-title\">code</div>\n        </div><!---->\n        <div class=\"ant-popconfirm-buttons\"><button class=\"ant-btn ant-btn-default ant-btn-sm\" type=\"button\"><!----><span>Cancel</span></button><button class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\"><!----><span>OK</span></button></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/popconfirm/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('popconfirm');\n"
  },
  {
    "path": "components/popconfirm/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Popconfirm from '..';\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\ndescribe('Popconfirm', () => {\n  // const eventObject = expect.objectContaining({\n  //   target: expect.anything(),\n  //   preventDefault: expect.any(Function),\n  // })\n  it('should popup Popconfirm dialog', async () => {\n    const onVisibleChange = jest.fn();\n\n    mount(\n      {\n        render() {\n          return (\n            <Popconfirm\n              title={<span class=\"popconfirm-test\">Are you sure delete this task?</span>}\n              okText=\"Yes\"\n              cancelText=\"No\"\n              mouseEnterDelay={0}\n              mouseLeaveDelay={0}\n              onVisibleChange={onVisibleChange}\n            >\n              <span>Delete</span>\n            </Popconfirm>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    let triggerNode = null;\n    await asyncExpect(() => {\n      triggerNode = document.getElementsByTagName('span')[0];\n      triggerNode.dispatchEvent(new MouseEvent('click'));\n    });\n    await asyncExpect(() => {\n      expect(onVisibleChange).toHaveBeenLastCalledWith(true, undefined);\n      expect($$('.popconfirm-test').length).toBe(1);\n      triggerNode.dispatchEvent(new MouseEvent('click'));\n    }, 1000);\n    await asyncExpect(() => {\n      expect(onVisibleChange).toHaveBeenLastCalledWith(false, undefined);\n    });\n  });\n\n  it('should show overlay when trigger is clicked', async () => {\n    const popconfirm = mount(\n      {\n        render() {\n          return (\n            <Popconfirm ref=\"popconfirm\" title=\"code\">\n              <span>show me your code</span>\n            </Popconfirm>\n          );\n        },\n      },\n      { sync: false },\n    );\n\n    await asyncExpect(() => {\n      expect(popconfirm.vm.$refs.popconfirm.getPopupDomNode()).toBe(null);\n\n      popconfirm.find('span').trigger('click');\n    }, 1000);\n    await asyncExpect(() => {\n      const popup = popconfirm.vm.$refs.popconfirm.getPopupDomNode();\n      expect(popup).not.toBe(null);\n      expect(popup.innerHTML).toMatchSnapshot();\n    }, 1000);\n  });\n\n  it('should not open in disabled', async () => {\n    const popconfirm = mount(\n      {\n        render() {\n          return (\n            <Popconfirm ref=\"popconfirm\" title=\"code\" disabled={true}>\n              <span>click me</span>\n            </Popconfirm>\n          );\n        },\n      },\n      { sync: false },\n    );\n    popconfirm.find('span').trigger('click');\n    const popup = popconfirm.vm.$refs.popconfirm.getPopupDomNode();\n    expect(popup).toBeFalsy();\n  });\n});\n"
  },
  {
    "path": "components/popconfirm/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe basic example.\n\n</docs>\n\n<template>\n  <a-popconfirm\n    title=\"Are you sure delete this task?\"\n    ok-text=\"Yes\"\n    cancel-text=\"No\"\n    @confirm=\"confirm\"\n    @cancel=\"cancel\"\n  >\n    <a href=\"#\">Delete</a>\n  </a-popconfirm>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst confirm = (e: MouseEvent) => {\n  console.log(e);\n  message.success('Click on Yes');\n};\n\nconst cancel = (e: MouseEvent) => {\n  console.log(e);\n  message.error('Click on No');\n};\n</script>\n"
  },
  {
    "path": "components/popconfirm/demo/dynamic-trigger.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 条件触发\n  en-US: Conditional trigger\n---\n\n## zh-CN\n\n可以判断是否需要弹出。\n\n## en-US\n\nMake it pop up under some conditions.\n\n</docs>\n\n<template>\n  <div>\n    <a-popconfirm\n      title=\"Are you sure delete this task?\"\n      :open=\"visible\"\n      ok-text=\"Yes\"\n      cancel-text=\"No\"\n      @openChange=\"handleVisibleChange\"\n      @confirm=\"confirm\"\n      @cancel=\"cancel\"\n    >\n      <a href=\"#\">Delete a task</a>\n    </a-popconfirm>\n    <br />\n    <br />\n    Whether directly execute：\n    <a-checkbox v-model:checked=\"condition\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { message } from 'ant-design-vue';\nconst visible = ref<boolean>(false);\nconst condition = ref<boolean>(true);\n\nconst confirm = () => {\n  visible.value = false;\n  message.success('Next step.');\n};\n\nconst cancel = () => {\n  visible.value = false;\n  message.error('Click on cancel.');\n};\n\nconst handleVisibleChange = (bool: boolean) => {\n  if (!bool) {\n    visible.value = false;\n    return;\n  }\n  // Determining condition before show the popconfirm.\n  console.log(condition.value);\n  if (condition.value) {\n    confirm(); // next step\n  } else {\n    visible.value = true;\n  }\n};\n</script>\n"
  },
  {
    "path": "components/popconfirm/demo/icon.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 自定义 Icon 图标\n  en-US: Customize icon\n---\n\n## zh-CN\n\n使用 `icon` 自定义提示 `icon`。\n\n## en-US\n\nSet `icon` props to customize the icon.\n\n</docs>\n\n<template>\n  <a-popconfirm title=\"Are you sure？\">\n    <template #icon><question-circle-outlined style=\"color: red\" /></template>\n    <a href=\"#\">Delete</a>\n  </a-popconfirm>\n</template>\n<script lang=\"ts\" setup>\nimport { QuestionCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/popconfirm/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <local />\n    <icon />\n    <placement />\n    <dynamic-trigger />\n    <promiseVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Local from './local.vue';\nimport Icon from './icon.vue';\nimport Placement from './placement.vue';\nimport DynamicTrigger from './dynamic-trigger.vue';\nimport promiseVue from './promise.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    promiseVue,\n    Basic,\n    Local,\n    Icon,\n    Placement,\n    DynamicTrigger,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/popconfirm/demo/local.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 国际化\n  en-US: Locale text\n---\n\n## zh-CN\n\n使用 `okText` 和 `cancelText` 自定义按钮文字。\n\n## en-US\n\nSet `okText` and `cancelText` props to customize the button's labels.\n\n</docs>\n\n<template>\n  <a-popconfirm title=\"Are you sure？\" ok-text=\"Yes\" cancel-text=\"No\">\n    <a href=\"#\">Delete</a>\n  </a-popconfirm>\n</template>\n"
  },
  {
    "path": "components/popconfirm/demo/placement.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 位置\n  en-US: Placement\n---\n\n## zh-CN\n\n位置有十二个方向。如需箭头指向目标元素中心，可以设置 `arrowPointAtCenter`。\n\n## en-US\n\nThere are 12 `placement` options available. Use `arrowPointAtCenter` if you want arrow point at the center of target.\n\n</docs>\n\n<template>\n  <div id=\"components-a-popconfirm-demo-placement\">\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, whiteSpace: 'nowrap' }\">\n      <a-popconfirm placement=\"topLeft\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>TL</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"top\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>Top</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"topRight\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>TR</a-button>\n      </a-popconfirm>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, float: 'left' }\">\n      <a-popconfirm placement=\"leftTop\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>LT</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"left\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>Left</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"leftBottom\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>LB</a-button>\n      </a-popconfirm>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, marginLeft: `${buttonWidth * 4 + 24}px` }\">\n      <a-popconfirm placement=\"rightTop\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>RT</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"right\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>Right</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"rightBottom\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>RB</a-button>\n      </a-popconfirm>\n    </div>\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, clear: 'both', whiteSpace: 'nowrap' }\">\n      <a-popconfirm placement=\"bottomLeft\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>BL</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"bottom\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>Bottom</a-button>\n      </a-popconfirm>\n      <a-popconfirm placement=\"bottomRight\" ok-text=\"Yes\" cancel-text=\"No\" @confirm=\"confirm\">\n        <template #title>\n          <p>{{ text }}</p>\n          <p>{{ text }}</p>\n        </template>\n        <a-button>BR</a-button>\n      </a-popconfirm>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst buttonWidth = 70;\n\nconst text = 'Are you sure to delete this task?';\n\nconst confirm = () => {\n  message.info('Clicked on Yes.');\n};\n</script>\n<style scoped>\n:deep(#components-a-popconfirm-demo-placement) .ant-btn {\n  width: 70px;\n  text-align: center;\n  padding: 0;\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/popconfirm/demo/promise.vue",
    "content": "<docs>\n---\norder: 7\nversion: 3.0\ntitle:\n  zh-CN: 基于 Promise 的异步关闭 (3.0+)\n  en-US: Asynchronously close on Promise (3.0+)\n---\n\n## zh-CN\n\n点击确定后异步关闭 Popconfirm，例如提交表单。\n\n## en-US\n\nAsynchronously close a popconfirm when the OK button is pressed. For example, you can use this pattern when you submit a form.\n\n</docs>\n\n<template>\n  <a-popconfirm title=\"Title\" @confirm=\"confirm\" @cancel=\"cancel\">\n    <a-button type=\"primary\">Open Popconfirm with Promise</a-button>\n  </a-popconfirm>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nconst confirm = (e: MouseEvent) => {\n  console.log(e);\n  return new Promise(resolve => {\n    setTimeout(() => resolve(true), 3000);\n  });\n};\n\nconst cancel = (e: MouseEvent) => {\n  console.log(e);\n  message.error('Click on No');\n};\n</script>\n"
  },
  {
    "path": "components/popconfirm/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Popconfirm\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sAGpRoBtTXcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HrFtQ6jJJFQAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA simple and compact confirmation dialog of an action.\n\n## When To Use\n\nA simple and compact dialog used for asking for user confirmation.\n\nThe difference with the 'confirm' modal dialog is that it's more lightweight than the static popped full-screen confirm modal.\n\n## API\n\n| Param | Description | Type | Default value | Version |\n| --- | --- | --- | --- | --- |\n| cancelButton | custom render cancel button | slot | - | 3.0 |\n| cancelButtonProps | The cancel button props | [ButtonProps](/components/button/#api) | - |  |\n| cancelText | text of the Cancel button | string\\|slot | `Cancel` |  |\n| disabled | is show popconfirm when click its childrenNode | boolean | false |  |\n| icon | customize icon of confirmation | vNode\\|slot | &lt;Icon type=\"exclamation-circle\" /> |  |\n| okButton | custom render confirm button | slot | - | 3.0 |\n| okButtonProps | The ok button props | [ButtonProps](/components/button/#api) | - |  |\n| okText | text of the Confirm button | string\\|slot | `Confirm` |  |\n| okType | Button `type` of the Confirm button | string | `primary` |  |\n| showCancel | Show cancel button | boolean | true | 3.0 |\n| title | title of the confirmation box | string\\|slot | - |  |\n| description | The description of the confirmation box title | string\\|slot | - | 4.0 |\n| visible (v-model) | hide or show | boolean | - |  |\n\n### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- | --- |\n| cancel | callback of cancel | function(e) | - |  |\n| confirm | callback of confirmation | function(e) | - |  |\n| openChange | Callback executed when visibility of the tooltip card is changed | function(open) | - | 4.0 |\n\nConsult [Tooltip's documentation](/components/tooltip/#api) to find more APIs.\n\n## Note\n\nPlease ensure that the child node of `Popconfirm` accepts `mouseenter`, `mouseleave`, `focus`, `click` events.\n"
  },
  {
    "path": "components/popconfirm/index.tsx",
    "content": "import type { ExtractPropTypes, HTMLAttributes, PropType } from 'vue';\nimport { computed, ref, toRef, defineComponent } from 'vue';\nimport Popover from '../popover';\nimport abstractTooltipProps from '../tooltip/abstractTooltipProps';\nimport { initDefaultProps } from '../_util/props-util';\nimport type { ButtonProps, LegacyButtonType } from '../button/buttonTypes';\nimport { convertLegacyProps } from '../button/buttonTypes';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport Button from '../button';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\n\nimport defaultLocale from '../locale/en_US';\nimport { anyType, objectType, stringType, withInstall } from '../_util/type';\nimport type { CustomSlotsType } from '../_util/type';\n\nimport useMergedState from '../_util/hooks/useMergedState';\n\nimport KeyCode from '../_util/KeyCode';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\nimport { getTransitionName } from '../_util/transition';\nimport { cloneVNodes } from '../_util/vnode';\nimport omit from '../_util/omit';\nimport { tooltipDefaultProps } from '../tooltip/Tooltip';\nimport ActionButton from '../_util/ActionButton';\nimport usePopconfirmStyle from './style';\nimport warning from '../_util/warning';\n\nexport const popconfirmProps = () => ({\n  ...abstractTooltipProps(),\n  prefixCls: String,\n  content: anyType(),\n  title: anyType<string | number>(),\n  description: anyType<string | number>(),\n  okType: stringType<LegacyButtonType>('primary'),\n  disabled: { type: Boolean, default: false },\n  okText: anyType(),\n  cancelText: anyType(),\n  icon: anyType(),\n  okButtonProps: objectType<ButtonProps & HTMLAttributes>(),\n  cancelButtonProps: objectType<ButtonProps & HTMLAttributes>(),\n  showCancel: { type: Boolean, default: true },\n  onConfirm: Function as PropType<(e: MouseEvent) => void>,\n  onCancel: Function as PropType<(e: MouseEvent) => void>,\n});\n\nexport type PopconfirmProps = Partial<ExtractPropTypes<ReturnType<typeof popconfirmProps>>>;\n\nexport interface PopconfirmLocale {\n  okText: string;\n  cancelText: string;\n}\n\nconst Popconfirm = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'APopconfirm',\n  inheritAttrs: false,\n  props: initDefaultProps(popconfirmProps(), {\n    ...tooltipDefaultProps(),\n    trigger: 'click',\n    placement: 'top',\n    mouseEnterDelay: 0.1,\n    mouseLeaveDelay: 0.1,\n    arrowPointAtCenter: false,\n    autoAdjustOverflow: true,\n    okType: 'primary',\n    disabled: false,\n  }),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    content?: any;\n    description?: any;\n    okText?: any;\n    icon?: any;\n    cancel?: any;\n    cancelText?: any;\n    cancelButton?: any;\n    okButton?: any;\n    default?: any;\n  }>,\n  // emits: ['update:open', 'visibleChange'],\n  setup(props: PopconfirmProps, { slots, emit, expose, attrs }) {\n    const rootRef = ref();\n    warning(\n      props.visible === undefined,\n      'Popconfirm',\n      `\\`visible\\` will be removed in next major version, please use \\`open\\` instead.`,\n    );\n    expose({\n      getPopupDomNode: () => {\n        return rootRef.value?.getPopupDomNode?.();\n      },\n    });\n    const [open, setOpen] = useMergedState(false, {\n      value: toRef(props, 'open'),\n    });\n\n    const settingOpen = (value: boolean, e?: MouseEvent | KeyboardEvent) => {\n      if (props.open === undefined) {\n        setOpen(value);\n      }\n\n      emit('update:open', value);\n      emit('openChange', value, e);\n    };\n\n    const close = (e: MouseEvent) => {\n      settingOpen(false, e);\n    };\n\n    const onConfirm = (e: MouseEvent) => {\n      return props.onConfirm?.(e);\n    };\n\n    const onCancel = (e: MouseEvent) => {\n      settingOpen(false, e);\n      props.onCancel?.(e);\n    };\n\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === KeyCode.ESC && open) {\n        settingOpen(false, e);\n      }\n    };\n\n    const onOpenChange = (value: boolean) => {\n      const { disabled } = props;\n      if (disabled) {\n        return;\n      }\n      settingOpen(value);\n    };\n    const { prefixCls: prefixClsConfirm, getPrefixCls } = useConfigInject('popconfirm', props);\n    const rootPrefixCls = computed(() => getPrefixCls());\n    const btnPrefixCls = computed(() => getPrefixCls('btn'));\n    const [wrapSSR] = usePopconfirmStyle(prefixClsConfirm);\n    const [popconfirmLocale] = useLocaleReceiver('Popconfirm', defaultLocale.Popconfirm);\n    const renderOverlay = () => {\n      const {\n        okButtonProps,\n        cancelButtonProps,\n        title = slots.title?.(),\n        description = slots.description?.(),\n        cancelText = slots.cancel?.(),\n        okText = slots.okText?.(),\n        okType,\n        icon = slots.icon?.() || <ExclamationCircleFilled />,\n        showCancel = true,\n      } = props;\n      const { cancelButton, okButton } = slots;\n      const cancelProps: ButtonProps = {\n        onClick: onCancel,\n        size: 'small',\n        ...cancelButtonProps,\n      };\n      const okProps: ButtonProps = {\n        onClick: onConfirm,\n        ...convertLegacyProps(okType),\n        size: 'small',\n        ...okButtonProps,\n      };\n      return (\n        <div class={`${prefixClsConfirm.value}-inner-content`}>\n          <div class={`${prefixClsConfirm.value}-message`}>\n            {icon && <span class={`${prefixClsConfirm.value}-message-icon`}>{icon}</span>}\n            <div\n              class={[\n                `${prefixClsConfirm.value}-message-title`,\n                { [`${prefixClsConfirm.value}-message-title-only`]: !!description },\n              ]}\n            >\n              {title}\n            </div>\n          </div>\n          {description && <div class={`${prefixClsConfirm.value}-description`}>{description}</div>}\n          <div class={`${prefixClsConfirm.value}-buttons`}>\n            {showCancel ? (\n              cancelButton ? (\n                cancelButton(cancelProps)\n              ) : (\n                <Button {...cancelProps}>{cancelText || popconfirmLocale.value.cancelText}</Button>\n              )\n            ) : null}\n            {okButton ? (\n              okButton(okProps)\n            ) : (\n              <ActionButton\n                buttonProps={{ size: 'small', ...convertLegacyProps(okType), ...okButtonProps }}\n                actionFn={onConfirm}\n                close={close}\n                prefixCls={btnPrefixCls.value}\n                quitOnNullishReturnValue\n                emitEvent\n              >\n                {okText || popconfirmLocale.value.okText}\n              </ActionButton>\n            )}\n          </div>\n        </div>\n      );\n    };\n\n    return () => {\n      const { placement, overlayClassName, trigger = 'click', ...restProps } = props;\n      const otherProps = omit(restProps, [\n        'title',\n        'content',\n        'cancelText',\n        'okText',\n        'onUpdate:open',\n        'onConfirm',\n        'onCancel',\n        'prefixCls',\n      ]);\n      const overlayClassNames = classNames(prefixClsConfirm.value, overlayClassName);\n      return wrapSSR(\n        <Popover\n          {...otherProps}\n          {...attrs}\n          trigger={trigger}\n          placement={placement}\n          onOpenChange={onOpenChange}\n          open={open.value}\n          overlayClassName={overlayClassNames}\n          transitionName={getTransitionName(rootPrefixCls.value, 'zoom-big', props.transitionName)}\n          v-slots={{ content: renderOverlay }}\n          ref={rootRef}\n          data-popover-inject\n        >\n          {cloneVNodes(\n            slots.default?.() || [],\n            {\n              onKeydown: (e: KeyboardEvent) => {\n                onKeyDown(e);\n              },\n            },\n            false,\n          )}\n        </Popover>,\n      );\n    };\n  },\n});\nexport default withInstall(Popconfirm);\n"
  },
  {
    "path": "components/popconfirm/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Popconfirm\nsubtitle: 气泡确认框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sAGpRoBtTXcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HrFtQ6jJJFQAAAAAAAAAAAAADrJ8AQ/original\n---\n\n点击元素，弹出气泡式的确认框。\n\n## 何时使用\n\n目标元素的操作需要用户进一步的确认时，在目标元素附近弹出浮层提示，询问用户。和 'confirm' 弹出的全屏居中模态对话框相比，交互形式更轻量。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| cancelButton | 完全自定义取消按钮 | slot | - | 3.0 |\n| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button/#api) | - |  |\n| cancelText | 取消按钮文字 | string\\|slot | 取消 |  |\n| disabled | 点击 Popconfirm 子元素是否弹出气泡确认框 | boolean | false |  |\n| icon | 自定义弹出气泡 Icon 图标 | vNode | &lt;Icon type=\"exclamation-circle\" /> |  |\n| okButton | 完全自定义确认按钮 | slot | - | 3.0 |\n| okButtonProps | ok 按钮 props | [ButtonProps](/components/button/#api) | - |  |\n| okText | 确认按钮文字 | string\\|slot | 确定 |  |\n| okType | 确认按钮类型 | string | primary |  |\n| showCancel | 是否显示取消按钮 | boolean | true | 3.0 |\n| title | 确认框的描述 | string\\|slot | - |  |\n| description | 确认内容的详细描述 | string\\|slot | - | 4.0 |\n| open (v-model) | 是否显示 | boolean | - | 4.0 |\n\n### 事件\n\n| 事件名称   | 说明           | 回调参数       | 版本 |\n| ---------- | -------------- | -------------- | ---- |\n| cancel     | 点击取消的回调 | function(e)    |      |\n| confirm    | 点击确认的回调 | function(e)    |      |\n| openChange | 显示隐藏的回调 | function(open) | 4.0  |\n\n更多属性请参考 [Tooltip](/components/tooltip-cn/#api)。\n\n## 注意\n\n请确保 `Popconfirm` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。\n"
  },
  {
    "path": "components/popconfirm/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\nexport interface PopconfirmToken extends FullToken<'Popconfirm'> {}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<PopconfirmToken> = token => {\n  const {\n    componentCls,\n    iconCls,\n    zIndexPopup,\n    colorText,\n    colorWarning,\n    marginXS,\n    fontSize,\n    fontWeightStrong,\n    lineHeight,\n  } = token;\n\n  return {\n    [componentCls]: {\n      zIndex: zIndexPopup,\n\n      [`${componentCls}-inner-content`]: {\n        color: colorText,\n      },\n\n      [`${componentCls}-message`]: {\n        position: 'relative',\n        marginBottom: marginXS,\n        color: colorText,\n        fontSize,\n        display: 'flex',\n        flexWrap: 'nowrap',\n        alignItems: 'start',\n\n        [`> ${componentCls}-message-icon ${iconCls}`]: {\n          color: colorWarning,\n          fontSize,\n          flex: 'none',\n          lineHeight: 1,\n          paddingTop: (Math.round(fontSize * lineHeight) - fontSize) / 2,\n        },\n\n        '&-title': {\n          flex: 'auto',\n          marginInlineStart: marginXS,\n        },\n\n        '&-title-only': {\n          fontWeight: fontWeightStrong,\n        },\n      },\n\n      [`${componentCls}-description`]: {\n        position: 'relative',\n        marginInlineStart: fontSize + marginXS,\n        marginBottom: marginXS,\n        color: colorText,\n        fontSize,\n      },\n\n      [`${componentCls}-buttons`]: {\n        textAlign: 'end',\n\n        button: {\n          marginInlineStart: marginXS,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Popconfirm',\n  token => genBaseStyle(token),\n  token => {\n    const { zIndexPopupBase } = token;\n\n    return {\n      zIndexPopup: zIndexPopupBase + 60,\n    };\n  },\n);\n"
  },
  {
    "path": "components/popover/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/popover/demo/arrow-point-at-center.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Align edge / 边缘对齐</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Arrow points to center / 箭头指向中心</span>\n    </button>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/popover/demo/basic.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Hover me</span>\n</button>\n`;\n\nexports[`renders ./components/popover/demo/control.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Click me</span>\n</button>\n`;\n\nexports[`renders ./components/popover/demo/hover-with-click.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default\" type=\"button\">\n  <!----><span>Hover and click / 悬停并单击</span>\n</button>\n`;\n\nexports[`renders ./components/popover/demo/placement.vue correctly 1`] = `\n<div id=\"components-popover-demo-placement\">\n  <div style=\"margin-left: 70px; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Top</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TR</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; float: left;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Left</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LB</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; margin-left: 304px;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Right</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RB</span>\n    </button>\n  </div>\n  <div style=\"margin-left: 70px; clear: both; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Bottom</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BR</span>\n    </button>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/popover/demo/triggerType.vue correctly 1`] = `\n<div>\n  <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Hover me</span>\n  </button>\n  <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Focus me</span>\n  </button>\n  <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Click me</span>\n  </button>\n</div>\n`;\n"
  },
  {
    "path": "components/popover/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Popover should show overlay when trigger is clicked 1`] = `\n<div class=\"ant-popover-content\">\n  <div class=\"ant-popover-arrow\"><span class=\"ant-popover-arrow-content\"></span></div>\n  <div class=\"ant-popover-inner\" role=\"tooltip\">\n    <div class=\"ant-popover-title\">code</div>\n    <div class=\"ant-popover-inner-content\">console.log('hello world')</div>\n  </div>\n</div>\n`;\n\nexports[`Popover should show overlay when trigger is clicked 2`] = `\n<div class=\"ant-popover-content\">\n  <div class=\"ant-popover-arrow\"><span class=\"ant-popover-arrow-content\"></span></div>\n  <div class=\"ant-popover-inner\" role=\"tooltip\">\n    <div class=\"ant-popover-title\">code</div>\n    <div class=\"ant-popover-inner-content\">console.log('hello world')</div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/popover/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('popover');\n"
  },
  {
    "path": "components/popover/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Popover from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Popover', () => {\n  mountTest({\n    render() {\n      return (\n        <div>\n          <Popover />\n        </div>\n      );\n    },\n  });\n  it('should show overlay when trigger is clicked', async () => {\n    const popover = mount(\n      {\n        render() {\n          return (\n            <Popover\n              ref=\"popover\"\n              content=\"console.log('hello world')\"\n              title=\"code\"\n              trigger=\"click\"\n            >\n              <span>show me your code</span>\n            </Popover>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(popover.vm.$refs.popover.getPopupDomNode()).toBe(null);\n\n      popover.find('span').trigger('click');\n    }, 0);\n    let popup = null;\n    await asyncExpect(() => {\n      popup = popover.vm.$refs.popover.getPopupDomNode();\n      expect(popup).not.toBe(null);\n    }, 1000);\n    await asyncExpect(() => {\n      expect(popup.innerHTML).toMatchSnapshot();\n      expect(popup.innerHTML).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/popover/demo/arrow-point-at-center.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 箭头指向\n  en-US: Arrow pointing\n---\n\n## zh-CN\n\n设置了 `arrowPointAtCenter` 后，箭头将指向目标元素的中心。\n\n## en-US\n\nThe arrow points to the center of the target element, which set `arrowPointAtCenter`.\n\n</docs>\n<template>\n  <a-space>\n    <a-popover placement=\"topLeft\">\n      <template #content>\n        <p>Content</p>\n        <p>Content</p>\n      </template>\n      <template #title>\n        <span>Title</span>\n      </template>\n      <a-button>Align edge / 边缘对齐</a-button>\n    </a-popover>\n    <a-popover placement=\"topLeft\" arrow-point-at-center>\n      <template #content>\n        <p>Content</p>\n        <p>Content</p>\n      </template>\n      <template #title>\n        <span>Title</span>\n      </template>\n      <a-button>Arrow points to center / 箭头指向中心</a-button>\n    </a-popover>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/popover/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法，浮层的大小由内容区域决定。\n\n## en-US\n\nThe most basic example. The size of the floating layer depends on the contents region.\n\n</docs>\n<template>\n  <a-popover title=\"Title\">\n    <template #content>\n      <p>Content</p>\n      <p>Content</p>\n    </template>\n    <a-button type=\"primary\">Hover me</a-button>\n  </a-popover>\n</template>\n"
  },
  {
    "path": "components/popover/demo/control.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 从浮层内关闭\n  en-US: Controlling the close of the dialog\n---\n\n## zh-CN\n\n使用 `visible` 属性控制浮层显示。\n\n## en-US\n\nUse `visible` prop to control the display of the card.\n\n</docs>\n<template>\n  <a-popover v-model:open=\"visible\" title=\"Title\" trigger=\"click\">\n    <template #content>\n      <a @click=\"hide\">Close</a>\n    </template>\n    <a-button type=\"primary\">Click me</a-button>\n  </a-popover>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst visible = ref<boolean>(false);\n\nconst hide = () => {\n  visible.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/popover/demo/hover-with-click.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 悬停点击弹出窗口\n  en-US: Hover with click popover\n---\n\n## zh-CN\n\n以下示例显示如何创建可悬停和单击的弹出窗口。\n\n## en-US\n\nThe following example shows how to create a popover which can be hovered and clicked.\n\n</docs>\n<template>\n  <a-popover\n    style=\"width: 500px\"\n    title=\"Hover title\"\n    trigger=\"hover\"\n    :open=\"hovered\"\n    @openChange=\"handleHoverChange\"\n  >\n    <template #content>\n      <div>This is hover content.</div>\n    </template>\n    <a-popover title=\"Click title\" trigger=\"click\" :open=\"clicked\" @openChange=\"handleClickChange\">\n      <template #content>\n        <div>\n          <div>This is click content.</div>\n          <a @click=\"hide\">Close</a>\n        </div>\n      </template>\n      <a-button>Hover and click / 悬停并单击</a-button>\n    </a-popover>\n  </a-popover>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst clicked = ref<boolean>(false);\nconst hovered = ref<boolean>(false);\n\nconst hide = () => {\n  clicked.value = false;\n  hovered.value = false;\n};\n\nconst handleHoverChange = (visible: boolean) => {\n  clicked.value = false;\n  hovered.value = visible;\n};\n\nconst handleClickChange = (visible: boolean) => {\n  clicked.value = visible;\n  hovered.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/popover/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <trigger-type />\n    <placement />\n    <control />\n    <arrow-center />\n    <hover-with-click />\n  </demo-sort>\n</template>\n<script>\nimport Basic from './basic.vue';\nimport ArrowCenter from './arrow-point-at-center.vue';\nimport Control from './control.vue';\nimport Placement from './placement.vue';\nimport TriggerType from './triggerType.vue';\nimport HoverWithClick from './hover-with-click.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    TriggerType,\n    Placement,\n    Control,\n    ArrowCenter,\n    HoverWithClick,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/popover/demo/placement.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 位置\n  en-US: Placement\n---\n\n## zh-CN\n\n位置有十二个方向。\n\n## en-US\n\nThere are 12 `placement` options available.\n\n</docs>\n<template>\n  <div id=\"components-popover-demo-placement\">\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, whiteSpace: 'nowrap' }\">\n      <a-popover placement=\"topLeft\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>TL</a-button>\n      </a-popover>\n      <a-popover placement=\"top\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>Top</a-button>\n      </a-popover>\n      <a-popover placement=\"topRight\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>TR</a-button>\n      </a-popover>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, float: 'left' }\">\n      <a-popover placement=\"leftTop\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>LT</a-button>\n      </a-popover>\n      <a-popover placement=\"left\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>Left</a-button>\n      </a-popover>\n      <a-popover placement=\"leftBottom\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>LB</a-button>\n      </a-popover>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, marginLeft: `${buttonWidth * 4 + 24}px` }\">\n      <a-popover placement=\"rightTop\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>RT</a-button>\n      </a-popover>\n      <a-popover placement=\"right\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>Right</a-button>\n      </a-popover>\n      <a-popover placement=\"rightBottom\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>RB</a-button>\n      </a-popover>\n    </div>\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, clear: 'both', whiteSpace: 'nowrap' }\">\n      <a-popover placement=\"bottomLeft\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>BL</a-button>\n      </a-popover>\n      <a-popover placement=\"bottom\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>Bottom</a-button>\n      </a-popover>\n      <a-popover placement=\"bottomRight\">\n        <template #content>\n          <p>Content</p>\n          <p>Content</p>\n        </template>\n        <template #title>\n          <span>Title</span>\n        </template>\n        <a-button>BR</a-button>\n      </a-popover>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst buttonWidth = ref<number>(70);\n</script>\n<style scoped>\n#components-popover-demo-placement .ant-btn {\n  width: 70px;\n  text-align: center;\n  padding: 0;\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/popover/demo/triggerType.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 三种触发方式\n  en-US: Three ways to trigger\n---\n\n## zh-CN\n\n鼠标移入、聚集、点击。\n\n## en-US\n\nMouse to click, focus and move in.\n\n</docs>\n<template>\n  <div>\n    <a-popover title=\"Title\" trigger=\"hover\">\n      <template #content>\n        <p>Content</p>\n        <p>Content</p>\n      </template>\n      <a-button>Hover me</a-button>\n    </a-popover>\n    <a-popover title=\"Title\" trigger=\"focus\">\n      <template #content>\n        <p>Content</p>\n        <p>Content</p>\n      </template>\n      <a-button>Focus me</a-button>\n    </a-popover>\n    <a-popover title=\"Title\" trigger=\"click\">\n      <template #content>\n        <p>Content</p>\n        <p>Content</p>\n      </template>\n      <a-button>Click me</a-button>\n    </a-popover>\n  </div>\n</template>\n<style scoped>\n#components-popover-demo-triggerType .ant-btn {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/popover/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Popover\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*XhL3QpRw92kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*RMP_TrdZ3nsAAAAAAAAAAAAADrJ8AQ/original\n---\n\nThe floating card popped by clicking or hovering.\n\n## When To Use\n\nA simple popup menu to provide extra information or operations.\n\nComparing with `Tooltip`, besides information `Popover` card can also provide action elements like links and buttons.\n\n## API\n\n| Param   | Description         | Type                | Default value | Version |\n| ------- | ------------------- | ------------------- | ------------- | ------- |\n| content | Content of the card | string\\|slot\\|vNode | -             |         |\n| title   | Title of the card   | string\\|slot\\|VNode | -             |         |\n\nConsult [Tooltip's documentation](/components/tooltip/#api) to find more APIs.\n\n## Note\n\nPlease ensure that the child node of `Popover` accepts `onMouseenter`, `onMouseleave`, `onFocus`, `onClick` events.\n"
  },
  {
    "path": "components/popover/index.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent, ref } from 'vue';\nimport Tooltip from '../tooltip';\nimport abstractTooltipProps from '../tooltip/abstractTooltipProps';\nimport { filterEmpty, initDefaultProps } from '../_util/props-util';\nimport { anyType, withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport { getTransitionName } from '../_util/transition';\nimport { tooltipDefaultProps } from '../tooltip/Tooltip';\nimport useStyle from './style';\nimport classNames from '../_util/classNames';\nimport warning from '../_util/warning';\n\nexport const popoverProps = () => ({\n  ...abstractTooltipProps(),\n  content: anyType(),\n  title: anyType(),\n});\n\nexport type PopoverProps = Partial<ExtractPropTypes<ReturnType<typeof popoverProps>>>;\n\nconst Popover = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'APopover',\n  inheritAttrs: false,\n  props: initDefaultProps(popoverProps(), {\n    ...tooltipDefaultProps(),\n    trigger: 'hover',\n    placement: 'top',\n    mouseEnterDelay: 0.1,\n    mouseLeaveDelay: 0.1,\n  }),\n  setup(props, { expose, slots, attrs }) {\n    const tooltipRef = ref();\n    warning(\n      props.visible === undefined,\n      'popover',\n      `\\`visible\\` will be removed in next major version, please use \\`open\\` instead.`,\n    );\n    expose({\n      getPopupDomNode: () => {\n        return tooltipRef.value?.getPopupDomNode?.();\n      },\n    });\n    const { prefixCls, configProvider } = useConfigInject('popover', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const rootPrefixCls = computed(() => configProvider.getPrefixCls());\n    const getOverlay = () => {\n      const { title = filterEmpty(slots.title?.()), content = filterEmpty(slots.content?.()) } =\n        props;\n      const hasTitle = !!(Array.isArray(title) ? title.length : title);\n      const hasContent = !!(Array.isArray(content) ? content.length : title);\n      if (!hasTitle && !hasContent) return null;\n      return (\n        <>\n          {hasTitle && <div class={`${prefixCls.value}-title`}>{title}</div>}\n          <div class={`${prefixCls.value}-inner-content`}>{content}</div>\n        </>\n      );\n    };\n    return () => {\n      const overlayCls = classNames(props.overlayClassName, hashId.value);\n      return wrapSSR(\n        <Tooltip\n          {...omit(props, ['title', 'content'])}\n          {...attrs}\n          prefixCls={prefixCls.value}\n          ref={tooltipRef}\n          overlayClassName={overlayCls}\n          v-slots={{ title: getOverlay, default: slots.default }}\n          transitionName={getTransitionName(rootPrefixCls.value, 'zoom-big', props.transitionName)}\n          data-popover-inject\n        />,\n      );\n    };\n  },\n});\n\nexport default withInstall(Popover);\n"
  },
  {
    "path": "components/popover/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Popover\nsubtitle: 气泡卡片\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*XhL3QpRw92kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*RMP_TrdZ3nsAAAAAAAAAAAAADrJ8AQ/original\n---\n\n点击/鼠标移入元素，弹出气泡式的卡片浮层。\n\n## 何时使用\n\n当目标元素有进一步的描述和相关操作时，可以收纳到卡片中，根据用户的操作行为进行展现。\n\n和 `Tooltip` 的区别是，用户可以对浮层上的元素进行操作，因此它可以承载更复杂的内容，比如链接或按钮等。\n\n## API\n\n| 参数    | 说明     | 类型                | 默认值 | 版本 |\n| ------- | -------- | ------------------- | ------ | ---- |\n| content | 卡片内容 | string\\|slot\\|VNode | -      |      |\n| title   | 卡片标题 | string\\|slot\\|VNode | -      |      |\n\n更多属性请参考 [Tooltip](/components/tooltip-cn/#api)。\n\n## 注意\n\n请确保 `Popover` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。\n"
  },
  {
    "path": "components/popover/style/index.ts",
    "content": "import { initZoomMotion } from '../../style/motion';\nimport type { FullToken, GenerateStyle, PresetColorType } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken, PresetColors } from '../../theme/internal';\nimport { resetComponent } from '../../style';\nimport getArrowStyle from '../../style/placementArrow';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n  width: number;\n}\n\nexport type PopoverToken = FullToken<'Popover'> & {\n  popoverBg: string;\n  popoverColor: string;\n  popoverPadding: number | string;\n};\n\nconst genBaseStyle: GenerateStyle<PopoverToken> = token => {\n  const {\n    componentCls,\n    popoverBg,\n    popoverColor,\n    width,\n    fontWeightStrong,\n    popoverPadding,\n    boxShadowSecondary,\n    colorTextHeading,\n    borderRadiusLG: borderRadius,\n    zIndexPopup,\n    marginXS,\n    colorBgElevated,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        position: 'absolute',\n        top: 0,\n        // use `left` to fix https://github.com/ant-design/ant-design/issues/39195\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        zIndex: zIndexPopup,\n        fontWeight: 'normal',\n        whiteSpace: 'normal',\n        textAlign: 'start',\n        cursor: 'auto',\n        userSelect: 'text',\n        '--antd-arrow-background-color': colorBgElevated,\n\n        '&-rtl': {\n          direction: 'rtl',\n        },\n\n        '&-hidden': {\n          display: 'none',\n        },\n\n        [`${componentCls}-content`]: {\n          position: 'relative',\n        },\n\n        [`${componentCls}-inner`]: {\n          backgroundColor: popoverBg,\n          backgroundClip: 'padding-box',\n          borderRadius,\n          boxShadow: boxShadowSecondary,\n          padding: popoverPadding,\n        },\n\n        [`${componentCls}-title`]: {\n          minWidth: width,\n          marginBottom: marginXS,\n          color: colorTextHeading,\n          fontWeight: fontWeightStrong,\n        },\n\n        [`${componentCls}-inner-content`]: {\n          color: popoverColor,\n        },\n      },\n    },\n\n    // Arrow Style\n    getArrowStyle(token, { colorBg: 'var(--antd-arrow-background-color)' }),\n\n    // Pure Render\n    {\n      [`${componentCls}-pure`]: {\n        position: 'relative',\n        maxWidth: 'none',\n\n        [`${componentCls}-content`]: {\n          display: 'inline-block',\n        },\n      },\n    },\n  ];\n};\n\nconst genColorStyle: GenerateStyle<PopoverToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: PresetColors.map((colorKey: keyof PresetColorType) => {\n      const lightColor = token[`${colorKey}-6`];\n      return {\n        [`&${componentCls}-${colorKey}`]: {\n          '--antd-arrow-background-color': lightColor,\n          [`${componentCls}-inner`]: {\n            backgroundColor: lightColor,\n          },\n          [`${componentCls}-arrow`]: {\n            background: 'transparent',\n          },\n        },\n      };\n    }),\n  };\n};\n\nconst genWireframeStyle: GenerateStyle<PopoverToken> = token => {\n  const {\n    componentCls,\n    lineWidth,\n    lineType,\n    colorSplit,\n    paddingSM,\n    controlHeight,\n    fontSize,\n    lineHeight,\n    padding,\n  } = token;\n\n  const titlePaddingBlockDist = controlHeight - Math.round(fontSize * lineHeight);\n  const popoverTitlePaddingBlockTop = titlePaddingBlockDist / 2;\n  const popoverTitlePaddingBlockBottom = titlePaddingBlockDist / 2 - lineWidth;\n  const popoverPaddingHorizontal = padding;\n\n  return {\n    [componentCls]: {\n      [`${componentCls}-inner`]: {\n        padding: 0,\n      },\n\n      [`${componentCls}-title`]: {\n        margin: 0,\n        padding: `${popoverTitlePaddingBlockTop}px ${popoverPaddingHorizontal}px ${popoverTitlePaddingBlockBottom}px`,\n        borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n      },\n\n      [`${componentCls}-inner-content`]: {\n        padding: `${paddingSM}px ${popoverPaddingHorizontal}px`,\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook(\n  'Popover',\n  token => {\n    const { colorBgElevated, colorText, wireframe } = token;\n\n    const popoverToken = mergeToken<PopoverToken>(token, {\n      popoverBg: colorBgElevated,\n      popoverColor: colorText,\n      popoverPadding: 12, // Fixed Value\n    });\n\n    return [\n      genBaseStyle(popoverToken),\n      genColorStyle(popoverToken),\n      wireframe && genWireframeStyle(popoverToken),\n      initZoomMotion(popoverToken, 'zoom-big'),\n    ];\n  },\n  ({ zIndexPopupBase }) => ({\n    zIndexPopup: zIndexPopupBase + 30,\n    width: 177,\n  }),\n);\n"
  },
  {
    "path": "components/progress/Circle.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport { Circle as VCCircle } from '../vc-progress';\nimport { getPercentage, getSize, getStrokeColor } from './utils';\nimport type { ProgressProps, ProgressGradient } from './props';\nimport { progressProps } from './props';\nimport { initDefaultProps } from '../_util/props-util';\nimport Tooltip from '../tooltip';\nimport { anyType } from '../_util/type';\n\nexport interface CircleProps extends ProgressProps {\n  strokeColor?: string | ProgressGradient;\n}\n\nexport const circleProps = () => ({\n  ...progressProps(),\n  strokeColor: anyType<string | ProgressGradient>(),\n});\n\nconst CIRCLE_MIN_STROKE_WIDTH = 3;\n\nconst getMinPercent = (width: number): number => (CIRCLE_MIN_STROKE_WIDTH / width) * 100;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ProgressCircle',\n  inheritAttrs: false,\n  props: initDefaultProps(circleProps(), {\n    trailColor: null as unknown as string,\n  }),\n  setup(props, { slots, attrs }) {\n    const originWidth = computed(() => props.width ?? 120);\n    const mergedSize = computed(() => props.size ?? [originWidth.value, originWidth.value]);\n\n    const sizeRef = computed(() => getSize(mergedSize.value as ProgressProps['size'], 'circle'));\n    const gapDeg = computed(() => {\n      // Support gapDeg = 0 when type = 'dashboard'\n      if (props.gapDegree || props.gapDegree === 0) {\n        return props.gapDegree;\n      }\n      if (props.type === 'dashboard') {\n        return 75;\n      }\n      return undefined;\n    });\n\n    const circleStyle = computed<CSSProperties>(() => {\n      return {\n        width: `${sizeRef.value.width}px`,\n        height: `${sizeRef.value.height}px`,\n        fontSize: `${sizeRef.value.width * 0.15 + 6}px`,\n      };\n    });\n\n    const circleWidth = computed(\n      () => props.strokeWidth ?? Math.max(getMinPercent(sizeRef.value.width), 6),\n    );\n    const gapPos = computed(\n      () => props.gapPosition || (props.type === 'dashboard' && 'bottom') || undefined,\n    );\n\n    // using className to style stroke color\n    const percent = computed(() => getPercentage(props));\n    const isGradient = computed(\n      () => Object.prototype.toString.call(props.strokeColor) === '[object Object]',\n    );\n    const strokeColor = computed(() =>\n      getStrokeColor({ success: props.success, strokeColor: props.strokeColor }),\n    );\n    const wrapperClassName = computed(() => ({\n      [`${props.prefixCls}-inner`]: true,\n      [`${props.prefixCls}-circle-gradient`]: isGradient.value,\n    }));\n\n    return () => {\n      const circleContent = (\n        <VCCircle\n          percent={percent.value}\n          strokeWidth={circleWidth.value}\n          trailWidth={circleWidth.value}\n          strokeColor={strokeColor.value}\n          strokeLinecap={props.strokeLinecap}\n          trailColor={props.trailColor}\n          prefixCls={props.prefixCls}\n          gapDegree={gapDeg.value}\n          gapPosition={gapPos.value}\n        />\n      );\n      return (\n        <div\n          {...attrs}\n          class={[wrapperClassName.value, attrs.class]}\n          style={[attrs.style as CSSProperties, circleStyle.value]}\n        >\n          {sizeRef.value.width <= 20 ? (\n            <Tooltip v-slots={{ title: slots.default }}>\n              <span>{circleContent}</span>\n            </Tooltip>\n          ) : (\n            <>\n              {circleContent}\n              {slots.default?.()}\n            </>\n          )}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/progress/Line.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport { computed, defineComponent } from 'vue';\nimport type { Direction } from '../config-provider';\nimport type { StringGradients, ProgressGradient, ProgressSize } from './props';\nimport { progressProps } from './props';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\nimport devWarning from '../vc-util/devWarning';\nimport { anyType, stringType } from '../_util/type';\n\nexport const lineProps = () => ({\n  ...progressProps(),\n  strokeColor: anyType<string | ProgressGradient>(),\n  direction: stringType<Direction>(),\n});\n\nexport type LineProps = Partial<ExtractPropTypes<ReturnType<typeof lineProps>>>;\n\n/**\n * {\n *   '0%': '#afc163',\n *   '75%': '#009900',\n *   '50%': 'green',     ====>     '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n *   '25%': '#66FF00',\n *   '100%': '#ffffff'\n * }\n */\nexport const sortGradient = (gradients: StringGradients) => {\n  let tempArr = [];\n  Object.keys(gradients).forEach(key => {\n    const formattedKey = parseFloat(key.replace(/%/g, ''));\n    if (!isNaN(formattedKey)) {\n      tempArr.push({\n        key: formattedKey,\n        value: gradients[key],\n      });\n    }\n  });\n  tempArr = tempArr.sort((a, b) => a.key - b.key);\n  return tempArr.map(({ key, value }) => `${value} ${key}%`).join(', ');\n};\n\n/**\n * Then this man came to realize the truth: Besides six pence, there is the moon. Besides bread and\n * butter, there is the bug. And... Besides women, there is the code.\n *\n * @example\n *   {\n *     \"0%\": \"#afc163\",\n *     \"25%\": \"#66FF00\",\n *     \"50%\": \"#00CC00\", // ====>  linear-gradient(to right, #afc163 0%, #66FF00 25%,\n *     \"75%\": \"#009900\", //        #00CC00 50%, #009900 75%, #ffffff 100%)\n *     \"100%\": \"#ffffff\"\n *   }\n */\nexport const handleGradient = (\n  strokeColor: ProgressGradient,\n  directionConfig?: Direction,\n): CSSProperties => {\n  const {\n    from = presetPrimaryColors.blue,\n    to = presetPrimaryColors.blue,\n    direction = directionConfig === 'rtl' ? 'to left' : 'to right',\n    ...rest\n  } = strokeColor;\n  if (Object.keys(rest).length !== 0) {\n    const sortedGradients = sortGradient(rest as StringGradients);\n    return { backgroundImage: `linear-gradient(${direction}, ${sortedGradients})` };\n  }\n  return { backgroundImage: `linear-gradient(${direction}, ${from}, ${to})` };\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ProgressLine',\n  inheritAttrs: false,\n  props: lineProps(),\n  setup(props, { slots, attrs }) {\n    const backgroundProps = computed<CSSProperties>(() => {\n      const { strokeColor, direction } = props;\n      return strokeColor && typeof strokeColor !== 'string'\n        ? handleGradient(strokeColor, direction)\n        : {\n            backgroundColor: strokeColor as string,\n          };\n    });\n    const borderRadius = computed(() =>\n      props.strokeLinecap === 'square' || props.strokeLinecap === 'butt' ? 0 : undefined,\n    );\n\n    const trailStyle = computed<CSSProperties>(() =>\n      props.trailColor\n        ? {\n            backgroundColor: props.trailColor,\n          }\n        : undefined,\n    );\n\n    const mergedSize = computed(\n      () => props.size ?? [-1, props.strokeWidth || (props.size === 'small' ? 6 : 8)],\n    );\n\n    const sizeRef = computed(() =>\n      getSize(mergedSize.value as ProgressSize, 'line', { strokeWidth: props.strokeWidth }),\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        'strokeWidth' in props,\n        'Progress',\n        '`strokeWidth` is deprecated. Please use `size` instead.',\n      );\n    }\n\n    const percentStyle = computed<CSSProperties>(() => {\n      const { percent } = props;\n      return {\n        width: `${validProgress(percent)}%`,\n        height: `${sizeRef.value.height}px`,\n        borderRadius: borderRadius.value,\n        ...backgroundProps.value,\n      };\n    });\n\n    const successPercent = computed(() => {\n      return getSuccessPercent(props);\n    });\n    const successPercentStyle = computed<CSSProperties>(() => {\n      const { success } = props;\n      return {\n        width: `${validProgress(successPercent.value)}%`,\n        height: `${sizeRef.value.height}px`,\n        borderRadius: borderRadius.value,\n        backgroundColor: success?.strokeColor,\n      };\n    });\n\n    const outerStyle: CSSProperties = {\n      width: sizeRef.value.width < 0 ? '100%' : sizeRef.value.width,\n      height: `${sizeRef.value.height}px`,\n    };\n\n    return () => (\n      <>\n        <div\n          {...attrs}\n          class={[`${props.prefixCls}-outer`, attrs.class]}\n          style={[attrs.style as CSSProperties, outerStyle]}\n        >\n          <div class={`${props.prefixCls}-inner`} style={trailStyle.value}>\n            <div class={`${props.prefixCls}-bg`} style={percentStyle.value} />\n            {successPercent.value !== undefined ? (\n              <div class={`${props.prefixCls}-success-bg`} style={successPercentStyle.value} />\n            ) : null}\n          </div>\n        </div>\n        {slots.default?.()}\n      </>\n    );\n  },\n});\n"
  },
  {
    "path": "components/progress/Steps.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport { someType } from '../_util/type';\nimport type { ProgressSize } from './props';\nimport { progressProps } from './props';\nimport { getSize } from './utils';\n\nexport const stepsProps = () => ({\n  ...progressProps(),\n  steps: Number,\n  strokeColor: someType<string | string[]>(),\n  trailColor: String,\n});\n\nexport type StepsProps = Partial<ExtractPropTypes<ReturnType<typeof stepsProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Steps',\n  props: stepsProps(),\n  setup(props, { slots }) {\n    const current = computed(() => Math.round(props.steps * ((props.percent || 0) / 100)));\n    const mergedSize = computed(\n      () => props.size ?? [props.size === 'small' ? 2 : 14, props.strokeWidth || 8],\n    );\n    const sizeRef = computed(() =>\n      getSize(mergedSize.value as ProgressSize, 'step', {\n        steps: props.steps,\n        strokeWidth: props.strokeWidth || 8,\n      }),\n    );\n\n    const styledSteps = computed(() => {\n      const { steps, strokeColor, trailColor, prefixCls } = props;\n\n      const temp: VueNode[] = [];\n      for (let i = 0; i < steps; i += 1) {\n        const color = Array.isArray(strokeColor) ? strokeColor[i] : strokeColor;\n        const cls = {\n          [`${prefixCls}-steps-item`]: true,\n          [`${prefixCls}-steps-item-active`]: i <= current.value - 1,\n        };\n        temp.push(\n          <div\n            key={i}\n            class={cls}\n            style={{\n              backgroundColor: i <= current.value - 1 ? color : trailColor,\n              width: `${sizeRef.value.width / steps}px`,\n              height: `${sizeRef.value.height}px`,\n            }}\n          />,\n        );\n      }\n      return temp;\n    });\n\n    return () => (\n      <div class={`${props.prefixCls}-steps-outer`}>\n        {styledSteps.value}\n        {slots.default?.()}\n      </div>\n    );\n  },\n});\n"
  },
  {
    "path": "components/progress/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/progress/demo/circle.vue correctly 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 221.48228207808043px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"75%\">75%</span></div>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-exception ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 206.7167966062084px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></div>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-success ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/circle-dynamic.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"0%\">0%</span></div>\n  </div>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"minus\" class=\"anticon anticon-minus\"><svg focusable=\"false\" class=\"\" data-icon=\"minus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"></path></svg></span></button><button class=\"ant-btn ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span></button></div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/circle-micro.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-inline-circle ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-12\">\n    <div class=\"ant-progress-inner\" style=\"width: 12px; height: 12px; font-size: 7.8px;\">\n      <!----><span><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\"><!----><path d=\"M 50,50 m 0,-40\n   a 40,40 0 1 1 0,80\n   a 40,40 0 1 1 0,-80\" stroke=\"#e6f4ff\" stroke-linecap=\"round\" stroke-width=\"20\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke: #e6f4ff; stroke-dasharray: 251.32741228718345px 251.32741228718345px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,-40\n   a 40,40 0 1 1 0,80\n   a 40,40 0 1 1 0,-80\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"20\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 150.79644737231007px 251.32741228718345px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,-40\n   a 40,40 0 1 1 0,80\n   a 40,40 0 1 1 0,-80\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"20\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 251.32741228718345px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path></svg></span>\n    </div>\n  </div><span>代码发布</span>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/circle-mini.vue correctly 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-80\">\n  <div class=\"ant-progress-inner\" style=\"width: 80px; height: 80px; font-size: 18px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 88.59291283123217px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"30%\">30%</span></div>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-exception ant-progress-show-info ant-progress-80\">\n  <div class=\"ant-progress-inner\" style=\"width: 80px; height: 80px; font-size: 18px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 206.7167966062084px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></div>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-success ant-progress-show-info ant-progress-80\">\n  <div class=\"ant-progress-inner\" style=\"width: 80px; height: 80px; font-size: 18px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/dashboard.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 220.30970943744057px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 165.23228207808043px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"75%\">75%</span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/dynamic.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 0%; height: 8px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"0%\">0%</span>\n  </div>\n  <div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"minus\" class=\"anticon anticon-minus\"><svg focusable=\"false\" class=\"\" data-icon=\"minus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"></path></svg></span></button><button class=\"ant-btn ant-btn-default ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span></button></div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/format.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 221.48228207808043px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"75 Days\">75 Days</span></div>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-success ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"Done\">Done</span></div>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 221.48228207808043px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\"><span style=\"color: red;\">75</span></span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/gradient-line.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 99.9%; height: 8px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"99.9%\">99.9%</span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-active ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 99.9%; height: 8px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"99.9%\">99.9%</span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner ant-progress-circle-gradient\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <defs>\n          <linearGradient id=\"ant-progress-gradient-13\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"0%\">\n            <stop offset=\"0%\" stop-color=\"#108ee9\"></stop>\n            <stop offset=\"100%\" stop-color=\"#87d068\"></stop>\n          </linearGradient>\n        </defs>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"url(#ant-progress-gradient-13)\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: [object Object]; stroke-dasharray: 265.77873849369655px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"90%\">90%</span></div>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-success ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner ant-progress-circle-gradient\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <defs>\n          <linearGradient id=\"ant-progress-gradient-14\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"0%\">\n            <stop offset=\"0%\" stop-color=\"#108ee9\"></stop>\n            <stop offset=\"100%\" stop-color=\"#87d068\"></stop>\n          </linearGradient>\n        </defs>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"url(#ant-progress-gradient-14)\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: [object Object]; stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/line.vue correctly 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 30%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"30%\">30%</span>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-active ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-exception ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 70%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-success ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 100%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></span>\n</div>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/progress/demo/line-mini.vue correctly 1`] = `\n<div style=\"width: 170px;\">\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-small\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 6px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 30%; height: 6px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"30%\">30%</span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-active ant-progress-show-info ant-progress-small\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 6px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 50%; height: 6px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-exception ant-progress-show-info ant-progress-small\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 6px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 70%; height: 6px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-success ant-progress-show-info ant-progress-small\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 6px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 100%; height: 6px;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></span>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/linecap.vue correctly 1`] = `\n<div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 75%; height: 8px; border-radius: 0;\"></div>\n        <!---->\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"75%\">75%</span>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"square\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"square\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 221.48228207808043px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"square\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"75%\">75%</span></div>\n  </div>\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"square\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 220.30970943744057px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"square\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 165.23228207808043px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"square\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"75%\">75%</span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/segment.vue correctly 1`] = `\n<div>\n  <!---->\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n      <div class=\"ant-progress-inner\">\n        <div class=\"ant-progress-bg\" style=\"width: 60%; height: 8px;\"></div>\n        <div class=\"ant-progress-success-bg\" style=\"width: 30%; height: 8px;\"></div>\n      </div>\n    </div><span class=\"ant-progress-text\" title=\"60%\">60%</span>\n  </div>\n  <!---->\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 88.59291283123217px 295.3097094374406px; stroke-dashoffset: -88.59291283123217px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 88.59291283123217px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"60%\">60%</span></div>\n  </div>\n  <!---->\n  <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n    <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n        <!---->\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 220.30970943744057px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 66.09291283123217px 295.3097094374406px; stroke-dashoffset: -103.59291283123217px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n        <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 66.09291283123217px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      </svg><span class=\"ant-progress-text\" title=\"60%\">60%</span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/size.vue correctly 1`] = `\n<div>\n  <div style=\"width: 50%;\" class=\"ant-space ant-space-vertical\">\n    <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n        <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n          <div class=\"ant-progress-inner\">\n            <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n            <!---->\n          </div>\n        </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-small\">\n        <div class=\"ant-progress-outer\" style=\"width: 100%; height: 6px;\">\n          <div class=\"ant-progress-inner\">\n            <div class=\"ant-progress-bg\" style=\"width: 50%; height: 6px;\"></div>\n            <!---->\n          </div>\n        </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-300,20\">\n        <div class=\"ant-progress-outer\" style=\"height: 20px;\">\n          <div class=\"ant-progress-inner\">\n            <div class=\"ant-progress-bg\" style=\"width: 50%; height: 20px;\"></div>\n            <!---->\n          </div>\n        </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n      </div>\n    </div>\n    <!---->\n  </div><br><br>\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n        <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n            <!---->\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 147.6548547187203px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n          </svg><span class=\"ant-progress-text\" title=\"50%\">50%</span></div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-small\">\n        <div class=\"ant-progress-inner\" style=\"width: 60px; height: 60px; font-size: 15px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n            <!---->\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 147.6548547187203px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n          </svg><span class=\"ant-progress-text\" title=\"50%\">50%</span></div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-inline-circle ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-20\">\n        <div class=\"ant-progress-inner\" style=\"width: 20px; height: 20px; font-size: 9px;\">\n          <!----><span><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\"><!----><path d=\"M 50,50 m 0,-42.5\n   a 42.5,42.5 0 1 1 0,85\n   a 42.5,42.5 0 1 1 0,-85\" stroke-linecap=\"round\" stroke-width=\"15\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 267.0353755551324px 267.0353755551324px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,-42.5\n   a 42.5,42.5 0 1 1 0,85\n   a 42.5,42.5 0 1 1 0,-85\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"15\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 133.5176877775662px 267.0353755551324px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,-42.5\n   a 42.5,42.5 0 1 1 0,85\n   a 42.5,42.5 0 1 1 0,-85\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"15\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 267.0353755551324px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path></svg></span>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div><br><br>\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n        <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n            <!---->\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 220.30970943744057px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 110.15485471872029px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n          </svg><span class=\"ant-progress-text\" title=\"50%\">50%</span></div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-small\">\n        <div class=\"ant-progress-inner\" style=\"width: 60px; height: 60px; font-size: 15px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n            <!---->\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 220.30970943744057px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 110.15485471872029px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n            <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n          </svg><span class=\"ant-progress-text\" title=\"50%\">50%</span></div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-20\">\n        <div class=\"ant-progress-inner\" style=\"width: 20px; height: 20px; font-size: 9px;\">\n          <!----><span><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\"><!----><path d=\"M 50,50 m 0,42.5\n   a 42.5,42.5 0 1 1 0,-85\n   a 42.5,42.5 0 1 1 0,85\" stroke-linecap=\"round\" stroke-width=\"15\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 192.03537555513242px 267.0353755551324px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,42.5\n   a 42.5,42.5 0 1 1 0,-85\n   a 42.5,42.5 0 1 1 0,85\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"15\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 96.01768777756621px 267.0353755551324px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path><path d=\"M 50,50 m 0,42.5\n   a 42.5,42.5 0 1 1 0,-85\n   a 42.5,42.5 0 1 1 0,85\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"15\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 267.0353755551324px; stroke-dashoffset: -37.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path></svg></span>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div><br><br>\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n        <div class=\"ant-progress-steps-outer\">\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n          <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-small\">\n        <div class=\"ant-progress-steps-outer\">\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 2px; height: 8px;\"></div>\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 2px; height: 8px;\"></div>\n          <div class=\"ant-progress-steps-item\" style=\"width: 2px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 30px;\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-20\">\n        <div class=\"ant-progress-steps-outer\">\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 20px; height: 20px;\"></div>\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 20px; height: 20px;\"></div>\n          <div class=\"ant-progress-steps-item\" style=\"width: 20px; height: 20px;\"></div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n        </div>\n      </div>\n    </div>\n    <!---->\n    <div class=\"ant-space-item\">\n      <div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-20,30\">\n        <div class=\"ant-progress-steps-outer\">\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 20px; height: 30px;\"></div>\n          <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 20px; height: 30px;\"></div>\n          <div class=\"ant-progress-steps-item\" style=\"width: 20px; height: 30px;\"></div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/progress/demo/steps.vue correctly 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-steps-outer\">\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n  </div>\n</div>\n<br>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-steps-outer\">\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"30%\">30%</span>\n  </div>\n</div>\n<br>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-success ant-progress-show-info ant-progress-small\">\n  <div class=\"ant-progress-steps-outer\">\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 2px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 2px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 2px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 2px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 2px; height: 8px;\"></div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></span>\n  </div>\n</div>\n<br>\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-steps-outer\">\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(82, 196, 26); width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item ant-progress-steps-item-active\" style=\"background-color: rgb(245, 34, 45); width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"60%\">60%</span>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/progress/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Progress render dashboard 295 gapDegree 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 0.3097094374405742px 295.3097094374406px; stroke-dashoffset: -147.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -147.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -147.5px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"0%\">0%</span></div>\n</div>\n`;\n\nexports[`Progress render dashboard 296 gapDegree 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: -0.6902905625594258px 295.3097094374406px; stroke-dashoffset: -148px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -148px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -148px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"0%\">0%</span></div>\n</div>\n`;\n\nexports[`Progress render dashboard zero gapDegree 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,47\n   a 47,47 0 1 1 0,-94\n   a 47,47 0 1 1 0,94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"0%\">0%</span></div>\n</div>\n`;\n\nexports[`Progress render format 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <div class=\"ant-progress-success-bg\" style=\"width: 10%; height: 8px;\"></div>\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"50 10\">50 10</span>\n</div>\n`;\n\nexports[`Progress render negative progress 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 0%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"0%\">0%</span>\n</div>\n`;\n\nexports[`Progress render negative successPercent 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <div class=\"ant-progress-success-bg\" style=\"width: 0%; height: 8px;\"></div>\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n</div>\n`;\n\nexports[`Progress render normal progress 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 0%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"0%\">0%</span>\n</div>\n`;\n\nexports[`Progress render out-of-range progress 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-success ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 100%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`Progress render out-of-range progress with info 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-success ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 100%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`Progress render strokeColor 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-inner\" style=\"width: 120px; height: 120px; font-size: 24px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n      <!---->\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke-linecap=\"round\" stroke-width=\"6\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 295.3097094374406px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: red; stroke-dasharray: 147.6548547187203px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n      <path d=\"M 50,50 m 0,-47\n   a 47,47 0 1 1 0,94\n   a 47,47 0 1 1 0,-94\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"6\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 295.3097094374406px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n    </svg><span class=\"ant-progress-text\" title=\"50%\">50%</span></div>\n</div>\n`;\n\nexports[`Progress render strokeColor 2`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n</div>\n`;\n\nexports[`Progress render strokeColor 3`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 50%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"50%\">50%</span>\n</div>\n`;\n\nexports[`Progress render successColor progress 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\">\n      <div class=\"ant-progress-bg\" style=\"width: 60%; height: 8px;\"></div>\n      <div class=\"ant-progress-success-bg\" style=\"width: 30%; height: 8px; background-color: rgb(255, 255, 255);\"></div>\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"60%\">60%</span>\n</div>\n`;\n\nexports[`Progress render trailColor progress 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-outer\" style=\"width: 100%; height: 8px;\">\n    <div class=\"ant-progress-inner\" style=\"background-color: rgb(255, 255, 255);\">\n      <div class=\"ant-progress-bg\" style=\"width: 0%; height: 8px;\"></div>\n      <!---->\n    </div>\n  </div><span class=\"ant-progress-text\" title=\"0%\">0%</span>\n</div>\n`;\n\nexports[`Progress should support steps 1`] = `\n<div role=\"progressbar\" class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-show-info ant-progress-default\">\n  <div class=\"ant-progress-steps-outer\">\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div>\n    <div class=\"ant-progress-steps-item\" style=\"width: 14px; height: 8px;\"></div><span class=\"ant-progress-text\" title=\"0%\">0%</span>\n  </div>\n</div>\n`;\n\nexports[`Progress steps should have default percent 0 1`] = `\n<div class=\"undefined-steps-outer\">\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/progress/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('progress');\n"
  },
  {
    "path": "components/progress/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport { handleGradient, sortGradient } from '../Line';\nimport Progress from '..';\nimport ProgressSteps from '../Steps';\n\ndescribe('Progress', () => {\n  it('successPercent should decide the progress status when it exists', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 100,\n        success: { percent: 50 },\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(0);\n    });\n\n    wrapper.setProps({ percent: 50, success: { percent: 100 } });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(1);\n    });\n\n    wrapper.setProps({ percent: 100, success: { percent: 0 } });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(0);\n    });\n  });\n\n  it('render out-of-range progress', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 120,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render out-of-range progress with info', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 120,\n        showInfo: true,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render negative progress', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: -20,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render negative successPercent', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 50,\n        success: { percent: -20 },\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render format', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 50,\n        success: { percent: 10 },\n        format: (percent, successPercent) => `${percent} ${successPercent}`,\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render strokeColor', async () => {\n    const wrapper = mount(Progress, {\n      props: {\n        percent: 50,\n        type: 'circle',\n        strokeColor: 'red',\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n    wrapper.setProps({\n      strokeColor: {\n        from: '#108ee9',\n        to: '#87d068',\n      },\n      type: 'line',\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n    wrapper.setProps({\n      strokeColor: {\n        '0%': '#108ee9',\n        '100%': '#87d068',\n      },\n    });\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('render normal progress', () => {\n    const wrapper = mount(Progress, { props: { status: 'normal' } });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('render trailColor progress', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress status=\"normal\" trailColor=\"#ffffff\" />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('render successColor progress', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress percent={60} success={{ percent: 30, strokeColor: '#ffffff' }} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('render dashboard zero gapDegree', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress type=\"dashboard\" gapDegree={0} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('render dashboard 295 gapDegree', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress type=\"dashboard\" gapDegree={295} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('render dashboard 296 gapDegree', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress type=\"dashboard\" gapDegree={296} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('get correct line-gradient', () => {\n    expect(handleGradient({ from: 'test', to: 'test' }).backgroundImage).toBe(\n      'linear-gradient(to right, test, test)',\n    );\n    expect(handleGradient({}).backgroundImage).toBe('linear-gradient(to right, #1890FF, #1890FF)');\n    expect(handleGradient({ from: 'test', to: 'test', '0%': 'test' }).backgroundImage).toBe(\n      'linear-gradient(to right, test 0%)',\n    );\n  });\n\n  it('sort gradients correctly', () => {\n    expect(sortGradient({ '10%': 'test10', '30%': 'test30', '20%': 'test20' })).toBe(\n      'test10 10%, test20 20%, test30 30%',\n    );\n    expect(sortGradient({ '10%': 'test10', '30%': 'test30', '20%': 'test20', dummy: 'test' })).toBe(\n      'test10 10%, test20 20%, test30 30%',\n    );\n  });\n\n  it('should show success status when percent is 100', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress percent={100} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(1);\n  });\n\n  // https://github.com/ant-design/ant-design/issues/15950\n  it('should show success status when percent is 100 and status is undefined', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress percent={100} status={undefined} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(1);\n  });\n\n  // // https://github.com/ant-design/ant-design/pull/15951#discussion_r273062969\n  // it('should show success status when status is invalid', () => {\n  //   const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n  //   const wrapper = mount({\n  //     render() {\n  //       return <Progress percent={100} status=\"invalid\" />;\n  //     },\n  //   });\n  //   expect(wrapper.findAll('.ant-progress-status-success')).toHaveLength(1);\n  //   errorSpy.mockRestore();\n  // });\n\n  it('should support steps', () => {\n    const wrapper = mount({\n      render() {\n        return <Progress steps={3} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('steps should be changable', async () => {\n    const wrapper = mount({\n      render() {\n        return <Progress steps={5} percent={60} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-progress-steps-item-active').length).toBe(3);\n    wrapper.setProps({ percent: 40 });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-steps-item-active').length).toBe(2);\n    });\n  });\n\n  it('steps should be changable when has strokeColor', async () => {\n    const wrapper = mount({\n      render() {\n        return <Progress steps={5} percent={60} strokeColor=\"#1890ff\" />;\n      },\n    });\n    expect(wrapper.findAll('.ant-progress-steps-item')[0].element.style.backgroundColor).toBe(\n      'rgb(24, 144, 255)',\n    );\n    wrapper.setProps({ percent: 40 });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-steps-item')[2].element.style.backgroundColor).toBe('');\n      expect(wrapper.findAll('.ant-progress-steps-item')[1].element.style.backgroundColor).toBe(\n        'rgb(24, 144, 255)',\n      );\n    });\n  });\n\n  it('steps should support trailColor', () => {\n    const wrapper = mount(<Progress steps={5} percent={20} trailColor=\"#1890ee\" />);\n    expect(wrapper.findAll('.ant-progress-steps-item')[1].element.style.backgroundColor).toBe(\n      'rgb(24, 144, 238)',\n    );\n  });\n\n  it('should display correct step', async () => {\n    const wrapper = mount({\n      render() {\n        return <Progress steps={9} percent={22.22} />;\n      },\n    });\n    expect(wrapper.findAll('.ant-progress-steps-item-active').length).toBe(2);\n    wrapper.setProps({ percent: 33.33 });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-steps-item-active').length).toBe(3);\n    });\n    wrapper.setProps({ percent: 44.44 });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-progress-steps-item-active').length).toBe(4);\n    });\n  });\n\n  it('steps should have default percent 0', () => {\n    const wrapper = mount({\n      render() {\n        return <ProgressSteps />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should warning if use `progress` in success', () => {\n    const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount(<Progress percent={60} success={{ progress: 30 }} />);\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Progress] `success.progress` is deprecated. Please use `success.percent` instead.',\n    );\n  });\n\n  it('should warning if use `progress` in success in type Circle', () => {\n    const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return <Progress percent={60} success={{ progress: 30 }} type=\"circle\" />;\n      },\n    });\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Progress] `success.progress` is deprecated. Please use `success.percent` instead.',\n    );\n  });\n});\n"
  },
  {
    "path": "components/progress/demo/circle-dynamic.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 进度圈动态展示\n  en-US: Dynamic circular progress bar\n---\n\n## zh-CN\n\n会动的进度条才是好进度条。\n\n## en-US\n\nA dynamic progress bar is better.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress type=\"circle\" :percent=\"defaultPercent\" />\n    <a-button-group>\n      <a-button @click=\"decline\">\n        <template #icon><minus-outlined /></template>\n      </a-button>\n      <a-button @click=\"increase\">\n        <template #icon><plus-outlined /></template>\n      </a-button>\n    </a-button-group>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst defaultPercent = ref<number>(0);\n\nconst increase = () => {\n  const percent = defaultPercent.value + 10;\n  defaultPercent.value = percent > 100 ? 100 : percent;\n};\n\nconst decline = () => {\n  const percent = defaultPercent.value - 10;\n  defaultPercent.value = percent < 0 ? 0 : percent;\n};\n</script>\n"
  },
  {
    "path": "components/progress/demo/circle-micro.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 响应式进度圈\n  en-US: Responsive circular progress bar\n---\n\n## zh-CN\n\n响应式的圈形进度，当 `width` 小于等于 20 的时候，进度信息将不会显示在进度圈里面，而是以 Tooltip 的形式显示。\n\n## en-US\n\nResponsive circular progress bar. When `width` is smaller than 20, progress information will be displayed in Tooltip.\n\n\n</docs>\n\n<template>\n  <div>\n    <a-progress\n      type=\"circle\"\n      trail-color=\"#e6f4ff\"\n      :percent=\"60\"\n      :stroke-width=\"20\"\n      :size=\"12\"\n      :format=\"number => `进行中，已完成${number}%`\"\n    />\n    <span :style=\"{ marginLeft: 8 }\">代码发布</span>\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/circle-mini.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 小型进度圈\n  en-US: Mini size circular progress bar\n---\n\n## zh-CN\n\n小一号的圈形进度。\n\n## en-US\n\nA smaller circular progress bar.\n\n</docs>\n\n<template>\n  <a-progress type=\"circle\" :percent=\"30\" :size=\"80\" />\n  <a-progress type=\"circle\" :percent=\"70\" :size=\"80\" status=\"exception\" />\n  <a-progress type=\"circle\" :percent=\"100\" :size=\"80\" />\n</template>\n"
  },
  {
    "path": "components/progress/demo/circle.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 进度圈\n  en-US: Circular progress bar\n---\n\n## zh-CN\n\n圈形的进度。\n\n## en-US\n\nA circular progress bar.\n\n</docs>\n\n<template>\n  <a-progress type=\"circle\" :percent=\"75\" />\n  <a-progress type=\"circle\" :percent=\"70\" status=\"exception\" />\n  <a-progress type=\"circle\" :percent=\"100\" />\n</template>\n"
  },
  {
    "path": "components/progress/demo/dashboard.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 仪表盘\n  en-US: Dashboard\n---\n\n## zh-CN\n\n通过设置 `type=dashboard`，可以很方便地实现仪表盘样式的进度条。若想要修改缺口的角度，可以设置 `gapDegree` 为你想要的值。\n\n## en-US\n\nBy setting `type=dashboard`, you can get a dashboard style of progress easily.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress type=\"dashboard\" :percent=\"75\" />\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/dynamic.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 动态展示\n  en-US: Dynamic\n---\n\n## zh-CN\n\n会动的进度条才是好进度条。\n\n## en-US\n\nA dynamic progress bar is better.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress :percent=\"defaultPercent\" />\n    <a-button-group>\n      <a-button @click=\"decline\">\n        <template #icon><minus-outlined /></template>\n      </a-button>\n      <a-button @click=\"increase\">\n        <template #icon><plus-outlined /></template>\n      </a-button>\n    </a-button-group>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst defaultPercent = ref<number>(0);\n\nconst increase = () => {\n  const percent = defaultPercent.value + 10;\n  defaultPercent.value = percent > 100 ? 100 : percent;\n};\n\nconst decline = () => {\n  const percent = defaultPercent.value - 10;\n  defaultPercent.value = percent < 0 ? 0 : percent;\n};\n</script>\n"
  },
  {
    "path": "components/progress/demo/format.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 自定义文字格式\n  en-US: Custom text format\n---\n\n## zh-CN\n\n`format` 属性指定格式。\n\n## en-US\n\nYou can set a custom text by setting the `format` prop.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress type=\"circle\" :percent=\"75\" :format=\"percent => `${percent} Days`\" />\n    <a-progress type=\"circle\" :percent=\"100\" :format=\"() => 'Done'\" />\n    <a-progress type=\"circle\" :percent=\"75\">\n      <template #format=\"percent\">\n        <span style=\"color: red\">{{ percent }}</span>\n      </template>\n    </a-progress>\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/gradient-line.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 自定义进度条渐变色\n  en-US: Custom line gradient\n---\n\n## zh-CN\n\n`linear-gradient` 的封装。推荐只传两种颜色。\n\n## en-US\n\nA package of `linear-gradient`. It is recommended to only pass two colors.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress\n      :stroke-color=\"{\n        '0%': '#108ee9',\n        '100%': '#87d068',\n      }\"\n      :percent=\"99.9\"\n    />\n    <a-progress\n      :stroke-color=\"{\n        from: '#108ee9',\n        to: '#87d068',\n      }\"\n      :percent=\"99.9\"\n      status=\"active\"\n    />\n    <a-progress\n      type=\"circle\"\n      :stroke-color=\"{\n        '0%': '#108ee9',\n        '100%': '#87d068',\n      }\"\n      :percent=\"90\"\n    />\n    <a-progress\n      type=\"circle\"\n      :stroke-color=\"{\n        '0%': '#108ee9',\n        '100%': '#87d068',\n      }\"\n      :percent=\"100\"\n    />\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <line-demo />\n    <circle-demo />\n    <line-mini />\n    <circle-mini />\n    <circle-micro />\n    <dynamic />\n    <circle-dynamic />\n    <format />\n    <dashboard />\n    <segment />\n    <line-cap />\n    <gradient-line />\n    <steps />\n    <Size />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Line from './line.vue';\nimport Circle from './circle.vue';\nimport LineMini from './line-mini.vue';\nimport CircleMini from './circle-mini.vue';\nimport Dynamic from './dynamic.vue';\nimport CircleDynamic from './circle-dynamic.vue';\nimport Format from './format.vue';\nimport Dashboard from './dashboard.vue';\nimport Segment from './segment.vue';\nimport LineCap from './linecap.vue';\nimport GradientLine from './gradient-line.vue';\nimport Steps from './steps.vue';\nimport CircleMicro from './circle-micro.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nimport Size from './size.vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    LineDemo: Line,\n    CircleDemo: Circle,\n    LineMini,\n    CircleMini,\n    Dynamic,\n    CircleDynamic,\n    Format,\n    Dashboard,\n    Segment,\n    LineCap,\n    GradientLine,\n    Steps,\n    CircleMicro,\n    Size,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style>\n[id^='components-progress-demo-'] .ant-progress {\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/progress/demo/line-mini.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 小型进度条\n  en-US: Mini size progress bar\n---\n\n## zh-CN\n\n适合放在较狭窄的区域内。\n\n## en-US\n\nAppropriate for a narrow area.\n\n</docs>\n\n<template>\n  <div style=\"width: 170px\">\n    <a-progress :percent=\"30\" size=\"small\" />\n    <a-progress :percent=\"50\" size=\"small\" status=\"active\" />\n    <a-progress :percent=\"70\" size=\"small\" status=\"exception\" />\n    <a-progress :percent=\"100\" size=\"small\" />\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/line.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 进度条\n  en-US: Progress bar\n---\n\n## zh-CN\n\n标准的进度条。\n\n## en-US\n\nA standard progress bar.\n\n</docs>\n\n<template>\n  <a-progress :percent=\"30\" />\n  <a-progress :percent=\"50\" status=\"active\" />\n  <a-progress :percent=\"70\" status=\"exception\" />\n  <a-progress :percent=\"100\" />\n  <a-progress :percent=\"50\" :show-info=\"false\" />\n</template>\n"
  },
  {
    "path": "components/progress/demo/linecap.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 圆角/方角边缘\n  en-US: Square linecaps\n---\n\n## zh-CN\n\n`strokeLinecap=\"square|round\"` 可以调整进度条边缘的形状。\n\n## en-US\n\nBy setting `strokeLinecap=\"square\"`, you can change the linecaps from round to square.\n\n</docs>\n\n<template>\n  <div>\n    <a-progress stroke-linecap=\"square\" :percent=\"75\" />\n    <a-progress stroke-linecap=\"square\" :percent=\"75\" type=\"circle\" />\n    <a-progress stroke-linecap=\"square\" :percent=\"75\" type=\"dashboard\" />\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/segment.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 分段进度条\n  en-US: Progress bar with success segment\n---\n\n## zh-CN\n\n标准的进度条。\n\n## en-US\n\nA standard progress bar.\n\n</docs>\n\n<template>\n  <div>\n    <a-tooltip title=\"3 done / 3 in progress / 4 to do\">\n      <a-progress :percent=\"60\" :success=\"{ percent: 30 }\" />\n    </a-tooltip>\n    <a-tooltip title=\"3 done / 3 in progress / 4 to do\">\n      <a-progress :percent=\"60\" :success=\"{ percent: 30 }\" type=\"circle\" />\n    </a-tooltip>\n    <a-tooltip title=\"3 done / 3 in progress / 4 to do\">\n      <a-progress :percent=\"60\" :success=\"{ percent: 30 }\" type=\"dashboard\" />\n    </a-tooltip>\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/size.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 进度条尺寸\n  en-US: Progress bar size\n---\n\n## zh-CN\n\n进度条尺寸。\n\n## en-US\n\nThe size of progress.\n\n</docs>\n\n<template>\n  <div>\n    <a-space direction=\"vertical\" style=\"width: 50%\">\n      <a-progress :percent=\"50\" />\n      <a-progress :percent=\"50\" size=\"small\" />\n      <a-progress :percent=\"50\" :size=\"[300, 20]\" />\n    </a-space>\n    <br />\n    <br />\n    <a-space :size=\"30\">\n      <a-progress type=\"circle\" :percent=\"50\" />\n      <a-progress type=\"circle\" :percent=\"50\" size=\"small\" />\n      <a-progress type=\"circle\" :percent=\"50\" :size=\"20\" />\n    </a-space>\n    <br />\n    <br />\n    <a-space :size=\"30\">\n      <a-progress type=\"dashboard\" :percent=\"50\" />\n      <a-progress type=\"dashboard\" :percent=\"50\" size=\"small\" />\n      <a-progress type=\"dashboard\" :percent=\"50\" :size=\"20\" />\n    </a-space>\n    <br />\n    <br />\n    <a-space :size=\"30\">\n      <a-progress :steps=\"3\" :percent=\"50\" />\n      <a-progress :steps=\"3\" :percent=\"50\" size=\"small\" />\n      <a-progress :steps=\"3\" :percent=\"50\" :size=\"20\" />\n      <a-progress :steps=\"3\" :percent=\"50\" :size=\"[20, 30]\" />\n    </a-space>\n  </div>\n</template>\n"
  },
  {
    "path": "components/progress/demo/steps.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 步骤进度条\n  en-US: Progress bar with steps\n---\n\n## zh-CN\n\n带步骤的进度条。\n\n## en-US\n\nA progress bar with steps.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-progress :percent=\"50\" :steps=\"3\" />\n    <a-progress :percent=\"30\" :steps=\"5\" />\n    <a-progress :percent=\"100\" :steps=\"5\" size=\"small\" stroke-color=\"#52c41a\" />\n    <a-progress :percent=\"60\" :steps=\"5\" :stroke-color=\"['#52c41a', '#52c41a', '#f5222d']\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/progress/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Progress\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*gK_4S6fDRfgAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HJH8Tb1lcYAAAAAAAAAAAAAADrJ8AQ/original\n---\n\nDisplay the current progress of an operation flow.\n\n## When To Use\n\nIf it will take a long time to complete an operation, you can use `Progress` to show the current progress and status.\n\n- When an operation will interrupt the current interface, or it needs to run in the background for more than 2 seconds.\n- When you need to display the completion percentage of an operation.\n\n## API\n\nProperties that shared by all types.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| format | The template function of the content | function(percent, successPercent) | (percent) => percent + `%` |  |\n| percent | To set the completion percentage | number | 0 |  |\n| showInfo | Whether to display the progress value and the status icon | boolean | true |  |\n| status | To set the status of the Progress, options: `success` `exception` `normal` `active`(line only) | string | - |  |\n| strokeColor | The color of progress bar | string | - |  |\n| strokeLinecap | To set the style of the progress linecap | `round` \\| `butt` \\| `square`, see [stroke-linecap](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) | `round` | - |\n| success | Configs of successfully progress bar | { percent: number, strokeColor: string } | - |  |\n| title | html dom title | string | - | 3.0 |\n| trailColor | The color of unfilled part | string | - |  |\n| type | To set the type, options: `line` `circle` `dashboard` | string | `line` |  |\n| size | Progress size | number \\| \\[number, number] \\| \"small\" \\| \"default\" | \"default\" |  |\n\n### `type=\"line\"`\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| steps | The total step count | number | - | - |\n| strokeColor | The color of progress bar, render `linear-gradient` when passing an object, could accept `string[]` when has `steps`. | string \\| string[] \\| { from: string; to: string; direction: string } | - | - |\n\n### `type=\"circle\"`\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| strokeColor | The color of circular progress, render `linear-gradient` when passing an object | string \\| object | - | - |\n| strokeWidth | To set the width of the circular progress, unit: percentage of the canvas width | number | 6 | - |\n\n### `type=\"dashboard\"`\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| gapDegree | The gap degree of half circle, 0 ~ 295 | number | 75 |\n| gapPosition | The gap position, options: `top` `bottom` `left` `right` | string | `bottom` |\n| strokeWidth | To set the width of the dashboard progress, unit: percentage of the canvas width | number | 6 |\n"
  },
  {
    "path": "components/progress/index.ts",
    "content": "import Progress from './progress';\nimport { withInstall } from '../_util/type';\n\nexport type { ProgressProps } from './props';\n\nexport default withInstall(Progress);\n"
  },
  {
    "path": "components/progress/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Progress\nsubtitle: 进度条\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*gK_4S6fDRfgAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HJH8Tb1lcYAAAAAAAAAAAAAADrJ8AQ/original\n---\n\n展示操作的当前进度。\n\n## 何时使用\n\n在操作需要较长时间才能完成时，为用户显示该操作的当前进度和状态。\n\n- 当一个操作会打断当前界面，或者需要在后台运行，且耗时可能超过 2 秒时；\n- 当需要显示一个操作完成的百分比时。\n\n## API\n\n各类型共用的属性。\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| format | 内容的模板函数 | function(percent, successPercent) | (percent) => percent + `%` |  |\n| percent | 百分比 | number | 0 |  |\n| showInfo | 是否显示进度数值或状态图标 | boolean | true |  |\n| status | 状态，可选：`success` `exception` `normal` `active`(仅限 line) | string | - |  |\n| strokeColor | 进度条的色彩 | string | - |  |\n| strokeLinecap | 进度条的样式 | `round` \\| `butt` \\| `square`，区别详见 [stroke-linecap](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) | `round` | - |\n| success | 成功进度条相关配置 | { percent: number, strokeColor: string } | - |  |\n| title | html 标签 title | string | - | 3.0 |\n| trailColor | 未完成的分段的颜色 | string | - |  |\n| type | 类型，可选 `line` `circle` `dashboard` | string | `line` |  |\n| size | 进度条的尺寸 | number \\| \\[number, number] \\| \"small\" \\| \"default\" | \"default\" |  |\n\n### `type=\"line\"`\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| steps | 进度条总共步数 | number | - | - |\n| strokeColor | 进度条的色彩，传入 object 时为渐变。当有 `steps` 时支持传入一个数组。 | string \\| string[] \\| { from: string; to: string; direction: string } | - | - |\n\n### `type=\"circle\"`\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| strokeColor | 圆形进度条线的色彩，传入 object 时为渐变 | string \\| object | - | - |\n| strokeWidth | 圆形进度条线的宽度，单位是进度条画布宽度的百分比 | number | 6 | - |\n\n### `type=\"dashboard\"`\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| gapDegree | 仪表盘进度条缺口角度，可取值 0 ~ 295 | number | 75 | - |\n| gapPosition | 仪表盘进度条缺口位置 | `top` \\| `bottom` \\| `left` \\| `right` | `bottom` | - |\n| strokeWidth | 仪表盘进度条线的宽度，单位是进度条画布宽度的百分比 | number | 6 | - |\n"
  },
  {
    "path": "components/progress/progress.tsx",
    "content": "import { computed, defineComponent } from 'vue';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport CheckOutlined from '@ant-design/icons-vue/CheckOutlined';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport Line from './Line';\nimport Circle from './Circle';\nimport Steps from './Steps';\nimport { getSize, getSuccessPercent, validProgress } from './utils';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport devWarning from '../vc-util/devWarning';\nimport { progressProps, progressStatuses } from './props';\nimport type { VueNode, CustomSlotsType } from '../_util/type';\nimport useStyle from './style';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AProgress',\n  inheritAttrs: false,\n  props: initDefaultProps(progressProps(), {\n    type: 'line',\n    percent: 0,\n    showInfo: true,\n    // null for different theme definition\n    trailColor: null,\n    size: 'default',\n    strokeLinecap: 'round',\n  }),\n  slots: Object as CustomSlotsType<{\n    default?: any;\n    format?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('progress', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        'successPercent' in props,\n        'Progress',\n        '`successPercent` is deprecated. Please use `success.percent` instead.',\n      );\n\n      devWarning('width' in props, 'Progress', '`width` is deprecated. Please use `size` instead.');\n    }\n    const strokeColorNotArray = computed(() =>\n      Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor,\n    );\n    const percentNumber = computed(() => {\n      const { percent = 0 } = props;\n      const successPercent = getSuccessPercent(props);\n      return parseInt(\n        successPercent !== undefined ? successPercent.toString() : percent.toString(),\n        10,\n      );\n    });\n\n    const progressStatus = computed(() => {\n      const { status } = props;\n      if (!progressStatuses.includes(status) && percentNumber.value >= 100) {\n        return 'success';\n      }\n      return status || 'normal';\n    });\n\n    const classString = computed(() => {\n      const { type, showInfo, size } = props;\n      const pre = prefixCls.value;\n      return {\n        [pre]: true,\n        [`${pre}-inline-circle`]: type === 'circle' && getSize(size, 'circle').width <= 20,\n        [`${pre}-${(type === 'dashboard' && 'circle') || type}`]: true,\n        [`${pre}-status-${progressStatus.value}`]: true,\n        [`${pre}-show-info`]: showInfo,\n        [`${pre}-${size}`]: size,\n        [`${pre}-rtl`]: direction.value === 'rtl',\n        [hashId.value]: true,\n      };\n    });\n\n    const strokeColorNotGradient = computed(() =>\n      typeof props.strokeColor === 'string' || Array.isArray(props.strokeColor)\n        ? props.strokeColor\n        : undefined,\n    );\n\n    const renderProcessInfo = () => {\n      const { showInfo, format, type, percent, title } = props;\n      const successPercent = getSuccessPercent(props);\n      if (!showInfo) return null;\n\n      let text: VueNode;\n      const textFormatter = format || slots?.format || ((val: number) => `${val}%`);\n      const isLineType = type === 'line';\n      if (\n        format ||\n        slots?.format ||\n        (progressStatus.value !== 'exception' && progressStatus.value !== 'success')\n      ) {\n        text = textFormatter(validProgress(percent), validProgress(successPercent));\n      } else if (progressStatus.value === 'exception') {\n        text = isLineType ? <CloseCircleFilled /> : <CloseOutlined />;\n      } else if (progressStatus.value === 'success') {\n        text = isLineType ? <CheckCircleFilled /> : <CheckOutlined />;\n      }\n      return (\n        <span\n          class={`${prefixCls.value}-text`}\n          title={title === undefined && typeof text === 'string' ? text : undefined}\n        >\n          {text}\n        </span>\n      );\n    };\n\n    return () => {\n      const { type, steps, title } = props;\n      const { class: cls, ...restAttrs } = attrs;\n      const progressInfo = renderProcessInfo();\n      let progress: VueNode;\n      // Render progress shape\n      if (type === 'line') {\n        progress = steps ? (\n          <Steps\n            {...props}\n            strokeColor={strokeColorNotGradient.value}\n            prefixCls={prefixCls.value}\n            steps={steps}\n          >\n            {progressInfo}\n          </Steps>\n        ) : (\n          <Line\n            {...props}\n            strokeColor={strokeColorNotArray.value}\n            prefixCls={prefixCls.value}\n            direction={direction.value}\n          >\n            {progressInfo}\n          </Line>\n        );\n      } else if (type === 'circle' || type === 'dashboard') {\n        progress = (\n          <Circle\n            {...props}\n            prefixCls={prefixCls.value}\n            strokeColor={strokeColorNotArray.value}\n            progressStatus={progressStatus.value}\n          >\n            {progressInfo}\n          </Circle>\n        );\n      }\n      return wrapSSR(\n        <div role=\"progressbar\" {...restAttrs} class={[classString.value, cls]} title={title}>\n          {progress}\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/progress/props.ts",
    "content": "import type { VueNode } from '../_util/type';\nimport {\n  booleanType,\n  someType,\n  functionType,\n  stringType,\n  anyType,\n  objectType,\n} from '../_util/type';\nimport type { ExtractPropTypes } from 'vue';\n\nexport const progressStatuses = ['normal', 'exception', 'active', 'success'] as const;\nexport type ProgressStatusesType = (typeof progressStatuses)[number];\nconst ProgressType = ['line', 'circle', 'dashboard'] as const;\nexport type ProgressType = (typeof ProgressType)[number];\nconst ProgressSize = ['default', 'small'] as const;\nexport type ProgressSize = (typeof ProgressSize)[number] | number | [number, number];\nexport type StringGradients = { [percentage: string]: string };\ntype FromToGradients = { from: string; to: string };\nexport type ProgressGradient = { direction?: string } & (StringGradients | FromToGradients);\n\nexport interface SuccessProps {\n  percent?: number;\n  /** @deprecated Use `percent` instead */\n  progress?: number;\n  strokeColor?: string;\n}\n\nexport const progressProps = () => ({\n  prefixCls: String,\n  type: stringType<ProgressType>(),\n  percent: Number,\n  format: functionType<(percent?: number, successPercent?: number) => VueNode>(),\n  status: stringType<ProgressStatusesType>(),\n  showInfo: booleanType(),\n  strokeWidth: Number,\n  strokeLinecap: stringType<'butt' | 'square' | 'round'>(),\n  strokeColor: anyType<string | string[] | ProgressGradient>(),\n  trailColor: String,\n  /** @deprecated Use `size` instead */\n  width: Number,\n  success: objectType<SuccessProps>(),\n  gapDegree: Number,\n  gapPosition: stringType<'top' | 'bottom' | 'left' | 'right'>(),\n  size: someType<ProgressSize | number | [number, number]>([String, Number, Array]),\n  steps: Number,\n  /** @deprecated Use `success` instead */\n  successPercent: Number,\n  title: String,\n  progressStatus: stringType<ProgressStatusesType>(),\n});\n\nexport type ProgressProps = Partial<ExtractPropTypes<ReturnType<typeof progressProps>>>;\n"
  },
  {
    "path": "components/progress/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface ProgressToken extends FullToken<'Progress'> {\n  progressLineRadius: number;\n  progressInfoTextColor: string;\n  progressRemainingColor: string;\n  progressDefaultColor: string;\n  progressStepMinWidth: number;\n  progressStepMarginInlineEnd: number;\n  progressActiveMotionDuration: string;\n}\n\nconst antProgressActive = new Keyframes('antProgressActive', {\n  '0%': {\n    transform: 'translateX(-100%) scaleX(0)',\n    opacity: 0.1,\n  },\n  '20%': {\n    transform: 'translateX(-100%) scaleX(0)',\n    opacity: 0.5,\n  },\n  to: {\n    transform: 'translateX(0) scaleX(1)',\n    opacity: 0,\n  },\n});\n\nconst genBaseStyle: GenerateStyle<ProgressToken> = token => {\n  const { componentCls: progressCls, iconCls: iconPrefixCls } = token;\n\n  return {\n    [progressCls]: {\n      ...resetComponent(token),\n\n      display: 'inline-block',\n\n      '&-rtl': {\n        direction: 'rtl',\n      },\n\n      '&-line': {\n        position: 'relative',\n        width: '100%',\n        fontSize: token.fontSize,\n        marginInlineEnd: token.marginXS,\n        marginBottom: token.marginXS,\n      },\n\n      [`${progressCls}-outer`]: {\n        display: 'inline-block',\n        width: '100%',\n      },\n\n      [`&${progressCls}-show-info`]: {\n        [`${progressCls}-outer`]: {\n          marginInlineEnd: `calc(-2em - ${token.marginXS}px)`,\n          paddingInlineEnd: `calc(2em + ${token.paddingXS}px)`,\n        },\n      },\n\n      [`${progressCls}-inner`]: {\n        position: 'relative',\n        display: 'inline-block',\n        width: '100%',\n        overflow: 'hidden',\n        verticalAlign: 'middle',\n        backgroundColor: token.progressRemainingColor,\n        borderRadius: token.progressLineRadius,\n      },\n\n      [`${progressCls}-inner:not(${progressCls}-circle-gradient)`]: {\n        [`${progressCls}-circle-path`]: {\n          stroke: token.colorInfo,\n        },\n      },\n\n      [`${progressCls}-success-bg, ${progressCls}-bg`]: {\n        position: 'relative',\n        backgroundColor: token.colorInfo,\n        borderRadius: token.progressLineRadius,\n        transition: `all ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,\n      },\n\n      [`${progressCls}-success-bg`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        backgroundColor: token.colorSuccess,\n      },\n\n      [`${progressCls}-text`]: {\n        display: 'inline-block',\n        width: '2em',\n        marginInlineStart: token.marginXS,\n        color: token.progressInfoTextColor,\n        lineHeight: 1,\n        whiteSpace: 'nowrap',\n        textAlign: 'start',\n        verticalAlign: 'middle',\n        wordBreak: 'normal',\n        [iconPrefixCls]: {\n          fontSize: token.fontSize,\n        },\n      },\n\n      [`&${progressCls}-status-active`]: {\n        [`${progressCls}-bg::before`]: {\n          position: 'absolute',\n          inset: 0,\n          backgroundColor: token.colorBgContainer,\n          borderRadius: token.progressLineRadius,\n          opacity: 0,\n          animationName: antProgressActive,\n          animationDuration: token.progressActiveMotionDuration,\n          animationTimingFunction: token.motionEaseOutQuint,\n          animationIterationCount: 'infinite',\n          content: '\"\"',\n        },\n      },\n\n      [`&${progressCls}-status-exception`]: {\n        [`${progressCls}-bg`]: {\n          backgroundColor: token.colorError,\n        },\n        [`${progressCls}-text`]: {\n          color: token.colorError,\n        },\n      },\n\n      [`&${progressCls}-status-exception ${progressCls}-inner:not(${progressCls}-circle-gradient)`]:\n        {\n          [`${progressCls}-circle-path`]: {\n            stroke: token.colorError,\n          },\n        },\n\n      [`&${progressCls}-status-success`]: {\n        [`${progressCls}-bg`]: {\n          backgroundColor: token.colorSuccess,\n        },\n        [`${progressCls}-text`]: {\n          color: token.colorSuccess,\n        },\n      },\n\n      [`&${progressCls}-status-success ${progressCls}-inner:not(${progressCls}-circle-gradient)`]: {\n        [`${progressCls}-circle-path`]: {\n          stroke: token.colorSuccess,\n        },\n      },\n    },\n  };\n};\n\nconst genCircleStyle: GenerateStyle<ProgressToken> = token => {\n  const { componentCls: progressCls, iconCls: iconPrefixCls } = token;\n\n  return {\n    [progressCls]: {\n      [`${progressCls}-circle-trail`]: {\n        stroke: token.progressRemainingColor,\n      },\n\n      [`&${progressCls}-circle ${progressCls}-inner`]: {\n        position: 'relative',\n        lineHeight: 1,\n        backgroundColor: 'transparent',\n      },\n\n      [`&${progressCls}-circle ${progressCls}-text`]: {\n        position: 'absolute',\n        insetBlockStart: '50%',\n        insetInlineStart: 0,\n        width: '100%',\n        margin: 0,\n        padding: 0,\n        color: token.colorText,\n        lineHeight: 1,\n        whiteSpace: 'normal',\n        textAlign: 'center',\n        transform: 'translateY(-50%)',\n\n        [iconPrefixCls]: {\n          fontSize: `${token.fontSize / token.fontSizeSM}em`,\n        },\n      },\n\n      [`${progressCls}-circle&-status-exception`]: {\n        [`${progressCls}-text`]: {\n          color: token.colorError,\n        },\n      },\n\n      [`${progressCls}-circle&-status-success`]: {\n        [`${progressCls}-text`]: {\n          color: token.colorSuccess,\n        },\n      },\n    },\n    [`${progressCls}-inline-circle`]: {\n      lineHeight: 1,\n      [`${progressCls}-inner`]: {\n        verticalAlign: 'bottom',\n      },\n    },\n  };\n};\n\nconst genStepStyle: GenerateStyle<ProgressToken> = (token: ProgressToken): CSSObject => {\n  const { componentCls: progressCls } = token;\n\n  return {\n    [progressCls]: {\n      [`${progressCls}-steps`]: {\n        display: 'inline-block',\n        '&-outer': {\n          display: 'flex',\n          flexDirection: 'row',\n          alignItems: 'center',\n        },\n        '&-item': {\n          flexShrink: 0,\n          minWidth: token.progressStepMinWidth,\n          marginInlineEnd: token.progressStepMarginInlineEnd,\n          backgroundColor: token.progressRemainingColor,\n          transition: `all ${token.motionDurationSlow}`,\n\n          '&-active': {\n            backgroundColor: token.colorInfo,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genSmallLine: GenerateStyle<ProgressToken> = (token: ProgressToken): CSSObject => {\n  const { componentCls: progressCls, iconCls: iconPrefixCls } = token;\n\n  return {\n    [progressCls]: {\n      [`${progressCls}-small&-line, ${progressCls}-small&-line ${progressCls}-text ${iconPrefixCls}`]:\n        {\n          fontSize: token.fontSizeSM,\n        },\n    },\n  };\n};\n\nexport default genComponentStyleHook('Progress', token => {\n  const progressStepMarginInlineEnd = token.marginXXS / 2;\n\n  const progressToken = mergeToken<ProgressToken>(token, {\n    progressLineRadius: 100, // magic for capsule shape, should be a very large number\n    progressInfoTextColor: token.colorText,\n    progressDefaultColor: token.colorInfo,\n    progressRemainingColor: token.colorFillSecondary,\n    progressStepMarginInlineEnd,\n    progressStepMinWidth: progressStepMarginInlineEnd,\n    progressActiveMotionDuration: '2.4s',\n  });\n  return [\n    genBaseStyle(progressToken),\n    genCircleStyle(progressToken),\n    genStepStyle(progressToken),\n    genSmallLine(progressToken),\n  ];\n});\n"
  },
  {
    "path": "components/progress/utils.ts",
    "content": "import { presetPrimaryColors } from '@ant-design/colors';\nimport devWarning from '../vc-util/devWarning';\nimport type { CircleProps } from './Circle';\nimport type { ProgressProps } from './props';\n\nexport function validProgress(progress: number | undefined) {\n  if (!progress || progress < 0) {\n    return 0;\n  }\n  if (progress > 100) {\n    return 100;\n  }\n  return progress;\n}\n\nexport function getSuccessPercent({ success, successPercent }: ProgressProps) {\n  let percent = successPercent;\n  /** @deprecated Use `percent` instead */\n  if (success && 'progress' in success) {\n    devWarning(\n      false,\n      'Progress',\n      '`success.progress` is deprecated. Please use `success.percent` instead.',\n    );\n    percent = success.progress;\n  }\n  if (success && 'percent' in success) {\n    percent = success.percent;\n  }\n  return percent;\n}\n\nexport function getPercentage({ percent, success, successPercent }: ProgressProps) {\n  const realSuccessPercent = validProgress(getSuccessPercent({ success, successPercent }));\n  return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];\n}\n\nexport function getStrokeColor({\n  success = {},\n  strokeColor,\n}: Partial<CircleProps>): (string | Record<string, string>)[] {\n  const { strokeColor: successColor } = success;\n  return [successColor || presetPrimaryColors.green, strokeColor || null!];\n}\n\nexport const getSize = (\n  size: ProgressProps['size'],\n  type: ProgressProps['type'] | 'step',\n  extra?: {\n    steps?: number;\n    strokeWidth?: number;\n  },\n): { width: number; height: number } => {\n  let width = -1;\n  let height = -1;\n  if (type === 'step') {\n    const steps = extra!.steps!;\n    const strokeWidth = extra!.strokeWidth!;\n    if (typeof size === 'string' || typeof size === 'undefined') {\n      width = size === 'small' ? 2 : 14;\n      height = strokeWidth ?? 8;\n    } else if (typeof size === 'number') {\n      [width, height] = [size, size];\n    } else {\n      [width = 14, height = 8] = size;\n    }\n    width *= steps;\n  } else if (type === 'line') {\n    const strokeWidth = extra?.strokeWidth;\n    if (typeof size === 'string' || typeof size === 'undefined') {\n      height = strokeWidth || (size === 'small' ? 6 : 8);\n    } else if (typeof size === 'number') {\n      [width, height] = [size, size];\n    } else {\n      [width = -1, height = 8] = size;\n    }\n  } else if (type === 'circle' || type === 'dashboard') {\n    if (typeof size === 'string' || typeof size === 'undefined') {\n      [width, height] = size === 'small' ? [60, 60] : [120, 120];\n    } else if (typeof size === 'number') {\n      [width, height] = [size, size];\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        devWarning(\n          false,\n          'Progress',\n          'Type \"circle\" and \"dashboard\" do not accept array as `size`, please use number or preset size instead.',\n        );\n      }\n\n      width = size[0] ?? size[1] ?? 120;\n      height = size[0] ?? size[1] ?? 120;\n    }\n  }\n  return { width, height };\n};\n"
  },
  {
    "path": "components/qrcode/QRCode.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent, shallowRef, watch, computed, watchEffect } from 'vue';\nimport type { ImageSettings } from './interface';\nimport { qrProps } from './interface';\n\nimport qrcodegen from './qrcodegen';\n\ntype Modules = ReturnType<qrcodegen.QrCode['getModules']>;\ntype Excavation = { x: number; y: number; w: number; h: number };\n\nconst ERROR_LEVEL_MAP: { [index: string]: qrcodegen.QrCode.Ecc } = {\n  L: qrcodegen.QrCode.Ecc.LOW,\n  M: qrcodegen.QrCode.Ecc.MEDIUM,\n  Q: qrcodegen.QrCode.Ecc.QUARTILE,\n  H: qrcodegen.QrCode.Ecc.HIGH,\n};\n\nconst DEFAULT_SIZE = 128;\nconst DEFAULT_LEVEL = 'L';\nconst DEFAULT_BGCOLOR = '#FFFFFF';\nconst DEFAULT_FGCOLOR = '#000000';\nconst DEFAULT_INCLUDEMARGIN = false;\n\nconst SPEC_MARGIN_SIZE = 4;\nconst DEFAULT_MARGIN_SIZE = 0;\n\n// This is *very* rough estimate of max amount of QRCode allowed to be covered.\n// It is \"wrong\" in a lot of ways (area is a terrible way to estimate, it\n// really should be number of modules covered), but if for some reason we don't\n// get an explicit height or width, I'd rather default to something than throw.\nconst DEFAULT_IMG_SCALE = 0.1;\n\nfunction generatePath(modules: Modules, margin = 0): string {\n  const ops: Array<string> = [];\n  modules.forEach(function (row, y) {\n    let start: number | null = null;\n    row.forEach(function (cell, x) {\n      if (!cell && start !== null) {\n        // M0 0h7v1H0z injects the space with the move and drops the comma,\n        // saving a char per operation\n        ops.push(`M${start + margin} ${y + margin}h${x - start}v1H${start + margin}z`);\n        start = null;\n        return;\n      }\n\n      // end of row, clean up or skip\n      if (x === row.length - 1) {\n        if (!cell) {\n          // We would have closed the op above already so this can only mean\n          // 2+ light modules in a row.\n          return;\n        }\n        if (start === null) {\n          // Just a single dark module.\n          ops.push(`M${x + margin},${y + margin} h1v1H${x + margin}z`);\n        } else {\n          // Otherwise finish the current line.\n          ops.push(`M${start + margin},${y + margin} h${x + 1 - start}v1H${start + margin}z`);\n        }\n        return;\n      }\n\n      if (cell && start === null) {\n        start = x;\n      }\n    });\n  });\n  return ops.join('');\n}\n\n// We could just do this in generatePath, except that we want to support\n// non-Path2D canvas, so we need to keep it an explicit step.\nfunction excavateModules(modules: Modules, excavation: Excavation): Modules {\n  return modules.slice().map((row, y) => {\n    if (y < excavation.y || y >= excavation.y + excavation.h) {\n      return row;\n    }\n    return row.map((cell, x) => {\n      if (x < excavation.x || x >= excavation.x + excavation.w) {\n        return cell;\n      }\n      return false;\n    });\n  });\n}\n\nfunction getImageSettings(\n  cells: Modules,\n  size: number,\n  margin: number,\n  imageSettings?: ImageSettings,\n): null | {\n  x: number;\n  y: number;\n  h: number;\n  w: number;\n  excavation: Excavation | null;\n} {\n  if (imageSettings == null) {\n    return null;\n  }\n  const numCells = cells.length + margin * 2;\n  const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n  const scale = numCells / size;\n  const w = (imageSettings.width || defaultSize) * scale;\n  const h = (imageSettings.height || defaultSize) * scale;\n  const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n  const y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n\n  let excavation = null;\n  if (imageSettings.excavate) {\n    const floorX = Math.floor(x);\n    const floorY = Math.floor(y);\n    const ceilW = Math.ceil(w + x - floorX);\n    const ceilH = Math.ceil(h + y - floorY);\n    excavation = { x: floorX, y: floorY, w: ceilW, h: ceilH };\n  }\n\n  return { x, y, h, w, excavation };\n}\n\nfunction getMarginSize(includeMargin: boolean, marginSize?: number): number {\n  if (marginSize != null) {\n    return Math.floor(marginSize);\n  }\n  return includeMargin ? SPEC_MARGIN_SIZE : DEFAULT_MARGIN_SIZE;\n}\n\n// For canvas we're going to switch our drawing mode based on whether or not\n// the environment supports Path2D. We only need the constructor to be\n// supported, but Edge doesn't actually support the path (string) type\n// argument. Luckily it also doesn't support the addPath() method. We can\n// treat that as the same thing.\nconst SUPPORTS_PATH2D = (function () {\n  try {\n    new Path2D().addPath(new Path2D());\n  } catch (e) {\n    return false;\n  }\n  return true;\n})();\n\nexport const QRCodeCanvas = defineComponent({\n  name: 'QRCodeCanvas',\n  inheritAttrs: false,\n  props: { ...qrProps(), level: String, bgColor: String, fgColor: String, marginSize: Number },\n  setup(props, { attrs, expose }) {\n    const imgSrc = computed(() => props.imageSettings?.src);\n    const _canvas = shallowRef<HTMLCanvasElement>(null);\n    const _image = shallowRef<HTMLImageElement>(null);\n    const isImgLoaded = shallowRef(false);\n    expose({\n      toDataURL: (type?: string, quality?: any) => {\n        return _canvas.value?.toDataURL(type, quality);\n      },\n    });\n    watchEffect(\n      () => {\n        const {\n          value,\n          size = DEFAULT_SIZE,\n          level = DEFAULT_LEVEL,\n          bgColor = DEFAULT_BGCOLOR,\n          fgColor = DEFAULT_FGCOLOR,\n          includeMargin = DEFAULT_INCLUDEMARGIN,\n          marginSize,\n          imageSettings,\n        } = props;\n        if (_canvas.value != null) {\n          const canvas = _canvas.value;\n\n          const ctx = canvas.getContext('2d');\n          if (!ctx) {\n            return;\n          }\n\n          let cells = qrcodegen.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n          const margin = getMarginSize(includeMargin, marginSize);\n          const numCells = cells.length + margin * 2;\n          const calculatedImageSettings = getImageSettings(cells, size, margin, imageSettings);\n\n          const image = _image.value;\n          const haveImageToRender =\n            isImgLoaded.value &&\n            calculatedImageSettings != null &&\n            image !== null &&\n            image.complete &&\n            image.naturalHeight !== 0 &&\n            image.naturalWidth !== 0;\n\n          if (haveImageToRender) {\n            if (calculatedImageSettings.excavation != null) {\n              cells = excavateModules(cells, calculatedImageSettings.excavation);\n            }\n          }\n\n          // We're going to scale this so that the number of drawable units\n          // matches the number of cells. This avoids rounding issues, but does\n          // result in some potentially unwanted single pixel issues between\n          // blocks, only in environments that don't support Path2D.\n          const pixelRatio = window.devicePixelRatio || 1;\n          canvas.height = canvas.width = size * pixelRatio;\n          const scale = (size / numCells) * pixelRatio;\n          ctx.scale(scale, scale);\n\n          // Draw solid background, only paint dark modules.\n          ctx.fillStyle = bgColor;\n          ctx.fillRect(0, 0, numCells, numCells);\n\n          ctx.fillStyle = fgColor;\n          if (SUPPORTS_PATH2D) {\n            // $FlowFixMe: Path2D c'tor doesn't support args yet.\n            ctx.fill(new Path2D(generatePath(cells, margin)));\n          } else {\n            cells.forEach(function (row, rdx) {\n              row.forEach(function (cell, cdx) {\n                if (cell) {\n                  ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n                }\n              });\n            });\n          }\n\n          if (haveImageToRender) {\n            ctx.drawImage(\n              image,\n              calculatedImageSettings.x + margin,\n              calculatedImageSettings.y + margin,\n              calculatedImageSettings.w,\n              calculatedImageSettings.h,\n            );\n          }\n        }\n      },\n      { flush: 'post' },\n    );\n    watch(imgSrc, () => {\n      isImgLoaded.value = false;\n    });\n\n    return () => {\n      const size = props.size ?? DEFAULT_SIZE;\n      const canvasStyle = { height: `${size}px`, width: `${size}px` };\n\n      let img = null;\n      if (imgSrc.value != null) {\n        img = (\n          <img\n            src={imgSrc.value}\n            key={imgSrc.value}\n            style={{ display: 'none' }}\n            onLoad={() => {\n              isImgLoaded.value = true;\n            }}\n            ref={_image}\n          />\n        );\n      }\n      return (\n        <>\n          <canvas {...attrs} style={[canvasStyle, attrs.style as CSSProperties]} ref={_canvas} />\n          {img}\n        </>\n      );\n    };\n  },\n});\n\nexport const QRCodeSVG = defineComponent({\n  name: 'QRCodeSVG',\n  inheritAttrs: false,\n  props: {\n    ...qrProps(),\n    color: String,\n    level: String,\n    bgColor: String,\n    fgColor: String,\n    marginSize: Number,\n    title: String,\n  },\n  setup(props) {\n    let cells = null;\n    let margin = null;\n    let numCells = null;\n    let calculatedImageSettings = null;\n\n    let fgPath = null;\n    let image = null;\n\n    watchEffect(() => {\n      const {\n        value,\n        size = DEFAULT_SIZE,\n        level = DEFAULT_LEVEL,\n        includeMargin = DEFAULT_INCLUDEMARGIN,\n        marginSize,\n        imageSettings,\n      } = props;\n\n      cells = qrcodegen.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n\n      margin = getMarginSize(includeMargin, marginSize);\n      numCells = cells.length + margin * 2;\n      calculatedImageSettings = getImageSettings(cells, size, margin, imageSettings);\n\n      if (imageSettings != null && calculatedImageSettings != null) {\n        if (calculatedImageSettings.excavation != null) {\n          cells = excavateModules(cells, calculatedImageSettings.excavation);\n        }\n\n        image = (\n          <image\n            xlinkHref={imageSettings.src}\n            height={calculatedImageSettings.h}\n            width={calculatedImageSettings.w}\n            x={calculatedImageSettings.x + margin}\n            y={calculatedImageSettings.y + margin}\n            preserveAspectRatio=\"none\"\n          />\n        );\n      }\n\n      // Drawing strategy: instead of a rect per module, we're going to create a\n      // single path for the dark modules and layer that on top of a light rect,\n      // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\n      // way faster than DOM ops.\n      // For level 1, 441 nodes -> 2\n      // For level 40, 31329 -> 2\n      fgPath = generatePath(cells, margin);\n    });\n\n    return () => {\n      const bgColor = props.bgColor && DEFAULT_BGCOLOR;\n      const fgColor = props.fgColor && DEFAULT_FGCOLOR;\n      return (\n        <svg height={props.size} width={props.size} viewBox={`0 0 ${numCells} ${numCells}`}>\n          {!!props.title && <title>{props.title}</title>}\n          <path\n            fill={bgColor}\n            d={`M0,0 h${numCells}v${numCells}H0z`}\n            shape-rendering=\"crispEdges\"\n          />\n          <path fill={fgColor} d={fgPath} shape-rendering=\"crispEdges\" />\n          {image}\n        </svg>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/qrcode/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/qrcode/demo/base.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><input placeholder=\"-\" maxlength=\"60\" type=\"text\" class=\"ant-input\"></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/customColor.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 160px; height: 160px; background-color: rgb(245, 245, 245);\" class=\"ant-qrcode\">\n      <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/customSize.vue correctly 1`] = `\n<div class=\"ant-btn-group\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><span role=\"img\" aria-label=\"minus\" class=\"anticon anticon-minus\"><svg focusable=\"false\" data-icon=\"minus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"></path></svg><!----></span><span>small</span></button><button class=\"ant-btn ant-btn-default\" type=\"button\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\"></path></svg><!----></span><span>large</span></button></div>\n<br>\n<br>\n<div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n  <!----><canvas style=\"height: 134px; width: 134px;\"></canvas><img src=\"https://www.antdv.com/assets/logo.1ef800a8.svg\" style=\"display: none;\">\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/customType.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <!----><svg height=\"134\" width=\"134\" viewBox=\"0 0 25 25\">\n        <!---->\n        <path fill=\"#FFFFFF\" d=\"M0,0 h25v25H0z\" shape-rendering=\"crispEdges\"></path>\n        <path fill=\"#000000\" d=\"M0 0h7v1H0zM10 0h1v1H10zM13 0h2v1H13zM18,0 h7v1H18zM0 1h1v1H0zM6 1h1v1H6zM8 1h1v1H8zM11 1h1v1H11zM14 1h1v1H14zM18 1h1v1H18zM24,1 h1v1H24zM0 2h1v1H0zM2 2h3v1H2zM6 2h1v1H6zM9 2h2v1H9zM12 2h3v1H12zM18 2h1v1H18zM20 2h3v1H20zM24,2 h1v1H24zM0 3h1v1H0zM2 3h3v1H2zM6 3h1v1H6zM8 3h4v1H8zM13 3h1v1H13zM15 3h2v1H15zM18 3h1v1H18zM20 3h3v1H20zM24,3 h1v1H24zM0 4h1v1H0zM2 4h3v1H2zM6 4h1v1H6zM8 4h2v1H8zM11 4h4v1H11zM18 4h1v1H18zM20 4h3v1H20zM24,4 h1v1H24zM0 5h1v1H0zM6 5h1v1H6zM13 5h2v1H13zM16 5h1v1H16zM18 5h1v1H18zM24,5 h1v1H24zM0 6h7v1H0zM8 6h1v1H8zM10 6h1v1H10zM12 6h1v1H12zM14 6h1v1H14zM16 6h1v1H16zM18,6 h7v1H18zM8 7h1v1H8zM13 7h1v1H13zM15 7h2v1H15zM1 8h1v1H1zM3 8h4v1H3zM8 8h1v1H8zM10 8h1v1H10zM14 8h2v1H14zM17 8h2v1H17zM20 8h2v1H20zM23 8h1v1H23zM0 9h1v1H0zM3 9h1v1H3zM7 9h3v1H7zM11 9h1v1H11zM13 9h3v1H13zM17 9h1v1H17zM19 9h5v1H19zM0 10h1v1H0zM2 10h1v1H2zM5 10h2v1H5zM8 10h1v1H8zM11 10h1v1H11zM15 10h1v1H15zM18 10h2v1H18zM21 10h1v1H21zM24,10 h1v1H24zM1 11h1v1H1zM3 11h3v1H3zM7 11h2v1H7zM11 11h1v1H11zM14 11h1v1H14zM19 11h1v1H19zM21,11 h4v1H21zM1 12h4v1H1zM6 12h3v1H6zM11 12h8v1H11zM24,12 h1v1H24zM0 13h1v1H0zM3 13h1v1H3zM5 13h1v1H5zM7 13h1v1H7zM9 13h8v1H9zM20 13h1v1H20zM23 13h1v1H23zM0 14h2v1H0zM3 14h1v1H3zM5 14h2v1H5zM8 14h1v1H8zM13 14h5v1H13zM20,14 h5v1H20zM0 15h1v1H0zM2 15h3v1H2zM8 15h3v1H8zM12 15h3v1H12zM19 15h2v1H19zM22 15h1v1H22zM24,15 h1v1H24zM0 16h1v1H0zM5 16h2v1H5zM8 16h2v1H8zM11 16h1v1H11zM15 16h6v1H15zM22 16h2v1H22zM8 17h2v1H8zM12 17h5v1H12zM20 17h1v1H20zM23 17h1v1H23zM0 18h7v1H0zM10 18h1v1H10zM12 18h2v1H12zM16 18h1v1H16zM18 18h1v1H18zM20 18h2v1H20zM24,18 h1v1H24zM0 19h1v1H0zM6 19h1v1H6zM8 19h1v1H8zM11 19h1v1H11zM14 19h3v1H14zM20 19h1v1H20zM24,19 h1v1H24zM0 20h1v1H0zM2 20h3v1H2zM6 20h1v1H6zM8 20h2v1H8zM13 20h1v1H13zM15 20h7v1H15zM23,20 h2v1H23zM0 21h1v1H0zM2 21h3v1H2zM6 21h1v1H6zM8 21h2v1H8zM12 21h1v1H12zM14 21h1v1H14zM17 21h3v1H17zM21 21h1v1H21zM23,21 h2v1H23zM0 22h1v1H0zM2 22h3v1H2zM6 22h1v1H6zM9 22h2v1H9zM12 22h2v1H12zM16 22h2v1H16zM19 22h2v1H19zM22,22 h3v1H22zM0 23h1v1H0zM6 23h1v1H6zM8 23h3v1H8zM12 23h1v1H12zM14 23h1v1H14zM17 23h4v1H17zM22,23 h3v1H22zM0 24h7v1H0zM11 24h3v1H11zM16 24h1v1H16zM18 24h1v1H18zM21 24h1v1H21zM24,24 h1v1H24z\" shape-rendering=\"crispEdges\"></path>\n        <!---->\n      </svg>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/download.vue correctly 1`] = `\n<div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n  <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n  <!---->\n</div>\n<br>\n<br>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Downlaod</span>\n</button>\n`;\n\nexports[`renders ./components/qrcode/demo/errorLevel.vue correctly 1`] = `\n<div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n  <!----><canvas style=\"height: 134px; width: 134px;\"></canvas>\n  <!---->\n</div>\n<br>\n<br>\n<div class=\"ant-segmented \">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"L\">L</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"M\">M</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Q\">Q</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"H\">H</div>\n    </label>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/icon.vue correctly 1`] = `\n<div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n  <!----><canvas style=\"height: 134px; width: 134px;\"></canvas><img src=\"https://www.antdv.com/assets/logo.1ef800a8.svg\" style=\"display: none;\">\n</div>\n`;\n\nexports[`renders ./components/qrcode/demo/popover.vue correctly 1`] = `<img width=\"100\" height=\"100\" src=\"https://www.antdv.com/logo.png\">`;\n\nexports[`renders ./components/qrcode/demo/status.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <div class=\"ant-qrcode-mask\">\n        <div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n          <!---->\n        </div>\n        <!---->\n        <!---->\n      </div><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <div class=\"ant-qrcode-mask\">\n        <!---->\n        <p class=\"ant-qrcode-expired\">QR code expired</p><button class=\"ant-btn ant-btn-link\" type=\"button\"><span role=\"img\" aria-label=\"reload\" class=\"anticon anticon-reload\"><svg focusable=\"false\" data-icon=\"reload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\"></path></svg><!----></span><span>Refresh</span></button>\n        <!---->\n      </div><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 160px; height: 160px; background-color: transparent;\" class=\"ant-qrcode\">\n      <div class=\"ant-qrcode-mask\">\n        <!---->\n        <!---->\n        <p class=\"ant-qrcode-scanned\">Scanned</p>\n      </div><canvas style=\"height: 134px; width: 134px;\"></canvas>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/qrcode/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('qrcode');\n"
  },
  {
    "path": "components/qrcode/__tests__/index.test.js",
    "content": "import { ref } from 'vue';\nimport { mount } from '@vue/test-utils';\nimport QRCode from '..';\n\ndescribe('QRCode test', () => {\n  it('should correct render', () => {\n    const wrapper = mount({\n      render() {\n        return <QRCode value=\"test\" />;\n      },\n    });\n    expect(wrapper.find('.ant-qrcode')).toBeTruthy();\n    expect(wrapper.find('canvas')).toBeTruthy();\n    expect(wrapper).toMatchSnapshot();\n  });\n\n  it('support custom icon', () => {\n    const wrapper = mount({\n      render() {\n        return <QRCode value=\"test\" icon=\"test\" />;\n      },\n    });\n    expect(wrapper.find('.ant-qrcode')).toBeTruthy();\n    expect(wrapper.find('image')).toBeTruthy();\n  });\n\n  it('support custom size', () => {\n    const wrapper = mount({\n      render() {\n        return <QRCode value=\"test\" size={100} />;\n      },\n    });\n    expect(wrapper.vm.$el.style.width).toBe('100px');\n    expect(wrapper.vm.$el.style.height).toBe('100px');\n  });\n\n  it('support refresh', async () => {\n    const refresh = jest.fn();\n    const wrapper = mount({\n      render() {\n        return <QRCode value=\"test\" status=\"expired\" onRefresh={refresh} />;\n      },\n    });\n    await wrapper.find('.ant-btn-link').trigger('click');\n    expect(refresh).toHaveBeenCalled();\n  });\n\n  it('support loading', async () => {\n    const Demo = () => {\n      const status = ref('active');\n      const setStatus = val => (status.value = val);\n      return (\n        <>\n          <QRCode value=\"test\" status={status.value} />\n          <button type=\"button\" onClick={() => setStatus('loading')}>\n            set loading\n          </button>\n        </>\n      );\n    };\n    const wrapper = mount({\n      render() {\n        return <Demo />;\n      },\n    });\n    await wrapper.find('button').trigger('click');\n    expect(wrapper.find('.ant-spin-spinning')).toBeTruthy();\n  });\n\n  it('support bordered', () => {\n    const wrapper = mount({\n      render() {\n        return <QRCode value=\"test\" bordered={false} />;\n      },\n    });\n    expect(wrapper.vm.$el.__vnode.el.className).toContain('-borderless');\n  });\n\n  it('should console Error when icon exist && errorLevel is `L`', () => {\n    const errSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return <QRCode value=\"test\" icon=\"test\" errorLevel=\"L\" />;\n      },\n    });\n    expect(errSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: QRCode] ErrorLevel `L` is not recommended to be used with `icon`, for scanning result would be affected by low level.',\n    );\n    errSpy.mockRestore();\n  });\n});\n"
  },
  {
    "path": "components/qrcode/demo/base.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Base\n---\n\n## zh-CN\n\n基本用法。\n\n## en-US\nBasic Usage.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" align=\"center\">\n    <a-qrcode :value=\"text\" />\n    <a-input v-model:value=\"text\" placeholder=\"-\" :maxlength=\"60\" />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst text = ref('https://www.antdv.com/');\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/customColor.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义颜色\n  en-US: Custom Color\n---\n\n## zh-CN\n\n通过设置 `color` 自定义二维码颜色，通过设置 `style` 自定义背景颜色。\n\n## en-US\nCustom Color.\n</docs>\n\n<template>\n  <a-space>\n    <a-qrcode value=\"http://www.antdv.com\" :color=\"token.colorSuccessText\" />\n    <a-qrcode\n      value=\"http://www.antdv.com\"\n      :color=\"token.colorInfoText\"\n      :bg-color=\"token.colorBgLayout\"\n    />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { theme } from 'ant-design-vue';\n\nconst { useToken } = theme;\nconst { token } = useToken();\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/customSize.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义尺寸\n  en-US: Custom Size\n---\n\n## zh-CN\n\n自定义尺寸\n\n## en-US\nCustom Size.\n</docs>\n\n<template>\n  <a-button-group>\n    <a-button @click=\"decline\">\n      <template #icon><MinusOutlined /></template>\n      small\n    </a-button>\n    <a-button @click=\"increase\">\n      <template #icon><PlusOutlined /></template>\n      large\n    </a-button>\n  </a-button-group>\n  <br />\n  <br />\n  <a-qrcode\n    :size=\"size\"\n    :icon-size=\"size / 4\"\n    error-level=\"H\"\n    value=\"https://www.antdv.com\"\n    icon=\"https://www.antdv.com/assets/logo.1ef800a8.svg\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { MinusOutlined, PlusOutlined } from '@ant-design/icons-vue';\n\nconst size = ref(160);\nconst decline = () => {\n  size.value = size.value - 10;\n  if (size.value < 48) {\n    size.value = 48;\n  }\n};\nconst increase = () => {\n  size.value = size.value + 10;\n  if (size.value > 300) {\n    size.value = 300;\n  }\n};\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/customType.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义渲染类型\n  en-US: Custom Render Type\n---\n\n## zh-CN\n\n通过设置 `type` 自定义渲染结果，提供 `canvas` 和 `svg` 两个选项。\n\n## en-US\nCustomize the rendering results by `type`, provide options `canvas` and `svg`.\n</docs>\n\n<template>\n  <a-space>\n    <a-qrcode value=\"http://www.antdv.com\" type=\"canvas\" />\n    <a-qrcode value=\"http://www.antdv.com\" type=\"svg\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/qrcode/demo/download.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 下载二维码\n  en-US: Download QRCode\n---\n\n## zh-CN\n\n下载二维码的简单实现。\n\n## en-US\nA way to download QRCode.\n</docs>\n\n<template>\n  <a-qrcode ref=\"qrcodeCanvasRef\" value=\"http://www.antdv.com\" />\n  <br />\n  <br />\n  <a-button type=\"primary\" @click=\"dowloadChange\">Downlaod</a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst qrcodeCanvasRef = ref();\nconst dowloadChange = async () => {\n  const url = await qrcodeCanvasRef.value.toDataURL();\n  const a = document.createElement('a');\n  a.download = 'QRCode.png';\n  a.href = url;\n  document.body.appendChild(a);\n  a.click();\n  document.body.removeChild(a);\n};\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/errorLevel.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 纠错比例\n  en-US: Error Level\n---\n\n## zh-CN\n\n通过设置 errorLevel 调整不同的容错等级。\n\n## en-US\nset Error Level.\n</docs>\n\n<template>\n  <a-qrcode\n    :error-level=\"level\"\n    value=\"https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg\"\n  />\n  <br />\n  <br />\n  <a-segmented v-model:value=\"level\" :options=\"segmentedData\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst segmentedData = ['L', 'M', 'Q', 'H'];\nconst level = ref(segmentedData[0]);\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/icon.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 带 Icon 的例子\n  en-US: With Icon\n---\n\n## zh-CN\n\n带 Icon 的二维码。\n\n## en-US\nQRCode with Icon.\n</docs>\n\n<template>\n  <a-qrcode\n    error-level=\"H\"\n    value=\"https://www.antdv.com\"\n    icon=\"https://www.antdv.com/assets/logo.1ef800a8.svg\"\n  />\n</template>\n"
  },
  {
    "path": "components/qrcode/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Base />\n    <Icon />\n    <Status />\n    <CustomType />\n    <CustomSize />\n    <CustomColor />\n    <Download />\n    <ErrorLevel />\n    <Popover />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport Base from './base.vue';\nimport Icon from './icon.vue';\nimport Status from './status.vue';\nimport CustomSize from './customSize.vue';\nimport CustomColor from './customColor.vue';\nimport Download from './download.vue';\nimport ErrorLevel from './errorLevel.vue';\nimport Popover from './popover.vue';\nimport CustomType from './customType.vue';\n\nexport default defineComponent({\n  components: {\n    Base,\n    Icon,\n    Status,\n    CustomSize,\n    CustomColor,\n    Download,\n    ErrorLevel,\n    Popover,\n    CustomType,\n  },\n  category: 'Components',\n  subtitle: '二维码',\n  type: 'Data Display',\n  title: 'QRCode',\n  CN,\n  US,\n});\n</script>\n"
  },
  {
    "path": "components/qrcode/demo/popover.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 高级用法\n  en-US: Advanced Usage\n---\n\n## zh-CN\n\n带气泡卡片的例子。\n\n## en-US\nWith Popover.\n</docs>\n\n<template>\n  <a-popover :overlay-inner-style=\"{ padding: 0 }\">\n    <template #content>\n      <a-qrcode value=\"http://www.antdv.com\" :bordered=\"false\" />\n    </template>\n    <img width=\"100\" height=\"100\" src=\"https://www.antdv.com/logo.png\" />\n  </a-popover>\n</template>\n"
  },
  {
    "path": "components/qrcode/demo/status.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 不同的状态\n  en-US: other status\n---\n\n## zh-CN\n\n可以通过 status 的值控制二维码的状态，提供了 `active`、`expired`、`loading`、`scanned` 四个值。\n\n## en-US\nThe status can be controlled by the value `status`, four values ​​of `active`, `expired`, `loading`, `scanned` are provided.\n</docs>\n\n<template>\n  <a-space>\n    <a-qrcode value=\"http://www.antdv.com\" status=\"loading\" />\n    <a-qrcode\n      value=\"http://www.antdv.com\"\n      status=\"expired\"\n      @refresh=\"() => console.log('refresh')\"\n    />\n    <a-qrcode value=\"http://www.antdv.com\" status=\"scanned\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/qrcode/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: QRCode\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*cJopQrf0ncwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M4PBTZ_n9OgAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n## When To Use\n\nUsed when the link needs to be converted into a QR Code.\n\n## API\n\n| Property | Description | Type | Default | version |\n| --- | --- | --- | --- | --- |\n| value | scanned link | string | - |  |\n| type | render type | `'canvas'` \\| `'svg'` | `canvas` |  |\n| icon | include image url (only image link are supported) | string | - |  |\n| size | QRCode size | number | 128 |  |\n| iconSize | include image size | number | 32 |  |\n| color | QRCode Color | string | `#000` |  |\n| bgColor | QRCode Background Color | string | `transparent` |  |\n| bordered | Whether has border style | boolean | `true` |  |\n| errorLevel | Error Code Level | `'L'` \\| `'M'` \\| `'Q'` \\| `'H'` | `'M'` |  |\n| status | QRCode status | `active` \\| `expired` \\| `loading` \\| `scanned` | `active` | scanned: 4.0.9 |\n\n### events\n\n| Events Name | Description | Arguments    | Version |\n| ----------- | ----------- | ------------ | ------- |\n| refresh     | callback    | `() => void` | -       |\n\n## FAQ\n\n### About QRCode ErrorLevel\n\nThe ErrorLevel means that the QR code can be scanned normally after being blocked, and the maximum area that can be blocked is the error correction rate.\n\nGenerally, the QR code is divided into 4 error correction levels: Level `L` can correct about `7%` errors, Level `M` can correct about `15%` errors, Level `Q` can correct about `25%` errors, and Level `H` can correct about `30%` errors. When the content encoding of the QR code carries less information, in other words, when the value link is short, set different error correction levels, and the generated image will not change.\n\n> For more information, see the: [https://www.qrcode.com/en/about/error_correction](https://www.qrcode.com/en/about/error_correction.html)\n"
  },
  {
    "path": "components/qrcode/index.tsx",
    "content": "import { defineComponent, computed, ref } from 'vue';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nimport { useLocaleReceiver } from '../locale/LocaleReceiver';\nimport { withInstall } from '../_util/type';\nimport Spin from '../spin';\nimport Button from '../button';\nimport { ReloadOutlined } from '@ant-design/icons-vue';\nimport { useToken } from '../theme/internal';\nimport { QRCodeCanvas, QRCodeSVG } from './QRCode';\nimport warning from '../_util/warning';\nimport { qrcodeProps } from './interface';\n\nexport type QRCodeProps = Partial<ExtractPropTypes<ReturnType<typeof qrcodeProps>>>;\nconst QRCode = defineComponent({\n  name: 'AQrcode',\n  inheritAttrs: false,\n  props: qrcodeProps(),\n  emits: ['refresh'],\n  setup(props, { emit, attrs, expose }) {\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        !(props.icon && props.errorLevel === 'L'),\n        'QRCode',\n        'ErrorLevel `L` is not recommended to be used with `icon`, for scanning result would be affected by low level.',\n      );\n    }\n    const [locale] = useLocaleReceiver('QRCode');\n    const { prefixCls } = useConfigInject('qrcode', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const [, token] = useToken();\n    const qrCodeCanvas = ref();\n    expose({\n      toDataURL: (type?: string, quality?: any) => {\n        return qrCodeCanvas.value?.toDataURL(type, quality);\n      },\n    });\n    const qrCodeProps = computed(() => {\n      const {\n        value,\n        icon = '',\n        size = 160,\n        iconSize = 40,\n        color = token.value.colorText,\n        bgColor = 'transparent',\n        errorLevel = 'M',\n      } = props;\n      const imageSettings: QRCodeProps['imageSettings'] = {\n        src: icon,\n        x: undefined,\n        y: undefined,\n        height: iconSize,\n        width: iconSize,\n        excavate: true,\n      };\n      return {\n        value,\n        size: size - (token.value.paddingSM + token.value.lineWidth) * 2,\n        level: errorLevel,\n        bgColor,\n        fgColor: color,\n        imageSettings: icon ? imageSettings : undefined,\n      };\n    });\n    return () => {\n      const pre = prefixCls.value;\n      return wrapSSR(\n        <div\n          {...attrs}\n          style={[\n            attrs.style as CSSProperties,\n            {\n              width: `${props.size}px`,\n              height: `${props.size}px`,\n              backgroundColor: qrCodeProps.value.bgColor,\n            },\n          ]}\n          class={[\n            hashId.value,\n            pre,\n            {\n              [`${pre}-borderless`]: !props.bordered,\n            },\n          ]}\n        >\n          {props.status !== 'active' && (\n            <div class={`${pre}-mask`}>\n              {props.status === 'loading' && <Spin />}\n              {props.status === 'expired' && (\n                <>\n                  <p class={`${pre}-expired`}>{locale.value.expired}</p>\n                  <Button\n                    type=\"link\"\n                    onClick={e => emit('refresh', e)}\n                    v-slots={{ icon: () => <ReloadOutlined /> }}\n                  >\n                    {locale.value.refresh}\n                  </Button>\n                </>\n              )}\n              {props.status === 'scanned' && <p class={`${pre}-scanned`}>{locale.value.scanned}</p>}\n            </div>\n          )}\n          {props.type === 'canvas' ? (\n            <QRCodeCanvas ref={qrCodeCanvas} {...qrCodeProps.value} />\n          ) : (\n            <QRCodeSVG {...qrCodeProps.value} />\n          )}\n        </div>,\n      );\n    };\n  },\n});\nexport default withInstall(QRCode);\n"
  },
  {
    "path": "components/qrcode/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 二维码\ntype: 数据展示\ntitle: QRCode\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*cJopQrf0ncwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M4PBTZ_n9OgAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n## 何时使用\n\n当需要将链接转换成为二维码时使用。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | version |\n| --- | --- | --- | --- | --- |\n| value | 扫描后的地址 | string | - |  |\n| type | 渲染类型 | `'canvas'` \\| `'svg'` | `canvas` |  |\n| icon | 二维码中图片的地址（目前只支持图片地址） | string | - |  |\n| size | 二维码大小 | number | 160 |  |\n| iconSize | 二维码中图片的大小 | number | 40 |  |\n| color | 二维码颜色 | string | `#000` |  |\n| bgColor | 二维码背景颜色 | string | `transparent` |  |\n| bordered | 是否有边框 | boolean | `true` |  |\n| errorLevel | 二维码纠错等级 | `'L'` \\| `'M'` \\| `'Q'` \\| `'H'` | `'M'` |  |\n| status | 二维码状态 | `active` \\| `expired` \\| `loading` \\| `scanned` | `active` | scanned: 4.0.9 |\n\n### 事件\n\n| 事件名称 | 说明                 | 回调参数     | 版本 |\n| -------- | -------------------- | ------------ | ---- |\n| refresh  | 点击\"点击刷新\"的回调 | `() => void` | -    |\n\n## FAQ\n\n### 关于二维码纠错等级\n\n纠错等级也叫纠错率，就是指二维码可以被遮挡后还能正常扫描，而这个能被遮挡的最大面积就是纠错率。\n\n通常情况下二维码分为 4 个纠错级别：`L级` 可纠正约 `7%` 错误、`M级` 可纠正约 `15%` 错误、`Q级` 可纠正约 `25%` 错误、`H级` 可纠正约`30%` 错误。并不是所有位置都可以缺损，像最明显的三个角上的方框，直接影响初始定位。中间零散的部分是内容编码，可以容忍缺损。当二维码的内容编码携带信息比较少的时候，也就是链接比较短的时候，设置不同的纠错等级，生成的图片不会发生变化。\n\n> 有关更多信息，可参阅相关资料：[https://www.qrcode.com/zh/about/error_correction](https://www.qrcode.com/zh/about/error_correction.html)\n"
  },
  {
    "path": "components/qrcode/interface.ts",
    "content": "import { objectType, stringType } from '../_util/type';\n\nexport interface ImageSettings {\n  src: string;\n  height: number;\n  width: number;\n  excavate: boolean;\n  x?: number;\n  y?: number;\n}\nexport const qrProps = () => {\n  return {\n    size: { type: Number, default: 160 },\n    value: { type: String, required: true },\n    type: stringType<'canvas' | 'svg'>('canvas'),\n    color: String,\n    bgColor: String,\n    includeMargin: Boolean,\n    imageSettings: objectType<ImageSettings>(),\n  };\n};\n\nexport const qrcodeProps = () => {\n  return {\n    ...qrProps(),\n    errorLevel: stringType<'L' | 'M' | 'Q' | 'H'>('M'),\n\n    icon: String,\n    iconSize: { type: Number, default: 40 },\n\n    status: stringType<'active' | 'expired' | 'loading' | 'scanned'>('active'),\n    bordered: { type: Boolean, default: true },\n  };\n};\n\nexport interface QRCodeCanvasColor {\n  dark?: string; // 默认#000000ff\n  light?: string; // 默认#ffffffff\n}\n\nexport interface QRCodeCanvasOptions {\n  version?: number;\n  errorCorrectionLevel?: string; // 默认\"M\"\n  maskPattern?: number; // 遮罩符号的掩码图案\n  toSJISFunc?: Function; // 将汉字转换为其 Shift JIS 值的帮助程序函数\n  margin?: number;\n  scale?: number;\n  small?: boolean;\n  width: number;\n  color?: QRCodeCanvasColor;\n}\n"
  },
  {
    "path": "components/qrcode/qrcodegen.ts",
    "content": "/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-namespace */\n/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */\n\n'use strict';\n\nnamespace qrcodegen {\n  type bit = number;\n  type byte = number;\n  type int = number;\n\n  /*---- QR Code symbol class ----*/\n\n  /*\n   * A QR Code symbol, which is a type of two-dimension barcode.\n   * Invented by Denso Wave and described in the ISO/IEC 18004 standard.\n   * Instances of this class represent an immutable square grid of dark and light cells.\n   * The class provides static factory functions to create a QR Code from text or binary data.\n   * The class covers the QR Code Model 2 specification, supporting all versions (sizes)\n   * from 1 to 40, all 4 error correction levels, and 4 character encoding modes.\n   *\n   * Ways to create a QR Code object:\n   * - High level: Take the payload data and call QrCode.encodeText() or QrCode.encodeBinary().\n   * - Mid level: Custom-make the list of segments and call QrCode.encodeSegments().\n   * - Low level: Custom-make the array of data codeword bytes (including\n   *   segment headers and final padding, excluding error correction codewords),\n   *   supply the appropriate version number, and call the QrCode() constructor.\n   * (Note that all ways require supplying the desired error correction level.)\n   */\n  export class QrCode {\n    /*-- Static factory functions (high level) --*/\n\n    // Returns a QR Code representing the given Unicode text string at the given error correction level.\n    // As a conservative upper bound, this function is guaranteed to succeed for strings that have 738 or fewer\n    // Unicode code points (not UTF-16 code units) if the low error correction level is used. The smallest possible\n    // QR Code version is automatically chosen for the output. The ECC level of the result may be higher than the\n    // ecl argument if it can be done without increasing the version.\n    public static encodeText(text: string, ecl: QrCode.Ecc): QrCode {\n      const segs: Array<QrSegment> = qrcodegen.QrSegment.makeSegments(text);\n      return QrCode.encodeSegments(segs, ecl);\n    }\n\n    // Returns a QR Code representing the given binary data at the given error correction level.\n    // This function always encodes using the binary segment mode, not any text mode. The maximum number of\n    // bytes allowed is 2953. The smallest possible QR Code version is automatically chosen for the output.\n    // The ECC level of the result may be higher than the ecl argument if it can be done without increasing the version.\n    public static encodeBinary(data: Readonly<Array<byte>>, ecl: QrCode.Ecc): QrCode {\n      const seg: QrSegment = qrcodegen.QrSegment.makeBytes(data);\n      return QrCode.encodeSegments([seg], ecl);\n    }\n\n    /*-- Static factory functions (mid level) --*/\n\n    // Returns a QR Code representing the given segments with the given encoding parameters.\n    // The smallest possible QR Code version within the given range is automatically\n    // chosen for the output. Iff boostEcl is true, then the ECC level of the result\n    // may be higher than the ecl argument if it can be done without increasing the\n    // version. The mask number is either between 0 to 7 (inclusive) to force that\n    // mask, or -1 to automatically choose an appropriate mask (which may be slow).\n    // This function allows the user to create a custom sequence of segments that switches\n    // between modes (such as alphanumeric and byte) to encode text in less space.\n    // This is a mid-level API; the high-level API is encodeText() and encodeBinary().\n    public static encodeSegments(\n      segs: Readonly<Array<QrSegment>>,\n      ecl: QrCode.Ecc,\n      minVersion: int = 1,\n      maxVersion: int = 40,\n      mask: int = -1,\n      boostEcl = true,\n    ): QrCode {\n      if (\n        !(\n          QrCode.MIN_VERSION <= minVersion &&\n          minVersion <= maxVersion &&\n          maxVersion <= QrCode.MAX_VERSION\n        ) ||\n        mask < -1 ||\n        mask > 7\n      )\n        throw new RangeError('Invalid value');\n\n      // Find the minimal version number to use\n      let version: int;\n      let dataUsedBits: int;\n      for (version = minVersion; ; version++) {\n        const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8; // Number of data bits available\n        const usedBits: number = QrSegment.getTotalBits(segs, version);\n        if (usedBits <= dataCapacityBits) {\n          dataUsedBits = usedBits;\n          break; // This version number is found to be suitable\n        }\n        if (version >= maxVersion)\n          // All versions in the range could not fit the given data\n          throw new RangeError('Data too long');\n      }\n\n      // Increase the error correction level while the data still fits in the current version number\n      for (const newEcl of [QrCode.Ecc.MEDIUM, QrCode.Ecc.QUARTILE, QrCode.Ecc.HIGH]) {\n        // From low to high\n        if (boostEcl && dataUsedBits <= QrCode.getNumDataCodewords(version, newEcl) * 8)\n          ecl = newEcl;\n      }\n\n      // Concatenate all segments to create the data bit string\n      const bb: Array<bit> = [];\n      for (const seg of segs) {\n        appendBits(seg.mode.modeBits, 4, bb);\n        appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);\n        for (const b of seg.getData()) bb.push(b);\n      }\n      assert(bb.length == dataUsedBits);\n\n      // Add terminator and pad up to a byte if applicable\n      const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8;\n      assert(bb.length <= dataCapacityBits);\n      appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n      appendBits(0, (8 - (bb.length % 8)) % 8, bb);\n      assert(bb.length % 8 == 0);\n\n      // Pad with alternating bytes until data capacity is reached\n      for (let padByte = 0xec; bb.length < dataCapacityBits; padByte ^= 0xec ^ 0x11)\n        appendBits(padByte, 8, bb);\n\n      // Pack bits into bytes in big endian\n      const dataCodewords: Array<byte> = [];\n      while (dataCodewords.length * 8 < bb.length) dataCodewords.push(0);\n      bb.forEach((b: bit, i: int) => (dataCodewords[i >>> 3] |= b << (7 - (i & 7))));\n\n      // Create the QR Code object\n      return new QrCode(version, ecl, dataCodewords, mask);\n    }\n\n    /*-- Fields --*/\n\n    // The width and height of this QR Code, measured in modules, between\n    // 21 and 177 (inclusive). This is equal to version * 4 + 17.\n    public readonly size: int;\n\n    // The index of the mask pattern used in this QR Code, which is between 0 and 7 (inclusive).\n    // Even if a QR Code is created with automatic masking requested (mask = -1),\n    // the resulting object still has a mask value between 0 and 7.\n    public readonly mask: int;\n\n    // The modules of this QR Code (false = light, true = dark).\n    // Immutable after constructor finishes. Accessed through getModule().\n    private readonly modules: Array<Array<boolean>> = [];\n\n    // Indicates function modules that are not subjected to masking. Discarded when constructor finishes.\n    private readonly isFunction: Array<Array<boolean>> = [];\n\n    /*-- Constructor (low level) and fields --*/\n\n    // Creates a new QR Code with the given version number,\n    // error correction level, data codeword bytes, and mask number.\n    // This is a low-level API that most users should not use directly.\n    // A mid-level API is the encodeSegments() function.\n    public constructor(\n      // The version number of this QR Code, which is between 1 and 40 (inclusive).\n      // This determines the size of this barcode.\n      public readonly version: int,\n\n      // The error correction level used in this QR Code.\n      public readonly errorCorrectionLevel: QrCode.Ecc,\n\n      dataCodewords: Readonly<Array<byte>>,\n\n      msk: int,\n    ) {\n      // Check scalar arguments\n      if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION)\n        throw new RangeError('Version value out of range');\n      if (msk < -1 || msk > 7) throw new RangeError('Mask value out of range');\n      this.size = version * 4 + 17;\n\n      // Initialize both grids to be size*size arrays of Boolean false\n      const row: Array<boolean> = [];\n      for (let i = 0; i < this.size; i++) row.push(false);\n      for (let i = 0; i < this.size; i++) {\n        this.modules.push(row.slice()); // Initially all light\n        this.isFunction.push(row.slice());\n      }\n\n      // Compute ECC, draw modules\n      this.drawFunctionPatterns();\n      const allCodewords: Array<byte> = this.addEccAndInterleave(dataCodewords);\n      this.drawCodewords(allCodewords);\n\n      // Do masking\n      if (msk == -1) {\n        // Automatically choose best mask\n        let minPenalty: int = 1000000000;\n        for (let i = 0; i < 8; i++) {\n          this.applyMask(i);\n          this.drawFormatBits(i);\n          const penalty: int = this.getPenaltyScore();\n          if (penalty < minPenalty) {\n            msk = i;\n            minPenalty = penalty;\n          }\n          this.applyMask(i); // Undoes the mask due to XOR\n        }\n      }\n      assert(0 <= msk && msk <= 7);\n      this.mask = msk;\n      this.applyMask(msk); // Apply the final choice of mask\n      this.drawFormatBits(msk); // Overwrite old format bits\n\n      this.isFunction = [];\n    }\n\n    /*-- Accessor methods --*/\n\n    // Returns the color of the module (pixel) at the given coordinates, which is false\n    // for light or true for dark. The top left corner has the coordinates (x=0, y=0).\n    // If the given coordinates are out of bounds, then false (light) is returned.\n    public getModule(x: int, y: int): boolean {\n      return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x];\n    }\n\n    // Modified to expose modules for easy access\n    public getModules() {\n      return this.modules;\n    }\n\n    /*-- Private helper methods for constructor: Drawing function modules --*/\n\n    // Reads this object's version field, and draws and marks all function modules.\n    private drawFunctionPatterns(): void {\n      // Draw horizontal and vertical timing patterns\n      for (let i = 0; i < this.size; i++) {\n        this.setFunctionModule(6, i, i % 2 == 0);\n        this.setFunctionModule(i, 6, i % 2 == 0);\n      }\n\n      // Draw 3 finder patterns (all corners except bottom right; overwrites some timing modules)\n      this.drawFinderPattern(3, 3);\n      this.drawFinderPattern(this.size - 4, 3);\n      this.drawFinderPattern(3, this.size - 4);\n\n      // Draw numerous alignment patterns\n      const alignPatPos: Array<int> = this.getAlignmentPatternPositions();\n      const numAlign: int = alignPatPos.length;\n      for (let i = 0; i < numAlign; i++) {\n        for (let j = 0; j < numAlign; j++) {\n          // Don't draw on the three finder corners\n          if (\n            !((i == 0 && j == 0) || (i == 0 && j == numAlign - 1) || (i == numAlign - 1 && j == 0))\n          )\n            this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n        }\n      }\n\n      // Draw configuration data\n      this.drawFormatBits(0); // Dummy mask value; overwritten later in the constructor\n      this.drawVersion();\n    }\n\n    // Draws two copies of the format bits (with its own error correction code)\n    // based on the given mask and this object's error correction level field.\n    private drawFormatBits(mask: int): void {\n      // Calculate error correction code and pack bits\n      const data: int = (this.errorCorrectionLevel.formatBits << 3) | mask; // errCorrLvl is uint2, mask is uint3\n      let rem: int = data;\n      for (let i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537);\n      const bits = ((data << 10) | rem) ^ 0x5412; // uint15\n      assert(bits >>> 15 == 0);\n\n      // Draw first copy\n      for (let i = 0; i <= 5; i++) this.setFunctionModule(8, i, getBit(bits, i));\n      this.setFunctionModule(8, 7, getBit(bits, 6));\n      this.setFunctionModule(8, 8, getBit(bits, 7));\n      this.setFunctionModule(7, 8, getBit(bits, 8));\n      for (let i = 9; i < 15; i++) this.setFunctionModule(14 - i, 8, getBit(bits, i));\n\n      // Draw second copy\n      for (let i = 0; i < 8; i++) this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n      for (let i = 8; i < 15; i++) this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n      this.setFunctionModule(8, this.size - 8, true); // Always dark\n    }\n\n    // Draws two copies of the version bits (with its own error correction code),\n    // based on this object's version field, iff 7 <= version <= 40.\n    private drawVersion(): void {\n      if (this.version < 7) return;\n\n      // Calculate error correction code and pack bits\n      let rem: int = this.version; // version is uint6, in the range [7, 40]\n      for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);\n      const bits: int = (this.version << 12) | rem; // uint18\n      assert(bits >>> 18 == 0);\n\n      // Draw two copies\n      for (let i = 0; i < 18; i++) {\n        const color: boolean = getBit(bits, i);\n        const a: int = this.size - 11 + (i % 3);\n        const b: int = Math.floor(i / 3);\n        this.setFunctionModule(a, b, color);\n        this.setFunctionModule(b, a, color);\n      }\n    }\n\n    // Draws a 9*9 finder pattern including the border separator,\n    // with the center module at (x, y). Modules can be out of bounds.\n    private drawFinderPattern(x: int, y: int): void {\n      for (let dy = -4; dy <= 4; dy++) {\n        for (let dx = -4; dx <= 4; dx++) {\n          const dist: int = Math.max(Math.abs(dx), Math.abs(dy)); // Chebyshev/infinity norm\n          const xx: int = x + dx;\n          const yy: int = y + dy;\n          if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n            this.setFunctionModule(xx, yy, dist != 2 && dist != 4);\n        }\n      }\n    }\n\n    // Draws a 5*5 alignment pattern, with the center module\n    // at (x, y). All modules must be in bounds.\n    private drawAlignmentPattern(x: int, y: int): void {\n      for (let dy = -2; dy <= 2; dy++) {\n        for (let dx = -2; dx <= 2; dx++)\n          this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1);\n      }\n    }\n\n    // Sets the color of a module and marks it as a function module.\n    // Only used by the constructor. Coordinates must be in bounds.\n    private setFunctionModule(x: int, y: int, isDark: boolean): void {\n      this.modules[y][x] = isDark;\n      this.isFunction[y][x] = true;\n    }\n\n    /*-- Private helper methods for constructor: Codewords and masking --*/\n\n    // Returns a new byte string representing the given data with the appropriate error correction\n    // codewords appended to it, based on this object's version and error correction level.\n    private addEccAndInterleave(data: Readonly<Array<byte>>): Array<byte> {\n      const ver: int = this.version;\n      const ecl: QrCode.Ecc = this.errorCorrectionLevel;\n      if (data.length != QrCode.getNumDataCodewords(ver, ecl))\n        throw new RangeError('Invalid argument');\n\n      // Calculate parameter numbers\n      const numBlocks: int = QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n      const blockEccLen: int = QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];\n      const rawCodewords: int = Math.floor(QrCode.getNumRawDataModules(ver) / 8);\n      const numShortBlocks: int = numBlocks - (rawCodewords % numBlocks);\n      const shortBlockLen: int = Math.floor(rawCodewords / numBlocks);\n\n      // Split data into blocks and append ECC to each block\n      const blocks: Array<Array<byte>> = [];\n      const rsDiv: Array<byte> = QrCode.reedSolomonComputeDivisor(blockEccLen);\n      for (let i = 0, k = 0; i < numBlocks; i++) {\n        const dat: Array<byte> = data.slice(\n          k,\n          k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1),\n        );\n        k += dat.length;\n        const ecc: Array<byte> = QrCode.reedSolomonComputeRemainder(dat, rsDiv);\n        if (i < numShortBlocks) dat.push(0);\n        blocks.push(dat.concat(ecc));\n      }\n\n      // Interleave (not concatenate) the bytes from every block into a single sequence\n      const result: Array<byte> = [];\n      for (let i = 0; i < blocks[0].length; i++) {\n        blocks.forEach((block, j) => {\n          // Skip the padding byte in short blocks\n          if (i != shortBlockLen - blockEccLen || j >= numShortBlocks) result.push(block[i]);\n        });\n      }\n      assert(result.length == rawCodewords);\n      return result;\n    }\n\n    // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire\n    // data area of this QR Code. Function modules need to be marked off before this is called.\n    private drawCodewords(data: Readonly<Array<byte>>): void {\n      if (data.length != Math.floor(QrCode.getNumRawDataModules(this.version) / 8))\n        throw new RangeError('Invalid argument');\n      let i: int = 0; // Bit index into the data\n      // Do the funny zigzag scan\n      for (let right = this.size - 1; right >= 1; right -= 2) {\n        // Index of right column in each column pair\n        if (right == 6) right = 5;\n        for (let vert = 0; vert < this.size; vert++) {\n          // Vertical counter\n          for (let j = 0; j < 2; j++) {\n            const x: int = right - j; // Actual x coordinate\n            const upward: boolean = ((right + 1) & 2) == 0;\n            const y: int = upward ? this.size - 1 - vert : vert; // Actual y coordinate\n            if (!this.isFunction[y][x] && i < data.length * 8) {\n              this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n              i++;\n            }\n            // If this QR Code has any remainder bits (0 to 7), they were assigned as\n            // 0/false/light by the constructor and are left unchanged by this method\n          }\n        }\n      }\n      assert(i == data.length * 8);\n    }\n\n    // XORs the codeword modules in this QR Code with the given mask pattern.\n    // The function modules must be marked and the codeword bits must be drawn\n    // before masking. Due to the arithmetic of XOR, calling applyMask() with\n    // the same mask value a second time will undo the mask. A final well-formed\n    // QR Code needs exactly one (not zero, two, etc.) mask applied.\n    private applyMask(mask: int): void {\n      if (mask < 0 || mask > 7) throw new RangeError('Mask value out of range');\n      for (let y = 0; y < this.size; y++) {\n        for (let x = 0; x < this.size; x++) {\n          let invert: boolean;\n          switch (mask) {\n            case 0:\n              invert = (x + y) % 2 == 0;\n              break;\n            case 1:\n              invert = y % 2 == 0;\n              break;\n            case 2:\n              invert = x % 3 == 0;\n              break;\n            case 3:\n              invert = (x + y) % 3 == 0;\n              break;\n            case 4:\n              invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0;\n              break;\n            case 5:\n              invert = ((x * y) % 2) + ((x * y) % 3) == 0;\n              break;\n            case 6:\n              invert = (((x * y) % 2) + ((x * y) % 3)) % 2 == 0;\n              break;\n            case 7:\n              invert = (((x + y) % 2) + ((x * y) % 3)) % 2 == 0;\n              break;\n            default:\n              throw new Error('Unreachable');\n          }\n          if (!this.isFunction[y][x] && invert) this.modules[y][x] = !this.modules[y][x];\n        }\n      }\n    }\n\n    // Calculates and returns the penalty score based on state of this QR Code's current modules.\n    // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.\n    private getPenaltyScore(): int {\n      let result: int = 0;\n\n      // Adjacent modules in row having same color, and finder-like patterns\n      for (let y = 0; y < this.size; y++) {\n        let runColor = false;\n        let runX = 0;\n        const runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let x = 0; x < this.size; x++) {\n          if (this.modules[y][x] == runColor) {\n            runX++;\n            if (runX == 5) result += QrCode.PENALTY_N1;\n            else if (runX > 5) result++;\n          } else {\n            this.finderPenaltyAddHistory(runX, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runX = 1;\n          }\n        }\n        result +=\n          this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * QrCode.PENALTY_N3;\n      }\n      // Adjacent modules in column having same color, and finder-like patterns\n      for (let x = 0; x < this.size; x++) {\n        let runColor = false;\n        let runY = 0;\n        const runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let y = 0; y < this.size; y++) {\n          if (this.modules[y][x] == runColor) {\n            runY++;\n            if (runY == 5) result += QrCode.PENALTY_N1;\n            else if (runY > 5) result++;\n          } else {\n            this.finderPenaltyAddHistory(runY, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runY = 1;\n          }\n        }\n        result +=\n          this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * QrCode.PENALTY_N3;\n      }\n\n      // 2*2 blocks of modules having same color\n      for (let y = 0; y < this.size - 1; y++) {\n        for (let x = 0; x < this.size - 1; x++) {\n          const color: boolean = this.modules[y][x];\n          if (\n            color == this.modules[y][x + 1] &&\n            color == this.modules[y + 1][x] &&\n            color == this.modules[y + 1][x + 1]\n          )\n            result += QrCode.PENALTY_N2;\n        }\n      }\n\n      // Balance of dark and light modules\n      let dark: int = 0;\n      for (const row of this.modules)\n        dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n      const total: int = this.size * this.size; // Note that size is odd, so dark/total != 1/2\n      // Compute the smallest integer k >= 0 such that (45-5k)% <= dark/total <= (55+5k)%\n      const k: int = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n      assert(0 <= k && k <= 9);\n      result += k * QrCode.PENALTY_N4;\n      assert(0 <= result && result <= 2568888); // Non-tight upper bound based on default values of PENALTY_N1, ..., N4\n      return result;\n    }\n\n    /*-- Private helper functions --*/\n\n    // Returns an ascending list of positions of alignment patterns for this version number.\n    // Each position is in the range [0,177), and are used on both the x and y axes.\n    // This could be implemented as lookup table of 40 variable-length lists of integers.\n    private getAlignmentPatternPositions(): Array<int> {\n      if (this.version == 1) return [];\n      else {\n        const numAlign: int = Math.floor(this.version / 7) + 2;\n        const step: int =\n          this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n        const result: Array<int> = [6];\n        for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n          result.splice(1, 0, pos);\n        return result;\n      }\n    }\n\n    // Returns the number of data bits that can be stored in a QR Code of the given version number, after\n    // all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8.\n    // The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table.\n    private static getNumRawDataModules(ver: int): int {\n      if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION)\n        throw new RangeError('Version number out of range');\n      let result: int = (16 * ver + 128) * ver + 64;\n      if (ver >= 2) {\n        const numAlign: int = Math.floor(ver / 7) + 2;\n        result -= (25 * numAlign - 10) * numAlign - 55;\n        if (ver >= 7) result -= 36;\n      }\n      assert(208 <= result && result <= 29648);\n      return result;\n    }\n\n    // Returns the number of 8-bit data (i.e. not error correction) codewords contained in any\n    // QR Code of the given version number and error correction level, with remainder bits discarded.\n    // This stateless pure function could be implemented as a (40*4)-cell lookup table.\n    private static getNumDataCodewords(ver: int, ecl: QrCode.Ecc): int {\n      return (\n        Math.floor(QrCode.getNumRawDataModules(ver) / 8) -\n        QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] *\n          QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]\n      );\n    }\n\n    // Returns a Reed-Solomon ECC generator polynomial for the given degree. This could be\n    // implemented as a lookup table over all possible parameter values, instead of as an algorithm.\n    private static reedSolomonComputeDivisor(degree: int): Array<byte> {\n      if (degree < 1 || degree > 255) throw new RangeError('Degree out of range');\n      // Polynomial coefficients are stored from highest to lowest power, excluding the leading term which is always 1.\n      // For example the polynomial x^3 + 255x^2 + 8x + 93 is stored as the uint8 array [255, 8, 93].\n      const result: Array<byte> = [];\n      for (let i = 0; i < degree - 1; i++) result.push(0);\n      result.push(1); // Start off with the monomial x^0\n\n      // Compute the product polynomial (x - r^0) * (x - r^1) * (x - r^2) * ... * (x - r^{degree-1}),\n      // and drop the highest monomial term which is always 1x^degree.\n      // Note that r = 0x02, which is a generator element of this field GF(2^8/0x11D).\n      let root = 1;\n      for (let i = 0; i < degree; i++) {\n        // Multiply the current product by (x - r^i)\n        for (let j = 0; j < result.length; j++) {\n          result[j] = QrCode.reedSolomonMultiply(result[j], root);\n          if (j + 1 < result.length) result[j] ^= result[j + 1];\n        }\n        root = QrCode.reedSolomonMultiply(root, 0x02);\n      }\n      return result;\n    }\n\n    // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials.\n    private static reedSolomonComputeRemainder(\n      data: Readonly<Array<byte>>,\n      divisor: Readonly<Array<byte>>,\n    ): Array<byte> {\n      const result: Array<byte> = divisor.map(_ => 0);\n      for (const b of data) {\n        // Polynomial division\n        const factor: byte = b ^ (result.shift() as byte);\n        result.push(0);\n        divisor.forEach((coef, i) => (result[i] ^= QrCode.reedSolomonMultiply(coef, factor)));\n      }\n      return result;\n    }\n\n    // Returns the product of the two given field elements modulo GF(2^8/0x11D). The arguments and result\n    // are unsigned 8-bit integers. This could be implemented as a lookup table of 256*256 entries of uint8.\n    private static reedSolomonMultiply(x: byte, y: byte): byte {\n      if (x >>> 8 != 0 || y >>> 8 != 0) throw new RangeError('Byte out of range');\n      // Russian peasant multiplication\n      let z: int = 0;\n      for (let i = 7; i >= 0; i--) {\n        z = (z << 1) ^ ((z >>> 7) * 0x11d);\n        z ^= ((y >>> i) & 1) * x;\n      }\n      assert(z >>> 8 == 0);\n      return z as byte;\n    }\n\n    // Can only be called immediately after a light run is added, and\n    // returns either 0, 1, or 2. A helper function for getPenaltyScore().\n    private finderPenaltyCountPatterns(runHistory: Readonly<Array<int>>): int {\n      const n: int = runHistory[1];\n      assert(n <= this.size * 3);\n      const core: boolean =\n        n > 0 &&\n        runHistory[2] == n &&\n        runHistory[3] == n * 3 &&\n        runHistory[4] == n &&\n        runHistory[5] == n;\n      return (\n        (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) +\n        (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0)\n      );\n    }\n\n    // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().\n    private finderPenaltyTerminateAndCount(\n      currentRunColor: boolean,\n      currentRunLength: int,\n      runHistory: Array<int>,\n    ): int {\n      if (currentRunColor) {\n        // Terminate dark run\n        this.finderPenaltyAddHistory(currentRunLength, runHistory);\n        currentRunLength = 0;\n      }\n      currentRunLength += this.size; // Add light border to final run\n      this.finderPenaltyAddHistory(currentRunLength, runHistory);\n      return this.finderPenaltyCountPatterns(runHistory);\n    }\n\n    // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().\n    private finderPenaltyAddHistory(currentRunLength: int, runHistory: Array<int>): void {\n      if (runHistory[0] == 0) currentRunLength += this.size; // Add light border to initial run\n      runHistory.pop();\n      runHistory.unshift(currentRunLength);\n    }\n\n    /*-- Constants and tables --*/\n\n    // The minimum version number supported in the QR Code Model 2 standard.\n    public static readonly MIN_VERSION: int = 1;\n    // The maximum version number supported in the QR Code Model 2 standard.\n    public static readonly MAX_VERSION: int = 40;\n\n    // For use in getPenaltyScore(), when evaluating which mask is best.\n    private static readonly PENALTY_N1: int = 3;\n    private static readonly PENALTY_N2: int = 3;\n    private static readonly PENALTY_N3: int = 40;\n    private static readonly PENALTY_N4: int = 10;\n\n    private static readonly ECC_CODEWORDS_PER_BLOCK: Array<Array<int>> = [\n      // Version: (note that index 0 is for padding, and is set to an illegal value)\n      //0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n      [\n        -1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28,\n        30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n      ], // Low\n      [\n        -1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28,\n        28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n      ], // Medium\n      [\n        -1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30,\n        30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n      ], // Quartile\n      [\n        -1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24,\n        30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n      ], // High\n    ];\n\n    private static readonly NUM_ERROR_CORRECTION_BLOCKS: Array<Array<int>> = [\n      // Version: (note that index 0 is for padding, and is set to an illegal value)\n      //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n      [\n        -1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13,\n        14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25,\n      ], // Low\n      [\n        -1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21,\n        23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49,\n      ], // Medium\n      [\n        -1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29,\n        34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68,\n      ], // Quartile\n      [\n        -1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32,\n        35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81,\n      ], // High\n    ];\n  }\n\n  // Appends the given number of low-order bits of the given value\n  // to the given buffer. Requires 0 <= len <= 31 and 0 <= val < 2^len.\n  function appendBits(val: int, len: int, bb: Array<bit>): void {\n    if (len < 0 || len > 31 || val >>> len != 0) throw new RangeError('Value out of range');\n    for (\n      let i = len - 1;\n      i >= 0;\n      i-- // Append bit by bit\n    )\n      bb.push((val >>> i) & 1);\n  }\n\n  // Returns true iff the i'th bit of x is set to 1.\n  function getBit(x: int, i: int): boolean {\n    return ((x >>> i) & 1) != 0;\n  }\n\n  // Throws an exception if the given condition is false.\n  function assert(cond: boolean): void {\n    if (!cond) throw new Error('Assertion error');\n  }\n\n  /*---- Data segment class ----*/\n\n  /*\n   * A segment of character/binary/control data in a QR Code symbol.\n   * Instances of this class are immutable.\n   * The mid-level way to create a segment is to take the payload data\n   * and call a static factory function such as QrSegment.makeNumeric().\n   * The low-level way to create a segment is to custom-make the bit buffer\n   * and call the QrSegment() constructor with appropriate values.\n   * This segment class imposes no length restrictions, but QR Codes have restrictions.\n   * Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.\n   * Any segment longer than this is meaningless for the purpose of generating QR Codes.\n   */\n  export class QrSegment {\n    /*-- Static factory functions (mid level) --*/\n\n    // Returns a segment representing the given binary data encoded in\n    // byte mode. All input byte arrays are acceptable. Any text string\n    // can be converted to UTF-8 bytes and encoded as a byte mode segment.\n    public static makeBytes(data: Readonly<Array<byte>>): QrSegment {\n      const bb: Array<bit> = [];\n      for (const b of data) appendBits(b, 8, bb);\n      return new QrSegment(QrSegment.Mode.BYTE, data.length, bb);\n    }\n\n    // Returns a segment representing the given string of decimal digits encoded in numeric mode.\n    public static makeNumeric(digits: string): QrSegment {\n      if (!QrSegment.isNumeric(digits))\n        throw new RangeError('String contains non-numeric characters');\n      const bb: Array<bit> = [];\n      for (let i = 0; i < digits.length; ) {\n        // Consume up to 3 digits per iteration\n        const n: int = Math.min(digits.length - i, 3);\n        appendBits(parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb);\n        i += n;\n      }\n      return new QrSegment(QrSegment.Mode.NUMERIC, digits.length, bb);\n    }\n\n    // Returns a segment representing the given text string encoded in alphanumeric mode.\n    // The characters allowed are: 0 to 9, A to Z (uppercase only), space,\n    // dollar, percent, asterisk, plus, hyphen, period, slash, colon.\n    public static makeAlphanumeric(text: string): QrSegment {\n      if (!QrSegment.isAlphanumeric(text))\n        throw new RangeError('String contains unencodable characters in alphanumeric mode');\n      const bb: Array<bit> = [];\n      let i: int;\n      for (i = 0; i + 2 <= text.length; i += 2) {\n        // Process groups of 2\n        let temp: int = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n        temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n        appendBits(temp, 11, bb);\n      }\n      if (i < text.length)\n        // 1 character remaining\n        appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n      return new QrSegment(QrSegment.Mode.ALPHANUMERIC, text.length, bb);\n    }\n\n    // Returns a new mutable list of zero or more segments to represent the given Unicode text string.\n    // The result may use various segment modes and switch modes to optimize the length of the bit stream.\n    public static makeSegments(text: string): Array<QrSegment> {\n      // Select the most efficient segment encoding automatically\n      if (text == '') return [];\n      else if (QrSegment.isNumeric(text)) return [QrSegment.makeNumeric(text)];\n      else if (QrSegment.isAlphanumeric(text)) return [QrSegment.makeAlphanumeric(text)];\n      else return [QrSegment.makeBytes(QrSegment.toUtf8ByteArray(text))];\n    }\n\n    // Returns a segment representing an Extended Channel Interpretation\n    // (ECI) designator with the given assignment value.\n    public static makeEci(assignVal: int): QrSegment {\n      const bb: Array<bit> = [];\n      if (assignVal < 0) throw new RangeError('ECI assignment value out of range');\n      else if (assignVal < 1 << 7) appendBits(assignVal, 8, bb);\n      else if (assignVal < 1 << 14) {\n        appendBits(0b10, 2, bb);\n        appendBits(assignVal, 14, bb);\n      } else if (assignVal < 1000000) {\n        appendBits(0b110, 3, bb);\n        appendBits(assignVal, 21, bb);\n      } else throw new RangeError('ECI assignment value out of range');\n      return new QrSegment(QrSegment.Mode.ECI, 0, bb);\n    }\n\n    // Tests whether the given string can be encoded as a segment in numeric mode.\n    // A string is encodable iff each character is in the range 0 to 9.\n    public static isNumeric(text: string): boolean {\n      return QrSegment.NUMERIC_REGEX.test(text);\n    }\n\n    // Tests whether the given string can be encoded as a segment in alphanumeric mode.\n    // A string is encodable iff each character is in the following set: 0 to 9, A to Z\n    // (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.\n    public static isAlphanumeric(text: string): boolean {\n      return QrSegment.ALPHANUMERIC_REGEX.test(text);\n    }\n\n    /*-- Constructor (low level) and fields --*/\n\n    // Creates a new QR Code segment with the given attributes and data.\n    // The character count (numChars) must agree with the mode and the bit buffer length,\n    // but the constraint isn't checked. The given bit buffer is cloned and stored.\n    public constructor(\n      // The mode indicator of this segment.\n      public readonly mode: QrSegment.Mode,\n\n      // The length of this segment's unencoded data. Measured in characters for\n      // numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.\n      // Always zero or positive. Not the same as the data's bit length.\n      public readonly numChars: int,\n\n      // The data bits of this segment. Accessed through getData().\n      private readonly bitData: Array<bit>,\n    ) {\n      if (numChars < 0) throw new RangeError('Invalid argument');\n      this.bitData = bitData.slice(); // Make defensive copy\n    }\n\n    /*-- Methods --*/\n\n    // Returns a new copy of the data bits of this segment.\n    public getData(): Array<bit> {\n      return this.bitData.slice(); // Make defensive copy\n    }\n\n    // (Package-private) Calculates and returns the number of bits needed to encode the given segments at\n    // the given version. The result is infinity if a segment has too many characters to fit its length field.\n    public static getTotalBits(segs: Readonly<Array<QrSegment>>, version: int): number {\n      let result = 0;\n      for (const seg of segs) {\n        const ccbits: int = seg.mode.numCharCountBits(version);\n        if (seg.numChars >= 1 << ccbits) return Infinity; // The segment's length doesn't fit the field's bit width\n        result += 4 + ccbits + seg.bitData.length;\n      }\n      return result;\n    }\n\n    // Returns a new array of bytes representing the given string encoded in UTF-8.\n    private static toUtf8ByteArray(str: string): Array<byte> {\n      str = encodeURI(str);\n      const result: Array<byte> = [];\n      for (let i = 0; i < str.length; i++) {\n        if (str.charAt(i) != '%') result.push(str.charCodeAt(i));\n        else {\n          result.push(parseInt(str.substring(i + 1, i + 3), 16));\n          i += 2;\n        }\n      }\n      return result;\n    }\n\n    /*-- Constants --*/\n\n    // Describes precisely all strings that are encodable in numeric mode.\n    private static readonly NUMERIC_REGEX: RegExp = /^[0-9]*$/;\n\n    // Describes precisely all strings that are encodable in alphanumeric mode.\n    private static readonly ALPHANUMERIC_REGEX: RegExp = /^[A-Z0-9 $%*+.\\/:-]*$/;\n\n    // The set of all legal characters in alphanumeric mode,\n    // where each character value maps to the index in the string.\n    private static readonly ALPHANUMERIC_CHARSET: string =\n      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\n  }\n}\n\n/*---- Public helper enumeration ----*/\n\nnamespace qrcodegen.QrCode {\n  type int = number;\n\n  /*\n   * The error correction level in a QR Code symbol. Immutable.\n   */\n  export class Ecc {\n    /*-- Constants --*/\n\n    public static readonly LOW = new Ecc(0, 1); // The QR Code can tolerate about  7% erroneous codewords\n    public static readonly MEDIUM = new Ecc(1, 0); // The QR Code can tolerate about 15% erroneous codewords\n    public static readonly QUARTILE = new Ecc(2, 3); // The QR Code can tolerate about 25% erroneous codewords\n    public static readonly HIGH = new Ecc(3, 2); // The QR Code can tolerate about 30% erroneous codewords\n\n    /*-- Constructor and fields --*/\n\n    private constructor(\n      // In the range 0 to 3 (unsigned 2-bit integer).\n      public readonly ordinal: int,\n      // (Package-private) In the range 0 to 3 (unsigned 2-bit integer).\n      public readonly formatBits: int,\n    ) {}\n  }\n}\n\n/*---- Public helper enumeration ----*/\n\nnamespace qrcodegen.QrSegment {\n  type int = number;\n\n  /*\n   * Describes how a segment's data bits are interpreted. Immutable.\n   */\n  export class Mode {\n    /*-- Constants --*/\n\n    public static readonly NUMERIC = new Mode(0x1, [10, 12, 14]);\n    public static readonly ALPHANUMERIC = new Mode(0x2, [9, 11, 13]);\n    public static readonly BYTE = new Mode(0x4, [8, 16, 16]);\n    public static readonly KANJI = new Mode(0x8, [8, 10, 12]);\n    public static readonly ECI = new Mode(0x7, [0, 0, 0]);\n\n    /*-- Constructor and fields --*/\n\n    private constructor(\n      // The mode indicator bits, which is a uint4 value (range 0 to 15).\n      public readonly modeBits: int,\n      // Number of character count bits for three different version ranges.\n      private readonly numBitsCharCount: [int, int, int],\n    ) {}\n\n    /*-- Method --*/\n\n    // (Package-private) Returns the bit width of the character count field for a segment in\n    // this mode in a QR Code at the given version number. The result is in the range [0, 16].\n    public numCharCountBits(ver: int): int {\n      return this.numBitsCharCount[Math.floor((ver + 7) / 17)];\n    }\n  }\n}\n\n// Modification to export for actual use\nexport default qrcodegen;\n"
  },
  {
    "path": "components/qrcode/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { mergeToken, genComponentStyleHook } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface QRCodeToken extends FullToken<'QRCode'> {\n  QRCodeTextColor: string;\n  QRCodeMaskBackgroundColor: string;\n}\n\nconst genQRCodeStyle: GenerateStyle<QRCodeToken> = token => {\n  const { componentCls } = token;\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      display: 'flex',\n      justifyContent: 'center',\n      alignItems: 'center',\n      padding: token.paddingSM,\n      backgroundColor: token.colorWhite,\n      borderRadius: token.borderRadiusLG,\n      border: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n      position: 'relative',\n      width: '100%',\n      height: '100%',\n      overflow: 'hidden',\n      [`& > ${componentCls}-mask`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        zIndex: 10,\n        display: 'flex',\n        flexDirection: 'column',\n        justifyContent: 'center',\n        alignItems: 'center',\n        width: '100%',\n        height: '100%',\n        color: token.colorText,\n        lineHeight: token.lineHeight,\n        background: token.QRCodeMaskBackgroundColor,\n        textAlign: 'center',\n        [`& > ${componentCls}-expired , & > ${componentCls}-scanned`]: {\n          color: token.QRCodeTextColor,\n        },\n      },\n      '&-icon': {\n        marginBlockEnd: token.marginXS,\n        fontSize: token.controlHeight,\n      },\n    },\n    [`${componentCls}-borderless`]: {\n      borderColor: 'transparent',\n    },\n  };\n};\n\nexport default genComponentStyleHook<'QRCode'>('QRCode', token =>\n  genQRCodeStyle(\n    mergeToken<QRCodeToken>(token, {\n      QRCodeTextColor: 'rgba(0, 0, 0, 0.88)',\n      QRCodeMaskBackgroundColor: 'rgba(255, 255, 255, 0.96)',\n    }),\n  ),\n);\n"
  },
  {
    "path": "components/radio/Group.tsx",
    "content": "import { nextTick, defineComponent, ref, watch, computed } from 'vue';\nimport type { ExtractPropTypes } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport Radio from './Radio';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { booleanType, stringType, arrayType, functionType } from '../_util/type';\nimport type { RadioChangeEvent, RadioGroupButtonStyle, RadioGroupOptionType } from './interface';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport { useProvideRadioGroupContext } from './context';\n\n// CSSINJS\nimport useStyle from './style';\n\nconst RadioGroupSizeTypes = ['large', 'default', 'small'] as const;\n\nexport type RadioGroupSize = (typeof RadioGroupSizeTypes)[number];\n\nexport type RadioGroupOption = RadioGroupOptionType;\n\nexport type RadioGroupChildOption = {\n  label?: any;\n  value: any;\n  disabled?: boolean;\n};\n\nexport const radioGroupProps = () => ({\n  prefixCls: String,\n  value: PropTypes.any,\n  size: stringType<RadioGroupSize>(),\n  options: arrayType<Array<string | RadioGroupChildOption | number>>(),\n  disabled: booleanType(),\n  name: String,\n  buttonStyle: stringType<RadioGroupButtonStyle>('outline'),\n  id: String,\n  optionType: stringType<RadioGroupOptionType>('default'),\n  onChange: functionType<(e: RadioChangeEvent) => void>(),\n  'onUpdate:value': functionType<(val: any) => void>(),\n});\n\nexport type RadioGroupProps = Partial<ExtractPropTypes<ReturnType<typeof radioGroupProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ARadioGroup',\n  inheritAttrs: false,\n  props: radioGroupProps(),\n  // emits: ['update:value', 'change'],\n  setup(props, { slots, emit, attrs }) {\n    const formItemContext = useInjectFormItemContext();\n    const { prefixCls, direction, size } = useConfigInject('radio', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const stateValue = ref(props.value);\n    const updatingValue = ref<boolean>(false);\n    watch(\n      () => props.value,\n      val => {\n        stateValue.value = val;\n        updatingValue.value = false;\n      },\n    );\n\n    const onRadioChange = (ev: RadioChangeEvent) => {\n      const lastValue = stateValue.value;\n      const { value } = ev.target;\n\n      if (!('value' in props)) {\n        stateValue.value = value;\n      }\n      // nextTick for https://github.com/vueComponent/ant-design-vue/issues/1280\n      if (!updatingValue.value && value !== lastValue) {\n        updatingValue.value = true;\n        emit('update:value', value);\n        emit('change', ev);\n        formItemContext.onFieldChange();\n      }\n      nextTick(() => {\n        updatingValue.value = false;\n      });\n    };\n\n    useProvideRadioGroupContext({\n      onChange: onRadioChange,\n      value: stateValue,\n      disabled: computed(() => props.disabled),\n      name: computed(() => props.name),\n      optionType: computed(() => props.optionType),\n    });\n\n    return () => {\n      const { options, buttonStyle, id = formItemContext.id.value } = props;\n\n      const groupPrefixCls = `${prefixCls.value}-group`;\n\n      const classString = classNames(\n        groupPrefixCls,\n        `${groupPrefixCls}-${buttonStyle}`,\n        {\n          [`${groupPrefixCls}-${size.value}`]: size.value,\n          [`${groupPrefixCls}-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      let children = null;\n      if (options && options.length > 0) {\n        children = options.map(option => {\n          if (typeof option === 'string' || typeof option === 'number') {\n            return (\n              <Radio\n                key={option}\n                prefixCls={prefixCls.value}\n                disabled={props.disabled}\n                value={option}\n                checked={stateValue.value === option}\n              >\n                {option}\n              </Radio>\n            );\n          }\n          const { value, disabled, label } = option as RadioGroupChildOption;\n          return (\n            <Radio\n              key={`radio-group-value-options-${value}`}\n              prefixCls={prefixCls.value}\n              disabled={disabled || props.disabled}\n              value={value}\n              checked={stateValue.value === value}\n            >\n              {label}\n            </Radio>\n          );\n        });\n      } else {\n        children = slots.default?.();\n      }\n      return wrapSSR(\n        <div {...attrs} class={classString} id={id}>\n          {children}\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/radio/Radio.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent, ref } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport VcCheckbox from '../vc-checkbox/Checkbox';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { RadioChangeEvent } from './interface';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport omit from '../_util/omit';\nimport type { FocusEventHandler, MouseEventHandler } from '../_util/EventInterface';\nimport { useInjectRadioGroupContext, useInjectRadioOptionTypeContext } from './context';\nimport { booleanType, functionType } from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nexport const radioProps = () => ({\n  prefixCls: String,\n  checked: booleanType(),\n  disabled: booleanType(),\n  isGroup: booleanType(),\n  value: PropTypes.any,\n  name: String,\n  id: String,\n  autofocus: booleanType(),\n  onChange: functionType<(event: RadioChangeEvent) => void>(),\n  onFocus: functionType<FocusEventHandler>(),\n  onBlur: functionType<FocusEventHandler>(),\n  onClick: functionType<MouseEventHandler>(),\n  'onUpdate:checked': functionType<(checked: boolean) => void>(),\n  'onUpdate:value': functionType<(checked: boolean) => void>(),\n});\n\nexport type RadioProps = Partial<ExtractPropTypes<ReturnType<typeof radioProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ARadio',\n  inheritAttrs: false,\n  props: radioProps(),\n  setup(props, { emit, expose, slots, attrs }) {\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const radioOptionTypeContext = useInjectRadioOptionTypeContext();\n    const radioGroupContext = useInjectRadioGroupContext();\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? disabledContext.value);\n\n    const vcCheckbox = ref<HTMLElement>();\n\n    const { prefixCls: radioPrefixCls, direction, disabled } = useConfigInject('radio', props);\n    const prefixCls = computed(() =>\n      radioGroupContext?.optionType.value === 'button' || radioOptionTypeContext === 'button'\n        ? `${radioPrefixCls.value}-button`\n        : radioPrefixCls.value,\n    );\n    const contextDisabled = useInjectDisabled();\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(radioPrefixCls);\n\n    const focus = () => {\n      vcCheckbox.value.focus();\n    };\n\n    const blur = () => {\n      vcCheckbox.value.blur();\n    };\n\n    expose({ focus, blur });\n\n    const handleChange = (event: RadioChangeEvent) => {\n      const targetChecked = event.target.checked;\n      emit('update:checked', targetChecked);\n      emit('update:value', targetChecked);\n      emit('change', event);\n      formItemContext.onFieldChange();\n    };\n\n    const onChange = (e: RadioChangeEvent) => {\n      emit('change', e);\n      if (radioGroupContext && radioGroupContext.onChange) {\n        radioGroupContext.onChange(e);\n      }\n    };\n\n    return () => {\n      const radioGroup = radioGroupContext;\n      const { prefixCls: customizePrefixCls, id = formItemContext.id.value, ...restProps } = props;\n\n      const rProps: RadioProps = {\n        prefixCls: prefixCls.value,\n        id,\n        ...omit(restProps, ['onUpdate:checked', 'onUpdate:value']),\n        disabled: disabled.value ?? contextDisabled.value,\n      };\n\n      if (radioGroup) {\n        rProps.name = radioGroup.name.value;\n        rProps.onChange = onChange;\n        rProps.checked = props.value === radioGroup.value.value;\n        rProps.disabled = mergedDisabled.value || radioGroup.disabled.value;\n      } else {\n        rProps.onChange = handleChange;\n      }\n      const wrapperClassString = classNames(\n        {\n          [`${prefixCls.value}-wrapper`]: true,\n          [`${prefixCls.value}-wrapper-checked`]: rProps.checked,\n          [`${prefixCls.value}-wrapper-disabled`]: rProps.disabled,\n          [`${prefixCls.value}-wrapper-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-wrapper-in-form-item`]: formItemInputContext.isFormItemInput,\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      return wrapSSR(\n        <label {...attrs} class={wrapperClassString}>\n          <VcCheckbox {...rProps} type=\"radio\" ref={vcCheckbox} />\n          {slots.default && <span>{slots.default()}</span>}\n        </label>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/radio/RadioButton.tsx",
    "content": "import { defineComponent } from 'vue';\nimport Radio, { radioProps } from './Radio';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useProvideRadioOptionTypeContext } from './context';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ARadioButton',\n  inheritAttrs: false,\n  props: radioProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls } = useConfigInject('radio', props);\n    useProvideRadioOptionTypeContext('button');\n    return () => {\n      return (\n        <Radio {...attrs} {...props} prefixCls={prefixCls.value}>\n          {slots.default?.()}\n        </Radio>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/radio/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/radio/demo/basic.vue correctly 1`] = `<label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\"><span class=\"ant-radio-inner\"></span></span><span>Radio</span></label>`;\n\nexports[`renders ./components/radio/demo/disabled.vue correctly 1`] = `\n<div><label class=\"ant-radio-wrapper ant-radio-wrapper-checked ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-checked ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\"><span class=\"ant-radio-inner\"></span></span><span>Disabled</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\"><span class=\"ant-radio-inner\"></span></span><span>Disabled</span></label><br>\n  <div style=\"margin-top: 16px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Toggle disabled</span>\n    </button></div>\n</div>\n`;\n\nexports[`renders ./components/radio/demo/radioButton.vue correctly 1`] = `\n<div>\n  <div>\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n  <div style=\"margin-top: 16px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n  <div style=\"margin-top: 16px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-checked ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/radio/demo/radioButton-solid.vue correctly 1`] = `\n<div>\n  <div>\n    <div class=\"ant-radio-group ant-radio-group-solid\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n  <div style=\"margin-top: 16px;\">\n    <div class=\"ant-radio-group ant-radio-group-solid\"><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/radio/demo/radioGroup.vue correctly 1`] = `\n<div>\n  <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"1\"><span class=\"ant-radio-inner\"></span></span><span>A</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"2\"><span class=\"ant-radio-inner\"></span></span><span>B</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"3\"><span class=\"ant-radio-inner\"></span></span><span>C</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"4\"><span class=\"ant-radio-inner\"></span></span><span>D</span></label></div>\n</div>\n`;\n\nexports[`renders ./components/radio/demo/radioGroup-more.vue correctly 1`] = `<div class=\"ant-radio-group ant-radio-group-outline\"><label style=\"display: flex; height: 30px; line-height: 30px;\" class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"1\"><span class=\"ant-radio-inner\"></span></span><span>Option A</span></label><label style=\"display: flex; height: 30px; line-height: 30px;\" class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"2\"><span class=\"ant-radio-inner\"></span></span><span>Option B</span></label><label style=\"display: flex; height: 30px; line-height: 30px;\" class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"3\"><span class=\"ant-radio-inner\"></span></span><span>Option C</span></label><label style=\"display: flex; height: 30px; line-height: 30px;\" class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"4\"><span class=\"ant-radio-inner\"></span></span><span> More... <!--v-if--></span></label></div>`;\n\nexports[`renders ./components/radio/demo/radioGroup-options.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"Apple\"><span class=\"ant-radio-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"Pear\"><span class=\"ant-radio-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"Orange\"><span class=\"ant-radio-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"Apple\"><span class=\"ant-radio-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"Pear\"><span class=\"ant-radio-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"Orange\"><span class=\"ant-radio-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-checked ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"Apple\"><span class=\"ant-radio-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"Pear\"><span class=\"ant-radio-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-wrapper ant-radio-wrapper-disabled\"><span class=\"ant-radio ant-radio-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-input\" value=\"Orange\"><span class=\"ant-radio-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"Apple\"><span class=\"ant-radio-button-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"Pear\"><span class=\"ant-radio-button-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"Orange\"><span class=\"ant-radio-button-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"Apple\"><span class=\"ant-radio-button-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"Pear\"><span class=\"ant-radio-button-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"Orange\"><span class=\"ant-radio-button-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-checked ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"Apple\"><span class=\"ant-radio-button-inner\"></span></span><span>Apple</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"Pear\"><span class=\"ant-radio-button-inner\"></span></span><span>Pear</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-disabled\"><span class=\"ant-radio-button ant-radio-button-disabled\"><input type=\"radio\" disabled=\"\" class=\"ant-radio-button-input\" value=\"Orange\"><span class=\"ant-radio-button-inner\"></span></span><span>Orange</span></label></div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/radio/demo/radioGroup-with-name.vue correctly 1`] = `<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input name=\"radioGroup\" type=\"radio\" class=\"ant-radio-input\" value=\"1\"><span class=\"ant-radio-inner\"></span></span><span>A</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radioGroup\" type=\"radio\" class=\"ant-radio-input\" value=\"2\"><span class=\"ant-radio-inner\"></span></span><span>B</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radioGroup\" type=\"radio\" class=\"ant-radio-input\" value=\"3\"><span class=\"ant-radio-inner\"></span></span><span>C</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radioGroup\" type=\"radio\" class=\"ant-radio-input\" value=\"4\"><span class=\"ant-radio-inner\"></span></span><span>D</span></label></div>`;\n\nexports[`renders ./components/radio/demo/size.vue correctly 1`] = `\n<div>\n  <div>\n    <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-large\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n  <div style=\"margin-top: 16px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n  <div style=\"margin-top: 16px;\">\n    <div class=\"ant-radio-group ant-radio-group-outline ant-radio-group-small\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"a\"><span class=\"ant-radio-button-inner\"></span></span><span>Hangzhou</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"b\"><span class=\"ant-radio-button-inner\"></span></span><span>Shanghai</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"c\"><span class=\"ant-radio-button-inner\"></span></span><span>Beijing</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"d\"><span class=\"ant-radio-button-inner\"></span></span><span>Chengdu</span></label></div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/radio/__tests__/__snapshots__/group.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Radio all children should have a name property 1`] = `<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radiogroup\" type=\"radio\" class=\"ant-radio-input\" value=\"A\"><span class=\"ant-radio-inner\"></span></span><span>A</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radiogroup\" type=\"radio\" class=\"ant-radio-input\" value=\"B\"><span class=\"ant-radio-inner\"></span></span><span>B</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input name=\"radiogroup\" type=\"radio\" class=\"ant-radio-input\" value=\"C\"><span class=\"ant-radio-inner\"></span></span><span>C</span></label></div>`;\n\nexports[`Radio fire change events when value changes 1`] = `<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"A\"><span class=\"ant-radio-inner\"></span></span><span>A</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"B\"><span class=\"ant-radio-inner\"></span></span><span>B</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"C\"><span class=\"ant-radio-inner\"></span></span><span>C</span></label></div>`;\n\nexports[`Radio fire change events when value changes 2`] = `<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"A\"><span class=\"ant-radio-inner\"></span></span><span>A</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"B\"><span class=\"ant-radio-inner\"></span></span><span>B</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"C\"><span class=\"ant-radio-inner\"></span></span><span>C</span></label></div>`;\n\nexports[`Radio passes prefixCls down to radio 1`] = `<div class=\"my-radio-group my-radio-group-outline\"><label class=\"my-radio-wrapper\"><span class=\"my-radio\"><input type=\"radio\" class=\"my-radio-input\" value=\"Apple\"><span class=\"my-radio-inner\"></span></span><span>Apple</span></label><label class=\"my-radio-wrapper\"><span class=\"my-radio\"><input type=\"radio\" class=\"my-radio-input\" value=\"Orange\"><span class=\"my-radio-inner\"></span></span><span>Orange</span></label></div>`;\n"
  },
  {
    "path": "components/radio/__tests__/__snapshots__/radio.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Radio should render correctly 1`] = `<label class=\"ant-radio-wrapper customized\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\"><span class=\"ant-radio-inner\"></span></span><span>Test</span></label>`;\n"
  },
  {
    "path": "components/radio/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('radio');\n"
  },
  {
    "path": "components/radio/__tests__/group.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { sleep } from '../../../tests/utils';\nimport Radio from '../Radio';\nimport RadioGroup from '../Group';\n\ndescribe('Radio', () => {\n  function createRadioGroup(props) {\n    return {\n      props: ['value'],\n      render() {\n        const groupProps = { ...props };\n        if (this.value !== undefined) {\n          groupProps.value = this.value;\n        }\n        return (\n          <RadioGroup ref=\"radioGroup\" {...groupProps}>\n            <Radio value=\"A\">A</Radio>\n            <Radio value=\"B\">B</Radio>\n            <Radio value=\"C\">C</Radio>\n          </RadioGroup>\n        );\n      },\n    };\n  }\n\n  function createRadioGroupByOption() {\n    const options = [\n      { label: 'A', value: 'A' },\n      { label: 'B', value: 'B' },\n      { label: 'C', value: 'C' },\n    ];\n    return {\n      render() {\n        return <RadioGroup options={options} />;\n      },\n    };\n  }\n\n  it('responses hover events', () => {\n    const onMouseEnter = jest.fn();\n    const onMouseLeave = jest.fn();\n\n    const wrapper = mount({\n      render() {\n        return (\n          <RadioGroup onMouseenter={onMouseEnter} onMouseleave={onMouseLeave}>\n            <Radio />\n          </RadioGroup>\n        );\n      },\n    });\n\n    wrapper.findAll('div')[0].trigger('mouseenter');\n    expect(onMouseEnter).toHaveBeenCalled();\n\n    wrapper.findAll('div')[0].trigger('mouseleave');\n    expect(onMouseLeave).toHaveBeenCalled();\n  });\n\n  it('fire change events when value changes', async () => {\n    const onChange = jest.fn();\n    const props = { onChange };\n    const wrapper = mount(createRadioGroup(props), { sync: false });\n    let radios = null;\n    await sleep();\n    radios = wrapper.findAll('input');\n    // uncontrolled component\n    wrapper.vm.$refs.radioGroup.stateValue = 'B';\n    // wrapper.setData({ value: 'B' })\n    radios[0].trigger('change');\n    expect(onChange.mock.calls.length).toBe(1);\n    await sleep();\n    expect(wrapper.html()).toMatchSnapshot();\n    // controlled component\n    wrapper.setProps({ value: 'A' });\n    radios[1].trigger('change');\n    expect(onChange.mock.calls.length).toBe(2);\n    await sleep();\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('both of radio and radioGroup will trigger onchange event when they exists', async () => {\n    const onChange = jest.fn();\n    const onChangeRadioGroup = jest.fn();\n\n    const wrapper = mount(\n      {\n        props: ['value'],\n        render() {\n          const groupProps = {};\n          if (this.value !== undefined) {\n            groupProps.value = this.value;\n          }\n          return (\n            <RadioGroup ref=\"radioGroup\" {...groupProps} onChange={onChangeRadioGroup}>\n              <Radio value=\"A\" onChange={onChange}>\n                A\n              </Radio>\n              <Radio value=\"B\" onChange={onChange}>\n                B\n              </Radio>\n              <Radio value=\"C\" onChange={onChange}>\n                C\n              </Radio>\n            </RadioGroup>\n          );\n        },\n      },\n      { sync: false },\n    );\n    const radios = wrapper.findAll('input');\n\n    // uncontrolled component\n    wrapper.vm.$refs.radioGroup.stateValue = 'B';\n    radios[0].trigger('change');\n    expect(onChange.mock.calls.length).toBe(1);\n    expect(onChangeRadioGroup.mock.calls.length).toBe(1);\n\n    // controlled component\n    wrapper.setProps({ value: 'A' });\n    radios[1].trigger('change');\n    expect(onChange.mock.calls.length).toBe(2);\n  });\n\n  it('Trigger onChange when both of radioButton and radioGroup exists', async () => {\n    const onChange = jest.fn();\n    const props = { onChange };\n    const wrapper = mount(createRadioGroup(props), { sync: false });\n    const radios = wrapper.findAll('input');\n\n    // uncontrolled component\n    wrapper.vm.$refs.radioGroup.stateValue = 'B';\n    radios[0].trigger('change');\n    expect(onChange.mock.calls.length).toBe(1);\n\n    await sleep();\n    // controlled component\n    wrapper.setProps({ value: 'A' });\n    radios[1].trigger('change');\n    expect(onChange.mock.calls.length).toBe(2);\n  });\n\n  // it('should only trigger once when in group with options', () => {\n  //   const onChange = jest.fn();\n  //   const options = [{ label: 'Bamboo', value: 'Bamboo' }];\n  //   const wrapper = mount(<RadioGroup options={options} onChange={onChange} />);\n\n  //   wrapper.find('input').trigger('change');\n  //   expect(onChange).toHaveBeenCalledTimes(1);\n  // });\n\n  // it('won\\'t fire change events when value not changes', async () => {\n  //   const onChange = jest.fn()\n\n  //   const wrapper = mount(\n  //     createRadioGroup({}, {\n  //       change: onChange,\n  //     }),\n  //     { sync: false }\n  //   )\n  //   const radios = wrapper.findAll('input')\n  //   await asyncExpect(() => {\n  //     // uncontrolled component\n  //     wrapper.vm.$refs.radioGroup.stateValue = 'B'\n  //     radios[1].trigger('change')\n  //     expect(onChange.mock.calls.length).toBe(0)\n  //   })\n\n  //   await asyncExpect(() => {\n\n  //   }, 0)\n\n  //   // // controlled component\n  //   // wrapper.setProps({ value: 'A' })\n  //   // radios[0].trigger('change')\n  //   // expect(onChange.mock.calls.length).toBe(0)\n  // })\n\n  it('optional should correct render', () => {\n    const wrapper = mount(createRadioGroupByOption());\n    const radios = wrapper.findAll('input');\n\n    expect(radios.length).toBe(3);\n  });\n\n  it('all children should have a name property', () => {\n    const GROUP_NAME = 'radiogroup';\n    const wrapper = mount(createRadioGroup({ name: GROUP_NAME }));\n    expect(wrapper.html()).toMatchSnapshot();\n    expect(\n      wrapper.findAll('input[type=\"radio\"]').forEach(el => {\n        expect(el.element.name).toEqual(GROUP_NAME);\n      }),\n    );\n  });\n\n  it('passes prefixCls down to radio', () => {\n    const options = [\n      { label: 'Apple', value: 'Apple' },\n      { label: 'Orange', value: 'Orange' },\n    ];\n\n    const wrapper = mount(RadioGroup, {\n      props: {\n        prefixCls: 'my-radio',\n        options,\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  fit('when onChange do not change the value, change event can be also triggered.', async () => {\n    const onChange = jest.fn();\n    const onChangeRadioGroup = () => {\n      onChange();\n      wrapper.setProps({ value: 'A' });\n    };\n\n    const wrapper = mount(\n      {\n        props: ['value'],\n        render() {\n          const value = this.value || 'A';\n          return (\n            <RadioGroup ref=\"radioGroup\" value={value} onChange={onChangeRadioGroup}>\n              <Radio value=\"A\">A</Radio>\n              <Radio value=\"B\">B</Radio>\n              <Radio value=\"C\">C</Radio>\n            </RadioGroup>\n          );\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    const radios = wrapper.findAll('input');\n    radios[1].trigger('click');\n    radios[1].trigger('change');\n    await sleep(10);\n    expect(onChange).toHaveBeenCalled();\n  });\n});\n"
  },
  {
    "path": "components/radio/__tests__/radio.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Radio, { Group, Button } from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Radio', () => {\n  focusTest(Radio);\n  mountTest(Radio);\n  mountTest(Group);\n  mountTest(Button);\n\n  it('should render correctly', () => {\n    const wrapper = mount({\n      render() {\n        return <Radio class=\"customized\">Test</Radio>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('responses hover events', async () => {\n    const onMouseEnter = jest.fn();\n    const onMouseLeave = jest.fn();\n\n    const wrapper = mount(\n      {\n        render() {\n          return <Radio onMouseenter={onMouseEnter} onMouseleave={onMouseLeave} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      wrapper.find('label').trigger('mouseenter');\n    });\n    await asyncExpect(() => {\n      expect(onMouseEnter).toHaveBeenCalled();\n    });\n    wrapper.find('label').trigger('mouseleave');\n    await asyncExpect(() => {\n      expect(onMouseLeave).toHaveBeenCalled();\n    });\n  });\n});\n"
  },
  {
    "path": "components/radio/context.ts",
    "content": "import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { RadioGroupContext, RadioOptionTypeContextProps } from './interface';\n\nconst radioGroupContextKey: InjectionKey<RadioGroupContext> = Symbol('radioGroupContextKey');\nexport const useProvideRadioGroupContext = (props: RadioGroupContext) => {\n  provide(radioGroupContextKey, props);\n};\n\nexport const useInjectRadioGroupContext = () => {\n  return inject(radioGroupContextKey, undefined);\n};\n\nconst radioOptionTypeContextKey: InjectionKey<RadioOptionTypeContextProps> = Symbol(\n  'radioOptionTypeContextKey',\n);\nexport const useProvideRadioOptionTypeContext = (props: RadioOptionTypeContextProps) => {\n  provide(radioOptionTypeContextKey, props);\n};\n\nexport const useInjectRadioOptionTypeContext = () => {\n  return inject(radioOptionTypeContextKey, undefined);\n};\n"
  },
  {
    "path": "components/radio/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest usage.\n\n</docs>\n<template>\n  <a-radio v-model:checked=\"checked\">Radio</a-radio>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst checked = ref<boolean>(false);\n</script>\n"
  },
  {
    "path": "components/radio/demo/disabled.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 不可用\n  en-US: disabled\n---\n\n## zh-CN\n\nRadio 不可用。\n\n## en-US\n\nRadio unavailable.\n\n</docs>\n<template>\n  <div>\n    <a-radio v-model:checked=\"checked1\" :disabled=\"disabled\">Disabled</a-radio>\n    <a-radio v-model:checked=\"checked2\" :disabled=\"disabled\">Disabled</a-radio>\n    <br />\n    <div style=\"margin-top: 16px\">\n      <a-button type=\"primary\" @click=\"toggleDisabled\">Toggle disabled</a-button>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst disabled = ref<boolean>(true);\nconst checked1 = ref<boolean>(true);\nconst checked2 = ref<boolean>(false);\n\nconst toggleDisabled = () => {\n  disabled.value = !disabled.value;\n};\n</script>\n"
  },
  {
    "path": "components/radio/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <disabled />\n    <radio-button />\n    <radio-button-solid />\n    <radio-group-more />\n    <radio-group-options />\n    <radio-group-with-name />\n    <radio-group />\n    <size />\n  </demo-sort>\n</template>\n\n<script>\nimport Basic from './basic.vue';\nimport Disabled from './disabled.vue';\nimport RadioButton from './radioButton.vue';\nimport RadioGroupMore from './radioGroup-more.vue';\nimport RadioGroupOptions from './radioGroup-options.vue';\nimport RadioGroupWithName from './radioGroup-with-name.vue';\nimport RadioGroup from './radioGroup.vue';\nimport RadioButtonSolid from './radioButton-solid.vue';\nimport Size from './size.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Disabled,\n    RadioButton,\n    RadioButtonSolid,\n    RadioGroupMore,\n    RadioGroupOptions,\n    RadioGroupWithName,\n    RadioGroup,\n    Size,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioButton-solid.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 填底的按钮样式\n  en-US: Solid radio button\n---\n\n## zh-CN\n\n实色填底的单选按钮样式。\n\n## en-US\n\nSolid radio button style.\n\n</docs>\n<template>\n  <div>\n    <div>\n      <a-radio-group v-model:value=\"value1\" button-style=\"solid\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n    <div :style=\"{ marginTop: '16px' }\">\n      <a-radio-group v-model:value=\"value2\" button-style=\"solid\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\" disabled>Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<string>('a');\nconst value2 = ref<string>('c');\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioButton.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 按钮样式\n  en-US: radio style\n---\n\n## zh-CN\n\n按钮样式的单选组合。\n\n## en-US\n\nThe combination of radio button style.\n\n</docs>\n<template>\n  <div>\n    <div>\n      <a-radio-group v-model:value=\"value1\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n    <div :style=\"{ marginTop: '16px' }\">\n      <a-radio-group v-model:value=\"value2\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\" disabled>Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n    <div :style=\"{ marginTop: '16px' }\">\n      <a-radio-group v-model:value=\"value3\" disabled>\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst value1 = ref<string>('a');\nconst value2 = ref<string>('a');\nconst value3 = ref<string>('a');\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioGroup-more.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: RadioGroup 垂直\n  en-US: Vertical RadioGroup\n---\n\n## zh-CN\n\n垂直的 RadioGroup，配合更多输入框选项。\n\n## en-US\n\nVertical RadioGroup, with more radios.\n\n</docs>\n<template>\n  <a-radio-group v-model:value=\"value\">\n    <a-radio :style=\"radioStyle\" :value=\"1\">Option A</a-radio>\n    <a-radio :style=\"radioStyle\" :value=\"2\">Option B</a-radio>\n    <a-radio :style=\"radioStyle\" :value=\"3\">Option C</a-radio>\n    <a-radio :style=\"radioStyle\" :value=\"4\">\n      More...\n      <a-input v-if=\"value === 4\" style=\"width: 100px; margin-left: 10px\" />\n    </a-radio>\n  </a-radio-group>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nconst value = ref<number>(1);\nconst radioStyle = reactive({\n  display: 'flex',\n  height: '30px',\n  lineHeight: '30px',\n});\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioGroup-options.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: RadioGroup 组合 - 配置方式\n  en-US: RadioGroup group - optional\n---\n\n## zh-CN\n\n通过配置 `options` 参数来渲染单选框。\n\n## en-US\n\nRender radios by configuring `options`.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-radio-group v-model:value=\"value1\" :options=\"plainOptions\" />\n    <a-radio-group v-model:value=\"value2\" :options=\"optionsWithDisabled\" />\n    <a-radio-group v-model:value=\"value3\" :options=\"plainOptions\" disabled />\n    <a-radio-group v-model:value=\"value1\" option-type=\"button\" :options=\"plainOptions\" />\n    <a-radio-group v-model:value=\"value2\" option-type=\"button\" :options=\"optionsWithDisabled\" />\n    <a-radio-group v-model:value=\"value3\" option-type=\"button\" :options=\"plainOptions\" disabled />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { RadioGroupProps } from 'ant-design-vue';\nconst plainOptions = ['Apple', 'Pear', 'Orange'];\nconst optionsWithDisabled: RadioGroupProps['options'] = [\n  { label: 'Apple', value: 'Apple' },\n  { label: 'Pear', value: 'Pear' },\n  { label: 'Orange', value: 'Orange', disabled: true },\n];\nconst value1 = ref<string>('Apple');\nconst value2 = ref<string>('Apple');\nconst value3 = ref<string>('Apple');\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioGroup-with-name.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 单选组合 - 配合 name 使用\n  en-US: Radio.Group with name\n---\n\n## zh-CN\n\n可以为 Radio.Group 配置 `name` 参数，为组合内的 input 元素赋予相同的 `name` 属性，使浏览器把 Radio.Group 下的 Radio 真正看作是一组（例如可以通过方向键始终**在同一组内**更改选项）。\n\n## en-US\n\nPassing the `name` property to all `input[type=\"radio\"]` that are in the same Radio.Group. It is usually used to let the browser see your Radio.Group as a real \"group\" and keep the default behavior. For example, using left/right keyboard arrow to change your selection that in the same Radio.Group.\n\n</docs>\n<template>\n  <a-radio-group v-model:value=\"value\" name=\"radioGroup\">\n    <a-radio value=\"1\">A</a-radio>\n    <a-radio value=\"2\">B</a-radio>\n    <a-radio value=\"3\">C</a-radio>\n    <a-radio value=\"4\">D</a-radio>\n  </a-radio-group>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<string>('1');\n</script>\n"
  },
  {
    "path": "components/radio/demo/radioGroup.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 单选组合\n  en-US: Radio Group\n---\n\n## zh-CN\n\n一组互斥的 Radio 配合使用。\n\n## en-US\n\nA group of radio components.\n\n</docs>\n<template>\n  <div>\n    <a-radio-group v-model:value=\"value\">\n      <a-radio :value=\"1\">A</a-radio>\n      <a-radio :value=\"2\">B</a-radio>\n      <a-radio :value=\"3\">C</a-radio>\n      <a-radio :value=\"4\">D</a-radio>\n    </a-radio-group>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(1);\n</script>\n"
  },
  {
    "path": "components/radio/demo/size.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 大小\n  en-US: Size\n---\n\n## zh-CN\n\n大中小三种组合，可以和表单输入框进行对应配合。\n\n## en-US\n\nThere are three sizes available: large, medium, and small. It can coordinate with input box.\n\n</docs>\n<template>\n  <div>\n    <div>\n      <a-radio-group v-model:value=\"value1\" size=\"large\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n    <div :style=\"{ marginTop: '16px' }\">\n      <a-radio-group v-model:value=\"value2\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n    <div :style=\"{ marginTop: '16px' }\">\n      <a-radio-group v-model:value=\"value3\" size=\"small\">\n        <a-radio-button value=\"a\">Hangzhou</a-radio-button>\n        <a-radio-button value=\"b\">Shanghai</a-radio-button>\n        <a-radio-button value=\"c\">Beijing</a-radio-button>\n        <a-radio-button value=\"d\">Chengdu</a-radio-button>\n      </a-radio-group>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst value1 = ref<string>('a');\nconst value2 = ref<string>('a');\nconst value3 = ref<string>('a');\n</script>\n"
  },
  {
    "path": "components/radio/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Radio\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M-YKTJnWM2kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a9roS6DHFIcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nRadio.\n\n## When To Use\n\n- Used to select a single state from multiple options.\n- The difference from Select is that Radio is visible to the user and can facilitate the comparison of choice, which means there shouldn't be too many of them.\n\n## API\n\n### Radio/Radio.Button\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| autofocus | get focus when component mounted | boolean | false |\n| checked(v-model) | Specifies whether the radio is selected. | boolean | - |\n| disabled | Disable radio | boolean | false |\n| value | According to value for comparison, to determine whether the selected | any | - |\n\n### RadioGroup\n\nRadio group can wrap a group of `Radio`。\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| buttonStyle | style type of radio button | `outline` \\| `solid` | `outline` |  |\n| disabled | Disable all radio buttons | boolean | false |  |\n| name | The `name` property of all `input[type=\"radio\"]` children | string | - |  |\n| options | set children optional | string\\[] \\| number\\[] \\| Array&lt;{ label: string value: string disabled?: boolean }> | - |  |\n| optionType | Set Radio optionType | `default` \\| `button` | `default` | 3.0.0 |\n| size | size for radio button style | `large` \\| `default` \\| `small` | `default` |  |\n| value(v-model) | Used for setting the currently selected value. | any | - |  |\n\n### RadioGroup Events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| change | The callback function that is triggered when the state changes. | Function(e:Event) |\n\n## Methods\n\n### Radio\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n"
  },
  {
    "path": "components/radio/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Radio from './Radio';\nimport Group from './Group';\nimport Button from './RadioButton';\nexport type { RadioProps } from './Radio';\nexport type { RadioGroupProps } from './Group';\nexport type { RadioChangeEventTarget, RadioChangeEvent } from './interface';\n\nRadio.Group = Group;\nRadio.Button = Button;\n\n/* istanbul ignore next */\nRadio.install = function (app: App) {\n  app.component(Radio.name, Radio);\n  app.component(Radio.Group.name, Radio.Group);\n  app.component(Radio.Button.name, Radio.Button);\n  return app;\n};\n\nexport { Button, Group, Button as RadioButton, Group as RadioGroup };\nexport default Radio as typeof Radio &\n  Plugin & {\n    readonly Group: typeof Group;\n    readonly Button: typeof Button;\n  };\n"
  },
  {
    "path": "components/radio/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Radio\nsubtitle: 单选框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M-YKTJnWM2kAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*a9roS6DHFIcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n单选框。\n\n## 何时使用\n\n- 用于在多个备选项中选中单个状态。\n- 和 Select 的区别是，Radio 所有选项默认可见，方便用户在比较中选择，因此选项不宜过多。\n\n## API\n\n### Radio/Radio.Button\n\n| 参数             | 说明                              | 类型    | 默认值 |\n| ---------------- | --------------------------------- | ------- | ------ |\n| autofocus        | 自动获取焦点                      | boolean | false  |\n| checked(v-model) | 指定当前是否选中                  | boolean | false  |\n| disabled         | 禁用 Radio                        | boolean | false  |\n| value            | 根据 value 进行比较，判断是否选中 | any     | -      |\n\n### RadioGroup\n\n单选框组合，用于包裹一组 `Radio`。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| buttonStyle | RadioButton 的风格样式，目前有描边和填色两种风格 | `outline` \\| `solid` | `outline` |  |\n| disabled | 禁选所有子单选器 | boolean | false |  |\n| name | RadioGroup 下所有 `input[type=\"radio\"]` 的 `name` 属性 | string | - |  |\n| options | 以配置形式设置子元素 | string\\[] \\| number[] \\| Array&lt;{ label: string value: string disabled?: boolean }> | - |  |\n| optionType | 用于设置 Radio `options` 类型 | `default` \\| `button` | `default` | 3.0.0 |\n| size | 大小，只对按钮样式生效 | `large` \\| `default` \\| `small` | `default` |  |\n| value(v-model) | 用于设置当前选中的值 | any | - |  |\n\n### RadioGroup 事件\n\n| 事件名称 | 说明                 | 回调参数          |\n| -------- | -------------------- | ----------------- |\n| change   | 选项变化时的回调函数 | Function(e:Event) |\n\n## 方法\n\n### Radio\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n"
  },
  {
    "path": "components/radio/interface.ts",
    "content": "import type { RadioProps } from './Radio';\nimport type { Ref } from 'vue';\nexport interface RadioChangeEventTarget extends RadioProps {\n  checked: boolean;\n}\n\nexport type RadioGroupButtonStyle = 'outline' | 'solid';\nexport type RadioGroupOptionType = 'default' | 'button';\n\nexport interface RadioChangeEvent {\n  target: RadioChangeEventTarget;\n  stopPropagation: () => void;\n  preventDefault: () => void;\n  nativeEvent: MouseEvent;\n}\n\nexport interface RadioGroupContext {\n  onChange: (e: RadioChangeEvent) => void;\n  value: Ref<any>;\n  disabled: Ref<boolean>;\n  name: Ref<string>;\n  /**\n   * Control the appearance for Radio to display as button or not\n   *\n   * @default 'default'\n   * @internal\n   */\n  optionType?: Ref<RadioGroupOptionType>;\n}\n\nexport type RadioOptionTypeContextProps = RadioGroupOptionType;\n"
  },
  {
    "path": "components/radio/style/index.tsx",
    "content": "import { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusOutline, resetComponent } from '../../style';\n\n// ============================== Tokens ==============================\nexport interface ComponentToken {}\n\ninterface RadioToken extends FullToken<'Radio'> {\n  radioFocusShadow: string;\n  radioButtonFocusShadow: string;\n\n  radioSize: number;\n  radioTop: number;\n  radioDotSize: number;\n  radioDotDisabledSize: number;\n  radioCheckedColor: string;\n  radioDotDisabledColor: string;\n  radioSolidCheckedColor: string;\n\n  radioButtonBg: string;\n  radioButtonCheckedBg: string;\n  radioButtonColor: string;\n  radioButtonHoverColor: string;\n  radioButtonActiveColor: string;\n  radioButtonPaddingHorizontal: number;\n  radioDisabledButtonCheckedBg: string;\n  radioDisabledButtonCheckedColor: string;\n  radioWrapperMarginRight: number;\n}\n\n// ============================== Styles ==============================\nconst antRadioEffect = new Keyframes('antRadioEffect', {\n  '0%': { transform: 'scale(1)', opacity: 0.5 },\n  '100%': { transform: 'scale(1.6)', opacity: 0 },\n});\n\n// styles from RadioGroup only\nconst getGroupRadioStyle: GenerateStyle<RadioToken> = token => {\n  const { componentCls, antCls } = token;\n  const groupPrefixCls = `${componentCls}-group`;\n\n  return {\n    [groupPrefixCls]: {\n      ...resetComponent(token),\n      display: 'inline-block',\n      fontSize: 0,\n\n      // RTL\n      [`&${groupPrefixCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      [`${antCls}-badge ${antCls}-badge-count`]: {\n        zIndex: 1,\n      },\n\n      [`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: {\n        borderInlineStart: 'none',\n      },\n    },\n  };\n};\n\n// Styles from radio-wrapper\nconst getRadioBasicStyle: GenerateStyle<RadioToken> = token => {\n  const {\n    componentCls,\n    radioWrapperMarginRight,\n    radioCheckedColor,\n    radioSize,\n    motionDurationSlow,\n    motionDurationMid,\n    motionEaseInOut,\n    motionEaseInOutCirc,\n    radioButtonBg,\n    colorBorder,\n    lineWidth,\n    radioDotSize,\n    colorBgContainerDisabled,\n    colorTextDisabled,\n    paddingXS,\n    radioDotDisabledColor,\n    lineType,\n    radioDotDisabledSize,\n    wireframe,\n    colorWhite,\n  } = token;\n  const radioInnerPrefixCls = `${componentCls}-inner`;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      ...resetComponent(token),\n      position: 'relative',\n      display: 'inline-flex',\n      alignItems: 'baseline',\n      marginInlineStart: 0,\n      marginInlineEnd: radioWrapperMarginRight,\n      cursor: 'pointer',\n\n      // RTL\n      [`&${componentCls}-wrapper-rtl`]: {\n        direction: 'rtl',\n      },\n\n      '&-disabled': {\n        cursor: 'not-allowed',\n        color: token.colorTextDisabled,\n      },\n\n      '&::after': {\n        display: 'inline-block',\n        width: 0,\n        overflow: 'hidden',\n        content: '\"\\\\a0\"',\n      },\n\n      // hashId 在 wrapper 上，只能铺平\n      [`${componentCls}-checked::after`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        width: '100%',\n        height: '100%',\n        border: `${lineWidth}px ${lineType} ${radioCheckedColor}`,\n        borderRadius: '50%',\n        visibility: 'hidden',\n        animationName: antRadioEffect,\n        animationDuration: motionDurationSlow,\n        animationTimingFunction: motionEaseInOut,\n        animationFillMode: 'both',\n        content: '\"\"',\n      },\n\n      [componentCls]: {\n        ...resetComponent(token),\n        position: 'relative',\n        display: 'inline-block',\n        outline: 'none',\n        cursor: 'pointer',\n        alignSelf: 'center',\n      },\n\n      [`${componentCls}-wrapper:hover &,\n        &:hover ${radioInnerPrefixCls}`]: {\n        borderColor: radioCheckedColor,\n      },\n\n      [`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: {\n        ...genFocusOutline(token),\n      },\n\n      [`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: {\n        visibility: 'visible',\n      },\n\n      [`${componentCls}-inner`]: {\n        '&::after': {\n          boxSizing: 'border-box',\n          position: 'absolute',\n          insetBlockStart: '50%',\n          insetInlineStart: '50%',\n          display: 'block',\n          width: radioSize,\n          height: radioSize,\n          marginBlockStart: radioSize / -2,\n          marginInlineStart: radioSize / -2,\n          backgroundColor: wireframe ? radioCheckedColor : colorWhite,\n          borderBlockStart: 0,\n          borderInlineStart: 0,\n          borderRadius: radioSize,\n          transform: 'scale(0)',\n          opacity: 0,\n          transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,\n          content: '\"\"',\n        },\n\n        boxSizing: 'border-box',\n        position: 'relative',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        display: 'block',\n        width: radioSize,\n        height: radioSize,\n        backgroundColor: radioButtonBg,\n        borderColor: colorBorder,\n        borderStyle: 'solid',\n        borderWidth: lineWidth,\n        borderRadius: '50%',\n        transition: `all ${motionDurationMid}`,\n      },\n\n      [`${componentCls}-input`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineEnd: 0,\n        insetBlockEnd: 0,\n        insetInlineStart: 0,\n        zIndex: 1,\n        cursor: 'pointer',\n        opacity: 0,\n      },\n\n      // 选中状态\n      [`${componentCls}-checked`]: {\n        [radioInnerPrefixCls]: {\n          borderColor: radioCheckedColor,\n          backgroundColor: wireframe ? radioButtonBg : radioCheckedColor,\n\n          '&::after': {\n            transform: `scale(${radioDotSize / radioSize})`,\n            opacity: 1,\n            transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,\n          },\n        },\n      },\n\n      [`${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n\n        [radioInnerPrefixCls]: {\n          backgroundColor: colorBgContainerDisabled,\n          borderColor: colorBorder,\n          cursor: 'not-allowed',\n\n          '&::after': {\n            backgroundColor: radioDotDisabledColor,\n          },\n        },\n\n        [`${componentCls}-input`]: {\n          cursor: 'not-allowed',\n        },\n\n        [`${componentCls}-disabled + span`]: {\n          color: colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n\n        [`&${componentCls}-checked`]: {\n          [radioInnerPrefixCls]: {\n            '&::after': {\n              transform: `scale(${radioDotDisabledSize / radioSize})`,\n            },\n          },\n        },\n      },\n\n      [`span${componentCls} + *`]: {\n        paddingInlineStart: paddingXS,\n        paddingInlineEnd: paddingXS,\n      },\n    },\n  };\n};\n\n// Styles from radio-button\nconst getRadioButtonStyle: GenerateStyle<RadioToken> = token => {\n  const {\n    radioButtonColor,\n    controlHeight,\n    componentCls,\n    lineWidth,\n    lineType,\n    colorBorder,\n    motionDurationSlow,\n    motionDurationMid,\n    radioButtonPaddingHorizontal,\n    fontSize,\n    radioButtonBg,\n    fontSizeLG,\n    controlHeightLG,\n    controlHeightSM,\n    paddingXS,\n    borderRadius,\n    borderRadiusSM,\n    borderRadiusLG,\n    radioCheckedColor,\n    radioButtonCheckedBg,\n    radioButtonHoverColor,\n    radioButtonActiveColor,\n    radioSolidCheckedColor,\n    colorTextDisabled,\n    colorBgContainerDisabled,\n    radioDisabledButtonCheckedColor,\n    radioDisabledButtonCheckedBg,\n  } = token;\n  return {\n    [`${componentCls}-button-wrapper`]: {\n      position: 'relative',\n      display: 'inline-block',\n      height: controlHeight,\n      margin: 0,\n      paddingInline: radioButtonPaddingHorizontal,\n      paddingBlock: 0,\n      color: radioButtonColor,\n      fontSize,\n      lineHeight: `${controlHeight - lineWidth * 2}px`,\n      background: radioButtonBg,\n      border: `${lineWidth}px ${lineType} ${colorBorder}`,\n      // strange align fix for chrome but works\n      // https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif\n      borderBlockStartWidth: lineWidth + 0.02,\n      borderInlineStartWidth: 0,\n      borderInlineEndWidth: lineWidth,\n      cursor: 'pointer',\n      transition: [\n        `color ${motionDurationMid}`,\n        `background ${motionDurationMid}`,\n        `border-color ${motionDurationMid}`,\n        `box-shadow ${motionDurationMid}`,\n      ].join(','),\n\n      a: {\n        color: radioButtonColor,\n      },\n\n      [`> ${componentCls}-button`]: {\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        zIndex: -1,\n        width: '100%',\n        height: '100%',\n      },\n\n      '&:not(:first-child)': {\n        '&::before': {\n          position: 'absolute',\n          insetBlockStart: -lineWidth,\n          insetInlineStart: -lineWidth,\n          display: 'block',\n          boxSizing: 'content-box',\n          width: 1,\n          height: '100%',\n          paddingBlock: lineWidth,\n          paddingInline: 0,\n          backgroundColor: colorBorder,\n          transition: `background-color ${motionDurationSlow}`,\n          content: '\"\"',\n        },\n      },\n\n      '&:first-child': {\n        borderInlineStart: `${lineWidth}px ${lineType} ${colorBorder}`,\n        borderStartStartRadius: borderRadius,\n        borderEndStartRadius: borderRadius,\n      },\n\n      '&:last-child': {\n        borderStartEndRadius: borderRadius,\n        borderEndEndRadius: borderRadius,\n      },\n\n      '&:first-child:last-child': {\n        borderRadius,\n      },\n\n      [`${componentCls}-group-large &`]: {\n        height: controlHeightLG,\n        fontSize: fontSizeLG,\n        lineHeight: `${controlHeightLG - lineWidth * 2}px`,\n\n        '&:first-child': {\n          borderStartStartRadius: borderRadiusLG,\n          borderEndStartRadius: borderRadiusLG,\n        },\n\n        '&:last-child': {\n          borderStartEndRadius: borderRadiusLG,\n          borderEndEndRadius: borderRadiusLG,\n        },\n      },\n\n      [`${componentCls}-group-small &`]: {\n        height: controlHeightSM,\n        paddingInline: paddingXS - lineWidth,\n        paddingBlock: 0,\n        lineHeight: `${controlHeightSM - lineWidth * 2}px`,\n\n        '&:first-child': {\n          borderStartStartRadius: borderRadiusSM,\n          borderEndStartRadius: borderRadiusSM,\n        },\n\n        '&:last-child': {\n          borderStartEndRadius: borderRadiusSM,\n          borderEndEndRadius: borderRadiusSM,\n        },\n      },\n\n      '&:hover': {\n        position: 'relative',\n        color: radioCheckedColor,\n      },\n\n      '&:has(:focus-visible)': {\n        ...genFocusOutline(token),\n      },\n\n      [`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: {\n        width: 0,\n        height: 0,\n        opacity: 0,\n        pointerEvents: 'none',\n      },\n\n      [`&-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n        zIndex: 1,\n        color: radioCheckedColor,\n        background: radioButtonCheckedBg,\n        borderColor: radioCheckedColor,\n\n        '&::before': {\n          backgroundColor: radioCheckedColor,\n        },\n\n        '&:first-child': {\n          borderColor: radioCheckedColor,\n        },\n\n        '&:hover': {\n          color: radioButtonHoverColor,\n          borderColor: radioButtonHoverColor,\n\n          '&::before': {\n            backgroundColor: radioButtonHoverColor,\n          },\n        },\n\n        '&:active': {\n          color: radioButtonActiveColor,\n          borderColor: radioButtonActiveColor,\n\n          '&::before': {\n            backgroundColor: radioButtonActiveColor,\n          },\n        },\n      },\n\n      [`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n        color: radioSolidCheckedColor,\n        background: radioCheckedColor,\n        borderColor: radioCheckedColor,\n\n        '&:hover': {\n          color: radioSolidCheckedColor,\n          background: radioButtonHoverColor,\n          borderColor: radioButtonHoverColor,\n        },\n\n        '&:active': {\n          color: radioSolidCheckedColor,\n          background: radioButtonActiveColor,\n          borderColor: radioButtonActiveColor,\n        },\n      },\n\n      '&-disabled': {\n        color: colorTextDisabled,\n        backgroundColor: colorBgContainerDisabled,\n        borderColor: colorBorder,\n        cursor: 'not-allowed',\n\n        '&:first-child, &:hover': {\n          color: colorTextDisabled,\n          backgroundColor: colorBgContainerDisabled,\n          borderColor: colorBorder,\n        },\n      },\n\n      [`&-disabled${componentCls}-button-wrapper-checked`]: {\n        color: radioDisabledButtonCheckedColor,\n        backgroundColor: radioDisabledButtonCheckedBg,\n        borderColor: colorBorder,\n        boxShadow: 'none',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Radio', token => {\n  const {\n    padding,\n    lineWidth,\n    controlItemBgActiveDisabled,\n    colorTextDisabled,\n    colorBgContainer,\n    fontSizeLG,\n    controlOutline,\n    colorPrimaryHover,\n    colorPrimaryActive,\n    colorText,\n    colorPrimary,\n    marginXS,\n    controlOutlineWidth,\n    colorTextLightSolid,\n    wireframe,\n  } = token;\n\n  // Radio\n  const radioFocusShadow = `0 0 0 ${controlOutlineWidth}px ${controlOutline}`;\n  const radioButtonFocusShadow = radioFocusShadow;\n\n  const radioSize = fontSizeLG;\n  const dotPadding = 4; // Fixed value\n  const radioDotDisabledSize = radioSize - dotPadding * 2;\n  const radioDotSize = wireframe ? radioDotDisabledSize : radioSize - (dotPadding + lineWidth) * 2;\n  const radioCheckedColor = colorPrimary;\n\n  // Radio buttons\n  const radioButtonColor = colorText;\n  const radioButtonHoverColor = colorPrimaryHover;\n  const radioButtonActiveColor = colorPrimaryActive;\n  const radioButtonPaddingHorizontal = padding - lineWidth;\n  const radioDisabledButtonCheckedColor = colorTextDisabled;\n  const radioWrapperMarginRight = marginXS;\n\n  const radioToken = mergeToken<RadioToken>(token, {\n    radioFocusShadow,\n    radioButtonFocusShadow,\n    radioSize,\n    radioDotSize,\n    radioDotDisabledSize,\n    radioCheckedColor,\n    radioDotDisabledColor: colorTextDisabled,\n    radioSolidCheckedColor: colorTextLightSolid,\n    radioButtonBg: colorBgContainer,\n    radioButtonCheckedBg: colorBgContainer,\n    radioButtonColor,\n    radioButtonHoverColor,\n    radioButtonActiveColor,\n    radioButtonPaddingHorizontal,\n    radioDisabledButtonCheckedBg: controlItemBgActiveDisabled,\n    radioDisabledButtonCheckedColor,\n    radioWrapperMarginRight,\n  });\n\n  return [\n    getGroupRadioStyle(radioToken),\n    getRadioBasicStyle(radioToken),\n    getRadioButtonStyle(radioToken),\n  ];\n});\n"
  },
  {
    "path": "components/rate/Star.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport PropTypes from '../_util/vue-types';\n\nexport const starProps = {\n  value: Number,\n  index: Number,\n  prefixCls: String,\n  allowHalf: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  character: PropTypes.any,\n  characterRender: Function,\n  focused: { type: Boolean, default: undefined },\n  count: Number,\n  onClick: Function,\n  onHover: Function,\n};\n\nexport type StarProps = Partial<ExtractPropTypes<typeof starProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Star',\n  inheritAttrs: false,\n  props: starProps,\n  emits: ['hover', 'click'],\n  setup(props, { emit }) {\n    const onHover = (e: MouseEvent) => {\n      const { index } = props;\n      emit('hover', e, index);\n    };\n    const onClick = (e: MouseEvent) => {\n      const { index } = props;\n      emit('click', e, index);\n    };\n    const onKeyDown = (e: KeyboardEvent) => {\n      const { index } = props;\n      if (e.keyCode === 13) {\n        emit('click', e, index);\n      }\n    };\n\n    const cls = computed(() => {\n      const { prefixCls, index, value, allowHalf, focused } = props;\n      const starValue = index + 1;\n      let className = prefixCls;\n      if (value === 0 && index === 0 && focused) {\n        className += ` ${prefixCls}-focused`;\n      } else if (allowHalf && value + 0.5 >= starValue && value < starValue) {\n        className += ` ${prefixCls}-half ${prefixCls}-active`;\n        if (focused) {\n          className += ` ${prefixCls}-focused`;\n        }\n      } else {\n        className += starValue <= value ? ` ${prefixCls}-full` : ` ${prefixCls}-zero`;\n        if (starValue === value && focused) {\n          className += ` ${prefixCls}-focused`;\n        }\n      }\n      return className;\n    });\n\n    return () => {\n      const { disabled, prefixCls, characterRender, character, index, count, value } = props;\n      const characterNode =\n        typeof character === 'function'\n          ? character({\n              disabled,\n              prefixCls,\n              index,\n              count,\n              value,\n            })\n          : character;\n      let star = (\n        <li class={cls.value}>\n          <div\n            onClick={disabled ? null : onClick}\n            onKeydown={disabled ? null : onKeyDown}\n            onMousemove={disabled ? null : onHover}\n            role=\"radio\"\n            aria-checked={value > index ? 'true' : 'false'}\n            aria-posinset={index + 1}\n            aria-setsize={count}\n            tabindex={disabled ? -1 : 0}\n          >\n            <div class={`${prefixCls}-first`}>{characterNode}</div>\n            <div class={`${prefixCls}-second`}>{characterNode}</div>\n          </div>\n        </li>\n      );\n      if (characterRender) {\n        star = characterRender(star, props);\n      }\n      return star;\n    };\n  },\n});\n"
  },
  {
    "path": "components/rate/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/rate/demo/basic.vue correctly 1`] = `\n<ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/rate/demo/character.vue correctly 1`] = `\n<div>\n  <ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span></div>\n      </div>\n    </li>\n  </ul><br>\n  <ul style=\"font-size: 36px;\" class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">A</div>\n        <div class=\"ant-rate-star-second\">A</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">A</div>\n        <div class=\"ant-rate-star-second\">A</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-half ant-rate-star-active\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">A</div>\n        <div class=\"ant-rate-star-second\">A</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">A</div>\n        <div class=\"ant-rate-star-second\">A</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">A</div>\n        <div class=\"ant-rate-star-second\">A</div>\n      </div>\n    </li>\n  </ul><br>\n  <ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n    <li class=\"ant-rate-star ant-rate-star-half ant-rate-star-active\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">好</div>\n        <div class=\"ant-rate-star-second\">好</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">好</div>\n        <div class=\"ant-rate-star-second\">好</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">好</div>\n        <div class=\"ant-rate-star-second\">好</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">好</div>\n        <div class=\"ant-rate-star-second\">好</div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\">好</div>\n        <div class=\"ant-rate-star-second\">好</div>\n      </div>\n    </li>\n  </ul><br>\n</div>\n`;\n\nexports[`renders ./components/rate/demo/clear.vue correctly 1`] = `\n<div>\n  <ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n  </ul><span class=\"ant-rate-text\">allowClear: true</span><br>\n  <ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-full\">\n      <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n    <li class=\"ant-rate-star ant-rate-star-zero\">\n      <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n        <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n        <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      </div>\n    </li>\n  </ul><span class=\"ant-rate-text\">allowClear: false</span>\n</div>\n`;\n\nexports[`renders ./components/rate/demo/disabled.vue correctly 1`] = `\n<ul class=\"ant-rate ant-rate-disabled \" tabindex=\"-1\" role=\"radiogroup\">\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"-1\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"-1\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"-1\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"-1\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"-1\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/rate/demo/half.vue correctly 1`] = `\n<ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\">\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-full\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-half ant-rate-star-active\">\n    <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n  <li class=\"ant-rate-star ant-rate-star-zero\">\n    <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n      <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n      <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/rate/demo/text.vue correctly 1`] = `\n<span><ul class=\"ant-rate \" tabindex=\"0\" role=\"radiogroup\"><!----><li class=\"ant-rate-star ant-rate-star-full\"><div role=\"radio\" aria-checked=\"true\" aria-posinset=\"1\" aria-setsize=\"5\" tabindex=\"0\"><div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n<div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n</div>\n</li>\n<!---->\n<li class=\"ant-rate-star ant-rate-star-full\">\n  <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"2\" aria-setsize=\"5\" tabindex=\"0\">\n    <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n  </div>\n</li>\n<!---->\n<li class=\"ant-rate-star ant-rate-star-full\">\n  <div role=\"radio\" aria-checked=\"true\" aria-posinset=\"3\" aria-setsize=\"5\" tabindex=\"0\">\n    <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n  </div>\n</li>\n<!---->\n<li class=\"ant-rate-star ant-rate-star-zero\">\n  <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"4\" aria-setsize=\"5\" tabindex=\"0\">\n    <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n  </div>\n</li>\n<!---->\n<li class=\"ant-rate-star ant-rate-star-zero\">\n  <div role=\"radio\" aria-checked=\"false\" aria-posinset=\"5\" aria-setsize=\"5\" tabindex=\"0\">\n    <div class=\"ant-rate-star-first\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n    <div class=\"ant-rate-star-second\"><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"></path></svg></span></div>\n  </div>\n</li>\n</ul><span class=\"ant-rate-text\">normal</span></span>\n`;\n"
  },
  {
    "path": "components/rate/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('rate');\n"
  },
  {
    "path": "components/rate/__tests__/index.test.js",
    "content": "import Rate from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Rate', () => {\n  focusTest(Rate);\n  mountTest(Rate);\n});\n"
  },
  {
    "path": "components/rate/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest usage.\n\n</docs>\n<template>\n  <a-rate v-model:value=\"value\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(2);\n</script>\n"
  },
  {
    "path": "components/rate/demo/character.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 其他字符\n  en-US: Other Character\n---\n\n## zh-CN\n\n可以将星星替换为其他字符，比如字母，数字，字体图标甚至中文。\n\n## en-US\n\nReplace the default star to other character like alphabet, digit, iconfont or even Chinese word.\n\n</docs>\n<template>\n  <div>\n    <a-rate v-model:value=\"value1\" allow-half>\n      <template #character>\n        <heart-outlined />\n      </template>\n    </a-rate>\n    <br />\n    <a-rate v-model:value=\"value2\" character=\"A\" allow-half style=\"font-size: 36px\" />\n    <br />\n    <a-rate v-model:value=\"value3\" character=\"好\" allow-half />\n    <br />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { HeartOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst value1 = ref<number>(2);\nconst value2 = ref<number>(2.5);\nconst value3 = ref<number>(0.5);\n</script>\n"
  },
  {
    "path": "components/rate/demo/clear.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 清除\n  en-US: Clear star\n---\n\n## zh-CN\n\n支持允许或者禁用清除。\n\n## en-US\n\nSupport set allow to clear star when click again.\n\n</docs>\n<template>\n  <div>\n    <a-rate v-model:value=\"value1\" />\n    <span class=\"ant-rate-text\">allowClear: true</span>\n    <br />\n    <a-rate v-model:value=\"value2\" :allow-clear=\"false\" />\n    <span class=\"ant-rate-text\">allowClear: false</span>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(3);\nconst value2 = ref<number>(3);\n</script>\n"
  },
  {
    "path": "components/rate/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 只读\n  en-US: Read only\n---\n\n## zh-CN\n\n只读，无法进行鼠标交互。\n\n## en-US\n\nRead only, can't use mouse to interact.\n</docs>\n<template>\n  <a-rate :value=\"2\" disabled />\n</template>\n"
  },
  {
    "path": "components/rate/demo/half.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 半星\n  en-US: Half star\n---\n\n## zh-CN\n\n支持选中半星。\n\n## en-US\n\nSupport select half star.\n\n</docs>\n<template>\n  <a-rate v-model:value=\"value\" allow-half />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(2.5);\n</script>\n"
  },
  {
    "path": "components/rate/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <half />\n    <Text />\n    <disabled />\n    <clear />\n    <character />\n  </demo-sort>\n</template>\n\n<script>\nimport Basic from './basic.vue';\nimport Half from './half.vue';\nimport Text from './text.vue';\nimport Disabled from './disabled.vue';\nimport Clear from './clear.vue';\nimport Character from './character.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Half,\n    Text,\n    Disabled,\n    Clear,\n    Character,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/rate/demo/text.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 文案展现\n  en-US: Show copywriting\n---\n\n## zh-CN\n\n给评分组件加上文案展示。\n\n## en-US\n\nAdd copywriting in rate components.\n\n</docs>\n<template>\n  <span>\n    <a-rate v-model:value=\"value\" :tooltips=\"desc\" />\n    <span class=\"ant-rate-text\">{{ desc[value - 1] }}</span>\n  </span>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(3);\nconst desc = ref<string[]>(['terrible', 'bad', 'normal', 'good', 'wonderful']);\n</script>\n"
  },
  {
    "path": "components/rate/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Rate\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*oyOcTrB12_YAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M7_ER7GJr6wAAAAAAAAAAAAADrJ8AQ/original\n---\n\nRate component.\n\n# When To Use\n\n- Show evaluation.\n- A quick rating operation on something.\n\n## API\n\n| Property       | Description                             | type           | Default            |\n| -------------- | --------------------------------------- | -------------- | ------------------ |\n| allowClear     | whether to allow clear when click again | boolean        | true               |\n| allowHalf      | whether to allow semi selection         | boolean        | false              |\n| autofocus      | get focus when component mounted        | boolean        | false              |\n| character      | custom character of rate                | string \\| slot | `<StarOutlined />` |\n| count          | star count                              | number         | 5                  |\n| disabled       | read only, unable to interact           | boolean        | false              |\n| tooltips       | Customize tooltip by each character     | string[]       | -                  |\n| value(v-model) | current value                           | number         | -                  |\n\n### events\n\n| Events Name | Description                        | Arguments               |     |\n| ----------- | ---------------------------------- | ----------------------- | --- |\n| blur        | callback when component lose focus | Function()              | -   |\n| change      | callback when select value         | Function(value: number) | -   |\n| focus       | callback when component get focus  | Function()              | -   |\n| hoverChange | callback when hover item           | Function(value: number) | -   |\n| keydown     | callback when keydown on component | Function(event)         | -   |\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n"
  },
  {
    "path": "components/rate/index.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType, VNode } from 'vue';\nimport { watch, defineComponent, ref, reactive, onMounted } from 'vue';\nimport { initDefaultProps, findDOMNode } from '../_util/props-util';\nimport { withInstall } from '../_util/type';\nimport { getOffsetLeft } from './util';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport KeyCode from '../_util/KeyCode';\nimport StarFilled from '@ant-design/icons-vue/StarFilled';\nimport Tooltip from '../tooltip';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nimport Star from './Star';\nimport useRefs from '../_util/hooks/useRefs';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport type { Direction } from '../config-provider';\nimport type { FocusEventHandler, KeyboardEventHandler } from '../_util/EventInterface';\n\nimport useStyle from './style';\n\nexport const rateProps = () => ({\n  prefixCls: String,\n  count: Number,\n  value: Number,\n  allowHalf: { type: Boolean, default: undefined },\n  allowClear: { type: Boolean, default: undefined },\n  tooltips: Array as PropType<string[]>,\n  disabled: { type: Boolean, default: undefined },\n  character: PropTypes.any,\n  autofocus: { type: Boolean, default: undefined },\n  tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  direction: String as PropType<Direction>,\n  id: String,\n  onChange: Function as PropType<(value: number) => void>,\n  onHoverChange: Function as PropType<(value: number) => void>,\n  'onUpdate:value': Function as PropType<(value: number) => void>,\n  onFocus: Function as PropType<FocusEventHandler>,\n  onBlur: Function as PropType<FocusEventHandler>,\n  onKeydown: Function as PropType<KeyboardEventHandler>,\n});\n\nexport type RateProps = Partial<ExtractPropTypes<ReturnType<typeof rateProps>>>;\n\nconst Rate = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ARate',\n  inheritAttrs: false,\n  props: initDefaultProps(rateProps(), {\n    value: 0,\n    count: 5,\n    allowHalf: false,\n    allowClear: true,\n    tabindex: 0,\n    direction: 'ltr',\n  }),\n  // emits: ['hoverChange', 'update:value', 'change', 'focus', 'blur', 'keydown'],\n  setup(props, { slots, attrs, emit, expose }) {\n    const { prefixCls, direction } = useConfigInject('rate', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const formItemContext = useInjectFormItemContext();\n    const rateRef = ref();\n    const [setRef, starRefs] = useRefs();\n    const state = reactive({\n      value: props.value,\n      focused: false,\n      cleanedValue: null,\n      hoverValue: undefined,\n    });\n    watch(\n      () => props.value,\n      () => {\n        state.value = props.value;\n      },\n    );\n    const getStarDOM = (index: number) => {\n      return findDOMNode(starRefs.value.get(index));\n    };\n    const getStarValue = (index: number, x: number) => {\n      const reverse = direction.value === 'rtl';\n      let value = index + 1;\n      if (props.allowHalf) {\n        const starEle = getStarDOM(index);\n        const leftDis = getOffsetLeft(starEle);\n        const width = starEle.clientWidth;\n        if (reverse && x - leftDis > width / 2) {\n          value -= 0.5;\n        } else if (!reverse && x - leftDis < width / 2) {\n          value -= 0.5;\n        }\n      }\n      return value;\n    };\n    const changeValue = (value: number) => {\n      if (props.value === undefined) {\n        state.value = value;\n      }\n      emit('update:value', value);\n      emit('change', value);\n      formItemContext.onFieldChange();\n    };\n\n    const onHover = (e: MouseEvent, index: number) => {\n      const hoverValue = getStarValue(index, e.pageX);\n      if (hoverValue !== state.cleanedValue) {\n        state.hoverValue = hoverValue;\n        state.cleanedValue = null;\n      }\n      emit('hoverChange', hoverValue);\n    };\n    const onMouseLeave = () => {\n      state.hoverValue = undefined;\n      state.cleanedValue = null;\n      emit('hoverChange', undefined);\n    };\n    const onClick = (event: MouseEvent, index: number) => {\n      const { allowClear } = props;\n      const newValue = getStarValue(index, event.pageX);\n      let isReset = false;\n      if (allowClear) {\n        isReset = newValue === state.value;\n      }\n      onMouseLeave();\n      changeValue(isReset ? 0 : newValue);\n      state.cleanedValue = isReset ? newValue : null;\n    };\n    const onFocus = (e: FocusEvent) => {\n      state.focused = true;\n      emit('focus', e);\n    };\n    const onBlur = (e: FocusEvent) => {\n      state.focused = false;\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n    const onKeyDown = (event: KeyboardEvent) => {\n      const { keyCode } = event;\n      const { count, allowHalf } = props;\n      const reverse = direction.value === 'rtl';\n      if (keyCode === KeyCode.RIGHT && state.value < count && !reverse) {\n        if (allowHalf) {\n          state.value += 0.5;\n        } else {\n          state.value += 1;\n        }\n        changeValue(state.value);\n        event.preventDefault();\n      } else if (keyCode === KeyCode.LEFT && state.value > 0 && !reverse) {\n        if (allowHalf) {\n          state.value -= 0.5;\n        } else {\n          state.value -= 1;\n        }\n        changeValue(state.value);\n        event.preventDefault();\n      } else if (keyCode === KeyCode.RIGHT && state.value > 0 && reverse) {\n        if (allowHalf) {\n          state.value -= 0.5;\n        } else {\n          state.value -= 1;\n        }\n        changeValue(state.value);\n        event.preventDefault();\n      } else if (keyCode === KeyCode.LEFT && state.value < count && reverse) {\n        if (allowHalf) {\n          state.value += 0.5;\n        } else {\n          state.value += 1;\n        }\n        changeValue(state.value);\n        event.preventDefault();\n      }\n      emit('keydown', event);\n    };\n\n    const focus = () => {\n      if (!props.disabled) {\n        rateRef.value.focus();\n      }\n    };\n    const blur = () => {\n      if (!props.disabled) {\n        rateRef.value.blur();\n      }\n    };\n\n    expose({\n      focus,\n      blur,\n    });\n\n    onMounted(() => {\n      const { autofocus, disabled } = props;\n      if (autofocus && !disabled) {\n        focus();\n      }\n    });\n\n    const characterRender = (node: VNode, { index }) => {\n      const { tooltips } = props;\n      if (!tooltips) return node;\n      return <Tooltip title={tooltips[index]}>{node}</Tooltip>;\n    };\n\n    return () => {\n      const { count, allowHalf, disabled, tabindex, id = formItemContext.id.value } = props;\n      const { class: className, style } = attrs;\n      const stars = [];\n      const disabledClass = disabled ? `${prefixCls.value}-disabled` : '';\n      const character = props.character || slots.character || (() => <StarFilled />);\n      for (let index = 0; index < count; index++) {\n        stars.push(\n          <Star\n            ref={setRef(index)}\n            key={index}\n            index={index}\n            count={count}\n            disabled={disabled}\n            prefixCls={`${prefixCls.value}-star`}\n            allowHalf={allowHalf}\n            value={state.hoverValue === undefined ? state.value : state.hoverValue}\n            onClick={onClick}\n            onHover={onHover}\n            character={character}\n            characterRender={characterRender}\n            focused={state.focused}\n          />,\n        );\n      }\n      const rateClassName = classNames(prefixCls.value, disabledClass, className, {\n        [hashId.value]: true,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      });\n      return wrapSSR(\n        <ul\n          {...attrs}\n          id={id}\n          class={rateClassName}\n          style={style as CSSProperties}\n          onMouseleave={disabled ? null : onMouseLeave}\n          tabindex={disabled ? -1 : tabindex}\n          onFocus={disabled ? null : onFocus}\n          onBlur={disabled ? null : onBlur}\n          onKeydown={disabled ? null : onKeyDown}\n          ref={rateRef}\n          role=\"radiogroup\"\n        >\n          {stars}\n        </ul>,\n      );\n    };\n  },\n});\n\nexport default withInstall(Rate);\n"
  },
  {
    "path": "components/rate/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Rate\nsubtitle: 评分\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*oyOcTrB12_YAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*M7_ER7GJr6wAAAAAAAAAAAAADrJ8AQ/original\n---\n\n评分组件。\n\n## 何时使用\n\n- 对评价进行展示。\n- 对事物进行快速的评级操作。\n\n## API\n\n| 属性           | 说明                   | 类型           | 默认值             |\n| -------------- | ---------------------- | -------------- | ------------------ |\n| allowClear     | 是否允许再次点击后清除 | boolean        | true               |\n| allowHalf      | 是否允许半选           | boolean        | false              |\n| autofocus      | 自动获取焦点           | boolean        | false              |\n| character      | 自定义字符             | string \\| slot | `<StarOutlined />` |\n| count          | star 总数              | number         | 5                  |\n| disabled       | 只读，无法进行交互     | boolean        | false              |\n| tooltips       | 自定义每项的提示信息   | string[]       | -                  |\n| value(v-model) | 当前数，受控值         | number         | -                  |\n\n### 事件\n\n| 事件名称    | 说明                     | 回调参数                |     |\n| ----------- | ------------------------ | ----------------------- | --- |\n| blur        | 失去焦点时的回调         | Function()              | -   |\n| change      | 选择时的回调             | Function(value: number) | -   |\n| focus       | 获取焦点时的回调         | Function()              | -   |\n| hoverChange | 鼠标经过时数值变化的回调 | Function(value: number) | -   |\n| keydown     | 按键回调                 | Function(event)         | -   |\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n"
  },
  {
    "path": "components/rate/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport type ComponentToken = {};\n\ninterface RateToken extends FullToken<'Rate'> {\n  rateStarColor: string;\n  rateStarSize: number;\n  rateStarHoverScale: CSSObject['transform'];\n  defaultColor: string;\n}\n\nconst genRateStarStyle: GenerateStyle<RateToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-star`]: {\n      position: 'relative',\n      display: 'inline-block',\n      color: 'inherit',\n      cursor: 'pointer',\n\n      '&:not(:last-child)': {\n        marginInlineEnd: token.marginXS,\n      },\n\n      '> div': {\n        transition: `all ${token.motionDurationMid}, outline 0s`,\n\n        '&:hover': {\n          transform: token.rateStarHoverScale,\n        },\n\n        '&:focus': {\n          outline: 0,\n        },\n\n        '&:focus-visible': {\n          outline: `${token.lineWidth}px dashed ${token.rateStarColor}`,\n          transform: token.rateStarHoverScale,\n        },\n      },\n\n      '&-first, &-second': {\n        color: token.defaultColor,\n        transition: `all ${token.motionDurationMid}`,\n        userSelect: 'none',\n\n        [token.iconCls]: {\n          verticalAlign: 'middle',\n        },\n      },\n\n      '&-first': {\n        position: 'absolute',\n        top: 0,\n        insetInlineStart: 0,\n        width: '50%',\n        height: '100%',\n        overflow: 'hidden',\n        opacity: 0,\n      },\n\n      [`&-half ${componentCls}-star-first, &-half ${componentCls}-star-second`]: {\n        opacity: 1,\n      },\n\n      [`&-half ${componentCls}-star-first, &-full ${componentCls}-star-second`]: {\n        color: 'inherit',\n      },\n    },\n  };\n};\n\nconst genRateRtlStyle = (token: RateToken): CSSObject => ({\n  [`&-rtl${token.componentCls}`]: {\n    direction: 'rtl',\n  },\n});\n\nconst genRateStyle: GenerateStyle<RateToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      display: 'inline-block',\n      margin: 0,\n      padding: 0,\n      color: token.rateStarColor,\n      fontSize: token.rateStarSize,\n      lineHeight: 'unset',\n      listStyle: 'none',\n      outline: 'none',\n\n      // disable styles\n      [`&-disabled${componentCls} ${componentCls}-star`]: {\n        cursor: 'default',\n\n        '&:hover': {\n          transform: 'scale(1)',\n        },\n      },\n\n      // star styles\n      ...genRateStarStyle(token),\n\n      // text styles\n      [`+ ${componentCls}-text`]: {\n        display: 'inline-block',\n        marginInlineStart: token.marginXS,\n        fontSize: token.fontSize,\n      },\n\n      // rtl styles\n      ...genRateRtlStyle(token),\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Rate', token => {\n  const { colorFillContent } = token;\n\n  const rateToken = mergeToken<RateToken>(token, {\n    rateStarColor: token['yellow-6'],\n    rateStarSize: token.controlHeightLG * 0.5,\n    rateStarHoverScale: 'scale(1.1)',\n    defaultColor: colorFillContent,\n  });\n  return [genRateStyle(rateToken)];\n});\n"
  },
  {
    "path": "components/rate/util.ts",
    "content": "function getScroll(w: Window) {\n  let ret = w.scrollX;\n  const method = 'scrollLeft';\n  if (typeof ret !== 'number') {\n    const d = w.document;\n    // ie6,7,8 standard mode\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      // quirks mode\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\n\nfunction getClientPosition(elem: HTMLElement) {\n  let x: number;\n  let y: number;\n  const doc = elem.ownerDocument;\n  const { body } = doc;\n  const docElem = doc && doc.documentElement;\n  const box = elem.getBoundingClientRect();\n  x = box.left;\n  y = box.top;\n  x -= docElem.clientLeft || body.clientLeft || 0;\n  y -= docElem.clientTop || body.clientTop || 0;\n  return {\n    left: x,\n    top: y,\n  };\n}\n\nexport function getOffsetLeft(el: HTMLElement) {\n  const pos = getClientPosition(el);\n  const doc = el.ownerDocument;\n  // Only IE use `parentWindow`\n  const w: Window = doc.defaultView || (doc as any).parentWindow;\n  pos.left += getScroll(w);\n  return pos.left;\n}\n"
  },
  {
    "path": "components/result/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/result/demo/403.vue correctly 1`] = `\n<div class=\"ant-result ant-result-403\">\n  <div class=\"ant-result-icon ant-result-image\"><svg width=\"251\" height=\"294\">\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <path d=\"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023\" fill=\"#E4EBF7\"></path>\n        <path d=\"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65\" fill=\"#FFF\"></path>\n        <path d=\"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path d=\"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126\" fill=\"#FFF\"></path>\n        <path d=\"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873\" fill=\"#FFF\"></path>\n        <path d=\"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path d=\"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375\" fill=\"#FFF\"></path>\n        <path d=\"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path stroke=\"#FFF\" stroke-width=\"2\" d=\"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668\"></path>\n        <path d=\"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321\" fill=\"#A26EF4\"></path>\n        <path d=\"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734\" fill=\"#FFF\"></path>\n        <path d=\"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717\" fill=\"#FFF\"></path>\n        <path d=\"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61\" fill=\"#5BA02E\"></path>\n        <path d=\"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611\" fill=\"#92C110\"></path>\n        <path d=\"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17\" fill=\"#F2D7AD\"></path>\n        <path d=\"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085\" fill=\"#FFF\"></path>\n        <path d=\"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233\" fill=\"#FFC6A0\"></path>\n        <path d=\"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367\" fill=\"#FFB594\"></path>\n        <path d=\"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95\" fill=\"#FFC6A0\"></path>\n        <path d=\"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929\" fill=\"#FFF\"></path>\n        <path d=\"M78.18 94.656s.911 7.41-4.914 13.078\" stroke=\"#E4EBF7\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437\" stroke=\"#E4EBF7\" stroke-width=\".932\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z\" fill=\"#FFC6A0\"></path>\n        <path d=\"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91\" fill=\"#FFB594\"></path>\n        <path d=\"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103\" fill=\"#5C2552\"></path>\n        <path d=\"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145\" fill=\"#FFC6A0\"></path>\n        <path stroke=\"#DB836E\" stroke-width=\"1.145\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406\"></path>\n        <path d=\"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32\" fill=\"#552950\"></path>\n        <path d=\"M91.132 86.786s5.269 4.957 12.679 2.327\" stroke=\"#DB836E\" stroke-width=\"1.145\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25\" fill=\"#DB836E\"></path>\n        <path d=\"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073\" stroke=\"#5C2552\" stroke-width=\"1.526\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254\" stroke=\"#DB836E\" stroke-width=\"1.145\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008\" stroke=\"#E4EBF7\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M66.508 86.763s-1.598 8.83-6.697 14.078\" stroke=\"#E4EBF7\" stroke-width=\"1.114\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M128.31 87.934s3.013 4.121 4.06 11.785\" stroke=\"#E4EBF7\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M64.09 84.816s-6.03 9.912-13.607 9.903\" stroke=\"#DB836E\" stroke-width=\".795\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73\" fill=\"#FFC6A0\"></path>\n        <path d=\"M130.532 85.488s4.588 5.757 11.619 6.214\" stroke=\"#DB836E\" stroke-width=\".75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M121.708 105.73s-.393 8.564-1.34 13.612\" stroke=\"#E4EBF7\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M115.784 161.512s-3.57-1.488-2.678-7.14\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68\" fill=\"#CBD1D1\"></path>\n        <path d=\"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z\" fill=\"#2B0849\"></path>\n        <path d=\"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62\" fill=\"#A4AABA\"></path>\n        <path d=\"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z\" fill=\"#CBD1D1\"></path>\n        <path d=\"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078\" fill=\"#2B0849\"></path>\n        <path d=\"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15\" fill=\"#A4AABA\"></path>\n        <path d=\"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954\" fill=\"#7BB2F9\"></path>\n        <path d=\"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M108.459 220.905s2.759-1.104 6.07-3.863\" stroke=\"#648BD8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017\" fill=\"#192064\"></path>\n        <path d=\"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806\" fill=\"#FFF\"></path>\n        <path d=\"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64\" fill=\"#192064\"></path>\n        <path d=\"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n      </g>\n    </svg></div>\n  <div class=\"ant-result-title\">403</div>\n  <div class=\"ant-result-subtitle\">Sorry, you are not authorized to access this page.</div>\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Back Home</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/404.vue correctly 1`] = `\n<div class=\"ant-result ant-result-404\">\n  <div class=\"ant-result-icon ant-result-image\"><svg width=\"252\" height=\"294\">\n      <defs>\n        <path d=\"M0 .387h251.772v251.772H0z\"></path>\n      </defs>\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(0 .012)\">\n          <mask fill=\"#fff\"></mask>\n          <path d=\"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321\" fill=\"#E4EBF7\" mask=\"url(#b)\"></path>\n        </g>\n        <path d=\"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66\" fill=\"#FFF\"></path>\n        <path d=\"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path d=\"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175\" fill=\"#FFF\"></path>\n        <path d=\"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932\" fill=\"#FFF\"></path>\n        <path d=\"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path d=\"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382\" fill=\"#FFF\"></path>\n        <path d=\"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path stroke=\"#FFF\" stroke-width=\"2\" d=\"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39\"></path>\n        <path d=\"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742\" fill=\"#FFF\"></path>\n        <path d=\"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48\" fill=\"#1890FF\"></path>\n        <path d=\"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894\" fill=\"#FFF\"></path>\n        <path d=\"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88\" fill=\"#FFB594\"></path>\n        <path d=\"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624\" fill=\"#FFC6A0\"></path>\n        <path d=\"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682\" fill=\"#FFF\"></path>\n        <path d=\"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573\" fill=\"#CBD1D1\"></path>\n        <path d=\"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z\" fill=\"#2B0849\"></path>\n        <path d=\"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558\" fill=\"#A4AABA\"></path>\n        <path d=\"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z\" fill=\"#CBD1D1\"></path>\n        <path d=\"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062\" fill=\"#2B0849\"></path>\n        <path d=\"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15\" fill=\"#A4AABA\"></path>\n        <path d=\"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165\" fill=\"#7BB2F9\"></path>\n        <path d=\"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M107.275 222.1s2.773-1.11 6.102-3.884\" stroke=\"#648BD8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038\" fill=\"#192064\"></path>\n        <path d=\"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81\" fill=\"#FFF\"></path>\n        <path d=\"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642\" fill=\"#192064\"></path>\n        <path d=\"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146\" stroke=\"#648BD8\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268\" fill=\"#FFC6A0\"></path>\n        <path d=\"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456\" fill=\"#FFC6A0\"></path>\n        <path d=\"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z\" fill=\"#520038\"></path>\n        <path d=\"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254\" fill=\"#552950\"></path>\n        <path stroke=\"#DB836E\" stroke-width=\"1.118\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M110.13 74.84l-.896 1.61-.298 4.357h-2.228\"></path>\n        <path d=\"M110.846 74.481s1.79-.716 2.506.537\" stroke=\"#5C2552\" stroke-width=\"1.118\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67\" stroke=\"#DB836E\" stroke-width=\"1.118\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M103.287 72.93s1.83 1.113 4.137.954\" stroke=\"#5C2552\" stroke-width=\"1.118\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639\" stroke=\"#DB836E\" stroke-width=\"1.118\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206\" stroke=\"#E4EBF7\" stroke-width=\"1.101\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M129.405 122.865s-5.272 7.403-9.422 10.768\" stroke=\"#E4EBF7\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M119.306 107.329s.452 4.366-2.127 32.062\" stroke=\"#E4EBF7\" stroke-width=\"1.101\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01\" fill=\"#F2D7AD\"></path>\n        <path d=\"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92\" fill=\"#F4D19D\"></path>\n        <path d=\"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z\" fill=\"#F2D7AD\"></path>\n        <path fill=\"#CC9B6E\" d=\"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z\"></path>\n        <path d=\"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83\" fill=\"#F4D19D\"></path>\n        <path fill=\"#CC9B6E\" d=\"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z\"></path>\n        <path fill=\"#CC9B6E\" d=\"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z\"></path>\n        <path d=\"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238\" fill=\"#FFC6A0\"></path>\n        <path d=\"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044\" stroke=\"#DB836E\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617\" stroke=\"#DB836E\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754\" stroke=\"#DB836E\" stroke-width=\"1.051\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647\" fill=\"#5BA02E\"></path>\n        <path d=\"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647\" fill=\"#92C110\"></path>\n        <path d=\"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187\" fill=\"#F2D7AD\"></path>\n        <path d=\"M88.979 89.48s7.776 5.384 16.6 2.842\" stroke=\"#E4EBF7\" stroke-width=\"1.101\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n      </g>\n    </svg></div>\n  <div class=\"ant-result-title\">404</div>\n  <div class=\"ant-result-subtitle\">Sorry, the page you visited does not exist.</div>\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Back Home</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/500.vue correctly 1`] = `\n<div class=\"ant-result ant-result-500\">\n  <div class=\"ant-result-icon ant-result-image\"><svg width=\"254\" height=\"294\">\n      <defs>\n        <path d=\"M0 .335h253.49v253.49H0z\"></path>\n        <path d=\"M0 293.665h253.49V.401H0z\"></path>\n      </defs>\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(0 .067)\">\n          <mask fill=\"#fff\"></mask>\n          <path d=\"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134\" fill=\"#E4EBF7\" mask=\"url(#b)\"></path>\n        </g>\n        <path d=\"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671\" fill=\"#FFF\"></path>\n        <path d=\"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861\" stroke=\"#FFF\" stroke-width=\"2\"></path>\n        <path d=\"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238\" fill=\"#FFF\"></path>\n        <path d=\"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775\" fill=\"#FFF\"></path>\n        <path d=\"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68\" fill=\"#FF603B\"></path>\n        <path d=\"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733\" fill=\"#FFF\"></path>\n        <path d=\"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487\" fill=\"#FFB594\"></path>\n        <path d=\"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235\" fill=\"#FFF\"></path>\n        <path d=\"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246\" fill=\"#FFB594\"></path>\n        <path d=\"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508\" fill=\"#FFC6A0\"></path>\n        <path d=\"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z\" fill=\"#520038\"></path>\n        <path d=\"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26\" fill=\"#552950\"></path>\n        <path stroke=\"#DB836E\" stroke-width=\"1.063\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M99.206 73.644l-.9 1.62-.3 4.38h-2.24\"></path>\n        <path d=\"M99.926 73.284s1.8-.72 2.52.54\" stroke=\"#5C2552\" stroke-width=\"1.117\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68\" stroke=\"#DB836E\" stroke-width=\"1.117\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M92.326 71.724s1.84 1.12 4.16.96\" stroke=\"#5C2552\" stroke-width=\"1.117\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954\" stroke=\"#DB836E\" stroke-width=\"1.063\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044\" stroke=\"#E4EBF7\" stroke-width=\"1.136\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583\" fill=\"#FFF\"></path>\n        <path d=\"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75\" fill=\"#FFC6A0\"></path>\n        <path d=\"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713\" fill=\"#FFC6A0\"></path>\n        <path d=\"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51\" stroke=\"#E4EBF7\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16\" fill=\"#FFC6A0\"></path>\n        <path d=\"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575\" fill=\"#FFF\"></path>\n        <path d=\"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47\" fill=\"#CBD1D1\"></path>\n        <path d=\"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z\" fill=\"#2B0849\"></path>\n        <path d=\"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671\" fill=\"#A4AABA\"></path>\n        <path d=\"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z\" fill=\"#CBD1D1\"></path>\n        <path d=\"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162\" fill=\"#2B0849\"></path>\n        <path d=\"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156\" fill=\"#A4AABA\"></path>\n        <path d=\"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69\" fill=\"#7BB2F9\"></path>\n        <path d=\"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034\" stroke=\"#648BD8\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M96.973 219.373s2.882-1.153 6.34-4.034\" stroke=\"#648BD8\" stroke-width=\"1.032\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07\" stroke=\"#648BD8\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62\" fill=\"#192064\"></path>\n        <path d=\"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843\" fill=\"#FFF\"></path>\n        <path d=\"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668\" fill=\"#192064\"></path>\n        <path d=\"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513\" stroke=\"#648BD8\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72\" stroke=\"#E4EBF7\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69\" fill=\"#FFC6A0\"></path>\n        <path d=\"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593\" stroke=\"#DB836E\" stroke-width=\".774\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762\" stroke=\"#E59788\" stroke-width=\".774\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594\" fill=\"#FFC6A0\"></path>\n        <path d=\"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12\" stroke=\"#E59788\" stroke-width=\".774\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M109.278 112.533s3.38-3.613 7.575-4.662\" stroke=\"#E4EBF7\" stroke-width=\"1.085\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M107.375 123.006s9.697-2.745 11.445-.88\" stroke=\"#E59788\" stroke-width=\".774\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955\" stroke=\"#BFCDDD\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        <path d=\"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01\" fill=\"#A3B4C6\"></path>\n        <path d=\"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813\" fill=\"#A3B4C6\"></path>\n        <mask fill=\"#fff\"></mask>\n        <path fill=\"#A3B4C6\" mask=\"url(#d)\" d=\"M154.098 190.096h70.513v-84.617h-70.513z\"></path>\n        <path d=\"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208\" fill=\"#BFCDDD\" mask=\"url(#d)\"></path>\n        <path d=\"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802\" fill=\"#FFF\" mask=\"url(#d)\"></path>\n        <path d=\"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209\" fill=\"#BFCDDD\" mask=\"url(#d)\"></path>\n        <path d=\"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751\" stroke=\"#7C90A5\" stroke-width=\"1.124\" stroke-linecap=\"round\" stroke-linejoin=\"round\" mask=\"url(#d)\"></path>\n        <path d=\"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802\" fill=\"#FFF\" mask=\"url(#d)\"></path>\n        <path d=\"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407\" fill=\"#BFCDDD\" mask=\"url(#d)\"></path>\n        <path d=\"M177.259 207.217v11.52M201.05 207.217v11.52\" stroke=\"#A3B4C6\" stroke-width=\"1.124\" stroke-linecap=\"round\" stroke-linejoin=\"round\" mask=\"url(#d)\"></path>\n        <path d=\"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422\" fill=\"#5BA02E\" mask=\"url(#d)\"></path>\n        <path d=\"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423\" fill=\"#92C110\" mask=\"url(#d)\"></path>\n        <path d=\"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209\" fill=\"#F2D7AD\" mask=\"url(#d)\"></path>\n      </g>\n    </svg></div>\n  <div class=\"ant-result-title\">500</div>\n  <div class=\"ant-result-subtitle\">Sorry, the server is wrong.</div>\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Back Home</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/customIcon.vue correctly 1`] = `\n<div class=\"ant-result ant-result-info\">\n  <div class=\"ant-result-icon\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" fill=\"#1890ff\"></path><path d=\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 018-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 018 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" fill=\"#e6f7ff\"></path><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4zm-24-112a48 48 0 1096 0 48 48 0 10-96 0z\" fill=\"#1890ff\"></path></svg></span></div>\n  <div class=\"ant-result-title\">Great, we have done all the operations!</div>\n  <!---->\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Next</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/error.vue correctly 1`] = `\n<div class=\"ant-result ant-result-error\">\n  <div class=\"ant-result-icon\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></div>\n  <div class=\"ant-result-title\">Submission Failed</div>\n  <div class=\"ant-result-subtitle\">Please check and modify the following information before resubmitting.</div>\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Go Console</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Buy Again</span>\n    </button></div>\n  <div class=\"ant-result-content\">\n    <div class=\"desc\">\n      <p style=\"font-size: 16px;\"><strong>The content you submitted has the following error:</strong></p>\n      <p><span role=\"img\" aria-label=\"close-circle\" style=\"color: red;\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"></path><path d=\"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span> Your account has been frozen <a>Thaw immediately &gt;</a></p>\n      <p><span role=\"img\" aria-label=\"close-circle\" style=\"color: red;\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"></path><path d=\"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span> Your account is not yet eligible to apply <a>Apply Unlock &gt;</a></p>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/result/demo/info.vue correctly 1`] = `\n<div class=\"ant-result ant-result-info\">\n  <div class=\"ant-result-icon\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span></div>\n  <div class=\"ant-result-title\">Your operation has been executed</div>\n  <!---->\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Go Console</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/success.vue correctly 1`] = `\n<div class=\"ant-result ant-result-success\">\n  <div class=\"ant-result-icon\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"></path></svg></span></div>\n  <div class=\"ant-result-title\">Successfully Purchased Cloud Server ECS!</div>\n  <div class=\"ant-result-subtitle\">Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.</div>\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Go Console</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Buy Again</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/result/demo/warning.vue correctly 1`] = `\n<div class=\"ant-result ant-result-warning\">\n  <div class=\"ant-result-icon\"><span role=\"img\" aria-label=\"warning\" class=\"anticon anticon-warning\"><svg focusable=\"false\" class=\"\" data-icon=\"warning\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\"></path></svg></span></div>\n  <div class=\"ant-result-title\">There are some problems with your operation.</div>\n  <!---->\n  <div class=\"ant-result-extra\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Go Console</span>\n    </button></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/result/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('result');\n"
  },
  {
    "path": "components/result/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Result from '../index';\nimport Button from '../../button';\nimport { sleep } from '../../../tests/utils';\n\ndescribe('Result', () => {\n  it('🙂  successPercent should decide the progress status when it exists', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Result\n            status=\"success\"\n            title=\"Successfully Purchased Cloud Server ECS!\"\n            subTitle=\"Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.\"\n            extra={\n              <Button type=\"primary\" key=\"console\">\n                Go Console\n              </Button>\n            }\n          />\n        );\n      },\n    });\n    expect(wrapper.findAll('.anticon-check-circle')).toHaveLength(1);\n  });\n\n  it('🙂  different status, different class', async () => {\n    const wrapper = mount(Result, { props: { status: 'warning' }, sync: false });\n    expect(wrapper.findAll('.ant-result-warning')).toHaveLength(1);\n\n    wrapper.setProps({\n      status: 'error',\n    });\n\n    await sleep();\n    expect(wrapper.findAll('.ant-result-error')).toHaveLength(1);\n\n    wrapper.setProps({\n      status: '500',\n    });\n    await sleep();\n    expect(wrapper.findAll('.ant-result-500')).toHaveLength(1);\n  });\n\n  it('🙂  When status = 404, the icon is an image', () => {\n    const wrapper = mount({\n      render() {\n        return <Result status=\"404\" />;\n      },\n    });\n    expect(wrapper.findAll('.ant-result-404 .ant-result-image')).toHaveLength(1);\n  });\n\n  it('🙂  When extra is undefined, the extra dom is undefined', () => {\n    const wrapper = mount({\n      render() {\n        return <Result status=\"404\" />;\n      },\n    });\n    expect(wrapper.findAll('.ant-result-extra')).toHaveLength(0);\n  });\n\n  it('🙂  result should support className', () => {\n    const wrapper = mount({\n      render() {\n        return <Result status=\"404\" title=\"404\" class=\"my-result\" />;\n      },\n    });\n    expect(wrapper.findAll('.ant-result.my-result')).toHaveLength(1);\n  });\n});\n"
  },
  {
    "path": "components/result/demo/403.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 403\n  en-US: 403\n---\n\n## zh-CN\n\n你没有此页面的访问权限。\n\n## en-US\n\nyou are not authorized to access this page.\n\n</docs>\n\n<template>\n  <a-result status=\"403\" title=\"403\" sub-title=\"Sorry, you are not authorized to access this page.\">\n    <template #extra>\n      <a-button type=\"primary\">Back Home</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/demo/404.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 404\n  en-US: 404\n---\n\n## zh-CN\n\n此页面未找到。\n\n## en-US\n\nThe page you visited does not exist.\n\n</docs>\n\n<template>\n  <a-result status=\"404\" title=\"404\" sub-title=\"Sorry, the page you visited does not exist.\">\n    <template #extra>\n      <a-button type=\"primary\">Back Home</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/demo/500.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 500\n  en-US: 500\n---\n\n## zh-CN\n\n服务器发生了错误。\n\n## en-US\n\nThe server is wrong.\n\n</docs>\n\n<template>\n  <a-result status=\"500\" title=\"500\" sub-title=\"Sorry, the server is wrong.\">\n    <template #extra>\n      <a-button type=\"primary\">Back Home</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/demo/customIcon.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 自定义 icon\n  en-US: Custom icon\n---\n\n## zh-CN\n\n自定义 icon。\n\n## en-US\n\nCustom icon.\n\n</docs>\n\n<template>\n  <a-result title=\"Great, we have done all the operations!\">\n    <template #icon>\n      <smile-twoTone />\n    </template>\n    <template #extra>\n      <a-button type=\"primary\">Next</a-button>\n    </template>\n  </a-result>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileTwoTone } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/result/demo/error.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: Error\n  en-US: Error\n---\n\n## zh-CN\n\n复杂的错误反馈。\n\n## en-US\n\nComplex error feedback.\n\n</docs>\n\n<template>\n  <a-result\n    status=\"error\"\n    title=\"Submission Failed\"\n    sub-title=\"Please check and modify the following information before resubmitting.\"\n  >\n    <template #extra>\n      <a-button key=\"console\" type=\"primary\">Go Console</a-button>\n      <a-button key=\"buy\">Buy Again</a-button>\n    </template>\n\n    <div class=\"desc\">\n      <p style=\"font-size: 16px\">\n        <strong>The content you submitted has the following error:</strong>\n      </p>\n      <p>\n        <close-circle-outlined :style=\"{ color: 'red' }\" />\n        Your account has been frozen\n        <a>Thaw immediately &gt;</a>\n      </p>\n      <p>\n        <close-circle-outlined :style=\"{ color: 'red' }\" />\n        Your account is not yet eligible to apply\n        <a>Apply Unlock &gt;</a>\n      </p>\n    </div>\n  </a-result>\n</template>\n<script lang=\"ts\" setup>\nimport { CloseCircleOutlined } from '@ant-design/icons-vue';\n</script>\n<style scoped>\n.desc p {\n  margin-bottom: 1em;\n}\n</style>\n"
  },
  {
    "path": "components/result/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <success />\n    <info />\n    <warning />\n    <denied />\n    <find-less />\n    <server-error />\n    <error />\n    <custom-icon />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Success from './success.vue';\nimport Info from './info.vue';\nimport Warning from './warning.vue';\nimport Denied from './403.vue';\nimport FindLess from './404.vue';\nimport ServerError from './500.vue';\nimport Error from './error.vue';\nimport CustomIcon from './customIcon.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Success,\n    Info,\n    Warning,\n    Denied,\n    FindLess,\n    ServerError,\n    Error,\n    CustomIcon,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/result/demo/info.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: Info\n  en-US: Info\n---\n\n## zh-CN\n\n展示处理结果。\n\n## en-US\n\nShow processing results.\n\n</docs>\n\n<template>\n  <a-result title=\"Your operation has been executed\">\n    <template #extra>\n      <a-button key=\"console\" type=\"primary\">Go Console</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/demo/success.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: Success\n  en-US: Success\n---\n\n## zh-CN\n\n成功的结果。\n\n## en-US\n\nShow successful results.\n\n</docs>\n\n<template>\n  <a-result\n    status=\"success\"\n    title=\"Successfully Purchased Cloud Server ECS!\"\n    sub-title=\"Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.\"\n  >\n    <template #extra>\n      <a-button key=\"console\" type=\"primary\">Go Console</a-button>\n      <a-button key=\"buy\">Buy Again</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/demo/warning.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: Warning\n  en-US: Warning\n---\n\n## zh-CN\n\n警告类型的结果。\n\n## en-US\n\nThe result of the warning.\n\n</docs>\n\n<template>\n  <a-result status=\"warning\" title=\"There are some problems with your operation.\">\n    <template #extra>\n      <a-button key=\"console\" type=\"primary\">Go Console</a-button>\n    </template>\n  </a-result>\n</template>\n"
  },
  {
    "path": "components/result/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Result\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-e2IRroDJyEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-0kxQrbHx2kAAAAAAAAAAAAADrJ8AQ/original\n---\n\nUsed to feed back the results of a series of operational tasks.\n\n## When To Use\n\nUse when important operations need to inform the user to process the results and the feedback is more complicated.\n\n## API\n\n| Property | Description | Type | Default |  |  |  |  |  |  |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| extra | operating area | slot | - |  |  |  |  |  |  |\n| icon | custom back icon | slot | - |  |  |  |  |  |  |\n| status | result status,decide icons and colors | `success` \\| `error` \\| `info` \\| `warning` \\| `404` \\| `403` \\| `500` | 'info' |\n| subTitle | subTitle string | string \\| VNode \\| slot | - |  |  |  |  |  |  |\n| title | title string | string \\| VNode \\| slot | - |  |  |  |  |  |  |\n"
  },
  {
    "path": "components/result/index.tsx",
    "content": "import type { App, VNodeTypes, Plugin, ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled';\nimport WarningFilled from '@ant-design/icons-vue/WarningFilled';\nimport noFound from './noFound';\nimport serverError from './serverError';\nimport unauthorized from './unauthorized';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\nimport type { CustomSlotsType } from '../_util/type';\n\nimport useStyle from './style';\n\nexport const IconMap = {\n  success: CheckCircleFilled,\n  error: CloseCircleFilled,\n  info: ExclamationCircleFilled,\n  warning: WarningFilled,\n};\n\nexport const ExceptionMap = {\n  '404': noFound,\n  '500': serverError,\n  '403': unauthorized,\n};\n\nexport type ExceptionStatusType = 403 | 404 | 500 | '403' | '404' | '500';\nexport type ResultStatusType = ExceptionStatusType | keyof typeof IconMap;\n\n// ExceptionImageMap keys\nconst ExceptionStatus = Object.keys(ExceptionMap);\n\nexport const resultProps = () => ({\n  prefixCls: String,\n  icon: PropTypes.any,\n  status: { type: [Number, String] as PropType<ResultStatusType>, default: 'info' },\n  title: PropTypes.any,\n  subTitle: PropTypes.any,\n  extra: PropTypes.any,\n});\n\nexport type ResultProps = Partial<ExtractPropTypes<ReturnType<typeof resultProps>>>;\n\nconst renderIcon = (prefixCls: string, { status, icon }) => {\n  if (ExceptionStatus.includes(`${status}`)) {\n    const SVGComponent = ExceptionMap[status];\n    return (\n      <div class={`${prefixCls}-icon ${prefixCls}-image`}>\n        <SVGComponent />\n      </div>\n    );\n  }\n  const IconComponent = IconMap[status];\n  const iconNode = icon || <IconComponent />;\n  return <div class={`${prefixCls}-icon`}>{iconNode}</div>;\n};\n\nconst renderExtra = (prefixCls: string, extra: VNodeTypes) =>\n  extra && <div class={`${prefixCls}-extra`}>{extra}</div>;\n\nconst Result = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AResult',\n  inheritAttrs: false,\n  props: resultProps(),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    subTitle?: any;\n    icon?: any;\n    extra?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('result', props);\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const className = computed(() =>\n      classNames(prefixCls.value, hashId.value, `${prefixCls.value}-${props.status}`, {\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      }),\n    );\n    return () => {\n      const title = props.title ?? slots.title?.();\n      const subTitle = props.subTitle ?? slots.subTitle?.();\n      const icon = props.icon ?? slots.icon?.();\n      const extra = props.extra ?? slots.extra?.();\n      const pre = prefixCls.value;\n      return wrapSSR(\n        <div {...attrs} class={[className.value, attrs.class]}>\n          {renderIcon(pre, { status: props.status, icon })}\n          <div class={`${pre}-title`}>{title}</div>\n          {subTitle && <div class={`${pre}-subtitle`}>{subTitle}</div>}\n          {renderExtra(pre, extra)}\n          {slots.default && <div class={`${pre}-content`}>{slots.default()}</div>}\n        </div>,\n      );\n    };\n  },\n});\n\n/* add resource */\nResult.PRESENTED_IMAGE_403 = ExceptionMap[403];\nResult.PRESENTED_IMAGE_404 = ExceptionMap[404];\nResult.PRESENTED_IMAGE_500 = ExceptionMap[500];\n\n/* istanbul ignore next */\nResult.install = function (app: App) {\n  app.component(Result.name, Result);\n  return app;\n};\n\nexport default Result as typeof Result &\n  Plugin & {\n    readonly PRESENTED_IMAGE_403: typeof unauthorized;\n    readonly PRESENTED_IMAGE_404: typeof noFound;\n    readonly PRESENTED_IMAGE_500: typeof serverError;\n  };\n"
  },
  {
    "path": "components/result/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Result\nsubtitle: 结果\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-e2IRroDJyEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-0kxQrbHx2kAAAAAAAAAAAAADrJ8AQ/original\n---\n\n用于反馈一系列操作任务的处理结果。\n\n## 何时使用\n\n当有重要操作需告知用户处理结果，且反馈内容较为复杂时使用。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 |  |  |  |  |  |  |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| extra | 操作区 | slot | - |  |  |  |  |  |  |\n| icon | 自定义 icon | slot | - |  |  |  |  |  |  |\n| status | 结果的状态,决定图标和颜色 | `success` \\| `error` \\| `info` \\| `warning` \\| `404` \\| `403` \\| `500` | 'info' |\n| subTitle | subTitle 文字 | string \\| VNode \\| slot | - |  |  |  |  |  |  |\n| title | title 文字 | string \\| VNode \\| slot | - |  |  |  |  |  |  |\n"
  },
  {
    "path": "components/result/noFound.tsx",
    "content": "const NoFound = () => {\n  return (\n    <svg width=\"252\" height=\"294\">\n      <defs>\n        <path d=\"M0 .387h251.772v251.772H0z\" />\n      </defs>\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(0 .012)\">\n          <mask fill=\"#fff\" />\n          <path\n            d=\"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321\"\n            fill=\"#E4EBF7\"\n            mask=\"url(#b)\"\n          />\n        </g>\n        <path\n          d=\"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          d=\"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          d=\"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n          d=\"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39\"\n        />\n        <path\n          d=\"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48\"\n          fill=\"#1890FF\"\n        />\n        <path\n          d=\"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88\"\n          fill=\"#FFB594\"\n        />\n        <path\n          d=\"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165\"\n          fill=\"#7BB2F9\"\n        />\n        <path\n          d=\"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M107.275 222.1s2.773-1.11 6.102-3.884\"\n          stroke=\"#648BD8\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z\"\n          fill=\"#520038\"\n        />\n        <path\n          d=\"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254\"\n          fill=\"#552950\"\n        />\n        <path\n          stroke=\"#DB836E\"\n          stroke-width=\"1.118\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          d=\"M110.13 74.84l-.896 1.61-.298 4.357h-2.228\"\n        />\n        <path\n          d=\"M110.846 74.481s1.79-.716 2.506.537\"\n          stroke=\"#5C2552\"\n          stroke-width=\"1.118\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.118\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M103.287 72.93s1.83 1.113 4.137.954\"\n          stroke=\"#5C2552\"\n          stroke-width=\"1.118\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.118\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.101\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M129.405 122.865s-5.272 7.403-9.422 10.768\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M119.306 107.329s.452 4.366-2.127 32.062\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.101\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01\"\n          fill=\"#F2D7AD\"\n        />\n        <path\n          d=\"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92\"\n          fill=\"#F4D19D\"\n        />\n        <path\n          d=\"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z\"\n          fill=\"#F2D7AD\"\n        />\n        <path fill=\"#CC9B6E\" d=\"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z\" />\n        <path\n          d=\"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83\"\n          fill=\"#F4D19D\"\n        />\n        <path\n          fill=\"#CC9B6E\"\n          d=\"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z\"\n        />\n        <path\n          fill=\"#CC9B6E\"\n          d=\"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z\"\n        />\n        <path\n          d=\"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647\"\n          fill=\"#5BA02E\"\n        />\n        <path\n          d=\"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647\"\n          fill=\"#92C110\"\n        />\n        <path\n          d=\"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187\"\n          fill=\"#F2D7AD\"\n        />\n        <path\n          d=\"M88.979 89.48s7.776 5.384 16.6 2.842\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.101\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport default NoFound;\n"
  },
  {
    "path": "components/result/serverError.tsx",
    "content": "const ServerError = () => {\n  return (\n    <svg width=\"254\" height=\"294\">\n      <defs>\n        <path d=\"M0 .335h253.49v253.49H0z\" />\n        <path d=\"M0 293.665h253.49V.401H0z\" />\n      </defs>\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <g transform=\"translate(0 .067)\">\n          <mask fill=\"#fff\" />\n          <path\n            d=\"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134\"\n            fill=\"#E4EBF7\"\n            mask=\"url(#b)\"\n          />\n        </g>\n        <path\n          d=\"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          d=\"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68\"\n          fill=\"#FF603B\"\n        />\n        <path\n          d=\"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487\"\n          fill=\"#FFB594\"\n        />\n        <path\n          d=\"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246\"\n          fill=\"#FFB594\"\n        />\n        <path\n          d=\"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z\"\n          fill=\"#520038\"\n        />\n        <path\n          d=\"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26\"\n          fill=\"#552950\"\n        />\n        <path\n          stroke=\"#DB836E\"\n          stroke-width=\"1.063\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          d=\"M99.206 73.644l-.9 1.62-.3 4.38h-2.24\"\n        />\n        <path\n          d=\"M99.926 73.284s1.8-.72 2.52.54\"\n          stroke=\"#5C2552\"\n          stroke-width=\"1.117\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.117\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M92.326 71.724s1.84 1.12 4.16.96\"\n          stroke=\"#5C2552\"\n          stroke-width=\"1.117\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.063\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.136\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69\"\n          fill=\"#7BB2F9\"\n        />\n        <path\n          d=\"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M96.973 219.373s2.882-1.153 6.34-4.034\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.032\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593\"\n          stroke=\"#DB836E\"\n          stroke-width=\".774\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762\"\n          stroke=\"#E59788\"\n          stroke-width=\".774\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12\"\n          stroke=\"#E59788\"\n          stroke-width=\".774\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M109.278 112.533s3.38-3.613 7.575-4.662\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.085\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M107.375 123.006s9.697-2.745 11.445-.88\"\n          stroke=\"#E59788\"\n          stroke-width=\".774\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955\"\n          stroke=\"#BFCDDD\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01\"\n          fill=\"#A3B4C6\"\n        />\n        <path\n          d=\"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813\"\n          fill=\"#A3B4C6\"\n        />\n        <mask fill=\"#fff\" />\n        <path fill=\"#A3B4C6\" mask=\"url(#d)\" d=\"M154.098 190.096h70.513v-84.617h-70.513z\" />\n        <path\n          d=\"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208\"\n          fill=\"#BFCDDD\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802\"\n          fill=\"#FFF\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209\"\n          fill=\"#BFCDDD\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751\"\n          stroke=\"#7C90A5\"\n          stroke-width=\"1.124\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802\"\n          fill=\"#FFF\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407\"\n          fill=\"#BFCDDD\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M177.259 207.217v11.52M201.05 207.217v11.52\"\n          stroke=\"#A3B4C6\"\n          stroke-width=\"1.124\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422\"\n          fill=\"#5BA02E\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423\"\n          fill=\"#92C110\"\n          mask=\"url(#d)\"\n        />\n        <path\n          d=\"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209\"\n          fill=\"#F2D7AD\"\n          mask=\"url(#d)\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport default ServerError;\n"
  },
  {
    "path": "components/result/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\nexport interface ComponentToken {\n  imageWidth: number;\n  imageHeight: number;\n}\n\ninterface ResultToken extends FullToken<'Result'> {\n  resultTitleFontSize: number;\n  resultSubtitleFontSize: number;\n  resultIconFontSize: number;\n\n  resultExtraMargin: string;\n\n  resultInfoIconColor: string;\n  resultSuccessIconColor: string;\n  resultWarningIconColor: string;\n  resultErrorIconColor: string;\n}\n\n// ============================== Styles ==============================\nconst genBaseStyle: GenerateStyle<ResultToken> = (token): CSSObject => {\n  const {\n    componentCls,\n    lineHeightHeading3,\n    iconCls,\n    padding,\n    paddingXL,\n    paddingXS,\n    paddingLG,\n    marginXS,\n    lineHeight,\n  } = token;\n\n  return {\n    // Result\n    [componentCls]: {\n      padding: `${paddingLG * 2}px ${paddingXL}px`,\n\n      // RTL\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n\n    // Exception Status image\n    [`${componentCls} ${componentCls}-image`]: {\n      width: token.imageWidth,\n      height: token.imageHeight,\n      margin: 'auto',\n    },\n\n    [`${componentCls} ${componentCls}-icon`]: {\n      marginBottom: paddingLG,\n      textAlign: 'center',\n\n      [`& > ${iconCls}`]: {\n        fontSize: token.resultIconFontSize,\n      },\n    },\n\n    [`${componentCls} ${componentCls}-title`]: {\n      color: token.colorTextHeading,\n      fontSize: token.resultTitleFontSize,\n      lineHeight: lineHeightHeading3,\n      marginBlock: marginXS,\n      textAlign: 'center',\n    },\n\n    [`${componentCls} ${componentCls}-subtitle`]: {\n      color: token.colorTextDescription,\n      fontSize: token.resultSubtitleFontSize,\n      lineHeight,\n      textAlign: 'center',\n    },\n\n    [`${componentCls} ${componentCls}-content`]: {\n      marginTop: paddingLG,\n      padding: `${paddingLG}px ${padding * 2.5}px`,\n      backgroundColor: token.colorFillAlter,\n    },\n\n    [`${componentCls} ${componentCls}-extra`]: {\n      margin: token.resultExtraMargin,\n      textAlign: 'center',\n\n      '& > *': {\n        marginInlineEnd: paddingXS,\n\n        '&:last-child': {\n          marginInlineEnd: 0,\n        },\n      },\n    },\n  };\n};\n\nconst genStatusIconStyle: GenerateStyle<ResultToken> = token => {\n  const { componentCls, iconCls } = token;\n\n  return {\n    [`${componentCls}-success ${componentCls}-icon > ${iconCls}`]: {\n      color: token.resultSuccessIconColor,\n    },\n    [`${componentCls}-error ${componentCls}-icon > ${iconCls}`]: {\n      color: token.resultErrorIconColor,\n    },\n    [`${componentCls}-info ${componentCls}-icon > ${iconCls}`]: {\n      color: token.resultInfoIconColor,\n    },\n    [`${componentCls}-warning ${componentCls}-icon > ${iconCls}`]: {\n      color: token.resultWarningIconColor,\n    },\n  };\n};\n\nconst genResultStyle: GenerateStyle<ResultToken> = token => [\n  genBaseStyle(token),\n  genStatusIconStyle(token),\n];\n\n// ============================== Export ==============================\nconst getStyle: GenerateStyle<ResultToken> = token => genResultStyle(token);\n\nexport default genComponentStyleHook(\n  'Result',\n  token => {\n    const { paddingLG, fontSizeHeading3 } = token;\n\n    const resultSubtitleFontSize = token.fontSize;\n    const resultExtraMargin = `${paddingLG}px 0 0 0`;\n\n    const resultInfoIconColor = token.colorInfo;\n    const resultErrorIconColor = token.colorError;\n    const resultSuccessIconColor = token.colorSuccess;\n    const resultWarningIconColor = token.colorWarning;\n\n    const resultToken = mergeToken<ResultToken>(token, {\n      resultTitleFontSize: fontSizeHeading3,\n      resultSubtitleFontSize,\n      resultIconFontSize: fontSizeHeading3 * 3,\n      resultExtraMargin,\n      resultInfoIconColor,\n      resultErrorIconColor,\n      resultSuccessIconColor,\n      resultWarningIconColor,\n    });\n\n    return [getStyle(resultToken)];\n  },\n  {\n    imageWidth: 250,\n    imageHeight: 295,\n  },\n);\n"
  },
  {
    "path": "components/result/unauthorized.tsx",
    "content": "const Unauthorized = () => {\n  return (\n    <svg width=\"251\" height=\"294\">\n      <g fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023\"\n          fill=\"#E4EBF7\"\n        />\n        <path\n          d=\"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          d=\"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          d=\"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z\"\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n        />\n        <path\n          stroke=\"#FFF\"\n          stroke-width=\"2\"\n          d=\"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668\"\n        />\n        <path\n          d=\"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321\"\n          fill=\"#A26EF4\"\n        />\n        <path\n          d=\"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61\"\n          fill=\"#5BA02E\"\n        />\n        <path\n          d=\"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611\"\n          fill=\"#92C110\"\n        />\n        <path\n          d=\"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17\"\n          fill=\"#F2D7AD\"\n        />\n        <path\n          d=\"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367\"\n          fill=\"#FFB594\"\n        />\n        <path\n          d=\"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M78.18 94.656s.911 7.41-4.914 13.078\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\".932\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91\"\n          fill=\"#FFB594\"\n        />\n        <path\n          d=\"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103\"\n          fill=\"#5C2552\"\n        />\n        <path\n          d=\"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          stroke=\"#DB836E\"\n          stroke-width=\"1.145\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          d=\"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406\"\n        />\n        <path\n          d=\"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32\"\n          fill=\"#552950\"\n        />\n        <path\n          d=\"M91.132 86.786s5.269 4.957 12.679 2.327\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.145\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25\"\n          fill=\"#DB836E\"\n        />\n        <path\n          d=\"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073\"\n          stroke=\"#5C2552\"\n          stroke-width=\"1.526\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254\"\n          stroke=\"#DB836E\"\n          stroke-width=\"1.145\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M66.508 86.763s-1.598 8.83-6.697 14.078\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.114\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M128.31 87.934s3.013 4.121 4.06 11.785\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M64.09 84.816s-6.03 9.912-13.607 9.903\"\n          stroke=\"#DB836E\"\n          stroke-width=\".795\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73\"\n          fill=\"#FFC6A0\"\n        />\n        <path\n          d=\"M130.532 85.488s4.588 5.757 11.619 6.214\"\n          stroke=\"#DB836E\"\n          stroke-width=\".75\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M121.708 105.73s-.393 8.564-1.34 13.612\"\n          stroke=\"#E4EBF7\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M115.784 161.512s-3.57-1.488-2.678-7.14\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z\"\n          fill=\"#CBD1D1\"\n        />\n        <path\n          d=\"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078\"\n          fill=\"#2B0849\"\n        />\n        <path\n          d=\"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15\"\n          fill=\"#A4AABA\"\n        />\n        <path\n          d=\"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954\"\n          fill=\"#7BB2F9\"\n        />\n        <path\n          d=\"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M108.459 220.905s2.759-1.104 6.07-3.863\"\n          stroke=\"#648BD8\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806\"\n          fill=\"#FFF\"\n        />\n        <path\n          d=\"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64\"\n          fill=\"#192064\"\n        />\n        <path\n          d=\"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956\"\n          stroke=\"#648BD8\"\n          stroke-width=\"1.051\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport default Unauthorized;\n"
  },
  {
    "path": "components/row/index.ts",
    "content": "import { Row } from '../grid';\nimport { withInstall } from '../_util/type';\n\nexport type { RowProps } from '../grid';\n\nexport default withInstall(Row);\n"
  },
  {
    "path": "components/row/style/index.ts",
    "content": "// Compatible for babel-plugin-import\n\n/* istanbul ignore next */\nexport default {};\n"
  },
  {
    "path": "components/segmented/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/segmented/demo/basic.vue correctly 1`] = `\n<div class=\"ant-segmented \">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Weekly\">Weekly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Quarterly\">Quarterly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Yearly\">Yearly</div>\n    </label>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/segmented/demo/block.vue correctly 1`] = `\n<div class=\"ant-segmented  ant-segmented-block\">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"123\">123</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"456\">456</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"longtext-longtext-longtext-longtext\">longtext-longtext-longtext-longtext</div>\n    </label>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/segmented/demo/custom.vue correctly 1`] = `\n<br>\n<br>\n`;\n\nexports[`renders ./components/segmented/demo/disabled.vue correctly 1`] = `\n<div>\n  <div class=\"ant-segmented  ant-segmented-disabled\">\n    <div class=\"ant-segmented-group\">\n      <!----><label class=\"ant-segmented-item-disabled ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\" disabled=\"\">\n        <div class=\"ant-segmented-item-label\" title=\"Map\">Map</div>\n      </label><label class=\"ant-segmented-item-disabled ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\" disabled=\"\">\n        <div class=\"ant-segmented-item-label\" title=\"Transit\">Transit</div>\n      </label><label class=\"ant-segmented-item-disabled ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\" disabled=\"\">\n        <div class=\"ant-segmented-item-label\" title=\"Satellite\">Satellite</div>\n      </label>\n    </div>\n  </div><br><br>\n  <div class=\"ant-segmented \">\n    <div class=\"ant-segmented-group\">\n      <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n      </label><label class=\"ant-segmented-item-disabled ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\" disabled=\"\">\n        <div class=\"ant-segmented-item-label\" title=\"\">\n          <!---->\n        </div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n      </label><label class=\"ant-segmented-item-disabled ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\" disabled=\"\">\n        <div class=\"ant-segmented-item-label\" title=\"\">\n          <!---->\n        </div>\n      </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n        <div class=\"ant-segmented-item-label\" title=\"Yearly\">Yearly</div>\n      </label>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/segmented/demo/dynamic.vue correctly 1`] = `\n<div class=\"ant-segmented \">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Weekly\">Weekly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n    </label>\n  </div>\n</div>\n<br>\n<br>\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Load More</span>\n</button>\n`;\n\nexports[`renders ./components/segmented/demo/size.vue correctly 1`] = `\n<div class=\"ant-segmented  ant-segmented-lg\">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Weekly\">Weekly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Quarterly\">Quarterly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Yearly\">Yearly</div>\n    </label>\n  </div>\n</div>\n<br>\n<br>\n<div class=\"ant-segmented \">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Weekly\">Weekly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Quarterly\">Quarterly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Yearly\">Yearly</div>\n    </label>\n  </div>\n</div>\n<br>\n<br>\n<div class=\"ant-segmented  ant-segmented-sm\">\n  <div class=\"ant-segmented-group\">\n    <!----><label class=\"ant-segmented-item ant-segmented-item-selected\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Daily\">Daily</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Weekly\">Weekly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Monthly\">Monthly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Quarterly\">Quarterly</div>\n    </label><label class=\"ant-segmented-item\"><input class=\"ant-segmented-item-input\" type=\"radio\">\n      <div class=\"ant-segmented-item-label\" title=\"Yearly\">Yearly</div>\n    </label>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/segmented/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('segmented');\n"
  },
  {
    "path": "components/segmented/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Segmented from '../index';\ndescribe('Segmented', () => {\n  const wrapper = mount({\n    render() {\n      return <Segmented></Segmented>;\n    },\n  });\n  const todo = wrapper.get('[options=\"[1,2,3,4,5]\"]');\n  expect(todo.text()).toBe('segmented');\n});\n"
  },
  {
    "path": "components/segmented/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\nThe most basic usage.\n</docs>\n\n<template>\n  <a-segmented v-model:value=\"value\" :options=\"data\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nconst data = reactive(['Daily', 'Weekly', 'Monthly', 'Quarterly', 'Yearly']);\nconst value = ref(data[0]);\n</script>\n"
  },
  {
    "path": "components/segmented/demo/block.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: Block分段控制器\n  en-US: Block Segmented\n---\n\n## zh-CN\n\n`block` 属性使其适合父元素宽度。\n\n## en-US\n`block` property will make the `Segmented` fit to its parent width.\n</docs>\n<template>\n  <a-segmented v-model:value=\"value\" block :options=\"data\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nconst data = reactive([123, 456, 'longtext-longtext-longtext-longtext']);\nconst value = ref(data[0]);\n</script>\n"
  },
  {
    "path": "components/segmented/demo/custom.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 自定义渲染\n  en-US: Custom\n---\n\n## zh-CN\n\n自定义渲染每一个 Segmented Item。\n\n## en-US\nCustom each Segmented Item.\n</docs>\n<template>\n  <a-segmented v-model:value=\"value\" :options=\"data\">\n    <template #label=\"{ value: val, payload = {} }\">\n      <div style=\"padding: 4px 4px\">\n        <template v-if=\"payload.icon\">\n          <a-avatar :src=\"payload.src\" :style=\"payload.style\">\n            <template #icon><component :is=\"payload.icon\" /></template>\n            {{ payload.content }}\n          </a-avatar>\n        </template>\n        <template v-else>\n          <a-avatar :src=\"payload.src\" :style=\"payload.style\">\n            {{ payload.content }}\n          </a-avatar>\n        </template>\n        <div>{{ val }}</div>\n      </div>\n    </template>\n  </a-segmented>\n  <br />\n  <br />\n  <a-segmented v-model:value=\"value2\" :options=\"options2\">\n    <template #label=\"{ payload }\">\n      <div style=\"padding: 4px 4px\">\n        <div>{{ payload.title }}</div>\n        <div>{{ payload.subTitle }}</div>\n      </div>\n    </template>\n  </a-segmented>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined } from '@ant-design/icons-vue';\nimport ASegmented from 'ant-design-vue/es/segmented/src/segmented';\nconst data = ref([\n  {\n    value: 'user1',\n    payload: {\n      src: 'https://joeschmoe.io/api/v1/random',\n      style: { backgroundColor: '#f56a00' },\n    },\n  },\n  {\n    value: 'user2',\n    payload: {\n      style: { backgroundColor: '#f56a00' },\n      content: 'K',\n    },\n  },\n  {\n    value: 'user3',\n    payload: {\n      icon: UserOutlined,\n      style: { backgroundColor: '#f56a00' },\n    },\n  },\n]);\nconst options2 = ref([\n  {\n    value: 'spring',\n    payload: {\n      title: 'Spring',\n      subTitle: 'Jan-Mar',\n    },\n  },\n  {\n    value: 'summer',\n    payload: {\n      title: 'Summer',\n      subTitle: 'Apr-Jun',\n    },\n  },\n  {\n    value: 'autumn',\n    payload: {\n      title: 'Autumn',\n      subTitle: 'Jul-Sept',\n    },\n  },\n  {\n    value: 'winter',\n    payload: {\n      title: 'Winter',\n      subTitle: 'Oct-Dec',\n    },\n  },\n]);\nconst value = ref('user1');\nconst value2 = ref('spring');\n</script>\n"
  },
  {
    "path": "components/segmented/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 不可用\n  en-US: Disabled\n---\n\n## zh-CN\n\nSegmented 不可用。\n\n## en-US\nDisabled Segmented.\n</docs>\n<template>\n  <div>\n    <a-segmented v-model:value=\"value\" disabled :options=\"data\" />\n    <br />\n    <br />\n    <a-segmented v-model:value=\"value2\" :options=\"data2\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nconst data = reactive(['Map', 'Transit', 'Satellite']);\nconst data2 = reactive([\n  'Daily',\n  { value: 'Weekly', disabled: true },\n  'Monthly',\n  { value: 'Quarterly', disabled: true },\n  'Yearly',\n]);\nconst value = ref(data[0]);\nconst value2 = ref('Daily');\n</script>\n"
  },
  {
    "path": "components/segmented/demo/dynamic.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n zh-CN: 动态数据\n en-US: Dynamic\n---\n\n## zh-CN\n\n动态加载数据。\n\n## en-US\nLoad dynamically.\n</docs>\n<template>\n  <a-segmented v-model:value=\"value\" :options=\"data\"></a-segmented>\n  <br />\n  <br />\n  <a-button type=\"primary\" :disabled=\"isDisabled\" @click=\"loadMore\">Load More</a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nconst data = reactive(['Daily', 'Weekly', 'Monthly']);\nconst isDisabled = ref(false);\nconst loadMore = () => {\n  data.push(...['Quarterly', 'Yearly']);\n  isDisabled.value = true;\n};\nconst value = ref(data[0]);\n</script>\n"
  },
  {
    "path": "components/segmented/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <block />\n    <disabled />\n    <custom />\n    <dynamic />\n    <size />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport Basic from './basic.vue';\nimport Block from './block.vue';\nimport Disabled from './disabled.vue';\nimport Custom from './custom.vue';\nimport Dynamic from './dynamic.vue';\nimport Size from './size.vue';\n\nexport default defineComponent({\n  components: { Size, Dynamic, Custom, Disabled, Block, Basic },\n  category: 'Components',\n  subtitle: '分段控制器',\n  type: 'Data Display',\n  title: 'Segmented',\n  CN,\n  US,\n});\n</script>\n"
  },
  {
    "path": "components/segmented/demo/size.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 三种大小\n  en-US: Three sizes of Segmented\n---\n\n## zh-CN\n\n我们为 `<a-segmented />` 组件定义了三种尺寸（大、默认、小），高度分别为 `40px`、`32px` 和 `24px`。\n\n## en-US\nThere are three sizes of an a-segmented: `large` (40px), `default` (32px) and `small` (24px).\n</docs>\n<template>\n  <a-segmented v-model:value=\"value\" :options=\"data\" size=\"large\" />\n  <br />\n  <br />\n  <a-segmented v-model:value=\"value2\" :options=\"data\" />\n  <br />\n  <br />\n  <a-segmented v-model:value=\"value3\" :options=\"data\" size=\"small\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive } from 'vue';\nconst data = reactive(['Daily', 'Weekly', 'Monthly', 'Quarterly', 'Yearly']);\nconst value = ref(data[0]);\nconst value2 = ref(data[0]);\nconst value3 = ref(data[0]);\n</script>\n"
  },
  {
    "path": "components/segmented/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Segmented\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*papwTpNscPIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tz7qSaWpi1kAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\nSegmented Controls.\n\n### When To Use\n\n- When displaying multiple options and user can select a single option;\n- When switching the selected option, the content of the associated area changes.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| block | Option to fit width to its parent\\'s width | boolean | false |  |\n| disabled | Disable all segments | boolean | false |  |\n| options | Set children optional | string[] \\| number[] \\| SegmentedOption[] | [] |  |\n| size | The size of the Segmented. | `large` \\| `middle` \\| `small` | - |  |\n| value | Currently selected value | string \\| number |  |  |\n| label | custom label by slot | v-slot:label=\"SegmentedBaseOption\" |  |  |\n\n### events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | The callback function that is triggered when the state changes | function(value: string \\| number) | - |\n\n#### SegmentedBaseOption、 SegmentedOption\n\n```ts\ninterface SegmentedBaseOption {\n  value: string | number;\n  disabled?: boolean;\n  payload?: any; // payload more data\n  /**\n   * html `title` property for label\n   */\n  title?: string;\n  className?: string;\n}\ninterface SegmentedOption extends SegmentedBaseOption {\n  label?: VueNode | ((option: SegmentedBaseOption) => VueNode);\n}\n```\n"
  },
  {
    "path": "components/segmented/index.ts",
    "content": "import Segmented from './src';\nimport type { SegmentedProps } from './src';\nimport { withInstall } from '../_util/type';\n\nexport default withInstall(Segmented);\nexport type { SegmentedProps };\n"
  },
  {
    "path": "components/segmented/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 分段控制器\ntype: 数据展示\ntitle: Segmented\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*papwTpNscPIAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*tz7qSaWpi1kAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n分段控制器。\n\n## 何时使用\n\n- 用于展示多个选项并允许用户选择其中单个选项；\n- 当切换选中选项时，关联区域的内容会发生变化。\n\n## API\n\n### Segmented\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| block | 将宽度调整为父元素宽度的选项 | boolean | - |  |\n| disabled | 是否禁用 | boolean | false |  |\n| options | 数据化配置选项内容 | string[] \\| number[] \\| SegmentedOption[] | [] |  |\n| size | 控件尺寸 | `large` \\| `middle` \\| `small` | - |  |\n| value | 当前选中的值 | string \\| number |  |  |\n| label | 使用插槽自定义 label | v-slot:label=\"SegmentedBaseOption\" |  |  |\n\n### 事件\n\n| 事件名称 | 说明                 | 回调参数                          |     |\n| -------- | -------------------- | --------------------------------- | --- |\n| change   | 选项变化时的回调函数 | function(value: string \\| number) | -   |\n\n#### SegmentedBaseOption、SegmentedOption\n\n```ts\ninterface SegmentedBaseOption {\n  value: string | number;\n  disabled?: boolean;\n  payload?: any; // payload more data\n  /**\n   * html `title` property for label\n   */\n  title?: string;\n  className?: string;\n}\ninterface SegmentedOption extends SegmentedBaseOption {\n  label?: VueNode | ((option: SegmentedBaseOption) => VueNode);\n}\n```\n"
  },
  {
    "path": "components/segmented/src/MotionThumb.tsx",
    "content": "import { addClass, removeClass } from '../../vc-util/Dom/class';\nimport type { CSSProperties, Ref, TransitionProps } from 'vue';\nimport { onBeforeUnmount, nextTick, Transition, watch, defineComponent, computed, ref } from 'vue';\nimport { anyType } from '../../_util/type';\nimport type { SegmentedValue } from './segmented';\n\ntype ThumbRect = {\n  left: number;\n  right: number;\n  width: number;\n} | null;\n\nexport interface MotionThumbInterface {\n  value: SegmentedValue;\n  getValueIndex: (value: SegmentedValue) => number;\n  prefixCls: string;\n  motionName: string;\n  onMotionStart: VoidFunction;\n  onMotionEnd: VoidFunction;\n  direction?: 'ltr' | 'rtl';\n}\n\nconst calcThumbStyle = (targetElement: HTMLElement | null | undefined): ThumbRect =>\n  targetElement\n    ? {\n        left: targetElement.offsetLeft,\n        right:\n          (targetElement.parentElement!.clientWidth as number) -\n          targetElement.clientWidth -\n          targetElement.offsetLeft,\n        width: targetElement.clientWidth,\n      }\n    : null;\n\nconst toPX = (value?: number) => (value !== undefined ? `${value}px` : undefined);\n\nconst MotionThumb = defineComponent({\n  props: {\n    value: anyType<SegmentedValue>(),\n    getValueIndex: anyType<(value: SegmentedValue) => number>(),\n    prefixCls: anyType<string>(),\n    motionName: anyType<string>(),\n    onMotionStart: anyType<VoidFunction>(),\n    onMotionEnd: anyType<VoidFunction>(),\n    direction: anyType<'ltr' | 'rtl'>(),\n    containerRef: anyType<Ref<HTMLDivElement>>(),\n  },\n  emits: ['motionStart', 'motionEnd'],\n  setup(props, { emit }) {\n    const thumbRef = ref<HTMLDivElement>();\n    // =========================== Effect ===========================\n    const findValueElement = (val: SegmentedValue) => {\n      const index = props.getValueIndex(val);\n\n      const ele = props.containerRef.value?.querySelectorAll<HTMLDivElement>(\n        `.${props.prefixCls}-item`,\n      )[index];\n      return ele?.offsetParent && ele;\n    };\n\n    const prevStyle = ref<ThumbRect>(null);\n    const nextStyle = ref<ThumbRect>(null);\n\n    watch(\n      () => props.value,\n      (value, prevValue) => {\n        const prev = findValueElement(prevValue);\n        const next = findValueElement(value);\n\n        const calcPrevStyle = calcThumbStyle(prev);\n        const calcNextStyle = calcThumbStyle(next);\n\n        prevStyle.value = calcPrevStyle;\n        nextStyle.value = calcNextStyle;\n\n        if (prev && next) {\n          emit('motionStart');\n        } else {\n          emit('motionEnd');\n        }\n      },\n      { flush: 'post' },\n    );\n\n    const thumbStart = computed(() =>\n      props.direction === 'rtl'\n        ? toPX(-(prevStyle.value?.right as number))\n        : toPX(prevStyle.value?.left as number),\n    );\n    const thumbActive = computed(() =>\n      props.direction === 'rtl'\n        ? toPX(-(nextStyle.value?.right as number))\n        : toPX(nextStyle.value?.left as number),\n    );\n\n    // =========================== Motion ===========================\n    let timeid: any;\n    const onAppearStart: TransitionProps['onBeforeEnter'] = (el: HTMLDivElement) => {\n      clearTimeout(timeid);\n      nextTick(() => {\n        if (el) {\n          el.style.transform = `translateX(var(--thumb-start-left))`;\n          el.style.width = `var(--thumb-start-width)`;\n        }\n      });\n    };\n\n    const onAppearActive: TransitionProps['onEnter'] = (el: HTMLDivElement) => {\n      timeid = setTimeout(() => {\n        if (el) {\n          addClass(el, `${props.motionName}-appear-active`);\n          el.style.transform = `translateX(var(--thumb-active-left))`;\n          el.style.width = `var(--thumb-active-width)`;\n        }\n      });\n    };\n    const onAppearEnd: TransitionProps['onAfterEnter'] = (el: HTMLDivElement) => {\n      prevStyle.value = null;\n      nextStyle.value = null;\n      if (el) {\n        el.style.transform = null;\n        el.style.width = null;\n        removeClass(el, `${props.motionName}-appear-active`);\n      }\n      emit('motionEnd');\n    };\n    const mergedStyle = computed<CSSProperties>(() => ({\n      '--thumb-start-left': thumbStart.value,\n      '--thumb-start-width': toPX(prevStyle.value?.width),\n      '--thumb-active-left': thumbActive.value,\n      '--thumb-active-width': toPX(nextStyle.value?.width),\n    }));\n    onBeforeUnmount(() => {\n      clearTimeout(timeid);\n    });\n    return () => {\n      // It's little ugly which should be refactor when @umi/test update to latest jsdom\n      const motionProps = {\n        ref: thumbRef,\n        style: mergedStyle.value,\n        class: [`${props.prefixCls}-thumb`],\n      };\n\n      if (process.env.NODE_ENV === 'test') {\n        (motionProps as any)['data-test-style'] = JSON.stringify(mergedStyle.value);\n      }\n\n      return (\n        <Transition\n          appear\n          onBeforeEnter={onAppearStart}\n          onEnter={onAppearActive}\n          onAfterEnter={onAppearEnd}\n        >\n          {!prevStyle.value || !nextStyle.value ? null : <div {...motionProps}></div>}\n        </Transition>\n      );\n    };\n  },\n});\nexport default MotionThumb;\n"
  },
  {
    "path": "components/segmented/src/index.ts",
    "content": "import Segmented from './segmented';\nimport type { SegmentedProps } from './segmented';\n\nexport type { SegmentedProps };\nexport default Segmented;\n"
  },
  {
    "path": "components/segmented/src/segmented.tsx",
    "content": "import { defineComponent, shallowRef, computed } from 'vue';\nimport type { ExtractPropTypes, FunctionalComponent } from 'vue';\nimport classNames from '../../_util/classNames';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport { initDefaultProps } from '../../_util/props-util';\nimport useStyle from '../style';\nimport type { CustomSlotsType, VueNode } from '../../_util/type';\nimport { functionType, someType, arrayType, booleanType, stringType } from '../../_util/type';\nimport type { ChangeEvent } from '../../_util/EventInterface';\nimport MotionThumb from './MotionThumb';\nexport type SegmentedValue = string | number;\nexport type segmentedSize = 'large' | 'small';\nexport interface SegmentedBaseOption {\n  value: string | number;\n  disabled?: boolean;\n  payload?: any;\n  /**\n   * html `title` property for label\n   */\n  title?: string;\n  className?: string;\n}\nexport interface SegmentedOption extends SegmentedBaseOption {\n  label?: VueNode | ((option: SegmentedBaseOption) => VueNode);\n}\n\nfunction normalizeOptions(options: (SegmentedOption | string | number)[]) {\n  return options.map(option => {\n    if (typeof option === 'object' && option !== null) {\n      return option;\n    }\n\n    return {\n      label: option?.toString(),\n      title: option?.toString(),\n      value: option as unknown as SegmentedBaseOption['value'],\n    };\n  });\n}\nexport const segmentedProps = () => {\n  return {\n    prefixCls: String,\n    options: arrayType<(SegmentedOption | string | number)[]>(),\n    block: booleanType(),\n    disabled: booleanType(),\n    size: stringType<segmentedSize>(),\n    value: { ...someType<SegmentedValue>([String, Number]), required: true },\n    motionName: String,\n    onChange: functionType<(val: SegmentedValue) => void>(),\n    'onUpdate:value': functionType<(val: SegmentedValue) => void>(),\n  };\n};\nexport type SegmentedProps = Partial<ExtractPropTypes<ReturnType<typeof segmentedProps>>>;\n\nconst SegmentedOption: FunctionalComponent<\n  SegmentedOption & {\n    prefixCls: string;\n    checked: boolean;\n    onChange: (_event: ChangeEvent, val: SegmentedValue) => void;\n  }\n> = (props, { slots, emit }) => {\n  const {\n    value,\n    disabled,\n    payload,\n    title,\n    prefixCls,\n    label = slots.label,\n    checked,\n    className,\n  } = props;\n  const handleChange = (event: InputEvent) => {\n    if (disabled) {\n      return;\n    }\n\n    emit('change', event, value);\n  };\n\n  return (\n    <label\n      class={classNames(\n        {\n          [`${prefixCls}-item-disabled`]: disabled,\n        },\n        className,\n      )}\n    >\n      <input\n        class={`${prefixCls}-item-input`}\n        type=\"radio\"\n        disabled={disabled}\n        checked={checked}\n        onChange={handleChange}\n      />\n      <div class={`${prefixCls}-item-label`} title={typeof title === 'string' ? title : ''}>\n        {typeof label === 'function'\n          ? label({\n              value,\n              disabled,\n              payload,\n              title,\n            })\n          : label ?? value}\n      </div>\n    </label>\n  );\n};\nSegmentedOption.inheritAttrs = false;\n\nexport default defineComponent({\n  name: 'ASegmented',\n  inheritAttrs: false,\n  props: initDefaultProps(segmentedProps(), {\n    options: [],\n    motionName: 'thumb-motion',\n  }),\n  slots: Object as CustomSlotsType<{\n    label: SegmentedBaseOption;\n  }>,\n  setup(props, { emit, slots, attrs }) {\n    const { prefixCls, direction, size } = useConfigInject('segmented', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const rootRef = shallowRef<HTMLDivElement>();\n    const thumbShow = shallowRef(false);\n\n    const segmentedOptions = computed(() => normalizeOptions(props.options));\n    const handleChange = (_event: ChangeEvent, val: SegmentedValue) => {\n      if (props.disabled) {\n        return;\n      }\n      emit('update:value', val);\n      emit('change', val);\n    };\n    return () => {\n      const pre = prefixCls.value;\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={classNames(\n            pre,\n            {\n              [hashId.value]: true,\n              [`${pre}-block`]: props.block,\n              [`${pre}-disabled`]: props.disabled,\n              [`${pre}-lg`]: size.value == 'large',\n              [`${pre}-sm`]: size.value == 'small',\n              [`${pre}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n          )}\n          ref={rootRef}\n        >\n          <div class={`${pre}-group`}>\n            <MotionThumb\n              containerRef={rootRef}\n              prefixCls={pre}\n              value={props.value}\n              motionName={`${pre}-${props.motionName}`}\n              direction={direction.value}\n              getValueIndex={val => segmentedOptions.value.findIndex(n => n.value === val)}\n              onMotionStart={() => {\n                thumbShow.value = true;\n              }}\n              onMotionEnd={() => {\n                thumbShow.value = false;\n              }}\n            />\n            {segmentedOptions.value.map(segmentedOption => (\n              <SegmentedOption\n                key={segmentedOption.value}\n                prefixCls={pre}\n                checked={segmentedOption.value === props.value}\n                onChange={handleChange}\n                {...segmentedOption}\n                className={classNames(segmentedOption.className, `${pre}-item`, {\n                  [`${pre}-item-selected`]:\n                    segmentedOption.value === props.value && !thumbShow.value,\n                })}\n                disabled={!!props.disabled || !!segmentedOption.disabled}\n                v-slots={slots}\n              />\n            ))}\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/segmented/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface SegmentedToken extends FullToken<'Segmented'> {\n  segmentedPaddingHorizontal: number;\n  segmentedPaddingHorizontalSM: number;\n  segmentedContainerPadding: number;\n  labelColor: string;\n  labelColorHover: string;\n  bgColor: string;\n  bgColorHover: string;\n  bgColorSelected: string;\n}\n\n// ============================== Mixins ==============================\nfunction getItemDisabledStyle(cls: string, token: SegmentedToken): CSSObject {\n  return {\n    [`${cls}, ${cls}:hover, ${cls}:focus`]: {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed',\n    },\n  };\n}\n\nfunction getItemSelectedStyle(token: SegmentedToken): CSSObject {\n  return {\n    backgroundColor: token.bgColorSelected,\n    boxShadow: token.boxShadow,\n  };\n}\n\nconst segmentedTextEllipsisCss: CSSObject = {\n  overflow: 'hidden',\n  // handle text ellipsis\n  ...textEllipsis,\n};\n\n// ============================== Styles ==============================\nconst genSegmentedStyle: GenerateStyle<SegmentedToken> = (token: SegmentedToken) => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      display: 'inline-block',\n      padding: token.segmentedContainerPadding,\n      color: token.labelColor,\n      backgroundColor: token.bgColor,\n      borderRadius: token.borderRadius,\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n\n      [`${componentCls}-group`]: {\n        position: 'relative',\n        display: 'flex',\n        alignItems: 'stretch',\n        justifyItems: 'flex-start',\n        width: '100%',\n      },\n\n      // RTL styles\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      // block styles\n      [`&${componentCls}-block`]: {\n        display: 'flex',\n      },\n\n      [`&${componentCls}-block ${componentCls}-item`]: {\n        flex: 1,\n        minWidth: 0,\n      },\n\n      // item styles\n      [`${componentCls}-item`]: {\n        position: 'relative',\n        textAlign: 'center',\n        cursor: 'pointer',\n        transition: `color ${token.motionDurationMid} ${token.motionEaseInOut}`,\n        borderRadius: token.borderRadiusSM,\n\n        '&-selected': {\n          ...getItemSelectedStyle(token),\n          color: token.labelColorHover,\n        },\n\n        '&::after': {\n          content: '\"\"',\n          position: 'absolute',\n          width: '100%',\n          height: '100%',\n          top: 0,\n          insetInlineStart: 0,\n          borderRadius: 'inherit',\n          transition: `background-color ${token.motionDurationMid}`,\n          pointerEvents: 'none',\n        },\n\n        [`&:hover:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)`]: {\n          color: token.labelColorHover,\n\n          '&::after': {\n            backgroundColor: token.bgColorHover,\n          },\n        },\n\n        '&-label': {\n          minHeight: token.controlHeight - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeight - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontal}px`,\n          ...segmentedTextEllipsisCss,\n        },\n\n        // syntactic sugar to add `icon` for Segmented Item\n        '&-icon + *': {\n          marginInlineStart: token.marginSM / 2,\n        },\n\n        '&-input': {\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineStart: 0,\n          width: 0,\n          height: 0,\n          opacity: 0,\n          pointerEvents: 'none',\n        },\n      },\n\n      // thumb styles\n      [`${componentCls}-thumb`]: {\n        ...getItemSelectedStyle(token),\n\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        width: 0,\n        height: '100%',\n        padding: `${token.paddingXXS}px 0`,\n        borderRadius: token.borderRadiusSM,\n\n        [`& ~ ${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)::after`]:\n          {\n            backgroundColor: 'transparent',\n          },\n      },\n\n      // size styles\n      [`&${componentCls}-lg`]: {\n        borderRadius: token.borderRadiusLG,\n        [`${componentCls}-item-label`]: {\n          minHeight: token.controlHeightLG - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeightLG - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontal}px`,\n          fontSize: token.fontSizeLG,\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadius,\n        },\n      },\n\n      [`&${componentCls}-sm`]: {\n        borderRadius: token.borderRadiusSM,\n        [`${componentCls}-item-label`]: {\n          minHeight: token.controlHeightSM - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeightSM - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontalSM}px`,\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadiusXS,\n        },\n      },\n\n      // disabled styles\n      ...getItemDisabledStyle(`&-disabled ${componentCls}-item`, token),\n      ...getItemDisabledStyle(`${componentCls}-item-disabled`, token),\n\n      // transition effect when `appear-active`\n      [`${componentCls}-thumb-motion-appear-active`]: {\n        transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOut}, width ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        willChange: 'transform, width',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Segmented', token => {\n  const {\n    lineWidthBold,\n    lineWidth,\n    colorTextLabel,\n    colorText,\n    colorFillSecondary,\n    colorBgLayout,\n    colorBgElevated,\n  } = token;\n\n  const segmentedToken = mergeToken<SegmentedToken>(token, {\n    segmentedPaddingHorizontal: token.controlPaddingHorizontal - lineWidth,\n    segmentedPaddingHorizontalSM: token.controlPaddingHorizontalSM - lineWidth,\n    segmentedContainerPadding: lineWidthBold,\n    labelColor: colorTextLabel,\n    labelColorHover: colorText,\n    bgColor: colorBgLayout,\n    bgColorHover: colorFillSecondary,\n    bgColorSelected: colorBgElevated,\n  });\n  return [genSegmentedStyle(segmentedToken)];\n});\n"
  },
  {
    "path": "components/select/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/select/demo/automatic-tokenization.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Automatic tokenization</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/basic.vue correctly 1`] = `\n<h2>use a-select-option</h2>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-disabled\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-loading\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow ant-select-arrow-loading\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n<h2 style=\"margin-top: 10px;\">use options (recommend)</h2>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-disabled\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-loading\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow ant-select-arrow-loading\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/coordinate.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Zhejiang\">Zhejiang</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Hangzhou\">Hangzhou</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/custom-dropdown-menu.vue correctly 1`] = `\n<div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"lucy\">lucy</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/field-names.vue correctly 1`] = `\n<div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/hide-selected.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Inserted are removed</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/label-in-value.vue correctly 1`] = `\n<div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy (101)\">Lucy (101)</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/multiple.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"a1\"><span class=\"ant-select-selection-item-content\">a1</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"b2\"><span class=\"ant-select-selection-item-content\">b2</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/optgroup.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/option-label-prop.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\"><span class=\"ant-select-selection-item-content\"><span role=\"img\" aria-label=\"China\">🇨🇳</span> &nbsp;&nbsp;China (中国) </span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"China (中国)\"><span class=\"ant-select-selection-item-content\">China (中国)</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><span>Note: v-slot:option support from v2.2.5</span></div>\n  <!---->\n</div>\n<br>\n<br>\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span><span style=\"margin-right: 3px;\" class=\"ant-tag\">China (中国)&nbsp;&nbsp; <span role=\"img\" aria-label=\"china\">🇨🇳</span><span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><span>Note: v-slot:tagRender support from v3.0</span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/placement.vue correctly 1`] = `\n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>topLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topRight\"><span class=\"ant-radio-button-inner\"></span></span><span>topRight</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomRight\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomRight</span></label></div>\n<br>\n<br>\n<div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">HangZhou #310000</span>\n    <!---->\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/responsive.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>maxTagCount++</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>maxTagCount--</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <h2>maxTagCount: 2</h2>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: a10\"><span class=\"ant-select-selection-item-content\">Long Label: a10</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: c12\"><span class=\"ant-select-selection-item-content\">Long Label: c12</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-rest\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\"><span class=\"ant-select-selection-item-content\"><span style=\"color: red;\">+ 3 ...</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <h2>maxTagCount: responsive</h2>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-rest\" style=\"opacity: 0; height: 0px; overflow-y: hidden; order: 9007199254740991; pointer-events: none; position: absolute;\" aria-hidden=\"true\"><span class=\"ant-select-selection-item\" title=\"+ 4 ...\"><span class=\"ant-select-selection-item-content\">+ 4 ...</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1; order: 0;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>maxTagTextLength++</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>maxTagTextLength--</span>\n        </button></div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <h2>maxTagTextLength: 10</h2>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: a10\"><span class=\"ant-select-selection-item-content\">Long Label...</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: c12\"><span class=\"ant-select-selection-item-content\">Long Label...</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: h17\"><span class=\"ant-select-selection-item-content\">Long Label...</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: j19\"><span class=\"ant-select-selection-item-content\">Long Label...</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Long Label: k20\"><span class=\"ant-select-selection-item-content\">Long Label...</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/search.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Select a person</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/search-box.vue correctly 1`] = `\n<div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">input search text</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/select-users.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Select users</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/size.vue correctly 1`] = `\n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"large\"><span class=\"ant-radio-button-inner\"></span></span><span>Large</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"middle\"><span class=\"ant-radio-button-inner\"></span></span><span>Middle</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"small\"><span class=\"ant-radio-button-inner\"></span></span><span>Small</span></label></div>\n<br>\n<br>\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"a1\">a1</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"a1\"><span class=\"ant-select-selection-item-content\">a1</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"b2\"><span class=\"ant-select-selection-item-content\">b2</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 200px;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"a1\"><span class=\"ant-select-selection-item-content\">a1</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"b2\"><span class=\"ant-select-selection-item-content\">b2</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-status-error ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-select-status-warning ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/suffix.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 120px;\" class=\"ant-select ant-select-single ant-select-show-arrow ant-select-disabled\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" disabled=\"\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\" title=\"Lucy\">Lucy</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"meh\" class=\"anticon anticon-meh ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"meh\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/select/demo/tags.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Tags Mode</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/select/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Select Select Custom Icons should support customized icons 1`] = `\n<div class=\"ant-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\"><!----></span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/select/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('select', { skip: ['big-data'] });\n"
  },
  {
    "path": "components/select/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Select from '..';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\nfunction getStyle(el, prop) {\n  const style = window.getComputedStyle ? window.getComputedStyle(el) : el.currentStyle;\n\n  // If a css property's value is `auto`, it will return an empty string.\n  return prop ? style[prop] : style;\n}\ndescribe('Select', () => {\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  focusTest(Select);\n  mountTest({\n    render() {\n      return (\n        <div>\n          <Select />\n        </div>\n      );\n    },\n  });\n\n  it('should have default notFoundContent', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Select mode=\"multiple\" />;\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-select-item-option').length).toBe(0);\n      expect($$('.ant-empty-description')[0].innerHTML).toBe('No data');\n    }, 100);\n  });\n\n  it('should support set notFoundContent to null', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Select mode=\"multiple\" notFoundContent={null} />;\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-select-item-option').length).toBe(0);\n    });\n  });\n\n  it('should not have default notFoundContent when mode is combobox', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Select mode={Select.SECRET_COMBOBOX_MODE_DO_NOT_USE} />;\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-select-item-option').length).toBe(0);\n    });\n  });\n\n  it('should not have notFoundContent when mode is combobox and notFoundContent is set', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Select mode={Select.SECRET_COMBOBOX_MODE_DO_NOT_USE} notFoundContent=\"not at all\" />\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n    });\n\n    await asyncExpect(() => {\n      expect($$('.ant-select-item-option').length).toBe(0);\n      expect($$('.ant-select-item-empty').length).toBe(1);\n      // expect($$('.ant-select-item-option')[0].innerHTML).toMatchSnapshot();\n    }, 100);\n  });\n\n  it('should be controlled by open prop', async () => {\n    const onDropdownVisibleChange = jest.fn();\n    const wrapper = mount(\n      {\n        props: {\n          open: {\n            type: Boolean,\n            default: true,\n          },\n        },\n        render() {\n          return (\n            <Select open={this.open} onDropdownVisibleChange={onDropdownVisibleChange}>\n              <Select.Option value=\"1\">1</Select.Option>\n            </Select>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n\n    await asyncExpect(() => {\n      expect(getStyle($$('.ant-select-dropdown')[0], 'display')).toBe('block');\n    }, 100);\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n    });\n    await asyncExpect(() => {\n      expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(false);\n    });\n    await asyncExpect(() => {\n      expect(getStyle($$('.ant-select-dropdown')[0], 'display')).toBe('block');\n      wrapper.setProps({ open: false });\n    });\n\n    await asyncExpect(() => {\n      expect(getStyle($$('.ant-select-dropdown')[0], 'display')).toBe('none');\n      wrapper.findAll('.ant-select-selector')[0].element.dispatchEvent(new MouseEvent('mousedown'));\n      expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(true);\n      expect(getStyle($$('.ant-select-dropdown')[0], 'display')).toBe('none');\n    }, 500);\n  });\n\n  it('The select trigger should be blur when the panel is closed.', async () => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Select\n              dropdownRender={() => {\n                return <input id=\"dropdownRenderInput\" />;\n              }}\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n        attachTo: 'body',\n      },\n    );\n    await asyncExpect(async () => {\n      await wrapper.find('.ant-select-selector').trigger('mousedown');\n      await wrapper.find('.ant-select-selection-search-input').trigger('focus');\n    });\n\n    await asyncExpect(async () => {\n      const el = wrapper.find('.ant-select');\n\n      expect(el.classes()).toContain('ant-select-focused');\n      $$('#dropdownRenderInput')[0].focus();\n\n      expect(el.classes()).toContain('ant-select-focused');\n\n      document.body.dispatchEvent(\n        new MouseEvent('mousedown', {\n          bubbles: true,\n          cancelable: true,\n          view: window,\n        }),\n      );\n    }, 100);\n\n    await asyncExpect(async () => {\n      const el = wrapper.find('.ant-select');\n      expect(el.classes()).not.toContain('ant-select-focused');\n    }, 200);\n  });\n\n  describe('Select Custom Icons', () => {\n    it('should support customized icons', () => {\n      const wrapper = mount({\n        render() {\n          return (\n            <Select\n              removeIcon={<CloseOutlined />}\n              clearIcon={<CloseOutlined />}\n              menuItemSelectedIcon={<CloseOutlined />}\n            >\n              <Select.Option value=\"1\">1</Select.Option>\n            </Select>\n          );\n        },\n      });\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/select/demo/automatic-tokenization.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自动分词\n  en-US: Automatic tokenization\n---\n\n## zh-CN\n\n试下复制 `露西,杰克` 到输入框里。只在 tags 和 multiple 模式下可用。\n\n## en-US\n\nTry to copy `Lucy,Jack` to the input. Only available in tags and multiple mode.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    mode=\"tags\"\n    style=\"width: 100%\"\n    :token-separators=\"[',']\"\n    placeholder=\"Automatic tokenization\"\n    :options=\"options\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { SelectProps } from 'ant-design-vue';\nconst options = ref<SelectProps['options']>([\n  {\n    value: 'a1',\n    label: 'a1',\n  },\n]);\nconst value = ref<string[]>([]);\nconst handleChange = (value: []) => {\n  console.log(`selected ${value}`);\n};\nwatch(value, () => {\n  console.log('value', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/select/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本使用\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n基本使用。\n\n## en-US\n\nBasic Usage\n\n</docs>\n\n<template>\n  <h2>use a-select-option</h2>\n  <a-space>\n    <a-select\n      ref=\"select\"\n      v-model:value=\"value1\"\n      style=\"width: 120px\"\n      @focus=\"focus\"\n      @change=\"handleChange\"\n    >\n      <a-select-option value=\"jack\">Jack</a-select-option>\n      <a-select-option value=\"lucy\">Lucy</a-select-option>\n      <a-select-option value=\"disabled\" disabled>Disabled</a-select-option>\n      <a-select-option value=\"Yiminghe\">yiminghe</a-select-option>\n    </a-select>\n    <a-select v-model:value=\"value2\" style=\"width: 120px\" disabled>\n      <a-select-option value=\"lucy\">Lucy</a-select-option>\n    </a-select>\n    <a-select v-model:value=\"value3\" style=\"width: 120px\" loading>\n      <a-select-option value=\"lucy\">Lucy</a-select-option>\n    </a-select>\n  </a-space>\n  <h2 style=\"margin-top: 10px\">use options (recommend)</h2>\n  <a-space>\n    <a-select\n      ref=\"select\"\n      v-model:value=\"value1\"\n      style=\"width: 120px\"\n      :options=\"options1\"\n      @focus=\"focus\"\n      @change=\"handleChange\"\n    ></a-select>\n    <a-select v-model:value=\"value2\" style=\"width: 120px\" disabled :options=\"options2\"></a-select>\n    <a-select v-model:value=\"value3\" style=\"width: 120px\" loading :options=\"options3\"></a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { SelectProps } from 'ant-design-vue';\nconst value1 = ref('lucy');\nconst value2 = ref('lucy');\nconst value3 = ref('lucy');\nconst options1 = ref<SelectProps['options']>([\n  {\n    value: 'jack',\n    label: 'Jack',\n  },\n  {\n    value: 'lucy',\n    label: 'Lucy',\n  },\n  {\n    value: 'disabled',\n    label: 'Disabled',\n    disabled: true,\n  },\n  {\n    value: 'yiminghe',\n    label: 'Yiminghe',\n  },\n]);\nconst options2 = ref<SelectProps['options']>([\n  {\n    value: 'lucy',\n    label: 'Lucy',\n  },\n]);\nconst options3 = ref<SelectProps['options']>([\n  {\n    value: 'lucy',\n    label: 'Lucy',\n  },\n]);\nconst focus = () => {\n  console.log('focus');\n};\n\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\n</script>\n"
  },
  {
    "path": "components/select/demo/big-data.vue",
    "content": "<docs>\n---\norder: 15\ntitle:\n  zh-CN: 大数据\n  en-US: Big Data\n---\n\n## zh-CN\n\nSelect 使用了虚拟滚动技术，因而获得了比 1.x 更好的性能\n\n## en-US\n\nSelect use virtual scroll which get better performance than 1.x\n\n</docs>\n\n<template>\n  <h2>{{ options.length }} Items</h2>\n  <a-select\n    v-model:value=\"value\"\n    mode=\"multiple\"\n    style=\"width: 100%\"\n    placeholder=\"Please select\"\n    :options=\"options\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst options: { value: string; disabled: boolean }[] = [];\nfor (let i = 0; i < 100000; i++) {\n  const value = `${i.toString(36)}${i}`;\n  options.push({\n    value,\n    disabled: i === 10,\n  });\n}\n\nconst value = ref(['a10', 'c12']);\n</script>\n"
  },
  {
    "path": "components/select/demo/coordinate.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 联动\n  en-US: Coordinate\n---\n\n## zh-CN\n\n省市联动是典型的例子。\n推荐使用 [Cascader](/components/cascader-cn/) 组件。\n\n## en-US\n\nCoordinating the selection of provinces and cities is a common use case and demonstrates how selection can be coordinated.\nUsing the [Cascader](/components/cascader) component is strongly recommended instead as it is more flexible and capable.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-select\n      v-model:value=\"province\"\n      style=\"width: 120px\"\n      :options=\"provinceData.map(pro => ({ value: pro }))\"\n    ></a-select>\n    <a-select\n      v-model:value=\"secondCity\"\n      style=\"width: 120px\"\n      :options=\"cities.map(city => ({ value: city }))\"\n    ></a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue';\nconst provinceData = ['Zhejiang', 'Jiangsu'];\nconst cityData = {\n  Zhejiang: ['Hangzhou', 'Ningbo', 'Wenzhou'],\n  Jiangsu: ['Nanjing', 'Suzhou', 'Zhenjiang'],\n};\nconst province = ref(provinceData[0]);\nconst secondCity = ref(cityData[province.value][0]);\nconst cities = computed(() => {\n  return cityData[province.value];\n});\n\nwatch(province, val => {\n  secondCity.value = cityData[val][0];\n});\n</script>\n"
  },
  {
    "path": "components/select/demo/custom-dropdown-menu.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 扩展菜单\n  en-US: Custom dropdown\n---\n\n## zh-CN\n\n使用 `dropdownRender` 对下拉菜单进行自由扩展。\n\n## en-US\n\nCustomize the dropdown menu via `dropdownRender`.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    placeholder=\"custom dropdown render\"\n    style=\"width: 300px\"\n    :options=\"items.map(item => ({ value: item }))\"\n  >\n    <template #dropdownRender=\"{ menuNode: menu }\">\n      <v-nodes :vnodes=\"menu\" />\n      <a-divider style=\"margin: 4px 0\" />\n      <a-space style=\"padding: 4px 8px\">\n        <a-input ref=\"inputRef\" v-model:value=\"name\" placeholder=\"Please enter item\" />\n        <a-button type=\"text\" @click=\"addItem\">\n          <template #icon>\n            <plus-outlined />\n          </template>\n          Add item\n        </a-button>\n      </a-space>\n    </template>\n  </a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { PlusOutlined } from '@ant-design/icons-vue';\nimport { defineComponent, ref } from 'vue';\n\nconst VNodes = defineComponent({\n  props: {\n    vnodes: {\n      type: Object,\n      required: true,\n    },\n  },\n  render() {\n    return this.vnodes;\n  },\n});\n\nlet index = 0;\nconst items = ref(['jack', 'lucy']);\nconst value = ref();\nconst inputRef = ref();\nconst name = ref();\n\nconst addItem = e => {\n  e.preventDefault();\n  console.log('addItem');\n  items.value.push(name.value || `New item ${(index += 1)}`);\n  name.value = '';\n  setTimeout(() => {\n    inputRef.value?.focus();\n  }, 0);\n};\n</script>\n"
  },
  {
    "path": "components/select/demo/field-names.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 自定义 label、value、options 字段\n  en-US: Custom `label` `value` `options` field\n---\n\n## zh-CN\n\n方便数据结构转换。\n\n仅支持 options 传递，不支持 a-select-option 构造节点。\n\n## en-US\n\nEasy data structure conversion.\n\nOnly options passing is supported, a-select-option construction node is not supported.\n\n</docs>\n\n<template>\n  <a-select\n    ref=\"select\"\n    v-model:value=\"value\"\n    style=\"width: 120px\"\n    :options=\"options\"\n    :field-names=\"{ label: 'name', value: 'id', options: 'children' }\"\n    @focus=\"focus\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport type { SelectProps } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst value = ref('lucy');\nconst options = ref<SelectProps['options']>([\n  {\n    id: 'jack',\n    name: 'Jack',\n    children: [\n      {\n        id: 'small jack',\n        name: 'samll Jack',\n      },\n    ],\n  },\n  {\n    id: 'lucy',\n    name: 'Lucy',\n  },\n  {\n    id: 'disabled',\n    name: 'Disabled',\n    disabled: true,\n  },\n  {\n    id: 'yiminghe',\n    name: 'Yiminghe',\n  },\n]);\n\nconst focus = () => {\n  console.log('focus');\n};\n\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\n</script>\n"
  },
  {
    "path": "components/select/demo/hide-selected.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 隐藏已选择选项\n  en-US: Hide Already Selected\n---\n\n## zh-CN\n\n隐藏下拉列表中已选择的选项。\n\n## en-US\n\nHide already selected options in the dropdown.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"selectedItems\"\n    mode=\"multiple\"\n    placeholder=\"Inserted are removed\"\n    style=\"width: 100%\"\n    :options=\"filteredOptions.map(item => ({ value: item }))\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\n\nconst OPTIONS = ['Apples', 'Nails', 'Bananas', 'Helicopters'];\nconst selectedItems = ref<string[]>([]);\n\nconst filteredOptions = computed(() => OPTIONS.filter(o => !selectedItems.value.includes(o)));\n</script>\n"
  },
  {
    "path": "components/select/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <Size />\n    <Tags />\n    <Responsive />\n    <AutomaticTokenization />\n    <LabelInValue />\n    <Multiple />\n    <Coordinate />\n    <Optgroup />\n    <SearchBox />\n    <Search />\n    <SelectUsers />\n    <Suffix />\n    <HideSelected />\n    <CustomDropdownMenu />\n    <OptionLabelProp />\n    <BigData />\n    <fieldNamesVue />\n    <placementVue />\n    <statusVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Size from './size.vue';\nimport Tags from './tags.vue';\nimport AutomaticTokenization from './automatic-tokenization.vue';\nimport LabelInValue from './label-in-value.vue';\nimport Multiple from './multiple.vue';\nimport Coordinate from './coordinate.vue';\nimport Optgroup from './optgroup.vue';\nimport SearchBox from './search-box.vue';\nimport Search from './search.vue';\nimport SelectUsers from './select-users.vue';\nimport Suffix from './suffix.vue';\nimport HideSelected from './hide-selected.vue';\nimport CustomDropdownMenu from './custom-dropdown-menu.vue';\nimport OptionLabelProp from './option-label-prop.vue';\nimport BigData from './big-data.vue';\nimport Responsive from './responsive.vue';\nimport fieldNamesVue from './field-names.vue';\nimport placementVue from './placement.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    placementVue,\n    statusVue,\n    fieldNamesVue,\n    Basic,\n    Size,\n    Tags,\n    AutomaticTokenization,\n    LabelInValue,\n    Multiple,\n    Coordinate,\n    Optgroup,\n    SearchBox,\n    Search,\n    SelectUsers,\n    Suffix,\n    HideSelected,\n    CustomDropdownMenu,\n    OptionLabelProp,\n    BigData,\n    Responsive,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n\n<style>\n#components-select-demo .ant-select {\n  margin: 0 8px 10px 0;\n}\n</style>\n"
  },
  {
    "path": "components/select/demo/label-in-value.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 获得选项的文本\n  en-US: Get value of selected item\n---\n\n## zh-CN\n\n默认情况下 `onChange` 里只能拿到 value，如果需要拿到选中的节点文本 label，可以使用 `labelInValue` 属性。\n选中项的 label 会被包装到 value 中传递给 `onChange` 等函数，此时 value 是一个对象。\n\n## en-US\n\nAs a default behavior, the onChange callback can only get the value of the selected item. The labelInValue prop can be used to get the label property of the selected item.\nThe label of the selected item will be packed as an object for passing to the onChange callback.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    label-in-value\n    style=\"width: 120px\"\n    :options=\"options\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport type { SelectProps } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst options = ref<SelectProps['options']>([\n  {\n    value: 'jack',\n    label: 'Jack (100)',\n  },\n  {\n    value: 'lucy',\n    label: 'Lucy (101)',\n  },\n]);\nconst handleChange: SelectProps['onChange'] = value => {\n  console.log(value); // { key: \"lucy\", label: \"Lucy (101)\" }\n};\n\nconst value = ref({ value: 'lucy', label: 'Lucy (101)' });\n</script>\n"
  },
  {
    "path": "components/select/demo/multiple.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 多选\n  en-US: Multiple selection\n---\n\n## zh-CN\n\n多选，从已有条目中选择（scroll the menu）\n\n## en-US\n\nMultiple selection, selecting from existing items (scroll the menu).\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    mode=\"multiple\"\n    style=\"width: 100%\"\n    placeholder=\"Please select\"\n    :options=\"[...Array(25)].map((_, i) => ({ value: (i + 10).toString(36) + (i + 1) }))\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst handleChange = (value: string[]) => {\n  console.log(`selected ${value}`);\n};\nconst value = ref(['a1', 'b2']);\n</script>\n"
  },
  {
    "path": "components/select/demo/optgroup.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 分组\n  en-US: Option Group\n---\n\n## zh-CN\n\n用 `OptGroup` 或 `options.options` 进行选项分组。\n\n## en-US\n\nUsing `OptGroup` or `options.options` to group the options.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-select v-model:value=\"value\" style=\"width: 200px\" @change=\"handleChange\">\n      <a-select-opt-group>\n        <template #label>\n          <span>\n            <user-outlined />\n            Manager\n          </span>\n        </template>\n        <a-select-option value=\"jack\">Jack</a-select-option>\n        <a-select-option value=\"lucy\">Lucy</a-select-option>\n      </a-select-opt-group>\n      <a-select-opt-group label=\"Engineer\">\n        <a-select-option value=\"Yiminghe\">yiminghe</a-select-option>\n        <a-select-option value=\"Yiminghe1\">yiminghe1</a-select-option>\n      </a-select-opt-group>\n    </a-select>\n    <a-select\n      v-model:value=\"value\"\n      :options=\"options\"\n      style=\"width: 200px\"\n      @change=\"handleChange\"\n    ></a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UserOutlined } from '@ant-design/icons-vue';\nimport type { SelectProps } from 'ant-design-vue';\n\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\n\nconst options = ref<SelectProps['options']>([\n  {\n    label: 'Manager',\n    options: [\n      {\n        value: 'jack',\n        label: 'Jack',\n      },\n      {\n        value: 'lucy',\n        label: 'Lucy',\n      },\n    ],\n  },\n  {\n    label: 'Engineer',\n    options: [\n      {\n        value: 'yiminghe',\n        label: 'Yiminghe',\n      },\n    ],\n  },\n]);\n\nconst value = ref(['lucy']);\n</script>\n"
  },
  {
    "path": "components/select/demo/option-label-prop.vue",
    "content": "<docs>\n---\norder: 14\ntitle:\n  zh-CN: 定制回填内容\n  en-US: Custom selection render\n---\n\n## zh-CN\n\n使用 `optionLabelProp` 指定回填到选择框的 `Option` 属性。\n\n或者使用 `tagRender` 插槽自定义渲染节点\n\n## en-US\n\nSpacified the prop name of Option which will be rendered in select box.\n\nor use `tagRender` slot for custom rendering of tags.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"select one country\"\n      option-label-prop=\"children\"\n    >\n      <a-select-option value=\"china\" label=\"China\">\n        <span role=\"img\" aria-label=\"China\">🇨🇳</span>\n        &nbsp;&nbsp;China (中国)\n      </a-select-option>\n      <a-select-option value=\"usa\" label=\"USA\">\n        <span role=\"img\" aria-label=\"USA\">🇺🇸</span>\n        &nbsp;&nbsp;USA (美国)\n      </a-select-option>\n      <a-select-option value=\"japan\" label=\"Japan\">\n        <span role=\"img\" aria-label=\"Japan\">🇯🇵</span>\n        &nbsp;&nbsp;Japan (日本)\n      </a-select-option>\n      <a-select-option value=\"korea\" label=\"Korea\">\n        <span role=\"img\" aria-label=\"Korea\">🇰🇷</span>\n        &nbsp;&nbsp;Korea (韩国)\n      </a-select-option>\n    </a-select>\n\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"select one country\"\n      option-label-prop=\"label\"\n      :options=\"options\"\n    >\n      <template #option=\"{ value: val, label, icon }\">\n        <span role=\"img\" :aria-label=\"val\">{{ icon }}</span>\n        &nbsp;&nbsp;{{ label }}\n      </template>\n    </a-select>\n    <span>Note: v-slot:option support from v2.2.5</span>\n  </a-space>\n  <br />\n  <br />\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"select one country\"\n      :options=\"options\"\n    >\n      <template #option=\"{ value: val, label, icon }\">\n        <span role=\"img\" :aria-label=\"val\">{{ icon }}</span>\n        &nbsp;&nbsp;{{ label }}\n      </template>\n      <template #tagRender=\"{ value: val, label, closable, onClose, option }\">\n        <a-tag :closable=\"closable\" style=\"margin-right: 3px\" @close=\"onClose\">\n          {{ label }}&nbsp;&nbsp;\n          <span role=\"img\" :aria-label=\"val\">{{ option.icon }}</span>\n        </a-tag>\n      </template>\n    </a-select>\n    <span>Note: v-slot:tagRender support from v3.0</span>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\nconst value = ref(['china']);\n\nconst options = ref([\n  {\n    value: 'china',\n    label: 'China (中国)',\n    icon: '🇨🇳',\n  },\n  {\n    value: 'usa',\n    label: 'USA (美国)',\n    icon: '🇺🇸',\n  },\n  {\n    value: 'japan',\n    label: 'Japan (日本)',\n    icon: '🇯🇵',\n  },\n  {\n    value: 'korea',\n    label: 'Korea (韩国)',\n    icon: '🇨🇰',\n  },\n]);\nwatch(value, val => {\n  console.log(`selected:`, val);\n});\n</script>\n"
  },
  {
    "path": "components/select/demo/placement.vue",
    "content": "<docs>\n---\norder: 28\ntitle:\n  zh-CN: 弹出位置\n  en-US: Popup Placement\n---\n\n## zh-CN\n\n可以通过 `placement` 手动指定弹出的位置。\n\n## en-US\n\nYou can manually specify the position of the popup via `placement`.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\">\n    <a-radio-button value=\"topLeft\">topLeft</a-radio-button>\n    <a-radio-button value=\"topRight\">topRight</a-radio-button>\n    <a-radio-button value=\"bottomLeft\">bottomLeft</a-radio-button>\n    <a-radio-button value=\"bottomRight\">bottomRight</a-radio-button>\n  </a-radio-group>\n  <br />\n  <br />\n  <a-select\n    v-model:value=\"value\"\n    style=\"width: 120px\"\n    :dropdown-match-select-width=\"false\"\n    :placement=\"placement\"\n  >\n    <a-select-option value=\"HangZhou\">HangZhou #310000</a-select-option>\n    <a-select-option value=\"NingBo\">NingBo #315000</a-select-option>\n    <a-select-option value=\"WenZhou\">WenZhou #325000</a-select-option>\n  </a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst placement = ref('topLeft' as const);\nconst value = ref('HangZhou');\n</script>\n"
  },
  {
    "path": "components/select/demo/responsive.vue",
    "content": "<docs>\n---\norder: 24\ntitle:\n  zh-CN: 最多显示多少个选项及选项最大长度\n  en-US: set maxTagCount or maxTagTextLength\n---\n\n## zh-CN\n\n设置一个数字，超过后自动折叠。\n\nmaxTagCount 也可以设置成响应式，但响应式对性能有所消耗，不推荐在大表单场景下使用。\n\n## en-US\n\nSet a number and automatically fold after exceeding.\n\n`maxTagCount` can also be set to responsive, but responsive consumes performance and is not recommended for use in large-form scenarios.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-space>\n      <a-button type=\"primary\" @click=\"maxTagCount++\">maxTagCount++</a-button>\n      <a-button type=\"primary\" @click=\"maxTagCount--\">maxTagCount--</a-button>\n    </a-space>\n\n    <h2>maxTagCount: {{ maxTagCount }}</h2>\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"Select Item...\"\n      :max-tag-count=\"maxTagCount\"\n      :options=\"options\"\n    >\n      <template #maxTagPlaceholder=\"omittedValues\">\n        <span style=\"color: red\">+ {{ omittedValues.length }} ...</span>\n      </template>\n    </a-select>\n    <h2>maxTagCount: responsive</h2>\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"Select Item...\"\n      max-tag-count=\"responsive\"\n      :options=\"options\"\n    ></a-select>\n    <a-space>\n      <a-button type=\"primary\" @click=\"maxTagTextLength++\">maxTagTextLength++</a-button>\n      <a-button type=\"primary\" @click=\"maxTagTextLength--\">maxTagTextLength--</a-button>\n    </a-space>\n    <h2>maxTagTextLength: {{ maxTagTextLength }}</h2>\n    <a-select\n      v-model:value=\"value\"\n      mode=\"multiple\"\n      style=\"width: 100%\"\n      placeholder=\"Select Item...\"\n      :max-tag-text-length=\"maxTagTextLength\"\n      :options=\"options\"\n    ></a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport type { SelectProps } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst options = ref<SelectProps['options']>([]);\n\nfor (let i = 10; i < 36; i++) {\n  const value = i.toString(36) + i;\n  options.value.push({\n    label: `Long Label: ${value}`,\n    value,\n  });\n}\nconst maxTagCount = ref(2);\nconst maxTagTextLength = ref(10);\nconst value = ref(['a10', 'c12', 'h17', 'j19', 'k20']);\n</script>\n"
  },
  {
    "path": "components/select/demo/search-box.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 搜索框\n  en-US: Search Box\n---\n\n## zh-CN\n\n搜索和远程数据结合。\n\n## en-US\n\nSearch with remote data.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    show-search\n    placeholder=\"input search text\"\n    style=\"width: 200px\"\n    :default-active-first-option=\"false\"\n    :show-arrow=\"false\"\n    :filter-option=\"false\"\n    :not-found-content=\"null\"\n    :options=\"data\"\n    @search=\"handleSearch\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport jsonp from 'fetch-jsonp';\n\nlet timeout: any;\nlet currentValue = '';\n\nfunction fetch(value: string, callback: any) {\n  if (timeout) {\n    clearTimeout(timeout);\n    timeout = null;\n  }\n  currentValue = value;\n\n  function fake() {\n    const params = new URLSearchParams({\n      code: 'utf-8',\n      q: value,\n    });\n    jsonp(`https://suggest.taobao.com/sug?${params}`)\n      .then(response => response.json())\n      .then(d => {\n        if (currentValue === value) {\n          const result = d.result;\n          const data: any[] = [];\n          result.forEach((r: any) => {\n            data.push({\n              value: r[0],\n              label: r[0],\n            });\n          });\n          callback(data);\n        }\n      });\n  }\n\n  timeout = setTimeout(fake, 300);\n}\n\nconst data = ref<any[]>([]);\nconst value = ref();\n\nconst handleSearch = (val: string) => {\n  fetch(val, (d: any[]) => (data.value = d));\n};\nconst handleChange = (val: string) => {\n  console.log(val);\n  value.value = val;\n  fetch(val, (d: any[]) => (data.value = d));\n};\n</script>\n"
  },
  {
    "path": "components/select/demo/search.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 带搜索框\n  en-US: Select with search field\n---\n\n## zh-CN\n\n展开后可对选项进行搜索。\n\n## en-US\n\nSearch the options while expanded.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    show-search\n    placeholder=\"Select a person\"\n    style=\"width: 200px\"\n    :options=\"options\"\n    :filter-option=\"filterOption\"\n    @focus=\"handleFocus\"\n    @blur=\"handleBlur\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport type { SelectProps } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst options = ref<SelectProps['options']>([\n  { value: 'jack', label: 'Jack' },\n  { value: 'lucy', label: 'Lucy' },\n  { value: 'tom', label: 'Tom' },\n]);\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\nconst handleBlur = () => {\n  console.log('blur');\n};\nconst handleFocus = () => {\n  console.log('focus');\n};\nconst filterOption = (input: string, option: any) => {\n  return option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n};\n\nconst value = ref<string | undefined>(undefined);\n</script>\n"
  },
  {
    "path": "components/select/demo/select-users.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 搜索用户\n  en-US: Search and Select Users\n---\n\n## zh-CN\n\n一个带有远程搜索，节流控制，请求时序控制，加载状态的多选示例。\n\n## en-US\n\nA complete multiple select sample with remote search, debounce fetch, ajax callback order flow, and loading state.\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"state.value\"\n    mode=\"multiple\"\n    label-in-value\n    placeholder=\"Select users\"\n    style=\"width: 100%\"\n    :filter-option=\"false\"\n    :not-found-content=\"state.fetching ? undefined : null\"\n    :options=\"state.data\"\n    @search=\"fetchUser\"\n  >\n    <template v-if=\"state.fetching\" #notFoundContent>\n      <a-spin size=\"small\" />\n    </template>\n  </a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive, watch } from 'vue';\nimport { debounce } from 'lodash-es';\nlet lastFetchId = 0;\n\nconst state = reactive({\n  data: [],\n  value: [],\n  fetching: false,\n});\n\nconst fetchUser = debounce(value => {\n  console.log('fetching user', value);\n  lastFetchId += 1;\n  const fetchId = lastFetchId;\n  state.data = [];\n  state.fetching = true;\n  fetch('https://randomuser.me/api/?results=5')\n    .then(response => response.json())\n    .then(body => {\n      if (fetchId !== lastFetchId) {\n        // for fetch callback order\n        return;\n      }\n      const data = body.results.map(user => ({\n        label: `${user.name.first} ${user.name.last}`,\n        value: user.login.username,\n      }));\n      state.data = data;\n      state.fetching = false;\n    });\n}, 300);\n\nwatch(state.value, () => {\n  state.data = [];\n  state.fetching = false;\n});\n</script>\n"
  },
  {
    "path": "components/select/demo/size.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 三种大小\n  en-US: Sizes\n---\n\n## zh-CN\n\n三种大小的选择框，当 size 分别为 `large` 和 `small` 时，输入框高度为 `40px` 和 `24px` ，默认高度为 `32px`。\n\n## en-US\n\nThe height of the input field for the select defaults to 32px. If size is set to large, the height will be 40px, and if set to small, 24px.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"size\">\n    <a-radio-button value=\"large\">Large</a-radio-button>\n    <a-radio-button value=\"middle\">Middle</a-radio-button>\n    <a-radio-button value=\"small\">Small</a-radio-button>\n  </a-radio-group>\n  <br />\n  <br />\n  <a-space direction=\"vertical\">\n    <a-select\n      v-model:value=\"value1\"\n      :size=\"size\"\n      style=\"width: 200px\"\n      :options=\"options\"\n    ></a-select>\n    <a-select\n      v-model:value=\"value2\"\n      :options=\"options\"\n      mode=\"multiple\"\n      :size=\"size\"\n      placeholder=\"Please select\"\n      style=\"width: 200px\"\n      @popupScroll=\"popupScroll\"\n    ></a-select>\n    <a-select\n      v-model:value=\"value3\"\n      :options=\"options\"\n      mode=\"tags\"\n      :size=\"size\"\n      placeholder=\"Please select\"\n      style=\"width: 200px\"\n    ></a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { SelectProps } from 'ant-design-vue';\nconst popupScroll = () => {\n  console.log('popupScroll');\n};\nconst size = ref<SelectProps['size']>('middle');\nconst value1 = ref('a1');\nconst value2 = ref(['a1', 'b2']);\nconst value3 = ref(['a1', 'b2']);\nconst options = [...Array(25)].map((_, i) => ({ value: (i + 10).toString(36) + (i + 1) }));\n</script>\n"
  },
  {
    "path": "components/select/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 DatePicker 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to DatePicker with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-select status=\"error\" style=\"width: 100%\" />\n    <a-select status=\"warning\" style=\"width: 100%\" />\n  </a-space>\n</template>\n<style scoped>\n#components-select-demo-status .ant-select {\n  margin: 0;\n}\n</style>\n"
  },
  {
    "path": "components/select/demo/suffix.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 后缀图标\n  en-US: Suffix\n---\n\n## zh-CN\n\n基本使用。\n\n## en-US\n\nBasic Usage\n\n</docs>\n\n<template>\n  <a-space>\n    <a-select\n      v-model:value=\"value1\"\n      style=\"width: 120px\"\n      :options=\"options1\"\n      @change=\"handleChange\"\n    >\n      <template #suffixIcon><smile-outlined class=\"ant-select-suffix\" /></template>\n    </a-select>\n    <a-select v-model:value=\"value2\" style=\"width: 120px\" disabled :options=\"options2\">\n      <template #suffixIcon><meh-outlined class=\"ant-select-suffix\" /></template>\n    </a-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined, MehOutlined } from '@ant-design/icons-vue';\nimport type { SelectProps } from 'ant-design-vue';\nimport { ref } from 'vue';\n\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\n\nconst options1 = ref<SelectProps['options']>([\n  {\n    value: 'jack',\n    label: 'Jack',\n  },\n  {\n    value: 'lucy',\n    label: 'Lucy',\n  },\n  {\n    value: 'disabled',\n    label: 'Disabled',\n    disabled: true,\n  },\n  {\n    value: 'yiminghe',\n    label: 'Yiminghe',\n  },\n]);\nconst options2 = ref<SelectProps['options']>([\n  {\n    value: 'lucy',\n    label: 'Lucy',\n  },\n]);\nconst value1 = ref('lucy');\nconst value2 = ref('lucy');\n</script>\n"
  },
  {
    "path": "components/select/demo/tags.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 标签\n  en-US: Tags\n---\n\n## zh-CN\n\ntags select，随意输入的内容（scroll the menu）\n\n## en-US\n\nSelect with tags, transform input to tag (scroll the menu)\n\n</docs>\n\n<template>\n  <a-select\n    v-model:value=\"value\"\n    mode=\"tags\"\n    style=\"width: 100%\"\n    placeholder=\"Tags Mode\"\n    :options=\"options\"\n    @change=\"handleChange\"\n  ></a-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst handleChange = (value: string) => {\n  console.log(`selected ${value}`);\n};\nconst value = ref([]);\nconst options = [...Array(25)].map((_, i) => ({ value: (i + 10).toString(36) + (i + 1) }));\n</script>\n"
  },
  {
    "path": "components/select/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Select\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*zo76T7KQx2UAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5oPiTqPxGAUAAAAAAAAAAAAADrJ8AQ/original\n---\n\nSelect component to select value from options.\n\n## When To Use\n\n- A dropdown menu for displaying choices - an elegant alternative to the native `<select>` element.\n- Utilizing [Radio](/components/radio/) is recommended when there are fewer total options (less than 5).\n\n## API\n\n```html\n<a-select>\n  <a-select-option value=\"lucy\">lucy</a-select-option>\n</a-select>\n```\n\n### Select props\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | Show clear button. | boolean | false |  |\n| autoClearSearchValue | Whether the current search will be cleared on selecting an item. Only applies when `mode` is set to `multiple` or `tags`. | boolean | true |  |\n| autofocus | Get focus by default | boolean | false |  |\n| bordered | Whether has border style | boolean | true |  |\n| clearIcon | The custom clear icon | VNode \\| slot | - |  |\n| defaultActiveFirstOption | Whether active first option by default | boolean | true |  |\n| defaultOpen | Initial open state of dropdown | boolean | - |  |\n| disabled | Whether disabled select | boolean | false |  |\n| popupClassName | className of dropdown menu | string | - | 4.0 |\n| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \\| number | true |  |\n| dropdownMenuStyle | additional style applied to dropdown menu | object | - |  |\n| dropdownRender | Customize dropdown content | ({menuNode: VNode, props}) => VNode \\| v-slot | - |  |\n| dropdownStyle | style of dropdown menu | object | - |  |\n| fieldNames | Customize node label, value, options field name | object | { label: `label`, value: `value`, options: `options` } | 3.0 |\n| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | `boolean` \\| `function(inputValue, option)` | true |  |\n| filterSort | Sort function for search options sorting, see [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)'s compareFunction | (optionA: Option, optionB: Option) => number | - | 3.0 |\n| firstActiveValue | Value of action option by default | string \\| string\\[] | - |  |\n| getPopupContainer | Parent Node which the selector should be rendered to. Default to `body`. When position issues happen, try to modify it into scrollable content and position it relative. | function(triggerNode) | () => document.body |  |\n| labelInValue | whether to embed label in value, turn the format of value from `string` to `{key: string, label: vNodes, originLabel: any}`, originLabel (3.1) maintains the original type. If the node is constructed through a-select-option children, the value is a function (the default slot of a-select-option) | boolean | false |  |\n| listHeight | Config popup height | number | 256 |  |\n| loading | indicate loading state | boolean | false |  |\n| maxTagCount | Max tag count to show | number | - |  |\n| maxTagPlaceholder | Placeholder for not showing tags | slot \\| function(omittedValues) | - |  |\n| maxTagTextLength | Max text length to show | number | - |  |\n| menuItemSelectedIcon | The custom menuItemSelected icon | VNode \\| slot | - |  |\n| mode | Set mode of Select | 'multiple' \\| 'tags' | - |  |\n| notFoundContent | Specify content to show when no result matches.. | string\\|slot | `Not Found` |  |\n| open | Controlled open state of dropdown | boolean | - |  |\n| option | custom render option by slot | v-slot:option=\"{value, label, [disabled, key, title]}\" | - | 2.2.5 |\n| optionFilterProp | Which prop value of option will be used for filter if filterOption is true | string | value |  |\n| optionLabelProp | Which prop value of option will render as content of select. | string | `children` \\| `label`(when use options) |  |\n| options | Data of the selectOption, manual construction work is no longer needed if this property has been set | Array&lt;{value, label, [disabled, key, title]}> | \\[] |  |\n| placeholder | Placeholder of select | string\\|slot | - |  |\n| placement | The position where the selection box pops up | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| removeIcon | The custom remove icon | VNode \\| slot | - |  |\n| searchValue | The current input \"search\" text | string | - |  |\n| showArrow | Whether to show the drop-down arrow | boolean | single:true, multiple:false |  |\n| showSearch | Whether select is searchable | boolean | single:false, multiple:true |  |\n| size | Size of Select input. `middle` `large` `small` | string | middle |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | The custom suffix icon | VNode \\| slot | - |  |\n| tagRender | Customize tag render, only applies when `mode` is set to `multiple` or `tags` | slot \\| (props) => any | - |  |\n| tokenSeparators | Separator used to tokenize, only applies when `mode=\"tags\"` | string\\[] | - |  |\n| value(v-model) | Current selected option. | string\\|number\\|string\\[]\\|number\\[] | - |  |\n| virtual | Disable virtual scroll when set to false | boolean | true | 3.0 |\n\n> Note, if you find that the drop-down menu scrolls with the page, or you need to trigger Select in other popup layers, please try to use `getPopupContainer={triggerNode => triggerNode.parentElement}` to fix the drop-down popup rendering node in the parent element of the trigger .\n\n### events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| blur | Called when blur | function |\n| change | Called when select an option or input value change, or value of input is changed in combobox mode | function(value, option:Option \\| Array&lt;Option>) |\n| deselect | Called when a option is deselected, the params are option's value (or key) . only called for multiple or tags, effective in multiple or tags mode only. | function(value, option:Option) |\n| dropdownVisibleChange | Call when dropdown open | function(open) |\n| focus | Called when focus | function |\n| inputKeyDown | Called when key pressed | function |\n| mouseenter | Called when mouse enter | function |\n| mouseleave | Called when mouse leave | function |\n| popupScroll | Called when dropdown scrolls | function |\n| search | Callback function that is fired when input changed. | function(value: string) |\n| select | Called when a option is selected, the params are option's value (or key) and option instance. | function(value, option:Option) |\n\n### Select Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | Remove focus |\n| focus() | Get focus    |\n\n### Option props\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| class | additional class to option | string | - |\n| disabled | Disable this option | boolean | false |\n| key | Same usage as `value`. If Vue request you to set this property, you can set it to value of option, and then omit value property. | string |  |\n| title | `title` of Select after select this Option | string | - |\n| value | default to filter with this property | string\\|number | - |\n\n### OptGroup props\n\n| Property | Description | Type         | Default |\n| -------- | ----------- | ------------ | ------- |\n| key      |             | string       | -       |\n| label    | Group label | string\\|slot | -       |\n\n## FAQ\n\n### The dropdown is closed when click `dropdownRender` area?\n\nDropdown menu will be closed if click `dropdownRender` area, you can prevent the default behavior of a click event, See the [dropdownRender example](#components-select-demo-custom-dropdown-menu).\n\n### Why is `placeholder` not displayed?\n\n`placeholder` will only be displayed when `value = undefined`, and other values such as null, 0,'', etc. are meaningful values for the JS language.\n\nYou can check [JS Language Specification](https://262.ecma-international.org/5.1/#sec-4.3.9) for further details.\n\nYou can also check [antd issue](https://github.com/ant-design/ant-design/issues/2367) to view the discussion.\n"
  },
  {
    "path": "components/select/index.tsx",
    "content": "import type { Plugin, ExtractPropTypes, App } from 'vue';\nimport { computed, defineComponent, ref } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { BaseSelectRef } from '../vc-select';\nimport RcSelect, { selectProps as vcSelectProps, Option, OptGroup } from '../vc-select';\nimport type { BaseOptionType, DefaultOptionType } from '../vc-select/Select';\nimport type { OptionProps } from '../vc-select/Option';\nimport getIcons from './utils/iconUtil';\nimport PropTypes from '../_util/vue-types';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { DefaultRenderEmpty } from '../config-provider/renderEmpty';\nimport omit from '../_util/omit';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport type { SelectCommonPlacement } from '../_util/transition';\nimport { getTransitionDirection, getTransitionName } from '../_util/transition';\nimport type { SizeType } from '../config-provider';\nimport { initDefaultProps } from '../_util/props-util';\n\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport { stringType, someType, functionType, booleanType } from '../_util/type';\nimport { useCompactItemContext } from '../space/Compact';\n// CSSINJS\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\nimport devWarning from '../vc-util/devWarning';\n\nimport type { CustomSlotsType } from '../_util/type';\n\ntype RawValue = string | number;\n\nexport type OptionType = typeof Option;\nexport type { OptionProps, BaseSelectRef as RefSelectProps, BaseOptionType, DefaultOptionType };\n\nexport interface LabeledValue {\n  key?: string;\n  value: RawValue;\n  label?: any;\n}\nexport type SelectValue = RawValue | RawValue[] | LabeledValue | LabeledValue[] | undefined;\n\nexport const selectProps = () => ({\n  ...omit(vcSelectProps<SelectValue>(), [\n    'inputIcon',\n    'mode',\n    'getInputElement',\n    'getRawInputElement',\n    'backfill',\n  ]),\n  value: someType<SelectValue>([Array, Object, String, Number]),\n  defaultValue: someType<SelectValue>([Array, Object, String, Number]),\n  notFoundContent: PropTypes.any,\n  suffixIcon: PropTypes.any,\n  itemIcon: PropTypes.any,\n  size: stringType<SizeType>(),\n  mode: stringType<'multiple' | 'tags' | 'SECRET_COMBOBOX_MODE_DO_NOT_USE'>(),\n  bordered: booleanType(true),\n  transitionName: String,\n  choiceTransitionName: stringType(''),\n  popupClassName: String,\n  /** @deprecated Please use `popupClassName` instead */\n  dropdownClassName: String,\n  placement: stringType<SelectCommonPlacement>(),\n  status: stringType<InputStatus>(),\n  'onUpdate:value': functionType<(val: SelectValue) => void>(),\n});\n\nexport type SelectProps = Partial<ExtractPropTypes<ReturnType<typeof selectProps>>>;\n\nconst SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nconst Select = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASelect',\n  Option,\n  OptGroup,\n  inheritAttrs: false,\n  props: initDefaultProps(selectProps(), {\n    listHeight: 256,\n    listItemHeight: 24,\n  }),\n  SECRET_COMBOBOX_MODE_DO_NOT_USE,\n  slots: Object as CustomSlotsType<{\n    notFoundContent: any;\n    suffixIcon: any;\n    itemIcon: any;\n    removeIcon: any;\n    clearIcon: any;\n    dropdownRender: any;\n    option: any;\n    placeholder: any;\n    tagRender: any;\n    maxTagPlaceholder: any;\n    optionLabel: any;\n    default: any;\n  }>,\n  setup(props, { attrs, emit, slots, expose }) {\n    const selectRef = ref<BaseSelectRef>();\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const focus = () => {\n      selectRef.value?.focus();\n    };\n\n    const blur = () => {\n      selectRef.value?.blur();\n    };\n\n    const scrollTo: BaseSelectRef['scrollTo'] = arg => {\n      selectRef.value?.scrollTo(arg);\n    };\n\n    const mode = computed(() => {\n      const { mode } = props;\n\n      if ((mode as any) === 'combobox') {\n        return undefined;\n      }\n\n      if (mode === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n        return 'combobox';\n      }\n\n      return mode;\n    });\n\n    // ====================== Warning ======================\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !props.dropdownClassName,\n        'Select',\n        '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n      );\n    }\n    const {\n      prefixCls,\n      direction,\n      configProvider,\n      renderEmpty,\n      size: contextSize,\n      getPrefixCls,\n      getPopupContainer,\n      disabled,\n      select,\n    } = useConfigInject('select', props);\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const mergedSize = computed(() => compactSize.value || contextSize.value);\n    const contextDisabled = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? contextDisabled.value);\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const rootPrefixCls = computed(() => getPrefixCls());\n    // ===================== Placement =====================\n    const placement = computed(() => {\n      if (props.placement !== undefined) {\n        return props.placement;\n      }\n      return direction.value === 'rtl'\n        ? ('bottomRight' as SelectCommonPlacement)\n        : ('bottomLeft' as SelectCommonPlacement);\n    });\n    const transitionName = computed(() =>\n      getTransitionName(\n        rootPrefixCls.value,\n        getTransitionDirection(placement.value),\n        props.transitionName,\n      ),\n    );\n    const mergedClassName = computed(() =>\n      classNames(\n        {\n          [`${prefixCls.value}-lg`]: mergedSize.value === 'large',\n          [`${prefixCls.value}-sm`]: mergedSize.value === 'small',\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-borderless`]: !props.bordered,\n          [`${prefixCls.value}-in-form-item`]: formItemInputContext.isFormItemInput,\n        },\n        getStatusClassNames(prefixCls.value, mergedStatus.value, formItemInputContext.hasFeedback),\n        compactItemClassnames.value,\n        hashId.value,\n      ),\n    );\n    const triggerChange: SelectProps['onChange'] = (...args) => {\n      emit('update:value', args[0]);\n      emit('change', ...args);\n      formItemContext.onFieldChange();\n    };\n    const handleBlur: SelectProps['onBlur'] = e => {\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n    expose({\n      blur,\n      focus,\n      scrollTo,\n    });\n    const isMultiple = computed(() => mode.value === 'multiple' || mode.value === 'tags');\n    const mergedShowArrow = computed(() =>\n      props.showArrow !== undefined\n        ? props.showArrow\n        : props.loading || !(isMultiple.value || mode.value === 'combobox'),\n    );\n\n    return () => {\n      const {\n        notFoundContent,\n        listHeight = 256,\n        listItemHeight = 24,\n        popupClassName,\n        dropdownClassName,\n        virtual,\n        dropdownMatchSelectWidth,\n        id = formItemContext.id.value,\n        placeholder = slots.placeholder?.(),\n        showArrow,\n      } = props;\n      const { hasFeedback, feedbackIcon } = formItemInputContext;\n      const {} = configProvider;\n\n      // ===================== Empty =====================\n      let mergedNotFound: any;\n      if (notFoundContent !== undefined) {\n        mergedNotFound = notFoundContent;\n      } else if (slots.notFoundContent) {\n        mergedNotFound = slots.notFoundContent();\n      } else if (mode.value === 'combobox') {\n        mergedNotFound = null;\n      } else {\n        mergedNotFound = renderEmpty?.('Select') || <DefaultRenderEmpty componentName=\"Select\" />;\n      }\n\n      // ===================== Icons =====================\n      const { suffixIcon, itemIcon, removeIcon, clearIcon } = getIcons(\n        {\n          ...props,\n          multiple: isMultiple.value,\n          prefixCls: prefixCls.value,\n          hasFeedback,\n          feedbackIcon,\n          showArrow: mergedShowArrow.value,\n        },\n        slots,\n      );\n\n      const selectProps = omit(props, [\n        'prefixCls',\n        'suffixIcon',\n        'itemIcon',\n        'removeIcon',\n        'clearIcon',\n        'size',\n        'bordered',\n        'status',\n      ]);\n\n      const rcSelectRtlDropdownClassName = classNames(\n        popupClassName || dropdownClassName,\n        {\n          [`${prefixCls.value}-dropdown-${direction.value}`]: direction.value === 'rtl',\n        },\n        hashId.value,\n      );\n\n      return wrapSSR(\n        <RcSelect\n          ref={selectRef}\n          virtual={virtual}\n          dropdownMatchSelectWidth={dropdownMatchSelectWidth}\n          {...selectProps}\n          {...attrs}\n          showSearch={props.showSearch ?? select?.value?.showSearch}\n          placeholder={placeholder}\n          listHeight={listHeight}\n          listItemHeight={listItemHeight}\n          mode={mode.value}\n          prefixCls={prefixCls.value}\n          direction={direction.value}\n          inputIcon={suffixIcon}\n          menuItemSelectedIcon={itemIcon}\n          removeIcon={removeIcon}\n          clearIcon={clearIcon}\n          notFoundContent={mergedNotFound}\n          class={[mergedClassName.value, attrs.class]}\n          getPopupContainer={getPopupContainer?.value}\n          dropdownClassName={rcSelectRtlDropdownClassName}\n          onChange={triggerChange}\n          onBlur={handleBlur}\n          id={id}\n          dropdownRender={selectProps.dropdownRender || slots.dropdownRender}\n          v-slots={{ option: slots.option }}\n          transitionName={transitionName.value}\n          children={slots.default?.()}\n          tagRender={props.tagRender || slots.tagRender}\n          optionLabelRender={slots.optionLabel}\n          maxTagPlaceholder={props.maxTagPlaceholder || slots.maxTagPlaceholder}\n          showArrow={hasFeedback || showArrow}\n          disabled={mergedDisabled.value}\n        ></RcSelect>,\n      );\n    };\n  },\n});\n/* istanbul ignore next */\nSelect.install = function (app: App) {\n  app.component(Select.name, Select);\n  app.component(Select.Option.displayName, Select.Option);\n  app.component(Select.OptGroup.displayName, Select.OptGroup);\n  return app;\n};\n\nexport const SelectOption = Select.Option;\nexport const SelectOptGroup = Select.OptGroup;\nexport default Select as typeof Select &\n  Plugin & {\n    readonly Option: typeof Option;\n    readonly OptGroup: typeof OptGroup;\n    readonly SECRET_COMBOBOX_MODE_DO_NOT_USE: 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\n  };\n"
  },
  {
    "path": "components/select/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 选择器\ntype: 数据录入\ntitle: Select\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*zo76T7KQx2UAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5oPiTqPxGAUAAAAAAAAAAAAADrJ8AQ/original\n---\n\n下拉选择器。\n\n## 何时使用\n\n- 弹出一个下拉菜单给用户选择操作，用于代替原生的选择器，或者需要一个更优雅的多选器时。\n- 当选项少时（少于 5 项），建议直接将选项平铺，使用 [Radio](/components/radio/) 是更好的选择。\n\n## API\n\n```html\n<a-select>\n  <a-select-option value=\"lucy\">lucy</a-select-option>\n</a-select>\n```\n\n### Select props\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| allowClear | 支持清除 | boolean | false |  |\n| autoClearSearchValue | 是否在选中项后清空搜索框，只在 `mode` 为 `multiple` 或 `tags` 时有效。 | boolean | true |  |\n| autofocus | 默认获取焦点 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true |  |\n| clearIcon | 自定义的多选框清空图标 | VNode \\| slot | - |  |\n| defaultActiveFirstOption | 是否默认高亮第一个选项。 | boolean | true |  |\n| defaultOpen | 是否默认展开下拉菜单 | boolean | - |  |\n| disabled | 是否禁用 | boolean | false |  |\n| popupClassName | 下拉菜单的 className 属性 | string | - | 4.0 |\n| dropdownMatchSelectWidth | 下拉菜单和选择器同宽。默认将设置 `min-width`，当值小于选择框宽度时会被忽略。false 时会关闭虚拟滚动 | boolean \\| number | true |  |\n| dropdownMenuStyle | dropdown 菜单自定义样式 | object | - |  |\n| dropdownRender | 自定义下拉框内容 | ({menuNode: VNode, props}) => VNode \\| v-slot | - |  |\n| dropdownStyle | 下拉菜单的 style 属性 | object | - |  |\n| fieldNames | 自定义节点 label、value、options 的字段 | object | { label: `label`, value: `value`, options: `options` } | 3.0 |\n| filterOption | 是否根据输入项进行筛选。当其为一个函数时，会接收 `inputValue` `option` 两个参数，当 `option` 符合筛选条件时，应返回 `true`，反之则返回 `false`。 | `boolean` \\| `function(inputValue, option)` | true |  |\n| filterSort | 搜索时对筛选结果项的排序函数, 类似[Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)里的 compareFunction | (optionA: Option, optionB: Option) => number | - | 3.0 |\n| firstActiveValue | 默认高亮的选项 | string \\| string\\[] | - |  |\n| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上，如果你遇到菜单滚动定位问题，试试修改为滚动的区域，并相对其定位。 | function(triggerNode) | () => document.body |  |\n| labelInValue | 是否把每个选项的 label 包装到 value 中，会把 Select 的 value 类型从 `string` 变为 `{key: string, label: vNodes, originLabel: any}` 的格式, originLabel（3.1） 保持原始类型，如果通过 a-select-option children 构造的节点，该值是是个函数（即 a-select-option 的默认插槽） | boolean | false |  |\n| listHeight | 设置弹窗滚动高度 | number | 256 |  |\n| maxTagCount | 最多显示多少个 tag | number | - |  |\n| maxTagPlaceholder | 隐藏 tag 时显示的内容 | slot \\| function(omittedValues) | - |  |\n| maxTagTextLength | 最大显示的 tag 文本长度 | number | - |  |\n| menuItemSelectedIcon | 自定义当前选中的条目图标 | VNode \\| slot | - |  |\n| mode | 设置 Select 的模式为多选或标签 | 'multiple' \\| 'tags' \\| 'combobox' | - |  |\n| notFoundContent | 当下拉列表为空时显示的内容 | string\\|slot | `Not Found` |  |\n| open | 是否展开下拉菜单 | boolean | - |  |\n| option | 通过 option 插槽，自定义节点 | v-slot:option=\"{value, label, [disabled, key, title]}\" | - | 2.2.5 |\n| optionFilterProp | 搜索时过滤对应的 option 属性，不支持 children | string | value |  |\n| optionLabelProp | 回填到选择框的 Option 的属性值，默认是 Option 的子元素。比如在子元素需要高亮效果时，此值可以设为 `value`。 | string | `children` \\| `label`(设置 options 时) |  |\n| options | options 数据，如果设置则不需要手动构造 selectOption 节点 | Array&lt;{value, label, [disabled, key, title]}> | \\[] |  |\n| placeholder | 选择框默认文字 | string\\|slot | - |  |\n| placement | 选择框弹出的位置 | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| removeIcon | 自定义的多选框清除图标 | VNode \\| slot | - |  |\n| searchValue | 控制搜索文本 | string | - |  |\n| showArrow | 是否显示下拉小箭头 | boolean | 单选为 true,多选为 false |  |\n| showSearch | 配置是否可搜索 | boolean | 单选为 false,多选为 true |  |\n| size | 选择框大小，可选 `middle` `large` `small` | string | middle |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | 自定义的选择框后缀图标 | VNode \\| slot | - |  |\n| tagRender | 自定义 tag 内容 render，仅在 `mode` 为 `multiple` 或 `tags` 时生效 | slot \\| (props) => any | - | 3.0 |\n| tokenSeparators | 自动分词的分隔符，仅在 `mode=\"tags\"` 时生效 | string\\[] | - |  |\n| value(v-model) | 指定当前选中的条目 | string\\|string\\[]\\|number\\|number\\[] | - |  |\n| virtual | 设置 false 时关闭虚拟滚动 | boolean | true | 3.0 |\n\n> 注意，如果发现下拉菜单跟随页面滚动，或者需要在其他弹层中触发 Select，请尝试使用 `getPopupContainer={triggerNode => triggerNode.parentNode}` 将下拉弹层渲染节点固定在触发器的父元素中。\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| blur | 失去焦点的时回调 | function |\n| change | 选中 option，或 input 的 value 变化（combobox 模式下）时，调用此函数 | function(value, option:Option \\| Array&lt;Option>) |\n| deselect | 取消选中时调用，参数为选中项的 value (或 key) 值，仅在 multiple 或 tags 模式下生效 | function(value，option:Option) |\n| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) |\n| focus | 获得焦点时回调 | function |\n| inputKeyDown | 键盘按下时回调 | function |\n| mouseenter | 鼠标移入时回调 | function |\n| mouseleave | 鼠标移出时回调 | function |\n| popupScroll | 下拉列表滚动时的回调 | function |\n| search | 文本框值变化时回调 | function(value: string) |\n| select | 被选中时调用，参数为选中项的 value (或 key) 值 | function(value, option:Option) |\n\n### Select Methods\n\n| 名称    | 说明     |\n| ------- | -------- |\n| blur()  | 取消焦点 |\n| focus() | 获取焦点 |\n\n### Option props\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| class | Option 器类名 | string | - |\n| disabled | 是否禁用 | boolean | false |\n| key | 和 value 含义一致。如果 Vue 需要你设置此项，此项值与 value 的值相同，然后可以省略 value 设置 | string |  |\n| title | 选中该 Option 后，Select 的 title | string | - |\n| value | 默认根据此属性值进行筛选 | string\\|number | - |\n\n### OptGroup props\n\n| 参数  | 说明 | 类型                      | 默认值 |\n| ----- | ---- | ------------------------- | ------ |\n| key   |      | string                    | -      |\n| label | 组名 | string\\|function(h)\\|slot | -      |\n\n## FAQ\n\n### 点击 `dropdownRender` 里的内容浮层关闭怎么办？\n\n自定义内容点击时会关闭浮层，如果不喜欢关闭，可以通过取消点击事件的默认行为进行阻止。 看下 [dropdownRender 例子](#components-select-demo-custom-dropdown-menu) 里的说明。\n\n### 为什么 `placeholder` 不显示 ？\n\n`placeholder` 只有在 value = undefined 才会显示，对于其它的 null、0、'' 等等对于 JS 语言都是有意义的值。\n\n你可以查看 [JS 语言规范](https://262.ecma-international.org/5.1/#sec-4.3.9) 进一步了解详情。\n\n也可以查看 [antd issue](https://github.com/ant-design/ant-design/issues/2367) 查看讨论情况。\n"
  },
  {
    "path": "components/select/style/dropdown.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { SelectToken } from '.';\nimport {\n  initMoveMotion,\n  initSlideMotion,\n  slideDownIn,\n  slideDownOut,\n  slideUpIn,\n  slideUpOut,\n} from '../../style/motion';\nimport type { GenerateStyle } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n\nconst genItemStyle: GenerateStyle<SelectToken, CSSObject> = token => {\n  const { controlPaddingHorizontal } = token;\n\n  return {\n    position: 'relative',\n    display: 'block',\n    minHeight: token.controlHeight,\n    padding: `${\n      (token.controlHeight - token.fontSize * token.lineHeight) / 2\n    }px ${controlPaddingHorizontal}px`,\n    color: token.colorText,\n    fontWeight: 'normal',\n    fontSize: token.fontSize,\n    lineHeight: token.lineHeight,\n    boxSizing: 'border-box',\n  };\n};\n\nconst genSingleStyle: GenerateStyle<SelectToken> = token => {\n  const { antCls, componentCls } = token;\n\n  const selectItemCls = `${componentCls}-item`;\n\n  return [\n    {\n      [`${componentCls}-dropdown`]: {\n        // ========================== Popup ==========================\n        ...resetComponent(token),\n\n        position: 'absolute',\n        top: -9999,\n        zIndex: token.zIndexPopup,\n        boxSizing: 'border-box',\n        padding: token.paddingXXS,\n        overflow: 'hidden',\n        fontSize: token.fontSize,\n        // Fix select render lag of long text in chrome\n        // https://github.com/ant-design/ant-design/issues/11456\n        // https://github.com/ant-design/ant-design/issues/11843\n        fontVariant: 'initial',\n        backgroundColor: token.colorBgElevated,\n        borderRadius: token.borderRadiusLG,\n        outline: 'none',\n        boxShadow: token.boxShadowSecondary,\n\n        [`\n            &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomLeft,\n            &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomLeft\n          `]: {\n          animationName: slideUpIn,\n        },\n\n        [`\n            &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topLeft,\n            &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topLeft\n          `]: {\n          animationName: slideDownIn,\n        },\n\n        [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomLeft`]:\n          {\n            animationName: slideUpOut,\n          },\n\n        [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topLeft`]:\n          {\n            animationName: slideDownOut,\n          },\n\n        '&-hidden': {\n          display: 'none',\n        },\n\n        '&-empty': {\n          color: token.colorTextDisabled,\n        },\n\n        // ========================= Options =========================\n        [`${selectItemCls}-empty`]: {\n          ...genItemStyle(token),\n          color: token.colorTextDisabled,\n        },\n\n        [`${selectItemCls}`]: {\n          ...genItemStyle(token),\n          cursor: 'pointer',\n          transition: `background ${token.motionDurationSlow} ease`,\n          borderRadius: token.borderRadiusSM,\n\n          // =========== Group ============\n          '&-group': {\n            color: token.colorTextDescription,\n            fontSize: token.fontSizeSM,\n            cursor: 'default',\n          },\n\n          // =========== Option ===========\n          '&-option': {\n            display: 'flex',\n\n            '&-content': {\n              flex: 'auto',\n              ...textEllipsis,\n            },\n\n            '&-state': {\n              flex: 'none',\n            },\n\n            [`&-active:not(${selectItemCls}-option-disabled)`]: {\n              backgroundColor: token.controlItemBgHover,\n            },\n\n            [`&-selected:not(${selectItemCls}-option-disabled)`]: {\n              color: token.colorText,\n              fontWeight: token.fontWeightStrong,\n              backgroundColor: token.controlItemBgActive,\n\n              [`${selectItemCls}-option-state`]: {\n                color: token.colorPrimary,\n              },\n            },\n            '&-disabled': {\n              [`&${selectItemCls}-option-selected`]: {\n                backgroundColor: token.colorBgContainerDisabled,\n              },\n\n              color: token.colorTextDisabled,\n              cursor: 'not-allowed',\n            },\n\n            '&-grouped': {\n              paddingInlineStart: token.controlPaddingHorizontal * 2,\n            },\n          },\n        },\n\n        // =========================== RTL ===========================\n        '&-rtl': {\n          direction: 'rtl',\n        },\n      },\n    },\n\n    // Follow code may reuse in other components\n    initSlideMotion(token, 'slide-up'),\n    initSlideMotion(token, 'slide-down'),\n    initMoveMotion(token, 'move-up'),\n    initMoveMotion(token, 'move-down'),\n  ];\n};\n\nexport default genSingleStyle;\n"
  },
  {
    "path": "components/select/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\nimport { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\nexport interface SelectToken extends FullToken<'Select'> {\n  rootPrefixCls: string;\n  inputPaddingHorizontalBase: number;\n}\n\n// ============================= Selector =============================\nconst genSelectorStyle: GenerateStyle<SelectToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    position: 'relative',\n    backgroundColor: token.colorBgContainer,\n    border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n    transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n\n    input: {\n      cursor: 'pointer',\n    },\n\n    [`${componentCls}-show-search&`]: {\n      cursor: 'text',\n\n      input: {\n        cursor: 'auto',\n        color: 'inherit',\n      },\n    },\n\n    [`${componentCls}-disabled&`]: {\n      color: token.colorTextDisabled,\n      background: token.colorBgContainerDisabled,\n      cursor: 'not-allowed',\n\n      [`${componentCls}-multiple&`]: {\n        background: token.colorBgContainerDisabled,\n      },\n\n      input: {\n        cursor: 'not-allowed',\n      },\n    },\n  };\n};\n\n// ============================== Status ==============================\nconst genStatusStyle = (\n  rootSelectCls: string,\n  token: {\n    componentCls: string;\n    antCls: string;\n    borderHoverColor: string;\n    outlineColor: string;\n    controlOutlineWidth: number;\n    controlLineWidth: number;\n  },\n  overwriteDefaultBorder: boolean = false,\n): CSSObject => {\n  const { componentCls, borderHoverColor, outlineColor, antCls } = token;\n\n  const overwriteStyle: CSSObject = overwriteDefaultBorder\n    ? {\n        [`${componentCls}-selector`]: {\n          borderColor: borderHoverColor,\n        },\n      }\n    : {};\n\n  return {\n    [rootSelectCls]: {\n      [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]:\n        {\n          ...overwriteStyle,\n\n          [`${componentCls}-focused& ${componentCls}-selector`]: {\n            borderColor: borderHoverColor,\n            boxShadow: `0 0 0 ${token.controlOutlineWidth}px ${outlineColor}`,\n            borderInlineEndWidth: `${token.controlLineWidth}px !important`,\n            outline: 0,\n          },\n\n          [`&:hover ${componentCls}-selector`]: {\n            borderColor: borderHoverColor,\n            borderInlineEndWidth: `${token.controlLineWidth}px !important`,\n          },\n        },\n    },\n  };\n};\n\n// ============================== Styles ==============================\n// /* Reset search input style */\nconst getSearchInputWithoutBorderStyle: GenerateStyle<SelectToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-selection-search-input`]: {\n      margin: 0,\n      padding: 0,\n      background: 'transparent',\n      border: 'none',\n      outline: 'none',\n      appearance: 'none',\n\n      '&::-webkit-search-cancel-button': {\n        display: 'none',\n        '-webkit-appearance': 'none',\n      },\n    },\n  };\n};\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<SelectToken> = token => {\n  const { componentCls, inputPaddingHorizontalBase, iconCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      position: 'relative',\n      display: 'inline-block',\n      cursor: 'pointer',\n\n      [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n        ...genSelectorStyle(token),\n        ...getSearchInputWithoutBorderStyle(token),\n      },\n\n      // [`&:not(&-disabled):hover ${selectCls}-selector`]: {\n      //   ...genHoverStyle(token),\n      // },\n\n      // ======================== Selection ========================\n      [`${componentCls}-selection-item`]: {\n        flex: 1,\n        fontWeight: 'normal',\n        ...textEllipsis,\n      },\n\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder`]: {\n        ...textEllipsis,\n        flex: 1,\n        color: token.colorTextPlaceholder,\n        pointerEvents: 'none',\n      },\n\n      // ========================== Arrow ==========================\n      [`${componentCls}-arrow`]: {\n        ...resetIcon(),\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        height: token.fontSizeIcon,\n        marginTop: -token.fontSizeIcon / 2,\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        lineHeight: 1,\n        textAlign: 'center',\n        pointerEvents: 'none',\n        display: 'flex',\n        alignItems: 'center',\n\n        [iconCls]: {\n          verticalAlign: 'top',\n          transition: `transform ${token.motionDurationSlow}`,\n\n          '> svg': {\n            verticalAlign: 'top',\n          },\n\n          [`&:not(${componentCls}-suffix)`]: {\n            pointerEvents: 'auto',\n          },\n        },\n\n        [`${componentCls}-disabled &`]: {\n          cursor: 'not-allowed',\n        },\n\n        '> *:not(:last-child)': {\n          marginInlineEnd: 8, // FIXME: magic\n        },\n      },\n\n      // ========================== Clear ==========================\n      [`${componentCls}-clear`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        zIndex: 1,\n        display: 'inline-block',\n        width: token.fontSizeIcon,\n        height: token.fontSizeIcon,\n        marginTop: -token.fontSizeIcon / 2,\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        fontStyle: 'normal',\n        lineHeight: 1,\n        textAlign: 'center',\n        textTransform: 'none',\n        background: token.colorBgContainer,\n        cursor: 'pointer',\n        opacity: 0,\n        transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,\n        textRendering: 'auto',\n\n        '&:before': {\n          display: 'block',\n        },\n\n        '&:hover': {\n          color: token.colorTextTertiary,\n        },\n      },\n\n      '&:hover': {\n        [`${componentCls}-clear`]: {\n          opacity: 1,\n        },\n      },\n    },\n\n    // ========================= Feedback ==========================\n    [`${componentCls}-has-feedback`]: {\n      [`${componentCls}-clear`]: {\n        insetInlineEnd: inputPaddingHorizontalBase + token.fontSize + token.paddingXXS,\n      },\n    },\n  };\n};\n\n// ============================== Styles ==============================\nconst genSelectStyle: GenerateStyle<SelectToken> = token => {\n  const { componentCls } = token;\n\n  return [\n    {\n      [componentCls]: {\n        // ==================== BorderLess ====================\n        [`&-borderless ${componentCls}-selector`]: {\n          backgroundColor: `transparent !important`,\n          borderColor: `transparent !important`,\n          boxShadow: `none !important`,\n        },\n\n        // ==================== In Form ====================\n        [`&${componentCls}-in-form-item`]: {\n          width: '100%',\n        },\n      },\n    },\n\n    // =====================================================\n    // ==                       LTR                       ==\n    // =====================================================\n    // Base\n    genBaseStyle(token),\n\n    // Single\n    genSingleStyle(token),\n\n    // Multiple\n    genMultipleStyle(token),\n\n    // Dropdown\n    genDropdownStyle(token),\n\n    // =====================================================\n    // ==                       RTL                       ==\n    // =====================================================\n    {\n      [`${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n    },\n\n    // =====================================================\n    // ==                     Status                      ==\n    // =====================================================\n    genStatusStyle(\n      componentCls,\n      mergeToken<any>(token, {\n        borderHoverColor: token.colorPrimaryHover,\n        outlineColor: token.controlOutline,\n      }),\n    ),\n    genStatusStyle(\n      `${componentCls}-status-error`,\n      mergeToken<any>(token, {\n        borderHoverColor: token.colorErrorHover,\n        outlineColor: token.colorErrorOutline,\n      }),\n      true,\n    ),\n    genStatusStyle(\n      `${componentCls}-status-warning`,\n      mergeToken<any>(token, {\n        borderHoverColor: token.colorWarningHover,\n        outlineColor: token.colorWarningOutline,\n      }),\n      true,\n    ),\n    // =====================================================\n    // ==             Space Compact                       ==\n    // =====================================================\n    genCompactItemStyle(token, {\n      borderElCls: `${componentCls}-selector`,\n      focusElCls: `${componentCls}-focused`,\n    }),\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Select',\n  (token, { rootPrefixCls }) => {\n    const selectToken: SelectToken = mergeToken<SelectToken>(token, {\n      rootPrefixCls,\n      inputPaddingHorizontalBase: token.paddingSM - 1,\n    });\n\n    return [genSelectStyle(selectToken)];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase + 50,\n  }),\n);\n"
  },
  {
    "path": "components/select/style/multiple.ts",
    "content": "import type { CSSInterpolation, CSSObject } from '../../_util/cssinjs';\nimport type { SelectToken } from '.';\nimport { mergeToken } from '../../theme/internal';\nimport { resetIcon } from '../../style';\n\nconst FIXED_ITEM_MARGIN = 2;\n\nfunction getSelectItemStyle({\n  controlHeightSM,\n  controlHeight,\n  lineWidth: borderWidth,\n}: SelectToken) {\n  const selectItemDist = (controlHeight - controlHeightSM) / 2 - borderWidth;\n  const selectItemMargin = Math.ceil(selectItemDist / 2);\n  return [selectItemDist, selectItemMargin];\n}\n\nfunction genSizeStyle(token: SelectToken, suffix?: string): CSSObject {\n  const { componentCls, iconCls } = token;\n\n  const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n\n  const selectItemHeight = token.controlHeightSM;\n  const [selectItemDist] = getSelectItemStyle(token);\n\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n\n  return {\n    [`${componentCls}-multiple${suffixCls}`]: {\n      fontSize: token.fontSize,\n\n      /**\n       * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome\n       * may update to redesign with its align logic.\n       */\n      // =========================== Overflow ===========================\n      [selectOverflowPrefixCls]: {\n        position: 'relative',\n        display: 'flex',\n        flex: 'auto',\n        flexWrap: 'wrap',\n        maxWidth: '100%',\n\n        '&-item': {\n          flex: 'none',\n          alignSelf: 'center',\n          maxWidth: '100%',\n          display: 'inline-flex',\n        },\n      },\n\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        display: 'flex',\n        flexWrap: 'wrap',\n        alignItems: 'center',\n        // Multiple is little different that horizontal is follow the vertical\n        padding: `${selectItemDist - FIXED_ITEM_MARGIN}px ${FIXED_ITEM_MARGIN * 2}px`,\n        borderRadius: token.borderRadius,\n\n        [`${componentCls}-show-search&`]: {\n          cursor: 'text',\n        },\n\n        [`${componentCls}-disabled&`]: {\n          background: token.colorBgContainerDisabled,\n          cursor: 'not-allowed',\n        },\n\n        '&:after': {\n          display: 'inline-block',\n          width: 0,\n          margin: `${FIXED_ITEM_MARGIN}px 0`,\n          lineHeight: `${selectItemHeight}px`,\n          content: '\"\\\\a0\"',\n        },\n      },\n\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selector,\n        &${componentCls}-allow-clear ${componentCls}-selector\n      `]: {\n        paddingInlineEnd: token.fontSizeIcon + token.controlPaddingHorizontal,\n      },\n\n      // ======================== Selections ========================\n      [`${componentCls}-selection-item`]: {\n        position: 'relative',\n        display: 'flex',\n        flex: 'none',\n        boxSizing: 'border-box',\n        maxWidth: '100%',\n        height: selectItemHeight,\n        marginTop: FIXED_ITEM_MARGIN,\n        marginBottom: FIXED_ITEM_MARGIN,\n        lineHeight: `${selectItemHeight - token.lineWidth * 2}px`,\n        background: token.colorFillSecondary,\n        border: `${token.lineWidth}px solid ${token.colorSplit}`,\n        borderRadius: token.borderRadiusSM,\n        cursor: 'default',\n        transition: `font-size ${token.motionDurationSlow}, line-height ${token.motionDurationSlow}, height ${token.motionDurationSlow}`,\n        userSelect: 'none',\n        marginInlineEnd: FIXED_ITEM_MARGIN * 2,\n        paddingInlineStart: token.paddingXS,\n        paddingInlineEnd: token.paddingXS / 2,\n\n        [`${componentCls}-disabled&`]: {\n          color: token.colorTextDisabled,\n          borderColor: token.colorBorder,\n          cursor: 'not-allowed',\n        },\n\n        // It's ok not to do this, but 24px makes bottom narrow in view should adjust\n        '&-content': {\n          display: 'inline-block',\n          marginInlineEnd: token.paddingXS / 2,\n          overflow: 'hidden',\n          whiteSpace: 'pre', // fix whitespace wrapping. custom tags display all whitespace within.\n          textOverflow: 'ellipsis',\n        },\n\n        '&-remove': {\n          ...resetIcon(),\n\n          display: 'inline-block',\n          color: token.colorIcon,\n          fontWeight: 'bold',\n          fontSize: 10,\n          lineHeight: 'inherit',\n          cursor: 'pointer',\n\n          [`> ${iconCls}`]: {\n            verticalAlign: '-0.2em',\n          },\n\n          '&:hover': {\n            color: token.colorIconHover,\n          },\n        },\n      },\n\n      // ========================== Input ==========================\n      [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: {\n        [`${componentCls}-selection-search`]: {\n          marginInlineStart: 0,\n        },\n      },\n\n      [`${componentCls}-selection-search`]: {\n        display: 'inline-flex',\n        position: 'relative',\n        maxWidth: '100%',\n        marginInlineStart: token.inputPaddingHorizontalBase - selectItemDist,\n\n        [`\n          &-input,\n          &-mirror\n        `]: {\n          height: selectItemHeight,\n          fontFamily: token.fontFamily,\n          lineHeight: `${selectItemHeight}px`,\n          transition: `all ${token.motionDurationSlow}`,\n        },\n\n        '&-input': {\n          width: '100%',\n          minWidth: 4.1, // fix search cursor missing\n        },\n\n        '&-mirror': {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          insetInlineEnd: 'auto',\n          zIndex: 999,\n          whiteSpace: 'pre', // fix whitespace wrapping caused width calculation bug\n          visibility: 'hidden',\n        },\n      },\n\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder `]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: token.inputPaddingHorizontalBase,\n        insetInlineEnd: token.inputPaddingHorizontalBase,\n        transform: 'translateY(-50%)',\n        transition: `all ${token.motionDurationSlow}`,\n      },\n    },\n  };\n}\n\nexport default function genMultipleStyle(token: SelectToken): CSSInterpolation {\n  const { componentCls } = token;\n\n  const smallToken = mergeToken<SelectToken>(token, {\n    controlHeight: token.controlHeightSM,\n    controlHeightSM: token.controlHeightXS,\n    borderRadius: token.borderRadiusSM,\n    borderRadiusSM: token.borderRadiusXS,\n  });\n  const [, smSelectItemMargin] = getSelectItemStyle(token);\n\n  return [\n    genSizeStyle(token),\n    // ======================== Small ========================\n    // Shared\n    genSizeStyle(smallToken, 'sm'),\n\n    // Padding\n    {\n      [`${componentCls}-multiple${componentCls}-sm`]: {\n        [`${componentCls}-selection-placeholder`]: {\n          insetInlineStart: token.controlPaddingHorizontalSM - token.lineWidth,\n          insetInlineEnd: token.controlPaddingHorizontalSM - token.lineWidth,\n        },\n\n        // https://github.com/ant-design/ant-design/issues/29559\n        [`${componentCls}-selection-search`]: {\n          marginInlineStart: smSelectItemMargin,\n        },\n      },\n    },\n\n    // ======================== Large ========================\n    // Shared\n    genSizeStyle(\n      mergeToken<any>(token, {\n        fontSize: token.fontSizeLG,\n        controlHeight: token.controlHeightLG,\n        controlHeightSM: token.controlHeight,\n        borderRadius: token.borderRadiusLG,\n        borderRadiusSM: token.borderRadius,\n      }),\n      'lg',\n    ),\n  ];\n}\n"
  },
  {
    "path": "components/select/style/single.ts",
    "content": "import type { CSSInterpolation, CSSObject } from '../../_util/cssinjs';\nimport { resetComponent } from '../../style';\nimport type { SelectToken } from '.';\nimport { mergeToken } from '../../theme/internal';\n\nfunction genSizeStyle(token: SelectToken, suffix?: string): CSSObject {\n  const { componentCls, inputPaddingHorizontalBase, borderRadius } = token;\n\n  const selectHeightWithoutBorder = token.controlHeight - token.lineWidth * 2;\n\n  const selectionItemPadding = Math.ceil(token.fontSize * 1.25);\n\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n\n  return {\n    [`${componentCls}-single${suffixCls}`]: {\n      fontSize: token.fontSize,\n\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        ...resetComponent(token),\n\n        display: 'flex',\n        borderRadius,\n\n        [`${componentCls}-selection-search`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: inputPaddingHorizontalBase,\n          insetInlineEnd: inputPaddingHorizontalBase,\n          bottom: 0,\n\n          '&-input': {\n            width: '100%',\n          },\n        },\n\n        [`\n          ${componentCls}-selection-item,\n          ${componentCls}-selection-placeholder\n        `]: {\n          padding: 0,\n          lineHeight: `${selectHeightWithoutBorder}px`,\n          transition: `all ${token.motionDurationSlow}`,\n\n          // Firefox inline-block position calculation is not same as Chrome & Safari. Patch this:\n          '@supports (-moz-appearance: meterbar)': {\n            lineHeight: `${selectHeightWithoutBorder}px`,\n          },\n        },\n\n        [`${componentCls}-selection-item`]: {\n          position: 'relative',\n          userSelect: 'none',\n        },\n\n        [`${componentCls}-selection-placeholder`]: {\n          transition: 'none',\n          pointerEvents: 'none',\n        },\n\n        // For common baseline align\n        [[\n          '&:after',\n          /* For '' value baseline align */\n          `${componentCls}-selection-item:after`,\n          /* For undefined value baseline align */\n          `${componentCls}-selection-placeholder:after`,\n        ].join(',')]: {\n          display: 'inline-block',\n          width: 0,\n          visibility: 'hidden',\n          content: '\"\\\\a0\"',\n        },\n      },\n\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selection-item,\n        &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n      `]: {\n        paddingInlineEnd: selectionItemPadding,\n      },\n\n      // Opacity selection if open\n      [`&${componentCls}-open ${componentCls}-selection-item`]: {\n        color: token.colorTextPlaceholder,\n      },\n\n      // ========================== Input ==========================\n      // We only change the style of non-customize input which is only support by `combobox` mode.\n      // Not customize\n      [`&:not(${componentCls}-customize-input)`]: {\n        [`${componentCls}-selector`]: {\n          width: '100%',\n          height: token.controlHeight,\n          padding: `0 ${inputPaddingHorizontalBase}px`,\n\n          [`${componentCls}-selection-search-input`]: {\n            height: selectHeightWithoutBorder,\n          },\n\n          '&:after': {\n            lineHeight: `${selectHeightWithoutBorder}px`,\n          },\n        },\n      },\n\n      [`&${componentCls}-customize-input`]: {\n        [`${componentCls}-selector`]: {\n          '&:after': {\n            display: 'none',\n          },\n\n          [`${componentCls}-selection-search`]: {\n            position: 'static',\n            width: '100%',\n          },\n\n          [`${componentCls}-selection-placeholder`]: {\n            position: 'absolute',\n            insetInlineStart: 0,\n            insetInlineEnd: 0,\n            padding: `0 ${inputPaddingHorizontalBase}px`,\n\n            '&:after': {\n              display: 'none',\n            },\n          },\n        },\n      },\n    },\n  };\n}\n\nexport default function genSingleStyle(token: SelectToken): CSSInterpolation {\n  const { componentCls } = token;\n\n  const inputPaddingHorizontalSM = token.controlPaddingHorizontalSM - token.lineWidth;\n\n  return [\n    genSizeStyle(token),\n\n    // ======================== Small ========================\n    // Shared\n    genSizeStyle(\n      mergeToken<any>(token, {\n        controlHeight: token.controlHeightSM,\n        borderRadius: token.borderRadiusSM,\n      }),\n      'sm',\n    ),\n\n    // padding\n    {\n      [`${componentCls}-single${componentCls}-sm`]: {\n        [`&:not(${componentCls}-customize-input)`]: {\n          [`${componentCls}-selection-search`]: {\n            insetInlineStart: inputPaddingHorizontalSM,\n            insetInlineEnd: inputPaddingHorizontalSM,\n          },\n\n          [`${componentCls}-selector`]: {\n            padding: `0 ${inputPaddingHorizontalSM}px`,\n          },\n\n          // With arrow should provides `padding-right` to show the arrow\n          [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {\n            insetInlineEnd: inputPaddingHorizontalSM + token.fontSize * 1.5,\n          },\n\n          [`\n            &${componentCls}-show-arrow ${componentCls}-selection-item,\n            &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n          `]: {\n            paddingInlineEnd: token.fontSize * 1.5,\n          },\n        },\n      },\n    },\n\n    // ======================== Large ========================\n    // Shared\n    genSizeStyle(\n      mergeToken<any>(token, {\n        controlHeight: token.controlHeightLG,\n        fontSize: token.fontSizeLG,\n        borderRadius: token.borderRadiusLG,\n      }),\n      'lg',\n    ),\n  ];\n}\n"
  },
  {
    "path": "components/select/utils/iconUtil.tsx",
    "content": "import DownOutlined from '@ant-design/icons-vue/DownOutlined';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport CheckOutlined from '@ant-design/icons-vue/CheckOutlined';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled';\nimport SearchOutlined from '@ant-design/icons-vue/SearchOutlined';\n\nexport default function getIcons(props: any, slots: any = {}) {\n  const { loading, multiple, prefixCls, hasFeedback, feedbackIcon, showArrow } = props;\n  const suffixIcon = props.suffixIcon || (slots.suffixIcon && slots.suffixIcon());\n  const clearIcon = props.clearIcon || (slots.clearIcon && slots.clearIcon());\n  const menuItemSelectedIcon =\n    props.menuItemSelectedIcon || (slots.menuItemSelectedIcon && slots.menuItemSelectedIcon());\n  const removeIcon = props.removeIcon || (slots.removeIcon && slots.removeIcon());\n  // Clear Icon\n  const mergedClearIcon = clearIcon ?? <CloseCircleFilled />;\n  // Validation Feedback Icon\n  const getSuffixIconNode = arrowIcon => (\n    <>\n      {showArrow !== false && arrowIcon}\n      {hasFeedback && feedbackIcon}\n    </>\n  );\n  // Arrow item icon\n  let mergedSuffixIcon = null;\n  if (suffixIcon !== undefined) {\n    mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n  } else if (loading) {\n    mergedSuffixIcon = getSuffixIconNode(<LoadingOutlined spin />);\n  } else {\n    const iconCls = `${prefixCls}-suffix`;\n    mergedSuffixIcon = ({ open, showSearch }: { open: boolean; showSearch: boolean }) => {\n      if (open && showSearch) {\n        return getSuffixIconNode(<SearchOutlined class={iconCls} />);\n      }\n      return getSuffixIconNode(<DownOutlined class={iconCls} />);\n    };\n  }\n\n  // Checked item icon\n  let mergedItemIcon = null;\n  if (menuItemSelectedIcon !== undefined) {\n    mergedItemIcon = menuItemSelectedIcon;\n  } else if (multiple) {\n    mergedItemIcon = <CheckOutlined />;\n  } else {\n    mergedItemIcon = null;\n  }\n\n  let mergedRemoveIcon = null;\n  if (removeIcon !== undefined) {\n    mergedRemoveIcon = removeIcon;\n  } else {\n    mergedRemoveIcon = <CloseOutlined />;\n  }\n\n  return {\n    clearIcon: mergedClearIcon,\n    suffixIcon: mergedSuffixIcon,\n    itemIcon: mergedItemIcon,\n    removeIcon: mergedRemoveIcon,\n  };\n}\n"
  },
  {
    "path": "components/skeleton/Avatar.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport Element, { skeletonElementProps } from './Element';\nimport useStyle from './style';\n\nexport const avatarProps = () => {\n  return {\n    ...skeletonElementProps(),\n    shape: String as PropType<'circle' | 'square'>,\n  };\n};\n\nexport type SkeletonAvatarProps = Partial<ExtractPropTypes<ReturnType<typeof avatarProps>>>;\n\nconst SkeletonAvatar = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASkeletonAvatar',\n  props: initDefaultProps(avatarProps(), {\n    size: 'default',\n    shape: 'circle',\n  }),\n  setup(props) {\n    const { prefixCls } = useConfigInject('skeleton', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const cls = computed(() =>\n      classNames(\n        prefixCls.value,\n        `${prefixCls.value}-element`,\n        {\n          [`${prefixCls.value}-active`]: props.active,\n        },\n        hashId.value,\n      ),\n    );\n    return () => {\n      return wrapSSR(\n        <div class={cls.value}>\n          <Element {...props} prefixCls={`${prefixCls.value}-avatar`} />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default SkeletonAvatar;\n"
  },
  {
    "path": "components/skeleton/Button.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { initDefaultProps } from '../_util/props-util';\nimport Element, { skeletonElementProps } from './Element';\nimport useStyle from './style';\n\nexport const skeletonButtonProps = () => {\n  return {\n    ...skeletonElementProps(),\n    size: String as PropType<'large' | 'small' | 'default'>,\n    block: Boolean,\n  };\n};\n\nexport type SkeletonButtonProps = Partial<ExtractPropTypes<ReturnType<typeof skeletonButtonProps>>>;\n\nconst SkeletonButton = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASkeletonButton',\n  props: initDefaultProps(skeletonButtonProps(), {\n    size: 'default',\n  }),\n  setup(props) {\n    const { prefixCls } = useConfigInject('skeleton', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const cls = computed(() =>\n      classNames(\n        prefixCls.value,\n        `${prefixCls.value}-element`,\n        {\n          [`${prefixCls.value}-active`]: props.active,\n          [`${prefixCls.value}-block`]: props.block,\n        },\n        hashId.value,\n      ),\n    );\n    return () => {\n      return wrapSSR(\n        <div class={cls.value}>\n          <Element {...props} prefixCls={`${prefixCls.value}-button`} />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default SkeletonButton;\n"
  },
  {
    "path": "components/skeleton/Element.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, FunctionalComponent, PropType } from 'vue';\nimport classNames from '../_util/classNames';\n\nexport const skeletonElementProps = () => ({\n  prefixCls: String,\n  size: [String, Number] as PropType<'large' | 'small' | 'default' | number>,\n  shape: String as PropType<'circle' | 'square' | 'round' | 'default'>,\n  active: { type: Boolean, default: undefined },\n});\n\nexport type SkeletonElementProps = Partial<\n  ExtractPropTypes<ReturnType<typeof skeletonElementProps>>\n>;\n\nconst Element: FunctionalComponent<SkeletonElementProps> = props => {\n  const { prefixCls, size, shape } = props;\n\n  const sizeCls = classNames({\n    [`${prefixCls}-lg`]: size === 'large',\n    [`${prefixCls}-sm`]: size === 'small',\n  });\n\n  const shapeCls = classNames({\n    [`${prefixCls}-circle`]: shape === 'circle',\n    [`${prefixCls}-square`]: shape === 'square',\n    [`${prefixCls}-round`]: shape === 'round',\n  });\n\n  const sizeStyle: CSSProperties =\n    typeof size === 'number'\n      ? {\n          width: `${size}px`,\n          height: `${size}px`,\n          lineHeight: `${size}px`,\n        }\n      : {};\n\n  return <span class={classNames(prefixCls, sizeCls, shapeCls)} style={sizeStyle} />;\n};\nElement.displayName = 'SkeletonElement';\n\nexport default Element;\n"
  },
  {
    "path": "components/skeleton/Image.tsx",
    "content": "import { computed, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport type { SkeletonElementProps } from './Element';\nimport { skeletonElementProps } from './Element';\nimport useStyle from './style';\n\nexport type SkeletonImageProps = Omit<SkeletonElementProps, 'size' | 'shape' | 'active'>;\n\nconst path =\n  'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\n\nconst SkeletonImage = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASkeletonImage',\n  props: omit(skeletonElementProps(), ['size', 'shape', 'active']),\n  setup(props) {\n    const { prefixCls } = useConfigInject('skeleton', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const cls = computed(() =>\n      classNames(prefixCls.value, `${prefixCls.value}-element`, hashId.value),\n    );\n    return () => {\n      return wrapSSR(\n        <div class={cls.value}>\n          <div class={`${prefixCls.value}-image`}>\n            <svg\n              viewBox=\"0 0 1098 1024\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              class={`${prefixCls.value}-image-svg`}\n            >\n              <path d={path} class={`${prefixCls.value}-image-path`} />\n            </svg>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default SkeletonImage;\n"
  },
  {
    "path": "components/skeleton/Input.tsx",
    "content": "import type { PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { SkeletonElementProps } from './Element';\nimport Element, { skeletonElementProps } from './Element';\nimport omit from '../_util/omit';\nimport useStyle from './style';\n\nexport interface SkeletonInputProps extends Omit<SkeletonElementProps, 'size' | 'shape'> {\n  size?: 'large' | 'small' | 'default';\n  block?: boolean;\n}\n\nconst SkeletonInput = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASkeletonInput',\n  props: {\n    ...omit(skeletonElementProps(), ['shape']),\n    size: String as PropType<'large' | 'small' | 'default'>,\n    block: Boolean,\n  },\n  setup(props) {\n    const { prefixCls } = useConfigInject('skeleton', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const cls = computed(() =>\n      classNames(\n        prefixCls.value,\n        `${prefixCls.value}-element`,\n        {\n          [`${prefixCls.value}-active`]: props.active,\n          [`${prefixCls.value}-block`]: props.block,\n        },\n        hashId.value,\n      ),\n    );\n    return () => {\n      return wrapSSR(\n        <div class={cls.value}>\n          <Element {...props} prefixCls={`${prefixCls.value}-input`} />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default SkeletonInput;\n"
  },
  {
    "path": "components/skeleton/Paragraph.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent } from 'vue';\n\ntype widthUnit = number | string;\nexport const skeletonParagraphProps = () => ({\n  prefixCls: String,\n  width: { type: [Number, String, Array] as PropType<widthUnit[] | widthUnit> },\n  rows: Number,\n});\n\nexport type SkeletonParagraphProps = Partial<\n  ExtractPropTypes<ReturnType<typeof skeletonParagraphProps>>\n>;\n\nconst SkeletonParagraph = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'SkeletonParagraph',\n  props: skeletonParagraphProps(),\n  setup(props) {\n    const getWidth = (index: number) => {\n      const { width, rows = 2 } = props;\n      if (Array.isArray(width)) {\n        return width[index];\n      }\n      // last paragraph\n      if (rows - 1 === index) {\n        return width;\n      }\n      return undefined;\n    };\n    return () => {\n      const { prefixCls, rows } = props;\n      const rowList = [...Array(rows)].map((_, index) => {\n        const width = getWidth(index);\n        return (\n          <li key={index} style={{ width: typeof width === 'number' ? `${width}px` : width }} />\n        );\n      });\n      return <ul class={prefixCls}>{rowList}</ul>;\n    };\n  },\n});\n\nexport default SkeletonParagraph;\n"
  },
  {
    "path": "components/skeleton/Skeleton.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport { initDefaultProps } from '../_util/props-util';\nimport type { SkeletonAvatarProps as AvatarProps } from './Avatar';\nimport type { SkeletonTitleProps } from './Title';\nimport Title from './Title';\nimport type { SkeletonParagraphProps } from './Paragraph';\nimport Paragraph from './Paragraph';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport Element from './Element';\nimport useStyle from './style';\n\n/* This only for skeleton internal. */\ntype SkeletonAvatarProps = Omit<AvatarProps, 'active'>;\n\nexport const skeletonProps = () => ({\n  active: { type: Boolean, default: undefined },\n  loading: { type: Boolean, default: undefined },\n  prefixCls: String,\n  avatar: {\n    type: [Boolean, Object] as PropType<SkeletonAvatarProps | boolean>,\n    default: undefined as SkeletonAvatarProps | boolean,\n  },\n  title: {\n    type: [Boolean, Object] as PropType<SkeletonTitleProps | boolean>,\n    default: undefined as SkeletonTitleProps | boolean,\n  },\n  paragraph: {\n    type: [Boolean, Object] as PropType<SkeletonParagraphProps | boolean>,\n    default: undefined as SkeletonParagraphProps | boolean,\n  },\n  round: { type: Boolean, default: undefined },\n});\n\nexport type SkeletonProps = Partial<ExtractPropTypes<ReturnType<typeof skeletonProps>>>;\n\nfunction getComponentProps<T>(prop: T | boolean | undefined): T | {} {\n  if (prop && typeof prop === 'object') {\n    return prop;\n  }\n  return {};\n}\nfunction getAvatarBasicProps(hasTitle: boolean, hasParagraph: boolean): SkeletonAvatarProps {\n  if (hasTitle && !hasParagraph) {\n    // Square avatar\n    return { size: 'large', shape: 'square' };\n  }\n\n  return { size: 'large', shape: 'circle' };\n}\n\nfunction getTitleBasicProps(hasAvatar: boolean, hasParagraph: boolean): SkeletonTitleProps {\n  if (!hasAvatar && hasParagraph) {\n    return { width: '38%' };\n  }\n\n  if (hasAvatar && hasParagraph) {\n    return { width: '50%' };\n  }\n\n  return {};\n}\n\nfunction getParagraphBasicProps(hasAvatar: boolean, hasTitle: boolean): SkeletonParagraphProps {\n  const basicProps: SkeletonParagraphProps = {};\n\n  // Width\n  if (!hasAvatar || !hasTitle) {\n    basicProps.width = '61%';\n  }\n\n  // Rows\n  if (!hasAvatar && hasTitle) {\n    basicProps.rows = 3;\n  } else {\n    basicProps.rows = 2;\n  }\n\n  return basicProps;\n}\n\nconst Skeleton = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASkeleton',\n  props: initDefaultProps(skeletonProps(), {\n    avatar: false,\n    title: true,\n    paragraph: true,\n  }),\n  setup(props, { slots }) {\n    const { prefixCls, direction } = useConfigInject('skeleton', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const { loading, avatar, title, paragraph, active, round } = props;\n      const pre = prefixCls.value;\n      if (loading || props.loading === undefined) {\n        const hasAvatar = !!avatar || (avatar as string) === '';\n        const hasTitle = !!title || (title as string) === '';\n        const hasParagraph = !!paragraph || (paragraph as string) === '';\n\n        // Avatar\n        let avatarNode;\n        if (hasAvatar) {\n          const avatarProps = {\n            prefixCls: `${pre}-avatar`,\n            ...getAvatarBasicProps(hasTitle, hasParagraph),\n            ...getComponentProps(avatar),\n          };\n\n          avatarNode = (\n            <div class={`${pre}-header`}>\n              <Element {...avatarProps} />\n            </div>\n          );\n        }\n\n        let contentNode;\n        if (hasTitle || hasParagraph) {\n          // Title\n          let $title;\n          if (hasTitle) {\n            const titleProps = {\n              prefixCls: `${pre}-title`,\n              ...getTitleBasicProps(hasAvatar, hasParagraph),\n              ...getComponentProps(title),\n            };\n\n            $title = <Title {...titleProps} />;\n          }\n\n          // Paragraph\n          let paragraphNode;\n          if (hasParagraph) {\n            const paragraphProps = {\n              prefixCls: `${pre}-paragraph`,\n              ...getParagraphBasicProps(hasAvatar, hasTitle),\n              ...getComponentProps(paragraph),\n            };\n\n            paragraphNode = <Paragraph {...paragraphProps} />;\n          }\n\n          contentNode = (\n            <div class={`${pre}-content`}>\n              {$title}\n              {paragraphNode}\n            </div>\n          );\n        }\n\n        const cls = classNames(pre, {\n          [`${pre}-with-avatar`]: hasAvatar,\n          [`${pre}-active`]: active,\n          [`${pre}-rtl`]: direction.value === 'rtl',\n          [`${pre}-round`]: round,\n          [hashId.value]: true,\n        });\n\n        return wrapSSR(\n          <div class={cls}>\n            {avatarNode}\n            {contentNode}\n          </div>,\n        );\n      }\n      return slots.default?.();\n    };\n  },\n});\n\nexport default Skeleton;\n"
  },
  {
    "path": "components/skeleton/Title.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent } from 'vue';\n\nexport const skeletonTitleProps = () => ({\n  prefixCls: String,\n  width: { type: [Number, String] as PropType<string | number> },\n});\n\nexport type SkeletonTitleProps = Partial<ExtractPropTypes<ReturnType<typeof skeletonTitleProps>>>;\n\nconst SkeletonTitle = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'SkeletonTitle',\n  props: skeletonTitleProps(),\n  setup(props) {\n    return () => {\n      const { prefixCls, width } = props;\n      const zWidth = typeof width === 'number' ? `${width}px` : width;\n      return <h3 class={prefixCls} style={{ width: zWidth }} />;\n    };\n  },\n});\n\nexport default SkeletonTitle;\n"
  },
  {
    "path": "components/skeleton/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/skeleton/demo/active.vue correctly 1`] = `\n<div class=\"ant-skeleton ant-skeleton-active \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 38%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li style=\"width: 61%;\"></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/skeleton/demo/basic.vue correctly 1`] = `\n<div class=\"ant-skeleton \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 38%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li style=\"width: 61%;\"></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/skeleton/demo/children.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 16px;\">\n    <div>\n      <h4>Ant Design Vue, a design language</h4>\n      <p> We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently. </p>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Show Skeleton</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/skeleton/demo/complex.vue correctly 1`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/skeleton/demo/element.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-skeleton ant-skeleton-element\"><span class=\"ant-skeleton-button\"></span></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-skeleton ant-skeleton-element\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-circle\"></span></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-skeleton ant-skeleton-element\" style=\"width: 200px;\"><span class=\"ant-skeleton-input\"></span></div>\n  </div>\n  <!---->\n</div>\n<br>\n<br>\n<div class=\"ant-skeleton ant-skeleton-element\"><span class=\"ant-skeleton-button\"></span></div>\n<br>\n<br>\n<div class=\"ant-skeleton ant-skeleton-element\">\n  <div class=\"ant-skeleton-image\"><svg viewBox=\"0 0 1098 1024\" xmlns=\"http://www.w3.org/2000/svg\" class=\"ant-skeleton-image-svg\">\n      <path d=\"M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z\" class=\"ant-skeleton-image-path\"></path>\n    </svg></div>\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<form style=\"margin: 16px 0px;\" class=\"ant-form ant-form-inline\">\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Active\">Active\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Button Block\">Button Block\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n              <div class=\"ant-switch-handle\">\n                <!---->\n              </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n            </button></div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Size\">Size\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"default\"><span class=\"ant-radio-button-inner\"></span></span><span>Default</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"large\"><span class=\"ant-radio-button-inner\"></span></span><span>Large</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"small\"><span class=\"ant-radio-button-inner\"></span></span><span>Small</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Button Shape\">Button Shape\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"default\"><span class=\"ant-radio-button-inner\"></span></span><span>Default</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"round\"><span class=\"ant-radio-button-inner\"></span></span><span>Round</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"circle\"><span class=\"ant-radio-button-inner\"></span></span><span>Circle</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-form-item\">\n    <div class=\"ant-row ant-form-row\">\n      <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Avatar Shape\">Avatar Shape\n          <!---->\n        </label></div>\n      <div class=\"ant-col ant-form-item-control\">\n        <div class=\"ant-form-item-control-input\">\n          <div class=\"ant-form-item-control-input-content\">\n            <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"square\"><span class=\"ant-radio-button-inner\"></span></span><span>Square</span></label><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"circle\"><span class=\"ant-radio-button-inner\"></span></span><span>Circle</span></label></div>\n          </div>\n        </div>\n        <!---->\n        <!---->\n      </div>\n    </div>\n    <!---->\n  </div>\n</form>\n`;\n\nexports[`renders ./components/skeleton/demo/list.vue correctly 1`] = `\n<div><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button>\n  <div class=\"ant-list ant-list-vertical ant-list-lg ant-list-split\">\n    <!---->\n    <!---->\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <ul class=\"ant-list-items\">\n          <li class=\"ant-list-item\">\n            <div class=\"ant-list-item-main\">\n              <div class=\"ant-skeleton ant-skeleton-with-avatar ant-skeleton-active \">\n                <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n                <div class=\"ant-skeleton-content\">\n                  <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n                  <ul class=\"ant-skeleton-paragraph\">\n                    <li></li>\n                    <li></li>\n                  </ul>\n                </div>\n              </div>\n              <!---->\n            </div>\n            <div class=\"ant-list-item-extra\">\n              <!--v-if-->\n            </div>\n          </li>\n          <li class=\"ant-list-item\">\n            <div class=\"ant-list-item-main\">\n              <div class=\"ant-skeleton ant-skeleton-with-avatar ant-skeleton-active \">\n                <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n                <div class=\"ant-skeleton-content\">\n                  <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n                  <ul class=\"ant-skeleton-paragraph\">\n                    <li></li>\n                    <li></li>\n                  </ul>\n                </div>\n              </div>\n              <!---->\n            </div>\n            <div class=\"ant-list-item-extra\">\n              <!--v-if-->\n            </div>\n          </li>\n          <li class=\"ant-list-item\">\n            <div class=\"ant-list-item-main\">\n              <div class=\"ant-skeleton ant-skeleton-with-avatar ant-skeleton-active \">\n                <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n                <div class=\"ant-skeleton-content\">\n                  <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n                  <ul class=\"ant-skeleton-paragraph\">\n                    <li></li>\n                    <li></li>\n                  </ul>\n                </div>\n              </div>\n              <!---->\n            </div>\n            <div class=\"ant-list-item-extra\">\n              <!--v-if-->\n            </div>\n          </li>\n        </ul>\n      </div>\n    </div>\n    <!---->\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/skeleton/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Skeleton avatar shape 1`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton avatar shape 2`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-square\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton avatar size 1`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-sm ant-skeleton-avatar-circle\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton avatar size 2`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-circle\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton avatar size 3`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-lg ant-skeleton-avatar-circle\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton avatar size 4`] = `\n<div class=\"ant-skeleton ant-skeleton-with-avatar \">\n  <div class=\"ant-skeleton-header\"><span class=\"ant-skeleton-avatar ant-skeleton-avatar-circle\" style=\"width: 20px; height: 20px; line-height: 20px;\"></span></div>\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 50%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton paragraph rows 1`] = `\n<div class=\"ant-skeleton \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 38%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li></li>\n      <li></li>\n      <li style=\"width: 61%;\"></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton paragraph width 1`] = `\n<div class=\"ant-skeleton \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 38%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li style=\"width: 93%;\"></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton paragraph width 2`] = `\n<div class=\"ant-skeleton \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 38%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li style=\"width: 28%;\"></li>\n      <li style=\"width: 93%;\"></li>\n      <li></li>\n    </ul>\n  </div>\n</div>\n`;\n\nexports[`Skeleton title width 1`] = `\n<div class=\"ant-skeleton \">\n  <!---->\n  <div class=\"ant-skeleton-content\">\n    <h3 class=\"ant-skeleton-title\" style=\"width: 93%;\"></h3>\n    <ul class=\"ant-skeleton-paragraph\">\n      <li></li>\n      <li></li>\n      <li style=\"width: 61%;\"></li>\n    </ul>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/skeleton/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('skeleton');\n"
  },
  {
    "path": "components/skeleton/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Skeleton from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Skeleton', () => {\n  const genSkeleton = props => {\n    const skeletonProps = {\n      props: {\n        loading: true,\n        ...props,\n      },\n      slots: {\n        default: () => 'Bamboo',\n      },\n      sync: false,\n    };\n    return mount(Skeleton, skeletonProps);\n  };\n  mountTest(Skeleton);\n  describe('avatar', () => {\n    it('size', async () => {\n      const wrapperSmall = genSkeleton({ avatar: { size: 'small' } });\n      await asyncExpect(() => {\n        expect(wrapperSmall.html()).toMatchSnapshot();\n      });\n\n      const wrapperDefault = genSkeleton({ avatar: { size: 'default' } });\n\n      await asyncExpect(() => {\n        expect(wrapperDefault.html()).toMatchSnapshot();\n      });\n\n      const wrapperLarge = genSkeleton({ avatar: { size: 'large' } });\n\n      await asyncExpect(() => {\n        expect(wrapperLarge.html()).toMatchSnapshot();\n      });\n\n      const wrapperNumber = genSkeleton({ avatar: { size: 20 } });\n\n      await asyncExpect(() => {\n        expect(wrapperNumber.html()).toMatchSnapshot();\n      });\n    });\n\n    it('shape', async () => {\n      const wrapperCircle = genSkeleton({ avatar: { shape: 'circle' } });\n      await asyncExpect(() => {\n        expect(wrapperCircle.html()).toMatchSnapshot();\n      });\n\n      const wrapperSquare = genSkeleton({ avatar: { shape: 'square' } });\n      await asyncExpect(() => {\n        expect(wrapperSquare.html()).toMatchSnapshot();\n      });\n    });\n  });\n\n  describe('title', () => {\n    it('width', async () => {\n      const wrapper = genSkeleton({ title: { width: '93%' } });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n  });\n\n  describe('paragraph', () => {\n    it('rows', async () => {\n      const wrapper = genSkeleton({ paragraph: { rows: 5 } });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n\n    it('width', async () => {\n      const wrapperPure = genSkeleton({ paragraph: { width: '93%' } });\n      await asyncExpect(() => {\n        expect(wrapperPure.html()).toMatchSnapshot();\n      });\n\n      const wrapperList = genSkeleton({ paragraph: { width: ['28%', '93%'] } });\n      await asyncExpect(() => {\n        expect(wrapperList.html()).toMatchSnapshot();\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "components/skeleton/demo/active.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 动画效果\n  en-US: Active Animation\n---\n\n## zh-CN\n\n显示动画效果。\n\n## en-US\n\nDisplay active animation.\n\n</docs>\n\n<template>\n  <a-skeleton active />\n</template>\n"
  },
  {
    "path": "components/skeleton/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的占位效果。\n\n## en-US\n\nSimplest Skeleton usage.\n\n</docs>\n\n<template>\n  <a-skeleton />\n</template>\n"
  },
  {
    "path": "components/skeleton/demo/children.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 包含子组件\n  en-US: Contains sub component\n---\n\n## zh-CN\n\n加载占位图包含子组件。\n\n## en-US\n\nSkeleton contains sub component.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\" :size=\"16\">\n    <a-skeleton :loading=\"loading\">\n      <div>\n        <h4>Ant Design Vue, a design language</h4>\n        <p>\n          We supply a series of design principles, practical patterns and high quality design\n          resources (Sketch and Axure), to help people create their product prototypes beautifully\n          and efficiently.\n        </p>\n      </div>\n    </a-skeleton>\n    <a-button :disabled=\"loading\" @click=\"showSkeleton\">Show Skeleton</a-button>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst loading = ref<boolean>(false);\n\nconst showSkeleton = () => {\n  loading.value = true;\n  setTimeout(() => {\n    loading.value = false;\n  }, 3000);\n};\n</script>\n"
  },
  {
    "path": "components/skeleton/demo/complex.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 复杂的组合\n  en-US: Complex combination\n---\n\n## zh-CN\n\n更复杂的组合。\n\n## en-US\n\nComplex combination with avatar and multiple paragraphs.\n\n</docs>\n\n<template>\n  <a-skeleton avatar :paragraph=\"{ rows: 4 }\" />\n</template>\n"
  },
  {
    "path": "components/skeleton/demo/element.vue",
    "content": "<docs>\n---\norder: 2.1\ntitle:\n  zh-CN: 按钮/头像/输入框/图像\n  en-US: Button/Avatar/Input/Image\n---\n\n## zh-CN\n\n骨架按钮、头像、输入框和图像。\n\n## en-US\n\nSkeleton Button, Avatar, Input and Image.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-skeleton-button :active=\"active\" :size=\"size\" :shape=\"buttonShape\" :block=\"block\" />\n    <a-skeleton-avatar :active=\"active\" :size=\"size\" :shape=\"avatarShape\" />\n    <a-skeleton-input style=\"width: 200px\" :active=\"active\" :size=\"size\" />\n  </a-space>\n  <br />\n  <br />\n  <a-skeleton-button :active=\"active\" :size=\"size\" :shape=\"buttonShape\" :block=\"block\" />\n  <br />\n  <br />\n  <a-skeleton-image />\n  <a-divider />\n  <a-form layout=\"inline\" style=\"margin: 16px 0\">\n    <a-form-item label=\"Active\">\n      <a-switch v-model:checked=\"active\" />\n    </a-form-item>\n    <a-form-item label=\"Button Block\">\n      <a-switch v-model:checked=\"block\" />\n    </a-form-item>\n    <a-form-item label=\"Size\">\n      <a-radio-group v-model:value=\"size\">\n        <a-radio-button value=\"default\">Default</a-radio-button>\n        <a-radio-button value=\"large\">Large</a-radio-button>\n        <a-radio-button value=\"small\">Small</a-radio-button>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Button Shape\">\n      <a-radio-group v-model:value=\"buttonShape\">\n        <a-radio-button value=\"default\">Default</a-radio-button>\n        <a-radio-button value=\"round\">Round</a-radio-button>\n        <a-radio-button value=\"circle\">Circle</a-radio-button>\n      </a-radio-group>\n    </a-form-item>\n    <a-form-item label=\"Avatar Shape\">\n      <a-radio-group v-model:value=\"avatarShape\">\n        <a-radio-button value=\"square\">Square</a-radio-button>\n        <a-radio-button value=\"circle\">Circle</a-radio-button>\n      </a-radio-group>\n    </a-form-item>\n  </a-form>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { SkeletonButtonProps, SkeletonAvatarProps } from 'ant-design-vue';\nconst active = ref(false);\nconst block = ref(false);\nconst size = ref<SkeletonButtonProps['size']>('default');\nconst buttonShape = ref<SkeletonButtonProps['shape']>('default');\nconst avatarShape = ref<SkeletonAvatarProps['shape']>('circle');\n</script>\n"
  },
  {
    "path": "components/skeleton/demo/index.vue",
    "content": "<template>\n  <basic />\n  <complex />\n  <active />\n  <children />\n  <list />\n  <elementVue />\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Complex from './complex.vue';\nimport Active from './active.vue';\nimport Children from './children.vue';\nimport List from './list.vue';\nimport elementVue from './element.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Complex,\n    Active,\n    List,\n    Children,\n    elementVue,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/skeleton/demo/list.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 列表\n  en-US: List\n---\n\n## zh-CN\n\n在列表组件中使用加载占位符。\n\n## en-US\n\nUse skeleton in list component.\n\n</docs>\n\n<template>\n  <div>\n    <a-switch :checked=\"!loading\" @change=\"onChange\" />\n    <a-list item-layout=\"vertical\" size=\"large\" :data-source=\"listData\">\n      <template #renderItem=\"{ item }\">\n        <a-list-item key=\"item.title\">\n          <template v-if=\"!loading\" #actions>\n            <span v-for=\"({ icon, text }, index) in actions\" :key=\"index\">\n              <component :is=\"icon\" style=\"margin-right: 8px\"></component>\n              {{ text }}\n            </span>\n          </template>\n          <template #extra>\n            <img\n              v-if=\"!loading\"\n              width=\"272\"\n              alt=\"logo\"\n              src=\"https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png\"\n            />\n          </template>\n          <a-skeleton :loading=\"loading\" active avatar>\n            <a-list-item-meta :description=\"item.description\">\n              <template #title>\n                <a :href=\"item.href\">{{ item.title }}</a>\n              </template>\n              <template #avatar><a-avatar :src=\"item.avatar\" /></template>\n            </a-list-item-meta>\n            {{ item.content }}\n          </a-skeleton>\n        </a-list-item>\n      </template>\n    </a-list>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { StarOutlined, LikeOutlined, MessageOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\ninterface DataItem {\n  href: string;\n  title: string;\n  avatar: string;\n  description: string;\n  content: string;\n}\nconst listData: DataItem[] = [];\nfor (let i = 0; i < 3; i++) {\n  listData.push({\n    href: 'https://www.antdv.com/',\n    title: `ant design vue part ${i}`,\n    avatar: 'https://joeschmoe.io/api/v1/random',\n    description:\n      'Ant Design, a design language for background applications, is refined by Ant UED Team.',\n    content:\n      'We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',\n  });\n}\n\nconst loading = ref<boolean>(true);\n\nconst actions = [\n  { icon: StarOutlined, text: '156' },\n  { icon: LikeOutlined, text: '156' },\n  { icon: MessageOutlined, text: '2' },\n];\n\nconst onChange = (checked: boolean) => {\n  loading.value = !checked;\n};\n</script>\n<style scoped>\n.skeleton-demo {\n  border: 1px solid #f4f4f4;\n}\n</style>\n"
  },
  {
    "path": "components/skeleton/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Skeleton\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*uae3QbkNCm8AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*VcjGQLSrYdcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nProvide a placeholder while you wait for content to load, or to visualise content that doesn't exist yet.\n\n## When To Use\n\n- When a resource needs long time to load.\n- When the component contains lots of information, such as List or Card.\n- Only works when loading data for the first time.\n- Could be replaced by Spin in any situation, but can provide a better user experience.\n\n## API\n\n### Skeleton\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| active | Show animation effect | boolean | false |\n| avatar | Show avatar placeholder | boolean \\| [SkeletonAvatarProps](#skeletonavatarprops) | false |\n| loading | Display the skeleton when `true` | boolean | - |\n| paragraph | Show paragraph placeholder | boolean \\| [SkeletonParagraphProps](#skeletonparagraphprops) | true |\n| title | Show title placeholder | boolean \\| [SkeletonTitleProps](#skeletontitleprops) | true |\n\n## SkeletonAvatarProps\n\n| Property | Description             | Type                                      | Default |\n| -------- | ----------------------- | ----------------------------------------- | ------- |\n| shape    | Set the shape of avatar | `circle` \\| `square`                      | -       |\n| size     | Set the size of avatar  | number \\| `large` \\| `small` \\| `default` | -       |\n\n### SkeletonTitleProps\n\n| Property | Description            | Type             | Default |\n| -------- | ---------------------- | ---------------- | ------- |\n| width    | Set the width of title | number \\| string | -       |\n\n### SkeletonParagraphProps\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| rows | Set the row count of paragraph | number | - |\n| width | Set the width of paragraph. When width is an Array, it can set the width of each row. Otherwise only set the last row width | number \\| string \\| Array&lt;number \\| string> | - |\n\n### SkeletonButtonProps (3.0+)\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| active | Show animation effect | boolean | false |  |\n| block | Option to fit button width to its parent width | boolean | false |  |\n| shape | Set the shape of button | `circle` \\| `round` \\| `default` | - |  |\n| size | Set the size of button | `large` \\| `small` \\| `default` | - |  |\n\n### SkeletonInputProps (3.0+)\n\n| Property | Description           | Type                            | Default |\n| -------- | --------------------- | ------------------------------- | ------- |\n| active   | Show animation effect | boolean                         | false   |\n| size     | Set the size of input | `large` \\| `small` \\| `default` | -       |\n"
  },
  {
    "path": "components/skeleton/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport Skeleton from './Skeleton';\nimport SkeletonButton from './Button';\nimport SkeletonInput from './Input';\nimport SkeletonImage from './Image';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonTitle from './Title';\nexport type { SkeletonButtonProps } from './Button';\nexport type { SkeletonInputProps } from './Input';\nexport type { SkeletonImageProps } from './Image';\nexport type { SkeletonAvatarProps } from './Avatar';\nexport type { SkeletonTitleProps } from './Title';\n\nexport type { SkeletonProps } from './Skeleton';\nexport { skeletonProps } from './Skeleton';\n\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Title = SkeletonTitle;\n\n/* istanbul ignore next */\nSkeleton.install = function (app: App) {\n  app.component(Skeleton.name, Skeleton);\n  app.component(Skeleton.Button.name, SkeletonButton);\n  app.component(Skeleton.Avatar.name, SkeletonAvatar);\n  app.component(Skeleton.Input.name, SkeletonInput);\n  app.component(Skeleton.Image.name, SkeletonImage);\n  app.component(Skeleton.Title.name, SkeletonTitle);\n  return app;\n};\nexport { SkeletonButton, SkeletonAvatar, SkeletonInput, SkeletonImage, SkeletonTitle };\nexport default Skeleton as typeof Skeleton &\n  Plugin & {\n    readonly Button: typeof SkeletonButton;\n    readonly Avatar: typeof SkeletonAvatar;\n    readonly Input: typeof SkeletonInput;\n    readonly Image: typeof SkeletonImage;\n  };\n"
  },
  {
    "path": "components/skeleton/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Skeleton\nsubtitle: 骨架屏\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*uae3QbkNCm8AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*VcjGQLSrYdcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n在需要等待加载内容的位置提供一个占位图形组合。\n\n## 何时使用\n\n- 网络较慢，需要长时间等待加载处理的情况下。\n- 图文信息内容较多的列表/卡片中。\n- 只在第一次加载数据的时候使用。\n- 可以被 Spin 完全代替，但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验。\n\n## API\n\n### Skeleton\n\n| 属性 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| active | 是否展示动画效果 | boolean | false |\n| avatar | 是否显示头像占位图 | boolean \\| [SkeletonAvatarProps](#skeletonavatarprops) | false |\n| loading | 为 `true` 时，显示占位图。反之则直接展示子组件 | boolean | - |\n| paragraph | 是否显示段落占位图 | boolean \\| [SkeletonParagraphProps](#skeletonparagraphprops) | true |\n| title | 是否显示标题占位图 | boolean \\| [SkeletonTitleProps](#skeletontitleprops) | true |\n\n### SkeletonAvatarProps\n\n| 属性  | 说明                 | 类型                                      | 默认值 |\n| ----- | -------------------- | ----------------------------------------- | ------ |\n| shape | 指定头像的形状       | `circle` \\| `square`                      | -      |\n| size  | 设置头像占位图的大小 | number \\| `large` \\| `small` \\| `default` | -      |\n\n### SkeletonTitleProps\n\n| 属性  | 说明                 | 类型             | 默认值 |\n| ----- | -------------------- | ---------------- | ------ |\n| width | 设置标题占位图的宽度 | number \\| string | -      |\n\n### SkeletonParagraphProps\n\n| 属性 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| rows | 设置段落占位图的行数 | number | - |\n| width | 设置段落占位图的宽度，若为数组时则为对应的每行宽度，反之则是最后一行的宽度 | number \\| string \\| Array&lt;number \\| string> | - |\n\n### SkeletonButtonProps (3.0+)\n\n| 属性   | 说明                           | 类型                             | 默认值 | 版本 |\n| ------ | ------------------------------ | -------------------------------- | ------ | ---- |\n| active | 是否展示动画效果               | boolean                          | false  |      |\n| block  | 将按钮宽度调整为其父宽度的选项 | boolean                          | false  |      |\n| shape  | 指定按钮的形状                 | `circle` \\| `round` \\| `default` | -      |      |\n| size   | 设置按钮的大小                 | `large` \\| `small` \\| `default`  | -      |      |\n\n### SkeletonInputProps (3.0+)\n\n| 属性   | 说明             | 类型                            | 默认值 |\n| ------ | ---------------- | ------------------------------- | ------ |\n| active | 是否展示动画效果 | boolean                         | false  |\n| size   | 设置输入框的大小 | `large` \\| `small` \\| `default` | -      |\n"
  },
  {
    "path": "components/skeleton/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\n\nexport type ComponentToken = {\n  color: string;\n  colorGradientEnd: string;\n};\n\nconst skeletonClsLoading = new Keyframes(`ant-skeleton-loading`, {\n  '0%': {\n    transform: 'translateX(-37.5%)',\n  },\n  '100%': {\n    transform: 'translateX(37.5%)',\n  },\n});\n\ninterface SkeletonToken extends FullToken<'Skeleton'> {\n  skeletonAvatarCls: string;\n  skeletonTitleCls: string;\n  skeletonParagraphCls: string;\n  skeletonButtonCls: string;\n  skeletonInputCls: string;\n  skeletonImageCls: string;\n  imageSizeBase: number;\n  skeletonTitleHeight: number;\n  skeletonBlockRadius: number;\n  skeletonParagraphLineHeight: number;\n  skeletonParagraphMarginTop: number;\n  skeletonLoadingBackground: string;\n  skeletonLoadingMotionDuration: string;\n  borderRadius: number;\n}\n\nconst genSkeletonElementCommonSize = (size: number): CSSObject => ({\n  height: size,\n  lineHeight: `${size}px`,\n});\n\nconst genSkeletonElementAvatarSize = (size: number): CSSObject => ({\n  width: size,\n  ...genSkeletonElementCommonSize(size),\n});\n\nconst genSkeletonColor = (token: SkeletonToken): CSSObject => ({\n  position: 'relative',\n  // fix https://github.com/ant-design/ant-design/issues/36444\n  // https://monshin.github.io/202109/css/safari-border-radius-overflow-hidden/\n  /* stylelint-disable-next-line property-no-vendor-prefix,value-no-vendor-prefix */\n  zIndex: 0,\n  overflow: 'hidden',\n  background: 'transparent',\n  '&::after': {\n    position: 'absolute',\n    top: 0,\n    insetInlineEnd: '-150%',\n    bottom: 0,\n    insetInlineStart: '-150%',\n    background: token.skeletonLoadingBackground,\n    animationName: skeletonClsLoading,\n    animationDuration: token.skeletonLoadingMotionDuration,\n    animationTimingFunction: 'ease',\n    animationIterationCount: 'infinite',\n    content: '\"\"',\n  },\n});\n\nconst genSkeletonElementInputSize = (size: number): CSSObject => ({\n  width: size * 5,\n  minWidth: size * 5,\n  ...genSkeletonElementCommonSize(size),\n});\n\nconst genSkeletonElementAvatar = (token: SkeletonToken): CSSObject => {\n  const { skeletonAvatarCls, color, controlHeight, controlHeightLG, controlHeightSM } = token;\n  return {\n    [`${skeletonAvatarCls}`]: {\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: color,\n      ...genSkeletonElementAvatarSize(controlHeight),\n    },\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-circle`]: {\n      borderRadius: '50%',\n    },\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-lg`]: {\n      ...genSkeletonElementAvatarSize(controlHeightLG),\n    },\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-sm`]: {\n      ...genSkeletonElementAvatarSize(controlHeightSM),\n    },\n  };\n};\n\nconst genSkeletonElementInput = (token: SkeletonToken): CSSObject => {\n  const {\n    controlHeight,\n    borderRadiusSM,\n    skeletonInputCls,\n    controlHeightLG,\n    controlHeightSM,\n    color,\n  } = token;\n  return {\n    [`${skeletonInputCls}`]: {\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: color,\n      borderRadius: borderRadiusSM,\n      ...genSkeletonElementInputSize(controlHeight),\n    },\n\n    [`${skeletonInputCls}-lg`]: {\n      ...genSkeletonElementInputSize(controlHeightLG),\n    },\n\n    [`${skeletonInputCls}-sm`]: {\n      ...genSkeletonElementInputSize(controlHeightSM),\n    },\n  };\n};\n\nconst genSkeletonElementImageSize = (size: number): CSSObject => ({\n  width: size,\n  ...genSkeletonElementCommonSize(size),\n});\n\nconst genSkeletonElementImage = (token: SkeletonToken): CSSObject => {\n  const { skeletonImageCls, imageSizeBase, color, borderRadiusSM } = token;\n  return {\n    [`${skeletonImageCls}`]: {\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      verticalAlign: 'top',\n      background: color,\n      borderRadius: borderRadiusSM,\n      ...genSkeletonElementImageSize(imageSizeBase * 2),\n      [`${skeletonImageCls}-path`]: {\n        fill: '#bfbfbf',\n      },\n      [`${skeletonImageCls}-svg`]: {\n        ...genSkeletonElementImageSize(imageSizeBase),\n        maxWidth: imageSizeBase * 4,\n        maxHeight: imageSizeBase * 4,\n      },\n      [`${skeletonImageCls}-svg${skeletonImageCls}-svg-circle`]: {\n        borderRadius: '50%',\n      },\n    },\n    [`${skeletonImageCls}${skeletonImageCls}-circle`]: {\n      borderRadius: '50%',\n    },\n  };\n};\nconst genSkeletonElementButtonShape = (\n  token: SkeletonToken,\n  size: number,\n  buttonCls: string,\n): CSSObject => {\n  const { skeletonButtonCls } = token;\n  return {\n    [`${buttonCls}${skeletonButtonCls}-circle`]: {\n      width: size,\n      minWidth: size,\n      borderRadius: '50%',\n    },\n    [`${buttonCls}${skeletonButtonCls}-round`]: {\n      borderRadius: size,\n    },\n  };\n};\n\nconst genSkeletonElementButtonSize = (size: number): CSSObject => ({\n  width: size * 2,\n  minWidth: size * 2,\n  ...genSkeletonElementCommonSize(size),\n});\n\nconst genSkeletonElementButton = (token: SkeletonToken): CSSObject => {\n  const {\n    borderRadiusSM,\n    skeletonButtonCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    color,\n  } = token;\n  return {\n    [`${skeletonButtonCls}`]: {\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: color,\n      borderRadius: borderRadiusSM,\n      width: controlHeight * 2,\n      minWidth: controlHeight * 2,\n      ...genSkeletonElementButtonSize(controlHeight),\n    },\n    ...genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls),\n\n    [`${skeletonButtonCls}-lg`]: {\n      ...genSkeletonElementButtonSize(controlHeightLG),\n    },\n    ...genSkeletonElementButtonShape(token, controlHeightLG, `${skeletonButtonCls}-lg`),\n\n    [`${skeletonButtonCls}-sm`]: {\n      ...genSkeletonElementButtonSize(controlHeightSM),\n    },\n    ...genSkeletonElementButtonShape(token, controlHeightSM, `${skeletonButtonCls}-sm`),\n  };\n};\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<SkeletonToken> = (token: SkeletonToken) => {\n  const {\n    componentCls,\n    skeletonAvatarCls,\n    skeletonTitleCls,\n    skeletonParagraphCls,\n    skeletonButtonCls,\n    skeletonInputCls,\n    skeletonImageCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    color,\n    padding,\n    marginSM,\n    borderRadius,\n    skeletonTitleHeight,\n    skeletonBlockRadius,\n    skeletonParagraphLineHeight,\n    controlHeightXS,\n    skeletonParagraphMarginTop,\n  } = token;\n\n  return {\n    [`${componentCls}`]: {\n      display: 'table',\n      width: '100%',\n\n      [`${componentCls}-header`]: {\n        display: 'table-cell',\n        paddingInlineEnd: padding,\n        verticalAlign: 'top',\n\n        // Avatar\n        [`${skeletonAvatarCls}`]: {\n          display: 'inline-block',\n          verticalAlign: 'top',\n          background: color,\n          ...genSkeletonElementAvatarSize(controlHeight),\n        },\n        [`${skeletonAvatarCls}-circle`]: {\n          borderRadius: '50%',\n        },\n        [`${skeletonAvatarCls}-lg`]: {\n          ...genSkeletonElementAvatarSize(controlHeightLG),\n        },\n        [`${skeletonAvatarCls}-sm`]: {\n          ...genSkeletonElementAvatarSize(controlHeightSM),\n        },\n      },\n      [`${componentCls}-content`]: {\n        display: 'table-cell',\n        width: '100%',\n        verticalAlign: 'top',\n\n        // Title\n        [`${skeletonTitleCls}`]: {\n          width: '100%',\n          height: skeletonTitleHeight,\n          background: color,\n          borderRadius: skeletonBlockRadius,\n          [`+ ${skeletonParagraphCls}`]: {\n            marginBlockStart: controlHeightSM,\n          },\n        },\n\n        // paragraph\n        [`${skeletonParagraphCls}`]: {\n          padding: 0,\n          '> li': {\n            width: '100%',\n            height: skeletonParagraphLineHeight,\n            listStyle: 'none',\n            background: color,\n            borderRadius: skeletonBlockRadius,\n            '+ li': {\n              marginBlockStart: controlHeightXS,\n            },\n          },\n        },\n\n        [`${skeletonParagraphCls}> li:last-child:not(:first-child):not(:nth-child(2))`]: {\n          width: '61%',\n        },\n      },\n\n      [`&-round ${componentCls}-content`]: {\n        [`${skeletonTitleCls}, ${skeletonParagraphCls} > li`]: {\n          borderRadius,\n        },\n      },\n    },\n    [`${componentCls}-with-avatar ${componentCls}-content`]: {\n      // Title\n      [`${skeletonTitleCls}`]: {\n        marginBlockStart: marginSM,\n\n        [`+ ${skeletonParagraphCls}`]: {\n          marginBlockStart: skeletonParagraphMarginTop,\n        },\n      },\n    },\n    // Skeleton element\n    [`${componentCls}${componentCls}-element`]: {\n      display: 'inline-block',\n      width: 'auto',\n\n      ...genSkeletonElementButton(token),\n      ...genSkeletonElementAvatar(token),\n      ...genSkeletonElementInput(token),\n      ...genSkeletonElementImage(token),\n    },\n    // Skeleton Block Button, Input\n    [`${componentCls}${componentCls}-block`]: {\n      width: '100%',\n\n      [`${skeletonButtonCls}`]: {\n        width: '100%',\n      },\n\n      [`${skeletonInputCls}`]: {\n        width: '100%',\n      },\n    },\n    // With active animation\n    [`${componentCls}${componentCls}-active`]: {\n      [`\n        ${skeletonTitleCls},\n        ${skeletonParagraphCls} > li,\n        ${skeletonAvatarCls},\n        ${skeletonButtonCls},\n        ${skeletonInputCls},\n        ${skeletonImageCls}\n      `]: {\n        ...genSkeletonColor(token),\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Skeleton',\n  token => {\n    const { componentCls } = token;\n\n    const skeletonToken = mergeToken<SkeletonToken>(token, {\n      skeletonAvatarCls: `${componentCls}-avatar`,\n      skeletonTitleCls: `${componentCls}-title`,\n      skeletonParagraphCls: `${componentCls}-paragraph`,\n      skeletonButtonCls: `${componentCls}-button`,\n      skeletonInputCls: `${componentCls}-input`,\n      skeletonImageCls: `${componentCls}-image`,\n      imageSizeBase: token.controlHeight * 1.5,\n      skeletonTitleHeight: token.controlHeight / 2,\n      skeletonBlockRadius: token.borderRadiusSM,\n      skeletonParagraphLineHeight: token.controlHeight / 2,\n      skeletonParagraphMarginTop: token.marginLG + token.marginXXS,\n      borderRadius: 100, // Large number to make capsule shape\n      skeletonLoadingBackground: `linear-gradient(90deg, ${token.color} 25%, ${token.colorGradientEnd} 37%, ${token.color} 63%)`,\n      skeletonLoadingMotionDuration: '1.4s',\n    });\n    return [genBaseStyle(skeletonToken)];\n  },\n  token => {\n    const { colorFillContent, colorFill } = token;\n\n    return {\n      color: colorFillContent,\n      colorGradientEnd: colorFill,\n    };\n  },\n);\n"
  },
  {
    "path": "components/slider/SliderTooltip.tsx",
    "content": "import { onBeforeUnmount, watch, onActivated, defineComponent, ref } from 'vue';\nimport Tooltip, { tooltipProps } from '../tooltip';\nimport raf from '../_util/raf';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'SliderTooltip',\n  inheritAttrs: false,\n  props: tooltipProps(),\n  setup(props, { attrs, slots }) {\n    const innerRef = ref<any>(null);\n\n    const rafRef = ref<number>(null);\n\n    function cancelKeepAlign() {\n      raf.cancel(rafRef.value!);\n      rafRef.value = null;\n    }\n\n    function keepAlign() {\n      rafRef.value = raf(() => {\n        innerRef.value?.forcePopupAlign();\n        rafRef.value = null;\n      });\n    }\n    const align = () => {\n      cancelKeepAlign();\n      if (props.open) {\n        keepAlign();\n      }\n    };\n    watch(\n      [() => props.open, () => props.title],\n      () => {\n        align();\n      },\n      { flush: 'post', immediate: true },\n    );\n    onActivated(() => {\n      align();\n    });\n    onBeforeUnmount(() => {\n      cancelKeepAlign();\n    });\n    return () => {\n      return <Tooltip ref={innerRef} {...props} {...attrs} v-slots={slots} />;\n    };\n  },\n});\n"
  },
  {
    "path": "components/slider/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/slider/demo/basic.vue correctly 1`] = `\n<div>\n  <div id=\"test\" tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track ant-slider-track-1\" style=\"left: 20%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"left: 20%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"20\" aria-disabled=\"false\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"left: 50%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"50\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div> Disabled: <button size=\"small\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch-small ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/event.vue correctly 1`] = `\n<div class=\"code-box-demo\">\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 30%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track ant-slider-track-1\" style=\"left: 20%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"left: 20%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"20\" aria-disabled=\"false\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"left: 50%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"50\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/icon-slider.vue correctly 1`] = `\n<div class=\"icon-wrapper\"><span role=\"img\" aria-label=\"frown\" style=\"color: rgba(0, 0, 0, 0.45);\" class=\"anticon anticon-frown\"><svg focusable=\"false\" class=\"\" data-icon=\"frown\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 008 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 008-8.4C667.6 600.3 597.5 533 512 533z\"></path></svg></span>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"20\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/input-number.vue correctly 1`] = `\n<div>\n  <div class=\"ant-row\">\n    <div class=\"ant-col ant-col-12\">\n      <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n        <div class=\"ant-slider-rail\"></div>\n        <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n        <div class=\"ant-slider-step\"></div>\n        <!---->\n        <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"1\" aria-valuemax=\"20\" aria-valuenow=\"1\" aria-disabled=\"false\"></div>\n        <div class=\"ant-slider-mark\"></div>\n      </div>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <div class=\"ant-input-number\" style=\"margin-left: 16px;\">\n        <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"true\" class=\"ant-input-number-handler ant-input-number-handler-down ant-input-number-handler-down-disabled\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n        <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"1\" aria-valuemax=\"20\" aria-valuenow=\"1\" step=\"1\" class=\"ant-input-number-input\"></div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-row\">\n    <div class=\"ant-col ant-col-12\">\n      <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n        <div class=\"ant-slider-rail\"></div>\n        <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n        <div class=\"ant-slider-step\"></div>\n        <!---->\n        <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"1\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n        <div class=\"ant-slider-mark\"></div>\n      </div>\n    </div>\n    <div class=\"ant-col ant-col-4\">\n      <div class=\"ant-input-number\" style=\"margin-left: 16px;\">\n        <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"true\" class=\"ant-input-number-handler ant-input-number-handler-down ant-input-number-handler-down-disabled\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n        <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuemin=\"0\" aria-valuemax=\"1\" aria-valuenow=\"0\" step=\"0.01\" class=\"ant-input-number-input\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/mark.vue correctly 1`] = `\n<div id=\"components-slider-demo-mark\">\n  <h4>included=true</h4>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 37%;\"></div>\n    <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 37%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 37%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">0°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n  </div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track ant-slider-track-1\" style=\"left: 26%; width: 11%;\"></div>\n    <div class=\"ant-slider-step\"><span class=\"ant-slider-dot\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 37%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"left: 26%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"26\" aria-disabled=\"false\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"left: 37%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 0%;\">0°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n  </div>\n  <h4>included=false</h4>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <!---->\n    <div class=\"ant-slider-step\"><span class=\"ant-slider-dot\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot\" style=\"left: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 37%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 37%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 0%;\">0°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n  </div>\n  <h4>marks &amp; step</h4>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 37%;\"></div>\n    <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 37%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 37%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">0°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n  </div>\n  <h4>step=null</h4>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 37%;\"></div>\n    <div class=\"ant-slider-step\"><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"left: 37%;\"></span><span class=\"ant-slider-dot\" style=\"left: 100%;\"></span></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 37%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 0%;\">0°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"transform: translateX(-50%); left: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"transform: translateX(-50%); left: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/reverse.vue correctly 1`] = `\n<div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"right: 0%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"right: 30%; transform: translateX(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track ant-slider-track-1\" style=\"right: 20%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"right: 20%; transform: translateX(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"20\" aria-disabled=\"false\"></div>\n    <!---->\n    <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"right: 50%; transform: translateX(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"50\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div> Reversed: <button size=\"small\" type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-small ant-switch-checked ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/show-tooltip.vue correctly 1`] = `\n<div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n  <div class=\"ant-slider-rail\"></div>\n  <div class=\"ant-slider-track\" style=\"left: 0%; width: 30%;\"></div>\n  <div class=\"ant-slider-step\"></div>\n  <!--teleport start-->\n  <!--teleport end-->\n  <div class=\"ant-tooltip-open ant-slider-handle\" style=\"left: 30%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n  <div class=\"ant-slider-mark\"></div>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/tip-formatter.vue correctly 1`] = `\n<div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/slider/demo/vertical.vue correctly 1`] = `\n<div style=\"height: 300px;\">\n  <div style=\"display: inline-block; height: 300px; margin-left: 70px;\">\n    <div tabindex=\"-1\" class=\"ant-slider ant-slider-vertical\">\n      <div class=\"ant-slider-rail\"></div>\n      <div class=\"ant-slider-track\" style=\"bottom: 0%; height: 30%;\"></div>\n      <div class=\"ant-slider-step\"></div>\n      <!---->\n      <div class=\"ant-slider-handle\" style=\"bottom: 30%; transform: translateY(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n      <div class=\"ant-slider-mark\"></div>\n    </div>\n  </div>\n  <div style=\"display: inline-block; height: 300px; margin-left: 70px;\">\n    <div tabindex=\"-1\" class=\"ant-slider ant-slider-vertical\">\n      <div class=\"ant-slider-rail\"></div>\n      <div class=\"ant-slider-track ant-slider-track-1\" style=\"bottom: 20%; height: 30%;\"></div>\n      <div class=\"ant-slider-step\"></div>\n      <!---->\n      <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"bottom: 20%; transform: translateY(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"20\" aria-disabled=\"false\"></div>\n      <!---->\n      <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"bottom: 50%; transform: translateY(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"50\" aria-disabled=\"false\"></div>\n      <div class=\"ant-slider-mark\"></div>\n    </div>\n  </div>\n  <div style=\"display: inline-block; height: 300px; margin-left: 70px;\">\n    <div tabindex=\"-1\" class=\"ant-slider ant-slider-with-marks ant-slider-vertical\">\n      <div class=\"ant-slider-rail\"></div>\n      <div class=\"ant-slider-track ant-slider-track-1\" style=\"bottom: 26%; height: 11%;\"></div>\n      <div class=\"ant-slider-step\"><span class=\"ant-slider-dot\" style=\"bottom: 0%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"bottom: 26%;\"></span><span class=\"ant-slider-dot ant-slider-dot-active\" style=\"bottom: 37%;\"></span><span class=\"ant-slider-dot\" style=\"bottom: 100%;\"></span></div>\n      <!---->\n      <div class=\"ant-slider-handle ant-slider-handle-1\" style=\"bottom: 26%; transform: translateY(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"26\" aria-disabled=\"false\"></div>\n      <!---->\n      <div class=\"ant-slider-handle ant-slider-handle-2\" style=\"bottom: 37%; transform: translateY(+50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"37\" aria-disabled=\"false\"></div>\n      <div class=\"ant-slider-mark\"><span class=\"ant-slider-mark-text\" style=\"margin-bottom: -50%; bottom: 0%;\">0°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"margin-bottom: -50%; bottom: 26%;\">26°C</span><span class=\"ant-slider-mark-text ant-slider-mark-text-active\" style=\"margin-bottom: -50%; bottom: 37%;\">37°C</span><span class=\"ant-slider-mark-text\" style=\"margin-bottom: -50%; bottom: 100%; color: rgb(255, 85, 0);\"><strong>100°C</strong></span></div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/slider/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Slider should show tooltip when hovering slider handler 1`] = `\n<div data-v-app=\"\"></div>\n<div data-v-app=\"\">\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div><!--teleport start--><!--teleport end-->\n    <div class=\"ant-tooltip-open ant-slider-handle\" style=\"left: 30%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n</div>\n<div style=\"position: absolute; top: 0px; left: 0px; width: 100%;\">\n  <div><!---->\n    <div class=\"ant-tooltip ant-slider-tooltip\" style=\"\">\n      <div class=\"ant-tooltip-content\">\n        <div class=\"ant-tooltip-arrow\"><span class=\"ant-tooltip-arrow-content\"></span></div>\n        <div class=\"ant-tooltip-inner\" role=\"tooltip\">30</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Slider should show tooltip when hovering slider handler 2`] = `\n<div data-v-app=\"\"></div>\n<div data-v-app=\"\">\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 30%;\"></div>\n    <div class=\"ant-slider-step\"></div><!--teleport start--><!--teleport end-->\n    <div class=\"ant-slider-handle\" style=\"left: 30%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"30\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div>\n</div>\n<div style=\"position: absolute; top: 0px; left: 0px; width: 100%;\">\n  <div><!---->\n    <div class=\"ant-tooltip ant-slider-tooltip\" style=\"display: none;\">\n      <div class=\"ant-tooltip-content\">\n        <div class=\"ant-tooltip-arrow\"><span class=\"ant-tooltip-arrow-content\"></span></div>\n        <div class=\"ant-tooltip-inner\" role=\"tooltip\">30</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/slider/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('slider', { skip: process.env.LIB_DIR === 'dist' && ['show-tooltip.md'] });\n"
  },
  {
    "path": "components/slider/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Slider from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Slider', () => {\n  mountTest(Slider);\n  it('should show tooltip when hovering slider handler', async () => {\n    const wrapper = mount(Slider, {\n      props: {\n        defaultValue: 30,\n      },\n      sync: false,\n      attachTo: 'body',\n    });\n    await asyncExpect(() => {\n      wrapper.findAll('.ant-slider-handle')[0].trigger('mouseenter');\n    }, 1000);\n    await asyncExpect(() => {\n      expect(document.body.innerHTML).toMatchSnapshot();\n      wrapper.findAll('.ant-slider-handle')[0].trigger('mouseleave');\n    }, 1000);\n    await asyncExpect(() => {\n      expect(document.body.innerHTML).toMatchSnapshot();\n    }, 1000);\n  });\n});\n"
  },
  {
    "path": "components/slider/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n基本滑动条。当 `range` 为 `true` 时，渲染为双滑块。当 `disabled` 为 `true` 时，滑块处于不可用状态。\n\n## en-US\n\nBasic slider. When `range` is `true`, display as dual thumb mode. When `disable` is `true`, the slider will not be interactable.\n</docs>\n\n<template>\n  <div>\n    <a-slider id=\"test\" v-model:value=\"value1\" :disabled=\"disabled\" />\n    <a-slider v-model:value=\"value2\" range :disabled=\"disabled\" />\n    Disabled:\n    <a-switch v-model:checked=\"disabled\" size=\"small\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(0);\nconst value2 = ref<[number, number]>([20, 50]);\nconst disabled = ref<boolean>(false);\n</script>\n<style scoped>\n.code-box-demo .ant-slider {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/slider/demo/event.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 事件\n  en-US: Event\n---\n\n## zh-CN\n\n当 Slider 的值发生改变时，会触发 `onChange` 事件，并把改变后的值作为参数传入。在 `onmouseup` 时，会触发 `onAfterChange` 事件，并把当前值作为参数传入。\n\n## en-US\n\nThe `onChange` callback function will fire when the user changes the slider's value. The `onAfterChange` callback function will fire when `onmouseup` fired.\n</docs>\n\n<template>\n  <div class=\"code-box-demo\">\n    <a-slider v-model:value=\"value1\" @change=\"onChange\" @afterChange=\"onAfterChange\" />\n    <a-slider v-model:value=\"value2\" range :step=\"10\" @change=\"onChange\" @afterChange=\"onAfterChange\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(30);\nconst value2 = ref<[number, number]>([20, 50]);\n\nconst onChange = (value: number) => {\n  console.log('onChange: ', value);\n};\n\nconst onAfterChange = (value: number) => {\n  console.log('afterChange: ', value);\n};\n</script>\n<style scoped>\n.code-box-demo .ant-slider {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/slider/demo/icon-slider.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 带 icon 的滑块\n  en-US: Slider with icon\n---\n\n## zh-CN\n\n滑块左右可以设置图标来表达业务含义。\n\n## en-US\n\nYou can add an icon beside the slider to make it meaningful.\n</docs>\n\n<template>\n  <div class=\"icon-wrapper\">\n    <frown-outlined :style=\"{ color: preColor }\" />\n    <a-slider v-model:value=\"sliderValue\" :min=\"0\" :max=\"20\" />\n    <smile-outlined :style=\"{ color: nextColor }\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, computed } from 'vue';\nimport { FrownOutlined, SmileOutlined } from '@ant-design/icons-vue';\nconst sliderValue = ref<number>(0);\nconst min = ref<number>(0);\nconst max = ref<number>(20);\n\nconst preColor = computed(() => {\n  const mid = +((max.value - min.value) / 2).toFixed(5);\n  return sliderValue.value >= mid ? '' : 'rgba(0, 0, 0, .45)';\n});\n\nconst nextColor = computed(() => {\n  const mid = +((max.value - min.value) / 2).toFixed(5);\n  return sliderValue.value >= mid ? 'rgba(0, 0, 0, .45)' : '';\n});\n</script>\n<style scoped>\n.icon-wrapper {\n  position: relative;\n  padding: 0px 30px;\n}\n\n.icon-wrapper .anticon {\n  position: absolute;\n  top: -2px;\n  width: 16px;\n  height: 16px;\n  line-height: 1;\n  font-size: 16px;\n  color: rgba(0, 0, 0, 0.25);\n}\n\n.icon-wrapper .anticon:first-child {\n  left: 0;\n}\n\n.icon-wrapper .anticon:last-child {\n  right: 0;\n}\n</style>\n"
  },
  {
    "path": "components/slider/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <InputNumber />\n    <IconSlider />\n    <TipFormatter />\n    <Event />\n    <Mark />\n    <Vertical />\n    <ShowTooltip />\n    <Reverse />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport InputNumber from './input-number.vue';\nimport IconSlider from './icon-slider.vue';\nimport TipFormatter from './tip-formatter.vue';\nimport Event from './event.vue';\nimport Mark from './mark.vue';\nimport Vertical from './vertical.vue';\nimport ShowTooltip from './show-tooltip.vue';\nimport Reverse from './reverse.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    InputNumber,\n    IconSlider,\n    TipFormatter,\n    Event,\n    Mark,\n    Vertical,\n    ShowTooltip,\n    Reverse,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/slider/demo/input-number.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 带输入框的滑块\n  en-US: Slider with InputNumber\n---\n\n## zh-CN\n\n和 [数字输入框](/components/input-number/) 组件保持同步。\n\n## en-US\n\nSynchronize with [InputNumber](/components/input-number/) component.\n</docs>\n\n<template>\n  <div>\n    <a-row>\n      <a-col :span=\"12\">\n        <a-slider v-model:value=\"inputValue1\" :min=\"1\" :max=\"20\" />\n      </a-col>\n      <a-col :span=\"4\">\n        <a-input-number v-model:value=\"inputValue1\" :min=\"1\" :max=\"20\" style=\"margin-left: 16px\" />\n      </a-col>\n    </a-row>\n    <a-row>\n      <a-col :span=\"12\">\n        <a-slider v-model:value=\"inputValue\" :min=\"0\" :max=\"1\" :step=\"0.01\" />\n      </a-col>\n      <a-col :span=\"4\">\n        <a-input-number\n          v-model:value=\"inputValue\"\n          :min=\"0\"\n          :max=\"1\"\n          :step=\"0.01\"\n          style=\"margin-left: 16px\"\n        />\n      </a-col>\n    </a-row>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst inputValue = ref<number>(0);\nconst inputValue1 = ref<number>(1);\n</script>\n<style scoped>\n.code-box-demo .ant-slider {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/slider/demo/mark.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 带标签的滑块\n  en-US: Graduated slider\n---\n\n## zh-CN\n\n使用 `marks` 属性标注分段式滑块，使用 `value` 指定滑块位置。当 `included=false` 时，表明不同标记间为并列关系。当 `step=null` 时，Slider 的可选值仅有 `marks` 标出来的部分。\n\n## en-US\n\nUsing `marks` property to mark a graduated slider, use `value` to specify the position of thumb. When `included` is false, means that different thumbs are coordinative. when `step` is null, users can only slide the thumbs onto marks.\n</docs>\n\n<template>\n  <div id=\"components-slider-demo-mark\">\n    <h4>included=true</h4>\n    <a-slider v-model:value=\"value1\" :marks=\"marks\">\n      <template #mark=\"{ label, point }\">\n        <template v-if=\"point === 100\">\n          <strong>{{ label }}</strong>\n        </template>\n        <template v-else>{{ label }}</template>\n      </template>\n    </a-slider>\n    <a-slider v-model:value=\"value2\" range :marks=\"marks\">\n      <template #mark=\"{ label, point }\">\n        <template v-if=\"point === 100\">\n          <strong>{{ label }}</strong>\n        </template>\n        <template v-else>{{ label }}</template>\n      </template>\n    </a-slider>\n\n    <h4>included=false</h4>\n    <a-slider v-model:value=\"value3\" :marks=\"marks\" :included=\"false\">\n      <template #mark=\"{ label, point }\">\n        <template v-if=\"point === 100\">\n          <strong>{{ label }}</strong>\n        </template>\n        <template v-else>{{ label }}</template>\n      </template>\n    </a-slider>\n\n    <h4>marks & step</h4>\n    <a-slider v-model:value=\"value4\" :marks=\"marks\" :step=\"10\">\n      <template #mark=\"{ label, point }\">\n        <template v-if=\"point === 100\">\n          <strong>{{ label }}</strong>\n        </template>\n        <template v-else>{{ label }}</template>\n      </template>\n    </a-slider>\n\n    <h4>step=null</h4>\n    <a-slider v-model:value=\"value5\" :marks=\"marks\" :step=\"null\">\n      <template #mark=\"{ label, point }\">\n        <template v-if=\"point === 100\">\n          <strong>{{ label }}</strong>\n        </template>\n        <template v-else>{{ label }}</template>\n      </template>\n    </a-slider>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value1 = ref<number>(37);\nconst value2 = ref<[number, number]>([26, 37]);\nconst value3 = ref<number>(37);\nconst value4 = ref<number>(37);\nconst value5 = ref<number>(37);\nconst marks = ref<Record<number, any>>({\n  0: '0°C',\n  26: '26°C',\n  37: '37°C',\n  100: {\n    style: {\n      color: '#f50',\n    },\n    label: '100°C',\n  },\n});\n</script>\n<style scoped>\n#components-slider-demo-mark h4 {\n  margin: 0 0 16px;\n}\n#components-slider-demo-mark .ant-slider-with-marks {\n  margin-bottom: 44px;\n}\n</style>\n"
  },
  {
    "path": "components/slider/demo/reverse.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 反向\n  en-US: Reverse\n---\n\n## zh-CN\n\n设置 `reverse` 可以将滑动条置反。\n\n## en-US\n\nUsing `reverse` to render slider reversely.\n</docs>\n\n<template>\n  <div>\n    <a-slider v-model:value=\"value1\" :reverse=\"reverse\" />\n    <a-slider v-model:value=\"value2\" range :reverse=\"reverse\" />\n    Reversed:\n    <a-switch v-model:checked=\"reverse\" size=\"small\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst value1 = ref<number>(30);\nconst value2 = ref<[number, number]>([20, 50]);\nconst reverse = ref<boolean>(true);\n</script>\n"
  },
  {
    "path": "components/slider/demo/show-tooltip.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 控制 ToolTip 的显示\n  en-US: Control visible of ToolTip\n---\n\n## zh-CN\n\n当 `tooltipOpen` 为 `true` 时，将始终显示 ToolTip；反之则始终不显示，即使在拖动、移入时也是如此。\n\n## en-US\n\nWhen `tooltipOpen` is `true`, ToolTip will show always, or ToolTip will not show anyway, even if dragging or hovering.\n</docs>\n\n<template>\n  <a-slider v-model:value=\"value\" :tooltip-open=\"true\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref<number>(30);\n</script>\n"
  },
  {
    "path": "components/slider/demo/tip-formatter.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义提示\n  en-US: Customize tooltip\n---\n\n## zh-CN\n\n使用 `tipFormatter` 可以格式化 `Tooltip` 的内容，设置 `tipFormatter={null}`，则隐藏 `Tooltip`。\n\n## en-US\n\nUse `tipFormatter` to format content of `Tooltip`. If `tipFormatter` is null, hide it.\n</docs>\n\n<template>\n  <div>\n    <a-slider :tip-formatter=\"formatter\" />\n    <a-slider :tip-formatter=\"null\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nconst formatter = (value: number) => {\n  return `${value}%`;\n};\n</script>\n"
  },
  {
    "path": "components/slider/demo/vertical.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 垂直\n  en-US: Vertical\n---\n\n## zh-CN\n\n垂直方向的 Slider。\n\n## en-US\n\nThe vertical Slider.\n</docs>\n\n<template>\n  <div style=\"height: 300px\">\n    <div style=\"display: inline-block; height: 300px; margin-left: 70px\">\n      <a-slider v-model:value=\"value1\" vertical />\n    </div>\n    <div style=\"display: inline-block; height: 300px; margin-left: 70px\">\n      <a-slider v-model:value=\"value2\" vertical range :step=\"10\" />\n    </div>\n    <div style=\"display: inline-block; height: 300px; margin-left: 70px\">\n      <a-slider v-model:value=\"value3\" vertical range :marks=\"marks\" />\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, createVNode } from 'vue';\nconst value1 = ref<number>(30);\nconst value2 = ref<[number, number]>([20, 50]);\nconst value3 = ref<[number, number]>([26, 37]);\nconst marks = ref<Record<number, any>>({\n  0: '0°C',\n  26: '26°C',\n  37: '37°C',\n  100: {\n    style: {\n      color: '#f50',\n    },\n    label: createVNode('strong', {}, '100°C'),\n  },\n});\n</script>\n<style scoped>\n.code-box-demo .ant-slider {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/slider/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Slider\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*_4heQaUrFn4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*XkgXTaudeosAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA Slider component for displaying current value and intervals in range.\n\n## When To Use\n\nTo input a value in a range.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autofocus | get focus when component mounted | boolean | false |  |\n| disabled | If true, the slider will not be intractable. | boolean | false |  |\n| dots | Whether the thumb can drag over tick only. | boolean | false |  |\n| handleStyle | The style of slider handle | CSSProperties | - |  |\n| included | Make effect when `marks` not null, `true` means containment and `false` means coordinative | boolean | true |  |\n| mark | Custom tick mark of Slider, | v-slot:mark | { point: number, label: any } | 3.0 |\n| marks | Tick mark of Slider, type of key must be `number`, and must in closed interval \\[min, max], each mark can declare its own style. | object | { number: string\\|VNode } or { number: { style: object, label: string\\|VNode } } or { number: () => VNode } |  |\n| max | The maximum value the slider can slide to | number | 100 |  |\n| min | The minimum value the slider can slide to. | number | 0 |  |\n| range | dual thumb mode | boolean | false |  |\n| reverse | reverse the component | boolean | false | 1.5.0 |\n| step | The granularity the slider can step through values. Must greater than 0, and be divided by (max - min) . When `marks` no null, `step` can be `null`. | number\\|null | 1 |  |\n| trackStyle | The style of slider track | CSSProperties | - |  |\n| value(v-model) | The value of slider. When `range` is `false`, use `number`, otherwise, use `[number, number]` | number\\|number\\[] |  |  |\n| vertical | If true, the slider will be vertical. | Boolean | false |  |\n| tipFormatter | Slider will pass its value to `tipFormatter`, and display its value in Tooltip, and hide Tooltip when return value is null. | Function\\|null | IDENTITY |  |\n| tooltipPlacement | Set Tooltip display position. Ref [`Tooltip`](/components/tooltip/). | string |  | 1.5.0 |\n| tooltipOpen | If true, Tooltip will show always, or it will not show anyway, even if dragging or hovering. | Boolean |  | 4.0 |\n| getTooltipPopupContainer | The DOM container of the Tooltip, the default behavior is to create a div element in body. | Function | () => document.body | 1.5.0 |\n\n### events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | Callback function that is fired when the user changes the slider's value. | Function(value) | NOOP |\n| afterChange | Fire when `mouseup` is fired. | Function(value) | NOOP |\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n"
  },
  {
    "path": "components/slider/index.tsx",
    "content": "import type { CSSProperties, VNodeTypes, ExtractPropTypes } from 'vue';\nimport { computed, ref, defineComponent } from 'vue';\nimport VcSlider from '../vc-slider/src/Slider';\nimport VcRange from '../vc-slider/src/Range';\nimport VcHandle from '../vc-slider/src/Handle';\n\nimport type { VueNode, CustomSlotsType } from '../_util/type';\nimport {\n  stringType,\n  booleanType,\n  someType,\n  objectType,\n  withInstall,\n  functionType,\n} from '../_util/type';\nimport type { TooltipPlacement } from '../tooltip/Tooltip';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport SliderTooltip from './SliderTooltip';\nimport classNames from '../_util/classNames';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport type { FocusEventHandler } from '../_util/EventInterface';\n\n// CSSINJS\nimport useStyle from './style';\nimport devWarning from '../vc-util/devWarning';\n\nexport type SliderValue = number | [number, number];\n\nexport interface SliderMarks {\n  [key: number]:\n    | VueNode\n    | {\n        style: CSSProperties;\n        label: any;\n      };\n}\n\ninterface HandleGeneratorInfo {\n  value?: number;\n  dragging?: boolean;\n  index: number;\n}\nexport interface SliderRange {\n  draggableTrack?: boolean;\n}\nexport type HandleGeneratorFn = (config: {\n  tooltipPrefixCls?: string;\n  prefixCls?: string;\n  info: HandleGeneratorInfo;\n}) => VNodeTypes;\ntype Value = [number, number] | number;\n\nconst defaultTipFormatter = (value: number) => (typeof value === 'number' ? value.toString() : '');\nexport const sliderProps = () => ({\n  id: String,\n  prefixCls: String,\n  tooltipPrefixCls: String,\n  range: someType<boolean | SliderRange>([Boolean, Object]),\n  reverse: booleanType(),\n  min: Number,\n  max: Number,\n  step: someType<null | number>([Object, Number]),\n  marks: objectType<SliderMarks>(),\n  dots: booleanType(),\n  value: someType<Value>([Array, Number]),\n  defaultValue: someType<Value>([Array, Number]),\n  included: booleanType(),\n  disabled: booleanType(),\n  vertical: booleanType(),\n  tipFormatter: someType<((value?: number) => any) | null>(\n    [Function, Object],\n    () => defaultTipFormatter,\n  ),\n  tooltipOpen: booleanType(),\n  /** @deprecated `tooltipVisible` is deprecated. Please use `tooltipOpen` instead. */\n  tooltipVisible: booleanType(),\n  tooltipPlacement: stringType<TooltipPlacement>(),\n  getTooltipPopupContainer: functionType<(triggerNode: HTMLElement) => HTMLElement>(),\n  autofocus: booleanType(),\n  handleStyle: someType<CSSProperties[] | CSSProperties>([Array, Object]),\n  trackStyle: someType<CSSProperties[] | CSSProperties>([Array, Object]),\n  onChange: functionType<(value: Value) => void>(),\n  onAfterChange: functionType<(value: Value) => void>(),\n  onFocus: functionType<FocusEventHandler>(),\n  onBlur: functionType<FocusEventHandler>(),\n  'onUpdate:value': functionType<(value: Value) => void>(),\n});\n\nexport type SliderProps = Partial<ExtractPropTypes<ReturnType<typeof sliderProps>>>;\nexport type Visibles = { [index: number]: boolean };\n\nconst Slider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASlider',\n  inheritAttrs: false,\n  props: sliderProps(),\n  // emits: ['update:value', 'change', 'afterChange', 'blur'],\n  slots: Object as CustomSlotsType<{\n    mark?: any;\n    default?: any;\n  }>,\n  setup(props, { attrs, slots, emit, expose }) {\n    // Warning for deprecated usage\n    if (process.env.NODE_ENV !== 'production') {\n      [['tooltipVisible', 'tooltipOpen']].forEach(([deprecatedName, newName]) => {\n        devWarning(\n          props.tooltipVisible === undefined,\n          'Slider',\n          `\\`${deprecatedName}\\` is deprecated, please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n    const { prefixCls, rootPrefixCls, direction, getPopupContainer, configProvider } =\n      useConfigInject('slider', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const formItemContext = useInjectFormItemContext();\n    const sliderRef = ref();\n    const visibles = ref<Visibles>({});\n    const toggleTooltipOpen = (index: number, visible: boolean) => {\n      visibles.value[index] = visible;\n    };\n    const tooltipPlacement = computed(() => {\n      if (props.tooltipPlacement) {\n        return props.tooltipPlacement;\n      }\n      if (!props.vertical) {\n        return 'top';\n      }\n      return direction.value === 'rtl' ? 'left' : 'right';\n    });\n\n    const focus = () => {\n      sliderRef.value?.focus();\n    };\n    const blur = () => {\n      sliderRef.value?.blur();\n    };\n    const handleChange = (val: SliderValue) => {\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n    const handleBlur = (e: FocusEvent) => {\n      emit('blur', e);\n    };\n    expose({\n      focus,\n      blur,\n    });\n    const handleWithTooltip: HandleGeneratorFn = ({\n      tooltipPrefixCls,\n      info: { value, dragging, index, ...restProps },\n    }) => {\n      const { tipFormatter, tooltipOpen = props.tooltipVisible, getTooltipPopupContainer } = props;\n      const isTipFormatter = tipFormatter ? visibles.value[index] || dragging : false;\n      const open = tooltipOpen || (tooltipOpen === undefined && isTipFormatter);\n      return (\n        <SliderTooltip\n          prefixCls={tooltipPrefixCls}\n          title={tipFormatter ? tipFormatter(value) : ''}\n          open={open}\n          placement={tooltipPlacement.value}\n          transitionName={`${rootPrefixCls.value}-zoom-down`}\n          key={index}\n          overlayClassName={`${prefixCls.value}-tooltip`}\n          getPopupContainer={getTooltipPopupContainer || getPopupContainer?.value}\n        >\n          <VcHandle\n            {...restProps}\n            value={value}\n            onMouseenter={() => toggleTooltipOpen(index, true)}\n            onMouseleave={() => toggleTooltipOpen(index, false)}\n          />\n        </SliderTooltip>\n      );\n    };\n    return () => {\n      const {\n        tooltipPrefixCls: customizeTooltipPrefixCls,\n        range,\n        id = formItemContext.id.value,\n        ...restProps\n      } = props;\n      const tooltipPrefixCls = configProvider.getPrefixCls('tooltip', customizeTooltipPrefixCls);\n      const cls = classNames(\n        attrs.class,\n        {\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        hashId.value,\n      );\n\n      // make reverse default on rtl direction\n      if (direction.value === 'rtl' && !restProps.vertical) {\n        restProps.reverse = !restProps.reverse;\n      }\n\n      // extrack draggableTrack from range={{ ... }}\n      let draggableTrack: boolean | undefined;\n      if (typeof range === 'object') {\n        draggableTrack = range.draggableTrack;\n      }\n\n      if (range) {\n        return wrapSSR(\n          <VcRange\n            {...attrs}\n            {...restProps}\n            step={restProps.step!}\n            draggableTrack={draggableTrack}\n            class={cls}\n            ref={sliderRef}\n            handle={(info: HandleGeneratorInfo) =>\n              handleWithTooltip({\n                tooltipPrefixCls,\n                prefixCls: prefixCls.value,\n                info,\n              })\n            }\n            prefixCls={prefixCls.value}\n            onChange={handleChange}\n            onBlur={handleBlur}\n            v-slots={{ mark: slots.mark }}\n          />,\n        );\n      }\n      return wrapSSR(\n        <VcSlider\n          {...attrs}\n          {...restProps}\n          id={id}\n          step={restProps.step!}\n          class={cls}\n          ref={sliderRef}\n          handle={(info: HandleGeneratorInfo) =>\n            handleWithTooltip({\n              tooltipPrefixCls,\n              prefixCls: prefixCls.value,\n              info,\n            })\n          }\n          prefixCls={prefixCls.value}\n          onChange={handleChange}\n          onBlur={handleBlur}\n          v-slots={{ mark: slots.mark }}\n        />,\n      );\n    };\n  },\n});\n\nexport default withInstall(Slider);\n"
  },
  {
    "path": "components/slider/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 滑动输入条\ntype: 数据录入\ntitle: Slider\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*_4heQaUrFn4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*XkgXTaudeosAAAAAAAAAAAAADrJ8AQ/original\n---\n\n滑动型输入器，展示当前值和可选范围。\n\n## 何时使用\n\n当用户需要在数值区间/自定义区间内进行选择时，可为连续或离散值。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| disabled | 值为 `true` 时，滑块为禁用状态 | boolean | false |  |\n| dots | 是否只能拖拽到刻度上 | boolean | false |  |\n| included | `marks` 不为空对象时有效，值为 true 时表示值为包含关系，false 表示并列 | boolean | true |  |\n| mark | 自定义刻度标记 | v-slot:mark | { point: number, label: any } | 3.0 |\n| marks | 刻度标记，key 的类型必须为 `number` 且取值在闭区间 \\[min, max] 内，每个标签可以单独设置样式 | object | { number: string\\|VNode } or { number: { style: object, label: string\\|VNode } } or { number: () => VNode } |  |\n| max | 最大值 | number | 100 |  |\n| min | 最小值 | number | 0 |  |\n| range | 双滑块模式 | boolean | false |  |\n| reverse | 反向坐标轴 | boolean | false | 1.5.0 |\n| step | 步长，取值必须大于 0，并且可被 (max - min) 整除。当 `marks` 不为空对象时，可以设置 `step` 为 `null`，此时 Slider 的可选值仅有 marks 标出来的部分。 | number\\|null | 1 |  |\n| value(v-model) | 设置当前取值。当 `range` 为 `false` 时，使用 `number`，否则用 `[number, number]` | number\\|number\\[] |  |  |\n| vertical | 值为 `true` 时，Slider 为垂直方向 | Boolean | false |  |\n| tipFormatter | Slider 会把当前值传给 `tipFormatter`，并在 Tooltip 中显示 `tipFormatter` 的返回值，若为 null，则隐藏 Tooltip。 | Function\\|null | IDENTITY |  |\n| tooltipPlacement | 设置 Tooltip 展示位置。参考 [`Tooltip`](/components/tooltip/)。 | string |  | 1.5.0 |\n| tooltipOpen | 值为`true`时，Tooltip 将会始终显示；否则始终不显示，哪怕在拖拽及移入时。 | Boolean |  | 4.0 |\n| getTooltipPopupContainer | Tooltip 渲染父节点，默认渲染到 body 上。 | Function | () => document.body | 1.5.0 |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |  |\n| --- | --- | --- | --- |\n| change | 当 Slider 的值发生改变时，会触发 change 事件，并把改变后的值作为参数传入。 | Function(value) | NOOP |\n| afterChange | 与 `mouseup` 触发时机一致，把当前值作为参数传入。 | Function(value) | NOOP |\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n"
  },
  {
    "path": "components/slider/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { CSSProperties } from 'vue';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\n// Direction naming standard:\n// Horizontal base:\n// -0-------------\n// vertical: part   (水平时，垂直方向命名为 part)\n// horizontal: full (水平时，水平方向命名为 full)\n\nexport interface ComponentToken {\n  controlSize: number;\n  railSize: number;\n  handleSize: number;\n  handleSizeHover: number;\n  handleLineWidth: number;\n  handleLineWidthHover: number;\n  dotSize: number;\n}\n\ninterface SliderToken extends FullToken<'Slider'> {\n  marginFull: number;\n  marginPart: number;\n  marginPartWithMark: number;\n}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<SliderToken> = token => {\n  const { componentCls, controlSize, dotSize, marginFull, marginPart, colorFillContentHover } =\n    token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      position: 'relative',\n      height: controlSize,\n      margin: `${marginPart}px ${marginFull}px`,\n      padding: 0,\n      cursor: 'pointer',\n      touchAction: 'none',\n\n      [`&-vertical`]: {\n        margin: `${marginFull}px ${marginPart}px`,\n      },\n\n      [`${componentCls}-rail`]: {\n        position: 'absolute',\n        backgroundColor: token.colorFillTertiary,\n        borderRadius: token.borderRadiusXS,\n        transition: `background-color ${token.motionDurationMid}`,\n      },\n\n      [`${componentCls}-track`]: {\n        position: 'absolute',\n        backgroundColor: token.colorPrimaryBorder,\n        borderRadius: token.borderRadiusXS,\n        transition: `background-color ${token.motionDurationMid}`,\n      },\n\n      '&:hover': {\n        [`${componentCls}-rail`]: {\n          backgroundColor: token.colorFillSecondary,\n        },\n\n        [`${componentCls}-track`]: {\n          backgroundColor: token.colorPrimaryBorderHover,\n        },\n\n        [`${componentCls}-dot`]: {\n          borderColor: colorFillContentHover,\n        },\n\n        [`${componentCls}-handle::after`]: {\n          boxShadow: `0 0 0 ${token.handleLineWidth}px ${token.colorPrimaryBorderHover}`,\n        },\n\n        [`${componentCls}-dot-active`]: {\n          borderColor: token.colorPrimary,\n        },\n      },\n\n      [`${componentCls}-handle`]: {\n        position: 'absolute',\n        width: token.handleSize,\n        height: token.handleSize,\n        outline: 'none',\n\n        [`${componentCls}-dragging`]: {\n          zIndex: 1,\n        },\n\n        // 扩大选区\n        '&::before': {\n          content: '\"\"',\n          position: 'absolute',\n          insetInlineStart: -token.handleLineWidth,\n          insetBlockStart: -token.handleLineWidth,\n          width: token.handleSize + token.handleLineWidth * 2,\n          height: token.handleSize + token.handleLineWidth * 2,\n          backgroundColor: 'transparent',\n        },\n\n        '&::after': {\n          content: '\"\"',\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineStart: 0,\n          width: token.handleSize,\n          height: token.handleSize,\n          backgroundColor: token.colorBgElevated,\n          boxShadow: `0 0 0 ${token.handleLineWidth}px ${token.colorPrimaryBorder}`,\n          borderRadius: '50%',\n          cursor: 'pointer',\n          transition: `\n            inset-inline-start ${token.motionDurationMid},\n            inset-block-start ${token.motionDurationMid},\n            width ${token.motionDurationMid},\n            height ${token.motionDurationMid},\n            box-shadow ${token.motionDurationMid}\n          `,\n        },\n\n        '&:hover, &:active, &:focus': {\n          '&::before': {\n            insetInlineStart: -(\n              (token.handleSizeHover - token.handleSize) / 2 +\n              token.handleLineWidthHover\n            ),\n            insetBlockStart: -(\n              (token.handleSizeHover - token.handleSize) / 2 +\n              token.handleLineWidthHover\n            ),\n            width: token.handleSizeHover + token.handleLineWidthHover * 2,\n            height: token.handleSizeHover + token.handleLineWidthHover * 2,\n          },\n\n          '&::after': {\n            boxShadow: `0 0 0 ${token.handleLineWidthHover}px ${token.colorPrimary}`,\n            width: token.handleSizeHover,\n            height: token.handleSizeHover,\n            insetInlineStart: (token.handleSize - token.handleSizeHover) / 2,\n            insetBlockStart: (token.handleSize - token.handleSizeHover) / 2,\n          },\n        },\n      },\n\n      [`${componentCls}-mark`]: {\n        position: 'absolute',\n        fontSize: token.fontSize,\n      },\n\n      [`${componentCls}-mark-text`]: {\n        position: 'absolute',\n        display: 'inline-block',\n        color: token.colorTextDescription,\n        textAlign: 'center',\n        wordBreak: 'keep-all',\n        cursor: 'pointer',\n        userSelect: 'none',\n\n        '&-active': {\n          color: token.colorText,\n        },\n      },\n\n      [`${componentCls}-step`]: {\n        position: 'absolute',\n        background: 'transparent',\n        pointerEvents: 'none',\n      },\n\n      [`${componentCls}-dot`]: {\n        position: 'absolute',\n        width: dotSize,\n        height: dotSize,\n        backgroundColor: token.colorBgElevated,\n        border: `${token.handleLineWidth}px solid ${token.colorBorderSecondary}`,\n        borderRadius: '50%',\n        cursor: 'pointer',\n        transition: `border-color ${token.motionDurationSlow}`,\n        pointerEvents: 'auto',\n\n        '&-active': {\n          borderColor: token.colorPrimaryBorder,\n        },\n      },\n\n      [`&${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n\n        [`${componentCls}-rail`]: {\n          backgroundColor: `${token.colorFillSecondary} !important`,\n        },\n\n        [`${componentCls}-track`]: {\n          backgroundColor: `${token.colorTextDisabled} !important`,\n        },\n\n        [`\n          ${componentCls}-dot\n        `]: {\n          backgroundColor: token.colorBgElevated,\n          borderColor: token.colorTextDisabled,\n          boxShadow: 'none',\n          cursor: 'not-allowed',\n        },\n\n        [`${componentCls}-handle::after`]: {\n          backgroundColor: token.colorBgElevated,\n          cursor: 'not-allowed',\n          width: token.handleSize,\n          height: token.handleSize,\n          boxShadow: `0 0 0 ${token.handleLineWidth}px ${new TinyColor(token.colorTextDisabled)\n            .onBackground(token.colorBgContainer)\n            .toHexString()}`,\n          insetInlineStart: 0,\n          insetBlockStart: 0,\n        },\n\n        [`\n          ${componentCls}-mark-text,\n          ${componentCls}-dot\n        `]: {\n          cursor: `not-allowed !important`,\n        },\n      },\n    },\n  };\n};\n\n// ============================ Horizontal ============================\nconst genDirectionStyle = (token: SliderToken, horizontal: boolean): CSSObject => {\n  const { componentCls, railSize, handleSize, dotSize } = token;\n\n  const railPadding: keyof CSSProperties = horizontal ? 'paddingBlock' : 'paddingInline';\n  const full: keyof CSSProperties = horizontal ? 'width' : 'height';\n  const part: keyof CSSProperties = horizontal ? 'height' : 'width';\n  const handlePos: keyof CSSProperties = horizontal ? 'insetBlockStart' : 'insetInlineStart';\n  const markInset: keyof CSSProperties = horizontal ? 'top' : 'insetInlineStart';\n\n  return {\n    [railPadding]: railSize,\n    [part]: railSize * 3,\n\n    [`${componentCls}-rail`]: {\n      [full]: '100%',\n      [part]: railSize,\n    },\n\n    [`${componentCls}-track`]: {\n      [part]: railSize,\n    },\n\n    [`${componentCls}-handle`]: {\n      [handlePos]: (railSize * 3 - handleSize) / 2,\n    },\n\n    [`${componentCls}-mark`]: {\n      // Reset all\n      insetInlineStart: 0,\n      top: 0,\n      [markInset]: handleSize,\n      [full]: '100%',\n    },\n\n    [`${componentCls}-step`]: {\n      // Reset all\n      insetInlineStart: 0,\n      top: 0,\n      [markInset]: railSize,\n      [full]: '100%',\n      [part]: railSize,\n    },\n\n    [`${componentCls}-dot`]: {\n      position: 'absolute',\n      [handlePos]: (railSize - dotSize) / 2,\n    },\n  };\n};\n// ============================ Horizontal ============================\nconst genHorizontalStyle: GenerateStyle<SliderToken> = token => {\n  const { componentCls, marginPartWithMark } = token;\n\n  return {\n    [`${componentCls}-horizontal`]: {\n      ...genDirectionStyle(token, true),\n\n      [`&${componentCls}-with-marks`]: {\n        marginBottom: marginPartWithMark,\n      },\n    },\n  };\n};\n\n// ============================= Vertical =============================\nconst genVerticalStyle: GenerateStyle<SliderToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-vertical`]: {\n      ...genDirectionStyle(token, false),\n      height: '100%',\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Slider',\n  token => {\n    const sliderToken = mergeToken<SliderToken>(token, {\n      marginPart: (token.controlHeight - token.controlSize) / 2,\n      marginFull: token.controlSize / 2,\n      marginPartWithMark: token.controlHeightLG - token.controlSize,\n    });\n    return [\n      genBaseStyle(sliderToken),\n      genHorizontalStyle(sliderToken),\n      genVerticalStyle(sliderToken),\n    ];\n  },\n  token => {\n    // Handle line width is always width-er 1px\n    const increaseHandleWidth = 1;\n    const controlSize = token.controlHeightLG / 4;\n    const controlSizeHover = token.controlHeightSM / 2;\n    const handleLineWidth = token.lineWidth + increaseHandleWidth;\n    const handleLineWidthHover = token.lineWidth + increaseHandleWidth * 3;\n    return {\n      controlSize,\n      railSize: 4,\n      handleSize: controlSize,\n      handleSizeHover: controlSizeHover,\n      dotSize: 8,\n      handleLineWidth,\n      handleLineWidthHover,\n    };\n  },\n);\n"
  },
  {
    "path": "components/space/Compact.tsx",
    "content": "import classNames from '../_util/classNames';\nimport type { DirectionType, SizeType } from '../config-provider';\nimport createContext from '../_util/createContext';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nimport useStyle from './style';\nimport { computed, defineComponent } from 'vue';\nimport type { PropType, ExtractPropTypes, Ref } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { booleanType, tuple } from '../_util/type';\nimport { isEmpty } from 'lodash-es';\nimport { flattenChildren } from '../_util/props-util';\n\nexport const spaceCompactItemProps = () => ({\n  compactSize: String as PropType<SizeType>,\n  compactDirection: PropTypes.oneOf(tuple('horizontal', 'vertical')).def('horizontal'),\n  isFirstItem: booleanType(),\n  isLastItem: booleanType(),\n});\n\nexport type SpaceCompactItemContextType = Partial<\n  ExtractPropTypes<ReturnType<typeof spaceCompactItemProps>>\n>;\n\nexport const SpaceCompactItemContext = createContext<SpaceCompactItemContextType | null>(null);\n\nexport const useCompactItemContext = (prefixCls: Ref<string>, direction: Ref<DirectionType>) => {\n  const compactItemContext = SpaceCompactItemContext.useInject();\n\n  const compactItemClassnames = computed(() => {\n    if (!compactItemContext || isEmpty(compactItemContext)) return '';\n\n    const { compactDirection, isFirstItem, isLastItem } = compactItemContext;\n    const separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n\n    return classNames({\n      [`${prefixCls.value}-compact${separator}item`]: true,\n      [`${prefixCls.value}-compact${separator}first-item`]: isFirstItem,\n      [`${prefixCls.value}-compact${separator}last-item`]: isLastItem,\n      [`${prefixCls.value}-compact${separator}item-rtl`]: direction.value === 'rtl',\n    });\n  });\n\n  return {\n    compactSize: computed(() => compactItemContext?.compactSize),\n    compactDirection: computed(() => compactItemContext?.compactDirection),\n    compactItemClassnames,\n  };\n};\n\nexport const NoCompactStyle = defineComponent({\n  name: 'NoCompactStyle',\n  setup(_, { slots }) {\n    SpaceCompactItemContext.useProvide(null);\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n\nexport const spaceCompactProps = () => ({\n  prefixCls: String,\n  size: {\n    type: String as PropType<SizeType>,\n  },\n  direction: PropTypes.oneOf(tuple('horizontal', 'vertical')).def('horizontal'),\n  align: PropTypes.oneOf(tuple('start', 'end', 'center', 'baseline')),\n  block: { type: Boolean, default: undefined },\n});\n\nexport type SpaceCompactProps = Partial<ExtractPropTypes<ReturnType<typeof spaceCompactProps>>>;\n\nconst CompactItem = defineComponent({\n  name: 'CompactItem',\n  props: spaceCompactItemProps(),\n  setup(props, { slots }) {\n    SpaceCompactItemContext.useProvide(props);\n\n    return () => slots.default?.();\n  },\n});\n\nconst Compact = defineComponent({\n  name: 'ASpaceCompact',\n  inheritAttrs: false,\n  props: spaceCompactProps(),\n  setup(props, { attrs, slots }) {\n    const { prefixCls, direction: directionConfig } = useConfigInject('space-compact', props);\n    const compactItemContext = SpaceCompactItemContext.useInject();\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const clx = computed(() => {\n      return classNames(prefixCls.value, hashId.value, {\n        [`${prefixCls.value}-rtl`]: directionConfig.value === 'rtl',\n        [`${prefixCls.value}-block`]: props.block,\n        [`${prefixCls.value}-vertical`]: props.direction === 'vertical',\n      });\n    });\n\n    return () => {\n      const childNodes = flattenChildren(slots.default?.() || []);\n      // =========================== Render ===========================\n      if (childNodes.length === 0) {\n        return null;\n      }\n\n      return wrapSSR(\n        <div {...attrs} class={[clx.value, attrs.class]}>\n          {childNodes.map((child, i) => {\n            const key = (child && child.key) || `${prefixCls.value}-item-${i}`;\n            const noCompactItemContext = !compactItemContext || isEmpty(compactItemContext);\n\n            return (\n              <CompactItem\n                key={key}\n                compactSize={props.size ?? 'middle'}\n                compactDirection={props.direction}\n                isFirstItem={i === 0 && (noCompactItemContext || compactItemContext?.isFirstItem)}\n                isLastItem={\n                  i === childNodes.length - 1 &&\n                  (noCompactItemContext || compactItemContext?.isLastItem)\n                }\n              >\n                {child}\n              </CompactItem>\n            );\n          })}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default Compact;\n"
  },
  {
    "path": "components/space/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/space/demo/align.vue correctly 1`] = `\n<div class=\"space-align-container\">\n  <div class=\"space-align-block\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> center </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><span class=\"mock-block\">Block</span></div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"space-align-block\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-start\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> start </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><span class=\"mock-block\">Block</span></div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"space-align-block\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-end\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> end </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><span class=\"mock-block\">Block</span></div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"space-align-block\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-baseline\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> baseline </div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n          <!----><span>Primary</span>\n        </button></div>\n      <!---->\n      <div class=\"ant-space-item\"><span class=\"mock-block\">Block</span></div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/space/demo/base.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> Space </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Click to Upload</span></button></span></div>\n  <div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n</div>\n<!---->\n<div class=\"ant-space-item\">\n  <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Confirm</span>\n  </button>\n</div>\n<!---->\n</div>\n`;\n\nexports[`renders ./components/space/demo/compact.vue correctly 1`] = `\n<div class=\"site-space-compact-wrapper\">\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: 20%;\" class=\"ant-input ant-input-compact-item ant-input-compact-first-item\"><input type=\"text\" style=\"width: 30%;\" class=\"ant-input ant-input-compact-item ant-input-compact-last-item\"></div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: calc(100% - 200px);\" class=\"ant-input ant-input-sm ant-input-compact-item ant-input-compact-first-item\"><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary ant-btn-sm\" type=\"button\">\n      <!----><span>Submit</span>\n    </button></div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: calc(100% - 200px);\" class=\"ant-input ant-input-compact-item ant-input-compact-first-item\"><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Submit</span>\n    </button></div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: calc(100% - 200px);\" class=\"ant-input ant-input-compact-item ant-input-compact-first-item\">\n    <!----><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"copy\" class=\"anticon anticon-copy\"><svg focusable=\"false\" class=\"\" data-icon=\"copy\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"></path></svg></span>\n    </button>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Zhejiang</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div><input type=\"text\" style=\"width: 50%;\" class=\"ant-input ant-input-compact-item ant-input-compact-last-item\">\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div style=\"width: 50%;\" class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-multiple ant-select-allow-clear ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\"><span class=\"ant-select-selection-item-content\">Zhejianggggg</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!----><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div><input type=\"text\" style=\"width: 50%;\" class=\"ant-input ant-input-compact-item ant-input-compact-last-item\">\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><span class=\"ant-input-group-wrapper ant-input-search ant-input-compact-item ant-input-compact-first-item\" style=\"width: 30%;\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span><span class=\"ant-input-group-wrapper ant-input-search ant-input-compact-item\" style=\"width: 50%;\"><span class=\"ant-input-wrapper ant-input-group\"><!----><span class=\"ant-input-affix-wrapper\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    <!----></span></span><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span><span class=\"ant-input-group-wrapper ant-input-search ant-input-compact-item ant-input-compact-last-item\" style=\"width: 20%;\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option1</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div><input type=\"text\" style=\"width: 50%;\" class=\"ant-input ant-input-compact-item\">\n    <div class=\"ant-input-number ant-input-number-compact-item ant-input-number-compact-last-item\">\n      <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n      <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"12\" step=\"1\" class=\"ant-input-number-input\"></div>\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: 50%;\" class=\"ant-input ant-input-compact-item ant-input-compact-first-item\">\n    <div class=\"ant-picker ant-picker-middle ant-picker-compact-item ant-picker-compact-last-item\" style=\"width: 50%;\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select date\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-picker ant-picker-range ant-picker-middle ant-picker-compact-item ant-picker-compact-first-item\" style=\"width: 70%;\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div><input type=\"text\" style=\"width: 30%;\" class=\"ant-input ant-input-compact-item\"><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>查 询</span>\n    </button>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><input type=\"text\" style=\"width: 30%;\" class=\"ant-input ant-input-compact-item ant-input-compact-first-item\">\n    <div class=\"ant-picker ant-picker-range ant-picker-middle ant-picker-compact-item ant-picker-compact-last-item\" style=\"width: 70%;\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End date\" size=\"12\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"calendar\" class=\"anticon anticon-calendar\"><svg focusable=\"false\" class=\"\" data-icon=\"calendar\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option1-1</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div class=\"ant-select ant-select-compact-item ant-select-compact-last-item ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Option2-2</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Between</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div><input placeholder=\"Minimum\" type=\"text\" class=\"ant-input ant-input-compact-item\"><input placeholder=\"~\" disabled=\"\" type=\"text\" class=\"ant-input ant-input-disabled site-input-split ant-input-compact-item\" style=\"border-right: 0; pointer-events: none;\"><input placeholder=\"Maximum\" type=\"text\" class=\"ant-input site-input-right ant-input-compact-item ant-input-compact-last-item\">\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div style=\"width: 30%;\" class=\"ant-select ant-select-compact-item ant-select-compact-first-item ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">Sign Up</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n    <div style=\"width: 70%;\" class=\"ant-select ant-select-compact-item ant-select-compact-last-item ant-select-show-search ant-select-auto-complete ant-select-single ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Email</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-picker ant-picker-middle ant-picker-compact-item ant-picker-compact-first-item\" style=\"width: 70%;\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n    <div style=\"width: 70%;\" class=\"ant-select ant-cascader ant-select-compact-item ant-select-compact-last-item ant-select-single ant-select-allow-clear ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Select Address</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <div class=\"ant-picker ant-picker-range ant-picker-middle ant-picker-compact-item ant-picker-compact-first-item\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n    <div style=\"width: 60%;\" class=\"ant-select ant-tree-select ant-select-compact-item ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span><span class=\"ant-select-selection-item\" title=\"my leaf\">my leaf</span>\n        <!---->\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n    </div><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Submit</span>\n    </button>\n  </div><br>\n</div>\n`;\n\nexports[`renders ./components/space/demo/compact-button-vertical.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-space-compact ant-space-compact-vertical\"><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-first-item ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Button 1</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Button 2</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-last-item ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Button 3</span>\n      </button></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-space-compact ant-space-compact-vertical\"><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-first-item ant-btn ant-btn-dashed\" type=\"button\">\n        <!----><span>Button 1</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn ant-btn-dashed\" type=\"button\">\n        <!----><span>Button 2</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-last-item ant-btn ant-btn-dashed\" type=\"button\">\n        <!----><span>Button 3</span>\n      </button></div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-space-compact ant-space-compact-vertical\"><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-first-item ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Button 1</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Button 2</span>\n      </button><button class=\"ant-btn-compact-vertical-item ant-btn-compact-vertical-last-item ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Button 3</span>\n      </button></div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/space/demo/compact-buttons.vue correctly 1`] = `\n<div>\n  <div class=\"ant-space-compact ant-space-compact-block\">\n    <!----><button class=\"ant-btn-compact-item ant-btn-compact-first-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"like\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"comment\" class=\"anticon anticon-comment\"><svg focusable=\"false\" class=\"\" data-icon=\"comment\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M573 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40zm-280 0c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path><path d=\"M894 345a343.92 343.92 0 00-189-130v.1c-17.1-19-36.4-36.5-58-52.1-163.7-119-393.5-82.7-513 81-96.3 133-92.2 311.9 6 439l.8 132.6c0 3.2.5 6.4 1.5 9.4a31.95 31.95 0 0040.1 20.9L309 806c33.5 11.9 68.1 18.7 102.5 20.6l-.5.4c89.1 64.9 205.9 84.4 313 49l127.1 41.4c3.2 1 6.5 1.6 9.9 1.6 17.7 0 32-14.3 32-32V753c88.1-119.6 90.4-284.9 1-408zM323 735l-12-5-99 31-1-104-8-9c-84.6-103.2-90.2-251.9-11-361 96.4-132.2 281.2-161.4 413-66 132.2 96.1 161.5 280.6 66 412-80.1 109.9-223.5 150.5-348 102zm505-17l-8 10 1 104-98-33-12 5c-56 20.8-115.7 22.5-171 7l-.2-.1A367.31 367.31 0 00729 676c76.4-105.3 88.8-237.6 44.4-350.4l.6.4c23 16.5 44.1 37.1 62 62 72.6 99.6 68.5 235.2-8 330z\"></path><path d=\"M433 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"star\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"heart\" class=\"anticon anticon-heart\"><svg focusable=\"false\" class=\"\" data-icon=\"heart\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M923 283.6a260.04 260.04 0 00-56.9-82.8 264.4 264.4 0 00-84-55.5A265.34 265.34 0 00679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 00-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"share-alt\" class=\"anticon anticon-share-alt\"><svg focusable=\"false\" class=\"\" data-icon=\"share-alt\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 000-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-default ant-dropdown-trigger\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><button class=\"ant-btn-compact-item ant-btn-compact-first-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button 1</span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button 2</span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button 3</span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button 4</span>\n    </button>\n    <!----><span style=\"display: inline-block; cursor: not-allowed; line-height: 1;\" class=\"ant-tooltip-disabled-compatible-wrapper\"><button style=\"pointer-events: none;\" disabled=\"\" class=\"ant-btn-compact-item ant-btn ant-btn-primary\" type=\"button\"><!----><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></span>\n    <!----><span style=\"display: inline-block; cursor: not-allowed; line-height: 1;\" class=\"ant-tooltip-disabled-compatible-wrapper\"><button style=\"pointer-events: none;\" disabled=\"\" class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary\" type=\"button\"><!----><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></span>\n  </div><br>\n  <div class=\"ant-space-compact ant-space-compact-block\"><button class=\"ant-btn-compact-item ant-btn-compact-first-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button 1</span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button 2</span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button 3</span>\n    </button>\n    <!----><span style=\"display: inline-block; cursor: not-allowed; line-height: 1;\" class=\"ant-tooltip-disabled-compatible-wrapper\"><button style=\"pointer-events: none;\" disabled=\"\" class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span></button></span>\n    <!----><button class=\"ant-btn-compact-item ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"download\" class=\"anticon anticon-download\"><svg focusable=\"false\" class=\"\" data-icon=\"download\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span>\n    </button><button class=\"ant-btn-compact-item ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Button 4</span>\n    </button>\n    <!----><button class=\"ant-btn-compact-item ant-btn-compact-last-item ant-btn ant-btn-primary ant-dropdown-trigger\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/space/demo/customize.vue correctly 1`] = `\n<div>\n  <div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n    <div class=\"ant-slider-rail\"></div>\n    <div class=\"ant-slider-track\" style=\"left: 0%; width: 8%;\"></div>\n    <div class=\"ant-slider-step\"></div>\n    <!---->\n    <div class=\"ant-slider-handle\" style=\"left: 8%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"8\" aria-disabled=\"false\"></div>\n    <div class=\"ant-slider-mark\"></div>\n  </div><br><br>\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Primary</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Default</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n        <!----><span>Dashed</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-link\" type=\"button\">\n        <!----><span>Link</span>\n      </button></div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/space/demo/size.vue correctly 1`] = `\n<div>\n  <div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"small\"><span class=\"ant-radio-inner\"></span></span><span>Small</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"middle\"><span class=\"ant-radio-inner\"></span></span><span>Middle</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"large\"><span class=\"ant-radio-inner\"></span></span><span>Large</span></label></div><br><br>\n  <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n        <!----><span>Primary</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Default</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-dashed\" type=\"button\">\n        <!----><span>Dashed</span>\n      </button></div>\n    <!---->\n    <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-link\" type=\"button\">\n        <!----><span>Link</span>\n      </button></div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/space/demo/split.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 4px;\"><a class=\"ant-typography\">Link\n      <!---->\n    </a></div><span class=\"ant-space-item-split\" style=\"margin-right: 4px;\"><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div></span>\n  <div class=\"ant-space-item\" style=\"margin-right: 4px;\"><a class=\"ant-typography\">Link\n      <!---->\n    </a></div><span class=\"ant-space-item-split\" style=\"margin-right: 4px;\"><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div></span>\n  <div class=\"ant-space-item\"><a class=\"ant-typography\">Link\n      <!---->\n    </a></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/space/demo/vertical.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered\">\n      <div class=\"ant-card-head\">\n        <div class=\"ant-card-head-wrapper\">\n          <div class=\"ant-card-head-title\">Card</div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-card-body\">\n        <p>Card content</p>\n        <p>Card content</p>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 300px;\" class=\"ant-card  ant-card-bordered\">\n      <div class=\"ant-card-head\">\n        <div class=\"ant-card-head-wrapper\">\n          <div class=\"ant-card-head-title\">Card</div>\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n      <div class=\"ant-card-body\">\n        <p>Card content</p>\n        <p>Card content</p>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/space/demo/wrap.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -16px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px; padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Button</span>\n    </button></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/space/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Space should render correct with children 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">text1</div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span>text1</span></div>\n  <!---->\n  <div class=\"ant-space-item\">text3</div>\n  <!---->\n</div>\n`;\n\nexports[`Space should render width empty children 1`] = `\"\"`;\n"
  },
  {
    "path": "components/space/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('space');\n"
  },
  {
    "path": "components/space/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Space from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Space', () => {\n  mountTest(Space);\n\n  it('should render width empty children', () => {\n    const wrapper = mount({\n      render() {\n        return <Space />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should render width customize size', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Space size={10}>\n            <span>1</span>\n            <span>2</span>\n          </Space>\n        );\n      },\n    });\n    expect(wrapper.findAll('.ant-space-item')[0].element.style.marginRight).toBe('10px');\n    expect(wrapper.findAll('.ant-space-item')[1].element.style.marginRight).toBe('');\n  });\n\n  it('should render vertical space width customize size', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Space size={10} direction=\"vertical\">\n            <span>1</span>\n            <span>2</span>\n          </Space>\n        );\n      },\n    });\n    expect(wrapper.findAll('.ant-space-item')[0].element.style.marginBottom).toBe('10px');\n    expect(wrapper.findAll('.ant-space-item')[1].element.style.marginBottom).toBe('');\n  });\n\n  it('should render correct with children', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Space>\n            text1<span>text1</span>\n            text3\n          </Space>\n        );\n      },\n    });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should render with invalidElement', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Space>\n            text1<span>text1</span>\n            text1\n          </Space>\n        );\n      },\n    });\n\n    expect(wrapper.findAll('.ant-space-item').length).toBe(3);\n  });\n});\n"
  },
  {
    "path": "components/space/demo/align.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 对齐\n  en-US: Align\n---\n\n## zh-CN\n\n设置对齐模式。\n\n## en-US\n\nConfig item align.\n\n</docs>\n\n<template>\n  <div class=\"space-align-container\">\n    <div class=\"space-align-block\">\n      <a-space align=\"center\">\n        center\n        <a-button type=\"primary\">Primary</a-button>\n        <span class=\"mock-block\">Block</span>\n      </a-space>\n    </div>\n    <div class=\"space-align-block\">\n      <a-space align=\"start\">\n        start\n        <a-button type=\"primary\">Primary</a-button>\n        <span class=\"mock-block\">Block</span>\n      </a-space>\n    </div>\n    <div class=\"space-align-block\">\n      <a-space align=\"end\">\n        end\n        <a-button type=\"primary\">Primary</a-button>\n        <span class=\"mock-block\">Block</span>\n      </a-space>\n    </div>\n    <div class=\"space-align-block\">\n      <a-space align=\"baseline\">\n        baseline\n        <a-button type=\"primary\">Primary</a-button>\n        <span class=\"mock-block\">Block</span>\n      </a-space>\n    </div>\n  </div>\n</template>\n<style scoped>\n.space-align-container {\n  display: flex;\n  align-items: flex-start;\n  flex-wrap: wrap;\n}\n.space-align-block {\n  margin: 8px 4px;\n  border: 1px solid #40a9ff;\n  padding: 4px;\n  flex: none;\n}\n.space-align-block .mock-block {\n  display: inline-block;\n  padding: 32px 8px 16px;\n  background: rgba(150, 150, 150, 0.2);\n}\n</style>\n"
  },
  {
    "path": "components/space/demo/base.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n相邻组件水平间距。\n\n\n## en-US\n\nCrowded components horizontal spacing.\n\n</docs>\n\n<template>\n  <a-space>\n    Space\n    <a-button type=\"primary\">Button</a-button>\n    <a-upload>\n      <a-button>\n        <UploadOutlined />\n        Click to Upload\n      </a-button>\n    </a-upload>\n    <a-popconfirm title=\"Are you sure delete this task?\" ok-text=\"Yes\" cancel-text=\"No\">\n      <a-button>Confirm</a-button>\n    </a-popconfirm>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { UploadOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/space/demo/compact-button-vertical.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 垂直方向紧凑布局\n  en-US: Vertical Compact Mode\n---\n\n## zh-CN\n\n垂直方向的紧凑布局，目前仅支持 Button 组合。\n\n## en-US\n\nVertical Mode for Space.Compact, support Button only.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-space-compact direction=\"vertical\">\n      <a-button>Button 1</a-button>\n      <a-button>Button 2</a-button>\n      <a-button>Button 3</a-button>\n    </a-space-compact>\n    <a-space-compact direction=\"vertical\">\n      <a-button type=\"dashed\">Button 1</a-button>\n      <a-button type=\"dashed\">Button 2</a-button>\n      <a-button type=\"dashed\">Button 3</a-button>\n    </a-space-compact>\n    <a-space-compact direction=\"vertical\">\n      <a-button type=\"primary\">Button 1</a-button>\n      <a-button type=\"primary\">Button 2</a-button>\n      <a-button type=\"primary\">Button 3</a-button>\n    </a-space-compact>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/space/demo/compact-buttons.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: Button 紧凑布局\n  en-US: Button Compact Mode\n---\n\n## zh-CN\n\nButton 组件紧凑排列的示例。\n\n## en-US\n\nButton component compact example.\n\n</docs>\n\n<template>\n  <div>\n    <a-space-compact block>\n      <a-tooltip title=\"Like\">\n        <a-button>\n          <LikeOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Comment\">\n        <a-button>\n          <CommentOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Star\">\n        <a-button>\n          <StarOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Heart\">\n        <a-button>\n          <HeartOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Share\">\n        <a-button>\n          <ShareAltOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Download\">\n        <a-button>\n          <DownloadOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-dropdown placement=\"bottomRight\" :trigger=\"['click']\">\n        <a-button>\n          <EllipsisOutlined />\n        </a-button>\n\n        <template #overlay>\n          <a-menu>\n            <a-menu-item>\n              <a href=\"javascript:;\">1st menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">2nd menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">3rd menu item</a>\n            </a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n    </a-space-compact>\n    <br />\n    <a-space-compact block>\n      <a-button type=\"primary\">Button 1</a-button>\n      <a-button type=\"primary\">Button 2</a-button>\n      <a-button type=\"primary\">Button 3</a-button>\n      <a-button type=\"primary\">Button 4</a-button>\n      <a-tooltip title=\"Tooltip\">\n        <a-button type=\"primary\" disabled>\n          <DownloadOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Tooltip\">\n        <a-button type=\"primary\" disabled>\n          <DownloadOutlined />\n        </a-button>\n      </a-tooltip>\n    </a-space-compact>\n    <br />\n    <a-space-compact block>\n      <a-button>Button 1</a-button>\n      <a-button>Button 2</a-button>\n      <a-button>Button 3</a-button>\n      <a-tooltip title=\"Tooltip\">\n        <a-button disabled>\n          <DownloadOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-tooltip title=\"Tooltip\">\n        <a-button>\n          <DownloadOutlined />\n        </a-button>\n      </a-tooltip>\n      <a-button type=\"primary\">Button 4</a-button>\n      <a-dropdown placement=\"bottomRight\" :trigger=\"['click']\">\n        <a-button type=\"primary\">\n          <EllipsisOutlined />\n        </a-button>\n\n        <template #overlay>\n          <a-menu>\n            <a-menu-item>\n              <a href=\"javascript:;\">1st menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">2nd menu item</a>\n            </a-menu-item>\n            <a-menu-item>\n              <a href=\"javascript:;\">3rd menu item</a>\n            </a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n    </a-space-compact>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  DownloadOutlined,\n  EllipsisOutlined,\n  HeartOutlined,\n  LikeOutlined,\n  CommentOutlined,\n  StarOutlined,\n  ShareAltOutlined,\n} from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/space/demo/compact.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 紧凑布局组合\n  en-US: Compact Mode for form component\n---\n\n## zh-CN\n\n使用 Space.Compact 让表单组件之间紧凑连接且合并边框。\n\n## en-US\n\nCompact Mode for form component.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" size=\"middle\" class=\"site-space-compact-wrapper\">\n    <a-space-compact block>\n      <a-input :style=\"{ width: '20%' }\" default-value=\"0571\" />\n      <a-input :style=\"{ width: '30%' }\" default-value=\"26888888\" />\n    </a-space-compact>\n    <a-space-compact block size=\"small\">\n      <a-input :style=\"{ width: 'calc(100% - 200px)' }\" default-value=\"https://ant.design\" />\n      <a-button type=\"primary\">Submit</a-button>\n    </a-space-compact>\n    <a-space-compact block>\n      <a-input :style=\"{ width: 'calc(100% - 200px)' }\" default-value=\"https://ant.design\" />\n      <a-button type=\"primary\">Submit</a-button>\n    </a-space-compact>\n    <a-space-compact block>\n      <a-input\n        :style=\"{ width: 'calc(100% - 200px)' }\"\n        default-value=\"git@github.com:ant-design/ant-design.git\"\n      />\n      <a-tooltip title=\"copy git url\">\n        <a-button>\n          <CopyOutlined />\n        </a-button>\n      </a-tooltip>\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select default-value=\"Zhejiang\" allow-clear>\n        <a-select-option value=\"Zhejiang\">Zhejiang</a-select-option>\n        <a-select-option value=\"Jiangsu\">Jiangsu</a-select-option>\n      </a-select>\n      <a-input :style=\"{ width: '50%' }\" default-value=\"Xihu District, Hangzhou\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select allow-clear mode=\"multiple\" default-value=\"Zhejianggggg\" :style=\"{ width: '50%' }\">\n        <a-select-option value=\"Zhejianggggg\">Zhejianggggg</a-select-option>\n        <a-select-option value=\"Jiangsu\">Jiangsu</a-select-option>\n      </a-select>\n      <a-input :style=\"{ width: '50%' }\" default-value=\"Xihu District, Hangzhou\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-input-search :style=\"{ width: '30%' }\" default-value=\"0571\" />\n      <a-input-search allow-clear :style=\"{ width: '50%' }\" default-value=\"26888888\" />\n      <a-input-search :style=\"{ width: '20%' }\" default-value=\"+1\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select default-value=\"Option1\">\n        <a-select-option value=\"Option1\">Option1</a-select-option>\n        <a-select-option value=\"Option2\">Option2</a-select-option>\n      </a-select>\n      <a-input :style=\"{ width: '50%' }\" default-value=\"input content\" />\n      <a-input-number :default-value=\"12\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-input :style=\"{ width: '50%' }\" default-value=\"input content\" />\n      <a-date-picker :style=\"{ width: '50%' }\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-range-picker :style=\"{ width: '70%' }\" />\n      <a-input :style=\"{ width: '30%' }\" default-value=\"input content\" />\n      <a-button type=\"primary\">查询</a-button>\n    </a-space-compact>\n    <a-space-compact block>\n      <a-input :style=\"{ width: '30%' }\" default-value=\"input content\" />\n      <a-range-picker :style=\"{ width: '70%' }\" />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select default-value=\"Option1-1\">\n        <a-select-option value=\"Option1-1\">Option1-1</a-select-option>\n        <a-select-option value=\"Option1-2\">Option1-2</a-select-option>\n      </a-select>\n      <a-select default-value=\"Option2-2\">\n        <a-select-option value=\"Option2-1\">Option2-1</a-select-option>\n        <a-select-option value=\"Option2-2\">Option2-2</a-select-option>\n      </a-select>\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select default-value=\"1\">\n        <a-select-option value=\"1\">Between</a-select-option>\n        <a-select-option value=\"2\">Except</a-select-option>\n      </a-select>\n      <a-input :style=\"{ width: 100, textAlig: 'center' }\" placeholder=\"Minimum\" />\n      <a-input\n        class=\"site-input-split\"\n        :style=\"{\n          width: 30,\n          borderLef: 0,\n          borderRight: 0,\n          pointerEvents: 'none',\n        }\"\n        placeholder=\"~\"\n        disabled\n      />\n      <a-input\n        class=\"site-input-right\"\n        :style=\"{\n          width: 100,\n          textAlig: 'center',\n        }\"\n        placeholder=\"Maximum\"\n      />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-select default-value=\"Sign Up\" :style=\"{ width: '30%' }\">\n        <a-select-option value=\"Sign Up\">Sign Up</a-select-option>\n        <a-select-option value=\"Sign In\">Sign In</a-select-option>\n      </a-select>\n      <a-auto-complete\n        :style=\"{ width: '70%' }\"\n        placeholder=\"Email\"\n        :options=\"[{ value: 'text 1' }, { value: 'text 2' }]\"\n      />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-time-picker :style=\"{ width: '70%' }\" />\n      <a-cascader\n        :style=\"{ width: '70%' }\"\n        :options=\"[\n          {\n            value: 'zhejiang',\n            label: 'Zhejiang',\n            children: [\n              {\n                value: 'hangzhou',\n                label: 'Hangzhou',\n                children: [\n                  {\n                    value: 'xihu',\n                    label: 'West Lake',\n                  },\n                ],\n              },\n            ],\n          },\n          {\n            value: 'jiangsu',\n            label: 'Jiangsu',\n            children: [\n              {\n                value: 'nanjing',\n                label: 'Nanjing',\n                children: [\n                  {\n                    value: 'zhonghuamen',\n                    label: 'Zhong Hua Men',\n                  },\n                ],\n              },\n            ],\n          },\n        ]\"\n        placeholder=\"Select Address\"\n      />\n    </a-space-compact>\n    <a-space-compact block>\n      <a-time-range-picker />\n      <a-tree-select\n        show-search\n        :style=\"{ width: '60%' }\"\n        value=\"leaf1\"\n        :dropdown-style=\"{ maxHeight: 400, overflow: 'auto' }\"\n        placeholder=\"Please select\"\n        allow-clear\n        tree-default-expand-all\n        :tree-data=\"treeData\"\n      ></a-tree-select>\n      <a-button type=\"primary\">Submit</a-button>\n    </a-space-compact>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { CopyOutlined } from '@ant-design/icons-vue';\nimport { TreeSelectProps } from 'ant-design-vue';\n\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    title: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        title: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            title: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            title: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/space/demo/customize.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义尺寸\n  en-US: Customize Size\n---\n\n## zh-CN\n\n自定义间距大小。\n\n## en-US\n\nCustom spacing size.\n</docs>\n\n<template>\n  <div>\n    <a-slider v-model:value=\"size\" />\n    <br />\n    <br />\n    <a-space :size=\"size\">\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button>Default</a-button>\n      <a-button type=\"dashed\">Dashed</a-button>\n      <a-button type=\"link\">Link</a-button>\n    </a-space>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst size = ref(8);\n</script>\n"
  },
  {
    "path": "components/space/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Base />\n    <Customize />\n    <Size />\n    <Vertical />\n    <Align />\n    <Wrap />\n    <Split />\n    <Compact />\n    <CompactButtons />\n    <CompactButtonVertical />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Base from './base.vue';\nimport Customize from './customize.vue';\nimport Vertical from './vertical.vue';\nimport Align from './align.vue';\nimport Wrap from './wrap.vue';\nimport Split from './split.vue';\nimport Compact from './compact.vue';\nimport CompactButtons from './compact-buttons.vue';\nimport CompactButtonVertical from './compact-button-vertical.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nimport Size from './size.vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Base,\n    Customize,\n    Vertical,\n    Align,\n    Wrap,\n    Split,\n    Compact,\n    CompactButtons,\n    CompactButtonVertical,\n    Size,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/space/demo/size.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 间距大小\n  en-US: Space Size\n---\n\n## zh-CN\n\n间距预设大、中、小三种大小。\n通过设置 `size` 为 `large` `middle` 分别把间距设为大、中间距。若不设置 `size`，则间距为小。\n\n\n## en-US\n\n`large`, `middle` and `small` preset sizes.\nSet the size to `large` and `middle` by setting size to large and middle respectively. If `size` is not set, the spacing is `small`.\n\n</docs>\n\n<template>\n  <div>\n    <a-radio-group v-model:value=\"size\">\n      <a-radio value=\"small\">Small</a-radio>\n      <a-radio value=\"middle\">Middle</a-radio>\n      <a-radio value=\"large\">Large</a-radio>\n    </a-radio-group>\n    <br />\n    <br />\n    <a-space :size=\"size\">\n      <a-button type=\"primary\">Primary</a-button>\n      <a-button>Default</a-button>\n      <a-button type=\"dashed\">Dashed</a-button>\n      <a-button type=\"link\">Link</a-button>\n    </a-space>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst size = ref('small' as const);\n</script>\n"
  },
  {
    "path": "components/space/demo/split.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 分隔符\n  en-US: Split\n---\n\n## zh-CN\n\n相邻组件分隔符。\n\n## en-US\n\nCrowded components split.\n\n</docs>\n\n<template>\n  <a-space>\n    <template #split>\n      <a-divider type=\"vertical\" />\n    </template>\n    <a-typography-link>Link</a-typography-link>\n    <a-typography-link>Link</a-typography-link>\n    <a-typography-link>Link</a-typography-link>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/space/demo/vertical.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 垂直间距\n  en-US: Vertical Space\n---\n\n## zh-CN\n\n相邻组件垂直间距。\n可以设置 `width: 100%` 独占一行。\n\n\n## en-US\n\nCrowded components vertical spacing.\nCan set `width: 100%` to fill a row.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-card title=\"Card\" style=\"width: 300px\">\n      <p>Card content</p>\n      <p>Card content</p>\n    </a-card>\n    <a-card title=\"Card\" style=\"width: 300px\">\n      <p>Card content</p>\n      <p>Card content</p>\n    </a-card>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/space/demo/wrap.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 自动换行\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n自动换行。\n\n## en-US\n\nWrap\n\n</docs>\n\n<template>\n  <a-space :size=\"[8, 16]\" wrap>\n    <template v-for=\"_i in 20\" :key=\"_i\">\n      <a-button>Button</a-button>\n    </template>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/space/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Layout\ntitle: Space\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ZiJ3SbOH9SUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*37T2R6O9oi0AAAAAAAAAAAAADrJ8AQ/original\n---\n\nSet components spacing.\n\n## When To Use\n\n- Avoid components clinging together and set a unified space.\n- Use Space.Compact when child form components are compactly connected and the border is collapsed (After version `ant-design-vue@4.0.0` Supported).\n\n## API\n\n### Space\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| align | Align items | `start` \\| `end` \\|`center` \\|`baseline` | - | 1.6.5 |\n| direction | The space direction | `vertical` \\| `horizontal` | `horizontal` | 1.6.5 |\n| size | The space size | `small` \\| `middle` \\| `large` \\| `number` | `small` | 1.6.5 |\n| split | Set split | VueNode \\| v-slot | - | 2.2.0 |\n| wrap | Auto wrap line, when `horizontal` effective | boolean | false | 2.2.0 |\n\n### Space.Compact\n\nUse Space.Compact when child form components are compactly connected and the border is collapsed. The supported components are：\n\n- Button\n- AutoComplete\n- Cascader\n- DatePicker\n- Input/Input.Search\n- Select\n- TimePicker\n- TreeSelect\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| block | Option to fit width to its parent\\'s width | boolean | false | 4.0.0 |\n| direction | Set direction of layout | `vertical` \\| `horizontal` | `horizontal` | 4.0.0 |\n| size | Set child component size | `large` \\| `middle` \\| `small` | `middle` | 4.0.0 |\n"
  },
  {
    "path": "components/space/index.tsx",
    "content": "import type { PropType, ExtractPropTypes, CSSProperties, Plugin, App } from 'vue';\nimport { defineComponent, computed, ref, watch, Fragment } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty } from '../_util/props-util';\nimport type { SizeType } from '../config-provider';\nimport type { CustomSlotsType } from '../_util/type';\nimport { booleanType, tuple } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport classNames from '../_util/classNames';\nimport Compact from './Compact';\n\nimport useStyle from './style';\n\nexport type SpaceSize = SizeType | number;\nconst spaceSize = {\n  small: 8,\n  middle: 16,\n  large: 24,\n};\nexport const spaceProps = () => ({\n  prefixCls: String,\n  size: {\n    type: [String, Number, Array] as PropType<SpaceSize | [SpaceSize, SpaceSize]>,\n  },\n  direction: PropTypes.oneOf(tuple('horizontal', 'vertical')).def('horizontal'),\n  align: PropTypes.oneOf(tuple('start', 'end', 'center', 'baseline')),\n  wrap: booleanType(),\n});\n\nexport type SpaceProps = Partial<ExtractPropTypes<ReturnType<typeof spaceProps>>>;\n\nfunction getNumberSize(size: SpaceSize) {\n  return typeof size === 'string' ? spaceSize[size] : size || 0;\n}\n\nconst Space = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASpace',\n  inheritAttrs: false,\n  props: spaceProps(),\n  slots: Object as CustomSlotsType<{\n    split?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, space, direction: directionConfig } = useConfigInject('space', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const supportFlexGap = useFlexGapSupport();\n    const size = computed(() => props.size ?? space?.value?.size ?? 'small');\n    const horizontalSize = ref<number>();\n    const verticalSize = ref<number>();\n    watch(\n      size,\n      () => {\n        [horizontalSize.value, verticalSize.value] = (\n          (Array.isArray(size.value) ? size.value : [size.value, size.value]) as [\n            SpaceSize,\n            SpaceSize,\n          ]\n        ).map(item => getNumberSize(item));\n      },\n      { immediate: true },\n    );\n\n    const mergedAlign = computed(() =>\n      props.align === undefined && props.direction === 'horizontal' ? 'center' : props.align,\n    );\n    const cn = computed(() => {\n      return classNames(prefixCls.value, hashId.value, `${prefixCls.value}-${props.direction}`, {\n        [`${prefixCls.value}-rtl`]: directionConfig.value === 'rtl',\n        [`${prefixCls.value}-align-${mergedAlign.value}`]: mergedAlign.value,\n      });\n    });\n\n    const marginDirection = computed(() =>\n      directionConfig.value === 'rtl' ? 'marginLeft' : 'marginRight',\n    );\n    const style = computed(() => {\n      const gapStyle: CSSProperties = {};\n      if (supportFlexGap.value) {\n        gapStyle.columnGap = `${horizontalSize.value}px`;\n        gapStyle.rowGap = `${verticalSize.value}px`;\n      }\n      return {\n        ...gapStyle,\n        ...(props.wrap && { flexWrap: 'wrap', marginBottom: `${-verticalSize.value}px` }),\n      } as CSSProperties;\n    });\n    return () => {\n      const { wrap, direction = 'horizontal' } = props;\n      const children = slots.default?.();\n      const items = filterEmpty(children);\n      const len = items.length;\n\n      if (len === 0) {\n        return null;\n      }\n      const split = slots.split?.();\n      const itemClassName = `${prefixCls.value}-item`;\n      const horizontalSizeVal = horizontalSize.value;\n      const latestIndex = len - 1;\n      return (\n        <div\n          {...attrs}\n          class={[cn.value, attrs.class]}\n          style={[style.value, attrs.style as CSSProperties]}\n        >\n          {items.map((child, index) => {\n            let originIndex = children.indexOf(child);\n            if (originIndex === -1) {\n              originIndex = `$$space-${index}`;\n            }\n            let itemStyle: CSSProperties = {};\n            if (!supportFlexGap.value) {\n              if (direction === 'vertical') {\n                if (index < latestIndex) {\n                  itemStyle = { marginBottom: `${horizontalSizeVal / (split ? 2 : 1)}px` };\n                }\n              } else {\n                itemStyle = {\n                  ...(index < latestIndex && {\n                    [marginDirection.value]: `${horizontalSizeVal / (split ? 2 : 1)}px`,\n                  }),\n                  ...(wrap && { paddingBottom: `${verticalSize.value}px` }),\n                };\n              }\n            }\n\n            return wrapSSR(\n              <Fragment key={originIndex}>\n                <div class={itemClassName} style={itemStyle}>\n                  {child}\n                </div>\n                {index < latestIndex && split && (\n                  <span class={`${itemClassName}-split`} style={itemStyle}>\n                    {split}\n                  </span>\n                )}\n              </Fragment>,\n            );\n          })}\n        </div>\n      );\n    };\n  },\n});\n\nSpace.Compact = Compact;\n\nSpace.install = function (app: App) {\n  app.component(Space.name, Space);\n  app.component(Compact.name, Compact);\n  return app;\n};\n\nexport { Compact };\n\nexport default Space as typeof Space &\n  Plugin & {\n    readonly Compact: typeof Compact;\n  };\n"
  },
  {
    "path": "components/space/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 布局\nsubtitle: 间距\ntitle: Space\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*ZiJ3SbOH9SUAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*37T2R6O9oi0AAAAAAAAAAAAADrJ8AQ/original\n---\n\n设置组件之间的间距。\n\n## 何时使用\n\n避免组件紧贴在一起，拉开统一的空间。\n\n- 适合行内元素的水平间距。\n- 可以设置各种水平对齐方式。\n- 需要表单组件之间紧凑连接且合并边框时，使用 Space.Compact（自 `ant-design-vue@4.0.0` 版本开始提供该组件）。\n\n## API\n\n### Space\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| align | 对齐方式 | `start` \\| `end` \\|`center` \\|`baseline` | - | 1.6.5 |\n| direction | 间距方向 | `vertical` \\| `horizontal` | `horizontal` | 1.6.5 |\n| size | 间距大小 | `small` \\| `middle` \\| `large` \\| `number` | `small` | 1.6.5 |\n| split | 设置拆分 | VueNode \\| v-slot | - | 2.2.0 |\n| wrap | 是否自动换行，仅在 `horizontal` 时有效 | boolean | false | 2.2.0 |\n\n### Space.Compact\n\n> 自 ant-design-vue@4.0.0 版本开始提供该组件。\n\n需要表单组件之间紧凑连接且合并边框时，使用 Space.Compact。支持的组件有：\n\n- Button\n- AutoComplete\n- Cascader\n- DatePicker\n- Input/Input.Search\n- Select\n- TimePicker\n- TreeSelect\n\n| 参数      | 说明                         | 类型                           | 默认值       | 版本  |\n| --------- | ---------------------------- | ------------------------------ | ------------ | ----- |\n| block     | 将宽度调整为父元素宽度的选项 | boolean                        | false        | 4.0.0 |\n| direction | 指定排列方向                 | `vertical` \\| `horizontal`     | `horizontal` | 4.0.0 |\n| size      | 子组件大小                   | `large` \\| `middle` \\| `small` | `middle`     | 4.0.0 |\n"
  },
  {
    "path": "components/space/style/compact.tsx",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  // Component token here\n}\n\ninterface SpaceToken extends FullToken<'Space'> {\n  // Custom token here\n}\n\nconst genSpaceCompactStyle: GenerateStyle<SpaceToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      display: 'inline-flex',\n      '&-block': {\n        display: 'flex',\n        width: '100%',\n      },\n      '&-vertical': {\n        flexDirection: 'column',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genSpaceCompactStyle;\n"
  },
  {
    "path": "components/space/style/index.tsx",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\nimport genSpaceCompactStyle from './compact';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  // Component token here\n}\n\ninterface SpaceToken extends FullToken<'Space'> {\n  // Custom token here\n}\n\nconst genSpaceStyle: GenerateStyle<SpaceToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      display: 'inline-flex',\n      '&-rtl': {\n        direction: 'rtl',\n      },\n      '&-vertical': {\n        flexDirection: 'column',\n      },\n      '&-align': {\n        flexDirection: 'column',\n        '&-center': {\n          alignItems: 'center',\n        },\n        '&-start': {\n          alignItems: 'flex-start',\n        },\n        '&-end': {\n          alignItems: 'flex-end',\n        },\n        '&-baseline': {\n          alignItems: 'baseline',\n        },\n      },\n      [`${componentCls}-item`]: {\n        '&:empty': {\n          display: 'none',\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Space', token => [\n  genSpaceStyle(token),\n  genSpaceCompactStyle(token),\n]);\n"
  },
  {
    "path": "components/spin/Spin.tsx",
    "content": "import type { VNode, ExtractPropTypes, PropType } from 'vue';\nimport { onBeforeUnmount, cloneVNode, isVNode, defineComponent, shallowRef, watch } from 'vue';\nimport { debounce } from 'throttle-debounce';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty, getPropsSlot } from '../_util/props-util';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport useStyle from './style';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nexport type SpinSize = 'small' | 'default' | 'large';\nexport const spinProps = () => ({\n  prefixCls: String,\n  spinning: { type: Boolean, default: undefined },\n  size: String as PropType<SpinSize>,\n  wrapperClassName: String,\n  tip: PropTypes.any,\n  delay: Number,\n  indicator: PropTypes.any,\n});\n\nexport type SpinProps = Partial<ExtractPropTypes<ReturnType<typeof spinProps>>>;\n\n// Render indicator\nlet defaultIndicator: () => VNode = null;\n\nfunction shouldDelay(spinning?: boolean, delay?: number): boolean {\n  return !!spinning && !!delay && !isNaN(Number(delay));\n}\n\nexport function setDefaultIndicator(Content: any) {\n  const Indicator = Content.indicator;\n  defaultIndicator = typeof Indicator === 'function' ? Indicator : () => <Indicator />;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASpin',\n  inheritAttrs: false,\n  props: initDefaultProps(spinProps(), {\n    size: 'default',\n    spinning: true,\n    wrapperClassName: '',\n  }),\n  setup(props, { attrs, slots }) {\n    const { prefixCls, size, direction } = useConfigInject('spin', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const sSpinning = shallowRef(props.spinning && !shouldDelay(props.spinning, props.delay));\n    let updateSpinning: any;\n    watch(\n      [() => props.spinning, () => props.delay],\n      () => {\n        updateSpinning?.cancel();\n        updateSpinning = debounce(props.delay, () => {\n          sSpinning.value = props.spinning;\n        });\n        updateSpinning?.();\n      },\n      {\n        immediate: true,\n        flush: 'post',\n      },\n    );\n    onBeforeUnmount(() => {\n      updateSpinning?.cancel();\n    });\n    return () => {\n      const { class: cls, ...divProps } = attrs;\n      const { tip = slots.tip?.() } = props;\n      const children = slots.default?.();\n      const spinClassName = {\n        [hashId.value]: true,\n        [prefixCls.value]: true,\n        [`${prefixCls.value}-sm`]: size.value === 'small',\n        [`${prefixCls.value}-lg`]: size.value === 'large',\n        [`${prefixCls.value}-spinning`]: sSpinning.value,\n        [`${prefixCls.value}-show-text`]: !!tip,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [cls as string]: !!cls,\n      };\n\n      function renderIndicator(prefixCls: string) {\n        const dotClassName = `${prefixCls}-dot`;\n        let indicator = getPropsSlot(slots, props, 'indicator');\n        // should not be render default indicator when indicator value is null\n        if (indicator === null) {\n          return null;\n        }\n        if (Array.isArray(indicator)) {\n          indicator = indicator.length === 1 ? indicator[0] : indicator;\n        }\n        if (isVNode(indicator)) {\n          return cloneVNode(indicator, { class: dotClassName });\n        }\n\n        if (defaultIndicator && isVNode(defaultIndicator())) {\n          return cloneVNode(defaultIndicator(), { class: dotClassName });\n        }\n\n        return (\n          <span class={`${dotClassName} ${prefixCls}-dot-spin`}>\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n            <i class={`${prefixCls}-dot-item`} />\n          </span>\n        );\n      }\n      const spinElement = (\n        <div {...divProps} class={spinClassName} aria-live=\"polite\" aria-busy={sSpinning.value}>\n          {renderIndicator(prefixCls.value)}\n          {tip ? <div class={`${prefixCls.value}-text`}>{tip}</div> : null}\n        </div>\n      );\n      if (children && filterEmpty(children).length) {\n        const containerClassName = {\n          [`${prefixCls.value}-container`]: true,\n          [`${prefixCls.value}-blur`]: sSpinning.value,\n        };\n        return wrapSSR(\n          <div class={[`${prefixCls.value}-nested-loading`, props.wrapperClassName, hashId.value]}>\n            {sSpinning.value && <div key=\"loading\">{spinElement}</div>}\n            <div class={containerClassName} key=\"container\">\n              {children}\n            </div>\n          </div>,\n        );\n      }\n      return wrapSSR(spinElement);\n    };\n  },\n});\n"
  },
  {
    "path": "components/spin/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/spin/demo/basic.vue correctly 1`] = `\n<div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/spin/demo/custom-indicator.vue correctly 1`] = `\n<div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span role=\"img\" aria-label=\"loading\" style=\"font-size: 24px;\" class=\"anticon anticon-loading ant-spin-dot\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/spin/demo/delay.vue correctly 1`] = `\n<div class=\"ant-spin-nested-loading\">\n  <!---->\n  <div class=\"ant-spin-container\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Alert message title</div>\n        <div class=\"ant-alert-description\">Further details about the context of this alert.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div>\n<div class=\"spin-state\"> Loading state： <button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button></div>\n`;\n\nexports[`renders ./components/spin/demo/inside.vue correctly 1`] = `\n<div class=\"example\">\n  <div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/spin/demo/nested.vue correctly 1`] = `\n<div class=\"ant-spin-nested-loading\">\n  <!---->\n  <div class=\"ant-spin-container\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Alert message title</div>\n        <div class=\"ant-alert-description\">Further details about the context of this alert.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div>\n<div class=\"spin-state\"> Loading state： <button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n  </button></div>\n`;\n\nexports[`renders ./components/spin/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-spin ant-spin-sm ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-spin ant-spin-lg ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/spin/demo/tip.vue correctly 1`] = `\n<div class=\"ant-spin-nested-loading\">\n  <div>\n    <div class=\"ant-spin ant-spin-spinning ant-spin-show-text\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n      <div class=\"ant-spin-text\">Loading...</div>\n    </div>\n  </div>\n  <div class=\"ant-spin-container ant-spin-blur\">\n    <div role=\"alert\" class=\"ant-alert ant-alert-info ant-alert-with-description ant-alert-no-icon\" data-show=\"true\">\n      <!---->\n      <div class=\"ant-alert-content\">\n        <div class=\"ant-alert-message\">Alert message title</div>\n        <div class=\"ant-alert-description\">Further details about the context of this alert.</div>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/spin/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Spin should only affect the spin element when set style to a nested <Spin>xx</Spin> 1`] = `\n<div class=\"ant-spin-nested-loading\">\n  <div>\n    <div style=\"background: red;\" class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-spin-container ant-spin-blur\">\n    <div>content</div>\n  </div>\n</div>\n`;\n\nexports[`Spin should render custom indicator when it's set 1`] = `\n<div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\">\n  <div class=\"custom-indicator ant-spin-dot\"></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/spin/__tests__/delay.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Spin from '..';\n\ndescribe('delay spinning', () => {\n  it(\"should render with delay when it's mounted with spinning=true and delay\", async () => {\n    const props = {\n      props: {\n        delay: 500,\n        spinning: true,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Spin, props);\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-spin').classes().includes('ant-spin-spinning')).toEqual(false);\n    });\n  });\n\n  it('should render when delay is init set', async () => {\n    const props = {\n      props: {\n        delay: 100,\n        spinning: true,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Spin, props);\n\n    expect(wrapper.findAll('.ant-spin')[0].classes().includes('ant-spin-spinning')).toEqual(false);\n\n    // use await not jest.runAllTimers()\n    // because of https://github.com/facebook/jest/issues/3465\n    await new Promise(resolve => setTimeout(resolve, 500));\n\n    expect(wrapper.findAll('.ant-spin')[0].classes().includes('ant-spin-spinning')).toEqual(true);\n  });\n\n  it('should cancel debounce function when unmount', async () => {\n    const props = {\n      props: {\n        delay: 100,\n        spinning: true,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Spin, props);\n    const spy = jest.spyOn(wrapper.vm.updateSpinning, 'cancel');\n    expect(wrapper.vm.updateSpinning.cancel).toEqual(expect.any(Function));\n    expect(spy).not.toHaveBeenCalled();\n  });\n});\n"
  },
  {
    "path": "components/spin/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('spin');\n"
  },
  {
    "path": "components/spin/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Spin from '..';\n\ndescribe('Spin', () => {\n  it('should only affect the spin element when set style to a nested <Spin>xx</Spin>', () => {\n    const wrapper = mount({\n      render() {\n        return (\n          <Spin style={{ background: 'red' }}>\n            <div>content</div>\n          </Spin>\n        );\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n    // expect(wrapper.findAll('.ant-spin-nested-loading').at(0).prop('style')).toBe(null)\n    // expect(wrapper.findAll('.ant-spin').at(0).prop('style').background).toBe('red')\n  });\n\n  it(\"should render custom indicator when it's set\", () => {\n    // const customIndicator = <div className='custom-indicator' />\n    const wrapper = mount({\n      render() {\n        return <Spin indicator={<div class=\"custom-indicator\" />}></Spin>;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should be controlled by spinning', async () => {\n    const props = {\n      props: {\n        spinning: false,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Spin, props);\n    await asyncExpect(() => {\n      expect(wrapper.vm.spinning).toBe(false);\n      wrapper.setProps({ spinning: true });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.vm.spinning).toBe(true);\n    });\n  });\n});\n"
  },
  {
    "path": "components/spin/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n一个简单的 loading 状态。\n\n## en-US\n\nA simple loading status.\n\n</docs>\n\n<template>\n  <a-spin />\n</template>\n"
  },
  {
    "path": "components/spin/demo/custom-indicator.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 自定义指示符\n  en-US: Custom spinning indicator\n---\n\n## zh-CN\n\n使用自定义指示符。\n\n## en-US\n\nUse custom loading indicator.\n\n</docs>\n\n<template>\n  <a-spin :indicator=\"indicator\" />\n</template>\n<script lang=\"ts\" setup>\nimport { LoadingOutlined } from '@ant-design/icons-vue';\nimport { h } from 'vue';\nconst indicator = h(LoadingOutlined, {\n  style: {\n    fontSize: '24px',\n  },\n  spin: true,\n});\n</script>\n"
  },
  {
    "path": "components/spin/demo/delay.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 延迟\n  en-US: delay\n---\n\n## zh-CN\n\n延迟显示 loading 效果。当 spinning 状态在 `delay` 时间内结束，则不显示 loading 状态。\n\n## en-US\n\nSpecifies a delay for loading state. If `spinning` ends during delay, loading status won't appear.\n\n</docs>\n\n<template>\n  <a-spin :spinning=\"spinning\" :delay=\"delayTime\">\n    <a-alert\n      message=\"Alert message title\"\n      description=\"Further details about the context of this alert.\"\n    ></a-alert>\n  </a-spin>\n  <div class=\"spin-state\">\n    Loading state：\n    <a-switch v-model:checked=\"spinning\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst spinning = ref<boolean>(false);\nconst delayTime = 500;\n</script>\n<style scoped>\n.spin-state {\n  margin-top: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/spin/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <size />\n    <inside />\n    <nested />\n    <tip />\n    <delay />\n    <custom-indicator />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Size from './size.vue';\nimport Inside from './inside.vue';\nimport Nested from './nested.vue';\nimport Tip from './tip.vue';\nimport Delay from './delay.vue';\nimport CustomIndicator from './custom-indicator.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Size,\n    Inside,\n    Nested,\n    Tip,\n    Delay,\n    CustomIndicator,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/spin/demo/inside.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 容器\n  en-US: Inside a container\n---\n\n## zh-CN\n\n放入一个容器中。\n\n## en-US\n\nSpin in a container.\n\n</docs>\n\n<template>\n  <div class=\"example\">\n    <a-spin />\n  </div>\n</template>\n<style scoped>\n.example {\n  text-align: center;\n  background: rgba(0, 0, 0, 0.05);\n  border-radius: 4px;\n  margin-bottom: 20px;\n  padding: 30px 50px;\n  margin: 20px 0;\n}\n</style>\n"
  },
  {
    "path": "components/spin/demo/nested.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 卡片加载中\n  en-US: Embedded mode\n---\n\n## zh-CN\n\n可以直接把内容内嵌到 `Spin` 中，将现有容器变为加载状态。\n\n## en-US\n\nEmbedding content into `Spin` will alter it into loading state.\n\n</docs>\n\n<template>\n  <a-spin :spinning=\"spinning\">\n    <a-alert\n      message=\"Alert message title\"\n      description=\"Further details about the context of this alert.\"\n    ></a-alert>\n  </a-spin>\n  <div class=\"spin-state\">\n    Loading state：\n    <a-switch v-model:checked=\"spinning\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst spinning = ref<boolean>(false);\n</script>\n<style scoped>\n.spin-state {\n  margin-top: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/spin/demo/size.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 各种大小\n  en-US: Size\n---\n\n## zh-CN\n\n小的用于文本加载，默认用于卡片容器级加载，大的用于**页面级**加载。\n\n## en-US\n\nA small `Spin` use in loading text, default `Spin` use in loading card-level block, and large `Spin` use in loading **page**.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-spin size=\"small\" />\n    <a-spin />\n    <a-spin size=\"large\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/spin/demo/tip.vue",
    "content": "<docs>\n---\norder: 4 \ntitle: \n  zh-CN: 自定义描述文案 \n  en-US: Customized description\n---\n\n## zh-CN\n\n自定义描述文案。\n\n## en-US\n\nCustomized description content.\n\n</docs>\n\n<template>\n  <a-spin tip=\"Loading...\">\n    <a-alert\n      message=\"Alert message title\"\n      description=\"Further details about the context of this alert.\"\n    ></a-alert>\n  </a-spin>\n</template>\n"
  },
  {
    "path": "components/spin/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Feedback\ntitle: Spin\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5mC5TomY4B0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*i43_ToFrL8YAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA spinner for displaying loading state of a page or a section.\n\n## When To Use\n\nWhen part of the page is waiting for asynchronous data or during a rendering process, an appropriate loading animation can effectively alleviate users' inquietude.\n\n## API\n\n| Property | Description | Type | Default Value | Version |\n| --- | --- | --- | --- | --- |\n| delay | specifies a delay in milliseconds for loading state (prevent flush) | number (milliseconds) | - |  |\n| indicator | vue node of the spinning indicator | vNode \\|slot | - |  |\n| size | size of Spin, options: `small`, `default` and `large` | string | `default` |  |\n| spinning | whether Spin is visible | boolean | true |  |\n| tip | customize description content when Spin has children | string \\| slot | - | slot 3.0 |\n| wrapperClassName | className of wrapper when Spin has children | string | - |  |\n\n### Static Method\n\n- `Spin.setDefaultIndicator({indicator})` As `indicator`, you can define the global default spin element\n\n```jsx\nimport { h } from 'vue';\nSpin.setDefaultIndicator({\n  indicator: h('i', { class: 'anticon anticon-loading anticon-spin ant-spin-dot' }),\n});\n```\n"
  },
  {
    "path": "components/spin/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Spin, { setDefaultIndicator } from './Spin';\n\nexport type { SpinProps } from './Spin';\nexport { spinProps } from './Spin';\n\nSpin.setDefaultIndicator = setDefaultIndicator;\n\n/* istanbul ignore next */\nSpin.install = function (app: App) {\n  app.component(Spin.name, Spin);\n  return app;\n};\n\nexport default Spin as typeof Spin &\n  Plugin & {\n    readonly setDefaultIndicator: typeof setDefaultIndicator;\n  };\n"
  },
  {
    "path": "components/spin/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 反馈\ntitle: Spin\nsubtitle: 加载中\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*5mC5TomY4B0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*i43_ToFrL8YAAAAAAAAAAAAADrJ8AQ/original\n---\n\n用于页面和区块的加载中状态。\n\n## 何时使用\n\n页面局部处于等待异步数据或正在渲染过程时，合适的加载动效会有效缓解用户的焦虑。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| delay | 延迟显示加载效果的时间（防止闪烁） | number (毫秒) | - |  |\n| indicator | 加载指示符 | vNode \\| slot | - |  |\n| size | 组件大小，可选值为 `small` `default` `large` | string | `default` |  |\n| spinning | 是否为加载中状态 | boolean | true |  |\n| tip | 当作为包裹元素时，可以自定义描述文案 | string \\| slot | - | slot 3.0 |\n| wrapperClassName | 包装器的类属性 | string | - |  |\n\n### 静态方法\n\n- `Spin.setDefaultIndicator({indicator})` 同上 `indicator`，你可以自定义全局默认元素\n\n  ```jsx\n  import { h } from 'vue';\n  Spin.setDefaultIndicator({\n    indicator: h('i', { class: 'anticon anticon-loading anticon-spin ant-spin-dot' }),\n  });\n  ```\n"
  },
  {
    "path": "components/spin/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {\n  contentHeight: number;\n}\n\ninterface SpinToken extends FullToken<'Spin'> {\n  spinDotDefault: string;\n  spinDotSize: number;\n  spinDotSizeSM: number;\n  spinDotSizeLG: number;\n}\n\nconst antSpinMove = new Keyframes('antSpinMove', {\n  to: { opacity: 1 },\n});\n\nconst antRotate = new Keyframes('antRotate', {\n  to: { transform: 'rotate(405deg)' },\n});\n\nconst genSpinStyle: GenerateStyle<SpinToken> = (token: SpinToken): CSSObject => ({\n  [`${token.componentCls}`]: {\n    ...resetComponent(token),\n    position: 'absolute',\n    display: 'none',\n    color: token.colorPrimary,\n    textAlign: 'center',\n    verticalAlign: 'middle',\n    opacity: 0,\n    transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,\n\n    '&-spinning': {\n      position: 'static',\n      display: 'inline-block',\n      opacity: 1,\n    },\n\n    '&-nested-loading': {\n      position: 'relative',\n      [`> div > ${token.componentCls}`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineStart: 0,\n        zIndex: 4,\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        maxHeight: token.contentHeight,\n\n        [`${token.componentCls}-dot`]: {\n          position: 'absolute',\n          top: '50%',\n          insetInlineStart: '50%',\n          margin: -token.spinDotSize / 2,\n        },\n\n        [`${token.componentCls}-text`]: {\n          position: 'absolute',\n          top: '50%',\n          width: '100%',\n          paddingTop: (token.spinDotSize - token.fontSize) / 2 + 2,\n          textShadow: `0 1px 2px ${token.colorBgContainer}`, // FIXME: shadow\n        },\n\n        [`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {\n          marginTop: -(token.spinDotSize / 2) - 10,\n        },\n\n        '&-sm': {\n          [`${token.componentCls}-dot`]: {\n            margin: -token.spinDotSizeSM / 2,\n          },\n          [`${token.componentCls}-text`]: {\n            paddingTop: (token.spinDotSizeSM - token.fontSize) / 2 + 2,\n          },\n          [`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {\n            marginTop: -(token.spinDotSizeSM / 2) - 10,\n          },\n        },\n\n        '&-lg': {\n          [`${token.componentCls}-dot`]: {\n            margin: -(token.spinDotSizeLG / 2),\n          },\n          [`${token.componentCls}-text`]: {\n            paddingTop: (token.spinDotSizeLG - token.fontSize) / 2 + 2,\n          },\n          [`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {\n            marginTop: -(token.spinDotSizeLG / 2) - 10,\n          },\n        },\n      },\n\n      [`${token.componentCls}-container`]: {\n        position: 'relative',\n        transition: `opacity ${token.motionDurationSlow}`,\n\n        '&::after': {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          zIndex: 10,\n          width: '100%',\n          height: '100%',\n          background: token.colorBgContainer,\n          opacity: 0,\n          transition: `all ${token.motionDurationSlow}`,\n          content: '\"\"',\n          pointerEvents: 'none',\n        },\n      },\n\n      [`${token.componentCls}-blur`]: {\n        clear: 'both',\n        opacity: 0.5,\n        userSelect: 'none',\n        pointerEvents: 'none',\n\n        [`&::after`]: {\n          opacity: 0.4,\n          pointerEvents: 'auto',\n        },\n      },\n    },\n\n    // tip\n    // ------------------------------\n    [`&-tip`]: {\n      color: token.spinDotDefault,\n    },\n\n    // dots\n    // ------------------------------\n    [`${token.componentCls}-dot`]: {\n      position: 'relative',\n      display: 'inline-block',\n      fontSize: token.spinDotSize,\n      width: '1em',\n      height: '1em',\n\n      '&-item': {\n        position: 'absolute',\n        display: 'block',\n        width: (token.spinDotSize - token.marginXXS / 2) / 2,\n        height: (token.spinDotSize - token.marginXXS / 2) / 2,\n        backgroundColor: token.colorPrimary,\n        borderRadius: '100%',\n        transform: 'scale(0.75)',\n        transformOrigin: '50% 50%',\n        opacity: 0.3,\n        animationName: antSpinMove,\n        animationDuration: '1s',\n        animationIterationCount: 'infinite',\n        animationTimingFunction: 'linear',\n        animationDirection: 'alternate',\n\n        '&:nth-child(1)': {\n          top: 0,\n          insetInlineStart: 0,\n        },\n\n        '&:nth-child(2)': {\n          top: 0,\n          insetInlineEnd: 0,\n          animationDelay: '0.4s',\n        },\n\n        '&:nth-child(3)': {\n          insetInlineEnd: 0,\n          bottom: 0,\n          animationDelay: '0.8s',\n        },\n\n        '&:nth-child(4)': {\n          bottom: 0,\n          insetInlineStart: 0,\n          animationDelay: '1.2s',\n        },\n      },\n\n      '&-spin': {\n        transform: 'rotate(45deg)',\n        animationName: antRotate,\n        animationDuration: '1.2s',\n        animationIterationCount: 'infinite',\n        animationTimingFunction: 'linear',\n      },\n    },\n\n    // Sizes\n    // ------------------------------\n\n    // small\n    [`&-sm ${token.componentCls}-dot`]: {\n      fontSize: token.spinDotSizeSM,\n\n      i: {\n        width: (token.spinDotSizeSM - token.marginXXS / 2) / 2,\n        height: (token.spinDotSizeSM - token.marginXXS / 2) / 2,\n      },\n    },\n\n    // large\n    [`&-lg ${token.componentCls}-dot`]: {\n      fontSize: token.spinDotSizeLG,\n\n      i: {\n        width: (token.spinDotSizeLG - token.marginXXS) / 2,\n        height: (token.spinDotSizeLG - token.marginXXS) / 2,\n      },\n    },\n\n    [`&${token.componentCls}-show-text ${token.componentCls}-text`]: {\n      display: 'block',\n    },\n  },\n});\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Spin',\n  token => {\n    const spinToken = mergeToken<SpinToken>(token, {\n      spinDotDefault: token.colorTextDescription,\n      spinDotSize: token.controlHeightLG / 2,\n      spinDotSizeSM: token.controlHeightLG * 0.35,\n      spinDotSizeLG: token.controlHeight,\n    });\n    return [genSpinStyle(spinToken)];\n  },\n  {\n    contentHeight: 400,\n  },\n);\n"
  },
  {
    "path": "components/statistic/Countdown.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, onBeforeUnmount, onMounted, onUpdated, ref } from 'vue';\nimport omit from '../_util/omit';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport { someType } from '../_util/type';\nimport Statistic, { statisticProps } from './Statistic';\nimport type { countdownValueType, FormatConfig, valueType } from './utils';\nimport { formatCountdown as formatCD } from './utils';\n\nconst REFRESH_INTERVAL = 1000 / 30;\n\nfunction getTime(value?: countdownValueType) {\n  return new Date(value as any).getTime();\n}\nexport const countdownProps = () => {\n  return {\n    ...statisticProps(),\n    value: someType<countdownValueType>([Number, String, Object]),\n    format: String,\n    onFinish: Function as PropType<() => void>,\n    onChange: Function as PropType<(value?: countdownValueType) => void>,\n  };\n};\n\nexport type CountdownProps = Partial<ExtractPropTypes<ReturnType<typeof countdownProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AStatisticCountdown',\n  props: initDefaultProps(countdownProps(), {\n    format: 'HH:mm:ss',\n  }),\n  // emits: ['finish', 'change'],\n  setup(props, { emit, slots }) {\n    const countdownId = ref<any>();\n    const statistic = ref();\n    const syncTimer = () => {\n      const { value } = props;\n      const timestamp = getTime(value);\n      if (timestamp >= Date.now()) {\n        startTimer();\n      } else {\n        stopTimer();\n      }\n    };\n\n    const startTimer = () => {\n      if (countdownId.value) return;\n      const timestamp = getTime(props.value);\n      countdownId.value = setInterval(() => {\n        statistic.value.$forceUpdate();\n        if (timestamp > Date.now()) {\n          emit('change', timestamp - Date.now());\n        }\n        syncTimer();\n      }, REFRESH_INTERVAL);\n    };\n\n    const stopTimer = () => {\n      const { value } = props;\n      if (countdownId.value) {\n        clearInterval(countdownId.value);\n        countdownId.value = undefined;\n\n        const timestamp = getTime(value);\n        if (timestamp < Date.now()) {\n          emit('finish');\n        }\n      }\n    };\n\n    const formatCountdown = ({ value, config }: { value: valueType; config: FormatConfig }) => {\n      const { format } = props;\n      return formatCD(value, { ...config, format });\n    };\n\n    const valueRenderHtml = (node: any) => node;\n    onMounted(() => {\n      syncTimer();\n    });\n    onUpdated(() => {\n      syncTimer();\n    });\n    onBeforeUnmount(() => {\n      stopTimer();\n    });\n    return () => {\n      const value = props.value as valueType;\n      return (\n        <Statistic\n          ref={statistic}\n          {...{\n            ...omit(props, ['onFinish', 'onChange']),\n            value,\n            valueRender: valueRenderHtml,\n            formatter: formatCountdown,\n          }}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/statistic/Number.tsx",
    "content": "import type { FunctionalComponent, VNodeTypes } from 'vue';\nimport type { FormatConfig, valueType } from './utils';\n\ninterface NumberProps extends FormatConfig {\n  value: valueType;\n}\n\nconst StatisticNumber: FunctionalComponent<NumberProps> = props => {\n  const { value, formatter, precision, decimalSeparator, groupSeparator = '', prefixCls } = props;\n  let valueNode: VNodeTypes;\n\n  if (typeof formatter === 'function') {\n    // Customize formatter\n    valueNode = formatter({ value });\n  } else {\n    // Internal formatter\n    const val = String(value);\n    const cells = val.match(/^(-?)(\\d*)(\\.(\\d+))?$/);\n    // Process if illegal number\n    if (!cells) {\n      valueNode = val;\n    } else {\n      const negative = cells[1];\n      let int = cells[2] || '0';\n      let decimal = cells[4] || '';\n\n      int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator);\n      if (typeof precision === 'number') {\n        decimal = decimal.padEnd(precision, '0').slice(0, precision > 0 ? precision : 0);\n      }\n\n      if (decimal) {\n        decimal = `${decimalSeparator}${decimal}`;\n      }\n\n      valueNode = [\n        <span key=\"int\" class={`${prefixCls}-content-value-int`}>\n          {negative}\n          {int}\n        </span>,\n        decimal && (\n          <span key=\"decimal\" class={`${prefixCls}-content-value-decimal`}>\n            {decimal}\n          </span>\n        ),\n      ];\n    }\n  }\n\n  return <span class={`${prefixCls}-content-value`}>{valueNode}</span>;\n};\nStatisticNumber.displayName = 'StatisticNumber';\nexport default StatisticNumber;\n"
  },
  {
    "path": "components/statistic/Statistic.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport StatisticNumber from './Number';\nimport type { valueType, Formatter } from './utils';\nimport Skeleton from '../skeleton/Skeleton';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\n// CSSINJS\nimport useStyle from './style';\nimport { anyType, booleanType, functionType, someType, vNodeType } from '../_util/type';\nimport type { CustomSlotsType, VueNode } from '../_util/type';\n\nexport const statisticProps = () => ({\n  prefixCls: String,\n  decimalSeparator: String,\n  groupSeparator: String,\n  format: String,\n  value: someType<valueType>([Number, String, Object]),\n  valueStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  valueRender: functionType<(node: VueNode) => VueNode>(),\n  formatter: anyType<Formatter>(),\n  precision: Number,\n  prefix: vNodeType(),\n  suffix: vNodeType(),\n  title: vNodeType(),\n  loading: booleanType(),\n});\n\nexport type StatisticProps = Partial<ExtractPropTypes<ReturnType<typeof statisticProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AStatistic',\n  inheritAttrs: false,\n  props: initDefaultProps(statisticProps(), {\n    decimalSeparator: '.',\n    groupSeparator: ',',\n    loading: false,\n  }),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    prefix?: any;\n    suffix?: any;\n    formatter?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('statistic', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const { value = 0, valueStyle, valueRender } = props;\n      const pre = prefixCls.value;\n      const title = props.title ?? slots.title?.();\n      const prefix = props.prefix ?? slots.prefix?.();\n      const suffix = props.suffix ?? slots.suffix?.();\n      const formatter = props.formatter ?? (slots.formatter as unknown as Formatter);\n      // data-for-update just for update component\n      // https://github.com/vueComponent/ant-design-vue/pull/3170\n      let valueNode: VueNode = (\n        <StatisticNumber\n          data-for-update={Date.now()}\n          {...{ ...props, prefixCls: pre, value, formatter }}\n        />\n      );\n      if (valueRender) {\n        valueNode = valueRender(valueNode);\n      }\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[pre, { [`${pre}-rtl`]: direction.value === 'rtl' }, attrs.class, hashId.value]}\n        >\n          {title && <div class={`${pre}-title`}>{title}</div>}\n          <Skeleton paragraph={false} loading={props.loading}>\n            <div style={valueStyle} class={`${pre}-content`}>\n              {prefix && <span class={`${pre}-content-prefix`}>{prefix}</span>}\n              {valueNode}\n              {suffix && <span class={`${pre}-content-suffix`}>{suffix}</span>}\n            </div>\n          </Skeleton>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/statistic/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/statistic/demo/basic.vue correctly 1`] = `\n<div class=\"ant-row\">\n  <div class=\"ant-col ant-col-12\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Active Users</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">112,893</span></span>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-col ant-col-12\">\n    <div class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Account Balance (CNY)</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">112,893</span><span class=\"ant-statistic-content-value-decimal\">.00</span></span>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/statistic/demo/card.vue correctly 1`] = `\n<div style=\"background: rgb(236, 236, 236); padding: 30px;\">\n  <div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n    <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n      <div class=\"ant-card  ant-card-bordered\">\n        <!---->\n        <!---->\n        <div class=\"ant-card-body\">\n          <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n            <div class=\"ant-statistic-title\">Feedback</div>\n            <div style=\"color: rgb(63, 134, 0);\" class=\"ant-statistic-content\"><span class=\"ant-statistic-content-prefix\"><span role=\"img\" aria-label=\"arrow-up\" class=\"anticon anticon-arrow-up\"><svg focusable=\"false\" class=\"\" data-icon=\"arrow-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M868 545.5L536.1 163a31.96 31.96 0 00-48.3 0L156 545.5a7.97 7.97 0 006 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z\"></path></svg></span></span><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">11</span><span class=\"ant-statistic-content-value-decimal\">.28</span></span><span class=\"ant-statistic-content-suffix\">%</span></div>\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n    <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n      <div class=\"ant-card  ant-card-bordered\">\n        <!---->\n        <!---->\n        <div class=\"ant-card-body\">\n          <div class=\"ant-statistic demo-class\">\n            <div class=\"ant-statistic-title\">Idle</div>\n            <div style=\"color: rgb(207, 19, 34);\" class=\"ant-statistic-content\"><span class=\"ant-statistic-content-prefix\"><span role=\"img\" aria-label=\"arrow-down\" class=\"anticon anticon-arrow-down\"><svg focusable=\"false\" class=\"\" data-icon=\"arrow-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0048.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z\"></path></svg></span></span><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">9</span><span class=\"ant-statistic-content-value-decimal\">.30</span></span><span class=\"ant-statistic-content-suffix\">%</span></div>\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/statistic/demo/countdown.vue correctly 1`] = `\n<div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Countdown</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\">48:00:30</span>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Million Seconds</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\">48:00:30:000</span>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div style=\"padding-left: 8px; padding-right: 8px; margin-top: 32px;\" class=\"ant-col ant-col-24\">\n    <div class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Day Level</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\">2 天 0 时 0 分 30 秒</span>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/statistic/demo/countdown-slot.vue correctly 1`] = `\n<div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\"><span>Countdown</span>\n        <!----><span role=\"img\" aria-label=\"question-circle\" style=\"margin-left: 5px;\" tabindex=\"-1\" class=\"anticon anticon-question-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"question-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" fill=\"#1890ff\"></path><path d=\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 00-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z\" fill=\"#e6f7ff\"></path><path d=\"M472 732a40 40 0 1080 0 40 40 0 10-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z\" fill=\"#1890ff\"></path></svg></span>\n      </div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\">40:00:00</span>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div style=\"padding-left: 8px; padding-right: 8px; margin-top: 32px;\" class=\"ant-col ant-col-24\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Million Seconds countdown</div>\n      <div class=\"ant-statistic-content\"><span class=\"ant-statistic-content-prefix\"><span>There's only</span></span><span class=\"ant-statistic-content-value\">40:00:00:000</span><span class=\"ant-statistic-content-suffix\"><span>left for the end.</span></span></div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/statistic/demo/unit.vue correctly 1`] = `\n<div class=\"ant-row\" style=\"margin-left: -8px; margin-right: -8px;\">\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div style=\"margin-right: 50px;\" class=\"ant-statistic\">\n      <div class=\"ant-statistic-title\">Feedback</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">1,128</span></span><span class=\"ant-statistic-content-suffix\"><span role=\"img\" aria-label=\"like\" class=\"anticon anticon-like\"><svg focusable=\"false\" class=\"\" data-icon=\"like\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"></path></svg></span></span>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-col ant-col-12\" style=\"padding-left: 8px; padding-right: 8px;\">\n    <div class=\"ant-statistic demo-class\">\n      <div class=\"ant-statistic-title\">Unmerged</div>\n      <div class=\"ant-statistic-content\">\n        <!----><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">93</span></span><span class=\"ant-statistic-content-suffix\"><span>/ 100</span></span>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/statistic/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Statistic support negetive number 1`] = `\n<div class=\"ant-statistic\">\n  <div class=\"ant-statistic-title\">Account Balance (CNY)</div>\n  <div class=\"ant-statistic-content\">\n    <!----><span class=\"ant-statistic-content-value\"><span class=\"ant-statistic-content-value-int\">-112,893</span><span class=\"ant-statistic-content-value-decimal\">.12</span></span>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/statistic/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('statistic');\n"
  },
  {
    "path": "components/statistic/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport MockDate from 'mockdate';\nimport dayjs from 'dayjs';\nimport Statistic from '..';\nimport { formatTimeStr } from '../utils';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Statistic', () => {\n  mountTest(Statistic);\n  mountTest(Statistic.Countdown);\n\n  beforeAll(() => {\n    MockDate.set(dayjs('2018-11-28 00:00:00'));\n  });\n\n  afterAll(() => {\n    MockDate.reset();\n  });\n\n  it('customize formatter', () => {\n    const formatter = jest.fn(() => 93);\n    const props = {\n      props: {\n        value: 1128,\n        formatter,\n      },\n    };\n    const wrapper = mount(Statistic, props);\n    expect(formatter).toBeCalledWith(expect.objectContaining({ value: 1128 }));\n    expect(wrapper.find('.ant-statistic-content-value').text()).toEqual('93');\n  });\n\n  it('groupSeparator', () => {\n    const props = {\n      props: {\n        value: 1128,\n        groupSeparator: '__TEST__',\n      },\n    };\n    const wrapper = mount(Statistic, props);\n    expect(wrapper.find('.ant-statistic-content-value').text()).toEqual('1__TEST__128');\n  });\n\n  it('not a number', () => {\n    const props = {\n      props: {\n        value: 'bamboo',\n      },\n    };\n    const wrapper = mount(Statistic, props);\n    expect(wrapper.find('.ant-statistic-content-value').text()).toEqual('bamboo');\n  });\n\n  it('support negetive number', () => {\n    const props = {\n      props: {\n        title: 'Account Balance (CNY)',\n        value: -112893.12345,\n        precision: 2,\n      },\n    };\n    const wrapper = mount(Statistic, props);\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  describe('Countdown', () => {\n    it('render correctly', () => {\n      const now = dayjs().add(2, 'd').add(11, 'h').add(28, 'm').add(9, 's').add(3, 'ms');\n\n      [\n        ['H:m:s', '59:28:9'],\n        ['HH:mm:ss', '59:28:09'],\n        ['HH:mm:ss:SSS', '59:28:09:003'],\n        ['DD-HH:mm:ss', '02-11:28:09'],\n      ].forEach(([format, value]) => {\n        const props = {\n          props: {\n            format,\n            value: now,\n          },\n        };\n        const wrapper = mount(Statistic.Countdown, props);\n        expect(wrapper.find('.ant-statistic-content-value').text()).toEqual(value);\n      });\n    });\n  });\n  describe('utils', () => {\n    it('format should support escape', () => {\n      expect(formatTimeStr(1000 * 60 * 60 * 24, 'D [Day]')).toBe('1 Day');\n    });\n  });\n});\n"
  },
  {
    "path": "components/statistic/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n简单展示\n\n## en-US\n\nSimplest Usage.\n\n</docs>\n\n<template>\n  <a-row>\n    <a-col :span=\"12\">\n      <a-statistic title=\"Active Users\" :value=\"112893\" style=\"margin-right: 50px\" />\n    </a-col>\n    <a-col :span=\"12\">\n      <a-statistic title=\"Account Balance (CNY)\" :precision=\"2\" :value=\"112893\" />\n    </a-col>\n  </a-row>\n</template>\n"
  },
  {
    "path": "components/statistic/demo/card.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 在卡片中使用\n  en-US: In Card\n---\n\n## zh-CN\n\n在卡片中展示统计数值。\n\n## en-US\n\nDisplay statistic data in Card.\n\n</docs>\n\n<template>\n  <div style=\"background: #ececec; padding: 30px\">\n    <a-row :gutter=\"16\">\n      <a-col :span=\"12\">\n        <a-card>\n          <a-statistic\n            title=\"Feedback\"\n            :value=\"11.28\"\n            :precision=\"2\"\n            suffix=\"%\"\n            :value-style=\"{ color: '#3f8600' }\"\n            style=\"margin-right: 50px\"\n          >\n            <template #prefix>\n              <arrow-up-outlined />\n            </template>\n          </a-statistic>\n        </a-card>\n      </a-col>\n      <a-col :span=\"12\">\n        <a-card>\n          <a-statistic\n            title=\"Idle\"\n            :value=\"9.3\"\n            :precision=\"2\"\n            suffix=\"%\"\n            class=\"demo-class\"\n            :value-style=\"{ color: '#cf1322' }\"\n          >\n            <template #prefix>\n              <arrow-down-outlined />\n            </template>\n          </a-statistic>\n        </a-card>\n      </a-col>\n    </a-row>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/statistic/demo/countdown-slot.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 倒计时组件\n  en-US: Countdown\n---\n\n## zh-CN\n\n倒计时组件使用插槽。\n\n## en-US\n\nCountdown component slots.\n\n</docs>\n\n<template>\n  <a-row :gutter=\"16\">\n    <a-col :span=\"12\">\n      <a-statistic-countdown :value=\"deadline\" style=\"margin-right: 50px\" @finish=\"onFinish\">\n        <template #title>\n          <span>Countdown</span>\n          <a-tooltip placement=\"right\">\n            <template #title>\n              <span>hurry up!</span>\n            </template>\n            <question-circle-two-tone style=\"margin-left: 5px\" />\n          </a-tooltip>\n        </template>\n      </a-statistic-countdown>\n    </a-col>\n    <a-col :span=\"24\" style=\"margin-top: 32px\">\n      <a-statistic-countdown\n        title=\"Million Seconds countdown\"\n        :value=\"deadline\"\n        format=\"HH:mm:ss:SSS\"\n        style=\"margin-right: 50px\"\n      >\n        <template #prefix>\n          <span>There's only</span>\n        </template>\n        <template #suffix>\n          <span>left for the end.</span>\n        </template>\n      </a-statistic-countdown>\n    </a-col>\n  </a-row>\n</template>\n<script lang=\"ts\" setup>\nimport { QuestionCircleTwoTone } from '@ant-design/icons-vue';\nconst onFinish = () => {\n  console.log('finished!');\n};\nconst deadline = Date.now() + 1000 * 60 * 60 * 20 * 2;\n</script>\n"
  },
  {
    "path": "components/statistic/demo/countdown.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 倒计时\n  en-US: Countdown\n---\n\n## zh-CN\n\n倒计时组件。\n\n## en-US\n\nCountdown component.\n\n</docs>\n\n<template>\n  <a-row :gutter=\"16\">\n    <a-col :span=\"12\">\n      <a-statistic-countdown\n        title=\"Countdown\"\n        :value=\"deadline\"\n        style=\"margin-right: 50px\"\n        @finish=\"onFinish\"\n      />\n    </a-col>\n    <a-col :span=\"12\">\n      <a-statistic-countdown\n        title=\"Million Seconds\"\n        :value=\"deadline\"\n        format=\"HH:mm:ss:SSS\"\n        style=\"margin-right: 50px\"\n      />\n    </a-col>\n    <a-col :span=\"24\" style=\"margin-top: 32px\">\n      <a-statistic-countdown title=\"Day Level\" :value=\"deadline\" format=\"D 天 H 时 m 分 s 秒\" />\n    </a-col>\n  </a-row>\n</template>\n<script lang=\"ts\" setup>\nconst onFinish = () => {\n  console.log('finished!');\n};\nconst deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30;\n</script>\n"
  },
  {
    "path": "components/statistic/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <unit />\n    <card />\n    <countdown />\n    <countdown-slot />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Unit from './unit.vue';\nimport Card from './card.vue';\nimport Countdown from './countdown.vue';\nimport CountdownSlot from './countdown-slot.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Unit,\n    Card,\n    Countdown,\n    CountdownSlot,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/statistic/demo/unit.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 单位\n  en-US: Unit\n---\n\n## zh-CN\n\n通过前缀和后缀添加单位。\n\n## en-US\n\nAdd unit through `prefix` and `suffix`.\n\n</docs>\n\n<template>\n  <a-row :gutter=\"16\">\n    <a-col :span=\"12\">\n      <a-statistic title=\"Feedback\" :value=\"1128\" style=\"margin-right: 50px\">\n        <template #suffix>\n          <like-outlined />\n        </template>\n      </a-statistic>\n    </a-col>\n    <a-col :span=\"12\">\n      <a-statistic title=\"Unmerged\" :value=\"93\" class=\"demo-class\">\n        <template #suffix>\n          <span>/ 100</span>\n        </template>\n      </a-statistic>\n    </a-col>\n  </a-row>\n</template>\n<script lang=\"ts\" setup>\nimport { LikeOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/statistic/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Statistic\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YL7PRYNtH-4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BPWDRbSYxJ4AAAAAAAAAAAAADrJ8AQ/original\n---\n\nDisplay statistic number.\n\n## When To Use\n\n- When want to highlight some data.\n- When want to display statistic data with description.\n\n## API\n\n### Statistic\n\n| Property         | Description                   | Type                        | Default |\n| ---------------- | ----------------------------- | --------------------------- | ------- |\n| decimalSeparator | decimal separator             | string                      | .       |\n| formatter        | customize value display logic | v-slot \\|({value}) => VNode | -       |\n| groupSeparator   | group separator               | string                      | ,       |\n| precision        | precision of input value      | number                      | -       |\n| prefix           | prefix node of value          | string \\| v-slot            | -       |\n| suffix           | suffix node of value          | string \\| v-slot            | -       |\n| title            | Display title                 | string \\| v-slot            | -       |\n| value            | Display value                 | string \\| number            | -       |\n| valueStyle       | Set value css style           | style                       | -       |\n\n### Statistic.Countdown\n\n| Property   | Description                            | Type             | Default    |\n| ---------- | -------------------------------------- | ---------------- | ---------- |\n| format     | Format as [dayjs](https://day.js.org/) | string           | 'HH:mm:ss' |\n| prefix     | prefix node of value                   | string \\| v-slot | -          |\n| suffix     | suffix node of value                   | string \\| v-slot | -          |\n| title      | Display title                          | string \\| v-slot | -          |\n| value      | Set target countdown time              | number \\| dayjs  | -          |\n| valueStyle | Set value css style                    | style            | -          |\n\n#### Statistic.Countdown Events\n\n| Events Name | Description            | Arguments  |     |\n| ----------- | ---------------------- | ---------- | --- |\n| finish      | Trigger when time's up | () => void | -   |\n"
  },
  {
    "path": "components/statistic/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Statistic from './Statistic';\nimport Countdown from './Countdown';\n\nexport type { StatisticProps } from './Statistic';\n\nStatistic.Countdown = Countdown;\n/* istanbul ignore next */\nStatistic.install = function (app: App) {\n  app.component(Statistic.name, Statistic);\n  app.component(Statistic.Countdown.name, Statistic.Countdown);\n  return app;\n};\n\nexport const StatisticCountdown = Statistic.Countdown;\n\nexport default Statistic as typeof Statistic &\n  Plugin & {\n    readonly Countdown: typeof Countdown;\n  };\n"
  },
  {
    "path": "components/statistic/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Statistic\nsubtitle: 统计数值\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YL7PRYNtH-4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*BPWDRbSYxJ4AAAAAAAAAAAAADrJ8AQ/original\n---\n\n展示统计数值。\n\n## 何时使用\n\n- 当需要突出某个或某组数字时\n- 当需要展示带描述的统计类数据时使用\n\n## API\n\n### Statistic\n\n| 参数             | 说明             | 类型                         | 默认值 |\n| ---------------- | ---------------- | ---------------------------- | ------ |\n| decimalSeparator | 设置小数点       | string                       | .      |\n| formatter        | 自定义数值展示   | v-slot \\| ({value}) => VNode | -      |\n| groupSeparator   | 设置千分位标识符 | string                       | ,      |\n| precision        | 数值精度         | number                       | -      |\n| prefix           | 设置数值的前缀   | string \\| v-slot             | -      |\n| suffix           | 设置数值的后缀   | string \\| v-slot             | -      |\n| title            | 数值的标题       | string \\| v-slot             | -      |\n| value            | 数值内容         | string \\| number             | -      |\n| valueStyle       | 设置数值的样式   | style                        | -      |\n\n### Statistic.Countdown\n\n| 参数       | 说明                                                | 类型             | 默认值     |\n| ---------- | --------------------------------------------------- | ---------------- | ---------- |\n| format     | 格式化倒计时展示，参考 [dayjs](https://day.js.org/) | string           | 'HH:mm:ss' |\n| prefix     | 设置数值的前缀                                      | string \\| v-slot | -          |\n| suffix     | 设置数值的后缀                                      | string \\| v-slot | -          |\n| title      | 数值的标题                                          | string \\| v-slot | -          |\n| value      | 数值内容                                            | number \\| dayjs  | -          |\n| valueStyle | 设置数值的样式                                      | style            | -          |\n\n#### Statistic.Countdown 事件\n\n| 事件名称 | 说明             | 回调参数   |\n| -------- | ---------------- | ---------- |\n| finish   | 倒计时完成时触发 | () => void |\n"
  },
  {
    "path": "components/statistic/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\ninterface StatisticToken extends FullToken<'Statistic'> {\n  statisticTitleFontSize: number;\n  statisticContentFontSize: number;\n  statisticFontFamily: string;\n}\n\nconst genStatisticStyle: GenerateStyle<StatisticToken> = (token: StatisticToken): CSSObject => {\n  const {\n    componentCls,\n    marginXXS,\n    padding,\n    colorTextDescription,\n    statisticTitleFontSize,\n    colorTextHeading,\n    statisticContentFontSize,\n    statisticFontFamily,\n  } = token;\n\n  return {\n    [`${componentCls}`]: {\n      ...resetComponent(token),\n      [`${componentCls}-title`]: {\n        marginBottom: marginXXS,\n        color: colorTextDescription,\n        fontSize: statisticTitleFontSize,\n      },\n\n      [`${componentCls}-skeleton`]: {\n        paddingTop: padding,\n      },\n\n      [`${componentCls}-content`]: {\n        color: colorTextHeading,\n        fontSize: statisticContentFontSize,\n        fontFamily: statisticFontFamily,\n        [`${componentCls}-content-value`]: {\n          display: 'inline-block',\n          direction: 'ltr',\n        },\n        [`${componentCls}-content-prefix, ${componentCls}-content-suffix`]: {\n          display: 'inline-block',\n        },\n        [`${componentCls}-content-prefix`]: {\n          marginInlineEnd: marginXXS,\n        },\n        [`${componentCls}-content-suffix`]: {\n          marginInlineStart: marginXXS,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Statistic', token => {\n  const { fontSizeHeading3, fontSize, fontFamily } = token;\n\n  const statisticToken = mergeToken<StatisticToken>(token, {\n    statisticTitleFontSize: fontSize,\n    statisticContentFontSize: fontSizeHeading3,\n    statisticFontFamily: fontFamily,\n  });\n  return [genStatisticStyle(statisticToken)];\n});\n"
  },
  {
    "path": "components/statistic/utils.ts",
    "content": "import type { VNodeTypes } from 'vue';\n\nexport type valueType = number | string;\nexport type countdownValueType = number | string;\n\nexport type Formatter =\n  | false\n  | 'number'\n  | 'countdown'\n  | (({ value, config }: { value: valueType; config?: FormatConfig }) => VNodeTypes);\n\nexport interface FormatConfig {\n  formatter?: Formatter;\n  decimalSeparator?: string;\n  groupSeparator?: string;\n  precision?: number;\n  prefixCls?: string;\n}\n\nexport interface CountdownFormatConfig extends FormatConfig {\n  format?: string;\n}\n\n// Countdown\nconst timeUnits: [string, number][] = [\n  ['Y', 1000 * 60 * 60 * 24 * 365], // years\n  ['M', 1000 * 60 * 60 * 24 * 30], // months\n  ['D', 1000 * 60 * 60 * 24], // days\n  ['H', 1000 * 60 * 60], // hours\n  ['m', 1000 * 60], // minutes\n  ['s', 1000], // seconds\n  ['S', 1], // million seconds\n];\n\nexport function formatTimeStr(duration: number, format: string) {\n  let leftDuration: number = duration;\n\n  const escapeRegex = /\\[[^\\]]*]/g;\n  const keepList: string[] = (format.match(escapeRegex) || []).map(str => str.slice(1, -1));\n  const templateText = format.replace(escapeRegex, '[]');\n\n  const replacedText = timeUnits.reduce((current, [name, unit]) => {\n    if (current.includes(name)) {\n      const value = Math.floor(leftDuration / unit);\n      leftDuration -= value * unit;\n      return current.replace(new RegExp(`${name}+`, 'g'), (match: string) => {\n        const len = match.length;\n        return value.toString().padStart(len, '0');\n      });\n    }\n    return current;\n  }, templateText);\n\n  let index = 0;\n  return replacedText.replace(escapeRegex, () => {\n    const match = keepList[index];\n    index += 1;\n    return match;\n  });\n}\n\nexport function formatCountdown(value: valueType, config: CountdownFormatConfig) {\n  const { format = '' } = config;\n  const target = new Date(value).getTime();\n  const current = Date.now();\n  const diff = Math.max(target - current, 0);\n\n  return formatTimeStr(diff, format);\n}\n"
  },
  {
    "path": "components/steps/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/steps/demo/clickable.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal\">\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">1</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 1\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 2\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 3\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n    <!---->\n  </div>\n  <div class=\"ant-steps ant-steps-vertical\">\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">1</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 1\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 2\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 3\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/customized-progress-dot.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><!----><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">You can hover on the dot.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><!----><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">You can hover on the dot.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><!----><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">You can hover on the dot.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><!----><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">You can hover on the dot.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/error.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal\">\n  <div class=\"ant-steps-item ant-steps-item-finish ant-steps-next-error\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-error ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close ant-steps-error-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Process\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/icon.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal\">\n  <div class=\"ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"user\" class=\"anticon anticon-user\"><svg focusable=\"false\" class=\"\" data-icon=\"user\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Login\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-finish ant-steps-item-custom\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"solution\" class=\"anticon anticon-solution\"><svg focusable=\"false\" class=\"\" data-icon=\"solution\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Verification\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-custom\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Pay\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait ant-steps-item-custom\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Done\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/inline.vue correctly 1`] = `\n<div class=\"ant-list ant-list-split\">\n  <!---->\n  <!---->\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <ul class=\"ant-list-items\">\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 1</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot ant-steps-inline\" style=\"margin-top: 8px;\">\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 1\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 1.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-wait\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 2\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 2.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-wait\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 3\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 3.</div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 2</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot ant-steps-inline\" style=\"margin-top: 8px;\">\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-finish ant-steps-next-error\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 1\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 1.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-error ant-steps-item-active\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 2\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 2.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-wait\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 3\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 3.</div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 3</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot ant-steps-inline\" style=\"margin-top: 8px;\">\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-finish\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 1\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 1.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-finish\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 2\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 2.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 3\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 3.</div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n        <li class=\"ant-list-item\">\n          <div class=\"ant-list-item-meta\">\n            <div class=\"ant-list-item-meta-avatar\"><span class=\"ant-avatar ant-avatar-circle ant-avatar-image\"><img src=\"https://joeschmoe.io/api/v1/random\"></span></div>\n            <div class=\"ant-list-item-meta-content\">\n              <h4 class=\"ant-list-item-meta-title\"><a href=\"https://www.antdv.com/\">Ant Design Title 4</a></h4>\n              <div class=\"ant-list-item-meta-description\">Ant Design, a design language for background applications, is refined by Ant UED Team</div>\n            </div>\n          </div>\n          <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot ant-steps-inline\" style=\"margin-top: 8px;\">\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-finish\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 1\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 1.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 2\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 2.</div>\n                </div>\n              </div>\n            </div>\n            <!---->\n            <div class=\"ant-steps-item ant-steps-item-wait\">\n              <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n                <div class=\"ant-steps-item-tail\">\n                  <!---->\n                </div>\n                <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n                <div class=\"ant-steps-item-content\">\n                  <div class=\"ant-steps-item-title\">Step 3\n                    <!---->\n                  </div>\n                  <div class=\"ant-steps-item-description\">This is a Step 3.</div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/steps/demo/label-placement.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div><br>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-with-progress\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\">\n          <div class=\"ant-steps-progress-icon\">\n            <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-40\">\n              <div class=\"ant-progress-inner\" style=\"width: 40px; height: 40px; font-size: 12px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n                  <!---->\n                  <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke-linecap=\"round\" stroke-width=\"4\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 301.59289474462014px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                  <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 180.95573684677208px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                  <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                </svg><span class=\"ant-progress-text\"><!----></span></div>\n            </div><span class=\"ant-steps-icon\">2</span>\n          </div>\n        </div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div><br>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-small ant-steps-label-vertical\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/nav.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-small ant-steps-label-horizontal ant-steps-navigation\" style=\"margin-bottom: 60px; box-shadow: 0px -1px 0 0 #e8e8e8 inset;\">\n    <div class=\"ant-steps-item ant-steps-item-finish ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 1<div title=\"00:00:05\" class=\"ant-steps-item-subtitle\">00:00:05</div>\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 2<div title=\"00:01:02\" class=\"ant-steps-item-subtitle\">00:01:02</div>\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 3<div title=\"waiting for longlong time\" class=\"ant-steps-item-subtitle\">waiting for longlong time</div>\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal ant-steps-navigation\" style=\"margin-bottom: 60px; box-shadow: 0px -1px 0 0 #e8e8e8 inset;\">\n    <div class=\"ant-steps-item ant-steps-item-finish ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 1\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 2\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 3\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">4</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Step 4\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-small ant-steps-label-horizontal ant-steps-navigation\" style=\"margin-bottom: 60px; box-shadow: 0px -1px 0 0 #e8e8e8 inset;\">\n    <div class=\"ant-steps-item ant-steps-item-finish ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">finish 1\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">finish 2\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">current process\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait ant-steps-item-disabled\">\n      <div class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">4</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">wait\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/progress.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal ant-steps-with-progress\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\">\n        <div class=\"ant-steps-progress-icon\">\n          <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-40\">\n            <div class=\"ant-progress-inner\" style=\"width: 40px; height: 40px; font-size: 12px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n                <!---->\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke-linecap=\"round\" stroke-width=\"4\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 301.59289474462014px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 180.95573684677208px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n              </svg><span class=\"ant-progress-text\"><!----></span></div>\n          </div><span class=\"ant-steps-icon\">2</span>\n        </div>\n      </div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress<div title=\"Left 00:00:08\" class=\"ant-steps-item-subtitle\">Left 00:00:08</div>\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"ant-steps ant-steps-horizontal ant-steps-small ant-steps-label-horizontal ant-steps-with-progress\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\">\n        <div class=\"ant-steps-progress-icon\">\n          <div role=\"progressbar\" class=\"ant-progress ant-progress-circle ant-progress-status-normal ant-progress-show-info ant-progress-32\">\n            <div class=\"ant-progress-inner\" style=\"width: 32px; height: 32px; font-size: 10.8px;\"><svg class=\"ant-progress-circle\" viewBox=\"0 0 100 100\">\n                <!---->\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke-linecap=\"round\" stroke-width=\"4\" fill-opacity=\"0\" class=\"ant-progress-circle-trail\" style=\"stroke-dasharray: 301.59289474462014px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"1\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke-dasharray: 180.95573684677208px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n                <path d=\"M 50,50 m 0,-48\n   a 48,48 0 1 1 0,96\n   a 48,48 0 1 1 0,-96\" stroke=\"\" stroke-linecap=\"round\" stroke-width=\"4\" opacity=\"0\" fill-opacity=\"0\" class=\"ant-progress-circle-path\" style=\"stroke: #52C41A; stroke-dasharray: 0px 301.59289474462014px; stroke-dashoffset: -0px; transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s;\"></path>\n              </svg><span class=\"ant-progress-text\"><!----></span></div>\n          </div><span class=\"ant-steps-icon\">2</span>\n        </div>\n      </div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress<div title=\"Left 00:00:08\" class=\"ant-steps-item-subtitle\">Left 00:00:08</div>\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/progress-dot.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-vertical ant-steps-dot\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n    <!---->\n  </div>\n  <div class=\"ant-steps ant-steps-vertical ant-steps-dot\">\n    <div class=\"ant-steps-item ant-steps-item-finish\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description. This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Finished\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description. This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">In Progress\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description. This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span class=\"ant-steps-icon-dot\"></span></span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Waiting\n            <!---->\n          </div>\n          <div class=\"ant-steps-item-description\">This is a description.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/simple.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress<div title=\"Left 00:00:08\" class=\"ant-steps-item-subtitle\">Left 00:00:08</div>\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/small-size.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-horizontal ant-steps-small ant-steps-label-horizontal\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/step-next.vue correctly 1`] = `\n<div>\n  <div class=\"ant-steps ant-steps-horizontal ant-steps-label-horizontal\">\n    <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">1</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">First\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Second\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-steps-item ant-steps-item-wait\">\n      <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n        <div class=\"ant-steps-item-tail\">\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n        <div class=\"ant-steps-item-content\">\n          <div class=\"ant-steps-item-title\">Last\n            <!---->\n          </div>\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"steps-content\">First-content</div>\n  <div class=\"steps-action\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Next</span>\n    </button>\n    <!--v-if-->\n    <!--v-if-->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/vertical.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-vertical\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/steps/demo/vertical-small.vue correctly 1`] = `\n<div class=\"ant-steps ant-steps-vertical ant-steps-small\">\n  <div class=\"ant-steps-item ant-steps-item-finish\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check ant-steps-finish-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Finished\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-process ant-steps-item-active\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">2</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">In Progress\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n  <div class=\"ant-steps-item ant-steps-item-wait\">\n    <div role=\"button\" tabindex=\"0\" class=\"ant-steps-item-container\">\n      <div class=\"ant-steps-item-tail\">\n        <!---->\n      </div>\n      <div class=\"ant-steps-item-icon\"><span class=\"ant-steps-icon\">3</span></div>\n      <div class=\"ant-steps-item-content\">\n        <div class=\"ant-steps-item-title\">Waiting\n          <!---->\n        </div>\n        <div class=\"ant-steps-item-description\">This is a description.</div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/steps/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('steps');\n"
  },
  {
    "path": "components/steps/__tests__/index.test.js",
    "content": "import Steps from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Steps', () => {\n  mountTest(Steps);\n});\n"
  },
  {
    "path": "components/steps/demo/clickable.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 可点击\n  en-US: Clickable\n---\n\n## zh-CN\n\n设置 `v-model` 后，Steps 变为可点击状态。\n\n## en-US\n\nSetting `v-model` makes Steps clickable.\n</docs>\n\n<template>\n  <div>\n    <a-steps\n      v-model:current=\"current\"\n      :items=\"[\n        {\n          title: 'Step 1',\n          description,\n        },\n        {\n          title: 'Step 2',\n          description,\n        },\n        {\n          title: 'Step 3',\n          description,\n        },\n      ]\"\n    ></a-steps>\n    <a-divider />\n    <a-steps\n      v-model:current=\"current\"\n      direction=\"vertical\"\n      :items=\"[\n        {\n          title: 'Step 1',\n          description,\n        },\n        {\n          title: 'Step 2',\n          description,\n        },\n        {\n          title: 'Step 3',\n          description,\n        },\n      ]\"\n    ></a-steps>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(0);\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/customized-progress-dot.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 自定义点状步骤条\n  en-US: Customized Dot Style\n---\n\n## zh-CN\n\n为点状步骤条增加自定义展示。\n\n## en-US\n\nYou can customize the display for Steps with progress dot style.\n</docs>\n\n<template>\n  <div>\n    <a-steps\n      v-model:current=\"current\"\n      :items=\"[\n        {\n          title: 'Finished',\n          description,\n        },\n        {\n          title: 'In Progress',\n          description,\n        },\n        {\n          title: 'Waiting',\n          description,\n        },\n        {\n          title: 'Waiting',\n          description,\n        },\n      ]\"\n    >\n      <template #progressDot=\"{ index, status, prefixCls }\">\n        <a-popover>\n          <template #content>\n            <span>step {{ index }} status: {{ status }}</span>\n          </template>\n          <span :class=\"`${prefixCls}-icon-dot`\" />\n        </a-popover>\n      </template>\n    </a-steps>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(1);\nconst description = 'You can hover on the dot.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/error.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 步骤运行错误\n  en-US: Error status\n---\n\n## zh-CN\n\n使用 Steps 的 `status` 属性来指定当前步骤的状态。\n\n## en-US\n\nBy using `status` of `Steps`, you can specify the state for current step.\n</docs>\n<template>\n  <a-steps\n    v-model:current=\"current\"\n    status=\"error\"\n    :items=\"[\n      {\n        title: 'Finished',\n        description,\n      },\n      {\n        title: 'In Process',\n        description,\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(1);\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/icon.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 带图标的步骤条\n  en-US: With icon\n---\n\n## zh-CN\n\n通过设置 `Steps.Step` 的 `icon` 属性，可以启用自定义图标。\n\n## en-US\n\nYou can use your own custom icons by setting the property `icon` for `Steps.Step`.\n</docs>\n<template>\n  <a-steps :items=\"items\"></a-steps>\n</template>\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\nimport {\n  UserOutlined,\n  SolutionOutlined,\n  LoadingOutlined,\n  SmileOutlined,\n} from '@ant-design/icons-vue';\nimport { StepProps } from 'ant-design-vue';\nconst items = [\n  {\n    title: 'Login',\n    status: 'finish',\n    icon: h(UserOutlined),\n  },\n  {\n    title: 'Verification',\n    status: 'finish',\n    icon: h(SolutionOutlined),\n  },\n  {\n    title: 'Pay',\n    status: 'process',\n    icon: h(LoadingOutlined),\n  },\n  {\n    title: 'Done',\n    status: 'wait',\n    icon: h(SmileOutlined),\n  },\n] as StepProps[];\n</script>\n"
  },
  {
    "path": "components/steps/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Simple />\n    <SmallSize />\n    <Icon />\n    <StepNext />\n    <Vertical />\n    <VerticalSmall />\n    <Error />\n    <ProgressDot />\n    <CustomizedProgressDot />\n    <Clickable />\n    <Nav />\n    <Progress />\n    <LabelPlacement />\n    <Inline />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport CustomizedProgressDot from './customized-progress-dot.vue';\nimport Error from './error.vue';\nimport Icon from './icon.vue';\nimport ProgressDot from './progress-dot.vue';\nimport Simple from './simple.vue';\nimport SmallSize from './small-size.vue';\nimport StepNext from './step-next.vue';\nimport VerticalSmall from './vertical-small.vue';\nimport Vertical from './vertical.vue';\nimport Clickable from './clickable.vue';\nimport Progress from './progress.vue';\nimport LabelPlacement from './label-placement.vue';\nimport Inline from './inline.vue';\nimport Nav from './nav.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Simple,\n    SmallSize,\n    Icon,\n    StepNext,\n    Vertical,\n    VerticalSmall,\n    Error,\n    ProgressDot,\n    CustomizedProgressDot,\n    Clickable,\n    Nav,\n    Progress,\n    LabelPlacement,\n    Inline,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/steps/demo/inline.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 内联步骤条\n  en-US: Inline Steps\n---\n\n## zh-CN\n\n内联类型的步骤条，适用于列表内容场景中展示对象所在流程、当前状态的情况。\n\n## en-US\n\nInline type steps, suitable for displaying the process and current state of the object in the list content scene.\n\n</docs>\n\n<template>\n  <a-list :data-source=\"data\">\n    <template #renderItem=\"{ item }\">\n      <a-list-item>\n        <a-list-item-meta\n          description=\"Ant Design, a design language for background applications, is refined by Ant UED Team\"\n        >\n          <template #title>\n            <a href=\"https://www.antdv.com/\">{{ item.title }}</a>\n          </template>\n          <template #avatar>\n            <a-avatar src=\"https://joeschmoe.io/api/v1/random\" />\n          </template>\n        </a-list-item-meta>\n        <a-steps\n          style=\"margin-top: 8px\"\n          type=\"inline\"\n          :current=\"item.current\"\n          :status=\"item.status\"\n          :items=\"items\"\n        />\n      </a-list-item>\n    </template>\n  </a-list>\n</template>\n<script lang=\"ts\" setup>\nconst data = [\n  {\n    title: 'Ant Design Title 1',\n    current: 0,\n  },\n  {\n    title: 'Ant Design Title 2',\n    current: 1,\n    status: 'error',\n  },\n  {\n    title: 'Ant Design Title 3',\n    current: 2,\n  },\n  {\n    title: 'Ant Design Title 4',\n    current: 1,\n  },\n];\n\nconst items = [\n  {\n    title: 'Step 1',\n    description: 'This is a Step 1.',\n  },\n  {\n    title: 'Step 2',\n    description: 'This is a Step 2.',\n  },\n  {\n    title: 'Step 3',\n    description: 'This is a Step 3.',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/steps/demo/label-placement.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 标签放置位置\n  en-US: Label Placement\n---\n\n## zh-CN\n\n修改标签放置位置为 `vertical`。\n\n## en-US\n\nSet labelPlacement to `vertical`.\n\n</docs>\n<template>\n  <div>\n    <a-steps :current=\"1\" label-placement=\"vertical\" :items=\"items\" />\n    <br />\n    <a-steps :current=\"1\" :percent=\"60\" label-placement=\"vertical\" :items=\"items\" />\n    <br />\n    <a-steps :current=\"1\" size=\"small\" label-placement=\"vertical\" :items=\"items\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst items = ref([\n  {\n    title: 'Finished',\n    description: 'This is a description.',\n  },\n  {\n    title: 'In Progress',\n    description: 'This is a description.',\n  },\n  {\n    title: 'Waiting',\n    description: 'This is a description.',\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/steps/demo/nav.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 导航步骤\n  en-US: Navigation Steps\n---\n\n## zh-CN\n\n导航类型的步骤条。\n\n## en-US\n\nNavigation steps.\n</docs>\n\n<template>\n  <div>\n    <a-steps\n      v-model:current=\"current\"\n      type=\"navigation\"\n      size=\"small\"\n      :style=\"stepStyle\"\n      :items=\"[\n        {\n          title: 'Step 1',\n          subTitle: '00:00:05',\n          status: 'finish',\n          description: 'This is a description.',\n        },\n        {\n          title: 'Step 2',\n          subTitle: '00:01:02',\n          status: 'process',\n          description: 'This is a description.',\n        },\n        {\n          title: 'Step 3',\n          subTitle: 'waiting for longlong time',\n          status: 'wait',\n          description: 'This is a description.',\n        },\n      ]\"\n    ></a-steps>\n    <a-steps\n      v-model:current=\"current\"\n      type=\"navigation\"\n      :style=\"stepStyle\"\n      :items=\"[\n        {\n          status: 'finish',\n          title: 'Step 1',\n        },\n        {\n          status: 'process',\n          title: 'Step 2',\n        },\n        {\n          status: 'wait',\n          title: 'Step 3',\n        },\n        {\n          status: 'wait',\n          title: 'Step 4',\n        },\n      ]\"\n    ></a-steps>\n    <a-steps\n      v-model:current=\"current\"\n      type=\"navigation\"\n      size=\"small\"\n      :style=\"stepStyle\"\n      :items=\"[\n        {\n          status: 'finish',\n          title: 'finish 1',\n        },\n        {\n          status: 'finish',\n          title: 'finish 2',\n        },\n        {\n          status: 'process',\n          title: 'current process',\n        },\n        {\n          status: 'wait',\n          title: 'wait',\n          disabled: true,\n        },\n      ]\"\n    ></a-steps>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(0);\n\nconst stepStyle = {\n  marginBottom: '60px',\n  boxShadow: '0px -1px 0 0 #e8e8e8 inset',\n};\n</script>\n"
  },
  {
    "path": "components/steps/demo/progress-dot.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 点状步骤条\n  en-US: Dot Style\n---\n\n## zh-CN\n\n包含步骤点的进度条。\n\n## en-US\n\nSteps with progress dot style.\n</docs>\n\n<template>\n  <div>\n    <a-steps\n      progress-dot\n      :current=\"1\"\n      :items=\"[\n        {\n          title: 'Finished',\n          description: 'This is a description.',\n        },\n        {\n          title: 'In Progress',\n          description: 'This is a description.',\n        },\n        {\n          title: 'Waiting',\n          description: 'This is a description.',\n        },\n      ]\"\n    ></a-steps>\n    <a-divider />\n    <a-steps\n      progress-dot\n      :current=\"1\"\n      direction=\"vertical\"\n      :items=\"[\n        {\n          title: 'Finished',\n          description: 'This is a description. This is a description.',\n        },\n        {\n          title: 'Finished',\n          description: 'This is a description. This is a description.',\n        },\n        {\n          title: 'In Progress',\n          description: 'This is a description. This is a description.',\n        },\n        {\n          title: 'Waiting',\n          description: 'This is a description.',\n        },\n        {\n          title: 'Waiting',\n          description: 'This is a description.',\n        },\n      ]\"\n    ></a-steps>\n  </div>\n</template>\n"
  },
  {
    "path": "components/steps/demo/progress.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 带有进度的步骤\n  en-US: Steps with progress\n---\n\n## zh-CN\n\n带有进度的步骤。\n\n## en-US\n\nSteps with progress.\n\n</docs>\n\n<template>\n  <a-steps\n    v-model:current=\"current\"\n    :percent=\"60\"\n    :items=\"[\n      {\n        title: 'Finished',\n        description,\n      },\n      {\n        title: 'In Progress',\n        subTitle: 'Left 00:00:08',\n        description,\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n  <a-steps\n    v-model:current=\"current\"\n    :percent=\"60\"\n    size=\"small\"\n    :items=\"[\n      {\n        title: 'Finished',\n        description,\n      },\n      {\n        title: 'In Progress',\n        subTitle: 'Left 00:00:08',\n        description,\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst current = ref<number>(1);\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/simple.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic\n---\n\n## zh-CN\n\n简单的步骤条。\n\n## en-US\n\nThe most basic step bar.\n</docs>\n<template>\n  <a-steps\n    :current=\"1\"\n    :items=\"[\n      {\n        title: 'Finished',\n        description,\n      },\n      {\n        title: 'In Progress',\n        description,\n        subTitle: 'Left 00:00:08',\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n</template>\n<script lang=\"ts\" setup>\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/small-size.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 迷你版\n  en-US: Mini version\n---\n\n## zh-CN\n\n迷你版的步骤条，通过设置 `<Steps size=\"small\">` 启用.\n\n## en-US\n\nBy setting like this: `<Steps size=\"small\">`, you can get a mini version.\n</docs>\n<template>\n  <a-steps\n    :current=\"1\"\n    size=\"small\"\n    :items=\"[\n      {\n        title: 'Finished',\n      },\n      {\n        title: 'In Progress',\n      },\n      {\n        title: 'Waiting',\n      },\n    ]\"\n  ></a-steps>\n</template>\n"
  },
  {
    "path": "components/steps/demo/step-next.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 步骤切换\n  en-US: Switch Step\n---\n\n## zh-CN\n\n通常配合内容及按钮使用，表示一个流程的处理进度。\n\n## en-US\n\nCooperate with the content and buttons, to represent the progress of a process.\n</docs>\n<template>\n  <div>\n    <a-steps :current=\"current\" :items=\"items\"></a-steps>\n    <div class=\"steps-content\">\n      {{ steps[current].content }}\n    </div>\n    <div class=\"steps-action\">\n      <a-button v-if=\"current < steps.length - 1\" type=\"primary\" @click=\"next\">Next</a-button>\n      <a-button\n        v-if=\"current == steps.length - 1\"\n        type=\"primary\"\n        @click=\"message.success('Processing complete!')\"\n      >\n        Done\n      </a-button>\n      <a-button v-if=\"current > 0\" style=\"margin-left: 8px\" @click=\"prev\">Previous</a-button>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { message } from 'ant-design-vue';\nconst current = ref<number>(0);\nconst next = () => {\n  current.value++;\n};\nconst prev = () => {\n  current.value--;\n};\nconst steps = [\n  {\n    title: 'First',\n    content: 'First-content',\n  },\n  {\n    title: 'Second',\n    content: 'Second-content',\n  },\n  {\n    title: 'Last',\n    content: 'Last-content',\n  },\n];\nconst items = steps.map(item => ({ key: item.title, title: item.title }));\n</script>\n<style scoped>\n.steps-content {\n  margin-top: 16px;\n  border: 1px dashed #e9e9e9;\n  border-radius: 6px;\n  background-color: #fafafa;\n  min-height: 200px;\n  text-align: center;\n  padding-top: 80px;\n}\n\n.steps-action {\n  margin-top: 24px;\n}\n\n[data-theme='dark'] .steps-content {\n  background-color: #2f2f2f;\n  border: 1px dashed #404040;\n}\n</style>\n"
  },
  {
    "path": "components/steps/demo/vertical-small.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 竖直方向的小型步骤条\n  en-US: Vertical mini version\n---\n\n## zh-CN\n\n简单的竖直方向的小型步骤条。\n\n## en-US\n\nA simple mini version step bar in the vertical direction.\n</docs>\n<template>\n  <a-steps\n    direction=\"vertical\"\n    size=\"small\"\n    :current=\"1\"\n    :items=\"[\n      { title: 'Finished', description },\n      {\n        title: 'In Progress',\n        description,\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n</template>\n<script lang=\"ts\" setup>\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/demo/vertical.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 竖直方向的步骤条\n  en-US: Vertical\n---\n\n## zh-CN\n\n简单的竖直方向的步骤条。\n\n## en-US\n\nA simple step bar in the vertical direction.\n</docs>\n\n<template>\n  <a-steps\n    direction=\"vertical\"\n    :current=\"1\"\n    :items=\"[\n      {\n        title: 'Finished',\n        description,\n      },\n      {\n        title: 'In Progress',\n        description,\n      },\n      {\n        title: 'Waiting',\n        description,\n      },\n    ]\"\n  ></a-steps>\n</template>\n<script lang=\"ts\" setup>\nconst description = 'This is a description.';\n</script>\n"
  },
  {
    "path": "components/steps/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Navigation\ncols: 1\ntitle: Steps\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*677sTqCpE3wAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*cFsBQLA0b7UAAAAAAAAAAAAADrJ8AQ/original\n---\n\n`Steps` is a navigation bar that guides users through the steps of a task.\n\n## API\n\n### Steps\n\nThe whole of the step bar.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| current(v-model) | to set the current step, counting from 0. You can overwrite this state by using `status` of `Step`, support v-model after 1.5.0 | number | 0 |  |\n| direction | to specify the direction of the step bar, `horizontal` and `vertical` are currently supported | string | `horizontal` |  |\n| initial | set the initial step, counting from 0 | number | 0 |  |\n| labelPlacement | support vertical title and description | string | `horizontal` |  |\n| percent | Progress circle percentage of current step in `process` status (only works on basic Steps) | number | - | 3.0 |\n| progressDot | Steps with progress dot style, customize the progress dot by setting a scoped slot. labelPlacement will be `vertical` | Boolean or v-slot:progressDot=\"{index, status, title, description, prefixCls, iconDot}\" | false |  |\n| responsive | change to vertical direction when screen width smaller than `532px` | boolean | true | 3.0 |\n| size | to specify the size of the step bar, `default` and `small` are currently supported | string | `default` |  |\n| status | to specify the status of current step, can be set to one of the following values: `wait` `process` `finish` `error` | string | `process` |  |\n| type | Type of steps, can be set to one of the following values: `default`, `navigation` | string | `default` | 1.5.0 |\n| items | StepItem content | [StepItem](#stepsstep) | [] |  |\n\n### `type=\"inline\"` (4.0+)\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| current | To set the current step, counting from 0. You can overwrite this state by using `status` of `Step` | number | 0 |  |\n| initial | Set the initial step, counting from 0 | number | 0 |  |\n| status | To specify the status of current step, can be set to one of the following values: `wait` `process` `finish` `error` | string | `process` |  |\n| items | StepItem content. not supported: `icon` `subtitle` | [StepItem](#stepsstep) | [] |  |\n\n#### Steps Events\n\n| Events Name | Description                  | Arguments         | Version |       |\n| ----------- | ---------------------------- | ----------------- | ------- | ----- |\n| change      | Trigger when Step is changed | (current) => void | -       | 1.5.0 |\n\n### Steps.Step\n\nA single step in the step bar.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| description | description of the step, optional property | string\\|slot | - |  |\n| disabled | Disable click | boolean | false | 1.5.0 |\n| icon | icon of the step, optional property | string\\|slot | - |  |\n| status | to specify the status. It will be automatically set by `current` of `Steps` if not configured. Optional values are: `wait` `process` `finish` `error` | string | `wait` |  |\n| subTitle | Subtitle of the step | string\\|slot | - | 1.5.0 |\n| title | title of the step | string\\|slot | - |  |\n"
  },
  {
    "path": "components/steps/index.tsx",
    "content": "import type { App, ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport CheckOutlined from '@ant-design/icons-vue/CheckOutlined';\nimport type { VueNode, CustomSlotsType } from '../_util/type';\nimport { anyType, booleanType, stringType, functionType, someType, arrayType } from '../_util/type';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport VcSteps, { Step as VcStep } from '../vc-steps';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\nimport classNames from '../_util/classNames';\nimport Progress from '../progress';\nimport omit from '../_util/omit';\nimport Tooltip from '../tooltip';\nimport { VcStepProps } from '../vc-steps/Step';\nimport type { Status, ProgressDotRender } from '../vc-steps/interface';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { useToken } from '../theme/internal';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport const stepsProps = () => ({\n  prefixCls: String,\n  iconPrefix: String,\n  current: Number,\n  initial: Number,\n  percent: Number,\n  responsive: booleanType(),\n  items: arrayType<StepProps[]>(),\n  labelPlacement: stringType<'horizontal' | 'vertical'>(),\n  status: stringType<Status>(),\n  size: stringType<'default' | 'small'>(),\n  direction: stringType<'horizontal' | 'vertical'>(),\n  progressDot: someType<boolean | ProgressDotRender>([Boolean, Function]),\n  type: stringType<'default' | 'navigation' | 'inline'>(),\n  onChange: functionType<(current: number) => void>(),\n  'onUpdate:current': functionType<(current: number) => void>(),\n});\n\nexport const stepProps = () => ({\n  description: anyType(),\n  icon: anyType(),\n  status: stringType<Status>(),\n  disabled: booleanType(),\n  title: anyType(),\n  subTitle: anyType(),\n  onClick: functionType<MouseEventHandler>(),\n});\n\nexport type StepsProps = Partial<ExtractPropTypes<ReturnType<typeof stepsProps>>>;\n\nexport type StepProps = Partial<ExtractPropTypes<ReturnType<typeof stepProps>>>;\n\nconst Steps = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASteps',\n  inheritAttrs: false,\n  props: initDefaultProps(stepsProps(), {\n    current: 0,\n    responsive: true,\n    labelPlacement: 'horizontal',\n  }),\n  slots: Object as CustomSlotsType<{\n    progressDot: any;\n    default: any;\n  }>,\n\n  // emits: ['update:current', 'change'],\n  setup(props, { attrs, slots, emit }) {\n    const { prefixCls, direction: rtlDirection, configProvider } = useConfigInject('steps', props);\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const [, token] = useToken();\n\n    const screens = useBreakpoint();\n    const direction = computed(() =>\n      props.responsive && screens.value.xs ? 'vertical' : props.direction,\n    );\n    const iconPrefix = computed(() => configProvider.getPrefixCls('', props.iconPrefix));\n    const handleChange = (current: number) => {\n      emit('update:current', current);\n      emit('change', current);\n    };\n    const isInline = computed(() => props.type === 'inline');\n    const mergedPercent = computed(() => (isInline.value ? undefined : props.percent));\n    const stepIconRender = ({\n      node,\n      status,\n    }: {\n      node: any;\n      index: number;\n      status: string;\n      title: any;\n      description: any;\n    }) => {\n      if (status === 'process' && props.percent !== undefined) {\n        // currently it's hard-coded, since we can't easily read the actually width of icon\n\n        const progressWidth =\n          props.size === 'small' ? token.value.controlHeight : token.value.controlHeightLG;\n\n        const iconWithProgress = (\n          <div class={`${prefixCls.value}-progress-icon`}>\n            <Progress\n              type=\"circle\"\n              percent={mergedPercent.value}\n              size={progressWidth}\n              strokeWidth={4}\n              format={() => null}\n            />\n            {node}\n          </div>\n        );\n        return iconWithProgress;\n      }\n      return node;\n    };\n    const icons = computed(() => ({\n      finish: <CheckOutlined class={`${prefixCls.value}-finish-icon`} />,\n      error: <CloseOutlined class={`${prefixCls.value}-error-icon`} />,\n    }));\n    return () => {\n      const stepsClassName = classNames(\n        {\n          [`${prefixCls.value}-rtl`]: rtlDirection.value === 'rtl',\n          [`${prefixCls.value}-with-progress`]: mergedPercent.value !== undefined,\n        },\n        attrs.class,\n        hashId.value,\n      );\n      const itemRender = (item: StepProps, stepItem: VueNode) =>\n        item.description ? <Tooltip title={item.description}>{stepItem}</Tooltip> : stepItem;\n\n      return wrapSSR(\n        <VcSteps\n          icons={icons.value}\n          {...attrs}\n          {...omit(props, ['percent', 'responsive'])}\n          items={props.items}\n          direction={direction.value}\n          prefixCls={prefixCls.value}\n          iconPrefix={iconPrefix.value}\n          class={stepsClassName}\n          onChange={handleChange}\n          isInline={isInline.value}\n          itemRender={isInline.value ? itemRender : undefined}\n          v-slots={{ stepIcon: stepIconRender, ...slots }}\n        />,\n      );\n    };\n  },\n});\n\n/* istanbul ignore next */\nexport const Step = defineComponent({\n  compatConfig: { MODE: 3 },\n  ...(VcStep as any),\n  name: 'AStep',\n  props: VcStepProps(),\n});\nexport default Object.assign(Steps, {\n  Step,\n  install: (app: App) => {\n    app.component(Steps.name, Steps);\n    app.component(Step.name, Step);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/steps/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 步骤条\ntype: 导航\ncols: 1\ntitle: Steps\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*677sTqCpE3wAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*cFsBQLA0b7UAAAAAAAAAAAAADrJ8AQ/original\n---\n\n引导用户按照流程完成任务的导航条。\n\n## 何时使用\n\n当任务复杂或者存在先后关系时，将其分解成一系列步骤，从而简化任务。\n\n## API\n\n### Steps\n\n整体步骤条。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| current (v-model) | 指定当前步骤，从 0 开始记数。在子 Step 元素中，可以通过 `status` 属性覆盖状态, 1.5.0 后支持 v-model | number | 0 |  |\n| direction | 指定步骤条方向。目前支持水平（`horizontal`）和竖直（`vertical`）两种方向 | string | horizontal |  |\n| initial | 起始序号，从 0 开始记数 | number | 0 |  |\n| labelPlacement | 指定标签放置位置，默认水平放图标右侧，可选`vertical`放图标下方 | string | `horizontal` |  |\n| percent | 当前 `process` 步骤显示的进度条进度（只对基本类型的 Steps 生效） | number | - | 3.0 |\n| progressDot | 点状步骤条，可以设置为一个 作用域插槽,labelPlacement 将强制为`vertical` | Boolean or v-slot:progressDot=\"{index, status, title, description, prefixCls, iconDot}\" | false |  |\n| responsive | 当屏幕宽度小于 532px 时自动变为垂直模式 | boolean | true | 3.0 |\n| size | 指定大小，目前支持普通（`default`）和迷你（`small`） | string | default |  |\n| status | 指定当前步骤的状态，可选 `wait` `process` `finish` `error` | string | process |  |\n| type | 步骤条类型，有 `default` 和 `navigation` 两种 | string | `default` | 1.5.0 |\n| items | 配置选项卡内容 | [StepItem](#stepsstep)[] | [] |  |\n\n### `type=\"inline\"` (4.0+)\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| current | 指定当前步骤，从 0 开始记数。在子 Step 元素中，可以通过 `status` 属性覆盖状态 | number | 0 |  |\n| initial | 起始序号，从 0 开始记数 | number | 0 |  |\n| status | 指定当前步骤的状态，可选 `wait` `process` `finish` `error` | string | `process` |  |\n| items | 配置选项卡内容，不支持 `icon` `subtitle` | [StepItem](#stepsstep) | [] |  |\n\n#### Steps 事件\n\n| 事件名称 | 说明               | 回调参数          | 版本 |       |\n| -------- | ------------------ | ----------------- | ---- | ----- |\n| change   | 点击切换步骤时触发 | (current) => void | -    | 1.5.0 |\n\n### Steps.Step\n\n步骤条内的每一个步骤。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| description | 步骤的详情描述，可选 | string \\| slot | - |  |\n| disabled | 禁用点击 | boolean | false | 1.5.0 |\n| icon | 步骤图标的类型，可选 | string \\| slot | - |  |\n| status | 指定状态。当不配置该属性时，会使用 Steps 的 `current` 来自动指定状态。可选：`wait` `process` `finish` `error` | string | `wait` |  |\n| subTitle | 子标题 | string \\| slot | - | 1.5.0 |\n| title | 标题 | string \\| slot | - |  |\n"
  },
  {
    "path": "components/steps/style/custom-icon.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsCustomIconStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, stepsIconCustomTop, stepsIconCustomSize, stepsIconCustomFontSize } = token;\n\n  return {\n    [`${componentCls}-item-custom`]: {\n      [`> ${componentCls}-item-container > ${componentCls}-item-icon`]: {\n        height: 'auto',\n        background: 'none',\n        border: 0,\n        [`> ${componentCls}-icon`]: {\n          top: stepsIconCustomTop,\n          width: stepsIconCustomSize,\n          height: stepsIconCustomSize,\n          fontSize: stepsIconCustomFontSize,\n          lineHeight: `${stepsIconCustomSize}px`,\n        },\n      },\n    },\n\n    // Only adjust horizontal customize icon width\n    [`&:not(${componentCls}-vertical)`]: {\n      [`${componentCls}-item-custom`]: {\n        [`${componentCls}-item-icon`]: {\n          width: 'auto',\n          background: 'none',\n        },\n      },\n    },\n  };\n};\n\nexport default genStepsCustomIconStyle;\n"
  },
  {
    "path": "components/steps/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genStepsCustomIconStyle from './custom-icon';\nimport genStepsLabelPlacementStyle from './label-placement';\nimport genStepsNavStyle from './nav';\nimport genStepsProgressStyle from './progress';\nimport genStepsProgressDotStyle from './progress-dot';\nimport genStepsRTLStyle from './rtl';\nimport genStepsSmallStyle from './small';\nimport genStepsVerticalStyle from './vertical';\nimport genStepsInlineStyle from './inline';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {\n  descriptionWidth: number;\n}\n\nexport interface StepsToken extends FullToken<'Steps'> {\n  // Steps variable default.less\n  processTailColor: string;\n  stepsNavArrowColor: string;\n  stepsIconSize: number;\n  stepsIconCustomSize: number;\n  stepsIconCustomTop: number;\n  stepsIconCustomFontSize: number;\n  stepsIconTop: number;\n  stepsIconFontSize: number;\n  stepsTitleLineHeight: number;\n  stepsSmallIconSize: number;\n  stepsDotSize: number;\n  stepsCurrentDotSize: number;\n  stepsNavContentMaxWidth: string;\n  // Steps component less variable\n  processIconColor: string;\n  processTitleColor: string;\n  processDescriptionColor: string;\n  processIconBgColor: string;\n  processIconBorderColor: string;\n  processDotColor: string;\n  waitIconColor: string;\n  waitTitleColor: string;\n  waitDescriptionColor: string;\n  waitTailColor: string;\n  waitIconBgColor: string;\n  waitIconBorderColor: string;\n  waitDotColor: string;\n  finishIconColor: string;\n  finishTitleColor: string;\n  finishDescriptionColor: string;\n  finishTailColor: string;\n  finishIconBgColor: string;\n  finishIconBorderColor: string;\n  finishDotColor: string;\n  errorIconColor: string;\n  errorTitleColor: string;\n  errorDescriptionColor: string;\n  errorTailColor: string;\n  errorIconBgColor: string;\n  errorIconBorderColor: string;\n  errorDotColor: string;\n  stepsNavActiveColor: string;\n  stepsProgressSize: number;\n  // Steps inline variable\n  inlineDotSize: number;\n  inlineTitleColor: string;\n  inlineTailColor: string;\n}\n\nenum StepItemStatusEnum {\n  wait = 'wait',\n  process = 'process',\n  finish = 'finish',\n  error = 'error',\n}\n\nconst genStepsItemStatusStyle = (status: StepItemStatusEnum, token: StepsToken): CSSObject => {\n  const prefix = `${token.componentCls}-item`;\n  const iconColorKey: keyof StepsToken = `${status}IconColor`;\n  const titleColorKey: keyof StepsToken = `${status}TitleColor`;\n  const descriptionColorKey: keyof StepsToken = `${status}DescriptionColor`;\n  const tailColorKey: keyof StepsToken = `${status}TailColor`;\n  const iconBgColorKey: keyof StepsToken = `${status}IconBgColor`;\n  const iconBorderColorKey: keyof StepsToken = `${status}IconBorderColor`;\n  const dotColorKey: keyof StepsToken = `${status}DotColor`;\n  return {\n    [`${prefix}-${status} ${prefix}-icon`]: {\n      backgroundColor: token[iconBgColorKey],\n      borderColor: token[iconBorderColorKey],\n      [`> ${token.componentCls}-icon`]: {\n        color: token[iconColorKey],\n        [`${token.componentCls}-icon-dot`]: {\n          background: token[dotColorKey],\n        },\n      },\n    },\n    [`${prefix}-${status}${prefix}-custom ${prefix}-icon`]: {\n      [`> ${token.componentCls}-icon`]: {\n        color: token[dotColorKey],\n      },\n    },\n    [`${prefix}-${status} > ${prefix}-container > ${prefix}-content > ${prefix}-title`]: {\n      color: token[titleColorKey],\n\n      '&::after': {\n        backgroundColor: token[tailColorKey],\n      },\n    },\n    [`${prefix}-${status} > ${prefix}-container > ${prefix}-content > ${prefix}-description`]: {\n      color: token[descriptionColorKey],\n    },\n    [`${prefix}-${status} > ${prefix}-container > ${prefix}-tail::after`]: {\n      backgroundColor: token[tailColorKey],\n    },\n  };\n};\n\nconst genStepsItemStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, motionDurationSlow } = token;\n  const stepsItemCls = `${componentCls}-item`; // .ant-steps-item\n\n  return {\n    [stepsItemCls]: {\n      position: 'relative',\n      display: 'inline-block',\n      flex: 1,\n      overflow: 'hidden',\n      verticalAlign: 'top',\n      '&:last-child': {\n        flex: 'none',\n        [`> ${stepsItemCls}-container > ${stepsItemCls}-tail, > ${stepsItemCls}-container >  ${stepsItemCls}-content > ${stepsItemCls}-title::after`]:\n          {\n            display: 'none',\n          },\n      },\n    },\n    [`${stepsItemCls}-container`]: {\n      outline: 'none',\n    },\n    [`${stepsItemCls}-icon, ${stepsItemCls}-content`]: {\n      display: 'inline-block',\n      verticalAlign: 'top',\n    },\n    [`${stepsItemCls}-icon`]: {\n      width: token.stepsIconSize,\n      height: token.stepsIconSize,\n      marginTop: 0,\n      marginBottom: 0,\n      marginInlineStart: 0,\n      marginInlineEnd: token.marginXS,\n      fontSize: token.stepsIconFontSize,\n      fontFamily: token.fontFamily,\n      lineHeight: `${token.stepsIconSize}px`,\n      textAlign: 'center',\n      borderRadius: token.stepsIconSize,\n      border: `${token.lineWidth}px ${token.lineType} transparent`,\n      transition: `background-color ${motionDurationSlow}, border-color ${motionDurationSlow}`,\n      [`${componentCls}-icon`]: {\n        position: 'relative',\n        top: token.stepsIconTop,\n        color: token.colorPrimary,\n        lineHeight: 1,\n      },\n    },\n    [`${stepsItemCls}-tail`]: {\n      position: 'absolute',\n      top: token.stepsIconSize / 2 - token.paddingXXS,\n      insetInlineStart: 0,\n      width: '100%',\n\n      '&::after': {\n        display: 'inline-block',\n        width: '100%',\n        height: token.lineWidth,\n        background: token.colorSplit,\n        borderRadius: token.lineWidth,\n        transition: `background ${motionDurationSlow}`,\n        content: '\"\"',\n      },\n    },\n    [`${stepsItemCls}-title`]: {\n      position: 'relative',\n      display: 'inline-block',\n      paddingInlineEnd: token.padding,\n      color: token.colorText,\n      fontSize: token.fontSizeLG,\n      lineHeight: `${token.stepsTitleLineHeight}px`,\n\n      '&::after': {\n        position: 'absolute',\n        top: token.stepsTitleLineHeight / 2,\n        insetInlineStart: '100%',\n        display: 'block',\n        width: 9999,\n        height: token.lineWidth,\n        background: token.processTailColor,\n        content: '\"\"',\n      },\n    },\n    [`${stepsItemCls}-subtitle`]: {\n      display: 'inline',\n      marginInlineStart: token.marginXS,\n      color: token.colorTextDescription,\n      fontWeight: 'normal',\n      fontSize: token.fontSize,\n    },\n    [`${stepsItemCls}-description`]: {\n      color: token.colorTextDescription,\n      fontSize: token.fontSize,\n    },\n    ...genStepsItemStatusStyle(StepItemStatusEnum.wait, token),\n    ...genStepsItemStatusStyle(StepItemStatusEnum.process, token),\n    [`${stepsItemCls}-process > ${stepsItemCls}-container > ${stepsItemCls}-title`]: {\n      fontWeight: token.fontWeightStrong,\n    },\n    ...genStepsItemStatusStyle(StepItemStatusEnum.finish, token),\n    ...genStepsItemStatusStyle(StepItemStatusEnum.error, token),\n    [`${stepsItemCls}${componentCls}-next-error > ${componentCls}-item-title::after`]: {\n      background: token.colorError,\n    },\n    [`${stepsItemCls}-disabled`]: {\n      cursor: 'not-allowed',\n    },\n  };\n};\n\n// ============================= Clickable ===========================\nconst genStepsClickableStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, motionDurationSlow } = token;\n\n  return {\n    [`& ${componentCls}-item`]: {\n      [`&:not(${componentCls}-item-active)`]: {\n        [`& > ${componentCls}-item-container[role='button']`]: {\n          cursor: 'pointer',\n          [`${componentCls}-item`]: {\n            [`&-title, &-subtitle, &-description, &-icon ${componentCls}-icon`]: {\n              transition: `color ${motionDurationSlow}`,\n            },\n          },\n\n          '&:hover': {\n            [`${componentCls}-item`]: {\n              [`&-title, &-subtitle, &-description`]: {\n                color: token.colorPrimary,\n              },\n            },\n          },\n        },\n\n        [`&:not(${componentCls}-item-process)`]: {\n          [`& > ${componentCls}-item-container[role='button']:hover`]: {\n            [`${componentCls}-item`]: {\n              '&-icon': {\n                borderColor: token.colorPrimary,\n\n                [`${componentCls}-icon`]: {\n                  color: token.colorPrimary,\n                },\n              },\n            },\n          },\n        },\n      },\n    },\n    [`&${componentCls}-horizontal:not(${componentCls}-label-vertical)`]: {\n      [`${componentCls}-item`]: {\n        paddingInlineStart: token.padding,\n        whiteSpace: 'nowrap',\n\n        '&:first-child': {\n          paddingInlineStart: 0,\n        },\n        [`&:last-child ${componentCls}-item-title`]: {\n          paddingInlineEnd: 0,\n        },\n        '&-tail': {\n          display: 'none',\n        },\n        '&-description': {\n          maxWidth: token.descriptionWidth,\n          whiteSpace: 'normal',\n        },\n      },\n    },\n  };\n};\n\nconst genStepsStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls } = token; // .ant-steps\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      display: 'flex',\n      width: '100%',\n      fontSize: 0,\n      textAlign: 'initial',\n      // single Item\n      ...genStepsItemStyle(token),\n      // Clickable\n      ...genStepsClickableStyle(token),\n      // custom-icon\n      ...genStepsCustomIconStyle(token),\n      // small\n      ...genStepsSmallStyle(token),\n      // vertical\n      ...genStepsVerticalStyle(token),\n      // label-placement\n      ...genStepsLabelPlacementStyle(token),\n      // progress-dot\n      ...genStepsProgressDotStyle(token),\n      // nav\n      ...genStepsNavStyle(token),\n      // rtl\n      ...genStepsRTLStyle(token),\n      // progress\n      ...genStepsProgressStyle(token),\n      // inline\n      ...genStepsInlineStyle(token),\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Steps',\n  token => {\n    const {\n      wireframe,\n      colorTextDisabled,\n      fontSizeHeading3,\n      fontSize,\n      controlHeight,\n      controlHeightLG,\n      colorTextLightSolid,\n      colorText,\n      colorPrimary,\n      colorTextLabel,\n      colorTextDescription,\n      colorTextQuaternary,\n      colorFillContent,\n      controlItemBgActive,\n      colorError,\n      colorBgContainer,\n      colorBorderSecondary,\n    } = token;\n\n    const stepsIconSize = token.controlHeight;\n    const processTailColor = token.colorSplit;\n\n    const stepsToken = mergeToken<StepsToken>(token, {\n      // Steps variable default.less\n      processTailColor,\n      stepsNavArrowColor: colorTextDisabled,\n      stepsIconSize,\n      stepsIconCustomSize: stepsIconSize,\n      stepsIconCustomTop: 0,\n      stepsIconCustomFontSize: controlHeightLG / 2,\n      stepsIconTop: -0.5, // magic for ui experience\n      stepsIconFontSize: fontSize,\n      stepsTitleLineHeight: controlHeight,\n      stepsSmallIconSize: fontSizeHeading3,\n      stepsDotSize: controlHeight / 4,\n      stepsCurrentDotSize: controlHeightLG / 4,\n      stepsNavContentMaxWidth: 'auto',\n      // Steps component less variable\n      processIconColor: colorTextLightSolid,\n      processTitleColor: colorText,\n      processDescriptionColor: colorText,\n      processIconBgColor: colorPrimary,\n      processIconBorderColor: colorPrimary,\n      processDotColor: colorPrimary,\n      waitIconColor: wireframe ? colorTextDisabled : colorTextLabel,\n      waitTitleColor: colorTextDescription,\n      waitDescriptionColor: colorTextDescription,\n      waitTailColor: processTailColor,\n      waitIconBgColor: wireframe ? colorBgContainer : colorFillContent,\n      waitIconBorderColor: wireframe ? colorTextDisabled : 'transparent',\n      waitDotColor: colorTextDisabled,\n      finishIconColor: colorPrimary,\n      finishTitleColor: colorText,\n      finishDescriptionColor: colorTextDescription,\n      finishTailColor: colorPrimary,\n      finishIconBgColor: wireframe ? colorBgContainer : controlItemBgActive,\n      finishIconBorderColor: wireframe ? colorPrimary : controlItemBgActive,\n      finishDotColor: colorPrimary,\n      errorIconColor: colorTextLightSolid,\n      errorTitleColor: colorError,\n      errorDescriptionColor: colorError,\n      errorTailColor: processTailColor,\n      errorIconBgColor: colorError,\n      errorIconBorderColor: colorError,\n      errorDotColor: colorError,\n      stepsNavActiveColor: colorPrimary,\n      stepsProgressSize: controlHeightLG,\n      // Steps inline variable\n      inlineDotSize: 6,\n      inlineTitleColor: colorTextQuaternary,\n      inlineTailColor: colorBorderSecondary,\n    });\n\n    return [genStepsStyle(stepsToken)];\n  },\n  {\n    descriptionWidth: 140,\n  },\n);\n"
  },
  {
    "path": "components/steps/style/inline.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsInlineStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, inlineDotSize, inlineTitleColor, inlineTailColor } = token;\n  const containerPaddingTop = token.paddingXS + token.lineWidth;\n  const titleStyle = {\n    [`${componentCls}-item-container ${componentCls}-item-content ${componentCls}-item-title`]: {\n      color: inlineTitleColor,\n    },\n  };\n\n  return {\n    [`&${componentCls}-inline`]: {\n      width: 'auto',\n      display: 'inline-flex',\n\n      [`${componentCls}-item`]: {\n        flex: 'none',\n\n        '&-container': {\n          padding: `${containerPaddingTop}px ${token.paddingXXS}px 0`,\n          margin: `0 ${token.marginXXS / 2}px`,\n          borderRadius: token.borderRadiusSM,\n          cursor: 'pointer',\n          transition: `background-color ${token.motionDurationMid}`,\n          '&:hover': {\n            background: token.controlItemBgHover,\n          },\n          [`&[role='button']:hover`]: {\n            opacity: 1,\n          },\n        },\n\n        '&-icon': {\n          width: inlineDotSize,\n          height: inlineDotSize,\n          marginInlineStart: `calc(50% - ${inlineDotSize / 2}px)`,\n          [`> ${componentCls}-icon`]: {\n            top: 0,\n          },\n          [`${componentCls}-icon-dot`]: {\n            borderRadius: token.fontSizeSM / 4,\n          },\n        },\n\n        '&-content': {\n          width: 'auto',\n          marginTop: token.marginXS - token.lineWidth,\n        },\n        '&-title': {\n          color: inlineTitleColor,\n          fontSize: token.fontSizeSM,\n          lineHeight: token.lineHeightSM,\n          fontWeight: 'normal',\n          marginBottom: token.marginXXS / 2,\n        },\n        '&-description': {\n          display: 'none',\n        },\n\n        '&-tail': {\n          marginInlineStart: 0,\n          top: containerPaddingTop + inlineDotSize / 2,\n          transform: `translateY(-50%)`,\n          '&:after': {\n            width: '100%',\n            height: token.lineWidth,\n            borderRadius: 0,\n            marginInlineStart: 0,\n            background: inlineTailColor,\n          },\n        },\n\n        [`&:first-child ${componentCls}-item-tail`]: {\n          width: '50%',\n          marginInlineStart: '50%',\n        },\n        [`&:last-child ${componentCls}-item-tail`]: {\n          display: 'block',\n          width: '50%',\n        },\n\n        '&-wait': {\n          [`${componentCls}-item-icon ${componentCls}-icon ${componentCls}-icon-dot`]: {\n            backgroundColor: token.colorBorderBg,\n            border: `${token.lineWidth}px ${token.lineType} ${inlineTailColor}`,\n          },\n          ...titleStyle,\n        },\n        '&-finish': {\n          [`${componentCls}-item-tail::after`]: {\n            backgroundColor: inlineTailColor,\n          },\n          [`${componentCls}-item-icon ${componentCls}-icon ${componentCls}-icon-dot`]: {\n            backgroundColor: inlineTailColor,\n            border: `${token.lineWidth}px ${token.lineType} ${inlineTailColor}`,\n          },\n          ...titleStyle,\n        },\n        '&-error': titleStyle,\n        '&-active, &-process': {\n          [`${componentCls}-item-icon`]: {\n            width: inlineDotSize,\n            height: inlineDotSize,\n            marginInlineStart: `calc(50% - ${inlineDotSize / 2}px)`,\n            top: 0,\n          },\n          ...titleStyle,\n        },\n\n        [`&:not(${componentCls}-item-active) > ${componentCls}-item-container[role='button']:hover`]:\n          {\n            [`${componentCls}-item-title`]: {\n              color: inlineTitleColor,\n            },\n          },\n      },\n    },\n  };\n};\n\nexport default genStepsInlineStyle;\n"
  },
  {
    "path": "components/steps/style/label-placement.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsLabelPlacementStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, stepsIconSize, lineHeight, stepsSmallIconSize } = token;\n\n  return {\n    [`&${componentCls}-label-vertical`]: {\n      [`${componentCls}-item`]: {\n        overflow: 'visible',\n\n        '&-tail': {\n          marginInlineStart: stepsIconSize / 2 + token.controlHeightLG,\n          padding: `${token.paddingXXS}px ${token.paddingLG}px`,\n        },\n\n        '&-content': {\n          display: 'block',\n          width: (stepsIconSize / 2 + token.controlHeightLG) * 2,\n          marginTop: token.marginSM,\n          textAlign: 'center',\n        },\n\n        '&-icon': {\n          display: 'inline-block',\n          marginInlineStart: token.controlHeightLG,\n        },\n\n        '&-title': {\n          paddingInlineEnd: 0,\n          paddingInlineStart: 0,\n\n          '&::after': {\n            display: 'none',\n          },\n        },\n\n        '&-subtitle': {\n          display: 'block',\n          marginBottom: token.marginXXS,\n          marginInlineStart: 0,\n          lineHeight,\n        },\n      },\n      [`&${componentCls}-small:not(${componentCls}-dot)`]: {\n        [`${componentCls}-item`]: {\n          '&-icon': {\n            marginInlineStart: token.controlHeightLG + (stepsIconSize - stepsSmallIconSize) / 2,\n          },\n        },\n      },\n    },\n  };\n};\nexport default genStepsLabelPlacementStyle;\n"
  },
  {
    "path": "components/steps/style/nav.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { textEllipsis } from '../../style';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsNavStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const {\n    componentCls,\n    stepsNavContentMaxWidth,\n    stepsNavArrowColor,\n    stepsNavActiveColor,\n    motionDurationSlow,\n  } = token;\n\n  return {\n    [`&${componentCls}-navigation`]: {\n      paddingTop: token.paddingSM,\n\n      [`&${componentCls}-small`]: {\n        [`${componentCls}-item`]: {\n          '&-container': {\n            marginInlineStart: -token.marginSM,\n          },\n        },\n      },\n\n      [`${componentCls}-item`]: {\n        overflow: 'visible',\n        textAlign: 'center',\n\n        '&-container': {\n          display: 'inline-block',\n          height: '100%',\n          marginInlineStart: -token.margin,\n          paddingBottom: token.paddingSM,\n          textAlign: 'start',\n          transition: `opacity ${motionDurationSlow}`,\n\n          [`${componentCls}-item-content`]: {\n            maxWidth: stepsNavContentMaxWidth,\n          },\n\n          [`${componentCls}-item-title`]: {\n            maxWidth: '100%',\n            paddingInlineEnd: 0,\n            ...textEllipsis,\n\n            '&::after': {\n              display: 'none',\n            },\n          },\n        },\n\n        [`&:not(${componentCls}-item-active)`]: {\n          [`${componentCls}-item-container[role='button']`]: {\n            cursor: 'pointer',\n\n            '&:hover': {\n              opacity: 0.85,\n            },\n          },\n        },\n\n        '&:last-child': {\n          flex: 1,\n\n          '&::after': {\n            display: 'none',\n          },\n        },\n\n        '&::after': {\n          position: 'absolute',\n          top: `calc(50% - ${token.paddingSM / 2}px)`,\n          insetInlineStart: '100%',\n          display: 'inline-block',\n          width: token.fontSizeIcon,\n          height: token.fontSizeIcon,\n          borderTop: `${token.lineWidth}px ${token.lineType} ${stepsNavArrowColor}`,\n          borderBottom: 'none',\n          borderInlineStart: 'none',\n          borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${stepsNavArrowColor}`,\n          transform: 'translateY(-50%) translateX(-50%) rotate(45deg)',\n          content: '\"\"',\n        },\n\n        '&::before': {\n          position: 'absolute',\n          bottom: 0,\n          insetInlineStart: '50%',\n          display: 'inline-block',\n          width: 0,\n          height: token.lineWidthBold,\n          backgroundColor: stepsNavActiveColor,\n          transition: `width ${motionDurationSlow}, inset-inline-start ${motionDurationSlow}`,\n          transitionTimingFunction: 'ease-out',\n          content: '\"\"',\n        },\n      },\n\n      [`${componentCls}-item${componentCls}-item-active::before`]: {\n        insetInlineStart: 0,\n        width: '100%',\n      },\n    },\n\n    [`&${componentCls}-navigation${componentCls}-vertical`]: {\n      [`> ${componentCls}-item`]: {\n        marginInlineEnd: 0,\n\n        '&::before': {\n          display: 'none',\n        },\n        [`&${componentCls}-item-active::before`]: {\n          top: 0,\n          insetInlineEnd: 0,\n          insetInlineStart: 'unset',\n          display: 'block',\n          width: token.lineWidth * 3,\n          height: `calc(100% - ${token.marginLG}px)`,\n        },\n\n        '&::after': {\n          position: 'relative',\n          insetInlineStart: '50%',\n          display: 'block',\n          width: token.controlHeight * 0.25,\n          height: token.controlHeight * 0.25,\n          marginBottom: token.marginXS,\n          textAlign: 'center',\n          transform: 'translateY(-50%) translateX(-50%) rotate(135deg)',\n        },\n        [`> ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n          visibility: 'hidden',\n        },\n      },\n    },\n\n    [`&${componentCls}-navigation${componentCls}-horizontal`]: {\n      [`> ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n        visibility: 'hidden',\n      },\n    },\n  };\n};\nexport default genStepsNavStyle;\n"
  },
  {
    "path": "components/steps/style/progress-dot.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsProgressDotStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const {\n    componentCls,\n    descriptionWidth,\n    lineHeight,\n    stepsCurrentDotSize,\n    stepsDotSize,\n    motionDurationSlow,\n  } = token;\n\n  return {\n    [`&${componentCls}-dot, &${componentCls}-dot${componentCls}-small`]: {\n      [`${componentCls}-item`]: {\n        '&-title': {\n          lineHeight,\n        },\n\n        '&-tail': {\n          top: Math.floor((token.stepsDotSize - token.lineWidth * 3) / 2),\n          width: '100%',\n          marginTop: 0,\n          marginBottom: 0,\n          marginInline: `${descriptionWidth / 2}px 0`,\n          padding: 0,\n\n          '&::after': {\n            width: `calc(100% - ${token.marginSM * 2}px)`,\n            height: token.lineWidth * 3,\n            marginInlineStart: token.marginSM,\n          },\n        },\n        '&-icon': {\n          width: stepsDotSize,\n          height: stepsDotSize,\n          marginInlineStart: (token.descriptionWidth - stepsDotSize) / 2,\n          paddingInlineEnd: 0,\n          lineHeight: `${stepsDotSize}px`,\n          background: 'transparent',\n          border: 0,\n\n          [`${componentCls}-icon-dot`]: {\n            position: 'relative',\n            float: 'left',\n            width: '100%',\n            height: '100%',\n            borderRadius: 100, // very large number\n            transition: `all ${motionDurationSlow}`,\n\n            /* expand hover area */\n            '&::after': {\n              position: 'absolute',\n              top: -token.marginSM,\n              insetInlineStart: (stepsDotSize - token.controlHeightLG * 1.5) / 2,\n              width: token.controlHeightLG * 1.5,\n              height: token.controlHeight,\n              background: 'transparent',\n              content: '\"\"',\n            },\n          },\n        },\n\n        '&-content': {\n          width: descriptionWidth,\n        },\n        [`&-process ${componentCls}-item-icon`]: {\n          position: 'relative',\n          top: (stepsDotSize - stepsCurrentDotSize) / 2,\n          width: stepsCurrentDotSize,\n          height: stepsCurrentDotSize,\n          lineHeight: `${stepsCurrentDotSize}px`,\n          background: 'none',\n          marginInlineStart: (token.descriptionWidth - stepsCurrentDotSize) / 2,\n        },\n        [`&-process ${componentCls}-icon`]: {\n          [`&:first-child ${componentCls}-icon-dot`]: {\n            insetInlineStart: 0,\n          },\n        },\n      },\n    },\n    [`&${componentCls}-vertical${componentCls}-dot`]: {\n      [`${componentCls}-item-icon`]: {\n        marginTop: (token.controlHeight - stepsDotSize) / 2,\n        marginInlineStart: 0,\n        background: 'none',\n      },\n      [`${componentCls}-item-process ${componentCls}-item-icon`]: {\n        marginTop: (token.controlHeight - stepsCurrentDotSize) / 2,\n        top: 0,\n        insetInlineStart: (stepsDotSize - stepsCurrentDotSize) / 2,\n        marginInlineStart: 0,\n      },\n\n      // https://github.com/ant-design/ant-design/issues/18354\n      [`${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n        top: (token.controlHeight - stepsDotSize) / 2,\n        insetInlineStart: 0,\n        margin: 0,\n        padding: `${stepsDotSize + token.paddingXS}px 0 ${token.paddingXS}px`,\n\n        '&::after': {\n          marginInlineStart: (stepsDotSize - token.lineWidth) / 2,\n        },\n      },\n\n      [`&${componentCls}-small`]: {\n        [`${componentCls}-item-icon`]: {\n          marginTop: (token.controlHeightSM - stepsDotSize) / 2,\n        },\n        [`${componentCls}-item-process ${componentCls}-item-icon`]: {\n          marginTop: (token.controlHeightSM - stepsCurrentDotSize) / 2,\n        },\n\n        [`${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n          top: (token.controlHeightSM - stepsDotSize) / 2,\n        },\n      },\n\n      [`${componentCls}-item:first-child ${componentCls}-icon-dot`]: {\n        insetInlineStart: 0,\n      },\n      [`${componentCls}-item-content`]: {\n        width: 'inherit',\n      },\n    },\n  };\n};\n\nexport default genStepsProgressDotStyle;\n"
  },
  {
    "path": "components/steps/style/progress.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsProgressStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { antCls, componentCls } = token;\n\n  return {\n    [`&${componentCls}-with-progress`]: {\n      [`${componentCls}-item`]: {\n        paddingTop: token.paddingXXS,\n\n        [`&-process ${componentCls}-item-container ${componentCls}-item-icon ${componentCls}-icon`]:\n          {\n            color: token.processIconColor,\n          },\n      },\n\n      [`&${componentCls}-vertical > ${componentCls}-item `]: {\n        paddingInlineStart: token.paddingXXS,\n        [`> ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n          top: token.marginXXS,\n          insetInlineStart: token.stepsIconSize / 2 - token.lineWidth + token.paddingXXS,\n        },\n      },\n\n      [`&, &${componentCls}-small`]: {\n        [`&${componentCls}-horizontal ${componentCls}-item:first-child`]: {\n          paddingBottom: token.paddingXXS,\n          paddingInlineStart: token.paddingXXS,\n        },\n      },\n\n      [`&${componentCls}-small${componentCls}-vertical > ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]:\n        {\n          insetInlineStart: token.stepsSmallIconSize / 2 - token.lineWidth + token.paddingXXS,\n        },\n\n      [`&${componentCls}-label-vertical`]: {\n        [`${componentCls}-item ${componentCls}-item-tail`]: {\n          top: token.margin - 2 * token.lineWidth,\n        },\n      },\n\n      [`${componentCls}-item-icon`]: {\n        position: 'relative',\n\n        [`${antCls}-progress`]: {\n          position: 'absolute',\n          insetBlockStart:\n            (token.stepsIconSize - token.stepsProgressSize - token.lineWidth * 2) / 2,\n          insetInlineStart:\n            (token.stepsIconSize - token.stepsProgressSize - token.lineWidth * 2) / 2,\n        },\n      },\n    },\n  };\n};\n\nexport default genStepsProgressStyle;\n"
  },
  {
    "path": "components/steps/style/rtl.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsRTLStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`&${componentCls}-rtl`]: {\n      direction: 'rtl',\n\n      [`${componentCls}-item`]: {\n        '&-subtitle': {\n          float: 'left',\n        },\n      },\n\n      // nav\n      [`&${componentCls}-navigation`]: {\n        [`${componentCls}-item::after`]: {\n          transform: 'rotate(-45deg)',\n        },\n      },\n\n      // vertical\n      [`&${componentCls}-vertical`]: {\n        [`> ${componentCls}-item`]: {\n          '&::after': {\n            transform: 'rotate(225deg)',\n          },\n          [`${componentCls}-item-icon`]: {\n            float: 'right',\n          },\n        },\n      },\n\n      // progress-dot\n      [`&${componentCls}-dot`]: {\n        [`${componentCls}-item-icon ${componentCls}-icon-dot, &${componentCls}-small ${componentCls}-item-icon ${componentCls}-icon-dot`]:\n          {\n            float: 'right',\n          },\n      },\n    },\n  };\n};\nexport default genStepsRTLStyle;\n"
  },
  {
    "path": "components/steps/style/small.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsSmallStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const {\n    componentCls,\n    stepsSmallIconSize,\n    // stepsSmallIconMargin,\n    fontSizeSM,\n    fontSize,\n    colorTextDescription,\n  } = token;\n\n  return {\n    [`&${componentCls}-small`]: {\n      [`&${componentCls}-horizontal:not(${componentCls}-label-vertical) ${componentCls}-item`]: {\n        paddingInlineStart: token.paddingSM,\n        '&:first-child': {\n          paddingInlineStart: 0,\n        },\n      },\n\n      [`${componentCls}-item-icon`]: {\n        width: stepsSmallIconSize,\n        height: stepsSmallIconSize,\n        // margin: stepsSmallIconMargin,\n        marginTop: 0,\n        marginBottom: 0,\n        marginInline: `0 ${token.marginXS}px`,\n        fontSize: fontSizeSM,\n        lineHeight: `${stepsSmallIconSize}px`,\n        textAlign: 'center',\n        borderRadius: stepsSmallIconSize,\n      },\n      [`${componentCls}-item-title`]: {\n        paddingInlineEnd: token.paddingSM,\n        fontSize,\n        lineHeight: `${stepsSmallIconSize}px`,\n\n        '&::after': {\n          top: stepsSmallIconSize / 2,\n        },\n      },\n      [`${componentCls}-item-description`]: {\n        color: colorTextDescription,\n        fontSize,\n      },\n      [`${componentCls}-item-tail`]: {\n        top: stepsSmallIconSize / 2 - token.paddingXXS,\n      },\n      [`${componentCls}-item-custom ${componentCls}-item-icon`]: {\n        width: 'inherit',\n        height: 'inherit',\n        lineHeight: 'inherit',\n        background: 'none',\n        border: 0,\n        borderRadius: 0,\n        [`> ${componentCls}-icon`]: {\n          fontSize: stepsSmallIconSize,\n          lineHeight: `${stepsSmallIconSize}px`,\n          transform: 'none',\n        },\n      },\n    },\n  };\n};\nexport default genStepsSmallStyle;\n"
  },
  {
    "path": "components/steps/style/vertical.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { StepsToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genStepsVerticalStyle: GenerateStyle<StepsToken, CSSObject> = token => {\n  const { componentCls, stepsSmallIconSize, stepsIconSize } = token;\n\n  return {\n    [`&${componentCls}-vertical`]: {\n      display: 'flex',\n      flexDirection: 'column',\n\n      [`> ${componentCls}-item`]: {\n        display: 'block',\n        flex: '1 0 auto',\n        paddingInlineStart: 0,\n        overflow: 'visible',\n\n        [`${componentCls}-item-icon`]: {\n          float: 'left',\n          marginInlineEnd: token.margin,\n        },\n        [`${componentCls}-item-content`]: {\n          display: 'block',\n          minHeight: token.controlHeight * 1.5,\n          overflow: 'hidden',\n        },\n        [`${componentCls}-item-title`]: {\n          lineHeight: `${stepsIconSize}px`,\n        },\n        [`${componentCls}-item-description`]: {\n          paddingBottom: token.paddingSM,\n        },\n      },\n      [`> ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: {\n        position: 'absolute',\n        top: 0,\n        insetInlineStart: token.stepsIconSize / 2 - token.lineWidth,\n        width: token.lineWidth,\n        height: '100%',\n        padding: `${stepsIconSize + token.marginXXS * 1.5}px 0 ${token.marginXXS * 1.5}px`,\n\n        '&::after': {\n          width: token.lineWidth,\n          height: '100%',\n        },\n      },\n      [`> ${componentCls}-item:not(:last-child) > ${componentCls}-item-container > ${componentCls}-item-tail`]:\n        {\n          display: 'block',\n        },\n      [` > ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-content > ${componentCls}-item-title`]:\n        {\n          '&::after': {\n            display: 'none',\n          },\n        },\n      [`&${componentCls}-small ${componentCls}-item-container`]: {\n        [`${componentCls}-item-tail`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: token.stepsSmallIconSize / 2 - token.lineWidth,\n          padding: `${stepsSmallIconSize + token.marginXXS * 1.5}px 0 ${token.marginXXS * 1.5}px`,\n        },\n        [`${componentCls}-item-title`]: {\n          lineHeight: `${stepsSmallIconSize}px`,\n        },\n      },\n    },\n  };\n};\nexport default genStepsVerticalStyle;\n"
  },
  {
    "path": "components/style/compact-item-vertical.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSInterpolation, CSSObject } from '../_util/cssinjs';\nimport type { DerivativeToken, FullToken } from '../theme/internal';\nimport type { OverrideComponent } from '../theme/util/genComponentStyleHook';\n\nfunction compactItemVerticalBorder(token: DerivativeToken, parentCls: string): CSSObject {\n  return {\n    // border collapse\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginBottom: -token.lineWidth,\n    },\n\n    '&-item': {\n      '&:hover,&:focus,&:active': {\n        zIndex: 2,\n      },\n\n      '&[disabled]': {\n        zIndex: 0,\n      },\n    },\n  };\n}\n\nfunction compactItemBorderVerticalRadius(prefixCls: string, parentCls: string): CSSObject {\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: {\n      borderRadius: 0,\n    },\n\n    [`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderEndEndRadius: 0,\n        borderEndStartRadius: 0,\n      },\n    },\n\n    [`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderStartStartRadius: 0,\n        borderStartEndRadius: 0,\n      },\n    },\n  };\n}\n\nexport function genCompactItemVerticalStyle<T extends OverrideComponent>(\n  token: FullToken<T>,\n): CSSInterpolation {\n  const compactCls = `${token.componentCls}-compact-vertical`;\n\n  return {\n    [compactCls]: {\n      ...compactItemVerticalBorder(token, compactCls),\n      ...compactItemBorderVerticalRadius(token.componentCls, compactCls),\n    },\n  };\n}\n"
  },
  {
    "path": "components/style/compact-item.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSInterpolation, CSSObject } from '../_util/cssinjs';\nimport type { DerivativeToken, FullToken } from '../theme/internal';\nimport type { OverrideComponent } from '../theme/util/genComponentStyleHook';\n\ninterface CompactItemOptions {\n  focus?: boolean;\n  /**\n   * Some component borders are implemented on child elements\n   * like `Select`\n   */\n  borderElCls?: string;\n  /**\n   * Some components have special `focus` className especially with popovers\n   * like `Select` and `DatePicker`\n   */\n  focusElCls?: string;\n}\n\n// handle border collapse\nfunction compactItemBorder(\n  token: DerivativeToken,\n  parentCls: string,\n  options: CompactItemOptions,\n): CSSObject {\n  const { focusElCls, focus, borderElCls } = options;\n  const childCombinator = borderElCls ? '> *' : '';\n  const hoverEffects = ['hover', focus ? 'focus' : null, 'active']\n    .filter(Boolean)\n    .map(n => `&:${n} ${childCombinator}`)\n    .join(',');\n  return {\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginInlineEnd: -token.lineWidth,\n    },\n\n    '&-item': {\n      [hoverEffects]: {\n        zIndex: 2,\n      },\n\n      ...(focusElCls\n        ? {\n            [`&${focusElCls}`]: {\n              zIndex: 2,\n            },\n          }\n        : {}),\n\n      [`&[disabled] ${childCombinator}`]: {\n        zIndex: 0,\n      },\n    },\n  };\n}\n\n// handle border-radius\nfunction compactItemBorderRadius(\n  prefixCls: string,\n  parentCls: string,\n  options: CompactItemOptions,\n): CSSObject {\n  const { borderElCls } = options;\n  const childCombinator = borderElCls ? `> ${borderElCls}` : '';\n\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: {\n      borderRadius: 0,\n    },\n\n    [`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]:\n        {\n          borderStartEndRadius: 0,\n          borderEndEndRadius: 0,\n        },\n    },\n\n    [`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]:\n        {\n          borderStartStartRadius: 0,\n          borderEndStartRadius: 0,\n        },\n    },\n  };\n}\n\nexport function genCompactItemStyle<T extends OverrideComponent>(\n  token: FullToken<T>,\n  options: CompactItemOptions = { focus: true },\n): CSSInterpolation {\n  const { componentCls } = token;\n\n  const compactCls = `${componentCls}-compact`;\n\n  return {\n    [compactCls]: {\n      ...compactItemBorder(token, compactCls, options),\n      ...compactItemBorderRadius(componentCls, compactCls, options),\n    },\n  };\n}\n"
  },
  {
    "path": "components/style/index.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSObject } from '../_util/cssinjs';\nimport type { DerivativeToken } from '../theme/internal';\n\nexport { operationUnit } from './operationUnit';\nexport { roundedArrow } from './roundedArrow';\nexport { genPresetColor } from './presetColor';\n\nexport const textEllipsis: CSSObject = {\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  textOverflow: 'ellipsis',\n};\n\nexport const resetComponent = (token: DerivativeToken): CSSObject => ({\n  boxSizing: 'border-box',\n  margin: 0,\n  padding: 0,\n  color: token.colorText,\n  fontSize: token.fontSize,\n  // font-variant: @font-variant-base;\n  lineHeight: token.lineHeight,\n  listStyle: 'none',\n  // font-feature-settings: @font-feature-settings-base;\n  fontFamily: token.fontFamily,\n});\n\nexport const resetIcon = (): CSSObject => ({\n  display: 'inline-flex',\n  alignItems: 'center',\n  color: 'inherit',\n  fontStyle: 'normal',\n  lineHeight: 0,\n  textAlign: 'center',\n  textTransform: 'none',\n  // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n  verticalAlign: '-0.125em',\n  textRendering: 'optimizeLegibility',\n  '-webkit-font-smoothing': 'antialiased',\n  '-moz-osx-font-smoothing': 'grayscale',\n\n  '> *': {\n    lineHeight: 1,\n  },\n\n  svg: {\n    display: 'inline-block',\n  },\n});\n\nexport const clearFix = (): CSSObject => ({\n  // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229\n  '&::before': {\n    display: 'table',\n    content: '\"\"',\n  },\n\n  '&::after': {\n    // https://github.com/ant-design/ant-design/issues/21864\n    display: 'table',\n    clear: 'both',\n    content: '\"\"',\n  },\n});\n\nexport const genLinkStyle = (token: DerivativeToken): CSSObject => ({\n  a: {\n    color: token.colorLink,\n    textDecoration: token.linkDecoration,\n    backgroundColor: 'transparent', // remove the gray background on active links in IE 10.\n    outline: 'none',\n    cursor: 'pointer',\n    transition: `color ${token.motionDurationSlow}`,\n    '-webkit-text-decoration-skip': 'objects', // remove gaps in links underline in iOS 8+ and Safari 8+.\n\n    '&:hover': {\n      color: token.colorLinkHover,\n    },\n\n    '&:active': {\n      color: token.colorLinkActive,\n    },\n\n    [`&:active,\n  &:hover`]: {\n      textDecoration: token.linkHoverDecoration,\n      outline: 0,\n    },\n\n    // https://github.com/ant-design/ant-design/issues/22503\n    '&:focus': {\n      textDecoration: token.linkFocusDecoration,\n      outline: 0,\n    },\n\n    '&[disabled]': {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed',\n    },\n  },\n});\n\nexport const genCommonStyle = (token: DerivativeToken, componentPrefixCls: string): CSSObject => {\n  const { fontFamily, fontSize } = token;\n\n  const rootPrefixSelector = `[class^=\"${componentPrefixCls}\"], [class*=\" ${componentPrefixCls}\"]`;\n\n  return {\n    [rootPrefixSelector]: {\n      fontFamily,\n      fontSize,\n      boxSizing: 'border-box',\n\n      '&::before, &::after': {\n        boxSizing: 'border-box',\n      },\n\n      [rootPrefixSelector]: {\n        boxSizing: 'border-box',\n\n        '&::before, &::after': {\n          boxSizing: 'border-box',\n        },\n      },\n    },\n  };\n};\n\nexport const genFocusOutline = (token: DerivativeToken): CSSObject => ({\n  outline: `${token.lineWidthBold}px solid ${token.colorPrimaryBorder}`,\n  outlineOffset: 1,\n  transition: 'outline-offset 0s, outline 0s',\n});\n\nexport const genFocusStyle = (token: DerivativeToken): CSSObject => ({\n  '&:focus-visible': {\n    ...genFocusOutline(token),\n  },\n});\n"
  },
  {
    "path": "components/style/motion/collapse.ts",
    "content": "import type { AliasToken, GenerateStyle } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\n\nconst genCollapseMotion: GenerateStyle<TokenWithCommonCls<AliasToken>> = token => ({\n  [token.componentCls]: {\n    // For common/openAnimation\n    [`${token.antCls}-motion-collapse-legacy`]: {\n      overflow: 'hidden',\n\n      '&-active': {\n        transition: `height ${token.motionDurationMid} ${token.motionEaseInOut},\n        opacity ${token.motionDurationMid} ${token.motionEaseInOut} !important`,\n      },\n    },\n\n    [`${token.antCls}-motion-collapse`]: {\n      overflow: 'hidden',\n      transition: `height ${token.motionDurationMid} ${token.motionEaseInOut},\n        opacity ${token.motionDurationMid} ${token.motionEaseInOut} !important`,\n    },\n  },\n});\n\nexport default genCollapseMotion;\n"
  },
  {
    "path": "components/style/motion/fade.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { AliasToken } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { initMotion } from './motion';\n\nexport const fadeIn = new Keyframes('antFadeIn', {\n  '0%': {\n    opacity: 0,\n  },\n  '100%': {\n    opacity: 1,\n  },\n});\n\nexport const fadeOut = new Keyframes('antFadeOut', {\n  '0%': {\n    opacity: 1,\n  },\n  '100%': {\n    opacity: 0,\n  },\n});\n\nexport const initFadeMotion = (\n  token: TokenWithCommonCls<AliasToken>,\n  sameLevel = false,\n): CSSInterpolation => {\n  const { antCls } = token;\n  const motionCls = `${antCls}-fade`;\n  const sameLevelPrefix = sameLevel ? '&' : '';\n\n  return [\n    initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel),\n    {\n      [`\n        ${sameLevelPrefix}${motionCls}-enter,\n        ${sameLevelPrefix}${motionCls}-appear\n      `]: {\n        opacity: 0,\n        animationTimingFunction: 'linear',\n      },\n\n      [`${sameLevelPrefix}${motionCls}-leave`]: {\n        animationTimingFunction: 'linear',\n      },\n    },\n  ];\n};\n"
  },
  {
    "path": "components/style/motion/index.ts",
    "content": "import { fadeIn, fadeOut, initFadeMotion } from './fade';\nimport {\n  initMoveMotion,\n  moveDownIn,\n  moveDownOut,\n  moveLeftIn,\n  moveLeftOut,\n  moveRightIn,\n  moveRightOut,\n  moveUpIn,\n  moveUpOut,\n} from './move';\nimport {\n  initSlideMotion,\n  slideDownIn,\n  slideDownOut,\n  slideLeftIn,\n  slideLeftOut,\n  slideRightIn,\n  slideRightOut,\n  slideUpIn,\n  slideUpOut,\n} from './slide';\nimport {\n  initZoomMotion,\n  zoomBigIn,\n  zoomBigOut,\n  zoomDownIn,\n  zoomDownOut,\n  zoomIn,\n  zoomLeftIn,\n  zoomLeftOut,\n  zoomOut,\n  zoomRightIn,\n  zoomRightOut,\n  zoomUpIn,\n  zoomUpOut,\n} from './zoom';\nimport genCollapseMotion from './collapse';\n\nexport {\n  initSlideMotion,\n  slideUpIn,\n  slideUpOut,\n  slideDownIn,\n  slideDownOut,\n  slideLeftIn,\n  slideLeftOut,\n  slideRightIn,\n  slideRightOut,\n  zoomOut,\n  zoomIn,\n  zoomBigIn,\n  zoomLeftOut,\n  zoomBigOut,\n  zoomLeftIn,\n  zoomRightIn,\n  zoomUpIn,\n  zoomRightOut,\n  zoomUpOut,\n  zoomDownIn,\n  zoomDownOut,\n  initZoomMotion,\n  fadeIn,\n  fadeOut,\n  initFadeMotion,\n  moveRightOut,\n  moveRightIn,\n  moveLeftOut,\n  moveLeftIn,\n  moveDownOut,\n  moveDownIn,\n  moveUpIn,\n  moveUpOut,\n  initMoveMotion,\n  genCollapseMotion,\n};\n"
  },
  {
    "path": "components/style/motion/motion.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSObject, Keyframes } from '../../_util/cssinjs';\n\nconst initMotionCommon = (duration: string): CSSObject => ({\n  animationDuration: duration,\n  animationFillMode: 'both',\n});\n\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nconst initMotionCommonLeave = (duration: string): CSSObject => ({\n  animationDuration: duration,\n  animationFillMode: 'both',\n});\n\nexport const initMotion = (\n  motionCls: string,\n  inKeyframes: Keyframes,\n  outKeyframes: Keyframes,\n  duration: string,\n  sameLevel = false,\n): CSSObject => {\n  const sameLevelPrefix = sameLevel ? '&' : '';\n\n  return {\n    [`\n      ${sameLevelPrefix}${motionCls}-enter,\n      ${sameLevelPrefix}${motionCls}-appear\n    `]: {\n      ...initMotionCommon(duration),\n      animationPlayState: 'paused',\n    },\n\n    [`${sameLevelPrefix}${motionCls}-leave`]: {\n      ...initMotionCommonLeave(duration),\n      animationPlayState: 'paused',\n    },\n\n    [`\n      ${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,\n      ${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active\n    `]: {\n      animationName: inKeyframes,\n      animationPlayState: 'running',\n    },\n\n    [`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {\n      animationName: outKeyframes,\n      animationPlayState: 'running',\n      pointerEvents: 'none',\n    },\n  };\n};\n"
  },
  {
    "path": "components/style/motion/move.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { AliasToken } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { initMotion } from './motion';\n\nexport const moveDownIn = new Keyframes('antMoveDownIn', {\n  '0%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n});\n\nexport const moveDownOut = new Keyframes('antMoveDownOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n});\n\nexport const moveLeftIn = new Keyframes('antMoveLeftIn', {\n  '0%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n});\n\nexport const moveLeftOut = new Keyframes('antMoveLeftOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n});\n\nexport const moveRightIn = new Keyframes('antMoveRightIn', {\n  '0%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n});\n\nexport const moveRightOut = new Keyframes('antMoveRightOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n});\n\nexport const moveUpIn = new Keyframes('antMoveUpIn', {\n  '0%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n});\n\nexport const moveUpOut = new Keyframes('antMoveUpOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0,\n  },\n});\n\ntype MoveMotionTypes = 'move-up' | 'move-down' | 'move-left' | 'move-right';\nconst moveMotion: Record<MoveMotionTypes, { inKeyframes: Keyframes; outKeyframes: Keyframes }> = {\n  'move-up': {\n    inKeyframes: moveUpIn,\n    outKeyframes: moveUpOut,\n  },\n  'move-down': {\n    inKeyframes: moveDownIn,\n    outKeyframes: moveDownOut,\n  },\n  'move-left': {\n    inKeyframes: moveLeftIn,\n    outKeyframes: moveLeftOut,\n  },\n  'move-right': {\n    inKeyframes: moveRightIn,\n    outKeyframes: moveRightOut,\n  },\n};\n\nexport const initMoveMotion = (\n  token: TokenWithCommonCls<AliasToken>,\n  motionName: MoveMotionTypes,\n): CSSInterpolation => {\n  const { antCls } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const { inKeyframes, outKeyframes } = moveMotion[motionName];\n\n  return [\n    initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid),\n    {\n      [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n        opacity: 0,\n        animationTimingFunction: token.motionEaseOutCirc,\n      },\n\n      [`${motionCls}-leave`]: {\n        animationTimingFunction: token.motionEaseInOutCirc,\n      },\n    },\n  ];\n};\n"
  },
  {
    "path": "components/style/motion/slide.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { AliasToken } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { initMotion } from './motion';\n\nexport const slideUpIn = new Keyframes('antSlideUpIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1,\n  },\n});\n\nexport const slideUpOut = new Keyframes('antSlideUpOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0,\n  },\n});\n\nexport const slideDownIn = new Keyframes('antSlideDownIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1,\n  },\n});\n\nexport const slideDownOut = new Keyframes('antSlideDownOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0,\n  },\n});\n\nexport const slideLeftIn = new Keyframes('antSlideLeftIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1,\n  },\n});\n\nexport const slideLeftOut = new Keyframes('antSlideLeftOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0,\n  },\n});\n\nexport const slideRightIn = new Keyframes('antSlideRightIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1,\n  },\n});\n\nexport const slideRightOut = new Keyframes('antSlideRightOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1,\n  },\n\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0,\n  },\n});\n\ntype SlideMotionTypes = 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';\nconst slideMotion: Record<SlideMotionTypes, { inKeyframes: Keyframes; outKeyframes: Keyframes }> = {\n  'slide-up': {\n    inKeyframes: slideUpIn,\n    outKeyframes: slideUpOut,\n  },\n  'slide-down': {\n    inKeyframes: slideDownIn,\n    outKeyframes: slideDownOut,\n  },\n  'slide-left': {\n    inKeyframes: slideLeftIn,\n    outKeyframes: slideLeftOut,\n  },\n  'slide-right': {\n    inKeyframes: slideRightIn,\n    outKeyframes: slideRightOut,\n  },\n};\n\nexport const initSlideMotion = (\n  token: TokenWithCommonCls<AliasToken>,\n  motionName: SlideMotionTypes,\n): CSSInterpolation => {\n  const { antCls } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const { inKeyframes, outKeyframes } = slideMotion[motionName];\n\n  return [\n    initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid),\n\n    {\n      [`\n      ${motionCls}-enter,\n      ${motionCls}-appear\n    `]: {\n        transform: 'scale(0)',\n        transformOrigin: '0% 0%',\n        opacity: 0,\n        animationTimingFunction: token.motionEaseOutQuint,\n      },\n\n      [`${motionCls}-leave`]: {\n        animationTimingFunction: token.motionEaseInQuint,\n      },\n    },\n  ];\n};\n"
  },
  {
    "path": "components/style/motion/zoom.ts",
    "content": "import type { CSSInterpolation } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport type { AliasToken } from '../../theme/internal';\nimport type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';\nimport { initMotion } from './motion';\n\nexport const zoomIn = new Keyframes('antZoomIn', {\n  '0%': {\n    transform: 'scale(0.2)',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1,\n  },\n});\n\nexport const zoomOut = new Keyframes('antZoomOut', {\n  '0%': {\n    transform: 'scale(1)',\n  },\n\n  '100%': {\n    transform: 'scale(0.2)',\n    opacity: 0,\n  },\n});\n\nexport const zoomBigIn = new Keyframes('antZoomBigIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1,\n  },\n});\n\nexport const zoomBigOut = new Keyframes('antZoomBigOut', {\n  '0%': {\n    transform: 'scale(1)',\n  },\n\n  '100%': {\n    transform: 'scale(0.8)',\n    opacity: 0,\n  },\n});\n\nexport const zoomUpIn = new Keyframes('antZoomUpIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%',\n  },\n});\n\nexport const zoomUpOut = new Keyframes('antZoomUpOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%',\n  },\n\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0,\n  },\n});\n\nexport const zoomLeftIn = new Keyframes('antZoomLeftIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%',\n  },\n});\n\nexport const zoomLeftOut = new Keyframes('antZoomLeftOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%',\n  },\n\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0,\n  },\n});\n\nexport const zoomRightIn = new Keyframes('antZoomRightIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%',\n  },\n});\n\nexport const zoomRightOut = new Keyframes('antZoomRightOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%',\n  },\n\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0,\n  },\n});\n\nexport const zoomDownIn = new Keyframes('antZoomDownIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0,\n  },\n\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%',\n  },\n});\n\nexport const zoomDownOut = new Keyframes('antZoomDownOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%',\n  },\n\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0,\n  },\n});\n\ntype ZoomMotionTypes =\n  | 'zoom'\n  | 'zoom-big'\n  | 'zoom-big-fast'\n  | 'zoom-left'\n  | 'zoom-right'\n  | 'zoom-up'\n  | 'zoom-down';\nconst zoomMotion: Record<ZoomMotionTypes, { inKeyframes: Keyframes; outKeyframes: Keyframes }> = {\n  zoom: {\n    inKeyframes: zoomIn,\n    outKeyframes: zoomOut,\n  },\n  'zoom-big': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut,\n  },\n  'zoom-big-fast': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut,\n  },\n  'zoom-left': {\n    inKeyframes: zoomLeftIn,\n    outKeyframes: zoomLeftOut,\n  },\n  'zoom-right': {\n    inKeyframes: zoomRightIn,\n    outKeyframes: zoomRightOut,\n  },\n  'zoom-up': {\n    inKeyframes: zoomUpIn,\n    outKeyframes: zoomUpOut,\n  },\n  'zoom-down': {\n    inKeyframes: zoomDownIn,\n    outKeyframes: zoomDownOut,\n  },\n};\n\nexport const initZoomMotion = (\n  token: TokenWithCommonCls<AliasToken>,\n  motionName: ZoomMotionTypes,\n): CSSInterpolation => {\n  const { antCls } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const { inKeyframes, outKeyframes } = zoomMotion[motionName];\n\n  return [\n    initMotion(\n      motionCls,\n      inKeyframes,\n      outKeyframes,\n      motionName === 'zoom-big-fast' ? token.motionDurationFast : token.motionDurationMid,\n    ),\n    {\n      [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n        transform: 'scale(0)',\n        opacity: 0,\n        animationTimingFunction: token.motionEaseOutCirc,\n\n        '&-prepare': {\n          transform: 'none',\n        },\n      },\n\n      [`${motionCls}-leave`]: {\n        animationTimingFunction: token.motionEaseInOutCirc,\n      },\n    },\n  ];\n};\n"
  },
  {
    "path": "components/style/operationUnit.ts",
    "content": "import type { CSSObject } from '../_util/cssinjs';\nimport type { DerivativeToken } from '../theme/internal';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const operationUnit = (token: DerivativeToken): CSSObject => ({\n  // FIXME: This use link but is a operation unit. Seems should be a colorPrimary.\n  // And Typography use this to generate link style which should not do this.\n  color: token.colorLink,\n  textDecoration: 'none',\n  outline: 'none',\n  cursor: 'pointer',\n  transition: `color ${token.motionDurationSlow}`,\n\n  '&:focus, &:hover': {\n    color: token.colorLinkHover,\n  },\n\n  '&:active': {\n    color: token.colorLinkActive,\n  },\n});\n"
  },
  {
    "path": "components/style/placementArrow.ts",
    "content": "import type { CSSInterpolation } from '../_util/cssinjs';\nimport type { AliasToken } from '../theme/internal';\nimport type { TokenWithCommonCls } from '../theme/util/genComponentStyleHook';\nimport { roundedArrow } from './roundedArrow';\n\nfunction connectArrowCls(classList: string[], showArrowCls = '') {\n  return classList.map(cls => `${showArrowCls}${cls}`).join(',');\n}\n\nexport const MAX_VERTICAL_CONTENT_RADIUS = 8;\n\nexport function getArrowOffset(options: {\n  sizePopupArrow: number;\n  contentRadius: number;\n  borderRadiusOuter: number;\n  limitVerticalRadius?: boolean;\n}) {\n  const maxVerticalContentRadius = MAX_VERTICAL_CONTENT_RADIUS;\n  const { sizePopupArrow, contentRadius, borderRadiusOuter, limitVerticalRadius } = options;\n  const arrowInnerOffset = sizePopupArrow / 2 - Math.ceil(borderRadiusOuter * (Math.sqrt(2) - 1));\n  const dropdownArrowOffset = (contentRadius > 12 ? contentRadius + 2 : 12) - arrowInnerOffset;\n  const dropdownArrowOffsetVertical = limitVerticalRadius\n    ? maxVerticalContentRadius - arrowInnerOffset\n    : dropdownArrowOffset;\n  return { dropdownArrowOffset, dropdownArrowOffsetVertical };\n}\n\nexport default function getArrowStyle<Token extends TokenWithCommonCls<AliasToken>>(\n  token: Token,\n  options: {\n    colorBg: string;\n    showArrowCls?: string;\n    contentRadius?: number;\n    limitVerticalRadius?: boolean;\n  },\n): CSSInterpolation {\n  const {\n    componentCls,\n    sizePopupArrow,\n    marginXXS,\n    borderRadiusXS,\n    borderRadiusOuter,\n    boxShadowPopoverArrow,\n  } = token;\n\n  const {\n    colorBg,\n    showArrowCls,\n    contentRadius = token.borderRadiusLG,\n    limitVerticalRadius,\n  } = options;\n\n  const { dropdownArrowOffsetVertical, dropdownArrowOffset } = getArrowOffset({\n    sizePopupArrow,\n    contentRadius,\n    borderRadiusOuter,\n    limitVerticalRadius,\n  });\n  const dropdownArrowDistance = sizePopupArrow / 2 + marginXXS;\n\n  return {\n    [componentCls]: {\n      // ============================ Basic ============================\n      [`${componentCls}-arrow`]: [\n        {\n          position: 'absolute',\n          zIndex: 1, // lift it up so the menu wouldn't cask shadow on it\n          display: 'block',\n\n          ...roundedArrow(\n            sizePopupArrow,\n            borderRadiusXS,\n            borderRadiusOuter,\n            colorBg,\n            boxShadowPopoverArrow,\n          ),\n\n          '&:before': {\n            background: colorBg,\n          },\n        },\n      ],\n\n      // ========================== Placement ==========================\n      // Here handle the arrow position and rotate stuff\n      // >>>>> Top\n      [[\n        `&-placement-top ${componentCls}-arrow`,\n        `&-placement-topLeft ${componentCls}-arrow`,\n        `&-placement-topRight ${componentCls}-arrow`,\n      ].join(',')]: {\n        bottom: 0,\n        transform: 'translateY(100%) rotate(180deg)',\n      },\n\n      [`&-placement-top ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateX(-50%) translateY(100%) rotate(180deg)',\n      },\n\n      [`&-placement-topLeft ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      [`&-placement-topRight ${componentCls}-arrow`]: {\n        right: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      // >>>>> Bottom\n      [[\n        `&-placement-bottom ${componentCls}-arrow`,\n        `&-placement-bottomLeft ${componentCls}-arrow`,\n        `&-placement-bottomRight ${componentCls}-arrow`,\n      ].join(',')]: {\n        top: 0,\n        transform: `translateY(-100%)`,\n      },\n\n      [`&-placement-bottom ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: `translateX(-50%) translateY(-100%)`,\n      },\n\n      [`&-placement-bottomLeft ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      [`&-placement-bottomRight ${componentCls}-arrow`]: {\n        right: {\n          _skip_check_: true,\n          value: dropdownArrowOffset,\n        },\n      },\n\n      // >>>>> Left\n      [[\n        `&-placement-left ${componentCls}-arrow`,\n        `&-placement-leftTop ${componentCls}-arrow`,\n        `&-placement-leftBottom ${componentCls}-arrow`,\n      ].join(',')]: {\n        right: {\n          _skip_check_: true,\n          value: 0,\n        },\n        transform: 'translateX(100%) rotate(90deg)',\n      },\n\n      [`&-placement-left ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateY(-50%) translateX(100%) rotate(90deg)',\n      },\n\n      [`&-placement-leftTop ${componentCls}-arrow`]: {\n        top: dropdownArrowOffsetVertical,\n      },\n\n      [`&-placement-leftBottom ${componentCls}-arrow`]: {\n        bottom: dropdownArrowOffsetVertical,\n      },\n\n      // >>>>> Right\n      [[\n        `&-placement-right ${componentCls}-arrow`,\n        `&-placement-rightTop ${componentCls}-arrow`,\n        `&-placement-rightBottom ${componentCls}-arrow`,\n      ].join(',')]: {\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        transform: 'translateX(-100%) rotate(-90deg)',\n      },\n\n      [`&-placement-right ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%',\n        },\n        transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)',\n      },\n\n      [`&-placement-rightTop ${componentCls}-arrow`]: {\n        top: dropdownArrowOffsetVertical,\n      },\n\n      [`&-placement-rightBottom ${componentCls}-arrow`]: {\n        bottom: dropdownArrowOffsetVertical,\n      },\n\n      // =========================== Offset ============================\n      // Offset the popover to account for the dropdown arrow\n      // >>>>> Top\n      [connectArrowCls(\n        [`&-placement-topLeft`, `&-placement-top`, `&-placement-topRight`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingBottom: dropdownArrowDistance,\n      },\n\n      // >>>>> Bottom\n      [connectArrowCls(\n        [`&-placement-bottomLeft`, `&-placement-bottom`, `&-placement-bottomRight`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingTop: dropdownArrowDistance,\n      },\n\n      // >>>>> Left\n      [connectArrowCls(\n        [`&-placement-leftTop`, `&-placement-left`, `&-placement-leftBottom`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingRight: {\n          _skip_check_: true,\n          value: dropdownArrowDistance,\n        },\n      },\n\n      // >>>>> Right\n      [connectArrowCls(\n        [`&-placement-rightTop`, `&-placement-right`, `&-placement-rightBottom`].map(\n          cls => (cls += ':not(&-arrow-hidden)'),\n        ),\n        showArrowCls,\n      )]: {\n        paddingLeft: {\n          _skip_check_: true,\n          value: dropdownArrowDistance,\n        },\n      },\n    },\n  };\n}\n"
  },
  {
    "path": "components/style/presetColor.tsx",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSObject } from '../_util/cssinjs';\nimport type { AliasToken, PresetColorKey } from '../theme/internal';\nimport { PresetColors } from '../theme/interface';\nimport type { TokenWithCommonCls } from '../theme/util/genComponentStyleHook';\n\ninterface CalcColor {\n  /** token[`${colorKey}-1`] */\n  lightColor: string;\n  /** token[`${colorKey}-3`] */\n  lightBorderColor: string;\n  /** token[`${colorKey}-6`] */\n  darkColor: string;\n  /** token[`${colorKey}-7`] */\n  textColor: string;\n}\n\ntype GenCSS = (colorKey: PresetColorKey, calcColor: CalcColor) => CSSObject;\n\nexport function genPresetColor<Token extends TokenWithCommonCls<AliasToken>>(\n  token: Token,\n  genCss: GenCSS,\n): CSSObject {\n  return PresetColors.reduce((prev: CSSObject, colorKey: PresetColorKey) => {\n    const lightColor = token[`${colorKey}-1`];\n    const lightBorderColor = token[`${colorKey}-3`];\n    const darkColor = token[`${colorKey}-6`];\n    const textColor = token[`${colorKey}-7`];\n\n    return {\n      ...prev,\n      ...genCss(colorKey, { lightColor, lightBorderColor, darkColor, textColor }),\n    };\n  }, {} as CSSObject);\n}\n"
  },
  {
    "path": "components/style/reset.css",
    "content": "/* stylelint-disable */\nhtml,\nbody {\n  width: 100%;\n  height: 100%;\n}\ninput::-ms-clear,\ninput::-ms-reveal {\n  display: none;\n}\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n@-ms-viewport {\n  width: device-width;\n}\nbody {\n  margin: 0;\n}\n[tabindex='-1']:focus {\n  outline: none;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin-top: 0;\n  margin-bottom: 0.5em;\n  font-weight: 500;\n}\np {\n  margin-top: 0;\n  margin-bottom: 1em;\n}\nabbr[title],\nabbr[data-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline;\n  text-decoration: underline dotted;\n  border-bottom: 0;\n  cursor: help;\n}\naddress {\n  margin-bottom: 1em;\n  font-style: normal;\n  line-height: inherit;\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='number'],\ntextarea {\n  -webkit-appearance: none;\n}\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1em;\n}\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\ndt {\n  font-weight: 500;\n}\ndd {\n  margin-bottom: 0.5em;\n  margin-left: 0;\n}\nblockquote {\n  margin: 0 0 1em;\n}\ndfn {\n  font-style: italic;\n}\nb,\nstrong {\n  font-weight: bolder;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsub {\n  bottom: -0.25em;\n}\nsup {\n  top: -0.5em;\n}\npre,\ncode,\nkbd,\nsamp {\n  font-size: 1em;\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n}\npre {\n  margin-top: 0;\n  margin-bottom: 1em;\n  overflow: auto;\n}\nfigure {\n  margin: 0 0 1em;\n}\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\na,\narea,\nbutton,\n[role='button'],\ninput:not([type='range']),\nlabel,\nselect,\nsummary,\ntextarea {\n  touch-action: manipulation;\n}\ntable {\n  border-collapse: collapse;\n}\ncaption {\n  padding-top: 0.75em;\n  padding-bottom: 0.3em;\n  text-align: left;\n  caption-side: bottom;\n}\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  color: inherit;\n  font-size: inherit;\n  font-family: inherit;\n  line-height: inherit;\n}\nbutton,\ninput {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml [type='button'],\n[type='reset'],\n[type='submit'] {\n  -webkit-appearance: button;\n}\nbutton::-moz-focus-inner,\n[type='button']::-moz-focus-inner,\n[type='reset']::-moz-focus-inner,\n[type='submit']::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\ninput[type='radio'],\ninput[type='checkbox'] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type='date'],\ninput[type='time'],\ninput[type='datetime-local'],\ninput[type='month'] {\n  -webkit-appearance: listbox;\n}\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\nfieldset {\n  min-width: 0;\n  margin: 0;\n  padding: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 0.5em;\n  padding: 0;\n  color: inherit;\n  font-size: 1.5em;\n  line-height: inherit;\n  white-space: normal;\n}\nprogress {\n  vertical-align: baseline;\n}\n[type='number']::-webkit-inner-spin-button,\n[type='number']::-webkit-outer-spin-button {\n  height: auto;\n}\n[type='search'] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n[type='search']::-webkit-search-cancel-button,\n[type='search']::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\noutput {\n  display: inline-block;\n}\nsummary {\n  display: list-item;\n}\ntemplate {\n  display: none;\n}\n[hidden] {\n  display: none !important;\n}\nmark {\n  padding: 0.2em;\n  background-color: #feffe6;\n}\n"
  },
  {
    "path": "components/style/roundedArrow.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport type { CSSObject } from '../_util/cssinjs';\n\nexport const roundedArrow = (\n  width: number,\n  innerRadius: number,\n  outerRadius: number,\n  bgColor: string,\n  boxShadow: string,\n): CSSObject => {\n  const unitWidth = width / 2;\n\n  const ax = 0;\n  const ay = unitWidth;\n  const bx = (outerRadius * 1) / Math.sqrt(2);\n  const by = unitWidth - outerRadius * (1 - 1 / Math.sqrt(2));\n  const cx = unitWidth - innerRadius * (1 / Math.sqrt(2));\n  const cy = outerRadius * (Math.sqrt(2) - 1) + innerRadius * (1 / Math.sqrt(2));\n  const dx = 2 * unitWidth - cx;\n  const dy = cy;\n  const ex = 2 * unitWidth - bx;\n  const ey = by;\n  const fx = 2 * unitWidth - ax;\n  const fy = ay;\n\n  const shadowWidth = unitWidth * Math.sqrt(2) + outerRadius * (Math.sqrt(2) - 2);\n  const polygonOffset = outerRadius * (Math.sqrt(2) - 1);\n\n  return {\n    pointerEvents: 'none',\n    width,\n    height: width,\n    overflow: 'hidden',\n\n    '&::after': {\n      content: '\"\"',\n      position: 'absolute',\n      width: shadowWidth,\n      height: shadowWidth,\n      bottom: 0,\n      insetInline: 0,\n      margin: 'auto',\n      borderRadius: {\n        _skip_check_: true,\n        value: `0 0 ${innerRadius}px 0`,\n      },\n      transform: 'translateY(50%) rotate(-135deg)',\n      boxShadow,\n      zIndex: 0,\n      background: 'transparent',\n    },\n\n    '&::before': {\n      position: 'absolute',\n      bottom: 0,\n      insetInlineStart: 0,\n      width,\n      height: width / 2,\n      background: bgColor,\n      clipPath: {\n        _multi_value_: true,\n        value: [\n          `polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${\n            2 * unitWidth - polygonOffset\n          }px 100%, ${polygonOffset}px 100%)`,\n          `path('M ${ax} ${ay} A ${outerRadius} ${outerRadius} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${innerRadius} ${innerRadius} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${outerRadius} ${outerRadius} 0 0 0 ${fx} ${fy} Z')`,\n        ],\n      } as any,\n      content: '\"\"',\n    },\n  };\n};\n"
  },
  {
    "path": "components/switch/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/switch/demo/basic.vue correctly 1`] = `\n<button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n  <div class=\"ant-switch-handle\">\n    <!---->\n  </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n</button>\n`;\n\nexports[`renders ./components/switch/demo/disabled.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button disabled=\"\" type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch-disabled ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Toggle disabled</span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/switch/demo/loading.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button disabled=\"\" loading=\"true\" type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-loading ant-switch-checked ant-switch\">\n      <div class=\"ant-switch-handle\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading ant-switch-loading-icon\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button size=\"small\" disabled=\"\" loading=\"true\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch-small ant-switch-loading ant-switch\">\n      <div class=\"ant-switch-handle\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading ant-switch-loading-icon\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/switch/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button size=\"small\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch-small ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/switch/demo/text.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">开</span><span class=\"ant-switch-inner-unchecked\">关</span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">1</span><span class=\"ant-switch-inner-unchecked\">0</span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><span role=\"img\" aria-label=\"check\" class=\"anticon anticon-check\"><svg focusable=\"false\" class=\"\" data-icon=\"check\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"></path></svg></span></span><span class=\"ant-switch-inner-unchecked\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span>\n    </button></div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/switch/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Switch should has click wave effect 1`] = `\n<button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n  <div class=\"ant-switch-handle\">\n    <!---->\n  </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n</button>\n`;\n"
  },
  {
    "path": "components/switch/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('switch');\n"
  },
  {
    "path": "components/switch/__tests__/index.test.js",
    "content": "import Switch from '..';\nimport { mount } from '@vue/test-utils';\nimport focusTest from '../../../tests/shared/focusTest';\nimport { resetWarned } from '../../_util/warning';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { ref } from 'vue';\nimport { asyncExpect } from '../../../tests/utils';\n\ndescribe('Switch', () => {\n  focusTest(Switch);\n  mountTest(Switch);\n\n  it('should has click wave effect', async () => {\n    const wrapper = mount({\n      setup() {\n        const checked = ref(false);\n        return () => {\n          return (\n            <Switch\n              checked={checked.value}\n              onChange={() => (checked.value = !checked.value)}\n            ></Switch>\n          );\n        };\n      },\n    });\n    wrapper.find('.ant-switch').trigger('click');\n    await new Promise(resolve => setTimeout(resolve, 0));\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('warning if set `value`', () => {\n    resetWarned();\n\n    const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n    mount({\n      render() {\n        return <Switch value=\"\" />;\n      },\n    });\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Switch] `value` is not validate prop, do you mean `checked`?',\n    );\n    errorSpy.mockRestore();\n  });\n\n  it('customize checked value should work', async () => {\n    resetWarned();\n    const checked = ref(1);\n    const onUpdate = val => (checked.value = val);\n    const wrapper = mount({\n      render() {\n        return (\n          <Switch\n            {...{ 'onUpdate:checked': onUpdate }}\n            checked={checked.value}\n            unCheckedValue={1}\n            checkedValue={2}\n          />\n        );\n      },\n    });\n    await asyncExpect(() => {\n      wrapper.find('button').trigger('click');\n    });\n    expect(checked.value).toBe(2);\n\n    await asyncExpect(() => {\n      wrapper.find('button').trigger('click');\n    });\n    expect(checked.value).toBe(1);\n  });\n\n  it('customize checked value and children should work', async () => {\n    resetWarned();\n    const checked = ref(1);\n    const onUpdate = val => (checked.value = val);\n    const wrapper = mount({\n      render() {\n        return (\n          <Switch\n            {...{ 'onUpdate:checked': onUpdate }}\n            checked={checked.value}\n            unCheckedValue={1}\n            checkedValue={2}\n            checkedChildren=\"on\"\n            unCheckedChildren=\"off\"\n          />\n        );\n      },\n    });\n    await asyncExpect(() => {\n      wrapper.find('button').trigger('click');\n    });\n    expect(checked.value).toBe(2);\n    expect(wrapper.find('.ant-switch-inner').text()).toBe('onoff');\n\n    await asyncExpect(() => {\n      wrapper.find('button').trigger('click');\n    });\n    expect(checked.value).toBe(1);\n    expect(wrapper.find('.ant-switch-inner').text()).toBe('onoff');\n  });\n});\n"
  },
  {
    "path": "components/switch/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n</docs>\n\n<template>\n  <a-switch v-model:checked=\"checked\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst checked = ref<boolean>(false);\n</script>\n"
  },
  {
    "path": "components/switch/demo/disabled.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 不可用\n  en-US: Disabled\n---\n\n## zh-CN\n\nSwitch 失效状态。\n\n## en-US\n\nDisabled state of `Switch`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-switch v-model:checked=\"checked\" :disabled=\"disabled\" />\n    <a-button type=\"primary\" @click=\"onToggle\">Toggle disabled</a-button>\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst checked = ref<boolean>(true);\nconst disabled = ref<boolean>(true);\n\nconst onToggle = () => {\n  disabled.value = !disabled.value;\n};\n</script>\n"
  },
  {
    "path": "components/switch/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <disabled />\n    <text-and-icon />\n    <size />\n    <loading />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Basic from './basic.vue';\nimport Disabled from './disabled.vue';\nimport Text from './text.vue';\nimport Size from './size.vue';\nimport Loading from './loading.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Disabled,\n    TextAndIcon: Text, // text 无法识别\n    Size,\n    Loading,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/switch/demo/loading.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 加载中\n  en-US: Loading\n---\n\n## zh-CN\n\n标识开关操作仍在执行中。\n\n## en-US\n\nMark a pending state of switch.\n\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-switch v-model:checked=\"state.checked1\" loading />\n    <a-switch v-model:checked=\"state.checked2\" size=\"small\" loading />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst state = reactive({\n  checked1: true,\n  checked2: false,\n});\n</script>\n"
  },
  {
    "path": "components/switch/demo/size.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 两种大小\n  en-US: Two sizes\n---\n\n## zh-CN\n\n`size=\"small\"` 表示小号开关。\n\n## en-US\n\n`size=\"small\"` represents a small sized switch.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-switch v-model:checked=\"state.checked1\" />\n    <a-switch v-model:checked=\"state.checked2\" size=\"small\" />\n  </a-space>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst state = reactive({\n  checked1: true,\n  checked2: false,\n});\n</script>\n"
  },
  {
    "path": "components/switch/demo/text.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 文字和图标\n  en-US: Text & icon\n---\n\n## zh-CN\n\n带有文字和图标。\n\n## en-US\n\nWith text and icon.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-switch v-model:checked=\"state.checked1\" checked-children=\"开\" un-checked-children=\"关\" />\n    <a-switch v-model:checked=\"state.checked2\" checked-children=\"1\" un-checked-children=\"0\" />\n    <a-switch v-model:checked=\"state.checked3\">\n      <template #checkedChildren><check-outlined /></template>\n      <template #unCheckedChildren><close-outlined /></template>\n    </a-switch>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nimport { CheckOutlined, CloseOutlined } from '@ant-design/icons-vue';\nconst state = reactive({\n  checked1: true,\n  checked2: false,\n  checked3: false,\n});\n</script>\n"
  },
  {
    "path": "components/switch/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Switch\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*rtArRpBNDZcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*al07RK8SGf4AAAAAAAAAAAAADrJ8AQ/original\n---\n\nSwitching Selector.\n\n## When To Use\n\n- If you need to represent the switching between two states or on-off state.\n- The difference between `Switch` and `Checkbox` is that `Switch` will trigger a state change directly when you toggle it, while `Checkbox` is generally used for state marking, which should work in conjunction with submit operation.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autofocus | get focus when component mounted | boolean | false |  |\n| checked(v-model) | determine whether the `Switch` is checked | checkedValue \\| unCheckedValue | false |  |\n| checkedChildren | content to be shown when the state is checked | string\\|slot |  |  |\n| checkedValue | value for checked state | boolean \\| string \\| number | true | 2.2.1 |\n| disabled | Disable switch | boolean | false |  |\n| loading | loading state of switch | boolean | false |  |\n| size | the size of the `Switch`, options: `default` `small` | string | default |  |\n| unCheckedChildren | content to be shown when the state is unchecked | string\\|slot |  |  |\n| unCheckedValue | value for unchecked state | boolean \\| string \\| number | false | 2.2.1 |\n\n### Events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | trigger when the checked state is changing | Function(checked: boolean \\| string \\| number, event: Event) |  |\n| click | trigger when clicked | Function(checked: boolean \\| string \\| number, event: Event) |  |\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n"
  },
  {
    "path": "components/switch/index.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, onBeforeMount, ref, computed, onMounted, nextTick, watch } from 'vue';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport PropTypes from '../_util/vue-types';\nimport KeyCode from '../_util/KeyCode';\nimport Wave from '../_util/wave';\nimport warning from '../_util/warning';\nimport type { CustomSlotsType } from '../_util/type';\nimport { tuple, withInstall } from '../_util/type';\nimport { getPropsSlot } from '../_util/props-util';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport omit from '../_util/omit';\nimport type { FocusEventHandler } from '../_util/EventInterface';\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\nexport const SwitchSizes = tuple('small', 'default');\ntype CheckedType = boolean | string | number;\nexport const switchProps = () => ({\n  id: String,\n  prefixCls: String,\n  size: PropTypes.oneOf(SwitchSizes),\n  disabled: { type: Boolean, default: undefined },\n  checkedChildren: PropTypes.any,\n  unCheckedChildren: PropTypes.any,\n  tabindex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  autofocus: { type: Boolean, default: undefined },\n  loading: { type: Boolean, default: undefined },\n  checked: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.looseBool]),\n  checkedValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.looseBool]).def(\n    true,\n  ),\n  unCheckedValue: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number,\n    PropTypes.looseBool,\n  ]).def(false),\n  onChange: {\n    type: Function as PropType<(checked: CheckedType, e: Event) => void>,\n  },\n  onClick: {\n    type: Function as PropType<(checked: CheckedType, e: Event) => void>,\n  },\n  onKeydown: {\n    type: Function as PropType<(e: Event) => void>,\n  },\n  onMouseup: {\n    type: Function as PropType<(e: Event) => void>,\n  },\n  'onUpdate:checked': {\n    type: Function as PropType<(checked: CheckedType) => void>,\n  },\n  onBlur: Function as PropType<FocusEventHandler>,\n  onFocus: Function as PropType<FocusEventHandler>,\n});\n\nexport type SwitchProps = Partial<ExtractPropTypes<ReturnType<typeof switchProps>>>;\n\nconst Switch = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASwitch',\n  __ANT_SWITCH: true,\n  inheritAttrs: false,\n  props: switchProps(),\n  slots: Object as CustomSlotsType<{\n    checkedChildren: any;\n    unCheckedChildren: any;\n    default: any;\n  }>,\n  // emits: ['update:checked', 'mouseup', 'change', 'click', 'keydown', 'blur'],\n  setup(props, { attrs, slots, expose, emit }) {\n    const formItemContext = useInjectFormItemContext();\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => props.disabled ?? disabledContext.value);\n\n    onBeforeMount(() => {\n      warning(\n        !('defaultChecked' in attrs),\n        'Switch',\n        `'defaultChecked' is deprecated, please use 'v-model:checked'`,\n      );\n      warning(\n        !('value' in attrs),\n        'Switch',\n        '`value` is not validate prop, do you mean `checked`?',\n      );\n    });\n    const checked = ref<string | number | boolean>(\n      props.checked !== undefined ? props.checked : (attrs.defaultChecked as boolean),\n    );\n    const checkedStatus = computed(() => checked.value === props.checkedValue);\n\n    watch(\n      () => props.checked,\n      () => {\n        checked.value = props.checked;\n      },\n    );\n\n    const { prefixCls, direction, size } = useConfigInject('switch', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const refSwitchNode = ref();\n    const focus = () => {\n      refSwitchNode.value?.focus();\n    };\n    const blur = () => {\n      refSwitchNode.value?.blur();\n    };\n\n    expose({ focus, blur });\n\n    onMounted(() => {\n      nextTick(() => {\n        if (props.autofocus && !mergedDisabled.value) {\n          refSwitchNode.value.focus();\n        }\n      });\n    });\n\n    const setChecked = (check: CheckedType, e: MouseEvent | KeyboardEvent) => {\n      if (mergedDisabled.value) {\n        return;\n      }\n      emit('update:checked', check);\n      emit('change', check, e);\n      formItemContext.onFieldChange();\n    };\n\n    const handleBlur = (e: FocusEvent) => {\n      emit('blur', e);\n    };\n\n    const handleClick = (e: MouseEvent) => {\n      focus();\n      const newChecked = checkedStatus.value ? props.unCheckedValue : props.checkedValue;\n      setChecked(newChecked, e);\n      emit('click', newChecked, e);\n    };\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === KeyCode.LEFT) {\n        setChecked(props.unCheckedValue, e);\n      } else if (e.keyCode === KeyCode.RIGHT) {\n        setChecked(props.checkedValue, e);\n      }\n      emit('keydown', e);\n    };\n\n    const handleMouseUp = (e: MouseEvent) => {\n      refSwitchNode.value?.blur();\n      emit('mouseup', e);\n    };\n\n    const classNames = computed(() => ({\n      [`${prefixCls.value}-small`]: size.value === 'small',\n      [`${prefixCls.value}-loading`]: props.loading,\n      [`${prefixCls.value}-checked`]: checkedStatus.value,\n      [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n      [prefixCls.value]: true,\n      [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      [hashId.value]: true,\n    }));\n\n    return () =>\n      wrapSSR(\n        <Wave>\n          <button\n            {...omit(props, [\n              'prefixCls',\n              'checkedChildren',\n              'unCheckedChildren',\n              'checked',\n              'autofocus',\n              'checkedValue',\n              'unCheckedValue',\n              'id',\n              'onChange',\n              'onUpdate:checked',\n            ])}\n            {...attrs}\n            id={props.id ?? formItemContext.id.value}\n            onKeydown={handleKeyDown}\n            onClick={handleClick}\n            onBlur={handleBlur}\n            onMouseup={handleMouseUp}\n            type=\"button\"\n            role=\"switch\"\n            aria-checked={checked.value as any}\n            disabled={mergedDisabled.value || props.loading}\n            class={[attrs.class, classNames.value]}\n            ref={refSwitchNode}\n          >\n            <div class={`${prefixCls.value}-handle`}>\n              {props.loading ? <LoadingOutlined class={`${prefixCls.value}-loading-icon`} /> : null}\n            </div>\n            <span class={`${prefixCls.value}-inner`}>\n              <span class={`${prefixCls.value}-inner-checked`}>\n                {getPropsSlot(slots, props, 'checkedChildren')}\n              </span>\n              <span class={`${prefixCls.value}-inner-unchecked`}>\n                {getPropsSlot(slots, props, 'unCheckedChildren')}\n              </span>\n            </span>\n          </button>\n        </Wave>,\n      );\n  },\n});\n\nexport default withInstall(Switch);\n"
  },
  {
    "path": "components/switch/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 开关\ntype: 数据录入\ntitle: Switch\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*rtArRpBNDZcAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*al07RK8SGf4AAAAAAAAAAAAADrJ8AQ/original\n---\n\n开关选择器。\n\n## 何时使用\n\n- 需要表示开关状态/两种状态之间的切换时；\n- 和 `checkbox` 的区别是，切换 `switch` 会直接触发状态改变，而 `checkbox` 一般用于状态标记，需要和提交操作配合。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autofocus | 组件自动获取焦点 | boolean | false |  |\n| checked(v-model) | 指定当前是否选中 | checkedValue \\| unCheckedValue | false |  |\n| checkedChildren | 选中时的内容 | string\\|slot |  |  |\n| checkedValue | 选中时的值 | boolean \\| string \\| number | true | 2.2.1 |\n| disabled | 是否禁用 | boolean | false |  |\n| loading | 加载中的开关 | boolean | false |  |\n| size | 开关大小，可选值：`default` `small` | string | default |  |\n| unCheckedChildren | 非选中时的内容 | string\\|slot |  |  |\n| unCheckedValue | 非选中时的值 | boolean \\| string \\| number | false | 2.2.1 |\n\n### 事件\n\n| 事件名称 | 说明           | 回调参数                                                     |     |\n| -------- | -------------- | ------------------------------------------------------------ | --- |\n| change   | 变化时回调函数 | Function(checked: boolean \\| string \\| number, event: Event) |     |\n| click    | 点击时回调函数 | Function(checked: boolean \\| string \\| number, event: Event) |     |\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n"
  },
  {
    "path": "components/switch/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusStyle, resetComponent } from '../../style';\n\ninterface SwitchToken extends FullToken<'Switch'> {\n  switchMinWidth: number;\n  switchHeight: number;\n  switchDuration: string;\n  switchColor: string;\n  switchDisabledOpacity: number;\n  switchInnerMarginMin: number;\n  switchInnerMarginMax: number;\n  switchPadding: number;\n  switchPinSize: number;\n  switchBg: string;\n  switchMinWidthSM: number;\n  switchHeightSM: number;\n  switchInnerMarginMinSM: number;\n  switchInnerMarginMaxSM: number;\n  switchPinSizeSM: number;\n  switchHandleShadow: string;\n  switchLoadingIconSize: number;\n  switchLoadingIconColor: string;\n  switchHandleActiveInset: string;\n}\n\nconst genSwitchSmallStyle: GenerateStyle<SwitchToken, CSSObject> = token => {\n  const { componentCls } = token;\n  const switchInnerCls = `${componentCls}-inner`;\n\n  return {\n    [componentCls]: {\n      [`&${componentCls}-small`]: {\n        minWidth: token.switchMinWidthSM,\n        height: token.switchHeightSM,\n        lineHeight: `${token.switchHeightSM}px`,\n\n        [`${componentCls}-inner`]: {\n          paddingInlineStart: token.switchInnerMarginMaxSM,\n          paddingInlineEnd: token.switchInnerMarginMinSM,\n          [`${switchInnerCls}-checked`]: {\n            marginInlineStart: `calc(-100% + ${\n              token.switchPinSizeSM + token.switchPadding * 2\n            }px - ${token.switchInnerMarginMaxSM * 2}px)`,\n            marginInlineEnd: `calc(100% - ${token.switchPinSizeSM + token.switchPadding * 2}px + ${\n              token.switchInnerMarginMaxSM * 2\n            }px)`,\n          },\n\n          [`${switchInnerCls}-unchecked`]: {\n            marginTop: -token.switchHeightSM,\n            marginInlineStart: 0,\n            marginInlineEnd: 0,\n          },\n        },\n\n        [`${componentCls}-handle`]: {\n          width: token.switchPinSizeSM,\n          height: token.switchPinSizeSM,\n        },\n\n        [`${componentCls}-loading-icon`]: {\n          top: (token.switchPinSizeSM - token.switchLoadingIconSize) / 2,\n          fontSize: token.switchLoadingIconSize,\n        },\n\n        [`&${componentCls}-checked`]: {\n          [`${componentCls}-inner`]: {\n            paddingInlineStart: token.switchInnerMarginMinSM,\n            paddingInlineEnd: token.switchInnerMarginMaxSM,\n            [`${switchInnerCls}-checked`]: {\n              marginInlineStart: 0,\n              marginInlineEnd: 0,\n            },\n\n            [`${switchInnerCls}-unchecked`]: {\n              marginInlineStart: `calc(100% - ${\n                token.switchPinSizeSM + token.switchPadding * 2\n              }px + ${token.switchInnerMarginMaxSM * 2}px)`,\n              marginInlineEnd: `calc(-100% + ${\n                token.switchPinSizeSM + token.switchPadding * 2\n              }px - ${token.switchInnerMarginMaxSM * 2}px)`,\n            },\n          },\n\n          [`${componentCls}-handle`]: {\n            insetInlineStart: `calc(100% - ${token.switchPinSizeSM + token.switchPadding}px)`,\n          },\n        },\n\n        [`&:not(${componentCls}-disabled):active`]: {\n          [`&:not(${componentCls}-checked) ${switchInnerCls}`]: {\n            [`${switchInnerCls}-unchecked`]: {\n              marginInlineStart: token.marginXXS / 2,\n              marginInlineEnd: -token.marginXXS / 2,\n            },\n          },\n\n          [`&${componentCls}-checked ${switchInnerCls}`]: {\n            [`${switchInnerCls}-checked`]: {\n              marginInlineStart: -token.marginXXS / 2,\n              marginInlineEnd: token.marginXXS / 2,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genSwitchLoadingStyle: GenerateStyle<SwitchToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      [`${componentCls}-loading-icon${token.iconCls}`]: {\n        position: 'relative',\n        top: (token.switchPinSize - token.fontSize) / 2,\n        color: token.switchLoadingIconColor,\n        verticalAlign: 'top',\n      },\n\n      [`&${componentCls}-checked ${componentCls}-loading-icon`]: {\n        color: token.switchColor,\n      },\n    },\n  };\n};\n\nconst genSwitchHandleStyle: GenerateStyle<SwitchToken, CSSObject> = token => {\n  const { componentCls } = token;\n  const switchHandleCls = `${componentCls}-handle`;\n\n  return {\n    [componentCls]: {\n      [switchHandleCls]: {\n        position: 'absolute',\n        top: token.switchPadding,\n        insetInlineStart: token.switchPadding,\n        width: token.switchPinSize,\n        height: token.switchPinSize,\n        transition: `all ${token.switchDuration} ease-in-out`,\n\n        '&::before': {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          backgroundColor: token.colorWhite,\n          borderRadius: token.switchPinSize / 2,\n          boxShadow: token.switchHandleShadow,\n          transition: `all ${token.switchDuration} ease-in-out`,\n          content: '\"\"',\n        },\n      },\n\n      [`&${componentCls}-checked ${switchHandleCls}`]: {\n        insetInlineStart: `calc(100% - ${token.switchPinSize + token.switchPadding}px)`,\n      },\n\n      [`&:not(${componentCls}-disabled):active`]: {\n        [`${switchHandleCls}::before`]: {\n          insetInlineEnd: token.switchHandleActiveInset,\n          insetInlineStart: 0,\n        },\n\n        [`&${componentCls}-checked ${switchHandleCls}::before`]: {\n          insetInlineEnd: 0,\n          insetInlineStart: token.switchHandleActiveInset,\n        },\n      },\n    },\n  };\n};\n\nconst genSwitchInnerStyle: GenerateStyle<SwitchToken, CSSObject> = token => {\n  const { componentCls } = token;\n  const switchInnerCls = `${componentCls}-inner`;\n\n  return {\n    [componentCls]: {\n      [switchInnerCls]: {\n        display: 'block',\n        overflow: 'hidden',\n        borderRadius: 100,\n        height: '100%',\n        paddingInlineStart: token.switchInnerMarginMax,\n        paddingInlineEnd: token.switchInnerMarginMin,\n        transition: `padding-inline-start ${token.switchDuration} ease-in-out, padding-inline-end ${token.switchDuration} ease-in-out`,\n\n        [`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: {\n          display: 'block',\n          color: token.colorTextLightSolid,\n          fontSize: token.fontSizeSM,\n          transition: `margin-inline-start ${token.switchDuration} ease-in-out, margin-inline-end ${token.switchDuration} ease-in-out`,\n          pointerEvents: 'none',\n        },\n\n        [`${switchInnerCls}-checked`]: {\n          marginInlineStart: `calc(-100% + ${token.switchPinSize + token.switchPadding * 2}px - ${\n            token.switchInnerMarginMax * 2\n          }px)`,\n          marginInlineEnd: `calc(100% - ${token.switchPinSize + token.switchPadding * 2}px + ${\n            token.switchInnerMarginMax * 2\n          }px)`,\n        },\n\n        [`${switchInnerCls}-unchecked`]: {\n          marginTop: -token.switchHeight,\n          marginInlineStart: 0,\n          marginInlineEnd: 0,\n        },\n      },\n\n      [`&${componentCls}-checked ${switchInnerCls}`]: {\n        paddingInlineStart: token.switchInnerMarginMin,\n        paddingInlineEnd: token.switchInnerMarginMax,\n        [`${switchInnerCls}-checked`]: {\n          marginInlineStart: 0,\n          marginInlineEnd: 0,\n        },\n\n        [`${switchInnerCls}-unchecked`]: {\n          marginInlineStart: `calc(100% - ${token.switchPinSize + token.switchPadding * 2}px + ${\n            token.switchInnerMarginMax * 2\n          }px)`,\n          marginInlineEnd: `calc(-100% + ${token.switchPinSize + token.switchPadding * 2}px - ${\n            token.switchInnerMarginMax * 2\n          }px)`,\n        },\n      },\n\n      [`&:not(${componentCls}-disabled):active`]: {\n        [`&:not(${componentCls}-checked) ${switchInnerCls}`]: {\n          [`${switchInnerCls}-unchecked`]: {\n            marginInlineStart: token.switchPadding * 2,\n            marginInlineEnd: -token.switchPadding * 2,\n          },\n        },\n\n        [`&${componentCls}-checked ${switchInnerCls}`]: {\n          [`${switchInnerCls}-checked`]: {\n            marginInlineStart: -token.switchPadding * 2,\n            marginInlineEnd: token.switchPadding * 2,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genSwitchStyle = (token: SwitchToken): CSSObject => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      position: 'relative',\n      display: 'inline-block',\n      boxSizing: 'border-box',\n      minWidth: token.switchMinWidth,\n      height: token.switchHeight,\n      lineHeight: `${token.switchHeight}px`,\n      verticalAlign: 'middle',\n      background: token.colorTextQuaternary,\n      border: '0',\n      borderRadius: 100,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid}`,\n      userSelect: 'none',\n\n      [`&:hover:not(${componentCls}-disabled)`]: {\n        background: token.colorTextTertiary,\n      },\n\n      ...genFocusStyle(token),\n\n      [`&${componentCls}-checked`]: {\n        background: token.switchColor,\n\n        [`&:hover:not(${componentCls}-disabled)`]: {\n          background: token.colorPrimaryHover,\n        },\n      },\n\n      [`&${componentCls}-loading, &${componentCls}-disabled`]: {\n        cursor: 'not-allowed',\n        opacity: token.switchDisabledOpacity,\n\n        '*': {\n          boxShadow: 'none',\n          cursor: 'not-allowed',\n        },\n      },\n\n      // rtl style\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Switch', token => {\n  const switchHeight = token.fontSize * token.lineHeight;\n  const switchHeightSM = token.controlHeight / 2;\n  const switchPadding = 2; // This is magic\n  const switchPinSize = switchHeight - switchPadding * 2;\n  const switchPinSizeSM = switchHeightSM - switchPadding * 2;\n\n  const switchToken = mergeToken<SwitchToken>(token, {\n    switchMinWidth: switchPinSize * 2 + switchPadding * 4,\n    switchHeight,\n    switchDuration: token.motionDurationMid,\n    switchColor: token.colorPrimary,\n    switchDisabledOpacity: token.opacityLoading,\n    switchInnerMarginMin: switchPinSize / 2,\n    switchInnerMarginMax: switchPinSize + switchPadding + switchPadding * 2,\n    switchPadding,\n    switchPinSize,\n    switchBg: token.colorBgContainer,\n    switchMinWidthSM: switchPinSizeSM * 2 + switchPadding * 2,\n    switchHeightSM,\n    switchInnerMarginMinSM: switchPinSizeSM / 2,\n    switchInnerMarginMaxSM: switchPinSizeSM + switchPadding + switchPadding * 2,\n    switchPinSizeSM,\n    switchHandleShadow: `0 2px 4px 0 ${new TinyColor('#00230b').setAlpha(0.2).toRgbString()}`,\n    switchLoadingIconSize: token.fontSizeIcon * 0.75,\n    switchLoadingIconColor: `rgba(0, 0, 0, ${token.opacityLoading})`,\n    switchHandleActiveInset: '-30%',\n  });\n\n  return [\n    genSwitchStyle(switchToken),\n\n    // inner style\n    genSwitchInnerStyle(switchToken),\n\n    // handle style\n    genSwitchHandleStyle(switchToken),\n\n    // loading style\n    genSwitchLoadingStyle(switchToken),\n\n    // small style\n    genSwitchSmallStyle(switchToken),\n  ];\n});\n"
  },
  {
    "path": "components/table/Column.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { ColumnType } from './interface';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport type ColumnProps<RecordType = unknown> = ColumnType<RecordType>;\nexport default defineComponent<ColumnProps>({\n  name: 'ATableColumn',\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    filterIcon?: any;\n    default?: any;\n  }>,\n\n  render() {\n    return null;\n  },\n});\n"
  },
  {
    "path": "components/table/ColumnGroup.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { ColumnGroupProps } from '../vc-table/sugar/ColumnGroup';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport default defineComponent<ColumnGroupProps<any>>({\n  name: 'ATableColumnGroup',\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    default?: any;\n  }>,\n  __ANT_TABLE_COLUMN_GROUP: true,\n  render() {\n    return null;\n  },\n});\n"
  },
  {
    "path": "components/table/ExpandIcon.tsx",
    "content": "import classNames from '../_util/classNames';\nimport type { TableLocale } from './interface';\n\ninterface DefaultExpandIconProps<RecordType> {\n  prefixCls: string;\n  onExpand: (record: RecordType, e: MouseEvent) => void;\n  record: RecordType;\n  expanded: boolean;\n  expandable: boolean;\n}\n\nfunction renderExpandIcon(locale: TableLocale) {\n  return function expandIcon<RecordType>({\n    prefixCls,\n    onExpand,\n    record,\n    expanded,\n    expandable,\n  }: DefaultExpandIconProps<RecordType>) {\n    const iconPrefix = `${prefixCls}-row-expand-icon`;\n\n    return (\n      <button\n        type=\"button\"\n        onClick={e => {\n          onExpand(record, e!);\n          e.stopPropagation();\n        }}\n        class={classNames(iconPrefix, {\n          [`${iconPrefix}-spaced`]: !expandable,\n          [`${iconPrefix}-expanded`]: expandable && expanded,\n          [`${iconPrefix}-collapsed`]: expandable && !expanded,\n        })}\n        aria-label={expanded ? locale.collapse : locale.expand}\n        aria-expanded={expanded}\n      />\n    );\n  };\n}\n\nexport default renderExpandIcon;\n"
  },
  {
    "path": "components/table/Table.tsx",
    "content": "import RcTable from '../vc-table';\nimport type { TableProps as RcTableProps } from '../vc-table/Table';\nimport { INTERNAL_HOOKS } from '../vc-table/Table';\nimport type { SpinProps } from '../spin';\nimport Spin from '../spin';\nimport Pagination from '../pagination';\nimport type { TooltipProps } from '../tooltip';\nimport usePagination, { DEFAULT_PAGE_SIZE, getPaginationParam } from './hooks/usePagination';\nimport useLazyKVMap from './hooks/useLazyKVMap';\nimport type { Breakpoint } from '../_util/responsiveObserve';\nimport type {\n  TableRowSelection,\n  GetRowKey,\n  ColumnType,\n  ColumnsType,\n  TableCurrentDataSource,\n  SorterResult,\n  GetPopupContainer,\n  ExpandType,\n  TablePaginationConfig,\n  SortOrder,\n  TableLocale,\n  TableAction,\n  FilterValue,\n} from './interface';\nimport useSelection from './hooks/useSelection';\nimport type { SortState } from './hooks/useSorter';\nimport useSorter, { getSortData } from './hooks/useSorter';\nimport type { FilterState } from './hooks/useFilter';\nimport useFilter, { getFilterData } from './hooks/useFilter';\nimport useTitleColumns from './hooks/useTitleColumns';\nimport renderExpandIcon from './ExpandIcon';\nimport scrollTo from '../_util/scrollTo';\nimport defaultLocale from '../locale/en_US';\nimport type { SizeType } from '../config-provider';\nimport devWarning from '../vc-util/devWarning';\nimport type { CSSProperties } from 'vue';\nimport { nextTick, reactive, ref, computed, defineComponent, toRef, watchEffect, watch } from 'vue';\nimport type { DefaultRecordType, RenderExpandIconProps } from '../vc-table/interface';\nimport useBreakpoint from '../_util/hooks/useBreakpoint';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport classNames from '../_util/classNames';\nimport omit from '../_util/omit';\nimport { initDefaultProps } from '../_util/props-util';\nimport { useProvideSlots, useProvideTableContext } from './context';\nimport type { ContextSlots } from './context';\nimport useColumns from './hooks/useColumns';\nimport { convertChildrenToColumns } from './util';\n\nimport {\n  stringType,\n  booleanType,\n  arrayType,\n  someType,\n  functionType,\n  objectType,\n} from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport type { ColumnsType, TablePaginationConfig };\n\nconst EMPTY_LIST: any[] = [];\n\ninterface ChangeEventInfo<RecordType = DefaultRecordType> {\n  pagination: {\n    current?: number;\n    pageSize?: number;\n    total?: number;\n  };\n  filters: Record<string, FilterValue | null>;\n  sorter: SorterResult<RecordType> | SorterResult<RecordType>[];\n\n  filterStates: FilterState<RecordType>[];\n  sorterStates: SortState<RecordType>[];\n\n  resetPagination: Function;\n}\n\nexport interface TableProps<RecordType = DefaultRecordType>\n  extends Omit<\n    RcTableProps<RecordType>,\n    | 'transformColumns'\n    | 'internalHooks'\n    | 'internalRefs'\n    | 'data'\n    | 'columns'\n    | 'scroll'\n    | 'emptyText'\n    | 'canExpandable'\n    | 'onUpdateInternalRefs'\n  > {\n  dropdownPrefixCls?: string;\n  dataSource?: RcTableProps<RecordType>['data'];\n  columns?: ColumnsType<RecordType>;\n  pagination?: false | TablePaginationConfig;\n  loading?: boolean | SpinProps;\n  size?: SizeType;\n  bordered?: boolean;\n  locale?: TableLocale;\n\n  onChange?: (\n    pagination: TablePaginationConfig,\n    filters: Record<string, FilterValue | null>,\n    sorter: SorterResult<RecordType> | SorterResult<RecordType>[],\n    extra: TableCurrentDataSource<RecordType>,\n  ) => void;\n  onResizeColumn?: (w: number, col: ColumnType) => void;\n  rowSelection?: TableRowSelection<RecordType>;\n\n  getPopupContainer?: GetPopupContainer;\n  scroll?: RcTableProps<RecordType>['scroll'] & {\n    scrollToFirstRowOnChange?: boolean;\n  };\n  sortDirections?: SortOrder[];\n  showSorterTooltip?: boolean | TooltipProps;\n}\n\nexport const tableProps = () => {\n  return {\n    prefixCls: stringType<string>(),\n    columns: arrayType<ColumnsType>(),\n    rowKey: someType<TableProps['rowKey']>([String, Function]),\n    tableLayout: stringType<TableProps['tableLayout']>(),\n    rowClassName: someType<TableProps['rowClassName']>([String, Function]),\n    title: functionType<TableProps['title']>(),\n    footer: functionType<TableProps['footer']>(),\n    id: stringType<TableProps['id']>(),\n    showHeader: booleanType(),\n    components: objectType<TableProps['components']>(),\n    customRow: functionType<TableProps['customRow']>(),\n    customHeaderRow: functionType<TableProps['customHeaderRow']>(),\n    direction: stringType<TableProps['direction']>(),\n    expandFixed: someType<TableProps['expandFixed']>([Boolean, String]),\n    expandColumnWidth: Number,\n    expandedRowKeys: arrayType<TableProps['expandedRowKeys']>(),\n    defaultExpandedRowKeys: arrayType<TableProps['defaultExpandedRowKeys']>(),\n    expandedRowRender: functionType<TableProps['expandedRowRender']>(),\n    expandRowByClick: booleanType(),\n    expandIcon: functionType<TableProps['expandIcon']>(),\n    onExpand: functionType<TableProps['onExpand']>(),\n    onExpandedRowsChange: functionType<TableProps['onExpandedRowsChange']>(),\n    'onUpdate:expandedRowKeys': functionType<TableProps['onExpandedRowsChange']>(),\n    defaultExpandAllRows: booleanType(),\n    indentSize: Number,\n    /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */\n    expandIconColumnIndex: Number,\n    showExpandColumn: booleanType(),\n    expandedRowClassName: functionType<TableProps['expandedRowClassName']>(),\n    childrenColumnName: stringType<TableProps['childrenColumnName']>(),\n    rowExpandable: functionType<TableProps['rowExpandable']>(),\n    sticky: someType<TableProps['sticky']>([Boolean, Object]),\n\n    dropdownPrefixCls: String,\n    dataSource: arrayType<RcTableProps['data']>(),\n    pagination: someType<false | TablePaginationConfig>([Boolean, Object]),\n    loading: someType<boolean | SpinProps>([Boolean, Object]),\n    size: stringType<SizeType>(),\n    bordered: booleanType(),\n    locale: objectType<TableLocale>(),\n\n    onChange:\n      functionType<\n        (\n          pagination: TablePaginationConfig,\n          filters: Record<string, FilterValue | null>,\n          sorter: SorterResult | SorterResult[],\n          extra: TableCurrentDataSource,\n        ) => void\n      >(),\n    onResizeColumn: functionType<(w: number, col: ColumnType) => void>(),\n    rowSelection: objectType<TableRowSelection>(),\n    getPopupContainer: functionType<GetPopupContainer>(),\n    scroll: objectType<\n      RcTableProps['scroll'] & {\n        scrollToFirstRowOnChange?: boolean;\n      }\n    >(),\n    sortDirections: arrayType<SortOrder[]>(),\n    showSorterTooltip: someType<boolean | TooltipProps>([Boolean, Object], true),\n    transformCellText: functionType<TableProps['transformCellText']>(),\n  };\n};\n\nconst InternalTable = defineComponent({\n  name: 'InternalTable',\n  inheritAttrs: false,\n  props: initDefaultProps(\n    {\n      ...tableProps(),\n      contextSlots: objectType<ContextSlots>(),\n    },\n    {\n      rowKey: 'key',\n    },\n  ),\n  setup(props, { attrs, slots, expose, emit }) {\n    devWarning(\n      !(typeof props.rowKey === 'function' && props.rowKey.length > 1),\n      'Table',\n      '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.',\n    );\n\n    useProvideSlots(computed(() => props.contextSlots));\n    useProvideTableContext({\n      onResizeColumn: (w, col) => {\n        emit('resizeColumn', w, col);\n      },\n    });\n    const screens = useBreakpoint();\n\n    const mergedColumns = computed(() => {\n      const matched = new Set(\n        Object.keys(screens.value).filter((m: Breakpoint) => screens.value[m]),\n      );\n      return props.columns.filter(\n        (c: ColumnType<DefaultRecordType>) =>\n          !c.responsive || c.responsive.some((r: Breakpoint) => matched.has(r)),\n      );\n    });\n\n    const {\n      size: mergedSize,\n      renderEmpty,\n      direction,\n      prefixCls,\n      configProvider,\n    } = useConfigInject('table', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const transformCellText = computed(\n      () => props.transformCellText || configProvider.transformCellText?.value,\n    );\n    const [tableLocale] = useLocaleReceiver('Table', defaultLocale.Table, toRef(props, 'locale'));\n    const rawData = computed(() => props.dataSource || EMPTY_LIST);\n\n    const dropdownPrefixCls = computed(() =>\n      configProvider.getPrefixCls('dropdown', props.dropdownPrefixCls),\n    );\n\n    const childrenColumnName = computed(() => props.childrenColumnName || 'children');\n\n    const expandType = computed<ExpandType>(() => {\n      if (rawData.value.some(item => (item as any)?.[childrenColumnName.value])) {\n        return 'nest';\n      }\n\n      if (props.expandedRowRender) {\n        return 'row';\n      }\n\n      return null;\n    });\n\n    const internalRefs = reactive({\n      body: null,\n    });\n\n    const updateInternalRefs = refs => {\n      Object.assign(internalRefs, refs);\n    };\n\n    // ============================ RowKey ============================\n    const getRowKey = computed<GetRowKey<DefaultRecordType>>(() => {\n      if (typeof props.rowKey === 'function') {\n        return props.rowKey;\n      }\n\n      return record => (record as any)?.[props.rowKey as string];\n    });\n\n    const [getRecordByKey] = useLazyKVMap(rawData, childrenColumnName, getRowKey);\n\n    // ============================ Events =============================\n    const changeEventInfo: Partial<ChangeEventInfo> = {};\n\n    const triggerOnChange = (\n      info: Partial<ChangeEventInfo>,\n      action: TableAction,\n      reset = false,\n    ) => {\n      const { pagination, scroll, onChange } = props;\n      const changeInfo = {\n        ...changeEventInfo,\n        ...info,\n      };\n\n      if (reset) {\n        changeEventInfo.resetPagination!();\n\n        // Reset event param\n        if (changeInfo.pagination!.current) {\n          changeInfo.pagination!.current = 1;\n        }\n\n        // Trigger pagination events\n        if (pagination && pagination.onChange) {\n          pagination.onChange(1, changeInfo.pagination!.pageSize);\n        }\n      }\n\n      if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body) {\n        scrollTo(0, {\n          getContainer: () => internalRefs.body,\n        });\n      }\n\n      onChange?.(changeInfo.pagination!, changeInfo.filters!, changeInfo.sorter!, {\n        currentDataSource: getFilterData(\n          getSortData(rawData.value, changeInfo.sorterStates!, childrenColumnName.value),\n          changeInfo.filterStates!,\n        ),\n        action,\n      });\n    };\n\n    /**\n     * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read\n     * state out and then put it back to title render. Move these code into `hooks` but still too\n     * complex. We should provides Table props like `sorter` & `filter` to handle control in next big version.\n     */\n\n    // ============================ Sorter =============================\n    const onSorterChange = (sorter: SorterResult | SorterResult[], sorterStates: SortState[]) => {\n      triggerOnChange(\n        {\n          sorter,\n          sorterStates,\n        },\n        'sort',\n        false,\n      );\n    };\n\n    const [transformSorterColumns, sortStates, sorterTitleProps, sorters] = useSorter({\n      prefixCls,\n      mergedColumns,\n      onSorterChange,\n      sortDirections: computed(() => props.sortDirections || ['ascend', 'descend']),\n      tableLocale,\n      showSorterTooltip: toRef(props, 'showSorterTooltip'),\n    });\n    const sortedData = computed(() =>\n      getSortData(rawData.value, sortStates.value, childrenColumnName.value),\n    );\n\n    // ============================ Filter ============================\n    const onFilterChange = (filters: Record<string, FilterValue>, filterStates: FilterState[]) => {\n      triggerOnChange(\n        {\n          filters,\n          filterStates,\n        },\n        'filter',\n        true,\n      );\n    };\n\n    const [transformFilterColumns, filterStates, filters] = useFilter({\n      prefixCls,\n      locale: tableLocale,\n      dropdownPrefixCls,\n      mergedColumns,\n      onFilterChange,\n      getPopupContainer: toRef(props, 'getPopupContainer'),\n    });\n    const mergedData = computed(() => getFilterData(sortedData.value, filterStates.value));\n    // ============================ Column ============================\n\n    const [transformBasicColumns] = useColumns(toRef(props, 'contextSlots'));\n\n    const columnTitleProps = computed(() => {\n      const mergedFilters: Record<string, FilterValue> = {};\n      const filtersValue = filters.value;\n      Object.keys(filtersValue).forEach(filterKey => {\n        if (filtersValue[filterKey] !== null) {\n          mergedFilters[filterKey] = filtersValue[filterKey]!;\n        }\n      });\n      return {\n        ...sorterTitleProps.value,\n        filters: mergedFilters,\n      };\n    });\n    const [transformTitleColumns] = useTitleColumns(columnTitleProps);\n\n    // ========================== Pagination ==========================\n    const onPaginationChange = (current: number, pageSize: number) => {\n      triggerOnChange(\n        {\n          pagination: { ...changeEventInfo.pagination, current, pageSize },\n        },\n        'paginate',\n      );\n    };\n\n    const [mergedPagination, resetPagination] = usePagination(\n      computed(() => mergedData.value.length),\n      toRef(props, 'pagination'),\n      onPaginationChange,\n    );\n\n    watchEffect(() => {\n      changeEventInfo.sorter = sorters.value;\n      changeEventInfo.sorterStates = sortStates.value;\n\n      changeEventInfo.filters = filters.value;\n      changeEventInfo.filterStates = filterStates.value;\n      changeEventInfo.pagination =\n        props.pagination === false\n          ? {}\n          : getPaginationParam(mergedPagination.value, props.pagination);\n\n      changeEventInfo.resetPagination = resetPagination;\n    });\n\n    // ============================= Data =============================\n    const pageData = computed(() => {\n      if (props.pagination === false || !mergedPagination.value.pageSize) {\n        return mergedData.value;\n      }\n\n      const { current = 1, total, pageSize = DEFAULT_PAGE_SIZE } = mergedPagination.value;\n      devWarning(current > 0, 'Table', '`current` should be positive number.');\n\n      // Dynamic table data\n      if (mergedData.value.length < total!) {\n        if (mergedData.value.length > pageSize) {\n          return mergedData.value.slice((current - 1) * pageSize, current * pageSize);\n        }\n        return mergedData.value;\n      }\n\n      return mergedData.value.slice((current - 1) * pageSize, current * pageSize);\n    });\n\n    watchEffect(\n      () => {\n        nextTick(() => {\n          const { total, pageSize = DEFAULT_PAGE_SIZE } = mergedPagination.value;\n          // Dynamic table data\n          if (mergedData.value.length < total!) {\n            if (mergedData.value.length > pageSize) {\n              devWarning(\n                false,\n                'Table',\n                '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.',\n              );\n            }\n          }\n        });\n      },\n      { flush: 'post' },\n    );\n\n    const expandIconColumnIndex = computed(() => {\n      if (props.showExpandColumn === false) return -1;\n      // Adjust expand icon index, no overwrite expandIconColumnIndex if set.\n      if (expandType.value === 'nest' && props.expandIconColumnIndex === undefined) {\n        return props.rowSelection ? 1 : 0;\n      } else if (props.expandIconColumnIndex! > 0 && props.rowSelection) {\n        return props.expandIconColumnIndex - 1;\n      }\n      return props.expandIconColumnIndex;\n    });\n    const rowSelection = ref();\n    watch(\n      () => props.rowSelection,\n      () => {\n        rowSelection.value = props.rowSelection ? { ...props.rowSelection } : props.rowSelection;\n      },\n      { deep: true, immediate: true },\n    );\n    // ========================== Selections ==========================\n    const [transformSelectionColumns, selectedKeySet] = useSelection(rowSelection, {\n      prefixCls,\n      data: mergedData,\n      pageData,\n      getRowKey,\n      getRecordByKey,\n      expandType,\n      childrenColumnName,\n      locale: tableLocale,\n      getPopupContainer: computed(() => props.getPopupContainer),\n    });\n\n    const internalRowClassName = (record: any, index: number, indent: number) => {\n      let mergedRowClassName;\n      const { rowClassName } = props;\n      if (typeof rowClassName === 'function') {\n        mergedRowClassName = classNames(rowClassName(record, index, indent));\n      } else {\n        mergedRowClassName = classNames(rowClassName);\n      }\n\n      return classNames(\n        {\n          [`${prefixCls.value}-row-selected`]: selectedKeySet.value.has(\n            getRowKey.value(record, index),\n          ),\n        },\n        mergedRowClassName,\n      );\n    };\n    expose({\n      selectedKeySet,\n    });\n\n    const indentSize = computed(() => {\n      // Indent size\n      return typeof props.indentSize === 'number' ? props.indentSize : 15;\n    });\n\n    const transformColumns = (innerColumns: ColumnsType<any>): ColumnsType<any> => {\n      const res = transformTitleColumns(\n        transformSelectionColumns(\n          transformFilterColumns(transformSorterColumns(transformBasicColumns(innerColumns))),\n        ),\n      );\n      return res;\n    };\n\n    return () => {\n      const {\n        expandIcon = slots.expandIcon || renderExpandIcon(tableLocale.value),\n        pagination,\n        loading,\n        bordered,\n      } = props;\n\n      let topPaginationNode;\n      let bottomPaginationNode;\n      if (pagination !== false && mergedPagination.value?.total) {\n        let paginationSize: TablePaginationConfig['size'];\n        if (mergedPagination.value.size) {\n          paginationSize = mergedPagination.value.size;\n        } else {\n          paginationSize =\n            mergedSize.value === 'small' || mergedSize.value === 'middle' ? 'small' : undefined;\n        }\n\n        const renderPagination = (position: string) => (\n          <Pagination\n            {...mergedPagination.value}\n            class={[\n              `${prefixCls.value}-pagination ${prefixCls.value}-pagination-${position}`,\n              mergedPagination.value.class,\n            ]}\n            size={paginationSize}\n          />\n        );\n        const defaultPosition = direction.value === 'rtl' ? 'left' : 'right';\n        const { position } = mergedPagination.value;\n        if (position !== null && Array.isArray(position)) {\n          const topPos = position.find(p => p.includes('top'));\n          const bottomPos = position.find(p => p.includes('bottom'));\n          const isDisable = position.every(p => `${p}` === 'none');\n          if (!topPos && !bottomPos && !isDisable) {\n            bottomPaginationNode = renderPagination(defaultPosition);\n          }\n          if (topPos) {\n            topPaginationNode = renderPagination(topPos!.toLowerCase().replace('top', ''));\n          }\n          if (bottomPos) {\n            bottomPaginationNode = renderPagination(bottomPos!.toLowerCase().replace('bottom', ''));\n          }\n        } else {\n          bottomPaginationNode = renderPagination(defaultPosition);\n        }\n      }\n\n      // >>>>>>>>> Spinning\n      let spinProps: SpinProps | undefined;\n      if (typeof loading === 'boolean') {\n        spinProps = {\n          spinning: loading,\n        };\n      } else if (typeof loading === 'object') {\n        spinProps = {\n          spinning: true,\n          ...loading,\n        };\n      }\n\n      const wrapperClassNames = classNames(\n        `${prefixCls.value}-wrapper`,\n        {\n          [`${prefixCls.value}-wrapper-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n      const tableProps = omit(props, ['columns']);\n      return wrapSSR(\n        <div class={wrapperClassNames} style={attrs.style as CSSProperties}>\n          <Spin spinning={false} {...spinProps}>\n            {topPaginationNode}\n            <RcTable\n              {...attrs}\n              {...tableProps}\n              expandedRowKeys={props.expandedRowKeys as any}\n              defaultExpandedRowKeys={props.defaultExpandedRowKeys as any}\n              expandIconColumnIndex={expandIconColumnIndex.value}\n              indentSize={indentSize.value}\n              expandIcon={expandIcon}\n              columns={mergedColumns.value}\n              direction={direction.value}\n              prefixCls={prefixCls.value}\n              class={classNames({\n                [`${prefixCls.value}-middle`]: mergedSize.value === 'middle',\n                [`${prefixCls.value}-small`]: mergedSize.value === 'small',\n                [`${prefixCls.value}-bordered`]: bordered,\n                [`${prefixCls.value}-empty`]: rawData.value.length === 0,\n              })}\n              data={pageData.value}\n              rowKey={getRowKey.value}\n              rowClassName={internalRowClassName}\n              // Internal\n              internalHooks={INTERNAL_HOOKS}\n              internalRefs={internalRefs}\n              onUpdateInternalRefs={updateInternalRefs}\n              transformColumns={transformColumns}\n              transformCellText={transformCellText.value}\n              v-slots={{\n                ...slots,\n                emptyText: () =>\n                  slots.emptyText?.() || props.locale?.emptyText || renderEmpty('Table'),\n              }}\n            />\n            {bottomPaginationNode}\n          </Spin>\n        </div>,\n      );\n    };\n  },\n});\n\nconst Table = defineComponent({\n  name: 'ATable',\n  inheritAttrs: false,\n  props: initDefaultProps(tableProps(), {\n    rowKey: 'key',\n  }),\n  slots: Object as CustomSlotsType<{\n    emptyText?: any;\n    expandIcon?: RenderExpandIconProps<any>;\n    title?: any;\n    footer?: any;\n    summary?: any;\n    expandedRowRender?: any;\n    expandColumnTitle?: any;\n    bodyCell?: (props: {\n      text: any;\n      value: any;\n      record: Record<string, any>;\n      index: number;\n      column: ColumnType;\n    }) => void;\n    headerCell?: (props: { title: any; column: ColumnType }) => void;\n    customFilterIcon?: any;\n    customFilterDropdown?: any;\n    default: any;\n  }>,\n  setup(props, { attrs, slots, expose }) {\n    const table = ref();\n    expose({\n      table,\n    });\n    return () => {\n      const columns = props.columns || convertChildrenToColumns(slots.default?.());\n      return (\n        <InternalTable\n          ref={table}\n          {...attrs}\n          {...props}\n          columns={columns || []}\n          expandedRowRender={slots.expandedRowRender || props.expandedRowRender}\n          contextSlots={{ ...slots }} // use new object, 否则slot热更新失效，原因需进一步探究\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n\nexport default Table;\n"
  },
  {
    "path": "components/table/__tests__/Table.filter.test.js",
    "content": "import * as Vue from 'vue';\nimport { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport Table from '..';\n\nfunction $$(className) {\n  return document.body.querySelectorAll(className);\n}\n\ndescribe('Table.filter', () => {\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  const filterFn = (value, record) => {\n    return record.name.indexOf(value) !== -1;\n  };\n  const column = {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      { text: 'Boy', value: 'boy' },\n      { text: 'Girl', value: 'girl' },\n      {\n        text: 'Title',\n        value: 'title',\n        children: [\n          { text: 'Designer', value: 'designer' },\n          { text: 'Coder', value: 'coder' },\n        ],\n      },\n    ],\n    onFilter: filterFn,\n  };\n\n  const data = [\n    { key: 0, name: 'Jack' },\n    { key: 1, name: 'Lucy' },\n    { key: 2, name: 'Tom' },\n    { key: 3, name: 'Jerry' },\n  ];\n\n  function getTableOptions(props = {}) {\n    return {\n      props: {\n        columns: [column],\n        dataSource: data,\n        pagination: false,\n        ...props,\n      },\n      sync: false,\n      attachTo: 'body',\n    };\n  }\n\n  function renderedNames(wrapper) {\n    return wrapper.findAllComponents({ name: 'TableRow' }).map(row => {\n      return row.props().record.name;\n    });\n  }\n\n  it('renders filter correctly', done => {\n    const wrapper = mount(Table, getTableOptions());\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  xit('renders menu correctly', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    let dropdownWrapper = null;\n    await asyncExpect(() => {\n      dropdownWrapper = mount(\n        {\n          render() {\n            return wrapper.findComponent({ name: 'Trigger' }).getComponent();\n          },\n        },\n        { sync: false },\n      );\n    });\n    await asyncExpect(() => {\n      expect(dropdownWrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  xit('renders radio filter correctly', async () => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            filterMultiple: false,\n          },\n        ],\n      }),\n    );\n    let dropdownWrapper = null;\n    await asyncExpect(() => {\n      dropdownWrapper = mount(\n        {\n          render() {\n            return wrapper.find({ name: 'Trigger' }).vm.getComponent();\n          },\n        },\n        { sync: false },\n      );\n    });\n    await asyncExpect(() => {\n      expect(dropdownWrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  xit('renders custom content correctly', done => {\n    const wrapper = mount(Table, {\n      ...getTableOptions({\n        columns: [\n          {\n            ...column,\n            slots: {\n              filterDropdown: 'filterDropdown',\n            },\n          },\n        ],\n      }),\n      slots: {\n        filterDropdown: `<div class='custom-filter-dropdown'>custom filter</div>`,\n      },\n    });\n\n    Vue.nextTick(() => {\n      const dropdownWrapper = mount({\n        render() {\n          return wrapper.find({ name: 'Trigger' }).vm.getComponent();\n        },\n      });\n      expect(dropdownWrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n  // TODO\n  xit('can be controlled by filterDropdownOpen', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            filterDropdownOpen: true,\n          },\n        ],\n      }),\n    );\n\n    let dropdown = wrapper.find({ name: 'ADropdown' });\n    expect(dropdown.props().visible).toBe(true);\n\n    wrapper.setProps({\n      columns: [\n        {\n          ...column,\n          filterDropdownOpen: false,\n        },\n      ],\n    });\n    Vue.nextTick(() => {\n      dropdown = wrapper.find({ name: 'ADropdown' });\n      expect(dropdown.props().visible).toBe(false);\n      done();\n    });\n  });\n\n  it('fires change event when visible change', () => {\n    const handleChange = jest.fn();\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            onFilterDropdownOpenChange: handleChange,\n          },\n        ],\n      }),\n    );\n\n    wrapper.findAll('.ant-dropdown-trigger')[0].trigger('click');\n\n    expect(handleChange).toBeCalledWith(true);\n  });\n\n  it('can be controlled by filteredValue', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            filteredValue: ['Lucy'],\n          },\n        ],\n      }),\n    );\n\n    expect(wrapper.findAll('tbody tr').length).toBe(1);\n    wrapper.setProps({\n      columns: [\n        {\n          ...column,\n          filteredValue: [],\n        },\n      ],\n    });\n    Vue.nextTick(() => {\n      expect(wrapper.findAll('tbody tr').length).toBe(4);\n      done();\n    });\n  });\n\n  it('can be controlled by filteredValue null', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            filteredValue: ['Lucy'],\n          },\n        ],\n      }),\n    );\n\n    expect(wrapper.findAll('tbody tr').length).toBe(1);\n    wrapper.setProps({\n      columns: [\n        {\n          ...column,\n          filteredValue: null,\n        },\n      ],\n    });\n    Vue.nextTick(() => {\n      expect(wrapper.findAll('tbody tr').length).toBe(4);\n      done();\n    });\n  });\n\n  xit('fires change event', async () => {\n    const handleChange = jest.fn();\n    const wrapper = mount(Table, getTableOptions({ onChange: handleChange }));\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.find({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      dropdownWrapper.find({ name: 'MenuItem' }).trigger('click');\n      dropdownWrapper.find('.confirm').trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(handleChange).toBeCalledWith(\n        {},\n        { name: ['boy'] },\n        {},\n        {\n          currentDataSource: [],\n        },\n      );\n    });\n  });\n\n  xit('three levels menu', async () => {\n    const filters = [\n      { text: 'Upper', value: 'Upper' },\n      { text: 'Lower', value: 'Lower' },\n      {\n        text: 'Level2',\n        value: 'Level2',\n        children: [\n          { text: 'Large', value: 'Large' },\n          { text: 'Small', value: 'Small' },\n          {\n            text: 'Level3',\n            value: 'Level3',\n            children: [\n              { text: 'Black', value: 'Black' },\n              { text: 'White', value: 'White' },\n              { text: 'Jack', value: 'Jack' },\n            ],\n          },\n        ],\n      },\n    ];\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [\n          {\n            ...column,\n            filters,\n          },\n        ],\n      }),\n    );\n    await asyncExpect(() => {\n      $$('.ant-dropdown-trigger')[0].click();\n    });\n    await asyncExpect(() => {\n      $$('.ant-dropdown-menu-submenu-title')[0].dispatchEvent(new MouseEvent('mouseenter'));\n    }, 0);\n    await asyncExpect(() => {\n      $$('.ant-dropdown-menu-submenu-title')[1].dispatchEvent(new MouseEvent('mouseenter'));\n    }, 500);\n    await asyncExpect(() => {\n      const menuItem = $$('.ant-dropdown-menu-item');\n      menuItem[menuItem.length - 1].click();\n    }, 500);\n\n    await asyncExpect(() => {\n      $$('.confirm')[0].click();\n    });\n    await asyncExpect(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack']);\n    }, 500);\n  });\n\n  xit('works with JSX in controlled mode', async () => {\n    const { Column } = Table;\n\n    const App = {\n      data() {\n        return {\n          filters: {},\n        };\n      },\n      methods: {\n        handleChange(pagination, filters) {\n          this.filters = filters;\n        },\n      },\n      render() {\n        return (\n          <Table dataSource={data} onChange={this.handleChange}>\n            <Column\n              title=\"name\"\n              dataIndex=\"name\"\n              key=\"name\"\n              filters={[\n                { text: 'Jack', value: 'Jack' },\n                { text: 'Lucy', value: 'Lucy' },\n              ]}\n              filteredValue={this.filters.name}\n              onFilter={filterFn}\n            />\n          </Table>\n        );\n      },\n    };\n\n    const wrapper = mount(App, { sync: false });\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.find({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      dropdownWrapper.find({ name: 'MenuItem' }).trigger('click');\n      dropdownWrapper.find('.confirm').trigger('click');\n    }, 500);\n    await asyncExpect(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack']);\n      dropdownWrapper.find('.clear').trigger('click');\n    }, 500);\n    await asyncExpect(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack', 'Lucy', 'Tom', 'Jerry']);\n    }, 500);\n  });\n\n  xit('works with grouping columns in controlled mode', async () => {\n    const columns = [\n      {\n        title: 'group',\n        key: 'group',\n        children: [\n          {\n            title: 'Name',\n            dataIndex: 'name',\n            key: 'name',\n            filters: [\n              { text: 'Jack', value: 'Jack' },\n              { text: 'Lucy', value: 'Lucy' },\n            ],\n            onFilter: filterFn,\n            filteredValue: ['Jack'],\n          },\n          {\n            title: 'Age',\n            dataIndex: 'age',\n            key: 'age',\n          },\n        ],\n      },\n    ];\n    const testData = [\n      { key: 0, name: 'Jack', age: 11 },\n      { key: 1, name: 'Lucy', age: 20 },\n      { key: 2, name: 'Tom', age: 21 },\n      { key: 3, name: 'Jerry', age: 22 },\n    ];\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: testData,\n      },\n      sync: false,\n    });\n    await sleep(500);\n    expect(renderedNames(wrapper)).toEqual(['Jack']);\n  });\n\n  fit('confirm filter when dropdown hidden', async () => {\n    const handleChange = jest.fn();\n    const wrapper = mount(Table, {\n      ...getTableOptions({\n        columns: [\n          {\n            ...column,\n            filters: [\n              { text: 'Jack', value: 'Jack' },\n              { text: 'Lucy', value: 'Lucy' },\n            ],\n          },\n        ],\n        onChange: handleChange,\n      }),\n      attachTo: 'body',\n    });\n    await asyncExpect(() => {\n      wrapper.find('.ant-dropdown-trigger').trigger('click');\n    }, 0);\n    await asyncExpect(() => {\n      $$('.ant-dropdown-menu-item')[0].click();\n    }, 500);\n    await asyncExpect(() => {\n      wrapper.find('.ant-dropdown-trigger').trigger('click');\n    }, 500);\n    await asyncExpect(() => {\n      expect(handleChange).toBeCalled();\n    }, 0);\n  });\n});\n"
  },
  {
    "path": "components/table/__tests__/Table.pagination.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Table from '..';\nimport * as Vue from 'vue';\nimport { asyncExpect, sleep } from '../../../tests/utils';\n\ndescribe('Table.pagination', () => {\n  const columns = [\n    {\n      title: 'Name',\n      dataIndex: 'name',\n    },\n  ];\n\n  const data = [\n    { key: 0, name: 'Jack' },\n    { key: 1, name: 'Lucy' },\n    { key: 2, name: 'Tom' },\n    { key: 3, name: 'Jerry' },\n  ];\n\n  const pagination = { class: 'my-page', pageSize: 2 };\n\n  function getTableOptions(props = {}) {\n    return {\n      props: {\n        columns,\n        dataSource: data,\n        pagination: { ...pagination },\n        ...props,\n      },\n      sync: false,\n    };\n  }\n\n  function renderedNames(wrapper) {\n    return wrapper.findAllComponents({ name: 'BodyRow' }).map(row => {\n      return row.props().record.name;\n    });\n  }\n\n  it('renders pagination correctly', done => {\n    const wrapper = mount(Table, getTableOptions());\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('should not show pager if pagination.hideOnSinglePage is true and only 1 page', async () => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({ pagination: { pageSize: 3, hideOnSinglePage: true } }),\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      wrapper.setProps({ pagination: { pageSize: 3, hideOnSinglePage: false } });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      wrapper.setProps({ pagination: { pageSize: 4, hideOnSinglePage: true } });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n      wrapper.setProps({ pagination: { pageSize: 4, hideOnSinglePage: false } });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      wrapper.setProps({ pagination: { pageSize: 5, hideOnSinglePage: true } });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n      wrapper.setProps({ pagination: { pageSize: 5, hideOnSinglePage: false } });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n    });\n  });\n\n  it('paginate data', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    await sleep();\n    expect(renderedNames(wrapper)).toEqual(['Jack', 'Lucy']);\n    const pager = wrapper.findAllComponents({ name: 'Pager' });\n    pager[pager.length - 1].trigger('click');\n    await sleep();\n    expect(renderedNames(wrapper)).toEqual(['Tom', 'Jerry']);\n  });\n\n  it('repaginates when pageSize change', () => {\n    const wrapper = mount(Table, getTableOptions());\n    wrapper.setProps({ pagination: { pageSize: 1 } });\n    Vue.nextTick(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack']);\n    });\n  });\n\n  it('fires change event', done => {\n    const handleChange = jest.fn();\n    const handlePaginationChange = jest.fn();\n    const noop = () => {};\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        pagination: {\n          ...pagination,\n          onChange: handlePaginationChange,\n          onShowSizeChange: noop,\n        },\n        onChange: handleChange,\n      }),\n    );\n    Vue.nextTick(() => {\n      const pager = wrapper.findAllComponents({ name: 'Pager' });\n      pager[pager.length - 1].trigger('click');\n\n      expect(handleChange).toBeCalledWith(\n        {\n          class: 'my-page',\n          current: 2,\n          pageSize: 2,\n        },\n        {},\n        {},\n        {\n          currentDataSource: [\n            { key: 0, name: 'Jack' },\n            { key: 1, name: 'Lucy' },\n            { key: 2, name: 'Tom' },\n            { key: 3, name: 'Jerry' },\n          ],\n          action: 'paginate',\n        },\n      );\n\n      expect(handlePaginationChange).toBeCalledWith(2, 2);\n      done();\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/4532\n  // https://codepen.io/afc163/pen/dVeNoP?editors=001\n  it('should have pager when change pagination from false to undefined', done => {\n    const wrapper = mount(Table, getTableOptions({ pagination: false }));\n    Vue.nextTick(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n      wrapper.setProps({ pagination: undefined });\n      Vue.nextTick(() => {\n        expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n        expect(wrapper.findAll('.ant-pagination-item-active')).toHaveLength(1);\n        done();\n      });\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/4532\n  // https://codepen.io/afc163/pen/pWVRJV?editors=001\n  it('should display pagination as prop pagination change between true and false', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      expect(wrapper.findAll('.ant-pagination-item')).toHaveLength(2);\n      wrapper.setProps({ pagination: false });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n      wrapper.setProps({ pagination });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      expect(wrapper.findAll('.ant-pagination-item')).toHaveLength(2);\n      wrapper.find('.ant-pagination-item-2').trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(renderedNames(wrapper)).toEqual(['Tom', 'Jerry']);\n      wrapper.setProps({ pagination: false });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n      wrapper.setProps({ pagination: true });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      expect(wrapper.findAll('.ant-pagination-item')).toHaveLength(2); // pageSize will be 10\n      expect(renderedNames(wrapper)).toEqual(['Tom', 'Jerry']);\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/5259\n  it('change to correct page when data source changes', done => {\n    const wrapper = mount(Table, getTableOptions({ pagination: { pageSize: 1 } }));\n    Vue.nextTick(() => {\n      wrapper.find('.ant-pagination-item-3').trigger('click');\n      wrapper.setProps({ dataSource: [data[0]] });\n      Vue.nextTick(() => {\n        expect(wrapper.find('.ant-pagination-item-1').classes()).toContain(\n          'ant-pagination-item-active',\n        );\n        done();\n      });\n    });\n  });\n\n  it('specify the position of pagination', async () => {\n    const wrapper = mount(Table, getTableOptions({ pagination: { position: ['topLeft'] } }));\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-spin-container > *')).toHaveLength(2);\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      wrapper.setProps({ pagination: { position: 'bottomRight' } });\n    }, 0);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-spin-container > *')).toHaveLength(2);\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n      wrapper.setProps({ pagination: { position: ['topLeft', 'bottomRight'] } });\n    }, 0);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.ant-spin-container > *')).toHaveLength(3);\n      expect(wrapper.findAll('.ant-pagination')).toHaveLength(2);\n    }, 0);\n    wrapper.setProps({ pagination: { position: ['none', 'none'] } });\n    await sleep();\n    expect(wrapper.findAll('.ant-pagination')).toHaveLength(0);\n    wrapper.setProps({ pagination: { position: ['invalid'] } });\n    await sleep();\n    expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n    wrapper.setProps({ pagination: { position: ['invalid', 'invalid'] } });\n    await sleep();\n    expect(wrapper.findAll('.ant-pagination')).toHaveLength(1);\n  });\n});\n"
  },
  {
    "path": "components/table/__tests__/Table.rowSelection.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport Table from '..';\njest.mock('../../_util/Portal');\ndescribe('Table.rowSelection', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n\n  afterEach(() => {\n    errorSpy.mockReset();\n    document.body.innerHTML = '';\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n  const columns = [\n    {\n      title: 'Name',\n      dataIndex: 'name',\n    },\n  ];\n\n  const data = [\n    { key: 0, name: 'Jack' },\n    { key: 1, name: 'Lucy' },\n    { key: 2, name: 'Tom' },\n    { key: 3, name: 'Jerry' },\n  ];\n  function getTableOptions(props = {}) {\n    return {\n      props: {\n        columns,\n        dataSource: data,\n        rowSelection: {},\n        ...props,\n      },\n      sync: false,\n      attachedToDocument: true,\n    };\n  }\n  function renderedNames(wrapper) {\n    return wrapper.findAllComponents({ name: 'BodyRow' }).map(row => {\n      return row.props().record.name;\n    });\n  }\n\n  function getSelections(wrapper) {\n    return [...wrapper.vm.table.selectedKeySet].sort();\n  }\n\n  xit('select by checkbox', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    const checkboxes = wrapper.findAll('input');\n    const checkboxAll = checkboxes[0];\n    checkboxAll.element.checked = true;\n    checkboxAll.trigger('change');\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([0, 1, 2, 3]);\n    });\n    checkboxes[1].element.checked = false;\n    checkboxes[1].trigger('change');\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([1, 2, 3]);\n    });\n    checkboxes[1].element.checked = true;\n    checkboxes[1].trigger('change');\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([0, 1, 2, 3]);\n    });\n  });\n\n  xit('select by radio', async () => {\n    const wrapper = mount(Table, getTableOptions({ rowSelection: { type: 'radio' } }));\n    const radios = wrapper.findAll('input');\n\n    expect(radios.length).toBe(4);\n    radios[0].element.checked = true;\n    radios[0].trigger('change');\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([0]);\n    });\n    radios[radios.length - 1].element.checked = true;\n    radios[radios.length - 1].trigger('change');\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([3]);\n    });\n  });\n\n  it('pass getCheckboxProps to checkbox', async () => {\n    const rowSelection = {\n      getCheckboxProps: record => ({\n        disabled: record.name === 'Lucy',\n        name: record.name,\n      }),\n    };\n\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const checkboxes = wrapper.findAll('input');\n    await sleep();\n    expect(checkboxes[1].wrapperElement.disabled).toBe(false);\n    expect(checkboxes[1].wrapperElement.name).toEqual(data[0].name);\n    expect(checkboxes[2].wrapperElement.disabled).toBe(true);\n    expect(checkboxes[2].wrapperElement.name).toEqual(data[1].name);\n  });\n\n  it('works with pagination', async () => {\n    const wrapper = mount(Table, getTableOptions({ pagination: { pageSize: 2 } }));\n\n    await sleep();\n    const checkboxAll = wrapper.find('input');\n    checkboxAll.wrapperElement.checked = true;\n    checkboxAll.trigger('change');\n    const pagers = wrapper.findAllComponents({ name: 'Pager' });\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'ACheckbox' }).props()).toEqual(\n        expect.objectContaining({ checked: true, indeterminate: false }),\n      );\n    });\n    pagers[1].trigger('click');\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'ACheckbox' }).props()).toEqual(\n        expect.objectContaining({ checked: false, indeterminate: false }),\n      );\n    });\n    pagers[0].trigger('click');\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'ACheckbox' }).props()).toEqual(\n        expect.objectContaining({ checked: true, indeterminate: false }),\n      );\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/4020\n  it('handles defaultChecked', async () => {\n    const rowSelection = {\n      getCheckboxProps: record => {\n        return {\n          defaultChecked: record.key === 0,\n        };\n      },\n    };\n\n    mount(Table, getTableOptions({ rowSelection }));\n\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: Table] Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.',\n    );\n  });\n\n  xit('can be controlled', async () => {\n    const wrapper = mount(Table, getTableOptions({ rowSelection: { selectedRowKeys: [0] } }));\n\n    expect(getSelections(wrapper)).toEqual([0]);\n\n    wrapper.setProps({ rowSelection: { selectedRowKeys: [1] } });\n    await asyncExpect(() => {\n      expect(getSelections(wrapper)).toEqual([1]);\n    });\n  });\n\n  it('fires change & select events', async () => {\n    const handleChange = jest.fn();\n    const handleSelect = jest.fn();\n    const rowSelection = {\n      onChange: handleChange,\n      onSelect: handleSelect,\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const checkboxs = wrapper.findAll('input');\n    checkboxs[checkboxs.length - 1].element.checked = true;\n    checkboxs[checkboxs.length - 1].trigger('change');\n    await asyncExpect(() => {\n      expect(handleChange).toBeCalledWith([3], [{ key: 3, name: 'Jerry' }]);\n      expect(handleSelect.mock.calls.length).toBe(1);\n      expect(handleSelect.mock.calls[0][0]).toEqual({ key: 3, name: 'Jerry' });\n      expect(handleSelect.mock.calls[0][1]).toEqual(true);\n      expect(handleSelect.mock.calls[0][2]).toEqual([{ key: 3, name: 'Jerry' }]);\n    });\n  });\n\n  it('fires selectAll event', async () => {\n    const handleSelectAll = jest.fn();\n    const rowSelection = {\n      onSelectAll: handleSelectAll,\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const checkboxs = wrapper.findAll('input');\n    checkboxs[0].element.checked = true;\n    checkboxs[0].trigger('change');\n    await asyncExpect(() => {\n      expect(handleSelectAll).toBeCalledWith(true, data, data);\n    });\n    checkboxs[0].element.checked = false;\n    checkboxs[0].trigger('change');\n    await asyncExpect(() => {\n      expect(handleSelectAll).toBeCalledWith(false, [], data);\n    });\n  });\n\n  it('render with default selection correctly', async () => {\n    const rowSelection = {\n      selections: true,\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      expect(dropdownWrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  it('click select all selection', () => {\n    const handleChange = jest.fn();\n    const rowSelection = {\n      onChange: handleChange,\n      selections: true,\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    dropdownWrapper.findAll('.ant-dropdown-menu-item')[0].trigger('click');\n\n    expect(handleChange.mock.calls[0][0]).toEqual([0, 1, 2, 3]);\n  });\n\n  it('fires selectInvert event', async () => {\n    const handleSelectInvert = jest.fn();\n    const rowSelection = {\n      onSelectInvert: handleSelectInvert,\n      selections: true,\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const checkboxes = wrapper.findAll('input');\n    checkboxes[1].element.checked = true;\n    checkboxes[1].trigger('change');\n    await sleep();\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    const div = dropdownWrapper.findAll('li.ant-dropdown-menu-item');\n    div[1].trigger('click');\n\n    expect(handleSelectInvert).toBeCalledWith([1, 2, 3]);\n  });\n\n  it('fires selection event', async () => {\n    const handleSelectOdd = jest.fn();\n    const handleSelectEven = jest.fn();\n    const rowSelection = {\n      selections: [\n        Table.SELECTION_ALL,\n        Table.SELECTION_INVERT,\n        {\n          key: 'odd',\n          text: '奇数项',\n          onSelect: handleSelectOdd,\n        },\n        {\n          key: 'even',\n          text: '偶数项',\n          onSelect: handleSelectEven,\n        },\n      ],\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    expect(dropdownWrapper.findAll('.ant-dropdown-menu-item').length).toBe(4);\n\n    dropdownWrapper.findAll('.ant-dropdown-menu-item')[2].trigger('click');\n    expect(handleSelectOdd).toBeCalledWith([0, 1, 2, 3]);\n\n    dropdownWrapper.findAll('.ant-dropdown-menu-item')[3].trigger('click');\n    expect(handleSelectEven).toBeCalledWith([0, 1, 2, 3]);\n  });\n\n  it('could hide default selection options', () => {\n    const rowSelection = {\n      hideDefaultSelections: true,\n      selections: [\n        {\n          key: 'odd',\n          text: '奇数项',\n        },\n        {\n          key: 'even',\n          text: '偶数项',\n        },\n      ],\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    expect(dropdownWrapper.findAll('.ant-dropdown-menu-item').length).toBe(2);\n  });\n\n  it('handle custom selection onSelect correctly when hide default selection options', () => {\n    const handleSelectOdd = jest.fn();\n    const handleSelectEven = jest.fn();\n    const rowSelection = {\n      hideDefaultSelections: true,\n      selections: [\n        {\n          key: 'odd',\n          text: '奇数项',\n          onSelect: handleSelectOdd,\n        },\n        {\n          key: 'even',\n          text: '偶数项',\n          onSelect: handleSelectEven,\n        },\n      ],\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    expect(dropdownWrapper.findAll('.ant-dropdown-menu-item').length).toBe(2);\n\n    dropdownWrapper.findAll('.ant-dropdown-menu-item')[0].trigger('click');\n    expect(handleSelectOdd).toBeCalledWith([0, 1, 2, 3]);\n\n    dropdownWrapper.findAll('.ant-dropdown-menu-item')[1].trigger('click');\n    expect(handleSelectEven).toBeCalledWith([0, 1, 2, 3]);\n  });\n\n  // https:// github.com/ant-design/ant-design/issues/4245\n  it('handles disabled checkbox correctly when dataSource changes', async () => {\n    const rowSelection = {\n      getCheckboxProps: record => {\n        return { disabled: record.disabled };\n      },\n    };\n    const wrapper = mount(Table, getTableOptions({ rowSelection }));\n    const newData = [\n      { key: 7, name: 'Jack', disabled: true },\n      { key: 8, name: 'Lucy', disabled: true },\n    ];\n    await asyncExpect(() => {\n      wrapper.setProps({ dataSource: newData });\n    });\n    await asyncExpect(() => {\n      wrapper.findAll('input').forEach(checkbox => {\n        expect(checkbox.wrapperElement.disabled).toBe(true);\n      });\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/4779\n  it('should not switch pagination when select record', async () => {\n    const newData = [];\n    for (let i = 0; i < 20; i += 1) {\n      newData.push({\n        key: i.toString(),\n        name: i.toString(),\n      });\n    }\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        rowSelection: {},\n        dataSource: newData,\n      }),\n    );\n    await sleep();\n    const pager = wrapper.findAllComponents({ name: 'Pager' });\n    pager[pager.length - 1].trigger('click'); // switch to second page\n    wrapper.findAll('input')[0].element.checked = true;\n    wrapper.findAll('input')[0].trigger('change');\n    await asyncExpect(() => {\n      expect(renderedNames(wrapper)).toEqual([\n        '10',\n        '11',\n        '12',\n        '13',\n        '14',\n        '15',\n        '16',\n        '17',\n        '18',\n        '19',\n      ]);\n    });\n  });\n\n  it('highlight selected row', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    wrapper.findAll('input')[1].element.checked = true;\n    wrapper.findAll('input')[1].trigger('change');\n    await asyncExpect(() => {\n      expect(wrapper.findAll('tbody tr')[0].classes()).toContain('ant-table-row-selected');\n    });\n  });\n\n  it('fix selection column on the left', async () => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        rowSelection: { fixed: true },\n      }),\n    );\n    await asyncExpect(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/10629\n  it('should keep all checked state when remove item from dataSource', async () => {\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: data,\n        rowSelection: {\n          selectedRowKeys: [0, 1, 2, 3],\n        },\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAllComponents({ name: 'ACheckbox' }).length).toBe(5);\n      const allCheckbox = wrapper.findAllComponents({ name: 'ACheckbox' });\n      Array(allCheckbox.length).forEach((_, index) => {\n        const checkbox = allCheckbox[index];\n        expect(checkbox.vm.checked).toBe(true);\n        expect(checkbox.vm.indeterminate).toBe(false);\n      });\n      wrapper.setProps({\n        dataSource: data.slice(1),\n        rowSelection: {\n          selectedRowKeys: [1, 2, 3],\n        },\n      });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAllComponents({ name: 'ACheckbox' }).length).toBe(4);\n      const allCheckbox = wrapper.findAllComponents({ name: 'ACheckbox' });\n      Array(allCheckbox.length).forEach((_, index) => {\n        const checkbox = allCheckbox[index];\n        expect(checkbox.vm.checked).toBe(true);\n        expect(checkbox.vm.indeterminate).toBe(false);\n      });\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/11042\n  it('add columnTitle for rowSelection', async () => {\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: data,\n        rowSelection: {\n          columnTitle: '多选',\n        },\n      },\n      sync: false,\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('thead tr th')[0].text()).toBe('多选');\n    });\n    await asyncExpect(() => {\n      wrapper.setProps({\n        rowSelection: {\n          type: 'radio',\n          columnTitle: '单选',\n        },\n      });\n    });\n    await asyncExpect(() => {\n      expect(wrapper.findAll('thead tr th')[0].text()).toBe('单选');\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/11384\n  it('should keep item even if in filter', async () => {\n    const filterColumns = [\n      {\n        title: 'Name',\n        dataIndex: 'name',\n        filters: [\n          {\n            text: 'Jack',\n            value: 'Jack',\n          },\n          {\n            text: 'Lucy',\n            value: 'Lucy',\n          },\n        ],\n        filterDropdownOpen: true,\n        onFilter: (value, record) => record.name.indexOf(value) === 0,\n      },\n    ];\n\n    const onChange = jest.fn();\n    const rowSelection = {\n      onChange,\n    };\n\n    const wrapper = mount(Table, {\n      props: {\n        columns: filterColumns,\n        dataSource: data,\n        rowSelection,\n      },\n      sync: false,\n    });\n\n    const dropdownWrapper = mount(\n      {\n        render() {\n          return wrapper.findComponent({ name: 'Trigger' }).vm.getComponent();\n        },\n      },\n      { sync: false },\n    );\n    await sleep();\n    function clickFilter(indexList) {\n      indexList.forEach(index => {\n        dropdownWrapper\n          .findAll('.ant-dropdown-menu-item .ant-checkbox-wrapper')\n          [index].trigger('click');\n      });\n      dropdownWrapper.find('.ant-table-filter-dropdown-btns .ant-btn-primary').trigger('click');\n    }\n\n    function clickItem() {\n      wrapper.findAll(\n        'tbody .ant-table-selection-column .ant-checkbox-input',\n      )[0].element.checked = true;\n      wrapper.findAll('tbody .ant-table-selection-column .ant-checkbox-input')[0].trigger('change');\n    }\n\n    // Check Jack\n    clickFilter([0]);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('tbody tr').length).toBe(1);\n    });\n    await asyncExpect(() => {\n      clickItem();\n    });\n    await asyncExpect(() => {\n      expect(onChange.mock.calls[0][0].length).toBe(1);\n      expect(onChange.mock.calls[0][1].length).toBe(1);\n    });\n\n    // Check Lucy\n    clickFilter([0]);\n    await sleep();\n    clickFilter([1]);\n    await asyncExpect(() => {\n      expect(wrapper.findAll('tbody tr').length).toBe(1);\n    });\n    await asyncExpect(() => {\n      clickItem();\n    });\n    await asyncExpect(() => {\n      expect(onChange.mock.calls[1][0].length).toBe(2);\n      expect(onChange.mock.calls[1][1].length).toBe(2);\n    });\n  });\n\n  it('render correctly when set childrenColumnName', async () => {\n    const newDatas = [\n      {\n        key: 1,\n        name: 'Jack',\n        children: [\n          {\n            key: 11,\n            name: 'John Brown',\n          },\n        ],\n      },\n      {\n        key: 2,\n        name: 'Lucy',\n        children: [\n          {\n            key: 21,\n            name: 'Lucy Brown',\n          },\n        ],\n      },\n    ];\n\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: newDatas,\n        rowSelection: {},\n        childrenColumnName: 'test',\n      },\n      sync: false,\n    });\n\n    const checkboxes = wrapper.findAll('input');\n    checkboxes[1].element.checked = true;\n    checkboxes[1].trigger('change');\n    await sleep();\n    expect(wrapper.findComponent({ name: 'ACheckbox' }).props()).toEqual(\n      expect.objectContaining({ checked: false, indeterminate: true }),\n    );\n    checkboxes[2].element.checked = true;\n    checkboxes[2].trigger('change');\n    await asyncExpect(() => {\n      expect(wrapper.findComponent({ name: 'ACheckbox' }).props()).toEqual(\n        expect.objectContaining({ checked: true, indeterminate: false }),\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "components/table/__tests__/Table.sorter.test.js",
    "content": "import * as Vue from 'vue';\nimport { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Table from '..';\n\ndescribe('Table.sorter', () => {\n  const sorterFn = (a, b) => a.name[0].charCodeAt() - b.name[0].charCodeAt();\n\n  const column = {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n    sorter: sorterFn,\n  };\n\n  const data = [\n    { key: 0, name: 'Jack' },\n    { key: 1, name: 'Lucy' },\n    { key: 2, name: 'Tom' },\n    { key: 3, name: 'Jerry' },\n  ];\n\n  function getTableOptions(props = {}, columnProps = {}) {\n    return {\n      props: {\n        columns: [\n          {\n            ...column,\n            ...columnProps,\n          },\n        ],\n        dataSource: data,\n        pagination: false,\n        ...props,\n      },\n      sync: false,\n      attachedToDocument: true,\n    };\n  }\n\n  function renderedNames(wrapper) {\n    return wrapper.findAllComponents({ name: 'BodyRow' }).map(row => {\n      return row.props().record.name;\n    });\n  }\n\n  it('renders sorter icon correctly', done => {\n    const wrapper = mount(Table, getTableOptions());\n    Vue.nextTick(() => {\n      expect(wrapper.find('thead').html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('default sort order ascend', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions(\n        {},\n        {\n          defaultSortOrder: 'ascend',\n        },\n      ),\n    );\n    Vue.nextTick(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack', 'Jerry', 'Lucy', 'Tom']);\n      done();\n    });\n  });\n\n  it('default sort order descend', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions(\n        {},\n        {\n          defaultSortOrder: 'descend',\n        },\n      ),\n    );\n    Vue.nextTick(() => {\n      expect(renderedNames(wrapper)).toEqual(['Tom', 'Lucy', 'Jack', 'Jerry']);\n      done();\n    });\n  });\n\n  it('sort records', async () => {\n    const wrapper = mount(Table, getTableOptions());\n    await asyncExpect(() => {\n      // descent\n      wrapper.find('.ant-table-column-sorters').trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-table-tbody').text()).toEqual(\n        ['Jack', 'Jerry', 'Lucy', 'Tom'].join(''),\n      );\n\n      // ascent\n      wrapper.find('.ant-table-column-sorters').trigger('click');\n    });\n    await asyncExpect(() => {\n      expect(wrapper.find('.ant-table-tbody').text()).toEqual(\n        ['Tom', 'Lucy', 'Jack', 'Jerry'].join(''),\n      );\n    });\n  });\n\n  it('can be controlled by sortOrder', done => {\n    const wrapper = mount(\n      Table,\n      getTableOptions({\n        columns: [{ ...column, sortOrder: 'ascend' }],\n      }),\n    );\n    Vue.nextTick(() => {\n      expect(renderedNames(wrapper)).toEqual(['Jack', 'Jerry', 'Lucy', 'Tom']);\n      done();\n    });\n  });\n\n  it('fires change event', async () => {\n    const handleChange = jest.fn();\n    const wrapper = mount(Table, getTableOptions({ onChange: handleChange }, {}));\n\n    wrapper.find('.ant-table-column-sorters').trigger('click');\n    await asyncExpect(() => {\n      const sorter1 = handleChange.mock.calls[0][2];\n      expect(sorter1.column.dataIndex).toBe('name');\n      expect(sorter1.order).toBe('ascend');\n      expect(sorter1.field).toBe('name');\n      expect(sorter1.columnKey).toBe('name');\n    });\n    wrapper.find('.ant-table-column-sorters').trigger('click');\n    await asyncExpect(() => {\n      const sorter2 = handleChange.mock.calls[1][2];\n      expect(sorter2.column.dataIndex).toBe('name');\n      expect(sorter2.order).toBe('descend');\n      expect(sorter2.field).toBe('name');\n      expect(sorter2.columnKey).toBe('name');\n    });\n\n    wrapper.find('.ant-table-column-sorters').trigger('click');\n    await asyncExpect(() => {\n      const sorter3 = handleChange.mock.calls[2][2];\n      expect(sorter3.column).toBe(undefined);\n      expect(sorter3.order).toBe(undefined);\n      expect(sorter3.field).toBe('name');\n      expect(sorter3.columnKey).toBe('name');\n    });\n  });\n\n  it('works with grouping columns in controlled mode', done => {\n    const columns = [\n      {\n        title: 'group',\n        key: 'group',\n        children: [\n          {\n            title: 'Name',\n            dataIndex: 'name',\n            key: 'name',\n            sorter: sorterFn,\n            sortOrder: 'descend',\n          },\n          {\n            title: 'Age',\n            dataIndex: 'age',\n            key: 'age',\n          },\n        ],\n      },\n    ];\n    const testData = [\n      { key: 0, name: 'Jack', age: 11 },\n      { key: 1, name: 'Lucy', age: 20 },\n      { key: 2, name: 'Tom', age: 21 },\n      { key: 3, name: 'Jerry', age: 22 },\n    ];\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: testData,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      expect(renderedNames(wrapper)).toEqual(['Tom', 'Lucy', 'Jack', 'Jerry']);\n      done();\n    });\n  });\n});\n"
  },
  {
    "path": "components/table/__tests__/Table.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Table from '..';\nimport * as Vue from 'vue';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { sleep } from '../../../tests/utils';\n\nconst { Column, ColumnGroup } = Table;\n\ndescribe('Table', () => {\n  mountTest(Table);\n  const data = [\n    {\n      key: '1',\n      firstName: 'John',\n      lastName: 'Brown',\n      age: 32,\n    },\n    {\n      key: '2',\n      firstName: 'Jim',\n      lastName: 'Green',\n      age: 42,\n    },\n  ];\n\n  it('renders JSX correctly', done => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Table dataSource={data} pagination={false}>\n              <ColumnGroup title=\"Name\">\n                <Column title=\"First Name\" dataIndex=\"firstName\" key=\"firstName\" />\n                <Column title=\"Last Name\" dataIndex=\"lastName\" key=\"lastName\" />\n              </ColumnGroup>\n              <Column title=\"Age\" dataIndex=\"age\" key=\"age\" />\n            </Table>\n          );\n        },\n      },\n      { sync: false },\n    );\n\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('updates columns when receiving props', async () => {\n    const columns = [\n      {\n        title: 'Name',\n        key: 'name',\n        dataIndex: 'name',\n      },\n    ];\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n      },\n      sync: false,\n    });\n    const newColumns = [\n      {\n        title: 'Title',\n        key: 'title',\n        dataIndex: 'title',\n      },\n    ];\n    wrapper.setProps({ columns: newColumns });\n    await sleep();\n    expect(wrapper.find('th').text()).toEqual('Title');\n  });\n\n  it('loading with Spin', async () => {\n    const loading = {\n      spinning: false,\n      delay: 500,\n    };\n    const wrapper = mount(Table, {\n      props: {\n        loading,\n      },\n      sync: false,\n    });\n    await sleep();\n    expect(wrapper.findAll('.ant-spin')).toHaveLength(0);\n    expect(wrapper.find('.ant-table-placeholder').text()).not.toEqual('');\n\n    loading.spinning = true;\n    wrapper.setProps({ loading: { ...loading } });\n    await sleep();\n    expect(wrapper.findAll('.ant-spin')).toHaveLength(0);\n\n    await sleep(500);\n    expect(wrapper.findAll('.ant-spin')).toHaveLength(1);\n  });\n\n  it('align column should not override cell style', done => {\n    const columns = [\n      { title: 'Name', dataIndex: 'name', key: 'name' },\n      {\n        title: 'Age',\n        dataIndex: 'age',\n        key: 'age',\n        align: 'center',\n        customCell: () => {\n          return {\n            style: {\n              color: 'red',\n            },\n          };\n        },\n      },\n    ];\n    const wrapper = mount(Table, {\n      props: {\n        columns,\n        dataSource: data,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n});\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/Table.filter.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table.filter renders custom content correctly 1`] = `\n<div>\n  <div class=\"ant-dropdown  ant-dropdown-placement-bottomRight\" style=\"display: none;\">\n    <div class=\"ant-table-filter-dropdown ant-dropdown-content\">\n      <div class=\"custom-filter-dropdown\">custom filter</div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table.filter renders filter correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <div class=\"ant-table ant-table-default ant-table-scroll-position-left\">\n        <!---->\n        <div class=\"ant-table-content\">\n          <!---->\n          <div class=\"ant-table-body\">\n            <table class=\"\">\n              <colgroup>\n                <col>\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-column-has-actions ant-table-column-has-filters ant-table-row-cell-last\"><span class=\"ant-table-header-column\"><div class=\"\"><span class=\"ant-table-column-title\">Name</span><span class=\"ant-table-column-sorter\"><!----></span>\n          </div></span>\n          <!--teleport start-->\n          <!--teleport end--><span title=\"Filter menu\" tabindex=\"-1\" role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter ant-dropdown-trigger\"><svg class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\" focusable=\"false\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></th>\n          </tr>\n          </thead>\n          <tbody class=\"ant-table-tbody\">\n            <tr class=\"ant-table-row ant-table-row-level-0\" data-row-key=\"0\">\n              <td class=\"ant-table-column-has-actions ant-table-column-has-filters\">\n                <!---->\n                <!---->Jack\n              </td>\n            </tr>\n            <tr class=\"ant-table-row ant-table-row-level-0\" data-row-key=\"1\">\n              <td class=\"ant-table-column-has-actions ant-table-column-has-filters\">\n                <!---->\n                <!---->Lucy\n              </td>\n            </tr>\n            <tr class=\"ant-table-row ant-table-row-level-0\" data-row-key=\"2\">\n              <td class=\"ant-table-column-has-actions ant-table-column-has-filters\">\n                <!---->\n                <!---->Tom\n              </td>\n            </tr>\n            <tr class=\"ant-table-row ant-table-row-level-0\" data-row-key=\"3\">\n              <td class=\"ant-table-column-has-actions ant-table-column-has-filters\">\n                <!---->\n                <!---->Jerry\n              </td>\n            </tr>\n          </tbody>\n          </table>\n        </div>\n        <!---->\n        <!---->\n        <!---->\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n</div>\n`;\n\nexports[`Table.filter renders menu correctly 1`] = `\n<div>\n  <div class=\"ant-dropdown  ant-dropdown-placement-bottomRight\" style=\"display: none;\">\n    <div class=\"ant-table-filter-dropdown ant-dropdown-content\">\n      <ul role=\"menu\" tabindex=\"0\" class=\"ant-dropdown-menu ant-dropdown-menu-vertical ant-dropdown-menu-root\">\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-item\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"\"><span class=\"ant-checkbox-inner\"></span></span></label><span>Boy</span></li>\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-item\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" value=\"\"><span class=\"ant-checkbox-inner\"></span></span></label><span>Girl</span></li>\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-submenu ant-dropdown-menu-submenu-vertical\">\n          <div aria-haspopup=\"true\" title=\"Title\" class=\"ant-dropdown-menu-submenu-title\">Title<i class=\"ant-dropdown-menu-submenu-arrow\"></i></div>\n        </li>\n      </ul>\n      <div class=\"ant-table-filter-dropdown-btns\"><a class=\"ant-table-filter-dropdown-link confirm\">OK</a><a class=\"ant-table-filter-dropdown-link clear\">Reset</a></div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table.filter renders radio filter correctly 1`] = `\n<div>\n  <div class=\"ant-dropdown  ant-dropdown-placement-bottomRight\" style=\"display: none;\">\n    <div class=\"ant-table-filter-dropdown ant-dropdown-content\">\n      <ul role=\"menu\" tabindex=\"0\" class=\"ant-dropdown-menu ant-dropdown-menu-vertical ant-dropdown-menu-root\">\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-item\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"\"><span class=\"ant-radio-inner\"></span></span></label><span>Boy</span></li>\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-item\"><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"\"><span class=\"ant-radio-inner\"></span></span></label><span>Girl</span></li>\n        <li role=\"menuitem\" class=\"ant-dropdown-menu-submenu ant-dropdown-menu-submenu-vertical\">\n          <div aria-haspopup=\"true\" title=\"Title\" class=\"ant-dropdown-menu-submenu-title\">Title<i class=\"ant-dropdown-menu-submenu-arrow\"></i></div>\n        </li>\n      </ul>\n      <div class=\"ant-table-filter-dropdown-btns\"><a class=\"ant-table-filter-dropdown-link confirm\">OK</a><a class=\"ant-table-filter-dropdown-link clear\">Reset</a></div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/Table.pagination.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table.pagination renders pagination correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jack\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Lucy\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right my-page\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/Table.rowSelection.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table.rowSelection fix selection column on the left 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-has-fix-left\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col class=\"ant-table-selection-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-selection-column\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-selection-column\" style=\"position: sticky; left: 0px;\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jack\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-selection-column\" style=\"position: sticky; left: 0px;\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lucy\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-selection-column\" style=\"position: sticky; left: 0px;\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Tom\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-selection-column\" style=\"position: sticky; left: 0px;\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jerry\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table.rowSelection render with default selection correctly 1`] = `\n<div>\n  <!---->\n  <div class=\"ant-dropdown ant-slide-up-enter ant-slide-up-enter-prepare ant-slide-up-enter-start\" style=\"pointer-events: none; display: none;\">\n    <!---->\n    <ul class=\"ant-dropdown-menu ant-dropdown-menu-root ant-dropdown-menu-vertical ant-dropdown-menu-light\" role=\"menu\" data-menu-list=\"true\">\n      <div>\n        <!---->\n        <div class=\"ant-tooltip ant-dropdown-menu-inline-collapsed-tooltip ant-zoom-big-fast-enter ant-zoom-big-fast-enter-prepare ant-zoom-big-fast-enter-start\" style=\"pointer-events: none; display: none;\">\n          <div class=\"ant-tooltip-content\">\n            <div class=\"ant-tooltip-arrow\"><span class=\"ant-tooltip-arrow-content\"></span></div>\n            <div class=\"ant-tooltip-inner\" role=\"tooltip\">\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n      <li class=\"ant-dropdown-menu-item ant-dropdown-menu-item-only-child\" data-menu-id=\"all\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-dropdown-menu-title-content\">Select all data</span>\n      </li>\n      <div>\n        <!---->\n        <div class=\"ant-tooltip ant-dropdown-menu-inline-collapsed-tooltip ant-zoom-big-fast-enter ant-zoom-big-fast-enter-prepare ant-zoom-big-fast-enter-start\" style=\"pointer-events: none; display: none;\">\n          <div class=\"ant-tooltip-content\">\n            <div class=\"ant-tooltip-arrow\"><span class=\"ant-tooltip-arrow-content\"></span></div>\n            <div class=\"ant-tooltip-inner\" role=\"tooltip\">\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n      <li class=\"ant-dropdown-menu-item ant-dropdown-menu-item-only-child\" data-menu-id=\"invert\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-dropdown-menu-title-content\">Invert current page</span>\n      </li>\n      <div>\n        <!---->\n        <div class=\"ant-tooltip ant-dropdown-menu-inline-collapsed-tooltip ant-zoom-big-fast-enter ant-zoom-big-fast-enter-prepare ant-zoom-big-fast-enter-start\" style=\"pointer-events: none; display: none;\">\n          <div class=\"ant-tooltip-content\">\n            <div class=\"ant-tooltip-arrow\"><span class=\"ant-tooltip-arrow-content\"></span></div>\n            <div class=\"ant-tooltip-inner\" role=\"tooltip\">\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n      <li class=\"ant-dropdown-menu-item ant-dropdown-menu-item-only-child\" data-menu-id=\"none\" aria-disabled=\"false\" role=\"menuitem\" tabindex=\"-1\">\n        <!----><span class=\"ant-dropdown-menu-title-content\">Clear all data</span>\n      </li>\n      <!---->\n      <!---->\n      <!--teleport start-->\n      <!--teleport end-->\n    </ul>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/Table.sorter.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table.sorter renders sorter icon correctly 1`] = `\n<thead class=\"ant-table-thead\">\n  <tr>\n    <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"0\" colend=\"0\">\n      <!---->\n      <!---->\n      <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Name</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n      <!---->\n    </th>\n  </tr>\n</thead>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/Table.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table align column should not override cell style 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" style=\"text-align: center;\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <!---->\n                    <!---->\n                  </td>\n                  <td style=\"color: red; text-align: center;\" class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <!---->\n                    <!---->\n                  </td>\n                  <td style=\"color: red; text-align: center;\" class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table renders JSX correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th colspan=\"2\" class=\"ant-table-cell\" colstart=\"0\" hassubcolumns=\"true\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                </tr>\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->First Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Last Name\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/table/demo/basic.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!----><span><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span> Name </span>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Tags\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-green\">NICE<!----></span><span class=\"ant-tag ant-tag-geekblue\">DEVELOPER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 John Brown</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-volcano\">LOSER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 Jim Green</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-green\">COOL<!----></span><span class=\"ant-tag ant-tag-geekblue\">TEACHER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 Joe Black</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/big-data.vue correctly 1`] = `\n<iframe src=\"https://www.surelyvue.com/for-ant-demo\" height=\"400\"></iframe>\n<!--v-if-->\n`;\n\nexports[`renders ./components/table/demo/bordered.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-bordered\">\n        <div class=\"ant-table-title\">Header</div>\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell column-money\" colstart=\"1\" colend=\"1\">\n                    <!---->Cash Assets\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell column-money\">\n                    <!---->￥300,000.00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell column-money\">\n                    <!---->￥1,256,000.00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell column-money\">\n                    <!---->￥120,000.00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <div class=\"ant-table-footer\">Footer</div>\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/colspan-rowspan.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th colspan=\"2\" class=\"ant-table-cell\" colstart=\"2\" colend=\"3\">\n                    <!---->Home phone\n                    <!---->\n                  </th>\n                  <!---->\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a href=\"javascript:;\">John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->0571-22098909\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->18889898989\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a href=\"javascript:;\">Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->0571-22098333\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->18889898888\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a href=\"javascript:;\">Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td rowspan=\"2\" class=\"ant-table-cell\">\n                    <!---->0575-22098909\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->18900010002\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a href=\"javascript:;\">Jim Red</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->18\n                    <!---->\n                  </td>\n                  <!---->\n                  <td class=\"ant-table-cell\">\n                    <!---->18900010002\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 2 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td colspan=\"5\" class=\"ant-table-cell\">\n                    <!----><a href=\"javascript:;\">Jake White</a>\n                    <!---->\n                  </td>\n                  <!---->\n                  <!---->\n                  <!---->\n                  <!---->\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/custom-filter-panel.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\"><span style=\"color: rgb(24, 144, 255);\">Name</span></span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Address</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Red\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 2 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/edit-cell.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-default editable-add-btn\" style=\"margin-bottom: 8px;\" type=\"button\">\n  <!----><span>Add</span>\n</button>\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 30%;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->address\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->operation\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-cell\">\n                      <div class=\"editable-cell-text-wrapper\">Edward King 0 <span role=\"img\" aria-label=\"edit\" tabindex=\"-1\" class=\"anticon anticon-edit editable-cell-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n                    </div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <!----><a>Delete</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-cell\">\n                      <div class=\"editable-cell-text-wrapper\">Edward King 1 <span role=\"img\" aria-label=\"edit\" tabindex=\"-1\" class=\"anticon anticon-edit editable-cell-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n                    </div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <!----><a>Delete</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/edit-row.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 25%;\">\n                <col style=\"width: 15%;\">\n                <col style=\"width: 40%;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->address\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->operation\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 0</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 0</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 1</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 1</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 2</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 2</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 3</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 3</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 4</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 4</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 5</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 5</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 6</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 6</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 7</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 7</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 8</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 8</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>Edrward 9</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>32</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div>London Park no. 9</div>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"editable-row-operations\"><span><a>Edit</a></span></div>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n        <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n        <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n        <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n            <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n          </a></li>\n        <li title=\"10\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-10\"><a rel=\"nofollow\">10</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <li class=\"ant-pagination-options\">\n          <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/ellipsis.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: fixed;\">\n              <colgroup>\n                <col>\n                <col style=\"width: 80px;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th title=\"Address\" class=\"ant-table-cell ant-table-cell-ellipsis\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th title=\"Long Column Long Column Long Column\" class=\"ant-table-cell ant-table-cell-ellipsis\" colstart=\"3\" colend=\"3\">\n                    <!---->Long Column Long Column Long Column\n                    <!---->\n                  </th>\n                  <th title=\"Long Column Long Column\" class=\"ant-table-cell ant-table-cell-ellipsis\" colstart=\"4\" colend=\"4\">\n                    <!---->Long Column Long Column\n                    <!---->\n                  </th>\n                  <th title=\"Long Column\" class=\"ant-table-cell ant-table-cell-ellipsis\" colstart=\"5\" colend=\"5\">\n                    <!---->Long Column\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td title=\"New York No. 1 Lake Park, New York No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->New York No. 1 Lake Park, New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"New York No. 1 Lake Park, New York No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->New York No. 1 Lake Park, New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"New York No. 1 Lake Park, New York No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->New York No. 1 Lake Park, New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"New York No. 1 Lake Park, New York No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->New York No. 1 Lake Park, New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td title=\"London No. 2 Lake Park, London No. 2 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->London No. 2 Lake Park, London No. 2 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"London No. 2 Lake Park, London No. 2 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->London No. 2 Lake Park, London No. 2 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"London No. 2 Lake Park, London No. 2 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->London No. 2 Lake Park, London No. 2 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"London No. 2 Lake Park, London No. 2 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->London No. 2 Lake Park, London No. 2 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td title=\"Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td title=\"Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                    <!---->Sidney No. 1 Lake Park, Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/expand.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow-x: auto; overflow-y: hidden;\" class=\"ant-table-content\">\n            <table style=\"width: 2000px; min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\" class=\"ant-table-expand-icon-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-row-expand-icon-cell\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!----><span style=\"color: red;\">More</span>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Delete</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Delete</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Delete</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/expand-children.vue correctly 1`] = `\n<div style=\"margin-bottom: 16px;\" class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"> CheckStrictly: </div>\n  <!---->\n  <div class=\"ant-space-item\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <!---->\n</div>\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col class=\"ant-table-selection-col\">\n                <col>\n                <col style=\"width: 12%;\">\n                <col style=\"width: 30%;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-with-append\"><span style=\"padding-left: 0px;\" class=\"ant-table-row-indent indent-level-0\"></span><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>John Brown sr.\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->60\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-with-append\"><span style=\"padding-left: 0px;\" class=\"ant-table-row-indent indent-level-0\"></span><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-spaced\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/filter-in-tree.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 30%;\">\n                <col>\n                <col style=\"width: 40%;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"1\" colend=\"1\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Age</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Address</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Red\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 2 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/filter-search.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 30%;\">\n                <col>\n                <col style=\"width: 40%;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"1\" colend=\"1\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Age</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Address</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Red\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 2 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/fixed-columns.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-header ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left ant-table-has-fix-right\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden;\" class=\"ant-table-header\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->Full Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"8\" colend=\"8\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"9\" colend=\"9\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\" colstart=\"10\" colend=\"10\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-x: auto; overflow-y: scroll; max-height: 1000px;\" class=\"ant-table-body\">\n            <table style=\"width: 1300px; min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n                <col style=\"width: 100px;\">\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->40\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/fixed-columns-header.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-header ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left ant-table-has-fix-right\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden;\" class=\"ant-table-header\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->Full Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"8\" colend=\"8\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"9\" colend=\"9\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\" colstart=\"10\" colend=\"10\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-x: auto; overflow-y: scroll; max-height: 300px;\" class=\"ant-table-body\">\n            <table style=\"width: 1500px; min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n                <col style=\"width: 100px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col>\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n        <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n        <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n        <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n            <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n          </a></li>\n        <li title=\"10\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-10\"><a rel=\"nofollow\">10</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <li class=\"ant-pagination-options\">\n          <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/fixed-header.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-header\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden;\" class=\"ant-table-header\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-y: scroll; max-height: 240px;\" class=\"ant-table-body\">\n            <table style=\"table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 0\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 1\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 2\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 3\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 4\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 5\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 6\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 7\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 8\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 9\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"10\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 10\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 10\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"11\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 11\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 11\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"12\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 12\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 12\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"13\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 13\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 13\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"14\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 14\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 14\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"15\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 15\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 15\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"16\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 16\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 16\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"17\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 17\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 17\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"18\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 18\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 18\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"19\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 19\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 19\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"20\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 20\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 20\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"21\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 21\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 21\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"22\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 22\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 22\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"23\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 23\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 23\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"24\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 24\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 24\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"25\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 25\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 25\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"26\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 26\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 26\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"27\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 27\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 27\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"28\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 28\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 28\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"29\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 29\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 29\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"30\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 30\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 30\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"31\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 31\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 31\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"32\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 32\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"33\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 33\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 33\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"34\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 34\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 34\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"35\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 35\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 35\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"36\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 36\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 36\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"37\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 37\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 37\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"38\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 38\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 38\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"39\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 39\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 39\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"40\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 40\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 40\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"41\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 41\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 41\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"42\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 42\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"43\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 43\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 43\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"44\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 44\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 44\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"45\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 45\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 45\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"46\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 46\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 46\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"47\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 47\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 47\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"48\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 48\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 48\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"49\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 49\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 49\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <li class=\"ant-pagination-options\">\n          <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">50 / page</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/grouping-columns.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-header ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left ant-table-has-fix-right ant-table-middle ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden;\" class=\"ant-table-header\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th rowspan=\"4\" class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\">Name</span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n                    </div>\n                    <!---->\n                  </th>\n                  <th colspan=\"4\" class=\"ant-table-cell\" colstart=\"1\" hassubcolumns=\"true\" colend=\"4\">\n                    <!---->Other\n                    <!---->\n                  </th>\n                  <th colspan=\"2\" class=\"ant-table-cell\" colstart=\"5\" hassubcolumns=\"true\" colend=\"6\">\n                    <!---->Company\n                    <!---->\n                  </th>\n                  <th rowspan=\"4\" class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\" colstart=\"7\" colend=\"7\">\n                    <!---->Gender\n                    <!---->\n                  </th>\n                </tr>\n                <tr>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" rowspan=\"3\" colstart=\"1\" colend=\"1\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Age</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                  <th colspan=\"3\" class=\"ant-table-cell\" colstart=\"2\" hassubcolumns=\"true\" colend=\"4\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th rowspan=\"3\" class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Company Address\n                    <!---->\n                  </th>\n                  <th rowspan=\"3\" class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Company Name\n                    <!---->\n                  </th>\n                </tr>\n                <tr>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Street\n                    <!---->\n                  </th>\n                  <th colspan=\"2\" class=\"ant-table-cell\" colstart=\"3\" hassubcolumns=\"true\" colend=\"4\">\n                    <!---->Block\n                    <!---->\n                  </th>\n                </tr>\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Building\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Door No.\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-x: auto; overflow-y: scroll; max-height: 240px;\" class=\"ant-table-body\">\n            <table style=\"width: calc(700px + 50%); min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n                <col style=\"width: 200px;\">\n                <col style=\"width: 200px;\">\n                <col style=\"width: 100px;\">\n                <col style=\"width: 100px;\">\n                <col style=\"width: 200px;\">\n                <col>\n                <col style=\"width: 80px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->C\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2035\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Lake Street 42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->SoftLake Co\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->M\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n        <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n        <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n        <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n            <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n          </a></li>\n        <li title=\"10\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-10\"><a rel=\"nofollow\">10</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <li class=\"ant-pagination-options\">\n          <div class=\"ant-select ant-select-sm ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/head.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\"><!----><div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Name</span><span class=\"ant-table-column-sorter\"><span class=\"ant-table-column-sorter-inner\"><!----><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div></span>\n                    <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n          </div>\n          <!---->\n          </th>\n          <th aria-sort=\"descending\" class=\"ant-table-cell ant-table-column-has-sorters ant-table-column-sort\" tabindex=\"0\" colstart=\"1\" colend=\"1\">\n            <!---->\n            <!---->\n            <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Age</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down active\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n            <!---->\n          </th>\n          <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"2\" colend=\"2\">\n            <!---->\n            <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\"><!----><div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Address</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div></span>\n            <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n        </div>\n        <!---->\n        </th>\n        </tr>\n        </thead>\n        <tbody class=\"ant-table-tbody\">\n          <!---->\n          <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n            <td class=\"ant-table-cell\">\n              <!---->Jim Green\n              <!---->\n            </td>\n            <td class=\"ant-table-cell ant-table-column-sort\">\n              <!---->42\n              <!---->\n            </td>\n            <td class=\"ant-table-cell\">\n              <!---->London No. 1 Lake Park\n              <!---->\n            </td>\n          </tr>\n          <!---->\n          <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n            <td class=\"ant-table-cell\">\n              <!---->John Brown\n              <!---->\n            </td>\n            <td class=\"ant-table-cell ant-table-column-sort\">\n              <!---->32\n              <!---->\n            </td>\n            <td class=\"ant-table-cell\">\n              <!---->New York No. 1 Lake Park\n              <!---->\n            </td>\n          </tr>\n          <!---->\n          <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n            <td class=\"ant-table-cell\">\n              <!---->Joe Black\n              <!---->\n            </td>\n            <td class=\"ant-table-cell ant-table-column-sort\">\n              <!---->32\n              <!---->\n            </td>\n            <td class=\"ant-table-cell\">\n              <!---->Sidney No. 1 Lake Park\n              <!---->\n            </td>\n          </tr>\n          <!---->\n          <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n            <td class=\"ant-table-cell\">\n              <!---->Jim Red\n              <!---->\n            </td>\n            <td class=\"ant-table-cell ant-table-column-sort\">\n              <!---->32\n              <!---->\n            </td>\n            <td class=\"ant-table-cell\">\n              <!---->London No. 2 Lake Park\n              <!---->\n            </td>\n          </tr>\n          <!---->\n        </tbody>\n        <!---->\n        </table>\n      </div>\n    </div>\n    <!---->\n  </div>\n  <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n    <!---->\n    <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n    <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n    <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n    <!---->\n  </ul>\n</div>\n</div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/multiple-sorter.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"1\" colend=\"1\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Chinese Score</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"2\" colend=\"2\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Math Score</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"3\" colend=\"3\">\n                    <!---->\n                    <!---->\n                    <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">English Score</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->98\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->60\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->70\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->98\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->66\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->89\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->98\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->90\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->70\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Red\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->88\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->99\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->89\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/nested-table.vue correctly 1`] = `\n<div class=\"ant-table-wrapper components-table-demo-nested\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col class=\"ant-table-expand-icon-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-row-expand-icon-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Platform\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Version\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Upgraded\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Creator\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Date\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Screem 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->iOS\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10.3.4.5654\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->500\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jack\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2014-12-24 23:12:00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Publish</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Screem 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->iOS\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10.3.4.5654\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->500\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jack\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2014-12-24 23:12:00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Publish</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Screem 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->iOS\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10.3.4.5654\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->500\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jack\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->2014-12-24 23:12:00\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Publish</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/order-column.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col>\n                <col class=\"ant-table-expand-icon-col\">\n                <col>\n                <col class=\"ant-table-selection-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-row-expand-icon-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"3\" colend=\"3\">\n                    <!---->\n                    <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Not Expandable\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->29\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Jiangsu No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><button type=\"button\" class=\"ant-table-row-expand-icon ant-table-row-expand-icon-collapsed\" aria-label=\"Expand row\" aria-expanded=\"false\"></button>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/reset-filter.vue correctly 1`] = `\n<div>\n  <div class=\"table-operations\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Sort age</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Clear filters</span>\n    </button><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Clear filters and sorters</span>\n    </button></div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: fixed;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\"><!----><div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Name</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div></span>\n                      <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n            </div>\n            <!---->\n            </th>\n            <th class=\"ant-table-cell ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"1\" colend=\"1\">\n              <!---->\n              <!---->\n              <div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Age</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div>\n              <!---->\n            </th>\n            <th class=\"ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters\" tabindex=\"0\" colstart=\"2\" colend=\"2\">\n              <!---->\n              <div class=\"ant-table-filter-column\"><span class=\"ant-table-column-title\"><!----><div class=\"ant-table-column-sorters\"><span class=\"ant-table-column-title\">Address</span><span class=\"ant-table-column-sorter ant-table-column-sorter-full\"><span class=\"ant-table-column-sorter-inner\"><span role=\"presentation\" aria-label=\"caret-up\" class=\"anticon anticon-caret-up ant-table-column-sorter-up\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"></path></svg></span><span role=\"presentation\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-table-column-sorter-down\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span></span></div></span>\n              <!----><span role=\"button\" tabindex=\"-1\" class=\"ant-table-filter-trigger ant-dropdown-trigger\"><span role=\"img\" aria-label=\"filter\" class=\"anticon anticon-filter\"><svg focusable=\"false\" class=\"\" data-icon=\"filter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"></path></svg></span></span>\n          </div>\n          <!---->\n          </th>\n          </tr>\n          </thead>\n          <tbody class=\"ant-table-tbody\">\n            <!---->\n            <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n              <td title=\"John Brown\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->John Brown\n                <!---->\n              </td>\n              <td class=\"ant-table-cell\">\n                <!---->32\n                <!---->\n              </td>\n              <td title=\"New York No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->New York No. 1 Lake Park\n                <!---->\n              </td>\n            </tr>\n            <!---->\n            <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n              <td title=\"Jim Green\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->Jim Green\n                <!---->\n              </td>\n              <td class=\"ant-table-cell\">\n                <!---->42\n                <!---->\n              </td>\n              <td title=\"London No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->London No. 1 Lake Park\n                <!---->\n              </td>\n            </tr>\n            <!---->\n            <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n              <td title=\"Joe Black\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->Joe Black\n                <!---->\n              </td>\n              <td class=\"ant-table-cell\">\n                <!---->32\n                <!---->\n              </td>\n              <td title=\"Sidney No. 1 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->Sidney No. 1 Lake Park\n                <!---->\n              </td>\n            </tr>\n            <!---->\n            <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n              <td title=\"Jim Red\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->Jim Red\n                <!---->\n              </td>\n              <td class=\"ant-table-cell\">\n                <!---->32\n                <!---->\n              </td>\n              <td title=\"London No. 2 Lake Park\" class=\"ant-table-cell ant-table-cell-ellipsis\">\n                <!---->London No. 2 Lake Park\n                <!---->\n              </td>\n            </tr>\n            <!---->\n          </tbody>\n          <!---->\n          </table>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n      <!---->\n      <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n      <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n      <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n      <!---->\n    </ul>\n  </div>\n</div>\n</div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/resizable-column.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 150px;\">\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!----><span><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span> Name </span>\n                    <div class=\"ant-table-resize-handle \">\n                      <div class=\"ant-table-resize-handle-line\"></div>\n                    </div>\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age<div class=\"ant-table-resize-handle \">\n                      <div class=\"ant-table-resize-handle-line\"></div>\n                    </div>\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Tags\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-green\">NICE<!----></span><span class=\"ant-tag ant-tag-geekblue\">DEVELOPER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 John Brown</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-volcano\">LOSER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 Jim Green</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-green\">COOL<!----></span><span class=\"ant-tag ant-tag-geekblue\">TEACHER<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Invite 一 Joe Black</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a class=\"ant-dropdown-link\"> More actions <span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/responsive.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name (all screens)\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/row-selection.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col class=\"ant-table-selection-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input name=\"John Brown\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>John Brown</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input name=\"Jim Green\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Jim Green</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input name=\"Joe Black\" type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Joe Black</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input name=\"Disabled User\" type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><a>Disabled User</a>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->99\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/row-selection-and-operation.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 16px;\"><button disabled=\"\" class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Reload</span>\n    </button><span style=\"margin-left: 8px;\"><!--v-if--></span></div>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup>\n                  <col class=\"ant-table-selection-col\">\n                </colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                      <!---->\n                      <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                          <!---->\n                        </label>\n                        <!---->\n                      </div>\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Name\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                      <!---->Address\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 0\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 0\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 1\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 1\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 2\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 2\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 3\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 3\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 4\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 4\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 5\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 5\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 6\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 6\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 7\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 7\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 8\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 8\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell ant-table-selection-column\">\n                      <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Edward King 9\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London, Park Lane no. 9\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n          <!---->\n          <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n          <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n          <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n          <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n          <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n          <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n          <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n          <!---->\n        </ul>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/row-selection-custom.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col class=\"ant-table-selection-col\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                    <!---->\n                    <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Custom selection\"><span class=\"ant-checkbox-inner\"></span></span>\n                        <!---->\n                      </label>\n                      <div class=\"ant-table-selection-extra\">\n                        <!----><span class=\"ant-dropdown-trigger\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n                      </div>\n                    </div>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 0\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 1\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 2\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 3\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 4\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 5\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 6\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 7\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 8\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-selection-column\">\n                    <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                      <!---->\n                    </label>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Edward King 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London, Park Lane no. 9\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n        <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n        <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5\"><a rel=\"nofollow\">5</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/size.vue correctly 1`] = `\n<div id=\"components-table-demo-size\">\n  <h4>Middle size table</h4>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-middle\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->Name\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                      <!---->Address\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->John Brown\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->New York No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->Jim Green\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->42\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->Joe Black\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Sidney No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n          <!---->\n          <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n          <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n          <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n          <!---->\n        </ul>\n      </div>\n    </div>\n  </div>\n  <h4>Small size table</h4>\n  <div class=\"ant-table-wrapper\">\n    <div class=\"ant-spin-nested-loading\">\n      <!---->\n      <div class=\"ant-spin-container\">\n        <!---->\n        <div class=\"ant-table ant-table-small\">\n          <!---->\n          <div class=\"ant-table-container\">\n            <div class=\"ant-table-content\">\n              <table style=\"table-layout: auto;\">\n                <colgroup></colgroup>\n                <thead class=\"ant-table-thead\">\n                  <tr>\n                    <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                      <!---->Name\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                      <!---->Age\n                      <!---->\n                    </th>\n                    <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                      <!---->Address\n                      <!---->\n                    </th>\n                  </tr>\n                </thead>\n                <tbody class=\"ant-table-tbody\">\n                  <!---->\n                  <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->John Brown\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->New York No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->Jim Green\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->42\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->London No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                  <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                    <td class=\"ant-table-cell\">\n                      <!---->Joe Black\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->32\n                      <!---->\n                    </td>\n                    <td class=\"ant-table-cell\">\n                      <!---->Sidney No. 1 Lake Park\n                      <!---->\n                    </td>\n                  </tr>\n                  <!---->\n                </tbody>\n                <!---->\n              </table>\n            </div>\n          </div>\n          <!---->\n        </div>\n        <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n          <!---->\n          <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n          <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n          <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n          <!---->\n        </ul>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/sticky.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left ant-table-has-fix-right\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden; top: 0px;\" class=\"ant-table-header ant-table-sticky-holder\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-sticky\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->Full Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last ant-table-cell-fix-sticky\" style=\"position: sticky; left: 0px;\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"8\" colend=\"8\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"9\" colend=\"9\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first ant-table-cell-fix-sticky\" style=\"position: sticky; right: 0px;\" colstart=\"10\" colend=\"10\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-x: auto; overflow-y: hidden;\" class=\"ant-table-body\">\n            <table style=\"width: 1500px; min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n                <col style=\"width: 100px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col style=\"width: 150px;\">\n                <col>\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 0\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 1\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 2\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 3\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 4\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 5\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 6\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 7\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 8\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\">\n                    <!---->Edrward 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London Park no. 9\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!----><a>action</a>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <tfoot class=\"ant-table-summary\">\n                <tr>\n                  <td colspan=\"2\" class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!----><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n                      <div class=\"ant-switch-handle\">\n                        <!---->\n                      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">Fixed Top</span><span class=\"ant-switch-inner-unchecked\">Fixed Top</span></span>\n                    </button>\n                    <!---->\n                  </td>\n                  <td colspan=\"8\" class=\"ant-table-cell\">\n                    <!---->Scroll Context\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\">\n                    <!---->Fix Right\n                    <!---->\n                  </td>\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"2\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-2\"><a rel=\"nofollow\">2</a></li>\n        <li title=\"3\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-3\"><a rel=\"nofollow\">3</a></li>\n        <li title=\"4\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-4\"><a rel=\"nofollow\">4</a></li>\n        <li title=\"5\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-5 ant-pagination-item-before-jump-next\"><a rel=\"nofollow\">5</a></li>\n        <li title=\"Next 5 Pages\" tabindex=\"0\" class=\"ant-pagination-jump-next ant-pagination-jump-next-custom-icon\"><a rel=\"nofollow\" class=\"ant-pagination-item-link\">\n            <div class=\"ant-pagination-item-container\"><span role=\"img\" aria-label=\"double-right\" class=\"anticon anticon-double-right ant-pagination-item-link-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"double-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"></path></svg></span><span class=\"ant-pagination-item-ellipsis\">•••</span></div>\n          </a></li>\n        <li title=\"10\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-10\"><a rel=\"nofollow\">10</a></li>\n        <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <li class=\"ant-pagination-options\">\n          <div class=\"ant-select ant-pagination-options-size-changer ant-select-single ant-select-show-arrow\">\n            <!---->\n            <!---->\n            <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" aria-activedescendant=\"rc_select_TEST_OR_SSR_list_0\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span><span class=\"ant-select-selection-item\">10 / page</span>\n              <!---->\n            </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n            <!----></span>\n            <!---->\n          </div>\n          <!---->\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/stripe.vue correctly 1`] = `\n<div class=\"ant-table-wrapper ant-table-striped\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-middle\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0 table-striped\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0 table-striped\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Ben Kang\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->15\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n<div class=\"ant-table-wrapper ant-table-striped\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-middle ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0 table-striped\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0 table-striped\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Ben Kang\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->15\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/summary.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Borrow\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Repayment\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->33\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->100\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->0\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->10\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim Red\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->75\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->45\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <tfoot class=\"ant-table-summary\">\n                <tr>\n                  <td class=\"ant-table-cell\">\n                    <!---->Total\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span class=\"ant-typography ant-typography-danger\">195<!----></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span class=\"ant-typography\">88<!----></span>\n                    <!---->\n                  </td>\n                </tr>\n                <tr>\n                  <td class=\"ant-table-cell\">\n                    <!---->Balance\n                    <!---->\n                  </td>\n                  <td colspan=\"2\" class=\"ant-table-cell\">\n                    <!----><span class=\"ant-typography ant-typography-danger\">107<!----></span>\n                    <!---->\n                  </td>\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n<br>\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-fixed-header ant-table-fixed-column ant-table-scroll-horizontal ant-table-has-fix-left ant-table-bordered\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div style=\"overflow: hidden;\" class=\"ant-table-header\">\n            <table style=\"table-layout: fixed; visibility: hidden;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Description\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <!---->\n            </table>\n          </div>\n          <div style=\"overflow-x: auto; overflow-y: scroll; max-height: 500px;\" class=\"ant-table-body\">\n            <table style=\"width: 2000px; min-width: 100%; table-layout: fixed;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <tbody class=\"ant-table-tbody\">\n                <tr aria-hidden=\"true\" class=\"ant-table-measure-row\" style=\"height: 0px; font-size: 0px;\">\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                  <td style=\"padding: 0px; border: 0px; height: 0px;\">\n                    <div style=\"height: 0px; overflow: hidden;\">&nbsp;</div>\n                  </td>\n                </tr>\n                <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"10\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"11\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"12\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"13\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"14\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"15\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"16\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"17\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Little\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"18\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Light\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"19\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Bamboo\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Everything that has a beginning, has an end.\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <tfoot class=\"ant-table-summary\">\n                <tr>\n                  <td class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\">\n                    <!---->Summary\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->This is a summary content\n                    <!---->\n                  </td>\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n          <!---->\n          <!---->\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/table/demo/template.vue correctly 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th colspan=\"2\" class=\"ant-table-cell\" colstart=\"0\" hassubcolumns=\"true\" colend=\"1\">\n                    <!----><span style=\"color: rgb(24, 144, 255);\">Name</span>\n                    <!---->\n                  </th>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Address\n                    <!---->\n                  </th>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Tags\n                    <!---->\n                  </th>\n                  <th rowspan=\"2\" class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!----><span style=\"color: rgb(24, 144, 255);\">First Name</span>\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Last Name\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->John\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Brown\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->New York No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-blue\">nice<!----></span><span class=\"ant-tag ant-tag-blue\">developer<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Action 一 John</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Jim\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Green\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->42\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->London No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-blue\">loser<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Action 一 Jim</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n                <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                  <td class=\"ant-table-cell\">\n                    <!---->Joe\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Black\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->32\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!---->Sidney No. 1 Lake Park\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><span class=\"ant-tag ant-tag-blue\">cool<!----></span><span class=\"ant-tag ant-tag-blue\">teacher<!----></span></span>\n                    <!---->\n                  </td>\n                  <td class=\"ant-table-cell\">\n                    <!----><span><a>Action 一 Joe</a><div class=\"ant-divider ant-divider-vertical\" role=\"separator\"><!----></div><a>Delete</a></span>\n                    <!---->\n                  </td>\n                </tr>\n                <!---->\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <ul unselectable=\"on\" class=\"ant-pagination ant-table-pagination ant-table-pagination-right\">\n        <!---->\n        <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n        <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n        <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n        <!---->\n      </ul>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/__snapshots__/empty.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Table renders empty table 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-empty\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr class=\"ant-table-placeholder\">\n                  <td colspan=\"8\" class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"ant-empty ant-empty-normal\">\n                      <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                          <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                            <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                            <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                              <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                              <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                            </g>\n                          </g>\n                        </svg></div>\n                      <p class=\"ant-empty-description\">No data</p>\n                      <!---->\n                    </div>\n                    <!---->\n                  </td>\n                </tr>\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table renders empty table with custom emptyText 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-empty\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr class=\"ant-table-placeholder\">\n                  <td colspan=\"8\" class=\"ant-table-cell\">\n                    <!---->custom empty text\n                    <!---->\n                  </td>\n                </tr>\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table renders empty table with fixed columns 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <!---->\n    <div class=\"ant-spin-container\">\n      <!---->\n      <div class=\"ant-table ant-table-has-fix-left ant-table-has-fix-right ant-table-empty\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup>\n                <col style=\"width: 100px;\">\n                <col style=\"width: 100px;\">\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col>\n                <col style=\"width: 100px;\">\n              </colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left\" style=\"position: sticky; left: 0px;\" colstart=\"0\" colend=\"0\">\n                    <!---->Full Name\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-left ant-table-cell-fix-left-last\" style=\"position: sticky; left: 0px;\" colstart=\"1\" colend=\"1\">\n                    <!---->Age\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"8\" colend=\"8\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"9\" colend=\"9\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell ant-table-cell-fix-right ant-table-cell-fix-right-first\" style=\"position: sticky; right: 0px;\" colstart=\"10\" colend=\"10\">\n                    <!---->Action\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr class=\"ant-table-placeholder\">\n                  <td colspan=\"11\" class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"ant-empty ant-empty-normal\">\n                      <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                          <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                            <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                            <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                              <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                              <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                            </g>\n                          </g>\n                        </svg></div>\n                      <p class=\"ant-empty-description\">No data</p>\n                      <!---->\n                    </div>\n                    <!---->\n                  </td>\n                </tr>\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Table renders empty table without emptyText when loading 1`] = `\n<div class=\"ant-table-wrapper\">\n  <div class=\"ant-spin-nested-loading\">\n    <div>\n      <div class=\"ant-spin ant-spin-spinning\" aria-live=\"polite\" aria-busy=\"true\"><span class=\"ant-spin-dot ant-spin-dot-spin\"><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i><i class=\"ant-spin-dot-item\"></i></span>\n        <!---->\n      </div>\n    </div>\n    <div class=\"ant-spin-container ant-spin-blur\">\n      <!---->\n      <div class=\"ant-table ant-table-empty\">\n        <!---->\n        <div class=\"ant-table-container\">\n          <div class=\"ant-table-content\">\n            <table style=\"table-layout: auto;\">\n              <colgroup></colgroup>\n              <thead class=\"ant-table-thead\">\n                <tr>\n                  <th class=\"ant-table-cell\" colstart=\"0\" colend=\"0\">\n                    <!---->Column 1\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                    <!---->Column 2\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                    <!---->Column 3\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"3\" colend=\"3\">\n                    <!---->Column 4\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"4\" colend=\"4\">\n                    <!---->Column 5\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"5\" colend=\"5\">\n                    <!---->Column 6\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"6\" colend=\"6\">\n                    <!---->Column 7\n                    <!---->\n                  </th>\n                  <th class=\"ant-table-cell\" colstart=\"7\" colend=\"7\">\n                    <!---->Column 8\n                    <!---->\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"ant-table-tbody\">\n                <!---->\n                <tr class=\"ant-table-placeholder\">\n                  <td colspan=\"8\" class=\"ant-table-cell\">\n                    <!---->\n                    <div class=\"ant-empty ant-empty-normal\">\n                      <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                          <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                            <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                            <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                              <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                              <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                            </g>\n                          </g>\n                        </svg></div>\n                      <p class=\"ant-empty-description\">No data</p>\n                      <!---->\n                    </div>\n                    <!---->\n                  </td>\n                </tr>\n              </tbody>\n              <!---->\n            </table>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/table/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('table', { skip: ['ajax'] });\n"
  },
  {
    "path": "components/table/__tests__/empty.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Table from '..';\nimport * as Vue from 'vue';\n\nconst columns = [\n  { title: 'Column 1', dataIndex: 'address', key: '1' },\n  { title: 'Column 2', dataIndex: 'address', key: '2' },\n  { title: 'Column 3', dataIndex: 'address', key: '3' },\n  { title: 'Column 4', dataIndex: 'address', key: '4' },\n  { title: 'Column 5', dataIndex: 'address', key: '5' },\n  { title: 'Column 6', dataIndex: 'address', key: '6' },\n  { title: 'Column 7', dataIndex: 'address', key: '7' },\n  { title: 'Column 8', dataIndex: 'address', key: '8' },\n];\n\nconst columnsFixed = [\n  {\n    title: 'Full Name',\n    width: 100,\n    dataIndex: 'name',\n    key: 'name',\n    fixed: 'left',\n  },\n  {\n    title: 'Age',\n    width: 100,\n    dataIndex: 'age',\n    key: 'age',\n    fixed: 'left',\n  },\n  { title: 'Column 1', dataIndex: 'address', key: '1' },\n  { title: 'Column 2', dataIndex: 'address', key: '2' },\n  { title: 'Column 3', dataIndex: 'address', key: '3' },\n  { title: 'Column 4', dataIndex: 'address', key: '4' },\n  { title: 'Column 5', dataIndex: 'address', key: '5' },\n  { title: 'Column 6', dataIndex: 'address', key: '6' },\n  { title: 'Column 7', dataIndex: 'address', key: '7' },\n  { title: 'Column 8', dataIndex: 'address', key: '8' },\n  {\n    title: 'Action',\n    key: 'address',\n    fixed: 'right',\n    width: 100,\n  },\n];\n\ndescribe('Table', () => {\n  it('renders empty table', done => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Table dataSource={[]} columns={columns} pagination={false} />;\n        },\n      },\n      { sync: false },\n    );\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('renders empty table with fixed columns', done => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Table dataSource={[]} columns={columnsFixed} pagination={false} />;\n        },\n      },\n      { sync: false },\n    );\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('renders empty table with custom emptyText', done => {\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Table\n              dataSource={[]}\n              columns={columns}\n              pagination={false}\n              locale={{ emptyText: 'custom empty text ' }}\n            />\n          );\n        },\n      },\n      { sync: false },\n    );\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n\n  it('renders empty table without emptyText when loading', done => {\n    const wrapper = mount(\n      {\n        render() {\n          return <Table dataSource={[]} columns={columns} loading />;\n        },\n      },\n      { sync: false },\n    );\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n});\n"
  },
  {
    "path": "components/table/context.ts",
    "content": "import type { ComputedRef, InjectionKey } from 'vue';\nimport { computed, inject, provide } from 'vue';\nimport type { ColumnType } from './interface';\n\nexport type ContextSlots = {\n  emptyText?: (...args: any[]) => any;\n  expandIcon?: (...args: any[]) => any;\n  title?: (...args: any[]) => any;\n  footer?: (...args: any[]) => any;\n  summary?: (...args: any[]) => any;\n  bodyCell?: (...args: any[]) => any;\n  expandColumnTitle?: (...args: any[]) => any;\n  headerCell?: (...args: any[]) => any;\n  customFilterIcon?: (...args: any[]) => any;\n  customFilterDropdown?: (...args: any[]) => any;\n  // 兼容 2.x 的 columns slots 配置\n  [key: string]: ((...args: any[]) => any) | undefined;\n};\n\ntype SlotsContextProps = ComputedRef<ContextSlots>;\n\nconst SlotsContextKey: InjectionKey<SlotsContextProps> = Symbol('SlotsContextProps');\n\nexport const useProvideSlots = (props: SlotsContextProps) => {\n  provide(SlotsContextKey, props);\n};\n\nexport const useInjectSlots = () => {\n  return inject(SlotsContextKey, computed(() => ({})) as SlotsContextProps);\n};\n\ntype ContextProps = {\n  onResizeColumn: (w: number, column: ColumnType<any>) => void;\n};\n\nconst ContextKey: InjectionKey<ContextProps> = Symbol('ContextProps');\n\nexport const useProvideTableContext = (props: ContextProps) => {\n  provide(ContextKey, props);\n};\n\nexport const useInjectTableContext = () => {\n  return inject(ContextKey, { onResizeColumn: () => {} } as ContextProps);\n};\n"
  },
  {
    "path": "components/table/demo/ajax.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  en-US: Ajax\n  zh-CN: 远程加载数据\n---\n\n## zh-CN\n\n这个例子通过简单的 ajax 读取方式，演示了如何从服务端读取并展现数据，具有筛选、排序等功能以及页面 loading 效果。开发者可以自行接入其他数据处理方式。\n\n另外，本例也展示了筛选排序功能如何交给服务端实现，列不需要指定具体的 `onFilter` 和 `sorter` 函数，而是在把筛选和排序的参数发到服务端来处理。\n\n当使用 `rowSelection` 时，请设置 `rowSelection.preserveSelectedRowKeys` 属性以保留 `key`。\n\n## en-US\n\nThis example shows how to fetch and present data from a remote server, and how to implement filtering and sorting in server side by sending related parameters to server.\n\nSetting `rowSelection.preserveSelectedRowKeys` to keep the `key` when enable selection.\n\n**Note, this example use [Mock API](https://randomuser.me) that you can look up in Network Console.**\n</docs>\n\n<template>\n  <a-table\n    :columns=\"columns\"\n    :row-key=\"record => record.login.uuid\"\n    :data-source=\"dataSource\"\n    :pagination=\"pagination\"\n    :loading=\"loading\"\n    @change=\"handleTableChange\"\n  >\n    <template #bodyCell=\"{ column, text }\">\n      <template v-if=\"column.dataIndex === 'name'\">{{ text.first }} {{ text.last }}</template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { TableProps } from 'ant-design-vue';\nimport { usePagination } from 'vue-request';\nimport axios from 'axios';\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    sorter: true,\n    width: '20%',\n  },\n  {\n    title: 'Gender',\n    dataIndex: 'gender',\n    filters: [\n      { text: 'Male', value: 'male' },\n      { text: 'Female', value: 'female' },\n    ],\n    width: '20%',\n  },\n  {\n    title: 'Email',\n    dataIndex: 'email',\n  },\n];\n\ntype APIParams = {\n  results: number;\n  page?: number;\n  sortField?: string;\n  sortOrder?: number;\n  [key: string]: any;\n};\ntype APIResult = {\n  results: {\n    gender: 'female' | 'male';\n    name: string;\n    email: string;\n  }[];\n};\n\nconst queryData = async (params: APIParams) => {\n  const res = await axios.get<APIResult>('https://randomuser.me/api?noinfo', { params })\n  return res.data.results;\n};\n\nconst {\n  data: dataSource,\n  run,\n  loading,\n  current,\n  pageSize,\n} = usePagination(queryData, {\n  pagination: {\n    currentKey: 'page',\n    pageSizeKey: 'results',\n  },\n});\n\nconst pagination = computed(() => ({\n  total: 200,\n  current: current.value,\n  pageSize: pageSize.value,\n}));\n\nconst handleTableChange: TableProps['onChange'] = (\n  pag: { pageSize: number; current: number },\n  filters: any,\n  sorter: any,\n) => {\n  run({\n    results: pag.pageSize,\n    page: pag?.current,\n    sortField: sorter.field,\n    sortOrder: sorter.order,\n    ...filters,\n  });\n};\n</script>\n"
  },
  {
    "path": "components/table/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  en-US: Basic Usage\n  zh-CN: 基本用法\n---\n\n## zh-CN\n\n简单的表格，最后一列是各种操作。\n\n## en-US\n\nSimple table with actions.\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\">\n    <template #headerCell=\"{ column }\">\n      <template v-if=\"column.key === 'name'\">\n        <span>\n          <smile-outlined />\n          Name\n        </span>\n      </template>\n    </template>\n\n    <template #bodyCell=\"{ column, record }\">\n      <template v-if=\"column.key === 'name'\">\n        <a>\n          {{ record.name }}\n        </a>\n      </template>\n      <template v-else-if=\"column.key === 'tags'\">\n        <span>\n          <a-tag\n            v-for=\"tag in record.tags\"\n            :key=\"tag\"\n            :color=\"tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'\"\n          >\n            {{ tag.toUpperCase() }}\n          </a-tag>\n        </span>\n      </template>\n      <template v-else-if=\"column.key === 'action'\">\n        <span>\n          <a>Invite 一 {{ record.name }}</a>\n          <a-divider type=\"vertical\" />\n          <a>Delete</a>\n          <a-divider type=\"vertical\" />\n          <a class=\"ant-dropdown-link\">\n            More actions\n            <down-outlined />\n          </a>\n        </span>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined, DownOutlined } from '@ant-design/icons-vue';\nconst columns = [\n  {\n    name: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    key: 'age',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    key: 'address',\n  },\n  {\n    title: 'Tags',\n    key: 'tags',\n    dataIndex: 'tags',\n  },\n  {\n    title: 'Action',\n    key: 'action',\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    tags: ['nice', 'developer'],\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    tags: ['loser'],\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    tags: ['cool', 'teacher'],\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/big-data.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  en-US: Virtualized Table\n  zh-CN: 大数据渲染\n---\n\n## zh-CN\n\n该示例使用高级组件 [Surely Vue](https://www.surelyvue.com) 进行开发，Surely Vue 是 Ant Design Vue 旗下的高级组件，\n该组件致力于解决大数据渲染、图表集成等复杂高频问题。 使用该组件可以流畅滚动 10 万行、10 万列的数据，你不必担心页面卡顿造成用户投诉，进而影响业务进展。\n\n## en-US\n\nThis example uses advanced components [Surely Vue](https://www.surelyvue.com) for development.\nThis component is dedicated to solving complex high-frequency issues such as big data rendering and chart integration.\nUsing this component, you can smoothly scroll through 100,000 rows and 100,000 columns of data.\n</docs>\n\n<template>\n  <iframe src=\"https://www.surelyvue.com/for-ant-demo\" height=\"400\"></iframe>\n  <div v-if=\"false\">\n    you can visit\n    <a href=\"https://www.surelyvue.com\"></a>\n    get more info\n  </div>\n</template>\n"
  },
  {
    "path": "components/table/demo/bordered.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  en-US: border, title and footer\n  zh-CN: 带边框\n---\n\n## zh-CN\n\n添加表格边框线，页头和页脚。\n\n## en-US\n\nAdd border, title and footer for table.\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" bordered>\n    <template #bodyCell=\"{ column, text }\">\n      <template v-if=\"column.dataIndex === 'name'\">\n        <a>{{ text }}</a>\n      </template>\n    </template>\n    <template #title>Header</template>\n    <template #footer>Footer</template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Cash Assets',\n    className: 'column-money',\n    dataIndex: 'money',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    money: '￥300,000.00',\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    money: '￥1,256,000.00',\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    money: '￥120,000.00',\n    address: 'Sidney No. 1 Lake Park',\n  },\n];\n</script>\n<style scoped>\nth.column-money,\ntd.column-money {\n  text-align: right !important;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/colspan-rowspan.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  en-US: ColSpan and rowSpan\n  zh-CN: 表格行/列合并\n---\n\n## zh-CN\n\n表头只支持列合并，使用 column 里的 colSpan 进行设置。\n表格支持行/列合并，使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时，设置的表格不会渲染。\n\n## en-US\n\nTable column title supports `colSpan` that set in `column`.\nTable cell supports `colSpan` and `rowSpan` that set in render return object. When each of them is set to `0`, the cell will not be rendered.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" bordered>\n    <template #bodyCell=\"{ column, text }\">\n      <template v-if=\"column.dataIndex === 'name'\">\n        <a href=\"javascript:;\">{{ text }}</a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableColumnType } from 'ant-design-vue';\n// In the fifth row, other columns are merged into first column\n// by setting it's colSpan to be 0\nconst sharedOnCell = (_, index) => {\n  if (index === 4) {\n    return { colSpan: 0 };\n  }\n};\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    tel: '0571-22098909',\n    phone: 18889898989,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    tel: '0571-22098333',\n    phone: 18889898888,\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    tel: '0575-22098909',\n    phone: 18900010002,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 18,\n    tel: '0575-22098909',\n    phone: 18900010002,\n    address: 'London No. 2 Lake Park',\n  },\n  {\n    key: '5',\n    name: 'Jake White',\n    age: 18,\n    tel: '0575-22098909',\n    phone: 18900010002,\n    address: 'Dublin No. 2 Lake Park',\n  },\n];\n\nconst columns: TableColumnType[] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    customCell: (_, index) => ({\n      colSpan: index < 4 ? 1 : 5,\n    }),\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    customCell: sharedOnCell,\n  },\n  {\n    title: 'Home phone',\n    colSpan: 2,\n    dataIndex: 'tel',\n    customCell: (_, index) => {\n      if (index === 2) {\n        return { rowSpan: 2 };\n      }\n      // These two are merged into above cell\n      if (index === 3) {\n        return { rowSpan: 0 };\n      }\n      if (index === 4) {\n        return { colSpan: 0 };\n      }\n    },\n  },\n  {\n    title: 'Phone',\n    colSpan: 0,\n    dataIndex: 'phone',\n    customCell: sharedOnCell,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    customCell: sharedOnCell,\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/custom-filter-panel.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  en-US: Customized filter panel\n  zh-CN: 自定义筛选菜单\n---\n\n## zh-CN\n\n通过 `customFilterDropdown` 定义自定义的列筛选功能，并实现一个搜索列的示例。\n\n## en-US\n\nImplement a customized column search example via `customFilterDropdown`.\n\n</docs>\n\n<template>\n  <a-table :data-source=\"data\" :columns=\"columns\">\n    <template #headerCell=\"{ column }\">\n      <template v-if=\"column.key === 'name'\">\n        <span style=\"color: #1890ff\">Name</span>\n      </template>\n    </template>\n    <template\n      #customFilterDropdown=\"{ setSelectedKeys, selectedKeys, confirm, clearFilters, column }\"\n    >\n      <div style=\"padding: 8px\">\n        <a-input\n          ref=\"searchInput\"\n          :placeholder=\"`Search ${column.dataIndex}`\"\n          :value=\"selectedKeys[0]\"\n          style=\"width: 188px; margin-bottom: 8px; display: block\"\n          @change=\"e => setSelectedKeys(e.target.value ? [e.target.value] : [])\"\n          @pressEnter=\"handleSearch(selectedKeys, confirm, column.dataIndex)\"\n        />\n        <a-button\n          type=\"primary\"\n          size=\"small\"\n          style=\"width: 90px; margin-right: 8px\"\n          @click=\"handleSearch(selectedKeys, confirm, column.dataIndex)\"\n        >\n          <template #icon><SearchOutlined /></template>\n          Search\n        </a-button>\n        <a-button size=\"small\" style=\"width: 90px\" @click=\"handleReset(clearFilters)\">\n          Reset\n        </a-button>\n      </div>\n    </template>\n    <template #customFilterIcon=\"{ filtered }\">\n      <search-outlined :style=\"{ color: filtered ? '#108ee9' : undefined }\" />\n    </template>\n    <template #bodyCell=\"{ text, column }\">\n      <span v-if=\"state.searchText && state.searchedColumn === column.dataIndex\">\n        <template\n          v-for=\"(fragment, i) in text\n            .toString()\n            .split(new RegExp(`(?<=${state.searchText})|(?=${state.searchText})`, 'i'))\"\n        >\n          <mark\n            v-if=\"fragment.toLowerCase() === state.searchText.toLowerCase()\"\n            :key=\"i\"\n            class=\"highlight\"\n          >\n            {{ fragment }}\n          </mark>\n          <template v-else>{{ fragment }}</template>\n        </template>\n      </span>\n    </template>\n  </a-table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { SearchOutlined } from '@ant-design/icons-vue';\nimport { reactive, ref } from 'vue';\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Joe Black',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Jim Green',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\n\nconst state = reactive({\n  searchText: '',\n  searchedColumn: '',\n});\n\nconst searchInput = ref();\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n    customFilterDropdown: true,\n    onFilter: (value, record) => record.name.toString().toLowerCase().includes(value.toLowerCase()),\n    onFilterDropdownOpenChange: visible => {\n      if (visible) {\n        setTimeout(() => {\n          searchInput.value.focus();\n        }, 100);\n      }\n    },\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    key: 'age',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    key: 'address',\n    customFilterDropdown: true,\n    onFilter: (value, record) =>\n      record.address.toString().toLowerCase().includes(value.toLowerCase()),\n    onFilterDropdownOpenChange: visible => {\n      if (visible) {\n        setTimeout(() => {\n          searchInput.value.focus();\n        }, 100);\n      }\n    },\n  },\n];\n\nconst handleSearch = (selectedKeys, confirm, dataIndex) => {\n  confirm();\n  state.searchText = selectedKeys[0];\n  state.searchedColumn = dataIndex;\n};\n\nconst handleReset = clearFilters => {\n  clearFilters({ confirm: true });\n  state.searchText = '';\n};\n</script>\n<style scoped>\n.highlight {\n  background-color: rgb(255, 192, 105);\n  padding: 0px;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/edit-cell.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  en-US: Editable Cells\n  zh-CN: 可编辑单元格\n---\n\n## zh-CN\n\n带单元格编辑功能的表格。\n\n## en-US\n\nTable with editable cells.\n\n</docs>\n\n<template>\n  <a-button class=\"editable-add-btn\" style=\"margin-bottom: 8px\" @click=\"handleAdd\">Add</a-button>\n  <a-table bordered :data-source=\"dataSource\" :columns=\"columns\">\n    <template #bodyCell=\"{ column, text, record }\">\n      <template v-if=\"column.dataIndex === 'name'\">\n        <div class=\"editable-cell\">\n          <div v-if=\"editableData[record.key]\" class=\"editable-cell-input-wrapper\">\n            <a-input v-model:value=\"editableData[record.key].name\" @pressEnter=\"save(record.key)\" />\n            <check-outlined class=\"editable-cell-icon-check\" @click=\"save(record.key)\" />\n          </div>\n          <div v-else class=\"editable-cell-text-wrapper\">\n            {{ text || ' ' }}\n            <edit-outlined class=\"editable-cell-icon\" @click=\"edit(record.key)\" />\n          </div>\n        </div>\n      </template>\n      <template v-else-if=\"column.dataIndex === 'operation'\">\n        <a-popconfirm\n          v-if=\"dataSource.length\"\n          title=\"Sure to delete?\"\n          @confirm=\"onDelete(record.key)\"\n        >\n          <a>Delete</a>\n        </a-popconfirm>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref } from 'vue';\nimport type { Ref, UnwrapRef } from 'vue';\nimport { CheckOutlined, EditOutlined } from '@ant-design/icons-vue';\nimport { cloneDeep } from 'lodash-es';\n\ninterface DataItem {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst columns = [\n  {\n    title: 'name',\n    dataIndex: 'name',\n    width: '30%',\n  },\n  {\n    title: 'age',\n    dataIndex: 'age',\n  },\n  {\n    title: 'address',\n    dataIndex: 'address',\n  },\n  {\n    title: 'operation',\n    dataIndex: 'operation',\n  },\n];\nconst dataSource: Ref<DataItem[]> = ref([\n  {\n    key: '0',\n    name: 'Edward King 0',\n    age: 32,\n    address: 'London, Park Lane no. 0',\n  },\n  {\n    key: '1',\n    name: 'Edward King 1',\n    age: 32,\n    address: 'London, Park Lane no. 1',\n  },\n]);\nconst count = computed(() => dataSource.value.length + 1);\nconst editableData: UnwrapRef<Record<string, DataItem>> = reactive({});\n\nconst edit = (key: string) => {\n  editableData[key] = cloneDeep(dataSource.value.filter(item => key === item.key)[0]);\n};\nconst save = (key: string) => {\n  Object.assign(dataSource.value.filter(item => key === item.key)[0], editableData[key]);\n  delete editableData[key];\n};\n\nconst onDelete = (key: string) => {\n  dataSource.value = dataSource.value.filter(item => item.key !== key);\n};\nconst handleAdd = () => {\n  const newData = {\n    key: `${count.value}`,\n    name: `Edward King ${count.value}`,\n    age: 32,\n    address: `London, Park Lane no. ${count.value}`,\n  };\n  dataSource.value.push(newData);\n};\n</script>\n<style lang=\"less\" scoped>\n.editable-cell {\n  position: relative;\n  .editable-cell-input-wrapper,\n  .editable-cell-text-wrapper {\n    padding-right: 24px;\n  }\n\n  .editable-cell-text-wrapper {\n    padding: 5px 24px 5px 5px;\n  }\n\n  .editable-cell-icon,\n  .editable-cell-icon-check {\n    position: absolute;\n    right: 0;\n    width: 20px;\n    cursor: pointer;\n  }\n\n  .editable-cell-icon {\n    margin-top: 4px;\n    display: none;\n  }\n\n  .editable-cell-icon-check {\n    line-height: 28px;\n  }\n\n  .editable-cell-icon:hover,\n  .editable-cell-icon-check:hover {\n    color: #108ee9;\n  }\n\n  .editable-add-btn {\n    margin-bottom: 8px;\n  }\n}\n.editable-cell:hover .editable-cell-icon {\n  display: inline-block;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/edit-row.vue",
    "content": "<docs>\n---\norder: 24\ntitle:\n  en-US: Editable Rows\n  zh-CN: 可编辑行\n---\n\n## zh-CN\n\n带行编辑功能的表格。\n\n## en-US\n\nTable with editable rows.\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"dataSource\" bordered>\n    <template #bodyCell=\"{ column, text, record }\">\n      <template v-if=\"['name', 'age', 'address'].includes(column.dataIndex)\">\n        <div>\n          <a-input\n            v-if=\"editableData[record.key]\"\n            v-model:value=\"editableData[record.key][column.dataIndex]\"\n            style=\"margin: -5px 0\"\n          />\n          <template v-else>\n            {{ text }}\n          </template>\n        </div>\n      </template>\n      <template v-else-if=\"column.dataIndex === 'operation'\">\n        <div class=\"editable-row-operations\">\n          <span v-if=\"editableData[record.key]\">\n            <a-typography-link @click=\"save(record.key)\">Save</a-typography-link>\n            <a-popconfirm title=\"Sure to cancel?\" @confirm=\"cancel(record.key)\">\n              <a>Cancel</a>\n            </a-popconfirm>\n          </span>\n          <span v-else>\n            <a @click=\"edit(record.key)\">Edit</a>\n          </span>\n        </div>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { cloneDeep } from 'lodash-es';\nimport { reactive, ref } from 'vue';\nimport type { UnwrapRef } from 'vue';\n\nconst columns = [\n  {\n    title: 'name',\n    dataIndex: 'name',\n    width: '25%',\n  },\n  {\n    title: 'age',\n    dataIndex: 'age',\n    width: '15%',\n  },\n  {\n    title: 'address',\n    dataIndex: 'address',\n    width: '40%',\n  },\n  {\n    title: 'operation',\n    dataIndex: 'operation',\n  },\n];\ninterface DataItem {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n}\nconst data: DataItem[] = [];\nfor (let i = 0; i < 100; i++) {\n  data.push({\n    key: i.toString(),\n    name: `Edrward ${i}`,\n    age: 32,\n    address: `London Park no. ${i}`,\n  });\n}\n\nconst dataSource = ref(data);\nconst editableData: UnwrapRef<Record<string, DataItem>> = reactive({});\n\nconst edit = (key: string) => {\n  editableData[key] = cloneDeep(dataSource.value.filter(item => key === item.key)[0]);\n};\nconst save = (key: string) => {\n  Object.assign(dataSource.value.filter(item => key === item.key)[0], editableData[key]);\n  delete editableData[key];\n};\nconst cancel = (key: string) => {\n  delete editableData[key];\n};\n</script>\n<style scoped>\n.editable-row-operations a {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/ellipsis.vue",
    "content": "<docs>\n---\norder: 28\ntitle:\n  en-US: ellipsis column\n  zh-CN: 单元格自动省略\n---\n\n## zh-CN\n\n设置 `column.ellipsis` 可以让单元格内容根据宽度自动省略。\n> 列头缩略暂不支持和排序筛选一起使用。\n\n## en-US\n\nEllipsis cell content via setting `column.ellipsis`.\n> Cannot ellipsis table header with sorters and filters for now.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\">\n    <template #bodyCell=\"{ column, text }\">\n      <template v-if=\"column.dataIndex === 'name'\">\n        <a>{{ text }}</a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    key: 'age',\n    width: 80,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    key: 'address 1',\n    ellipsis: true,\n  },\n  {\n    title: 'Long Column Long Column Long Column',\n    dataIndex: 'address',\n    key: 'address 2',\n    ellipsis: true,\n  },\n  {\n    title: 'Long Column Long Column',\n    dataIndex: 'address',\n    key: 'address 3',\n    ellipsis: true,\n  },\n  {\n    title: 'Long Column',\n    dataIndex: 'address',\n    key: 'address 4',\n    ellipsis: true,\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park, New York No. 1 Lake Park',\n    tags: ['nice', 'developer'],\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 2 Lake Park, London No. 2 Lake Park',\n    tags: ['loser'],\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park, Sidney No. 1 Lake Park',\n    tags: ['cool', 'teacher'],\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/expand-children.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  en-US: Tree data\n  zh-CN: 树形数据展示\n---\n\n## zh-CN\n\n表格支持树形数据的展示，当数据中有 `children` 字段时会自动展示为树形表格，如果不需要或配置为其他字段可以用 `childrenColumnName` 进行配置。\n可以通过设置 `indentSize` 以控制每一层的缩进宽度。\n\n## en-US\n\nDisplay tree structure data in Table when there is field key `children` in dataSource, try to customize `childrenColumnName` property to avoid tree table structure.\nYou can control the indent width by setting `indentSize`.\n\n</docs>\n\n<template>\n  <a-space align=\"center\" style=\"margin-bottom: 16px\">\n    CheckStrictly:\n    <a-switch v-model:checked=\"rowSelection.checkStrictly\"></a-switch>\n  </a-space>\n  <a-table :columns=\"columns\" :data-source=\"data\" :row-selection=\"rowSelection\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    key: 'age',\n    width: '12%',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    width: '30%',\n    key: 'address',\n  },\n];\n\ninterface DataItem {\n  key: number;\n  name: string;\n  age: number;\n  address: string;\n  children?: DataItem[];\n}\n\nconst data: DataItem[] = [\n  {\n    key: 1,\n    name: 'John Brown sr.',\n    age: 60,\n    address: 'New York No. 1 Lake Park',\n    children: [\n      {\n        key: 11,\n        name: 'John Brown',\n        age: 42,\n        address: 'New York No. 2 Lake Park',\n      },\n      {\n        key: 12,\n        name: 'John Brown jr.',\n        age: 30,\n        address: 'New York No. 3 Lake Park',\n        children: [\n          {\n            key: 121,\n            name: 'Jimmy Brown',\n            age: 16,\n            address: 'New York No. 3 Lake Park',\n          },\n        ],\n      },\n      {\n        key: 13,\n        name: 'Jim Green sr.',\n        age: 72,\n        address: 'London No. 1 Lake Park',\n        children: [\n          {\n            key: 131,\n            name: 'Jim Green',\n            age: 42,\n            address: 'London No. 2 Lake Park',\n            children: [\n              {\n                key: 1311,\n                name: 'Jim Green jr.',\n                age: 25,\n                address: 'London No. 3 Lake Park',\n              },\n              {\n                key: 1312,\n                name: 'Jimmy Green sr.',\n                age: 18,\n                address: 'London No. 4 Lake Park',\n              },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    key: 2,\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n];\n\nconst rowSelection = ref({\n  checkStrictly: false,\n  onChange: (selectedRowKeys: (string | number)[], selectedRows: DataItem[]) => {\n    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);\n  },\n  onSelect: (record: DataItem, selected: boolean, selectedRows: DataItem[]) => {\n    console.log(record, selected, selectedRows);\n  },\n  onSelectAll: (selected: boolean, selectedRows: DataItem[], changeRows: DataItem[]) => {\n    console.log(selected, selectedRows, changeRows);\n  },\n});\n</script>\n"
  },
  {
    "path": "components/table/demo/expand.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  en-US: Expandable Row\n  zh-CN: 可展开\n---\n\n## zh-CN\n\n当表格内容较多不能一次性完全展示时。\n\n## en-US\n\nWhen there's too much information to show and the table can't display all at once.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" :scroll=\"{ x: 2000 }\" :expand-column-width=\"100\">\n    <template #bodyCell=\"{ column }\">\n      <template v-if=\"column.key === 'action'\">\n        <a>Delete</a>\n      </template>\n    </template>\n    <template #expandedRowRender=\"{ record }\">\n      <p style=\"margin: 0\">\n        {{ record.description }}\n      </p>\n    </template>\n    <template #expandColumnTitle>\n      <span style=\"color: red\">More</span>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nconst columns = [\n  { title: 'Name', dataIndex: 'name', key: 'name', fixed: true },\n  { title: 'Age', dataIndex: 'age', key: 'age' },\n  { title: 'Address', dataIndex: 'address', key: 'address' },\n  { title: 'Action', key: 'action' },\n];\n\nconst data = [\n  {\n    key: 1,\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.',\n  },\n  {\n    key: 2,\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.',\n  },\n  {\n    key: 3,\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/filter-in-tree.vue",
    "content": "<docs>\n---\norder: 6.1\nversion: 3.0\ntitle:\n  en-US: Filter in Tree\n  zh-CN: 树型筛选菜单\n---\n\n## zh-CN\n\n可以使用 `filterMode` 来修改筛选菜单的 UI，可选值有 `menu`（默认）和 `tree`。\n\n> `filterSearch` 用于开启筛选项的搜索。\n\n## en-US\n\nYou can use `filterMode` to change default filter interface, options: `menu`(default) and `tree`.\n\n> `filterSearch` is used for making filter dropdown items searchable.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" @change=\"onChange\"></a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableProps } from 'ant-design-vue';\nconst columns: TableProps['columns'] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'Joe',\n        value: 'Joe',\n      },\n      {\n        text: 'Category 1',\n        value: 'Category 1',\n        children: [\n          {\n            text: 'Yellow',\n            value: 'Yellow',\n          },\n          {\n            text: 'Pink',\n            value: 'Pink',\n          },\n        ],\n      },\n      {\n        text: 'Category 2',\n        value: 'Category 2',\n        children: [\n          {\n            text: 'Green',\n            value: 'Green',\n          },\n          {\n            text: 'Black',\n            value: 'Black',\n          },\n        ],\n      },\n    ],\n    filterMode: 'tree',\n    filterSearch: true,\n    onFilter: (value, record) => record.name.includes(value),\n    width: '30%',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    sorter: (a, b) => a.age - b.age,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    filters: [\n      {\n        text: 'London',\n        value: 'London',\n      },\n      {\n        text: 'New York',\n        value: 'New York',\n      },\n    ],\n    onFilter: (value, record) => record.address.startsWith(value),\n    filterSearch: true,\n    width: '40%',\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\n\nfunction onChange(pagination, filters, sorter, extra) {\n  console.log('params', pagination, filters, sorter, extra);\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/filter-search.vue",
    "content": "<docs>\n---\norder: 6.2\nversion: 4.19.0\ntitle:\n  en-US: Filter search\n  zh-CN: 自定义筛选的搜索\n---\n\n## zh-CN\n\n`filterSearch` 用于开启筛选项的搜索，通过 `filterSearch:(input, record) => boolean` 设置自定义筛选方法\n\n## en-US\n\n`filterSearch` is used to enable search of filter items, and you can set a custom filter method through `filterSearch:(input, record) => boolean`.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" @change=\"onChange\"></a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableProps } from 'ant-design-vue';\nconst columns: TableProps['columns'] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'Joe',\n        value: 'Joe',\n      },\n      {\n        text: 'Category 1',\n        value: 'Category 1',\n      },\n      {\n        text: 'Category 2',\n        value: 'Category 2',\n      },\n    ],\n    filterMode: 'tree',\n    filterSearch: true,\n    onFilter: (value, record) => record.name.startsWith(value),\n    width: '30%',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    sorter: (a, b) => a.age - b.age,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    filters: [\n      {\n        text: 'London',\n        value: 'London',\n      },\n      {\n        text: 'New York',\n        value: 'New York',\n      },\n    ],\n    onFilter: (value, record) => record.address.startsWith(value),\n    filterSearch: (input, filter) => (filter.value as string).indexOf(input) > -1,\n    width: '40%',\n  },\n];\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\n\nfunction onChange(pagination, filters, sorter, extra) {\n  console.log('params', pagination, filters, sorter, extra);\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/fixed-columns-header.vue",
    "content": "<docs>\n---\norder: 20\ntitle:\n  en-US: Fixed Columns and Header\n  zh-CN: 固定头和列\n---\n\n## zh-CN\n\n适合同时展示有大量数据和数据列。\n\n> 若列头与内容不对齐或出现列重复，请指定**固定列**的宽度 `width`。如果指定 `width` 不生效或出现白色垂直空隙，请尝试建议留一列不设宽度以适应弹性布局，或者检查是否有超长连续字段破坏布局。\n>\n> 建议指定 `scroll.x` 为大于表格宽度的固定值或百分比。注意，且非固定列宽度之和不要超过 `scroll.x`。\n\n## en-US\n\nA Solution for displaying large amounts of data with long columns.\n\n> Specify the width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.\n>\n> A fixed value which is greater than table width for `scroll.x` is recommended. The sum of unfixed columns should not greater than `scroll.x`.\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" :scroll=\"{ x: 1500, y: 300 }\">\n    <template #bodyCell=\"{ column }\">\n      <template v-if=\"column.key === 'operation'\">\n        <a>action</a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableColumnsType } from 'ant-design-vue';\nconst columns: TableColumnsType = [\n  { title: 'Full Name', width: 100, dataIndex: 'name', key: 'name', fixed: 'left' },\n  { title: 'Age', width: 100, dataIndex: 'age', key: 'age', fixed: 'left' },\n  { title: 'Column 1', dataIndex: 'address', key: '1', width: 150 },\n  { title: 'Column 2', dataIndex: 'address', key: '2', width: 150 },\n  { title: 'Column 3', dataIndex: 'address', key: '3', width: 150 },\n  { title: 'Column 4', dataIndex: 'address', key: '4', width: 150 },\n  { title: 'Column 5', dataIndex: 'address', key: '5', width: 150 },\n  { title: 'Column 6', dataIndex: 'address', key: '6', width: 150 },\n  { title: 'Column 7', dataIndex: 'address', key: '7', width: 150 },\n  { title: 'Column 8', dataIndex: 'address', key: '8' },\n  {\n    title: 'Action',\n    key: 'operation',\n    fixed: 'right',\n    width: 100,\n  },\n];\n\ninterface DataItem {\n  key: number;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst data: DataItem[] = [];\nfor (let i = 0; i < 100; i++) {\n  data.push({\n    key: i,\n    name: `Edrward ${i}`,\n    age: 32,\n    address: `London Park no. ${i}`,\n  });\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/fixed-columns.vue",
    "content": "<docs>\n---\norder: 19\ntitle:\n  en-US: Fixed Columns\n  zh-CN: 固定列\n---\n\n## zh-CN\n\n对于列数很多的数据，可以固定前后的列，横向滚动查看其它数据，需要和 `scroll.x` 配合使用。\n\n> 若列头与内容不对齐或出现列重复，请指定**固定列**的宽度 `width`。如果指定 `width` 不生效或出现白色垂直空隙，请尝试建议留一列不设宽度以适应弹性布局，或者检查是否有超长连续字段破坏布局。\n>\n> 建议指定 `scroll.x` 为大于表格宽度的固定值或百分比。注意，且非固定列宽度之和不要超过 `scroll.x`。\n\n## en-US\n\nTo fix some columns and scroll inside other columns, and you must set `scroll.x` meanwhile.\n\n> Specify the width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.\n>\n> A fixed value which is greater than table width for `scroll.x` is recommended. The sum of unfixed columns should not greater than `scroll.x`.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" :scroll=\"{ x: 1300, y: 1000 }\">\n    <template #bodyCell=\"{ column }\">\n      <template v-if=\"column.key === 'operation'\">\n        <a>action</a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableColumnsType } from 'ant-design-vue';\n\nconst columns: TableColumnsType = [\n  { title: 'Full Name', width: 100, dataIndex: 'name', key: 'name', fixed: 'left' },\n  { title: 'Age', width: 100, dataIndex: 'age', key: 'age', fixed: 'left' },\n  { title: 'Column 1', dataIndex: 'address', key: '1' },\n  { title: 'Column 2', dataIndex: 'address', key: '2' },\n  { title: 'Column 3', dataIndex: 'address', key: '3' },\n  { title: 'Column 4', dataIndex: 'address', key: '4' },\n  { title: 'Column 5', dataIndex: 'address', key: '5' },\n  { title: 'Column 6', dataIndex: 'address', key: '6' },\n  { title: 'Column 7', dataIndex: 'address', key: '7' },\n  { title: 'Column 8', dataIndex: 'address', key: '8' },\n  {\n    title: 'Action',\n    key: 'operation',\n    fixed: 'right',\n    width: 100,\n  },\n];\n\ninterface DataItem {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst data: DataItem[] = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 40,\n    address: 'London Park',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/fixed-header.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 固定表头\n  en-US: Fixed Header\n---\n\n## zh-CN\n\n方便一页内展示大量数据。\n> 需要指定 column 的 `width` 属性，否则列头和内容可能不对齐。如果指定 `width` 不生效或出现白色垂直空隙，请尝试建议留一列不设宽度以适应弹性布局，或者检查是否有超长连续字段破坏布局。\n\n## en-US\n\nDisplay large amounts of data in scrollable view.\n> Specify width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.\n\n</docs>\n\n<template>\n  <a-table\n    :columns=\"columns\"\n    :data-source=\"data\"\n    :pagination=\"{ pageSize: 50 }\"\n    :scroll=\"{ y: 240 }\"\n  />\n</template>\n<script lang=\"ts\" setup>\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    width: 150,\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    width: 150,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n  },\n];\n\nconst data = [...Array(100)].map((_, i) => ({\n  key: i,\n  name: `Edward King ${i}`,\n  age: 32,\n  address: `London, Park Lane no. ${i}`,\n}));\n</script>\n"
  },
  {
    "path": "components/table/demo/grouping-columns.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 表头分组\n  en-US: Grouping table head\n---\n\n## zh-CN\n\n`columns[n]` 可以内嵌 `children`，以渲染分组表头。\n\n## en-US\n\nGroup table head with `columns[n].children`.\n\n</docs>\n\n<template>\n  <a-table\n    :columns=\"columns\"\n    :data-source=\"data\"\n    bordered\n    size=\"middle\"\n    :scroll=\"{ x: 'calc(700px + 50%)', y: 240 }\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport type { TableColumnsType } from 'ant-design-vue';\ntype TableDataType = {\n  key: number;\n  name: string;\n  age: number;\n  street: string;\n  building: string;\n  number: number;\n  companyAddress: string;\n  companyName: string;\n  gender: string;\n};\nconst columns: TableColumnsType = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n    width: 100,\n    fixed: 'left',\n    filters: [\n      {\n        text: 'Joe',\n        value: 'Joe',\n      },\n      {\n        text: 'John',\n        value: 'John',\n      },\n    ],\n    onFilter: (value: string, record: TableDataType) => record.name.indexOf(value) === 0,\n  },\n  {\n    title: 'Other',\n    children: [\n      {\n        title: 'Age',\n        dataIndex: 'age',\n        key: 'age',\n        width: 200,\n        sorter: (a: TableDataType, b: TableDataType) => a.age - b.age,\n      },\n      {\n        title: 'Address',\n        children: [\n          {\n            title: 'Street',\n            dataIndex: 'street',\n            key: 'street',\n            width: 200,\n          },\n          {\n            title: 'Block',\n            children: [\n              {\n                title: 'Building',\n                dataIndex: 'building',\n                key: 'building',\n                width: 100,\n              },\n              {\n                title: 'Door No.',\n                dataIndex: 'number',\n                key: 'number',\n                width: 100,\n              },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    title: 'Company',\n    children: [\n      {\n        title: 'Company Address',\n        dataIndex: 'companyAddress',\n        key: 'companyAddress',\n        width: 200,\n      },\n      {\n        title: 'Company Name',\n        dataIndex: 'companyName',\n        key: 'companyName',\n      },\n    ],\n  },\n  {\n    title: 'Gender',\n    dataIndex: 'gender',\n    key: 'gender',\n    width: 80,\n    fixed: 'right',\n  },\n];\nconst data = [...Array(100)].map((_, i) => ({\n  key: i,\n  name: 'John Brown',\n  age: i + 1,\n  street: 'Lake Park',\n  building: 'C',\n  number: 2035,\n  companyAddress: 'Lake Street 42',\n  companyName: 'SoftLake Co',\n  gender: 'M',\n}));\n</script>\n"
  },
  {
    "path": "components/table/demo/head.vue",
    "content": "<docs>\n---\norder: 14\ntitle:\n  zh-CN: 筛选和排序\n  en-US: Filter and sorter\n---\n\n## zh-CN\n\n对某一列数据进行筛选，使用列的 `filters` 属性来指定需要筛选菜单的列，`onFilter` 用于筛选当前数据，`filterMultiple` 用于指定多选和单选。\n对某一列数据进行排序，通过指定列的 `sorter` 函数即可启动排序按钮。`sorter: function(rowA, rowB) { ... }`， rowA、rowB 为比较的两个行数据。\n`sortDirections: ['ascend' | 'descend']`改变每列可用的排序方式，切换排序时按数组内容依次切换，设置在 table props 上时对所有列生效。\n使用 `defaultSortOrder` 属性，设置列的默认排序顺序。\n\n## en-US\n\nUse `filters` to generate filter menu in columns, `onFilter` to determine filtered result, and `filterMultiple` to indicate whether it's multiple or single selection.\nUses `defaultFilteredValue` to make a column filtered by default.\nUse `sorter` to make a column sortable. `sorter` can be a function of the type `function(a, b) { ... }` for sorting data locally.\n`sortDirections: ['ascend' | 'descend']` defines available sort methods for each columns, effective for all columns when set on table props.\nUses `defaultSortOrder` to make a column sorted by default.\nIf a `sortOrder` or `defaultSortOrder` is specified with the value `ascend` or `descend`, you can access this value from within the function passed to the `sorter` as explained above. Such a function can take the form: `function(a, b, sortOrder) { ... }`.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" @change=\"onChange\" />\n</template>\n<script lang=\"ts\" setup>\nimport type { TableColumnType, TableProps } from 'ant-design-vue';\n\ntype TableDataType = {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n};\n\nconst columns: TableColumnType<TableDataType>[] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'Joe',\n        value: 'Joe',\n      },\n      {\n        text: 'Jim',\n        value: 'Jim',\n      },\n      {\n        text: 'Submenu',\n        value: 'Submenu',\n        children: [\n          {\n            text: 'Green',\n            value: 'Green',\n          },\n          {\n            text: 'Black',\n            value: 'Black',\n          },\n        ],\n      },\n    ],\n    // specify the condition of filtering result\n    // here is that finding the name started with `value`\n    onFilter: (value: string, record: TableDataType) => record.name.indexOf(value) === 0,\n    sorter: (a: TableDataType, b: TableDataType) => a.name.length - b.name.length,\n    sortDirections: ['descend'],\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    defaultSortOrder: 'descend',\n    sorter: (a: TableDataType, b: TableDataType) => a.age - b.age,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    filters: [\n      {\n        text: 'London',\n        value: 'London',\n      },\n      {\n        text: 'New York',\n        value: 'New York',\n      },\n    ],\n    filterMultiple: false,\n    onFilter: (value: string, record: TableDataType) => record.address.indexOf(value) === 0,\n    sorter: (a: TableDataType, b: TableDataType) => a.address.length - b.address.length,\n    sortDirections: ['descend', 'ascend'],\n  },\n];\n\nconst data: TableDataType[] = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\nconst onChange: TableProps<TableDataType>['onChange'] = (pagination, filters, sorter) => {\n  console.log('params', pagination, filters, sorter);\n};\n</script>\n"
  },
  {
    "path": "components/table/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Ajax />\n    <Bordered />\n    <Ellipsis />\n    <ColspanRowspan />\n    <EditCell />\n    <EditRow />\n    <ExpandChildren />\n    <Expand />\n    <FixedColumnsHeader />\n    <FixedColumns />\n    <FixedHeader />\n    <GroupingColumns />\n    <MultipleSorter />\n    <NestedTable />\n    <Head />\n    <CustomFilterPanel />\n    <ResetFilter />\n    <filterSearchVue />\n    <filterInTreeVue />\n    <RowSelectionAndOperation />\n    <RowSelectionCustom />\n    <RowSelection />\n    <Sticky />\n    <ResizableColumn />\n    <Size />\n    <Stripe />\n    <Summary />\n    <Responsive />\n    <TemplateCom />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport Ajax from './ajax.vue';\nimport Basic from './basic.vue';\nimport Bordered from './bordered.vue';\nimport ColspanRowspan from './colspan-rowspan.vue';\nimport CustomFilterPanel from './custom-filter-panel.vue';\nimport EditCell from './edit-cell.vue';\nimport EditRow from './edit-row.vue';\nimport ExpandChildren from './expand-children.vue';\nimport Expand from './expand.vue';\nimport FixedColumnsHeader from './fixed-columns-header.vue';\nimport FixedColumns from './fixed-columns.vue';\nimport FixedHeader from './fixed-header.vue';\nimport GroupingColumns from './grouping-columns.vue';\nimport Head from './head.vue';\nimport NestedTable from './nested-table.vue';\nimport ResetFilter from './reset-filter.vue';\nimport RowSelectionAndOperation from './row-selection-and-operation.vue';\nimport RowSelectionCustom from './row-selection-custom.vue';\nimport RowSelection from './row-selection.vue';\nimport Size from './size.vue';\nimport TemplateCom from './template.vue';\nimport Ellipsis from './ellipsis.vue';\nimport Stripe from './stripe.vue';\nimport MultipleSorter from './multiple-sorter.vue';\nimport Summary from './summary.vue';\nimport Sticky from './sticky.vue';\nimport ResizableColumn from './resizable-column.vue';\nimport Responsive from './responsive.vue';\nimport filterSearchVue from './filter-search.vue';\nimport filterInTreeVue from './filter-in-tree.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    filterInTreeVue,\n    filterSearchVue,\n    Basic,\n    Ellipsis,\n    Ajax,\n    Bordered,\n    ColspanRowspan,\n    CustomFilterPanel,\n    EditCell,\n    EditRow,\n    ExpandChildren,\n    Expand,\n    FixedColumnsHeader,\n    FixedColumns,\n    FixedHeader,\n    GroupingColumns,\n    Head,\n    NestedTable,\n    ResetFilter,\n    RowSelectionAndOperation,\n    RowSelectionCustom,\n    RowSelection,\n    Size,\n    TemplateCom,\n    Stripe,\n    MultipleSorter,\n    Summary,\n    Sticky,\n    ResizableColumn,\n    Responsive,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/table/demo/multiple-sorter.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  en-US: Multiple sorter\n  zh-CN: 多列排序\n---\n\n## zh-CN\n\n`column.sorter` 支持 `multiple` 字段以配置多列排序优先级。通过 `sorter.compare` 配置排序逻辑，你可以通过不设置该函数只启动多列排序的交互形式。\n\n## en-US\n\n`column.sorter` support `multiple` to config the priority of sort columns. Though `sorter.compare` to customize compare function. You can also leave it empty to use the interactive only.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" @change=\"onChange\" />\n</template>\n\n<script lang=\"ts\" setup>\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Chinese Score',\n    dataIndex: 'chinese',\n    sorter: {\n      compare: (a, b) => a.chinese - b.chinese,\n      multiple: 3,\n    },\n  },\n  {\n    title: 'Math Score',\n    dataIndex: 'math',\n    sorter: {\n      compare: (a, b) => a.math - b.math,\n      multiple: 2,\n    },\n  },\n  {\n    title: 'English Score',\n    dataIndex: 'english',\n    sorter: {\n      compare: (a, b) => a.english - b.english,\n      multiple: 1,\n    },\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    chinese: 98,\n    math: 60,\n    english: 70,\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    chinese: 98,\n    math: 66,\n    english: 89,\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    chinese: 98,\n    math: 90,\n    english: 70,\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    chinese: 88,\n    math: 99,\n    english: 89,\n  },\n];\n\nfunction onChange(pagination, filters, sorter, extra) {\n  console.log('params', pagination, filters, sorter, extra);\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/nested-table.vue",
    "content": "<docs>\n---\norder: 15\ntitle:\n  zh-CN: 嵌套子表格\n  en-US: Nested tables\n\n---\n\n## zh-CN\n\n展示每行数据更详细的信息。\n\n## en-US\n\nShowing more detailed info of every row.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" class=\"components-table-demo-nested\">\n    <template #bodyCell=\"{ column }\">\n      <template v-if=\"column.key === 'operation'\">\n        <a>Publish</a>\n      </template>\n    </template>\n    <template #expandedRowRender>\n      <a-table :columns=\"innerColumns\" :data-source=\"innerData\" :pagination=\"false\">\n        <template #bodyCell=\"{ column }\">\n          <template v-if=\"column.key === 'state'\">\n            <span>\n              <a-badge status=\"success\" />\n              Finished\n            </span>\n          </template>\n          <template v-else-if=\"column.key === 'operation'\">\n            <span class=\"table-operation\">\n              <a>Pause</a>\n              <a>Stop</a>\n              <a-dropdown>\n                <template #overlay>\n                  <a-menu>\n                    <a-menu-item>Action 1</a-menu-item>\n                    <a-menu-item>Action 2</a-menu-item>\n                  </a-menu>\n                </template>\n                <a>\n                  More\n                  <down-outlined />\n                </a>\n              </a-dropdown>\n            </span>\n          </template>\n        </template>\n      </a-table>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { DownOutlined } from '@ant-design/icons-vue';\nconst columns = [\n  { title: 'Name', dataIndex: 'name', key: 'name' },\n  { title: 'Platform', dataIndex: 'platform', key: 'platform' },\n  { title: 'Version', dataIndex: 'version', key: 'version' },\n  { title: 'Upgraded', dataIndex: 'upgradeNum', key: 'upgradeNum' },\n  { title: 'Creator', dataIndex: 'creator', key: 'creator' },\n  { title: 'Date', dataIndex: 'createdAt', key: 'createdAt' },\n  { title: 'Action', key: 'operation' },\n];\n\ninterface DataItem {\n  key: number;\n  name: string;\n  platform: string;\n  version: string;\n  upgradeNum: number;\n  creator: string;\n  createdAt: string;\n}\n\nconst data: DataItem[] = [];\nfor (let i = 0; i < 3; ++i) {\n  data.push({\n    key: i,\n    name: `Screem ${i + 1}`,\n    platform: 'iOS',\n    version: '10.3.4.5654',\n    upgradeNum: 500,\n    creator: 'Jack',\n    createdAt: '2014-12-24 23:12:00',\n  });\n}\n\nconst innerColumns = [\n  { title: 'Date', dataIndex: 'date', key: 'date' },\n  { title: 'Name', dataIndex: 'name', key: 'name' },\n  { title: 'Status', key: 'state' },\n  { title: 'Upgrade Status', dataIndex: 'upgradeNum', key: 'upgradeNum' },\n  {\n    title: 'Action',\n    dataIndex: 'operation',\n    key: 'operation',\n  },\n];\n\ninterface innerDataItem {\n  key: number;\n  date: string;\n  name: string;\n  upgradeNum: string;\n}\n\nconst innerData: innerDataItem[] = [];\nfor (let i = 0; i < 3; ++i) {\n  innerData.push({\n    key: i,\n    date: '2014-12-24 23:12:00',\n    name: `This is production name ${i + 1}`,\n    upgradeNum: 'Upgraded: 56',\n  });\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/order-column.vue",
    "content": "<docs>\n---\norder: 14.1\nversion: 3.0\ntitle:\n  en-US: Order Specific Column\n  zh-CN: 特殊列排序\n---\n\n## zh-CN\n\n你可以通过 `Table.EXPAND_COLUMN` 和 `Table.SELECT_COLUMN` 来控制选择和展开列的顺序。\n\n## en-US\n\nYou can control the order of the expand and select columns by using `Table.EXPAND_COLUMN` and `Table.SELECT_COLUMN`.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" :row-selection=\"{}\">\n    <template #expandedRowRender=\"{ record }\">\n      <p style=\"margin: 0\">\n        {{ record.description }}\n      </p>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { Table } from 'ant-design-vue';\nconst columns = [\n  { title: 'Name', dataIndex: 'name', key: 'name' },\n  Table.EXPAND_COLUMN,\n  { title: 'Age', dataIndex: 'age', key: 'age' },\n  Table.SELECTION_COLUMN,\n  { title: 'Address', dataIndex: 'address', key: 'address' },\n];\n\nconst data = [\n  {\n    key: 1,\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.',\n  },\n  {\n    key: 2,\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.',\n  },\n  {\n    key: 3,\n    name: 'Not Expandable',\n    age: 29,\n    address: 'Jiangsu No. 1 Lake Park',\n    description: 'This not expandable',\n  },\n  {\n    key: 4,\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/reset-filter.vue",
    "content": "<docs>\n---\norder: 16\ntitle:\n  zh-CN: 可控的筛选和排序\n  en-US: Reset filters and sorters\n\n---\n\n## zh-CN\n\n使用受控属性对筛选和排序状态进行控制。\n> 1. columns 中定义了 filteredValue 和 sortOrder 属性即视为受控模式。\n> 2. 只支持同时对一列进行排序，请保证只有一列的 sortOrder 属性是生效的。\n> 3. 务必指定 `column.key`。\n\n## en-US\n\nControl filters and sorters by `filteredValue` and `sortOrder`.\n> 1. Defining `filteredValue` or `sortOrder` means that it is in the controlled mode.\n> 2. Make sure `sortOrder` is assigned for only one column.\n> 3. `column.key` is required.\n\n</docs>\n\n<template>\n  <div>\n    <div class=\"table-operations\">\n      <a-button @click=\"setAgeSort\">Sort age</a-button>\n      <a-button @click=\"clearFilters\">Clear filters</a-button>\n      <a-button @click=\"clearAll\">Clear filters and sorters</a-button>\n    </div>\n    <a-table :columns=\"columns\" :data-source=\"data\" @change=\"handleChange\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nimport type { TableColumnType, TableProps } from 'ant-design-vue';\n\ninterface DataItem {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst data: DataItem[] = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\n\nconst filteredInfo = ref();\nconst sortedInfo = ref();\n\nconst columns = computed<TableColumnType[]>(() => {\n  const filtered = filteredInfo.value || {};\n  const sorted = sortedInfo.value || {};\n  return [\n    {\n      title: 'Name',\n      dataIndex: 'name',\n      key: 'name',\n      filters: [\n        { text: 'Joe', value: 'Joe' },\n        { text: 'Jim', value: 'Jim' },\n      ],\n      filteredValue: filtered.name || null,\n      onFilter: (value: string, record: DataItem) => record.name.includes(value),\n      sorter: (a: DataItem, b: DataItem) => a.name.length - b.name.length,\n      sortOrder: sorted.columnKey === 'name' && sorted.order,\n      ellipsis: true,\n    },\n    {\n      title: 'Age',\n      dataIndex: 'age',\n      key: 'age',\n      sorter: (a: DataItem, b: DataItem) => a.age - b.age,\n      sortOrder: sorted.columnKey === 'age' && sorted.order,\n    },\n    {\n      title: 'Address',\n      dataIndex: 'address',\n      key: 'address',\n      filters: [\n        { text: 'London', value: 'London' },\n        { text: 'New York', value: 'New York' },\n      ],\n      filteredValue: filtered.address || null,\n      onFilter: (value: string, record: DataItem) => record.address.includes(value),\n      sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,\n      sortOrder: sorted.columnKey === 'address' && sorted.order,\n      ellipsis: true,\n    },\n  ];\n});\n\nconst handleChange: TableProps['onChange'] = (pagination, filters, sorter) => {\n  console.log('Various parameters', pagination, filters, sorter);\n  filteredInfo.value = filters;\n  sortedInfo.value = sorter;\n};\nconst clearFilters = () => {\n  filteredInfo.value = null;\n};\nconst clearAll = () => {\n  filteredInfo.value = null;\n  sortedInfo.value = null;\n};\nconst setAgeSort = () => {\n  sortedInfo.value = {\n    order: 'descend',\n    columnKey: 'age',\n  };\n};\n</script>\n<style scoped>\n.table-operations {\n  margin-bottom: 16px;\n}\n\n.table-operations > button {\n  margin-right: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/resizable-column.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  en-US: Resizable column\n  zh-CN: 可伸缩列\n---\n\n## zh-CN\n\n设置 resizable 开启拖动列\n\n鼠标 hover 到 Name、 Age 分割线上体验一下吧\n\n## en-US\n\nset resizable for drag column\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" @resizeColumn=\"handleResizeColumn\">\n    <template #headerCell=\"{ column }\">\n      <template v-if=\"column.key === 'name'\">\n        <span>\n          <smile-outlined />\n          Name\n        </span>\n      </template>\n    </template>\n\n    <template #bodyCell=\"{ column, record }\">\n      <template v-if=\"column.key === 'name'\">\n        <a>\n          {{ record.name }}\n        </a>\n      </template>\n      <template v-else-if=\"column.key === 'tags'\">\n        <span>\n          <a-tag\n            v-for=\"tag in record.tags\"\n            :key=\"tag\"\n            :color=\"tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'\"\n          >\n            {{ tag.toUpperCase() }}\n          </a-tag>\n        </span>\n      </template>\n      <template v-else-if=\"column.key === 'action'\">\n        <span>\n          <a>Invite 一 {{ record.name }}</a>\n          <a-divider type=\"vertical\" />\n          <a>Delete</a>\n          <a-divider type=\"vertical\" />\n          <a class=\"ant-dropdown-link\">\n            More actions\n            <down-outlined />\n          </a>\n        </span>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { SmileOutlined, DownOutlined } from '@ant-design/icons-vue';\nimport type { TableColumnsType } from 'ant-design-vue';\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    tags: ['nice', 'developer'],\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    tags: ['loser'],\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    tags: ['cool', 'teacher'],\n  },\n];\n\nconst columns = ref<TableColumnsType>([\n  {\n    dataIndex: 'name',\n    key: 'name',\n    resizable: true,\n    width: 150,\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    key: 'age',\n    resizable: true,\n    width: 100,\n    minWidth: 100,\n    maxWidth: 200,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    key: 'address',\n  },\n  {\n    title: 'Tags',\n    key: 'tags',\n    dataIndex: 'tags',\n  },\n  {\n    title: 'Action',\n    key: 'action',\n  },\n]);\nfunction handleResizeColumn(w, col) {\n  col.width = w;\n}\n</script>\n"
  },
  {
    "path": "components/table/demo/responsive.vue",
    "content": "<docs>\n---\norder: 30\ntitle:\n  en-US: Responsive\n  zh-CN: 响应式\n---\n\n## zh-CN\n\n响应式配置列的展示。\n\n## en-US\n\nResponsive columns.\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :row-key=\"record => record.key\" :data-source=\"data\">\n    <template #bodyCell=\"{ column, record }\">\n      <template v-if=\"column.key === 'name'\">\n        <a>\n          {{ record.name }}\n        </a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { ColumnsType } from 'ant-design-vue/es/table/interface';\nconst columns: ColumnsType = [\n  {\n    title: 'Name (all screens)',\n    dataIndex: 'name',\n    key: 'name',\n  },\n  {\n    title: 'Age (medium screen or bigger)',\n    dataIndex: 'age',\n    key: 'age',\n    responsive: ['md'],\n  },\n  {\n    title: 'Address (large screen or bigger)',\n    dataIndex: 'address',\n    key: 'address',\n    responsive: ['lg'],\n  },\n];\n\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/demo/row-selection-and-operation.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  en-US: Selection and operation\n  zh-CN: 选择和操作\n---\n\n## zh-CN\n\n选择后进行操作，完成后清空选择，通过 `rowSelection.selectedRowKeys` 来控制选中项。\n\n## en-US\n\nTo perform operations and clear selections after selecting some rows, use `rowSelection.selectedRowKeys` to control selected rows.\n\n</docs>\n\n<template>\n  <div>\n    <div style=\"margin-bottom: 16px\">\n      <a-button type=\"primary\" :disabled=\"!hasSelected\" :loading=\"state.loading\" @click=\"start\">\n        Reload\n      </a-button>\n      <span style=\"margin-left: 8px\">\n        <template v-if=\"hasSelected\">\n          {{ `Selected ${state.selectedRowKeys.length} items` }}\n        </template>\n      </span>\n    </div>\n    <a-table\n      :row-selection=\"{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }\"\n      :columns=\"columns\"\n      :data-source=\"data\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive } from 'vue';\n\ntype Key = string | number;\n\ninterface DataType {\n  key: Key;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n  },\n];\n\nconst data: DataType[] = [];\nfor (let i = 0; i < 46; i++) {\n  data.push({\n    key: i,\n    name: `Edward King ${i}`,\n    age: 32,\n    address: `London, Park Lane no. ${i}`,\n  });\n}\n\nconst state = reactive<{\n  selectedRowKeys: Key[];\n  loading: boolean;\n}>({\n  selectedRowKeys: [], // Check here to configure the default column\n  loading: false,\n});\nconst hasSelected = computed(() => state.selectedRowKeys.length > 0);\n\nconst start = () => {\n  state.loading = true;\n  // ajax request after empty completing\n  setTimeout(() => {\n    state.loading = false;\n    state.selectedRowKeys = [];\n  }, 1000);\n};\nconst onSelectChange = (selectedRowKeys: Key[]) => {\n  console.log('selectedRowKeys changed: ', selectedRowKeys);\n  state.selectedRowKeys = selectedRowKeys;\n};\n</script>\n"
  },
  {
    "path": "components/table/demo/row-selection-custom.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  en-US: Custom selection\n  zh-CN: 自定义选择项\n---\n\n## zh-CN\n通过 `rowSelection.selections` 自定义选择项，默认不显示下拉选项，设为 `true` 时显示默认选择项。\n\n## en-US\nUse `rowSelection.selections` custom selections, default no select dropdown, show default selections via setting to `true`.\n\n</docs>\n\n<template>\n  <a-table :row-selection=\"rowSelection\" :columns=\"columns\" :data-source=\"data\" />\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, unref } from 'vue';\nimport { Table } from 'ant-design-vue';\n\ninterface DataType {\n  key: string | number;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n  },\n];\n\nconst data: DataType[] = [];\nfor (let i = 0; i < 46; i++) {\n  data.push({\n    key: i,\n    name: `Edward King ${i}`,\n    age: 32,\n    address: `London, Park Lane no. ${i}`,\n  });\n}\n\nconst selectedRowKeys = ref<DataType['key'][]>([]); // Check here to configure the default column\n\nconst onSelectChange = (changableRowKeys: string[]) => {\n  console.log('selectedRowKeys changed: ', changableRowKeys);\n  selectedRowKeys.value = changableRowKeys;\n};\n\nconst rowSelection = computed(() => {\n  return {\n    selectedRowKeys: unref(selectedRowKeys),\n    onChange: onSelectChange,\n    hideDefaultSelections: true,\n    selections: [\n      Table.SELECTION_ALL,\n      Table.SELECTION_INVERT,\n      Table.SELECTION_NONE,\n      {\n        key: 'odd',\n        text: 'Select Odd Row',\n        onSelect: changableRowKeys => {\n          let newSelectedRowKeys = [];\n          newSelectedRowKeys = changableRowKeys.filter((_key, index) => {\n            if (index % 2 !== 0) {\n              return false;\n            }\n            return true;\n          });\n          selectedRowKeys.value = newSelectedRowKeys;\n        },\n      },\n      {\n        key: 'even',\n        text: 'Select Even Row',\n        onSelect: changableRowKeys => {\n          let newSelectedRowKeys = [];\n          newSelectedRowKeys = changableRowKeys.filter((_key, index) => {\n            if (index % 2 !== 0) {\n              return true;\n            }\n            return false;\n          });\n          selectedRowKeys.value = newSelectedRowKeys;\n        },\n      },\n    ],\n  };\n});\n</script>\n"
  },
  {
    "path": "components/table/demo/row-selection.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  en-US: selection\n  zh-CN: 可选择\n---\n\n## zh-CN\n第一列是联动的选择框。\n默认点击 checkbox 触发选择行为，需要 `点击行` 触发可参考例子：https://codesandbox.io/s/row-selection-on-click-tr58v\n\n## en-US\nRows can be selectable by making first column as a selectable column.\nselection happens when clicking checkbox defaultly. You can see https://codesandbox.io/s/row-selection-on-click-tr58v if you need row-click selection behavior.\n\n</docs>\n\n<template>\n  <a-table :row-selection=\"rowSelection\" :columns=\"columns\" :data-source=\"data\">\n    <template #bodyCell=\"{ column, text }\">\n      <template v-if=\"column.dataIndex === 'name'\">\n        <a>{{ text }}</a>\n      </template>\n    </template>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nimport type { TableProps, TableColumnType } from 'ant-design-vue';\n\ninterface DataType {\n  key: string;\n  name: string;\n  age: number;\n  address: string;\n}\n\nconst columns: TableColumnType<DataType>[] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n  },\n];\nconst data: DataType[] = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Disabled User',\n    age: 99,\n    address: 'Sidney No. 1 Lake Park',\n  },\n];\n\nconst rowSelection: TableProps['rowSelection'] = {\n  onChange: (selectedRowKeys: string[], selectedRows: DataType[]) => {\n    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);\n  },\n  getCheckboxProps: (record: DataType) => ({\n    disabled: record.name === 'Disabled User', // Column configuration not to be checked\n    name: record.name,\n  }),\n};\n</script>\n"
  },
  {
    "path": "components/table/demo/size.vue",
    "content": "<docs>\n---\norder: 98\ntitle:\n  en-US: size\n  zh-CN: 紧凑型\n---\n\n## zh-CN\n两种紧凑型的列表，小型列表只用于对话框内。\n\n## en-US\n\nThere are two compacted table sizes: `middle` and `small`. The `small` size is used in Modals only.\n\n</docs>\n\n<template>\n  <div id=\"components-table-demo-size\">\n    <h4>Middle size table</h4>\n    <a-table :columns=\"columns\" :data-source=\"data\" size=\"middle\" />\n    <h4>Small size table</h4>\n    <a-table :columns=\"columns\" :data-source=\"data\" size=\"small\" />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nconst columns = [\n  { title: 'Name', dataIndex: 'name' },\n  { title: 'Age', dataIndex: 'age' },\n  { title: 'Address', dataIndex: 'address' },\n];\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n];\n</script>\n<style>\n#components-table-demo-size h4 {\n  margin-bottom: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/sticky.vue",
    "content": "<docs>\n---\norder: 99\ntitle:\n  en-US: Fixed header and scroll bar with the page\n  zh-CN: 随页面滚动的固定表头和滚动条\n---\n\n## zh-CN\n\n对于长表格，需要滚动才能查看表头和滚动条，那么现在可以设置跟随页面固定表头和滚动条。\n\n## en-US\n\nFor long table，need to scroll to view the header and scroll bar，then you can now set the fixed header and scroll bar to follow the page.\n\n</docs>\n\n<template>\n  <a-table sticky :columns=\"columns\" :data-source=\"data\" :scroll=\"{ x: 1500 }\">\n    <template #bodyCell=\"{ column }\">\n      <template v-if=\"column.key === 'operation'\"><a>action</a></template>\n    </template>\n    <template #summary>\n      <a-table-summary :fixed=\"fixedTop ? 'top' : 'bottom'\">\n        <a-table-summary-row>\n          <a-table-summary-cell :index=\"0\" :col-span=\"2\">\n            <a-switch\n              v-model:checked=\"fixedTop\"\n              checked-children=\"Fixed Top\"\n              un-checked-children=\"Fixed Top\"\n            ></a-switch>\n          </a-table-summary-cell>\n          <a-table-summary-cell :index=\"2\" :col-span=\"8\">Scroll Context</a-table-summary-cell>\n          <a-table-summary-cell :index=\"10\">Fix Right</a-table-summary-cell>\n        </a-table-summary-row>\n      </a-table-summary>\n    </template>\n  </a-table>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { TableColumnsType } from 'ant-design-vue';\nimport { ref } from 'vue';\nconst columns = ref<TableColumnsType>([\n  {\n    title: 'Full Name',\n    width: 100,\n    dataIndex: 'name',\n    key: 'name',\n    fixed: 'left',\n  },\n  {\n    title: 'Age',\n    width: 100,\n    dataIndex: 'age',\n    key: 'age',\n    fixed: 'left',\n  },\n  {\n    title: 'Column 1',\n    dataIndex: 'address',\n    key: '1',\n    width: 150,\n  },\n  {\n    title: 'Column 2',\n    dataIndex: 'address',\n    key: '2',\n    width: 150,\n  },\n  {\n    title: 'Column 3',\n    dataIndex: 'address',\n    key: '3',\n    width: 150,\n  },\n  {\n    title: 'Column 4',\n    dataIndex: 'address',\n    key: '4',\n    width: 150,\n  },\n  {\n    title: 'Column 5',\n    dataIndex: 'address',\n    key: '5',\n    width: 150,\n  },\n  {\n    title: 'Column 6',\n    dataIndex: 'address',\n    key: '6',\n    width: 150,\n  },\n  {\n    title: 'Column 7',\n    dataIndex: 'address',\n    key: '7',\n    width: 150,\n  },\n  { title: 'Column 8', dataIndex: 'address', key: '8' },\n  {\n    title: 'Action',\n    key: 'operation',\n    fixed: 'right',\n    width: 100,\n  },\n]);\n\nconst data = [];\nfor (let i = 0; i < 100; i++) {\n  data.push({\n    key: i,\n    name: `Edrward ${i}`,\n    age: 32,\n    address: `London Park no. ${i}`,\n  });\n}\nconst fixedTop = ref(false);\n</script>\n\n<style scoped>\n#components-table-demo-summary tfoot th,\n#components-table-demo-summary tfoot td {\n  background: #fafafa;\n}\n[data-theme='dark'] #components-table-demo-summary tfoot th,\n[data-theme='dark'] #components-table-demo-summary tfoot td {\n  background: #1d1d1d;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/stripe.vue",
    "content": "<docs>\n---\norder: 97\ntitle:\n  en-US: Stripe Style\n  zh-CN: 带斑马纹表格\n---\n\n## zh-CN\n利用 `rowClassName` 自定义带斑马纹的表格。\n\n## en-US\nUse `rowClassName` Customize the table with Striped.\n\n</docs>\n\n<template>\n  <a-table\n    class=\"ant-table-striped\"\n    size=\"middle\"\n    :columns=\"columns\"\n    :data-source=\"data\"\n    :row-class-name=\"(_record, index) => (index % 2 === 1 ? 'table-striped' : null)\"\n  />\n  <a-table\n    class=\"ant-table-striped\"\n    size=\"middle\"\n    :columns=\"columns\"\n    :data-source=\"data\"\n    :row-class-name=\"(_record, index) => (index % 2 === 1 ? 'table-striped' : null)\"\n    bordered\n  />\n</template>\n\n<script lang=\"ts\" setup>\nconst columns = [\n  { title: 'Name', dataIndex: 'name' },\n  { title: 'Age', dataIndex: 'age' },\n  { title: 'Address', dataIndex: 'address' },\n];\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Ben Kang',\n    age: 15,\n    address: 'Sidney No. 1 Lake Park',\n  },\n];\n</script>\n\n<style scoped>\n[data-doc-theme='light'] .ant-table-striped :deep(.table-striped) td {\n  background-color: #fafafa;\n}\n[data-doc-theme='dark'] .ant-table-striped :deep(.table-striped) td {\n  background-color: rgb(29, 29, 29);\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/summary.vue",
    "content": "<docs>\n---\norder: 29\ntitle:\n  en-US: Summary\n  zh-CN: 总结栏\n---\n\n## zh-CN\n\n通过 `summary` 设置总结栏。使用 `a-table-summary-cell` 同步 Column 的固定状态。你可以通过配置 `a-table-summary` 的 `fixed` 属性使其固定。\n\n## en-US\n\nSet summary content by `summary` prop. Sync column fixed status with `a-table-summary-cell`. You can fixed it by set `a-table-summary` `fixed` prop.\n\n</docs>\n\n<template>\n  <a-table :columns=\"columns\" :data-source=\"data\" :pagination=\"false\" bordered>\n    <template #summary>\n      <a-table-summary-row>\n        <a-table-summary-cell>Total</a-table-summary-cell>\n        <a-table-summary-cell>\n          <a-typography-text type=\"danger\">{{ totals.totalBorrow }}</a-typography-text>\n        </a-table-summary-cell>\n        <a-table-summary-cell>\n          <a-typography-text>{{ totals.totalRepayment }}</a-typography-text>\n        </a-table-summary-cell>\n      </a-table-summary-row>\n      <a-table-summary-row>\n        <a-table-summary-cell>Balance</a-table-summary-cell>\n        <a-table-summary-cell :col-span=\"2\">\n          <a-typography-text type=\"danger\">\n            {{ totals.totalBorrow - totals.totalRepayment }}\n          </a-typography-text>\n        </a-table-summary-cell>\n      </a-table-summary-row>\n    </template>\n  </a-table>\n  <br />\n  <a-table\n    :columns=\"fixedColumns\"\n    :data-source=\"fixedData\"\n    :pagination=\"false\"\n    :scroll=\"{ x: 2000, y: 500 }\"\n    bordered\n  >\n    <template #summary>\n      <a-table-summary fixed>\n        <a-table-summary-row>\n          <a-table-summary-cell :index=\"0\">Summary</a-table-summary-cell>\n          <a-table-summary-cell :index=\"1\">This is a summary content</a-table-summary-cell>\n        </a-table-summary-row>\n      </a-table-summary>\n    </template>\n  </a-table>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { TableColumnsType } from 'ant-design-vue';\nimport { computed, ref } from 'vue';\n\nconst columns = ref<TableColumnsType>([\n  {\n    title: 'Name',\n    dataIndex: 'name',\n  },\n  {\n    title: 'Borrow',\n    dataIndex: 'borrow',\n  },\n  {\n    title: 'Repayment',\n    dataIndex: 'repayment',\n  },\n]);\n\nconst data = ref([\n  {\n    key: '1',\n    name: 'John Brown',\n    borrow: 10,\n    repayment: 33,\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    borrow: 100,\n    repayment: 0,\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    borrow: 10,\n    repayment: 10,\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    borrow: 75,\n    repayment: 45,\n  },\n]);\n\nconst fixedColumns = ref<TableColumnsType>([\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    fixed: true,\n    width: 100,\n  },\n  {\n    title: 'Description',\n    dataIndex: 'description',\n  },\n]);\n\nconst fixedData = ref<{ key: number; name: string; description: string }[]>([]);\nfor (let i = 0; i < 20; i += 1) {\n  fixedData.value.push({\n    key: i,\n    name: ['Light', 'Bamboo', 'Little'][i % 3],\n    description: 'Everything that has a beginning, has an end.',\n  });\n}\n\nconst totals = computed(() => {\n  let totalBorrow = 0;\n  let totalRepayment = 0;\n\n  data.value.forEach(({ borrow, repayment }) => {\n    totalBorrow += borrow;\n    totalRepayment += repayment;\n  });\n  return { totalBorrow, totalRepayment };\n});\n</script>\n\n<style>\n#components-table-demo-summary tfoot th,\n#components-table-demo-summary tfoot td {\n  background: #fafafa;\n}\n[data-theme='dark'] #components-table-demo-summary tfoot th,\n[data-theme='dark'] #components-table-demo-summary tfoot td {\n  background: #1d1d1d;\n}\n</style>\n"
  },
  {
    "path": "components/table/demo/template.vue",
    "content": "<docs>\n---\norder: 99\ntitle:\n  en-US: template style API\n  zh-CN: template 风格的 API\n---\n\n## zh-CN\n\n使用 template 风格的 API。\n\n> 不推荐使用，会有一定的性能损耗。\n\n> 这个只是一个描述 `columns` 的语法糖，所以你不能用其他组件去包裹 `Column` 和 `ColumnGroup`。\n\n## en-US\n\nUsing template style API.\n\n> Not recommended, there will be a certain performance loss.\n\n> Since this is just a syntax sugar for the prop `columns`, so that you can't compose `Column` and `ColumnGroup` with other Components.\n\n</docs>\n\n<template>\n  <a-table :data-source=\"data\">\n    <a-table-column-group>\n      <template #title><span style=\"color: #1890ff\">Name</span></template>\n      <a-table-column key=\"firstName\" data-index=\"firstName\">\n        <template #title><span style=\"color: #1890ff\">First Name</span></template>\n      </a-table-column>\n      <a-table-column key=\"lastName\" title=\"Last Name\" data-index=\"lastName\" />\n    </a-table-column-group>\n    <a-table-column key=\"age\" title=\"Age\" data-index=\"age\" />\n    <a-table-column key=\"address\" title=\"Address\" data-index=\"address\" />\n    <a-table-column key=\"tags\" title=\"Tags\" data-index=\"tags\">\n      <template #default=\"{ text: tags }\">\n        <span>\n          <a-tag v-for=\"tag in tags\" :key=\"tag\" color=\"blue\">{{ tag }}</a-tag>\n        </span>\n      </template>\n    </a-table-column>\n    <a-table-column key=\"action\" title=\"Action\">\n      <template #default=\"{ record }\">\n        <span>\n          <a>Action 一 {{ record.firstName }}</a>\n          <a-divider type=\"vertical\" />\n          <a>Delete</a>\n        </span>\n      </template>\n    </a-table-column>\n  </a-table>\n</template>\n<script lang=\"ts\" setup>\nconst data = [\n  {\n    key: '1',\n    firstName: 'John',\n    lastName: 'Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    tags: ['nice', 'developer'],\n  },\n  {\n    key: '2',\n    firstName: 'Jim',\n    lastName: 'Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    tags: ['loser'],\n  },\n  {\n    key: '3',\n    firstName: 'Joe',\n    lastName: 'Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    tags: ['cool', 'teacher'],\n  },\n];\n</script>\n"
  },
  {
    "path": "components/table/hooks/useColumns.tsx",
    "content": "import devWarning from '../../vc-util/devWarning';\nimport type { Ref } from 'vue';\nimport type { ContextSlots } from '../context';\nimport type { TransformColumns, ColumnsType } from '../interface';\nimport { SELECTION_COLUMN } from './useSelection';\nimport { EXPAND_COLUMN } from '../../vc-table';\nimport { customRenderSlot } from '../../_util/vnode';\n\nfunction fillSlots<RecordType>(columns: ColumnsType<RecordType>, contextSlots: Ref<ContextSlots>) {\n  const $slots = contextSlots.value;\n  return columns.map(column => {\n    if (column === SELECTION_COLUMN || column === EXPAND_COLUMN) return column;\n    const cloneColumn = { ...column };\n    const { slots = {} } = cloneColumn;\n    cloneColumn.__originColumn__ = column;\n    devWarning(\n      !('slots' in cloneColumn),\n      'Table',\n      '`column.slots` is deprecated. Please use `v-slot:headerCell` `v-slot:bodyCell` instead.',\n    );\n\n    Object.keys(slots).forEach(key => {\n      const name = slots[key];\n      if (cloneColumn[key] === undefined && $slots[name]) {\n        cloneColumn[key] = $slots[name];\n      }\n    });\n\n    if (contextSlots.value.headerCell && !column.slots?.title) {\n      cloneColumn.title = customRenderSlot(\n        contextSlots.value,\n        'headerCell',\n        {\n          title: column.title,\n          column,\n        },\n        () => [column.title as any],\n      );\n    }\n    if ('children' in cloneColumn && Array.isArray(cloneColumn.children)) {\n      cloneColumn.children = fillSlots(cloneColumn.children, contextSlots);\n    }\n\n    return cloneColumn;\n  });\n}\n\nexport default function useColumns<RecordType>(\n  contextSlots: Ref<ContextSlots>,\n): [TransformColumns<RecordType>] {\n  const filledColumns = (columns: ColumnsType<RecordType>) => fillSlots(columns, contextSlots);\n\n  return [filledColumns];\n}\n"
  },
  {
    "path": "components/table/hooks/useFilter/FilterDropdown.tsx",
    "content": "import FilterFilled from '@ant-design/icons-vue/FilterFilled';\nimport Button from '../../../button';\nimport Menu from '../../../menu';\nimport Checkbox from '../../../checkbox';\nimport Radio from '../../../radio';\nimport Dropdown from '../../../dropdown';\nimport Empty from '../../../empty';\nimport type {\n  ColumnType,\n  ColumnFilterItem,\n  Key,\n  TableLocale,\n  GetPopupContainer,\n  FilterSearchType,\n} from '../../interface';\nimport FilterDropdownMenuWrapper from './FilterWrapper';\nimport type { FilterState } from '.';\nimport { flattenKeys } from '.';\nimport { computed, defineComponent, onBeforeUnmount, shallowRef, watch } from 'vue';\nimport classNames from '../../../_util/classNames';\nimport useConfigInject from '../../../config-provider/hooks/useConfigInject';\nimport { useInjectSlots } from '../../context';\nimport type { DataNode, EventDataNode } from '../../../tree';\nimport type { EventHandler } from '../../../_util/EventInterface';\nimport FilterSearch from './FilterSearch';\nimport Tree from '../../../tree';\nimport type { CheckboxChangeEvent } from '../../../checkbox/interface';\nimport devWarning from '../../../vc-util/devWarning';\nimport isEqual from '../../../vc-util/isEqual';\n\ninterface FilterResetProps {\n  confirm?: boolean;\n  closeDropdown?: boolean;\n}\n\nconst { SubMenu, Item: MenuItem } = Menu;\n\nfunction hasSubMenu(filters: ColumnFilterItem[]) {\n  return filters.some(({ children }) => children && children.length > 0);\n}\n\nfunction searchValueMatched(searchValue: string, text: any) {\n  if (typeof text === 'string' || typeof text === 'number') {\n    return text?.toString().toLowerCase().includes(searchValue.trim().toLowerCase());\n  }\n  return false;\n}\n\nfunction renderFilterItems({\n  filters,\n  prefixCls,\n  filteredKeys,\n  filterMultiple,\n  searchValue,\n  filterSearch,\n}: {\n  filters: ColumnFilterItem[];\n  prefixCls: string;\n  filteredKeys: Key[];\n  filterMultiple: boolean;\n  searchValue: string;\n  filterSearch: FilterSearchType;\n}) {\n  return filters.map((filter, index) => {\n    const key = String(filter.value);\n\n    if (filter.children) {\n      return (\n        <SubMenu\n          key={key || index}\n          title={filter.text}\n          popupClassName={`${prefixCls}-dropdown-submenu`}\n        >\n          {renderFilterItems({\n            filters: filter.children,\n            prefixCls,\n            filteredKeys,\n            filterMultiple,\n            searchValue,\n            filterSearch,\n          })}\n        </SubMenu>\n      );\n    }\n\n    const Component = filterMultiple ? Checkbox : Radio;\n\n    const item = (\n      <MenuItem key={filter.value !== undefined ? key : index}>\n        <Component checked={filteredKeys.includes(key)} />\n        <span>{filter.text}</span>\n      </MenuItem>\n    );\n    if (searchValue.trim()) {\n      if (typeof filterSearch === 'function') {\n        return filterSearch(searchValue, filter) ? item : undefined;\n      }\n      return searchValueMatched(searchValue, filter.text) ? item : undefined;\n    }\n    return item;\n  });\n}\nexport type TreeColumnFilterItem = ColumnFilterItem;\nexport interface FilterDropdownProps<RecordType> {\n  tablePrefixCls: string;\n  prefixCls: string;\n  dropdownPrefixCls: string;\n  column: ColumnType<RecordType>;\n  filterState?: FilterState<RecordType>;\n  filterMultiple: boolean;\n  filterMode?: 'menu' | 'tree';\n  filterSearch?: FilterSearchType<ColumnFilterItem | TreeColumnFilterItem>;\n  columnKey: Key;\n  triggerFilter: (filterState: FilterState<RecordType>) => void;\n  locale: TableLocale;\n  getPopupContainer?: GetPopupContainer;\n  filterResetToDefaultFilteredValue?: boolean;\n}\n\nexport default defineComponent<FilterDropdownProps<any>>({\n  name: 'FilterDropdown',\n  props: [\n    'tablePrefixCls',\n    'prefixCls',\n    'dropdownPrefixCls',\n    'column',\n    'filterState',\n    'filterMultiple',\n    'filterMode',\n    'filterSearch',\n    'columnKey',\n    'triggerFilter',\n    'locale',\n    'getPopupContainer',\n  ] as any,\n  setup(props, { slots }) {\n    const contextSlots = useInjectSlots();\n    const filterMode = computed(() => props.filterMode ?? 'menu');\n    const filterSearch = computed(() => props.filterSearch ?? false);\n    const filterDropdownOpen = computed(\n      () => props.column.filterDropdownOpen || props.column.filterDropdownVisible,\n    );\n    const onFilterDropdownOpenChange = computed(\n      () => props.column.onFilterDropdownOpenChange || props.column.onFilterDropdownVisibleChange,\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      [\n        ['filterDropdownVisible', 'filterDropdownOpen', props.column.filterDropdownVisible],\n        [\n          'onFilterDropdownVisibleChange',\n          'onFilterDropdownOpenChange',\n          props.column.onFilterDropdownVisibleChange,\n        ],\n      ].forEach(([deprecatedName, newName, prop]) => {\n        devWarning(\n          prop === undefined || prop === null,\n          'Table',\n          `\\`${deprecatedName}\\` is deprecated. Please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n    const visible = shallowRef(false);\n    const filtered = computed(\n      () =>\n        !!(\n          props.filterState &&\n          (props.filterState.filteredKeys?.length || props.filterState.forceFiltered)\n        ),\n    );\n    const filterFlattenKeys = computed(() => flattenKeys(props.column?.filters));\n    const filterDropdownRef = computed(() => {\n      const { filterDropdown, slots = {}, customFilterDropdown } = props.column;\n      return (\n        filterDropdown ||\n        (slots.filterDropdown && contextSlots.value[slots.filterDropdown]) ||\n        (customFilterDropdown && contextSlots.value.customFilterDropdown)\n      );\n    });\n\n    const filterIconRef = computed(() => {\n      const { filterIcon, slots = {} } = props.column;\n      return (\n        filterIcon ||\n        (slots.filterIcon && contextSlots.value[slots.filterIcon]) ||\n        contextSlots.value.customFilterIcon\n      );\n    });\n\n    const triggerVisible = (newVisible: boolean) => {\n      visible.value = newVisible;\n      onFilterDropdownOpenChange.value?.(newVisible);\n    };\n\n    const mergedVisible = computed(() =>\n      typeof filterDropdownOpen.value === 'boolean' ? filterDropdownOpen.value : visible.value,\n    );\n\n    const propFilteredKeys = computed(() => props.filterState?.filteredKeys);\n\n    const filteredKeys = shallowRef([]);\n\n    const onSelectKeys = ({ selectedKeys }: { selectedKeys?: Key[] }) => {\n      filteredKeys.value = selectedKeys;\n    };\n\n    const onCheck = (keys: Key[], { node, checked }: { node: EventDataNode; checked: boolean }) => {\n      if (!props.filterMultiple) {\n        onSelectKeys({ selectedKeys: checked && node.key ? [node.key] : [] });\n      } else {\n        onSelectKeys({ selectedKeys: keys as Key[] });\n      }\n    };\n\n    watch(\n      propFilteredKeys,\n      () => {\n        if (!visible.value) {\n          return;\n        }\n        onSelectKeys({ selectedKeys: propFilteredKeys.value || [] });\n      },\n      { immediate: true },\n    );\n\n    // const expandKeys = shallowRef(filterFlattenKeys.value.slice());\n    // const onExpandChange = keys => (expandKeys.value = keys);\n    const openKeys = shallowRef([]);\n\n    const openRef = shallowRef();\n\n    const onOpenChange = (keys: string[]) => {\n      openRef.value = setTimeout(() => {\n        openKeys.value = keys;\n      });\n    };\n    const onMenuClick = () => {\n      clearTimeout(openRef.value);\n    };\n\n    onBeforeUnmount(() => {\n      clearTimeout(openRef.value);\n    });\n\n    const searchValue = shallowRef('');\n    const onSearch: EventHandler = e => {\n      const { value } = e.target;\n      searchValue.value = value;\n    };\n    // clear search value after close filter dropdown\n    watch(visible, () => {\n      if (!visible.value) {\n        searchValue.value = '';\n      }\n    });\n\n    // ======================= Submit ========================\n    const internalTriggerFilter = (keys?: Key[]) => {\n      const { column, columnKey, filterState } = props;\n      const mergedKeys = keys && keys.length ? keys : null;\n      if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) {\n        return null;\n      }\n\n      if (isEqual(mergedKeys, filterState?.filteredKeys, true)) {\n        return null;\n      }\n\n      props.triggerFilter({\n        column,\n        key: columnKey,\n        filteredKeys: mergedKeys,\n      });\n    };\n\n    const onConfirm = () => {\n      triggerVisible(false);\n      internalTriggerFilter(filteredKeys.value);\n    };\n\n    const onReset = (\n      { confirm, closeDropdown }: FilterResetProps = { confirm: false, closeDropdown: false },\n    ) => {\n      if (confirm) {\n        internalTriggerFilter([]);\n      }\n      if (closeDropdown) {\n        triggerVisible(false);\n      }\n      searchValue.value = '';\n      if (props.column.filterResetToDefaultFilteredValue) {\n        filteredKeys.value = (props.column.defaultFilteredValue || []).map(key => String(key));\n      } else {\n        filteredKeys.value = [];\n      }\n    };\n\n    const doFilter = ({ closeDropdown } = { closeDropdown: true }) => {\n      if (closeDropdown) {\n        triggerVisible(false);\n      }\n      internalTriggerFilter(filteredKeys.value);\n    };\n\n    const onVisibleChange = (newVisible: boolean) => {\n      if (newVisible && propFilteredKeys.value !== undefined) {\n        // Sync filteredKeys on appear in controlled mode (propFilteredKeys.value !== undefiend)\n        filteredKeys.value = propFilteredKeys.value || [];\n      }\n      triggerVisible(newVisible);\n\n      // Default will filter when closed\n      if (!newVisible && !filterDropdownRef.value) {\n        onConfirm();\n      }\n    };\n\n    const { direction } = useConfigInject('', props);\n\n    const onCheckAll = (e: CheckboxChangeEvent) => {\n      if (e.target.checked) {\n        const allFilterKeys = filterFlattenKeys.value;\n        filteredKeys.value = allFilterKeys;\n      } else {\n        filteredKeys.value = [];\n      }\n    };\n\n    const getTreeData = ({ filters }: { filters?: ColumnFilterItem[] }) =>\n      (filters || []).map((filter, index) => {\n        const key = String(filter.value);\n        const item: DataNode = {\n          title: filter.text,\n          key: filter.value !== undefined ? key : index,\n        };\n        if (filter.children) {\n          item.children = getTreeData({ filters: filter.children });\n        }\n        return item;\n      });\n\n    const getFilterData = (node: any): TreeColumnFilterItem => ({\n      ...node,\n      text: node.title,\n      value: node.key,\n      children: node.children?.map(item => getFilterData(item)) || [],\n    });\n\n    const treeData = computed(() => getTreeData({ filters: props.column.filters }));\n    // ======================== Style ========================\n    const dropdownMenuClass = computed(() =>\n      classNames({\n        [`${props.dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(\n          props.column.filters || [],\n        ),\n      }),\n    );\n    const getFilterComponent = () => {\n      const selectedKeys = filteredKeys.value;\n      const {\n        column,\n        locale,\n        tablePrefixCls,\n        filterMultiple,\n        dropdownPrefixCls,\n        getPopupContainer,\n        prefixCls,\n      } = props;\n      if ((column.filters || []).length === 0) {\n        return (\n          <Empty\n            image={Empty.PRESENTED_IMAGE_SIMPLE}\n            description={locale.filterEmptyText}\n            imageStyle={{\n              height: 24,\n            }}\n            style={{\n              margin: 0,\n              padding: '16px 0',\n            }}\n          />\n        );\n      }\n      if (filterMode.value === 'tree') {\n        return (\n          <>\n            <FilterSearch\n              filterSearch={filterSearch.value}\n              value={searchValue.value}\n              onChange={onSearch}\n              tablePrefixCls={tablePrefixCls}\n              locale={locale}\n            />\n            <div class={`${tablePrefixCls}-filter-dropdown-tree`}>\n              {filterMultiple ? (\n                <Checkbox\n                  class={`${tablePrefixCls}-filter-dropdown-checkall`}\n                  onChange={onCheckAll}\n                  checked={selectedKeys.length === filterFlattenKeys.value.length}\n                  indeterminate={\n                    selectedKeys.length > 0 && selectedKeys.length < filterFlattenKeys.value.length\n                  }\n                >\n                  {locale.filterCheckall}\n                </Checkbox>\n              ) : null}\n              <Tree\n                checkable\n                selectable={false}\n                blockNode\n                multiple={filterMultiple}\n                checkStrictly={!filterMultiple}\n                class={`${dropdownPrefixCls}-menu`}\n                onCheck={onCheck}\n                checkedKeys={selectedKeys}\n                selectedKeys={selectedKeys}\n                showIcon={false}\n                treeData={treeData.value}\n                autoExpandParent\n                defaultExpandAll\n                // expandedKeys={expandKeys.value as Key[]}\n                // onExpand={onExpandChange}\n                filterTreeNode={\n                  searchValue.value.trim()\n                    ? node => {\n                        if (typeof filterSearch.value === 'function') {\n                          return filterSearch.value(searchValue.value, getFilterData(node));\n                        }\n                        return searchValueMatched(searchValue.value, node.title);\n                      }\n                    : undefined\n                }\n              />\n            </div>\n          </>\n        );\n      }\n      return (\n        <>\n          <FilterSearch\n            filterSearch={filterSearch.value}\n            value={searchValue.value}\n            onChange={onSearch}\n            tablePrefixCls={tablePrefixCls}\n            locale={locale}\n          />\n          <Menu\n            multiple={filterMultiple}\n            prefixCls={`${dropdownPrefixCls}-menu`}\n            class={dropdownMenuClass.value}\n            onClick={onMenuClick}\n            onSelect={onSelectKeys}\n            onDeselect={onSelectKeys}\n            selectedKeys={selectedKeys}\n            getPopupContainer={getPopupContainer}\n            openKeys={openKeys.value}\n            onOpenChange={onOpenChange}\n            v-slots={{\n              default: () =>\n                renderFilterItems({\n                  filters: column.filters || [],\n                  filterSearch: filterSearch.value,\n                  prefixCls,\n                  filteredKeys: filteredKeys.value,\n                  filterMultiple,\n                  searchValue: searchValue.value,\n                }),\n            }}\n          ></Menu>\n        </>\n      );\n    };\n    const resetDisabled = computed(() => {\n      const selectedKeys = filteredKeys.value;\n      if (props.column.filterResetToDefaultFilteredValue) {\n        return isEqual(\n          (props.column.defaultFilteredValue || []).map(key => String(key)),\n          selectedKeys,\n          true,\n        );\n      }\n\n      return selectedKeys.length === 0;\n    });\n    return () => {\n      const { tablePrefixCls, prefixCls, column, dropdownPrefixCls, locale, getPopupContainer } =\n        props;\n\n      let dropdownContent;\n\n      if (typeof filterDropdownRef.value === 'function') {\n        dropdownContent = filterDropdownRef.value({\n          prefixCls: `${dropdownPrefixCls}-custom`,\n          setSelectedKeys: (selectedKeys: Key[]) => onSelectKeys({ selectedKeys }),\n          selectedKeys: filteredKeys.value,\n          confirm: doFilter,\n          clearFilters: onReset,\n          filters: column.filters,\n          visible: mergedVisible.value,\n          column: column.__originColumn__,\n          close: () => {\n            triggerVisible(false);\n          },\n        });\n      } else if (filterDropdownRef.value) {\n        dropdownContent = filterDropdownRef.value;\n      } else {\n        dropdownContent = (\n          <>\n            {getFilterComponent()}\n            <div class={`${prefixCls}-dropdown-btns`}>\n              <Button\n                type=\"link\"\n                size=\"small\"\n                disabled={resetDisabled.value}\n                onClick={() => onReset()}\n              >\n                {locale.filterReset}\n              </Button>\n              <Button type=\"primary\" size=\"small\" onClick={onConfirm}>\n                {locale.filterConfirm}\n              </Button>\n            </div>\n          </>\n        );\n      }\n\n      const menu = (\n        <FilterDropdownMenuWrapper class={`${prefixCls}-dropdown`}>\n          {dropdownContent}\n        </FilterDropdownMenuWrapper>\n      );\n\n      let filterIcon;\n      if (typeof filterIconRef.value === 'function') {\n        filterIcon = filterIconRef.value({\n          filtered: filtered.value,\n          column: column.__originColumn__,\n        });\n      } else if (filterIconRef.value) {\n        filterIcon = filterIconRef.value;\n      } else {\n        filterIcon = <FilterFilled />;\n      }\n\n      return (\n        <div class={`${prefixCls}-column`}>\n          <span class={`${tablePrefixCls}-column-title`}>{slots.default?.()}</span>\n          <Dropdown\n            overlay={menu}\n            trigger={['click']}\n            open={mergedVisible.value}\n            onOpenChange={onVisibleChange}\n            getPopupContainer={getPopupContainer}\n            placement={direction.value === 'rtl' ? 'bottomLeft' : 'bottomRight'}\n          >\n            <span\n              role=\"button\"\n              tabindex={-1}\n              class={classNames(`${prefixCls}-trigger`, {\n                active: filtered.value,\n              })}\n              onClick={e => {\n                e.stopPropagation();\n              }}\n            >\n              {filterIcon}\n            </span>\n          </Dropdown>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/table/hooks/useFilter/FilterSearch.tsx",
    "content": "import { defineComponent } from 'vue';\nimport SearchOutlined from '@ant-design/icons-vue/SearchOutlined';\nimport type { FilterSearchType, TableLocale } from '../../interface';\nimport Input from '../../../input';\nimport { stringType, someType, functionType, objectType } from '../../../_util/type';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'FilterSearch',\n  inheritAttrs: false,\n  props: {\n    value: stringType(),\n    onChange: functionType<(e: InputEvent) => void>(),\n    filterSearch: someType<FilterSearchType>([Boolean, Function]),\n    tablePrefixCls: stringType(),\n    locale: objectType<TableLocale>(),\n  },\n  setup(props) {\n    return () => {\n      const { value, onChange, filterSearch, tablePrefixCls, locale } = props;\n      if (!filterSearch) {\n        return null;\n      }\n      return (\n        <div class={`${tablePrefixCls}-filter-dropdown-search`}>\n          <Input\n            v-slots={{ prefix: () => <SearchOutlined /> }}\n            placeholder={locale.filterSearchPlaceholder}\n            onChange={onChange}\n            value={value}\n            // for skip min-width of input\n            htmlSize={1}\n            class={`${tablePrefixCls}-filter-dropdown-search-input`}\n          />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/table/hooks/useFilter/FilterWrapper.tsx",
    "content": "import KeyCode from '../../../_util/KeyCode';\nimport type { KeyboardEventHandler } from '../../../_util/EventInterface';\n\nconst onKeyDown: KeyboardEventHandler = event => {\n  const { keyCode } = event;\n  if (keyCode === KeyCode.ENTER) {\n    event.stopPropagation();\n  }\n};\nconst FilterDropdownMenuWrapper = (_props, { slots }) => (\n  <div onClick={e => e.stopPropagation()} onKeydown={onKeyDown}>\n    {slots.default?.()}\n  </div>\n);\n\nexport default FilterDropdownMenuWrapper;\n"
  },
  {
    "path": "components/table/hooks/useFilter/index.tsx",
    "content": "import type { DefaultRecordType } from '../../../vc-table/interface';\nimport devWarning from '../../../vc-util/devWarning';\nimport useState from '../../../_util/hooks/useState';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type {\n  TransformColumns,\n  ColumnsType,\n  ColumnType,\n  ColumnTitleProps,\n  Key,\n  TableLocale,\n  FilterValue,\n  FilterKey,\n  GetPopupContainer,\n  ColumnFilterItem,\n} from '../../interface';\nimport { getColumnPos, renderColumnTitle, getColumnKey } from '../../util';\nimport FilterDropdown from './FilterDropdown';\n\nexport interface FilterState<RecordType = DefaultRecordType> {\n  column: ColumnType<RecordType>;\n  key: Key;\n  filteredKeys?: FilterKey;\n  forceFiltered?: boolean;\n}\n\nfunction collectFilterStates<RecordType>(\n  columns: ColumnsType<RecordType>,\n  init: boolean,\n  pos?: string,\n): FilterState<RecordType>[] {\n  let filterStates: FilterState<RecordType>[] = [];\n\n  (columns || []).forEach((column, index) => {\n    const columnPos = getColumnPos(index, pos);\n    const hasFilterDropdown =\n      column.filterDropdown || column?.slots?.filterDropdown || column.customFilterDropdown;\n    if (column.filters || hasFilterDropdown || 'onFilter' in column) {\n      if ('filteredValue' in column) {\n        // Controlled\n        let filteredValues = column.filteredValue;\n        if (!hasFilterDropdown) {\n          filteredValues = filteredValues?.map(String) ?? filteredValues;\n        }\n        filterStates.push({\n          column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: filteredValues as FilterKey,\n          forceFiltered: column.filtered,\n        });\n      } else {\n        // Uncontrolled\n        filterStates.push({\n          column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: (init && column.defaultFilteredValue\n            ? column.defaultFilteredValue!\n            : undefined) as FilterKey,\n          forceFiltered: column.filtered,\n        });\n      }\n    }\n    if ('children' in column) {\n      filterStates = [...filterStates, ...collectFilterStates(column.children, init, columnPos)];\n    }\n  });\n\n  return filterStates;\n}\n\nfunction injectFilter<RecordType>(\n  prefixCls: string,\n  dropdownPrefixCls: string,\n  columns: ColumnsType<RecordType>,\n  filterStates: FilterState<RecordType>[],\n  locale: TableLocale,\n  triggerFilter: (filterState: FilterState<RecordType>) => void,\n  getPopupContainer?: GetPopupContainer | undefined,\n  pos?: string,\n): ColumnsType<RecordType> {\n  return columns.map((column, index) => {\n    const columnPos = getColumnPos(index, pos);\n    const { filterMultiple = true, filterMode, filterSearch } = column as ColumnType<RecordType>;\n\n    let newColumn: ColumnsType<RecordType>[number] = column;\n    const hasFilterDropdown =\n      column.filterDropdown || column?.slots?.filterDropdown || column.customFilterDropdown;\n    if (newColumn.filters || hasFilterDropdown) {\n      const columnKey = getColumnKey(newColumn, columnPos);\n      const filterState = filterStates.find(({ key }) => columnKey === key);\n\n      newColumn = {\n        ...newColumn,\n        title: (renderProps: ColumnTitleProps<RecordType>) => (\n          <FilterDropdown\n            tablePrefixCls={prefixCls}\n            prefixCls={`${prefixCls}-filter`}\n            dropdownPrefixCls={dropdownPrefixCls}\n            column={newColumn}\n            columnKey={columnKey}\n            filterState={filterState}\n            filterMultiple={filterMultiple}\n            filterMode={filterMode}\n            filterSearch={filterSearch}\n            triggerFilter={triggerFilter}\n            locale={locale}\n            getPopupContainer={getPopupContainer}\n          >\n            {renderColumnTitle(column.title, renderProps)}\n          </FilterDropdown>\n        ),\n      };\n    }\n\n    if ('children' in newColumn) {\n      newColumn = {\n        ...newColumn,\n        children: injectFilter(\n          prefixCls,\n          dropdownPrefixCls,\n          newColumn.children,\n          filterStates,\n          locale,\n          triggerFilter,\n          getPopupContainer,\n          columnPos,\n        ),\n      };\n    }\n\n    return newColumn;\n  });\n}\n\nexport function flattenKeys(filters?: ColumnFilterItem[]) {\n  let keys: FilterValue = [];\n  (filters || []).forEach(({ value, children }) => {\n    keys.push(value);\n    if (children) {\n      keys = [...keys, ...flattenKeys(children)];\n    }\n  });\n  return keys;\n}\n\nfunction generateFilterInfo<RecordType>(filterStates: FilterState<RecordType>[]) {\n  const currentFilters: Record<string, FilterValue | null> = {};\n\n  filterStates.forEach(({ key, filteredKeys, column }) => {\n    const hasFilterDropdown =\n      column.filterDropdown || column?.slots?.filterDropdown || column.customFilterDropdown;\n    const { filters } = column;\n    if (hasFilterDropdown) {\n      currentFilters[key] = filteredKeys || null;\n    } else if (Array.isArray(filteredKeys)) {\n      const keys = flattenKeys(filters);\n      currentFilters[key] = keys.filter(originKey => filteredKeys.includes(String(originKey)));\n    } else {\n      currentFilters[key] = null;\n    }\n  });\n\n  return currentFilters;\n}\n\nexport function getFilterData<RecordType>(\n  data: RecordType[],\n  filterStates: FilterState<RecordType>[],\n) {\n  return filterStates.reduce((currentData, filterState) => {\n    const {\n      column: { onFilter, filters },\n      filteredKeys,\n    } = filterState;\n    if (onFilter && filteredKeys && filteredKeys.length) {\n      return currentData.filter(record =>\n        filteredKeys.some(key => {\n          const keys = flattenKeys(filters);\n          const keyIndex = keys.findIndex(k => String(k) === String(key));\n          const realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n          return onFilter(realKey, record);\n        }),\n      );\n    }\n    return currentData;\n  }, data);\n}\n\nfunction getMergedColumns<RecordType>(\n  rawMergedColumns: ColumnsType<RecordType>,\n): ColumnsType<RecordType> {\n  return rawMergedColumns.flatMap(column => {\n    if ('children' in column) {\n      return [column, ...getMergedColumns(column.children || [])];\n    }\n    return [column];\n  });\n}\n\ninterface FilterConfig<RecordType> {\n  prefixCls: Ref<string>;\n  dropdownPrefixCls: Ref<string>;\n  mergedColumns: Ref<ColumnsType<RecordType>>;\n  locale: Ref<TableLocale>;\n  onFilterChange: (\n    filters: Record<string, FilterValue | null>,\n    filterStates: FilterState<RecordType>[],\n  ) => void;\n  getPopupContainer?: Ref<GetPopupContainer>;\n}\n\nfunction useFilter<RecordType>({\n  prefixCls,\n  dropdownPrefixCls,\n  mergedColumns: rawMergedColumns,\n  locale,\n  onFilterChange,\n  getPopupContainer,\n}: FilterConfig<RecordType>): [\n  TransformColumns<RecordType>,\n  Ref<FilterState<RecordType>[]>,\n  Ref<Record<string, FilterValue | null>>,\n] {\n  const mergedColumns = computed(() => getMergedColumns(rawMergedColumns.value));\n\n  const [filterStates, setFilterStates] = useState<FilterState<RecordType>[]>(\n    collectFilterStates(mergedColumns.value, true),\n  );\n\n  const mergedFilterStates = computed(() => {\n    const collectedStates = collectFilterStates(mergedColumns.value, false);\n    if (collectedStates.length === 0) {\n      return collectedStates;\n    }\n    let filteredKeysIsAllNotControlled = true;\n    let filteredKeysIsAllControlled = true;\n    collectedStates.forEach(({ filteredKeys }) => {\n      if (filteredKeys !== undefined) {\n        filteredKeysIsAllNotControlled = false;\n      } else {\n        filteredKeysIsAllControlled = false;\n      }\n    });\n\n    // Return if not controlled\n    if (filteredKeysIsAllNotControlled) {\n      // Filter column may have been removed\n      const keyList = (mergedColumns.value || []).map((column, index) =>\n        getColumnKey(column, getColumnPos(index)),\n      );\n      return filterStates.value\n        .filter(({ key }) => keyList.includes(key))\n        .map(item => {\n          const col = mergedColumns.value[keyList.findIndex(key => key === item.key)];\n          return {\n            ...item,\n            column: {\n              ...item.column,\n              ...col,\n            },\n            forceFiltered: col.filtered,\n          };\n        });\n    }\n\n    devWarning(\n      filteredKeysIsAllControlled,\n      'Table',\n      'Columns should all contain `filteredValue` or not contain `filteredValue`.',\n    );\n\n    return collectedStates;\n  });\n\n  const filters = computed(() => generateFilterInfo(mergedFilterStates.value));\n\n  const triggerFilter = (filterState: FilterState<RecordType>) => {\n    const newFilterStates = mergedFilterStates.value.filter(({ key }) => key !== filterState.key);\n    newFilterStates.push(filterState);\n    setFilterStates(newFilterStates);\n    onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n  };\n\n  const transformColumns = (innerColumns: ColumnsType<RecordType>) => {\n    return injectFilter(\n      prefixCls.value,\n      dropdownPrefixCls.value,\n      innerColumns,\n      mergedFilterStates.value,\n      locale.value,\n      triggerFilter,\n      getPopupContainer.value,\n    );\n  };\n  return [transformColumns, mergedFilterStates, filters];\n}\n\nexport default useFilter;\n"
  },
  {
    "path": "components/table/hooks/useLazyKVMap.ts",
    "content": "import type { Ref } from 'vue';\nimport { watch, shallowRef } from 'vue';\nimport type { Key, GetRowKey } from '../interface';\n\ninterface MapCache<RecordType> {\n  kvMap?: Map<Key, RecordType>;\n}\n\nexport default function useLazyKVMap<RecordType>(\n  dataRef: Ref<readonly RecordType[]>,\n  childrenColumnNameRef: Ref<string>,\n  getRowKeyRef: Ref<GetRowKey<RecordType>>,\n) {\n  const mapCacheRef = shallowRef<MapCache<RecordType>>({});\n\n  watch(\n    [dataRef, childrenColumnNameRef, getRowKeyRef],\n    () => {\n      const kvMap = new Map<Key, RecordType>();\n      const getRowKey = getRowKeyRef.value;\n      const childrenColumnName = childrenColumnNameRef.value;\n      /* eslint-disable no-inner-declarations */\n      function dig(records: readonly RecordType[]) {\n        records.forEach((record, index) => {\n          const rowKey = getRowKey(record, index);\n          kvMap.set(rowKey, record);\n\n          if (record && typeof record === 'object' && childrenColumnName in record) {\n            dig((record as any)[childrenColumnName] || []);\n          }\n        });\n      }\n      /* eslint-enable */\n\n      dig(dataRef.value);\n\n      mapCacheRef.value = {\n        kvMap,\n      };\n    },\n    {\n      deep: true,\n      immediate: true,\n    },\n  );\n  function getRecordByKey(key: Key): RecordType {\n    return mapCacheRef.value.kvMap!.get(key)!;\n  }\n\n  return [getRecordByKey];\n}\n"
  },
  {
    "path": "components/table/hooks/usePagination.ts",
    "content": "import useState from '../../_util/hooks/useState';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { PaginationProps } from '../../pagination';\nimport type { TablePaginationConfig } from '../interface';\nimport extendsObject from '../../_util/extendsObject';\n\nexport const DEFAULT_PAGE_SIZE = 10;\n\nexport function getPaginationParam(\n  mergedPagination: TablePaginationConfig,\n  pagination: TablePaginationConfig | boolean | undefined,\n) {\n  const param: any = {\n    current: mergedPagination.current,\n    pageSize: mergedPagination.pageSize,\n  };\n  const paginationObj = pagination && typeof pagination === 'object' ? pagination : {};\n\n  Object.keys(paginationObj).forEach(pageProp => {\n    const value = (mergedPagination as any)[pageProp];\n\n    if (typeof value !== 'function') {\n      param[pageProp] = value;\n    }\n  });\n\n  return param;\n}\n\nexport default function usePagination(\n  totalRef: Ref<number>,\n  paginationRef: Ref<TablePaginationConfig | false | undefined>,\n  onChange: (current: number, pageSize: number) => void,\n): [Ref<TablePaginationConfig>, () => void] {\n  const pagination = computed(() =>\n    paginationRef.value && typeof paginationRef.value === 'object' ? paginationRef.value : {},\n  );\n  const paginationTotal = computed(() => pagination.value.total || 0);\n  const [innerPagination, setInnerPagination] = useState<{\n    current?: number;\n    pageSize?: number;\n  }>(() => ({\n    current: 'defaultCurrent' in pagination.value ? pagination.value.defaultCurrent : 1,\n    pageSize:\n      'defaultPageSize' in pagination.value ? pagination.value.defaultPageSize : DEFAULT_PAGE_SIZE,\n  }));\n\n  // ============ Basic Pagination Config ============\n  const mergedPagination = computed(() => {\n    const mP = extendsObject<Partial<TablePaginationConfig>>(\n      innerPagination.value,\n      pagination.value,\n      {\n        total: paginationTotal.value > 0 ? paginationTotal.value : totalRef.value,\n      },\n    );\n    // Reset `current` if data length or pageSize changed\n    const maxPage = Math.ceil((paginationTotal.value || totalRef.value) / mP.pageSize!);\n    if (mP.current! > maxPage) {\n      // Prevent a maximum page count of 0\n      mP.current = maxPage || 1;\n    }\n    return mP;\n  });\n\n  const refreshPagination = (current?: number, pageSize?: number) => {\n    if (paginationRef.value === false) return;\n    setInnerPagination({\n      current: current ?? 1,\n      pageSize: pageSize || mergedPagination.value.pageSize,\n    });\n  };\n\n  const onInternalChange: PaginationProps['onChange'] = (current, pageSize) => {\n    if (paginationRef.value) {\n      pagination.value.onChange?.(current, pageSize);\n    }\n    refreshPagination(current, pageSize);\n    onChange(current, pageSize || mergedPagination.value.pageSize);\n  };\n\n  return [\n    computed(() => {\n      return paginationRef.value === false\n        ? {}\n        : { ...mergedPagination.value, onChange: onInternalChange };\n    }),\n    refreshPagination,\n  ];\n}\n"
  },
  {
    "path": "components/table/hooks/useSelection.tsx",
    "content": "import DownOutlined from '@ant-design/icons-vue/DownOutlined';\nimport type { DataNode } from '../../tree';\nimport { INTERNAL_COL_DEFINE } from '../../vc-table';\nimport type { FixedType } from '../../vc-table/interface';\nimport type { GetCheckDisabled } from '../../vc-tree/interface';\nimport { arrAdd, arrDel } from '../../vc-tree/util';\nimport { conductCheck } from '../../vc-tree/utils/conductUtil';\nimport { convertDataToEntities } from '../../vc-tree/utils/treeUtil';\nimport devWarning from '../../vc-util/devWarning';\nimport useMergedState from '../../_util/hooks/useMergedState';\nimport useState from '../../_util/hooks/useState';\nimport type { Ref } from 'vue';\nimport { watchEffect, computed, shallowRef } from 'vue';\nimport type { CheckboxProps } from '../../checkbox';\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Menu from '../../menu';\nimport Radio from '../../radio';\nimport type {\n  TableRowSelection,\n  Key,\n  ColumnsType,\n  ColumnType,\n  GetRowKey,\n  TableLocale,\n  SelectionItem,\n  TransformColumns,\n  ExpandType,\n  GetPopupContainer,\n} from '../interface';\nimport useMaxLevel from '../../vc-tree/useMaxLevel';\n\n// TODO: warning if use ajax!!!\n\nexport const SELECTION_COLUMN = {} as const;\nexport const SELECTION_ALL = 'SELECT_ALL' as const;\nexport const SELECTION_INVERT = 'SELECT_INVERT' as const;\nexport const SELECTION_NONE = 'SELECT_NONE' as const;\nconst EMPTY_LIST: Key[] = [];\ninterface UseSelectionConfig<RecordType> {\n  prefixCls: Ref<string>;\n  pageData: Ref<RecordType[]>;\n  data: Ref<RecordType[]>;\n  getRowKey: Ref<GetRowKey<RecordType>>;\n  getRecordByKey: (key: Key) => RecordType;\n  expandType: Ref<ExpandType>;\n  childrenColumnName: Ref<string>;\n  locale: Ref<TableLocale>;\n  getPopupContainer?: Ref<GetPopupContainer>;\n}\n\nexport type INTERNAL_SELECTION_ITEM =\n  | SelectionItem\n  | typeof SELECTION_ALL\n  | typeof SELECTION_INVERT\n  | typeof SELECTION_NONE;\n\nfunction flattenData<RecordType>(childrenColumnName: string, data: RecordType[]): RecordType[] {\n  let list: RecordType[] = [];\n  (data || []).forEach(record => {\n    list.push(record);\n\n    if (record && typeof record === 'object' && childrenColumnName in record) {\n      list = [\n        ...list,\n        ...flattenData<RecordType>(childrenColumnName, (record as any)[childrenColumnName]),\n      ];\n    }\n  });\n\n  return list;\n}\n\nexport default function useSelection<RecordType>(\n  rowSelectionRef: Ref<TableRowSelection<RecordType> | undefined>,\n  configRef: UseSelectionConfig<RecordType>,\n): [TransformColumns<RecordType>, Ref<Set<Key>>] {\n  const mergedRowSelection = computed(() => {\n    const temp = rowSelectionRef.value || {};\n    const { checkStrictly = true } = temp;\n    return { ...temp, checkStrictly };\n  });\n\n  // ========================= Keys =========================\n  const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(\n    mergedRowSelection.value.selectedRowKeys ||\n      mergedRowSelection.value.defaultSelectedRowKeys ||\n      EMPTY_LIST,\n    {\n      value: computed(() => mergedRowSelection.value.selectedRowKeys),\n    },\n  );\n\n  // ======================== Caches ========================\n  const preserveRecordsRef = shallowRef(new Map<Key, RecordType>());\n\n  const updatePreserveRecordsCache = (keys: Key[]) => {\n    if (mergedRowSelection.value.preserveSelectedRowKeys) {\n      const newCache = new Map<Key, RecordType>();\n      // Keep key if mark as preserveSelectedRowKeys\n      keys.forEach(key => {\n        let record = configRef.getRecordByKey(key);\n\n        if (!record && preserveRecordsRef.value.has(key)) {\n          record = preserveRecordsRef.value.get(key)!;\n        }\n\n        newCache.set(key, record);\n      });\n      // Refresh to new cache\n      preserveRecordsRef.value = newCache;\n    }\n  };\n\n  watchEffect(() => {\n    updatePreserveRecordsCache(mergedSelectedKeys.value);\n  });\n\n  const keyEntities = computed(() =>\n    mergedRowSelection.value.checkStrictly\n      ? null\n      : convertDataToEntities(configRef.data.value as unknown as DataNode[], {\n          externalGetKey: configRef.getRowKey.value as any,\n          childrenPropName: configRef.childrenColumnName.value,\n        }).keyEntities,\n  );\n\n  // Get flatten data\n  const flattedData = computed(() =>\n    flattenData(configRef.childrenColumnName.value, configRef.pageData.value),\n  );\n\n  // Get all checkbox props\n  const checkboxPropsMap = computed(() => {\n    const map = new Map<Key, Partial<CheckboxProps>>();\n    const getRowKey = configRef.getRowKey.value;\n    const getCheckboxProps = mergedRowSelection.value.getCheckboxProps;\n    flattedData.value.forEach((record, index) => {\n      const key = getRowKey(record, index);\n      const checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n      map.set(key, checkboxProps);\n\n      if (\n        process.env.NODE_ENV !== 'production' &&\n        ('checked' in checkboxProps || 'defaultChecked' in checkboxProps)\n      ) {\n        devWarning(\n          false,\n          'Table',\n          'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.',\n        );\n      }\n    });\n    return map;\n  });\n  const { maxLevel, levelEntities } = useMaxLevel(keyEntities);\n  const isCheckboxDisabled: GetCheckDisabled<RecordType> = (r: RecordType) =>\n    !!checkboxPropsMap.value.get(configRef.getRowKey.value(r))?.disabled;\n\n  const selectKeysState = computed(() => {\n    if (mergedRowSelection.value.checkStrictly) {\n      return [mergedSelectedKeys.value || [], []];\n    }\n    const { checkedKeys, halfCheckedKeys } = conductCheck(\n      mergedSelectedKeys.value,\n      true,\n      keyEntities.value,\n      maxLevel.value,\n      levelEntities.value,\n      isCheckboxDisabled as any,\n    );\n    return [checkedKeys || [], halfCheckedKeys];\n  });\n\n  const derivedSelectedKeys = computed(() => selectKeysState.value[0]);\n  const derivedHalfSelectedKeys = computed(() => selectKeysState.value[1]);\n\n  const derivedSelectedKeySet = computed<Set<Key>>(() => {\n    const keys =\n      mergedRowSelection.value.type === 'radio'\n        ? derivedSelectedKeys.value.slice(0, 1)\n        : derivedSelectedKeys.value;\n    return new Set(keys);\n  });\n  const derivedHalfSelectedKeySet = computed(() =>\n    mergedRowSelection.value.type === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys.value),\n  );\n\n  // Save last selected key to enable range selection\n  const [lastSelectedKey, setLastSelectedKey] = useState<Key | null>(null);\n\n  // // Reset if rowSelection reset\n  // we use computed to reset, donot need setMergedSelectedKeys again like react\n  // https://github.com/vueComponent/ant-design-vue/issues/4885\n  // watchEffect(() => {\n  //   if (!rowSelectionRef.value) {\n  //     setMergedSelectedKeys([]);\n  //   }\n  // });\n\n  const setSelectedKeys = (keys: Key[]) => {\n    let availableKeys: Key[];\n    let records: RecordType[];\n    updatePreserveRecordsCache(keys);\n    const { preserveSelectedRowKeys, onChange: onSelectionChange } = mergedRowSelection.value;\n    const { getRecordByKey } = configRef;\n    if (preserveSelectedRowKeys) {\n      availableKeys = keys;\n      records = keys.map(key => preserveRecordsRef.value.get(key)!);\n    } else {\n      // Filter key which not exist in the `dataSource`\n      availableKeys = [];\n      records = [];\n\n      keys.forEach(key => {\n        const record = getRecordByKey(key);\n        if (record !== undefined) {\n          availableKeys.push(key);\n          records.push(record);\n        }\n      });\n    }\n\n    setMergedSelectedKeys(availableKeys);\n\n    onSelectionChange?.(availableKeys, records);\n  };\n\n  // ====================== Selections ======================\n  // Trigger single `onSelect` event\n  const triggerSingleSelection = (key: Key, selected: boolean, keys: Key[], event: Event) => {\n    const { onSelect } = mergedRowSelection.value;\n    const { getRecordByKey } = configRef || {};\n    if (onSelect) {\n      const rows = keys.map(k => getRecordByKey(k));\n      onSelect(getRecordByKey(key), selected, rows, event);\n    }\n\n    setSelectedKeys(keys);\n  };\n\n  const mergedSelections = computed(() => {\n    const { onSelectInvert, onSelectNone, selections, hideSelectAll } = mergedRowSelection.value;\n\n    const { data, pageData, getRowKey, locale: tableLocale } = configRef;\n\n    if (!selections || hideSelectAll) {\n      return null;\n    }\n\n    const selectionList: INTERNAL_SELECTION_ITEM[] =\n      selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n\n    return selectionList.map((selection: INTERNAL_SELECTION_ITEM) => {\n      if (selection === SELECTION_ALL) {\n        return {\n          key: 'all',\n          text: tableLocale.value.selectionAll,\n          onSelect() {\n            setSelectedKeys(\n              data.value\n                .map((record, index) => getRowKey.value(record, index))\n                .filter(key => {\n                  const checkProps = checkboxPropsMap.value.get(key);\n                  return !checkProps?.disabled || derivedSelectedKeySet.value.has(key);\n                }),\n            );\n          },\n        };\n      }\n      if (selection === SELECTION_INVERT) {\n        return {\n          key: 'invert',\n          text: tableLocale.value.selectInvert,\n          onSelect() {\n            const keySet = new Set(derivedSelectedKeySet.value);\n            pageData.value.forEach((record, index) => {\n              const key = getRowKey.value(record, index);\n              const checkProps = checkboxPropsMap.value.get(key);\n              if (!checkProps?.disabled) {\n                if (keySet.has(key)) {\n                  keySet.delete(key);\n                } else {\n                  keySet.add(key);\n                }\n              }\n            });\n\n            const keys = Array.from(keySet);\n            if (onSelectInvert) {\n              devWarning(\n                false,\n                'Table',\n                '`onSelectInvert` will be removed in future. Please use `onChange` instead.',\n              );\n              onSelectInvert(keys);\n            }\n\n            setSelectedKeys(keys);\n          },\n        };\n      }\n      if (selection === SELECTION_NONE) {\n        return {\n          key: 'none',\n          text: tableLocale.value.selectNone,\n          onSelect() {\n            onSelectNone?.();\n            setSelectedKeys(\n              Array.from(derivedSelectedKeySet.value).filter(key => {\n                const checkProps = checkboxPropsMap.value.get(key);\n                return checkProps?.disabled;\n              }),\n            );\n          },\n        };\n      }\n      return selection as SelectionItem;\n    });\n  });\n  const flattedDataLength = computed(() => flattedData.value.length);\n  // ======================= Columns ========================\n  const transformColumns = (columns: ColumnsType<RecordType>): ColumnsType<RecordType> => {\n    const {\n      onSelectAll,\n      onSelectMultiple,\n      columnWidth: selectionColWidth,\n      type: selectionType,\n      fixed,\n      renderCell: customizeRenderCell,\n      hideSelectAll,\n      checkStrictly,\n    } = mergedRowSelection.value;\n\n    const { prefixCls, getRecordByKey, getRowKey, expandType, getPopupContainer } = configRef;\n    if (!rowSelectionRef.value) {\n      if (process.env.NODE_ENV !== 'production') {\n        devWarning(\n          !columns.includes(SELECTION_COLUMN),\n          'Table',\n          '`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`.',\n        );\n      }\n\n      return columns.filter(col => col !== SELECTION_COLUMN);\n    }\n\n    // Support selection\n    let cloneColumns = columns.slice();\n    const keySet = new Set(derivedSelectedKeySet.value);\n\n    // Record key only need check with enabled\n    const recordKeys = flattedData.value\n      .map(getRowKey.value)\n      .filter(key => !checkboxPropsMap.value.get(key)!.disabled);\n    const checkedCurrentAll = recordKeys.every(key => keySet.has(key));\n    const checkedCurrentSome = recordKeys.some(key => keySet.has(key));\n\n    const onSelectAllChange = () => {\n      const changeKeys: Key[] = [];\n\n      if (checkedCurrentAll) {\n        recordKeys.forEach(key => {\n          keySet.delete(key);\n          changeKeys.push(key);\n        });\n      } else {\n        recordKeys.forEach(key => {\n          if (!keySet.has(key)) {\n            keySet.add(key);\n            changeKeys.push(key);\n          }\n        });\n      }\n\n      const keys = Array.from(keySet);\n\n      onSelectAll?.(\n        !checkedCurrentAll,\n        keys.map(k => getRecordByKey(k)),\n        changeKeys.map(k => getRecordByKey(k)),\n      );\n\n      setSelectedKeys(keys);\n    };\n\n    // ===================== Render =====================\n    // Title Cell\n    let title;\n    if (selectionType !== 'radio') {\n      let customizeSelections;\n      if (mergedSelections.value) {\n        const menu = (\n          <Menu getPopupContainer={getPopupContainer.value}>\n            {mergedSelections.value.map((selection, index) => {\n              const { key, text, onSelect: onSelectionClick } = selection;\n              return (\n                <Menu.Item\n                  key={key || index}\n                  onClick={() => {\n                    onSelectionClick?.(recordKeys);\n                  }}\n                >\n                  {text}\n                </Menu.Item>\n              );\n            })}\n          </Menu>\n        );\n        customizeSelections = (\n          <div class={`${prefixCls.value}-selection-extra`}>\n            <Dropdown overlay={menu} getPopupContainer={getPopupContainer.value}>\n              <span>\n                <DownOutlined />\n              </span>\n            </Dropdown>\n          </div>\n        );\n      }\n\n      const allDisabledData = flattedData.value\n        .map((record, index) => {\n          const key = getRowKey.value(record, index);\n          const checkboxProps = checkboxPropsMap.value.get(key) || {};\n          return { checked: keySet.has(key), ...checkboxProps };\n        })\n        .filter(({ disabled }) => disabled);\n\n      const allDisabled =\n        !!allDisabledData.length && allDisabledData.length === flattedDataLength.value;\n\n      const allDisabledAndChecked = allDisabled && allDisabledData.every(({ checked }) => checked);\n      const allDisabledSomeChecked = allDisabled && allDisabledData.some(({ checked }) => checked);\n\n      title = !hideSelectAll && (\n        <div class={`${prefixCls.value}-selection`}>\n          <Checkbox\n            checked={\n              !allDisabled ? !!flattedDataLength.value && checkedCurrentAll : allDisabledAndChecked\n            }\n            indeterminate={\n              !allDisabled\n                ? !checkedCurrentAll && checkedCurrentSome\n                : !allDisabledAndChecked && allDisabledSomeChecked\n            }\n            onChange={onSelectAllChange}\n            disabled={flattedDataLength.value === 0 || allDisabled}\n            aria-label={customizeSelections ? 'Custom selection' : 'Select all'}\n            skipGroup\n          />\n          {customizeSelections}\n        </div>\n      );\n    }\n\n    // Body Cell\n    let renderCell: ({ record, index }: { record: RecordType; index: number }) => {\n      node: any;\n      checked: boolean;\n    };\n    if (selectionType === 'radio') {\n      renderCell = ({ record, index }) => {\n        const key = getRowKey.value(record, index);\n        const checked = keySet.has(key);\n\n        return {\n          node: (\n            <Radio\n              {...checkboxPropsMap.value.get(key)}\n              checked={checked}\n              onClick={e => e.stopPropagation()}\n              onChange={event => {\n                if (!keySet.has(key)) {\n                  triggerSingleSelection(key, true, [key], event.nativeEvent);\n                }\n              }}\n            />\n          ),\n          checked,\n        };\n      };\n    } else {\n      renderCell = ({ record, index }) => {\n        const key = getRowKey.value(record, index);\n        const checked = keySet.has(key);\n        const indeterminate = derivedHalfSelectedKeySet.value.has(key);\n        const checkboxProps = checkboxPropsMap.value.get(key);\n        let mergedIndeterminate: boolean;\n        if (expandType.value === 'nest') {\n          mergedIndeterminate = indeterminate;\n          devWarning(\n            typeof checkboxProps?.indeterminate !== 'boolean',\n            'Table',\n            'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.',\n          );\n        } else {\n          mergedIndeterminate = checkboxProps?.indeterminate ?? indeterminate;\n        }\n        // Record checked\n        return {\n          node: (\n            <Checkbox\n              {...checkboxProps}\n              indeterminate={mergedIndeterminate}\n              checked={checked}\n              skipGroup\n              onClick={e => e.stopPropagation()}\n              onChange={({ nativeEvent }) => {\n                const { shiftKey } = nativeEvent;\n\n                let startIndex = -1;\n                let endIndex = -1;\n\n                // Get range of this\n                if (shiftKey && checkStrictly) {\n                  const pointKeys = new Set([lastSelectedKey.value, key]);\n\n                  recordKeys.some((recordKey, recordIndex) => {\n                    if (pointKeys.has(recordKey)) {\n                      if (startIndex === -1) {\n                        startIndex = recordIndex;\n                      } else {\n                        endIndex = recordIndex;\n                        return true;\n                      }\n                    }\n\n                    return false;\n                  });\n                }\n\n                if (endIndex !== -1 && startIndex !== endIndex && checkStrictly) {\n                  // Batch update selections\n                  const rangeKeys = recordKeys.slice(startIndex, endIndex + 1);\n                  const changedKeys: Key[] = [];\n\n                  if (checked) {\n                    rangeKeys.forEach(recordKey => {\n                      if (keySet.has(recordKey)) {\n                        changedKeys.push(recordKey);\n                        keySet.delete(recordKey);\n                      }\n                    });\n                  } else {\n                    rangeKeys.forEach(recordKey => {\n                      if (!keySet.has(recordKey)) {\n                        changedKeys.push(recordKey);\n                        keySet.add(recordKey);\n                      }\n                    });\n                  }\n\n                  const keys = Array.from(keySet);\n                  onSelectMultiple?.(\n                    !checked,\n                    keys.map(recordKey => getRecordByKey(recordKey)),\n                    changedKeys.map(recordKey => getRecordByKey(recordKey)),\n                  );\n\n                  setSelectedKeys(keys);\n                } else {\n                  // Single record selected\n                  const originCheckedKeys = derivedSelectedKeys.value;\n                  if (checkStrictly) {\n                    const checkedKeys = checked\n                      ? arrDel(originCheckedKeys, key)\n                      : arrAdd(originCheckedKeys, key);\n                    triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n                  } else {\n                    // Always fill first\n                    const result = conductCheck(\n                      [...originCheckedKeys, key],\n                      true,\n                      keyEntities.value,\n                      maxLevel.value,\n                      levelEntities.value,\n                      isCheckboxDisabled as any,\n                    );\n                    const { checkedKeys, halfCheckedKeys } = result;\n                    let nextCheckedKeys = checkedKeys;\n\n                    // If remove, we do it again to correction\n                    if (checked) {\n                      const tempKeySet = new Set(checkedKeys);\n                      tempKeySet.delete(key);\n                      nextCheckedKeys = conductCheck(\n                        Array.from(tempKeySet),\n                        { checked: false, halfCheckedKeys },\n                        keyEntities.value,\n                        maxLevel.value,\n                        levelEntities.value,\n                        isCheckboxDisabled as any,\n                      ).checkedKeys;\n                    }\n\n                    triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n                  }\n                }\n\n                setLastSelectedKey(key);\n              }}\n            />\n          ),\n          checked,\n        };\n      };\n    }\n\n    const renderSelectionCell: ColumnType<RecordType>['customRender'] = ({ record, index }) => {\n      const { node, checked } = renderCell({ record, index });\n\n      if (customizeRenderCell) {\n        return customizeRenderCell(checked, record, index, node);\n      }\n\n      return node;\n    };\n\n    // Insert selection column if not exist\n    if (!cloneColumns.includes(SELECTION_COLUMN)) {\n      // Always after expand icon\n      if (\n        cloneColumns.findIndex(\n          (col: any) => col[INTERNAL_COL_DEFINE]?.columnType === 'EXPAND_COLUMN',\n        ) === 0\n      ) {\n        const [expandColumn, ...restColumns] = cloneColumns;\n        cloneColumns = [expandColumn, SELECTION_COLUMN, ...restColumns];\n      } else {\n        // Normal insert at first column\n        cloneColumns = [SELECTION_COLUMN, ...cloneColumns];\n      }\n    }\n\n    // Deduplicate selection column\n    const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      cloneColumns.filter(col => col === SELECTION_COLUMN).length > 1\n    ) {\n      devWarning(false, 'Table', 'Multiple `SELECTION_COLUMN` exist in `columns`.');\n    }\n    cloneColumns = cloneColumns.filter(\n      (column, index) => column !== SELECTION_COLUMN || index === selectionColumnIndex,\n    );\n\n    // Fixed column logic\n    const prevCol: ColumnType<RecordType> & Record<string, any> =\n      cloneColumns[selectionColumnIndex - 1];\n    const nextCol: ColumnType<RecordType> & Record<string, any> =\n      cloneColumns[selectionColumnIndex + 1];\n\n    let mergedFixed: FixedType | undefined = fixed;\n\n    if (mergedFixed === undefined) {\n      if (nextCol?.fixed !== undefined) {\n        mergedFixed = nextCol.fixed;\n      } else if (prevCol?.fixed !== undefined) {\n        mergedFixed = prevCol.fixed;\n      }\n    }\n\n    if (\n      mergedFixed &&\n      prevCol &&\n      prevCol[INTERNAL_COL_DEFINE]?.columnType === 'EXPAND_COLUMN' &&\n      prevCol.fixed === undefined\n    ) {\n      prevCol.fixed = mergedFixed;\n    }\n\n    // Replace with real selection column\n    const selectionColumn = {\n      fixed: mergedFixed,\n      width: selectionColWidth,\n      className: `${prefixCls.value}-selection-column`,\n      title: mergedRowSelection.value.columnTitle || title,\n      customRender: renderSelectionCell,\n      [INTERNAL_COL_DEFINE]: {\n        class: `${prefixCls.value}-selection-col`,\n      },\n    };\n\n    return cloneColumns.map(col => (col === SELECTION_COLUMN ? selectionColumn : col));\n  };\n\n  return [transformColumns, derivedSelectedKeySet];\n}\n"
  },
  {
    "path": "components/table/hooks/useSorter.tsx",
    "content": "import CaretDownOutlined from '@ant-design/icons-vue/CaretDownOutlined';\nimport CaretUpOutlined from '@ant-design/icons-vue/CaretUpOutlined';\nimport type {\n  TransformColumns,\n  ColumnsType,\n  Key,\n  ColumnType,\n  SortOrder,\n  CompareFn,\n  ColumnTitleProps,\n  SorterResult,\n  ColumnGroupType,\n  TableLocale,\n} from '../interface';\nimport type { TooltipProps } from '../../tooltip';\nimport Tooltip from '../../tooltip';\nimport { getColumnKey, getColumnPos, renderColumnTitle } from '../util';\nimport classNames from '../../_util/classNames';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport useState from '../../_util/hooks/useState';\nimport type { DefaultRecordType } from '../../vc-table/interface';\nimport KeyCode from '../../_util/KeyCode';\n\nconst ASCEND = 'ascend';\nconst DESCEND = 'descend';\n\nfunction getMultiplePriority<RecordType>(column: ColumnType<RecordType>): number | false {\n  if (typeof column.sorter === 'object' && typeof column.sorter.multiple === 'number') {\n    return column.sorter.multiple;\n  }\n  return false;\n}\n\nfunction getSortFunction<RecordType>(\n  sorter: ColumnType<RecordType>['sorter'],\n): CompareFn<RecordType> | false {\n  if (typeof sorter === 'function') {\n    return sorter;\n  }\n  if (sorter && typeof sorter === 'object' && sorter.compare) {\n    return sorter.compare;\n  }\n  return false;\n}\n\nfunction nextSortDirection(sortDirections: SortOrder[], current: SortOrder | null) {\n  if (!current) {\n    return sortDirections[0];\n  }\n\n  return sortDirections[sortDirections.indexOf(current) + 1];\n}\n\nexport interface SortState<RecordType = DefaultRecordType> {\n  column: ColumnType<RecordType>;\n  key: Key;\n  sortOrder: SortOrder | null;\n  multiplePriority: number | false;\n}\n\nfunction collectSortStates<RecordType>(\n  columns: ColumnsType<RecordType>,\n  init: boolean,\n  pos?: string,\n): SortState<RecordType>[] {\n  let sortStates: SortState<RecordType>[] = [];\n\n  function pushState(column: ColumnsType<RecordType>[number], columnPos: string) {\n    sortStates.push({\n      column,\n      key: getColumnKey(column, columnPos),\n      multiplePriority: getMultiplePriority(column),\n      sortOrder: column.sortOrder!,\n    });\n  }\n\n  (columns || []).forEach((column, index) => {\n    const columnPos = getColumnPos(index, pos);\n\n    if ((column as ColumnGroupType<RecordType>).children) {\n      if ('sortOrder' in column) {\n        // Controlled\n        pushState(column, columnPos);\n      }\n      sortStates = [\n        ...sortStates,\n        ...collectSortStates((column as ColumnGroupType<RecordType>).children, init, columnPos),\n      ];\n    } else if (column.sorter) {\n      if ('sortOrder' in column) {\n        // Controlled\n        pushState(column, columnPos);\n      } else if (init && column.defaultSortOrder) {\n        // Default sorter\n        sortStates.push({\n          column,\n          key: getColumnKey(column, columnPos),\n          multiplePriority: getMultiplePriority(column),\n          sortOrder: column.defaultSortOrder!,\n        });\n      }\n    }\n  });\n\n  return sortStates;\n}\n\nfunction injectSorter<RecordType>(\n  prefixCls: string,\n  columns: ColumnsType<RecordType>,\n  sorterStates: SortState<RecordType>[],\n  triggerSorter: (sorterStates: SortState<RecordType>) => void,\n  defaultSortDirections: SortOrder[],\n  tableLocale?: TableLocale,\n  tableShowSorterTooltip?: boolean | TooltipProps,\n  pos?: string,\n): ColumnsType<RecordType> {\n  return (columns || []).map((column, index) => {\n    const columnPos = getColumnPos(index, pos);\n    let newColumn: ColumnsType<RecordType>[number] = column;\n\n    if (newColumn.sorter) {\n      const sortDirections: SortOrder[] = newColumn.sortDirections || defaultSortDirections;\n      const showSorterTooltip =\n        newColumn.showSorterTooltip === undefined\n          ? tableShowSorterTooltip\n          : newColumn.showSorterTooltip;\n      const columnKey = getColumnKey(newColumn, columnPos);\n      const sorterState = sorterStates.find(({ key }) => key === columnKey);\n      const sorterOrder = sorterState ? sorterState.sortOrder : null;\n      const nextSortOrder = nextSortDirection(sortDirections, sorterOrder);\n      const upNode = sortDirections.includes(ASCEND) && (\n        <CaretUpOutlined\n          class={classNames(`${prefixCls}-column-sorter-up`, {\n            active: sorterOrder === ASCEND,\n          })}\n          role=\"presentation\"\n        />\n      );\n      const downNode = sortDirections.includes(DESCEND) && (\n        <CaretDownOutlined\n          role=\"presentation\"\n          class={classNames(`${prefixCls}-column-sorter-down`, {\n            active: sorterOrder === DESCEND,\n          })}\n        />\n      );\n      const { cancelSort, triggerAsc, triggerDesc } = tableLocale || {};\n      let sortTip: string | undefined = cancelSort;\n      if (nextSortOrder === DESCEND) {\n        sortTip = triggerDesc;\n      } else if (nextSortOrder === ASCEND) {\n        sortTip = triggerAsc;\n      }\n      const tooltipProps: TooltipProps =\n        typeof showSorterTooltip === 'object' ? showSorterTooltip : { title: sortTip };\n      newColumn = {\n        ...newColumn,\n        className: classNames(newColumn.className, { [`${prefixCls}-column-sort`]: sorterOrder }),\n        title: (renderProps: ColumnTitleProps<RecordType>) => {\n          const renderSortTitle = (\n            <div class={`${prefixCls}-column-sorters`}>\n              <span class={`${prefixCls}-column-title`}>\n                {renderColumnTitle(column.title, renderProps)}\n              </span>\n              <span\n                class={classNames(`${prefixCls}-column-sorter`, {\n                  [`${prefixCls}-column-sorter-full`]: !!(upNode && downNode),\n                })}\n              >\n                <span class={`${prefixCls}-column-sorter-inner`}>\n                  {upNode}\n                  {downNode}\n                </span>\n              </span>\n            </div>\n          );\n          return showSorterTooltip ? (\n            <Tooltip {...tooltipProps}>{renderSortTitle}</Tooltip>\n          ) : (\n            renderSortTitle\n          );\n        },\n        customHeaderCell: col => {\n          const cell = (column.customHeaderCell && column.customHeaderCell(col)) || {};\n          const originOnClick = cell.onClick;\n          const originOKeyDown = cell.onKeydown;\n          cell.onClick = (event: MouseEvent) => {\n            triggerSorter({\n              column,\n              key: columnKey,\n              sortOrder: nextSortOrder,\n              multiplePriority: getMultiplePriority(column),\n            });\n\n            if (originOnClick) {\n              originOnClick(event);\n            }\n          };\n          cell.onKeydown = (event: KeyboardEvent) => {\n            if (event.keyCode === KeyCode.ENTER) {\n              triggerSorter({\n                column,\n                key: columnKey,\n                sortOrder: nextSortOrder,\n                multiplePriority: getMultiplePriority(column),\n              });\n              originOKeyDown?.(event);\n            }\n          };\n\n          // Inform the screen-reader so it can tell the visually impaired user which column is sorted\n          if (sorterOrder) {\n            cell['aria-sort'] = sorterOrder === 'ascend' ? 'ascending' : 'descending';\n          }\n\n          cell.class = classNames(cell.class, `${prefixCls}-column-has-sorters`);\n          cell.tabindex = 0;\n          return cell;\n        },\n      };\n    }\n\n    if ('children' in newColumn) {\n      newColumn = {\n        ...newColumn,\n        children: injectSorter(\n          prefixCls,\n          newColumn.children,\n          sorterStates,\n          triggerSorter,\n          defaultSortDirections,\n          tableLocale,\n          tableShowSorterTooltip,\n          columnPos,\n        ),\n      };\n    }\n\n    return newColumn;\n  });\n}\n\nfunction stateToInfo<RecordType>(sorterStates: SortState<RecordType>) {\n  const { column, sortOrder } = sorterStates;\n  return { column, order: sortOrder, field: column.dataIndex, columnKey: column.key };\n}\n\nfunction generateSorterInfo<RecordType>(\n  sorterStates: SortState<RecordType>[],\n): SorterResult<RecordType> | SorterResult<RecordType>[] {\n  const list = sorterStates.filter(({ sortOrder }) => sortOrder).map(stateToInfo);\n\n  // =========== Legacy compatible support ===========\n  // https://github.com/ant-design/ant-design/pull/19226\n  if (list.length === 0 && sorterStates.length) {\n    return {\n      ...stateToInfo(sorterStates[sorterStates.length - 1]),\n      column: undefined,\n    };\n  }\n\n  if (list.length <= 1) {\n    return list[0] || {};\n  }\n\n  return list;\n}\n\nexport function getSortData<RecordType>(\n  data: readonly RecordType[],\n  sortStates: SortState<RecordType>[],\n  childrenColumnName: string,\n): RecordType[] {\n  const innerSorterStates = sortStates\n    .slice()\n    .sort((a, b) => (b.multiplePriority as number) - (a.multiplePriority as number));\n\n  const cloneData = data.slice();\n\n  const runningSorters = innerSorterStates.filter(\n    ({ column: { sorter }, sortOrder }) => getSortFunction(sorter) && sortOrder,\n  );\n\n  // Skip if no sorter needed\n  if (!runningSorters.length) {\n    return cloneData;\n  }\n\n  return cloneData\n    .sort((record1, record2) => {\n      for (let i = 0; i < runningSorters.length; i += 1) {\n        const sorterState = runningSorters[i];\n        const {\n          column: { sorter },\n          sortOrder,\n        } = sorterState;\n\n        const compareFn = getSortFunction(sorter);\n\n        if (compareFn && sortOrder) {\n          const compareResult = compareFn(record1, record2, sortOrder);\n\n          if (compareResult !== 0) {\n            return sortOrder === ASCEND ? compareResult : -compareResult;\n          }\n        }\n      }\n\n      return 0;\n    })\n    .map<RecordType>(record => {\n      const subRecords = (record as any)[childrenColumnName];\n      if (subRecords) {\n        return {\n          ...record,\n          [childrenColumnName]: getSortData(subRecords, sortStates, childrenColumnName),\n        };\n      }\n      return record;\n    });\n}\n\ninterface SorterConfig<RecordType> {\n  prefixCls: Ref<string>;\n  mergedColumns: Ref<ColumnsType<RecordType>>;\n  onSorterChange: (\n    sorterResult: SorterResult<RecordType> | SorterResult<RecordType>[],\n    sortStates: SortState<RecordType>[],\n  ) => void;\n  sortDirections: Ref<SortOrder[]>;\n  tableLocale?: Ref<TableLocale>;\n  showSorterTooltip?: Ref<boolean | TooltipProps>;\n}\n\nexport default function useFilterSorter<RecordType>({\n  prefixCls,\n  mergedColumns,\n  onSorterChange,\n  sortDirections,\n  tableLocale,\n  showSorterTooltip,\n}: SorterConfig<RecordType>): [\n  TransformColumns<RecordType>,\n  Ref<SortState<RecordType>[]>,\n  Ref<ColumnTitleProps<RecordType>>,\n  Ref<SorterResult<RecordType> | SorterResult<RecordType>[]>,\n] {\n  const [sortStates, setSortStates] = useState<SortState<RecordType>[]>(\n    collectSortStates(mergedColumns.value, true),\n  );\n\n  const mergedSorterStates = computed(() => {\n    let validate = true;\n    const collectedStates = collectSortStates(mergedColumns.value, false);\n\n    // Return if not controlled\n    if (!collectedStates.length) {\n      return sortStates.value;\n    }\n\n    const validateStates: SortState<RecordType>[] = [];\n\n    function patchStates(state: SortState<RecordType>) {\n      if (validate) {\n        validateStates.push(state);\n      } else {\n        validateStates.push({\n          ...state,\n          sortOrder: null,\n        });\n      }\n    }\n\n    let multipleMode: boolean | null = null;\n    collectedStates.forEach(state => {\n      if (multipleMode === null) {\n        patchStates(state);\n\n        if (state.sortOrder) {\n          if (state.multiplePriority === false) {\n            validate = false;\n          } else {\n            multipleMode = true;\n          }\n        }\n      } else if (multipleMode && state.multiplePriority !== false) {\n        patchStates(state);\n      } else {\n        validate = false;\n        patchStates(state);\n      }\n    });\n\n    return validateStates;\n  });\n\n  // Get render columns title required props\n  const columnTitleSorterProps = computed<ColumnTitleProps<RecordType>>(() => {\n    const sortColumns = mergedSorterStates.value.map(({ column, sortOrder }) => ({\n      column,\n      order: sortOrder,\n    }));\n\n    return {\n      sortColumns,\n      // Legacy\n      sortColumn: sortColumns[0] && sortColumns[0].column,\n      sortOrder: (sortColumns[0] && sortColumns[0].order) as SortOrder,\n    };\n  });\n\n  function triggerSorter(sortState: SortState<RecordType>) {\n    let newSorterStates;\n\n    if (\n      sortState.multiplePriority === false ||\n      !mergedSorterStates.value.length ||\n      mergedSorterStates.value[0].multiplePriority === false\n    ) {\n      newSorterStates = [sortState];\n    } else {\n      newSorterStates = [\n        ...mergedSorterStates.value.filter(({ key }) => key !== sortState.key),\n        sortState,\n      ];\n    }\n\n    setSortStates(newSorterStates);\n    onSorterChange(generateSorterInfo(newSorterStates), newSorterStates);\n  }\n\n  const transformColumns = (innerColumns: ColumnsType<RecordType>) =>\n    injectSorter(\n      prefixCls.value,\n      innerColumns,\n      mergedSorterStates.value,\n      triggerSorter,\n      sortDirections.value,\n      tableLocale.value,\n      showSorterTooltip.value,\n    );\n\n  const sorters = computed(() => generateSorterInfo(mergedSorterStates.value));\n\n  return [transformColumns, mergedSorterStates, columnTitleSorterProps, sorters];\n}\n"
  },
  {
    "path": "components/table/hooks/useTitleColumns.tsx",
    "content": "import type { Ref } from 'vue';\nimport type { TransformColumns, ColumnTitleProps, ColumnsType } from '../interface';\nimport { renderColumnTitle } from '../util';\n\nfunction fillTitle<RecordType>(\n  columns: ColumnsType<RecordType>,\n  columnTitleProps: ColumnTitleProps<RecordType>,\n) {\n  return columns.map(column => {\n    const cloneColumn = { ...column };\n\n    cloneColumn.title = renderColumnTitle(cloneColumn.title, columnTitleProps);\n\n    if ('children' in cloneColumn) {\n      cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps);\n    }\n\n    return cloneColumn;\n  });\n}\n\nexport default function useTitleColumns<RecordType>(\n  columnTitleProps: Ref<ColumnTitleProps<RecordType>>,\n): [TransformColumns<RecordType>] {\n  const filledColumns = (columns: ColumnsType<RecordType>) =>\n    fillTitle(columns, columnTitleProps.value);\n\n  return [filledColumns];\n}\n"
  },
  {
    "path": "components/table/index.en-US.md",
    "content": "---\ncategory: Components\ncols: 1\ntype: Data Display\ntitle: Table\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3yz3QqMlShYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Sv8XQ50NB40AAAAAAAAAAAAADrJ8AQ/original\n---\n\nA table displays rows of data.\n\n## When To Use\n\n- To display a collection of structured data.\n- To sort, search, paginate, filter data.\n\n## How To Use\n\nSpecify `dataSource` of Table as an array of data.\n\n```html\n<template>\n  <a-table :dataSource=\"dataSource\" :columns=\"columns\" />\n</template>\n<script>\n  export default {\n    setup() {\n      return {\n        dataSource: [\n          {\n            key: '1',\n            name: 'Mike',\n            age: 32,\n            address: '10 Downing Street',\n          },\n          {\n            key: '2',\n            name: 'John',\n            age: 42,\n            address: '10 Downing Street',\n          },\n        ],\n\n        columns: [\n          {\n            title: 'Name',\n            dataIndex: 'name',\n            key: 'name',\n          },\n          {\n            title: 'Age',\n            dataIndex: 'age',\n            key: 'age',\n          },\n          {\n            title: 'Address',\n            dataIndex: 'address',\n            key: 'address',\n          },\n        ],\n      };\n    },\n  };\n</script>\n```\n\n## API\n\n### Table\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| bodyCell | custom body cell by slot | v-slot:bodyCell=\"{text, record, index, column}\" | - | 3.0 |\n| bordered | Whether to show all table borders | boolean | `false` |  |\n| childrenColumnName | The column contains children to display | string | `children` |  |\n| columns | Columns of table [config](#column) | array | - |  |\n| components | Override default table elements | object | - |  |\n| customFilterDropdown | Customized filter overlay, need set `column.customFilterDropdown` | v-slot:customFilterDropdown=\"[FilterDropdownProps](#filterdropdownprops)\" | - | 3.0 |\n| customFilterIcon | Customized filter icon | v-slot:customFilterIcon=\"{filtered, column}\" | - | 3.0 |\n| customHeaderRow | Set props on per header row | Function(columns, index) | - |  |\n| customRow | Set props on per row | Function(record, index) | - |  |\n| dataSource | Data record array to be displayed | any\\[] | - |  |\n| defaultExpandAllRows | Expand all rows initially | boolean | `false` |  |\n| defaultExpandedRowKeys | Initial expanded row keys | string\\[] | - |  |\n| emptyText | Customize the display content when empty data | v-slot:emptyText | - | 3.0 |\n| expandedRowKeys(v-model) | Current expanded row keys | string\\[] | - |  |\n| expandedRowRender | Expanded container render for each row | Function({record, index, indent, expanded}):VNode\\|v-slot | - |  |\n| expandFixed | Set column to be fixed: `true`(same as left) `'left'` `'right'` | boolean \\| string | false | 3.0 |\n| expandColumnTitle | Set the title of the expand column | v-slot | - | 4.0.0 |\n| expandIcon | Customize row expand Icon. | Function(props):VNode \\| v-slot:expandIcon=\"props\" | - |  |\n| expandRowByClick | Whether to expand row by clicking anywhere in the whole row | boolean | `false` |  |\n| footer | Table footer renderer | Function(currentPageData)\\| v-slot:footer=\"currentPageData\" |  |  |\n| getPopupContainer | the render container of dropdowns in table | (triggerNode) => HTMLElement | `() => TableHtmlElement` | 1.5.0 |\n| headerCell | custom head cell by slot | v-slot:headerCell=\"{title, column}\" | - | 3.0 |\n| indentSize | Indent size in pixels of tree data | number | 15 |  |\n| loading | Loading status of table | boolean\\|[object](/components/spin) | `false` |  |\n| locale | i18n text including filter, sort, empty text, etc | object | filterConfirm: 'Ok' <br /> filterReset: 'Reset' <br /> emptyText: 'No Data' |  |\n| pagination | Config of pagination. You can ref table pagination [config](#pagination) or full [`pagination`](/components/pagination/) document, hide it by setting it to `false` | object \\| `false` |  |  |\n| rowClassName | Row's className | Function(record, index):string | - |  |\n| rowExpandable | Enable row can be expandable | (record) => boolean | - |  |\n| rowKey | Row's unique key, could be a string or function that returns a string | string\\|Function(record, index):string | `key` |  |\n| rowSelection | Row selection [config](#rowselection) | object | null |  |\n| scroll | Whether the table can be scrollable, [config](#scroll) | object | - |  |\n| showExpandColumn | Show expand column | boolean | true | 3.0 |\n| showHeader | Whether to show table header | boolean | `true` |  |\n| showSorterTooltip | The header show next sorter direction tooltip. It will be set as the property of Tooltip if its type is object | boolean \\| [Tooltip props](/components/tooltip/#api) | true | 3.0 |\n| size | Size of table | `middle` \\| `small` \\| `large` | `large` |  |\n| sortDirections | Supported sort way, could be `ascend`, `descend` | Array | \\[`ascend`, `descend`] | 3.0 |\n| sticky | Set sticky header and scroll bar | boolean \\| `{offsetHeader?: number, offsetScroll?: number, getContainer?: () => HTMLElement}` | - | 3.0 |\n| summary | Summary content | v-slot:summary | - | 3.0 |\n| tableLayout | [table-layout](https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout) attribute of table element | - \\| 'auto' \\| 'fixed' | -<hr />`fixed` when header/columns are fixed, or using `column.ellipsis` | 1.5.0 |\n| title | Table title renderer | Function(currentPageData)\\| v-slot:title=\"currentPageData\" |  |  |\n| transformCellText | The data can be changed again before rendering, generally used for the default configuration of empty data. You can configured globally through [ConfigProvider](/components/config-provider-cn/) | Function({ text, column, record, index }) => any, The `text` here is the data processed by other defined cell api, and it may be of type VNode \\| string \\| number | - | 1.5.4 ｜ |\n\n### Events\n\n| Events Name | Description | Arguments |  |\n| --- | --- | --- | --- |\n| change | Callback executed when pagination, filters or sorter is changed | Function(pagination, filters, sorter, { action, currentDataSource }) |  |\n| expand | Callback executed when the row expand icon is clicked | Function(expanded, record) |  |\n| expandedRowsChange | Callback executed when the expanded rows change | Function(expandedRows) |  |\n| resizeColumn | Triggered when the column is dragged | Function(width, column) |  |\n\n#### customRow usage\n\nSame as `customRow` `customHeaderRow` `customCell` `customHeaderCell`. Follow [Vue jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx) syntax。\n\n```jsx\n<Table\n  customRow={(record) => {\n    return {\n      xxx, // props\n      onClick: (event) => {},       // click row\n      onDblclick: (event) => {}, // double click row\n      onContextmenu: (event) => {}  // right button click row\n      onMouseenter: (event) => {}   // mouse enter row\n      onMouseleave: (event) => {}   // mouse leave row\n    };\n  }}\n  customHeaderRow={(columns, index) => {\n    return {\n      onClick: () => {},        // click header row\n    };\n  }}\n/>\n```\n\n### Column\n\nOne of the Table `columns` prop for describing the table's columns, Column has the same API.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| align | specify how content is aligned | 'left' \\| 'right' \\| 'center' | 'left' |  |\n| colSpan | Span of this column's title | number |  |  |\n| customCell | Set props on per cell | Function(record, rowIndex, column) | - | column add from 3.0 |\n| customFilterDropdown | use v-slot:customFilterDropdown, Priority is lower than filterDropdown | boolean | false | 3.0 |\n| customHeaderCell | Set props on per header cell | Function(column) | - |  |\n| customRender | Renderer of the table cell. The return value should be a VNode | Function({text, record, index}) {} | - |  |\n| dataIndex | Display field of the data record, support nest path by string array | string \\| string\\[] | - |  |\n| defaultFilteredValue | Default filtered values | string\\[] | - | 1.5.0 |\n| filterResetToDefaultFilteredValue | click the reset button, whether to restore the default filter | boolean | false | 3.3.0 |\n| defaultSortOrder | Default order of sorted values: `'ascend'` `'descend'` `null` | string | - |  |\n| ellipsis | ellipsize cell content, not working with sorter and filters for now.<br />tableLayout would be `fixed` when `ellipsis` is true. | boolean | false | 1.5.0 |\n| ellipsis | The ellipsis cell content, not working with sorter and filters for now.<br />tableLayout would be `fixed` when `ellipsis` is `true` or `{ showTitle?: boolean }` | boolean \\| {showTitle?: boolean } | false | 3.0 |\n| filterDropdown | Customized filter overlay | VNode \\| (props: FilterDropdownProps) => VNode | - |  |\n| filterDropdownOpen | Whether `filterDropdown` is open | boolean | - | 4.0 |\n| filtered | Whether the `dataSource` is filtered | boolean | `false` |  |\n| filteredValue | Controlled filtered value, filter icon will highlight | string\\[] | - |  |\n| filterIcon | Customized filter icon | ({filtered: boolean, column: Column}) | `false` |  |\n| filterMode | To specify the filter interface | 'menu' \\| 'tree' | 'menu' | 3.0 |\n| filterMultiple | Whether multiple filters can be selected | boolean | `true` |  |\n| filters | Filter menu config | object\\[] | - |  |\n| filterSearch | Whether to be searchable for filter menu | boolean \\| function(input, filter):boolean | false | boolean: 3.0 function: 3.3.0 |\n| fixed | Set column to be fixed: `true`(same as left) `'left'` `'right'` | boolean\\|string | `false` |  |\n| key | Unique key of this column, you can ignore this prop if you've set a unique `dataIndex` | string | - |  |\n| maxWidth | Drag the maximum width of the column, it will be affected by the automatic adjustment and distribution of the table width | number | - | 3.0 |\n| minWidth | Drag the minimum width of the column, it will be affected by the automatic adjustment and distribution of the table width | number | 50 | 3.0 |\n| resizable | Whether the width can be adjusted by dragging, at this time width must be number type | boolean | - | 3.0 |\n| responsive | The list of breakpoints at which to display this column. Always visible if not set. | [Breakpoint](#breakpoint)\\[] | - | 3.0 |\n| rowScope | Set scope attribute for all cells in this column | `row` \\| `rowgroup` | - | 4.0 |\n| sortDirections | supported sort way, could be `'ascend'`, `'descend'` | Array | `['ascend', 'descend']` | 1.5.0 |\n| sorter | Sort function for local sort, see [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)'s compareFunction. If you need sort buttons only, set to `true` | Function\\|boolean | - |  |\n| sortOrder | Order of sorted values: `'ascend'` `'descend'` `null` | string | - |  |\n| title | Title of this column | string | - |  |\n| width | Width of this column | string\\|number | - |  |\n| onFilter | Callback executed when the confirm filter button is clicked, Use as a `filter` event when using template or jsx | Function | - |  |\n| onFilterDropdownOpenChange | Callback executed when `filterDropdownOpen` is changed, Use as a `filterDropdownOpen` event when using template or jsx | function(open) {} | - | 4.0 |\n\n#### Breakpoint\n\n```ts\ntype Breakpoint = 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';\n```\n\n### ColumnGroup\n\n| Property | Description               | Type         | Default |\n| -------- | ------------------------- | ------------ | ------- |\n| title    | Title of the column group | string\\|slot | -       |\n\n### pagination\n\nProperties for pagination.\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| position | Specify the position of `Pagination`, could be`topLeft` \\| `topCenter` \\| `topRight` \\|`bottomLeft` \\| `bottomCenter` \\| `bottomRight` | Array | \\[`bottomRight`] |\n\nMore about pagination, please check [`Pagination`](/components/pagination/).\n\n### rowSelection\n\nProperties for row selection.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| checkStrictly | Check table row precisely; parent row and children rows are not associated | boolean | true | 3.0 |\n| columnTitle | Set the title of the selection column | string\\|VNode | - |  |\n| columnWidth | Set the width of the selection column | string\\|number | - |  |\n| fixed | Fixed selection column on the left | boolean | - |  |\n| getCheckboxProps | Get Checkbox or Radio props | Function(record) | - |  |\n| hideDefaultSelections | Remove the default `Select All` and `Select Invert` selections | boolean | `false` |  |\n| hideSelectAll | Hide the selectAll checkbox and custom selection | boolean | false | 3.0 |\n| preserveSelectedRowKeys | Keep selection `key` even when it removed from `dataSource` | boolean | - | 3.0 |\n| selectedRowKeys | Controlled selected row keys | string\\[] | \\[] |  |\n| selections | Custom selection [config](#rowselection), only displays default selections when set to `true` | object\\[] \\| boolean | - |  |\n| type | `checkbox` or `radio` | `checkbox` \\| `radio` | `checkbox` |  |\n| onChange | Callback executed when selected rows change | Function(selectedRowKeys, selectedRows) | - |  |\n| onSelect | Callback executed when select/deselect one row | Function(record, selected, selectedRows, nativeEvent) | - |  |\n| onSelectAll | Callback executed when select/deselect all rows | Function(selected, selectedRows, changeRows) | - |  |\n| onSelectInvert | Callback executed when row selection is inverted | Function(selectedRows) | - |  |\n| onSelectNone | Callback executed when row selection is cleared | function() | - | 3.0 |\n\n### scroll\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| scrollToFirstRowOnChange | Whether to scroll to the top of the table when paging, sorting, filtering changes | boolean | - |\n| x | Set horizontal scrolling, can also be used to specify the width of the scroll area, could be number, percent value, true and ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | string \\| number \\| true | - |\n| y | Set vertical scrolling, can also be used to specify the height of the scroll area, could be string or number | string \\| number | - |\n\n### selection\n\nCustom selection config\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| key | Unique key of this selection | string | - |\n| text | Display text of this selection | string\\|VNode | - |\n| onSelect | Callback executed when this selection is clicked | Function(changeableRowKeys) | - |\n\n### FilterDropdownProps\n\n```ts\ninterface FilterDropdownProps {\n  prefixCls: string;\n  setSelectedKeys: (selectedKeys: Key[]) => void;\n  selectedKeys: Key[];\n  confirm: (param?: FilterConfirmProps) => void;\n  clearFilters?: (param?: FilterResetProps) => void;\n  filters?: ColumnFilterItem[];\n  visible: boolean;\n  column: ColumnType;\n}\n\ninterface FilterConfirmProps {\n  closeDropdown: boolean;\n}\n\ninterface FilterResetProps {\n  confirm?: boolean;\n  closeDropdown?: boolean;\n}\n```\n\n## Note\n\nThe values inside `dataSource` and `columns` should follow this in Table, and `dataSource[i].key` would be treated as key value default for `dataSource`.\n\nIf `dataSource[i].key` is not provided, then you should specify the primary key of dataSource value via `rowKey`. If not, warnings will show in browser console.\n\n```jsx\n// primary key is uid\nreturn <Table rowKey=\"uid\" />;\n// or\nreturn <Table rowKey={record => record.uid} />;\n```\n\n## FAQ\n\n### How to hide pagination when single page or no data?\n\nYou can set `hideOnSinglePage` with `pagination` prop.\n\n### Table will return to first page when filter data.\n\nTable total page count usually reduce after filter data, we defaultly return to first page in case of current page is out of filtered results.\n\n### Why Table pagination show size changer?\n\nIn order to improve user experience, Pagination show size changer by default when `total > 50` since `3.0`. You can set `showSizeChanger=false` to disable this feature.\n\n### How to handle fixed column display over the mask layout?\n\nFixed column use `z-index` to make it over other columns. You will find sometime fixed columns also over your mask layout. You can set `z-index` on your mask layout to resolve.\n"
  },
  {
    "path": "components/table/index.tsx",
    "content": "import Table, { tableProps } from './Table';\nimport Column from './Column';\nimport ColumnGroup from './ColumnGroup';\nimport type { TableProps, TablePaginationConfig } from './Table';\nimport type { App } from 'vue';\nimport { EXPAND_COLUMN, Summary, SummaryCell, SummaryRow } from '../vc-table';\nimport {\n  SELECTION_ALL,\n  SELECTION_INVERT,\n  SELECTION_NONE,\n  SELECTION_COLUMN,\n} from './hooks/useSelection';\n\nexport type { ColumnProps } from './Column';\nexport type { ColumnsType, ColumnType, ColumnGroupType } from './interface';\nexport type { TableProps, TablePaginationConfig };\n\nconst TableSummaryRow = SummaryRow;\nconst TableSummaryCell = SummaryCell;\n\nconst TableSummary = Object.assign(Summary, {\n  Cell: TableSummaryCell,\n  Row: TableSummaryRow,\n  name: 'ATableSummary',\n});\n\n/* istanbul ignore next */\nexport {\n  tableProps,\n  TableSummary,\n  TableSummaryRow,\n  TableSummaryCell,\n  Column as TableColumn,\n  ColumnGroup as TableColumnGroup,\n};\n\nexport default Object.assign(Table, {\n  SELECTION_ALL,\n  SELECTION_INVERT,\n  SELECTION_NONE,\n  SELECTION_COLUMN,\n  EXPAND_COLUMN,\n  Column,\n  ColumnGroup,\n  Summary: TableSummary,\n  install: (app: App) => {\n    app.component(TableSummary.name, TableSummary);\n    app.component(TableSummaryCell.name, TableSummaryCell);\n    app.component(TableSummaryRow.name, TableSummaryRow);\n    app.component(Table.name, Table);\n    app.component(Column.name, Column);\n    app.component(ColumnGroup.name, ColumnGroup);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/table/index.zh-CN.md",
    "content": "---\ncategory: Components\ncols: 1\ntype: 数据展示\ntitle: Table\nsubtitle: 表格\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3yz3QqMlShYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Sv8XQ50NB40AAAAAAAAAAAAADrJ8AQ/original\n---\n\n展示行列数据。\n\n## 设计师专属\n\n安装 [Kitchen Sketch 插件 💎](https://kitchen.alipay.com/)，两步就可以自动生成 Ant Design 表格组件。\n\n## 何时使用\n\n- 当有大量结构化的数据需要展现时；\n- 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。\n\n## 如何使用\n\n指定表格的数据源 `dataSource` 为一个数组。\n\n```html\n<template>\n  <a-table :dataSource=\"dataSource\" :columns=\"columns\" />\n</template>\n<script>\n  export default {\n    setup() {\n      return {\n        dataSource: [\n          {\n            key: '1',\n            name: '胡彦斌',\n            age: 32,\n            address: '西湖区湖底公园1号',\n          },\n          {\n            key: '2',\n            name: '胡彦祖',\n            age: 42,\n            address: '西湖区湖底公园1号',\n          },\n        ],\n\n        columns: [\n          {\n            title: '姓名',\n            dataIndex: 'name',\n            key: 'name',\n          },\n          {\n            title: '年龄',\n            dataIndex: 'age',\n            key: 'age',\n          },\n          {\n            title: '住址',\n            dataIndex: 'address',\n            key: 'address',\n          },\n        ],\n      };\n    },\n  };\n</script>\n```\n\n## API\n\n### Table\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| bodyCell | 个性化单元格 | v-slot:bodyCell=\"{text, record, index, column}\" | - | 3.0 |\n| bordered | 是否展示外边框和列边框 | boolean | false |  |\n| childrenColumnName | 指定树形结构的列名 | string | `children` |  |\n| columns | 表格列的配置描述，具体项见[下表](#column) | array | - |  |\n| components | 覆盖默认的 table 元素 | object | - |  |\n| customFilterDropdown | 自定义筛选菜单，需要配合 `column.customFilterDropdown` 使用 | v-slot:customFilterDropdown=\"[FilterDropdownProps](#filterdropdownprops)\" | - | 3.0 |\n| customFilterIcon | 自定义筛选图标 | v-slot:customFilterIcon=\"{filtered, column}\" | - | 3.0 |\n| customHeaderRow | 设置头部行属性 | Function(columns, index) | - |  |\n| customRow | 设置行属性 | Function(record, index) | - |  |\n| dataSource | 数据数组 | object\\[] |  |  |\n| defaultExpandAllRows | 初始时，是否展开所有行 | boolean | false |  |\n| defaultExpandedRowKeys | 默认展开的行 | string\\[] | - |  |\n| emptyText | 自定义空数据时的显示内容 | v-slot:emptyText | - | 3.0 |\n| expandedRowKeys(v-model) | 展开的行，控制属性 | string\\[] | - |  |\n| expandedRowRender | 额外的展开行 | Function(record, index, indent, expanded):VNode \\| v-slot:expandedRowRender=\"{record, index, indent, expanded}\" | - |  |\n| expandFixed | 控制展开图标是否固定，可选 true `left` `right` | boolean \\| string | false | 3.0 |\n| expandColumnTitle | 自定义展开列表头 | v-slot | - | 4.0.0 |\n| expandIcon | 自定义展开图标 | Function(props):VNode \\| v-slot:expandIcon=\"props\" | - |  |\n| expandRowByClick | 通过点击行来展开子行 | boolean | `false` |  |\n| footer | 表格尾部 | Function(currentPageData)\\|v-slot:footer=\"currentPageData\" |  |  |\n| getPopupContainer | 设置表格内各类浮层的渲染节点，如筛选菜单 | (triggerNode) => HTMLElement | `() => TableHtmlElement` | 1.5.0 |\n| headerCell | 个性化头部单元格 | v-slot:headerCell=\"{title, column}\" | - | 3.0 |\n| indentSize | 展示树形数据时，每层缩进的宽度，以 px 为单位 | number | 15 |  |\n| loading | 页面是否加载中 | boolean\\|[object](/components/spin-cn) | false |  |\n| locale | 默认文案设置，目前包括排序、过滤、空数据文案 | object | filterConfirm: `确定` <br> filterReset: `重置` <br> emptyText: `暂无数据` |  |\n| pagination | 分页器，参考[配置项](#pagination)或 [pagination](/components/pagination-cn/)文档，设为 false 时不展示和进行分页 | object \\| `false` |  |  |\n| rowClassName | 表格行的类名 | Function(record, index):string | - |  |\n| rowExpandable | 设置是否允许行展开 | (record) => boolean | - | 3.0 |\n| rowKey | 表格行 key 的取值，可以是字符串或一个函数 | string\\|Function(record):string | 'key' |  |\n| rowSelection | 列表项是否可选择，[配置项](#rowselection) | object | null |  |\n| scroll | 表格是否可滚动，也可以指定滚动区域的宽、高，[配置项](#scroll) | object | - |  |\n| showExpandColumn | 设置是否展示行展开列 | boolean | true | 3.0 |\n| showHeader | 是否显示表头 | boolean | true |  |\n| showSorterTooltip | 表头是否显示下一次排序的 tooltip 提示。当参数类型为对象时，将被设置为 Tooltip 的属性 | boolean \\| [Tooltip props](/components/tooltip/) | true | 3.0 |\n| size | 表格大小 | `large` \\| `middle` \\| `small` | `large` |  |\n| sortDirections | 支持的排序方式，取值为 `ascend` `descend` | Array | \\[`ascend`, `descend`] |  |\n| sticky | 设置粘性头部和滚动条 | boolean \\| `{offsetHeader?: number, offsetScroll?: number, getContainer?: () => HTMLElement}` | - | 3.0 |\n| summary | 总结栏 | v-slot:summary | - | 3.0 |\n| tableLayout | 表格元素的 [table-layout](https://developer.mozilla.org/zh-CN/docs/Web/CSS/table-layout) 属性，设为 `fixed` 表示内容不会影响列的布局 | - \\| 'auto' \\| 'fixed' | 无<hr />固定表头/列或使用了 `column.ellipsis` 时，默认值为 `fixed` | 1.5.0 |\n| title | 表格标题 | Function(currentPageData)\\|v-slot:title=\"currentPageData\" |  |  |\n| transformCellText | 数据渲染前可以再次改变，一般用于空数据的默认配置，可以通过 [ConfigProvider](/components/config-provider-cn/) 全局统一配置 | Function({ text, column, record, index }) => any，此处的 text 是经过其它定义单元格 api 处理后的数据，有可能是 VNode \\| string \\| number 类型 | - | 1.5.4 |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| change | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter, { action, currentDataSource }) |\n| expand | 点击展开图标时触发 | Function(expanded, record) |\n| expandedRowsChange | 展开的行变化时触发 | Function(expandedRows) |\n| resizeColumn | 拖动列时触发 | Function(width, column) |\n\n#### customRow 用法\n\n适用于 `customRow` `customHeaderRow` `customCell` `customHeaderCell`。遵循[Vue jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx)语法。\n\n```jsx\n<Table\n  customRow={(record) => {\n    return {\n      xxx... //属性\n      onClick: (event) => {},       // 点击行\n      onDblclick: (event) => {},\n      onContextmenu: (event) => {},\n      onMouseenter: (event) => {},  // 鼠标移入行\n      onMouseleave: (event) => {}\n    };\n  }}\n  customHeaderRow={(columns, index) => {\n    return {\n      onClick: () => {},        // 点击表头行\n    };\n  }}\n/>\n```\n\n### Column\n\n列描述数据对象，是 columns 中的一项，Column 使用相同的 API。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| align | 设置列的对齐方式 | `left` \\| `right` \\| `center` | `left` |  |\n| colSpan | 表头列合并,设置为 0 时，不渲染 | number |  |  |\n| customCell | 设置单元格属性 | Function(record, rowIndex, column) | - | column add from 3.0 |\n| customFilterDropdown | 启用 v-slot:customFilterDropdown，优先级低于 filterDropdown | boolean | false | 3.0 |\n| customHeaderCell | 设置头部单元格属性 | Function(column) | - |  |\n| customRender | 生成复杂数据的渲染函数，参数分别为当前行的值，当前行数据，行索引 | Function({text, record, index, column}) {} | - |  |\n| dataIndex | 列数据在数据项中对应的路径，支持通过数组查询嵌套路径 | string \\| string\\[] | - |  |\n| defaultFilteredValue | 默认筛选值 | string\\[] | - | 1.5.0 |\n| filterResetToDefaultFilteredValue | 点击重置按钮的时候，是否恢复默认筛选值 | boolean | false | 3.3.0 |\n| defaultSortOrder | 默认排序顺序 | `ascend` \\| `descend` | - |  |\n| ellipsis | 超过宽度将自动省略，暂不支持和排序筛选一起使用。<br />设置为 `true` 或 `{ showTitle?: boolean }` 时，表格布局将变成 `tableLayout=\"fixed\"`。 | boolean \\| { showTitle?: boolean } | false | 3.0 |\n| filterDropdown | 可以自定义筛选菜单，此函数只负责渲染图层，需要自行编写各种交互 | VNode \\| (props: FilterDropdownProps) => VNode | - |  |\n| filterDropdownOpen | 用于控制自定义筛选菜单是否可见 | boolean | - |  |\n| filtered | 标识数据是否经过过滤，筛选图标会高亮 | boolean | false |  |\n| filteredValue | 筛选的受控属性，外界可用此控制列的筛选状态，值为已筛选的 value 数组 | string\\[] | - |  |\n| filterIcon | 自定义 filter 图标。 | VNode \\| ({filtered: boolean, column: Column}) => vNode | false |  |\n| filterMode | 指定筛选菜单的用户界面 | 'menu' \\| 'tree' | 'menu' | 3.0 |\n| filterMultiple | 是否多选 | boolean | true |  |\n| filters | 表头的筛选菜单项 | object\\[] | - |  |\n| filterSearch | 筛选菜单项是否可搜索 | boolean \\| function(input, filter):boolean | false | boolean:3.0 function:3.3.0 |\n| fixed | 列是否固定，可选 `true`(等效于 left) `'left'` `'right'` | boolean\\|string | false |  |\n| key | Vue 需要的 key，如果已经设置了唯一的 `dataIndex`，可以忽略这个属性 | string | - |  |\n| maxWidth | 拖动列最大宽度，会受到表格自动调整分配宽度影响 | number | - | 3.0 |\n| minWidth | 拖动列最小宽度，会受到表格自动调整分配宽度影响 | number | 50 | 3.0 |\n| resizable | 是否可拖动调整宽度，此时 width 必须是 number 类型 | boolean | - | 3.0 |\n| responsive | 响应式 breakpoint 配置列表。未设置则始终可见。 | [Breakpoint](#breakpoint)\\[] | - | 3.0 |\n| rowScope | 设置列范围 | `row` \\| `rowgroup` | - | 4.0 |\n| showSorterTooltip | 表头显示下一次排序的 tooltip 提示, 覆盖 table 中 `showSorterTooltip` | boolean \\| [Tooltip props](/components/tooltip/#api) | true |  |\n| sortDirections | 支持的排序方式，取值为 `'ascend'` `'descend'` | Array | `['ascend', 'descend']` | 1.5.0 |\n| sorter | 排序函数，本地排序使用一个函数(参考 [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) 的 compareFunction)，需要服务端排序可设为 true | Function\\|boolean | - |  |\n| sortOrder | 排序的受控属性，外界可用此控制列的排序，可设置为 `'ascend'` `'descend'` `null` | string | - |  |\n| title | 列头显示文字 | string | - |  |\n| width | 列宽度 | string\\|number | - |  |\n| onFilter | 本地模式下，确定筛选的运行函数, 使用 template 或 jsx 时作为`filter`事件使用 | Function | - |  |\n| onFilterDropdownOpenChange | 自定义筛选菜单可见变化时调用，使用 template 或 jsx 时作为`filterDropdownOpenChange`事件使用 | function(open) {} | - | 4.0 |\n\n#### Breakpoint\n\n```ts\ntype Breakpoint = 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';\n```\n\n### ColumnGroup\n\n| 参数  | 说明         | 类型         | 默认值 |\n| ----- | ------------ | ------------ | ------ |\n| title | 列头显示文字 | string\\|slot | -      |\n\n### pagination\n\n分页的配置项。\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| position | 指定分页显示的位置， 取值为`topLeft` \\| `topCenter` \\| `topRight` \\|`bottomLeft` \\| `bottomCenter` \\| `bottomRight` | Array | \\[`bottomRight`] |\n\n更多配置项，请查看 [`Pagination`](/components/pagination/)。\n\n### rowSelection\n\n选择功能的配置。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| checkStrictly | checkable 状态下节点选择完全受控（父子数据选中状态不再关联） | boolean | true | 3.0 |\n| columnTitle | 自定义列表选择框标题 | string\\|VNode | - |  |\n| columnWidth | 自定义列表选择框宽度 | string\\|number | - |  |\n| fixed | 把选择框列固定在左边 | boolean | - |  |\n| getCheckboxProps | 选择框的默认属性配置 | Function(record) | - |  |\n| hideDefaultSelections | 去掉『全选』『反选』两个默认选项 | boolean | false |  |\n| hideSelectAll | 隐藏全选勾选框与自定义选择项 | boolean | false | 3.0 |\n| preserveSelectedRowKeys | 当数据被删除时仍然保留选项的 `key` | boolean | - | 3.0 |\n| selectedRowKeys | 指定选中项的 key 数组，需要和 onChange 进行配合 | string\\[] | \\[] |  |\n| selections | 自定义选择项 [配置项](#selection), 设为 `true` 时使用默认选择项 | object\\[] \\| boolean | true |  |\n| type | 多选/单选，`checkbox` or `radio` | string | `checkbox` |  |\n| onChange | 选中项发生变化时的回调 | Function(selectedRowKeys, selectedRows) | - |  |\n| onSelect | 用户手动选择/取消选择某列的回调 | Function(record, selected, selectedRows, nativeEvent) | - |  |\n| onSelectAll | 用户手动选择/取消选择所有列的回调 | Function(selected, selectedRows, changeRows) | - |  |\n| onSelectInvert | 用户手动选择反选的回调 | Function(selectedRows) | - |  |\n| onSelectNone | 用户清空选择的回调 | function() | - | 3.0 |\n\n### scroll\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| scrollToFirstRowOnChange | 当分页、排序、筛选变化后是否滚动到表格顶部 | boolean | - |\n| x | 设置横向滚动，也可用于指定滚动区域的宽，可以设置为像素值，百分比，true 和 ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | string \\| number \\| true | - |\n| y | 设置纵向滚动，也可用于指定滚动区域的高，可以设置为像素值 | string \\| number | - |\n\n### selection\n\n自定义选择配置项\n\n| 参数     | 说明                     | 类型                        | 默认值 |\n| -------- | ------------------------ | --------------------------- | ------ |\n| key      | Vue 需要的 key，建议设置 | string                      | -      |\n| text     | 选择项显示的文字         | string\\|VNode               | -      |\n| onSelect | 选择项点击回调           | Function(changeableRowKeys) | -      |\n\n### FilterDropdownProps\n\n```ts\ninterface FilterDropdownProps {\n  prefixCls: string;\n  setSelectedKeys: (selectedKeys: Key[]) => void;\n  selectedKeys: Key[];\n  confirm: (param?: FilterConfirmProps) => void;\n  clearFilters?: (param?: FilterResetProps) => void;\n  filters?: ColumnFilterItem[];\n  visible: boolean;\n  column: ColumnType;\n}\n\ninterface FilterConfirmProps {\n  closeDropdown: boolean;\n}\n\ninterface FilterResetProps {\n  confirm?: boolean;\n  closeDropdown?: boolean;\n}\n```\n\n## 注意\n\n在 Table 中，`dataSource` 和 `columns` 里的数据值都需要指定 `key` 值。对于 `dataSource` 默认将每列数据的 `key` 属性作为唯一的标识。\n\n如果你的数据没有这个属性，务必使用 `rowKey` 来指定数据列的主键。若没有指定，控制台会出现缺少 key 的提示，表格组件也会出现各类奇怪的错误。\n\n```jsx\n// 比如你的数据主键是 uid\nreturn <Table rowKey=\"uid\" />;\n// 或\nreturn <Table rowKey={record => record.uid} />;\n```\n\n## FAQ\n\n### 如何在没有数据或只有一页数据时隐藏分页栏\n\n你可以设置 `pagination` 的 `hideOnSinglePage` 属性为 `true`。\n\n### 表格过滤时会回到第一页？\n\n前端过滤时通常条目总数会减少，从而导致总页数小于筛选前的当前页数，为了防止当前页面没有数据，我们默认会返回第一页。\n\n如果你在使用远程分页，很可能需要保持当前页面，你可以手动控制当前页面不变。\n\n### 表格分页为何会出现 size 切换器？\n\n自 `3.0` 起，Pagination 在 `total` 大于 50 条时会默认显示 size 切换器以提升用户交互体验。如果你不需要该功能，可以通过设置 `showSizeChanger` 为 `false` 来关闭。\n\n### 固定列穿透到最上层该怎么办？\n\n固定列通过 `z-index` 属性将其悬浮于非固定列之上，这使得有时候你会发现在 Table 上放置遮罩层时固定列会被透过的情况。为遮罩层设置更高的 `z-index` 覆盖住固定列即可。\n"
  },
  {
    "path": "components/table/interface.tsx",
    "content": "import type {\n  GetRowKey,\n  ColumnType as RcColumnType,\n  RenderedCell as RcRenderedCell,\n  ExpandableConfig,\n  DefaultRecordType,\n  FixedType,\n} from '../vc-table/interface';\nimport type { TooltipProps } from '../tooltip';\nimport type { CheckboxProps } from '../checkbox';\nimport type { PaginationProps } from '../pagination';\nimport type { Breakpoint } from '../_util/responsiveObserve';\nimport type { INTERNAL_SELECTION_ITEM } from './hooks/useSelection';\nimport type { VueNode } from '../_util/type';\nimport { tuple } from '../_util/type';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\n// import { TableAction } from './Table';\n\nexport type { GetRowKey, ExpandableConfig };\n\nexport type Key = string | number;\n\nexport type RowSelectionType = 'checkbox' | 'radio';\n\nexport type SelectionItemSelectFn = (currentRowKeys: Key[]) => void;\n\nexport type ExpandType = null | 'row' | 'nest';\n\nexport interface TableLocale {\n  filterTitle?: string;\n  filterConfirm?: any;\n  filterReset?: any;\n  filterEmptyText?: any;\n  filterCheckall?: any;\n  filterSearchPlaceholder?: any;\n  emptyText?: any | (() => any);\n  selectAll?: any;\n  selectNone?: any;\n  selectInvert?: any;\n  selectionAll?: any;\n  sortTitle?: string;\n  expand?: string;\n  collapse?: string;\n  triggerDesc?: string;\n  triggerAsc?: string;\n  cancelSort?: string;\n}\n\nexport type SortOrder = 'descend' | 'ascend' | null;\n\nconst TableActions = tuple('paginate', 'sort', 'filter');\nexport type TableAction = (typeof TableActions)[number];\n\nexport type CompareFn<T> = (a: T, b: T, sortOrder?: SortOrder) => number;\n\nexport interface ColumnFilterItem {\n  text: VueNode;\n  value: string | number | boolean;\n  children?: ColumnFilterItem[];\n}\nexport interface ColumnTitleProps<RecordType> {\n  /** @deprecated Please use `sorterColumns` instead. */\n  sortOrder?: SortOrder;\n  /** @deprecated Please use `sorterColumns` instead. */\n  sortColumn?: ColumnType<RecordType>;\n  sortColumns?: { column: ColumnType<RecordType>; order: SortOrder }[];\n\n  filters?: Record<string, FilterValue>;\n}\n\ntype ColumnTitleNode = VueNode | VNodeArrayChildren;\nexport type ColumnTitle<RecordType> =\n  | ColumnTitleNode\n  | ((props: ColumnTitleProps<RecordType>) => ColumnTitleNode);\n\nexport type FilterValue = (Key | boolean)[];\nexport type FilterKey = Key[] | null;\nexport type FilterSearchType<RecordType = Record<string, any>> =\n  | boolean\n  | ((input: string, record: RecordType) => boolean);\nexport interface FilterConfirmProps {\n  closeDropdown: boolean;\n}\nexport interface FilterResetProps {\n  confirm?: boolean;\n  closeDropdown?: boolean;\n}\n\nexport interface FilterDropdownProps<RecordType> {\n  prefixCls: string;\n  setSelectedKeys: (selectedKeys: Key[]) => void;\n  selectedKeys: Key[];\n  confirm: (param?: FilterConfirmProps) => void;\n  clearFilters?: (param?: FilterResetProps) => void;\n  filters?: ColumnFilterItem[];\n  /** Only close filterDropdown */\n  close: () => void;\n  visible: boolean;\n  column: ColumnType<RecordType>;\n}\n\nexport interface ColumnType<RecordType = DefaultRecordType>\n  extends Omit<RcColumnType<RecordType>, 'title'> {\n  title?: ColumnTitle<RecordType>;\n  // Sorter\n  sorter?:\n    | boolean\n    | CompareFn<RecordType>\n    | {\n        compare?: CompareFn<RecordType>;\n        /** Config multiple sorter order priority */\n        multiple?: number;\n      };\n  sortOrder?: SortOrder;\n  defaultSortOrder?: SortOrder;\n  sortDirections?: SortOrder[];\n  showSorterTooltip?: boolean | TooltipProps;\n\n  // Filter\n  filtered?: boolean;\n  filters?: ColumnFilterItem[];\n  filterDropdown?: VueNode | ((props: FilterDropdownProps<RecordType>) => VueNode);\n  filterMultiple?: boolean;\n  filteredValue?: FilterValue | null;\n  defaultFilteredValue?: FilterValue | null;\n  filterIcon?: VueNode | ((opt: { filtered: boolean; column: ColumnType }) => VueNode);\n  filterMode?: 'menu' | 'tree';\n  filterSearch?: FilterSearchType<ColumnFilterItem>;\n  onFilter?: (value: string | number | boolean, record: RecordType) => boolean;\n  filterDropdownOpen?: boolean;\n  onFilterDropdownOpenChange?: (visible: boolean) => void;\n  filterResetToDefaultFilteredValue?: boolean;\n  // Responsive\n  responsive?: Breakpoint[];\n\n  // Deprecated\n  /** @deprecated Please use `filterDropdownOpen` instead */\n  filterDropdownVisible?: boolean;\n  /** @deprecated Please use `onFilterDropdownOpenChange` instead */\n  onFilterDropdownVisibleChange?: (visible: boolean) => void;\n}\n\nexport interface ColumnGroupType<RecordType> extends Omit<ColumnType<RecordType>, 'dataIndex'> {\n  children: ColumnsType<RecordType>;\n}\n\nexport type ColumnsType<RecordType = DefaultRecordType> = (\n  | ColumnGroupType<RecordType>\n  | ColumnType<RecordType>\n)[];\n\nexport interface SelectionItem {\n  key: string;\n  text: VueNode;\n  onSelect?: SelectionItemSelectFn;\n}\n\nexport type SelectionSelectFn<T> = (\n  record: T,\n  selected: boolean,\n  selectedRows: T[],\n  nativeEvent: Event,\n) => void;\n\nexport interface TableRowSelection<T = DefaultRecordType> {\n  /** Keep the selection keys in list even the key not exist in `dataSource` anymore */\n  preserveSelectedRowKeys?: boolean;\n  type?: RowSelectionType;\n  selectedRowKeys?: Key[];\n  defaultSelectedRowKeys?: Key[];\n  onChange?: (selectedRowKeys: Key[], selectedRows: T[]) => void;\n  getCheckboxProps?: (record: T) => Partial<Omit<CheckboxProps, 'checked' | 'defaultChecked'>>;\n  onSelect?: SelectionSelectFn<T>;\n  onSelectMultiple?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;\n  /** @deprecated This function is meaningless and should use `onChange` instead */\n  onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;\n  /** @deprecated This function is meaningless and should use `onChange` instead */\n  onSelectInvert?: (selectedRowKeys: Key[]) => void;\n  onSelectNone?: () => void;\n  selections?: INTERNAL_SELECTION_ITEM[] | boolean;\n  hideSelectAll?: boolean;\n  fixed?: FixedType;\n  columnWidth?: string | number;\n  columnTitle?: string | VueNode;\n  checkStrictly?: boolean;\n  renderCell?: (\n    value: boolean,\n    record: T,\n    index: number,\n    originNode: VueNode,\n  ) => VueNode | RcRenderedCell<T>;\n}\n\nexport type TransformColumns<RecordType> = (\n  columns: ColumnsType<RecordType>,\n) => ColumnsType<RecordType>;\n\nexport interface TableCurrentDataSource<RecordType = DefaultRecordType> {\n  currentDataSource: RecordType[];\n  action: TableAction;\n}\n\nexport interface SorterResult<RecordType = DefaultRecordType> {\n  column?: ColumnType<RecordType>;\n  order?: SortOrder;\n  field?: Key | readonly Key[];\n  columnKey?: Key;\n}\n\nexport type GetPopupContainer = (triggerNode: HTMLElement) => HTMLElement;\n\ntype TablePaginationPosition =\n  | 'topLeft'\n  | 'topCenter'\n  | 'topRight'\n  | 'bottomLeft'\n  | 'bottomCenter'\n  | 'bottomRight';\n\nexport interface TablePaginationConfig extends PaginationProps {\n  position?: TablePaginationPosition[];\n  class?: string;\n  style?: CSSProperties;\n}\n\nexport interface TransformCellTextProps {\n  text: any;\n  column: ColumnType;\n  record: any;\n  index: number;\n}\n"
  },
  {
    "path": "components/table/style/bordered.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genBorderedStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n  const tableBorder = `${token.lineWidth}px ${token.lineType} ${token.tableBorderColor}`;\n\n  const getSizeBorderStyle = (\n    size: 'small' | 'middle',\n    paddingVertical: number,\n    paddingHorizontal: number,\n  ) => ({\n    [`&${componentCls}-${size}`]: {\n      [`> ${componentCls}-container`]: {\n        [`> ${componentCls}-content, > ${componentCls}-body`]: {\n          '> table > tbody > tr > td': {\n            [`> ${componentCls}-expanded-row-fixed`]: {\n              margin: `-${paddingVertical}px -${paddingHorizontal + token.lineWidth}px`,\n            },\n          },\n        },\n      },\n    },\n  });\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}${componentCls}-bordered`]: {\n        // ============================ Title =============================\n        [`> ${componentCls}-title`]: {\n          border: tableBorder,\n          borderBottom: 0,\n        },\n\n        // ============================ Content ============================\n        [`> ${componentCls}-container`]: {\n          borderInlineStart: tableBorder,\n\n          [`\n            > ${componentCls}-content,\n            > ${componentCls}-header,\n            > ${componentCls}-body,\n            > ${componentCls}-summary\n          `]: {\n            '> table': {\n              // ============================= Cell =============================\n              [`\n                > thead > tr > th,\n                > tbody > tr > td,\n                > tfoot > tr > th,\n                > tfoot > tr > td\n              `]: {\n                borderInlineEnd: tableBorder,\n              },\n\n              // ============================ Header ============================\n              '> thead': {\n                '> tr:not(:last-child) > th': {\n                  borderBottom: tableBorder,\n                },\n\n                '> tr > th::before': {\n                  backgroundColor: 'transparent !important',\n                },\n              },\n\n              // Fixed right should provides additional border\n              [`\n                > thead > tr,\n                > tbody > tr,\n                > tfoot > tr\n              `]: {\n                [`> ${componentCls}-cell-fix-right-first::after`]: {\n                  borderInlineEnd: tableBorder,\n                },\n              },\n\n              // ========================== Expandable ==========================\n              '> tbody > tr > td': {\n                [`> ${componentCls}-expanded-row-fixed`]: {\n                  margin: `-${token.tablePaddingVertical}px -${\n                    token.tablePaddingHorizontal + token.lineWidth\n                  }px`,\n\n                  '&::after': {\n                    position: 'absolute',\n                    top: 0,\n                    insetInlineEnd: token.lineWidth,\n                    bottom: 0,\n                    borderInlineEnd: tableBorder,\n                    content: '\"\"',\n                  },\n                },\n              },\n            },\n          },\n\n          [`\n            > ${componentCls}-content,\n            > ${componentCls}-header\n          `]: {\n            '> table': {\n              borderTop: tableBorder,\n            },\n          },\n        },\n\n        // ============================ Scroll ============================\n        [`&${componentCls}-scroll-horizontal`]: {\n          [`> ${componentCls}-container > ${componentCls}-body`]: {\n            '> table > tbody': {\n              [`\n                > tr${componentCls}-expanded-row,\n                > tr${componentCls}-placeholder\n              `]: {\n                '> td': {\n                  borderInlineEnd: 0,\n                },\n              },\n            },\n          },\n        },\n\n        // ============================ Size ============================\n        ...getSizeBorderStyle(\n          'middle',\n          token.tablePaddingVerticalMiddle,\n          token.tablePaddingHorizontalMiddle,\n        ),\n        ...getSizeBorderStyle(\n          'small',\n          token.tablePaddingVerticalSmall,\n          token.tablePaddingHorizontalSmall,\n        ),\n\n        // ============================ Footer ============================\n        [`> ${componentCls}-footer`]: {\n          border: tableBorder,\n          borderTop: 0,\n        },\n      },\n\n      // ============================ Nested ============================\n      [`${componentCls}-cell`]: {\n        [`${componentCls}-container:first-child`]: {\n          // :first-child to avoid the case when bordered and title is set\n          borderTop: 0,\n        },\n        // https://github.com/ant-design/ant-design/issues/35577\n        '&-scrollbar:not([rowspan])': {\n          boxShadow: `0 ${token.lineWidth}px 0 ${token.lineWidth}px ${token.tableHeaderBg}`,\n        },\n      },\n    },\n  };\n};\n\nexport default genBorderedStyle;\n"
  },
  {
    "path": "components/table/style/ellipsis.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { textEllipsis } from '../../style';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genEllipsisStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-cell-ellipsis`]: {\n        ...textEllipsis,\n        wordBreak: 'keep-all',\n\n        // Fixed first or last should special process\n        [`\n          &${componentCls}-cell-fix-left-last,\n          &${componentCls}-cell-fix-right-first\n        `]: {\n          overflow: 'visible',\n          [`${componentCls}-cell-content`]: {\n            display: 'block',\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n          },\n        },\n\n        [`${componentCls}-column-title`]: {\n          overflow: 'hidden',\n          textOverflow: 'ellipsis',\n          wordBreak: 'keep-all',\n        },\n      },\n    },\n  };\n};\n\nexport default genEllipsisStyle;\n"
  },
  {
    "path": "components/table/style/empty.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\n// ========================= Placeholder ==========================\nconst genEmptyStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-tbody > tr${componentCls}-placeholder`]: {\n        textAlign: 'center',\n        color: token.colorTextDisabled,\n\n        '&:hover > td': {\n          background: token.colorBgContainer,\n        },\n      },\n    },\n  };\n};\n\nexport default genEmptyStyle;\n"
  },
  {
    "path": "components/table/style/expand.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\nimport { operationUnit } from '../../style';\n\nconst genExpandStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const {\n    componentCls,\n    antCls,\n    controlInteractiveSize: checkboxSize,\n    motionDurationSlow,\n    lineWidth,\n    paddingXS,\n    lineType,\n    tableBorderColor,\n    tableExpandIconBg,\n    tableExpandColumnWidth,\n    borderRadius,\n    fontSize,\n    fontSizeSM,\n    lineHeight,\n    tablePaddingVertical,\n    tablePaddingHorizontal,\n    tableExpandedRowBg,\n    paddingXXS,\n  } = token;\n  const halfInnerSize = checkboxSize / 2 - lineWidth;\n  // must be odd number, unless it cannot align center\n  const expandIconSize = halfInnerSize * 2 + lineWidth * 3;\n  const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`;\n  const expandIconLineOffset = paddingXXS - lineWidth;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-expand-icon-col`]: {\n        width: tableExpandColumnWidth,\n      },\n\n      [`${componentCls}-row-expand-icon-cell`]: {\n        textAlign: 'center',\n\n        [`${componentCls}-row-expand-icon`]: {\n          display: 'inline-flex',\n          float: 'none',\n          verticalAlign: 'sub',\n        },\n      },\n\n      [`${componentCls}-row-indent`]: {\n        height: 1,\n        float: 'left',\n      },\n\n      [`${componentCls}-row-expand-icon`]: {\n        ...operationUnit(token),\n        position: 'relative',\n        float: 'left',\n        boxSizing: 'border-box',\n        width: expandIconSize,\n        height: expandIconSize,\n        padding: 0,\n        color: 'inherit',\n        lineHeight: `${expandIconSize}px`,\n        background: tableExpandIconBg,\n        border: tableBorder,\n        borderRadius,\n        transform: `scale(${checkboxSize / expandIconSize})`,\n        transition: `all ${motionDurationSlow}`,\n        userSelect: 'none',\n\n        [`&:focus, &:hover, &:active`]: {\n          borderColor: 'currentcolor',\n        },\n\n        [`&::before, &::after`]: {\n          position: 'absolute',\n          background: 'currentcolor',\n          transition: `transform ${motionDurationSlow} ease-out`,\n          content: '\"\"',\n        },\n\n        '&::before': {\n          top: halfInnerSize,\n          insetInlineEnd: expandIconLineOffset,\n          insetInlineStart: expandIconLineOffset,\n          height: lineWidth,\n        },\n\n        '&::after': {\n          top: expandIconLineOffset,\n          bottom: expandIconLineOffset,\n          insetInlineStart: halfInnerSize,\n          width: lineWidth,\n          transform: 'rotate(90deg)',\n        },\n\n        // Motion effect\n        '&-collapsed::before': {\n          transform: 'rotate(-180deg)',\n        },\n\n        '&-collapsed::after': {\n          transform: 'rotate(0deg)',\n        },\n\n        '&-spaced': {\n          '&::before, &::after': {\n            display: 'none',\n            content: 'none',\n          },\n          background: 'transparent',\n          border: 0,\n          visibility: 'hidden',\n        },\n      },\n\n      [`${componentCls}-row-indent + ${componentCls}-row-expand-icon`]: {\n        marginTop:\n          (fontSize * lineHeight - lineWidth * 3) / 2 -\n          Math.ceil((fontSizeSM * 1.4 - lineWidth * 3) / 2),\n        marginInlineEnd: paddingXS,\n      },\n\n      [`tr${componentCls}-expanded-row`]: {\n        '&, &:hover': {\n          '> td': {\n            background: tableExpandedRowBg,\n          },\n        },\n\n        // https://github.com/ant-design/ant-design/issues/25573\n        [`${antCls}-descriptions-view`]: {\n          display: 'flex',\n\n          table: {\n            flex: 'auto',\n            width: 'auto',\n          },\n        },\n      },\n\n      // With fixed\n      [`${componentCls}-expanded-row-fixed`]: {\n        position: 'relative',\n        margin: `-${tablePaddingVertical}px -${tablePaddingHorizontal}px`,\n        padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px`,\n      },\n    },\n  };\n};\n\nexport default genExpandStyle;\n"
  },
  {
    "path": "components/table/style/filter.ts",
    "content": "import type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\nimport { resetComponent } from '../../style';\n\nconst genFilterStyle: GenerateStyle<TableToken> = token => {\n  const {\n    componentCls,\n    antCls,\n    iconCls,\n    tableFilterDropdownWidth,\n    tableFilterDropdownSearchWidth,\n    paddingXXS,\n    paddingXS,\n    colorText,\n    lineWidth,\n    lineType,\n    tableBorderColor,\n    tableHeaderIconColor,\n    fontSizeSM,\n    tablePaddingHorizontal,\n    borderRadius,\n    motionDurationSlow,\n    colorTextDescription,\n    colorPrimary,\n    tableHeaderFilterActiveBg,\n    colorTextDisabled,\n    tableFilterDropdownBg,\n    tableFilterDropdownHeight,\n    controlItemBgHover,\n    controlItemBgActive,\n    boxShadowSecondary,\n  } = token;\n  const dropdownPrefixCls = `${antCls}-dropdown`;\n  const tableFilterDropdownPrefixCls = `${componentCls}-filter-dropdown`;\n  const treePrefixCls = `${antCls}-tree`;\n  const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`;\n\n  return [\n    {\n      [`${componentCls}-wrapper`]: {\n        [`${componentCls}-filter-column`]: {\n          display: 'flex',\n          justifyContent: 'space-between',\n        },\n\n        [`${componentCls}-filter-trigger`]: {\n          position: 'relative',\n          display: 'flex',\n          alignItems: 'center',\n          marginBlock: -paddingXXS,\n          marginInline: `${paddingXXS}px ${-tablePaddingHorizontal / 2}px`,\n          padding: `0 ${paddingXXS}px`,\n          color: tableHeaderIconColor,\n          fontSize: fontSizeSM,\n          borderRadius,\n          cursor: 'pointer',\n          transition: `all ${motionDurationSlow}`,\n\n          '&:hover': {\n            color: colorTextDescription,\n            background: tableHeaderFilterActiveBg,\n          },\n\n          '&.active': {\n            color: colorPrimary,\n          },\n        },\n      },\n    },\n    {\n      // Dropdown\n      [`${antCls}-dropdown`]: {\n        [tableFilterDropdownPrefixCls]: {\n          ...resetComponent(token),\n\n          minWidth: tableFilterDropdownWidth,\n          backgroundColor: tableFilterDropdownBg,\n          borderRadius,\n          boxShadow: boxShadowSecondary,\n\n          // Reset menu\n          [`${dropdownPrefixCls}-menu`]: {\n            // https://github.com/ant-design/ant-design/issues/4916\n            // https://github.com/ant-design/ant-design/issues/19542\n            maxHeight: tableFilterDropdownHeight,\n            overflowX: 'hidden',\n            border: 0,\n            boxShadow: 'none',\n\n            '&:empty::after': {\n              display: 'block',\n              padding: `${paddingXS}px 0`,\n              color: colorTextDisabled,\n              fontSize: fontSizeSM,\n              textAlign: 'center',\n              content: '\"Not Found\"',\n            },\n          },\n\n          [`${tableFilterDropdownPrefixCls}-tree`]: {\n            paddingBlock: `${paddingXS}px 0`,\n            paddingInline: paddingXS,\n\n            [treePrefixCls]: {\n              padding: 0,\n            },\n\n            [`${treePrefixCls}-treenode ${treePrefixCls}-node-content-wrapper:hover`]: {\n              backgroundColor: controlItemBgHover,\n            },\n\n            [`${treePrefixCls}-treenode-checkbox-checked ${treePrefixCls}-node-content-wrapper`]: {\n              '&, &:hover': {\n                backgroundColor: controlItemBgActive,\n              },\n            },\n          },\n\n          [`${tableFilterDropdownPrefixCls}-search`]: {\n            padding: paddingXS,\n            borderBottom: tableBorder,\n\n            '&-input': {\n              input: {\n                minWidth: tableFilterDropdownSearchWidth,\n              },\n              [iconCls]: {\n                color: colorTextDisabled,\n              },\n            },\n          },\n\n          [`${tableFilterDropdownPrefixCls}-checkall`]: {\n            width: '100%',\n            marginBottom: paddingXXS,\n            marginInlineStart: paddingXXS,\n          },\n\n          // Operation\n          [`${tableFilterDropdownPrefixCls}-btns`]: {\n            display: 'flex',\n            justifyContent: 'space-between',\n            padding: `${paddingXS - lineWidth}px ${paddingXS}px`,\n            overflow: 'hidden',\n            backgroundColor: 'inherit',\n            borderTop: tableBorder,\n          },\n        },\n      },\n    },\n    // Dropdown Menu & SubMenu\n    {\n      // submenu of table filter dropdown\n      [`${antCls}-dropdown ${tableFilterDropdownPrefixCls}, ${tableFilterDropdownPrefixCls}-submenu`]:\n        {\n          // Checkbox\n          [`${antCls}-checkbox-wrapper + span`]: {\n            paddingInlineStart: paddingXS,\n            color: colorText,\n          },\n\n          [`> ul`]: {\n            maxHeight: 'calc(100vh - 130px)',\n            overflowX: 'hidden',\n            overflowY: 'auto',\n          },\n        },\n    },\n  ];\n};\n\nexport default genFilterStyle;\n"
  },
  {
    "path": "components/table/style/fixed.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genFixedStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const {\n    componentCls,\n    lineWidth,\n    colorSplit,\n    motionDurationSlow,\n    zIndexTableFixed,\n    tableBg,\n    zIndexTableSticky,\n  } = token;\n\n  const shadowColor = colorSplit;\n\n  // Follow style is magic of shadow which should not follow token:\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`\n        ${componentCls}-cell-fix-left,\n        ${componentCls}-cell-fix-right\n      `]: {\n        position: 'sticky !important' as 'sticky',\n        zIndex: zIndexTableFixed,\n        background: tableBg,\n      },\n\n      [`\n        ${componentCls}-cell-fix-left-first::after,\n        ${componentCls}-cell-fix-left-last::after\n      `]: {\n        position: 'absolute',\n        top: 0,\n        right: {\n          _skip_check_: true,\n          value: 0,\n        },\n        bottom: -lineWidth,\n        width: 30,\n        transform: 'translateX(100%)',\n        transition: `box-shadow ${motionDurationSlow}`,\n        content: '\"\"',\n        pointerEvents: 'none',\n      },\n\n      [`${componentCls}-cell-fix-left-all::after`]: {\n        display: 'none',\n      },\n\n      [`\n        ${componentCls}-cell-fix-right-first::after,\n        ${componentCls}-cell-fix-right-last::after\n      `]: {\n        position: 'absolute',\n        top: 0,\n        bottom: -lineWidth,\n        left: {\n          _skip_check_: true,\n          value: 0,\n        },\n        width: 30,\n        transform: 'translateX(-100%)',\n        transition: `box-shadow ${motionDurationSlow}`,\n        content: '\"\"',\n        pointerEvents: 'none',\n      },\n\n      [`${componentCls}-container`]: {\n        '&::before, &::after': {\n          position: 'absolute',\n          top: 0,\n          bottom: 0,\n          zIndex: zIndexTableSticky + 1,\n          width: 30,\n          transition: `box-shadow ${motionDurationSlow}`,\n          content: '\"\"',\n          pointerEvents: 'none',\n        },\n\n        '&::before': {\n          insetInlineStart: 0,\n        },\n\n        '&::after': {\n          insetInlineEnd: 0,\n        },\n      },\n\n      [`${componentCls}-ping-left`]: {\n        [`&:not(${componentCls}-has-fix-left) ${componentCls}-container`]: {\n          position: 'relative',\n\n          '&::before': {\n            boxShadow: `inset 10px 0 8px -8px ${shadowColor}`,\n          },\n        },\n\n        [`\n          ${componentCls}-cell-fix-left-first::after,\n          ${componentCls}-cell-fix-left-last::after\n        `]: {\n          boxShadow: `inset 10px 0 8px -8px ${shadowColor}`,\n        },\n\n        [`${componentCls}-cell-fix-left-last::before`]: {\n          backgroundColor: 'transparent !important',\n        },\n      },\n\n      [`${componentCls}-ping-right`]: {\n        [`&:not(${componentCls}-has-fix-right) ${componentCls}-container`]: {\n          position: 'relative',\n\n          '&::after': {\n            boxShadow: `inset -10px 0 8px -8px ${shadowColor}`,\n          },\n        },\n\n        [`\n          ${componentCls}-cell-fix-right-first::after,\n          ${componentCls}-cell-fix-right-last::after\n        `]: {\n          boxShadow: `inset -10px 0 8px -8px ${shadowColor}`,\n        },\n      },\n    },\n  };\n};\n\nexport default genFixedStyle;\n"
  },
  {
    "path": "components/table/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genBorderedStyle from './bordered';\nimport genEllipsisStyle from './ellipsis';\nimport genEmptyStyle from './empty';\nimport genExpandStyle from './expand';\nimport genFilterStyle from './filter';\nimport genFixedStyle from './fixed';\nimport genPaginationStyle from './pagination';\nimport genRadiusStyle from './radius';\nimport genRtlStyle from './rtl';\nimport genSelectionStyle from './selection';\nimport genSizeStyle from './size';\nimport genResizeStyle from './resize';\nimport genSorterStyle from './sorter';\nimport genStickyStyle from './sticky';\nimport genSummaryStyle from './summary';\nimport { clearFix, resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\nexport interface TableToken extends FullToken<'Table'> {\n  tableFontSize: number;\n  tableBg: string;\n  tableRadius: number;\n  tablePaddingHorizontal: number;\n  tablePaddingVertical: number;\n  tablePaddingHorizontalMiddle: number;\n  tablePaddingVerticalMiddle: number;\n  tablePaddingHorizontalSmall: number;\n  tablePaddingVerticalSmall: number;\n  tableBorderColor: string;\n  tableHeaderTextColor: string;\n  tableHeaderBg: string;\n  tableFooterTextColor: string;\n  tableFooterBg: string;\n  tableHeaderCellSplitColor: string;\n  tableHeaderSortBg: string;\n  tableHeaderSortHoverBg: string;\n  tableHeaderIconColor: string;\n  tableHeaderIconColorHover: string;\n  tableBodySortBg: string;\n  tableFixedHeaderSortActiveBg: string;\n  tableHeaderFilterActiveBg: string;\n  tableFilterDropdownBg: string;\n  tableFilterDropdownHeight: number;\n  tableRowHoverBg: string;\n  tableSelectedRowBg: string;\n  tableSelectedRowHoverBg: string;\n\n  tableFontSizeMiddle: number;\n  tableFontSizeSmall: number;\n  tableSelectionColumnWidth: number;\n  tableExpandIconBg: string;\n  tableExpandColumnWidth: number;\n  tableExpandedRowBg: string;\n  tableFilterDropdownWidth: number;\n  tableFilterDropdownSearchWidth: number;\n\n  // Z-Index\n  zIndexTableFixed: number;\n  zIndexTableSticky: number;\n\n  // Virtual Scroll Bar\n  tableScrollThumbSize: number;\n  tableScrollThumbBg: string;\n  tableScrollThumbBgHover: string;\n  tableScrollBg: string;\n}\n\nconst genTableStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const {\n    componentCls,\n    fontWeightStrong,\n    tablePaddingVertical,\n    tablePaddingHorizontal,\n    lineWidth,\n    lineType,\n    tableBorderColor,\n    tableFontSize,\n    tableBg,\n    tableRadius,\n    tableHeaderTextColor,\n    motionDurationMid,\n    tableHeaderBg,\n    tableHeaderCellSplitColor,\n    tableRowHoverBg,\n    tableSelectedRowBg,\n    tableSelectedRowHoverBg,\n    tableFooterTextColor,\n    tableFooterBg,\n    paddingContentVerticalLG,\n  } = token;\n  const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`;\n  return {\n    [`${componentCls}-wrapper`]: {\n      clear: 'both',\n      maxWidth: '100%',\n      ...clearFix(),\n\n      [componentCls]: {\n        ...resetComponent(token),\n        fontSize: tableFontSize,\n        background: tableBg,\n        borderRadius: `${tableRadius}px ${tableRadius}px 0 0`,\n      },\n      // https://github.com/ant-design/ant-design/issues/17611\n      table: {\n        width: '100%',\n        textAlign: 'start',\n        borderRadius: `${tableRadius}px ${tableRadius}px 0 0`,\n        borderCollapse: 'separate',\n        borderSpacing: 0,\n      },\n\n      // ============================= Cell =============================\n      [`\n          ${componentCls}-thead > tr > th,\n          ${componentCls}-tbody > tr > td,\n          tfoot > tr > th,\n          tfoot > tr > td\n        `]: {\n        position: 'relative',\n        padding: `${paddingContentVerticalLG}px ${tablePaddingHorizontal}px`,\n        overflowWrap: 'break-word',\n      },\n\n      // ============================ Title =============================\n      [`${componentCls}-title`]: {\n        padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px`,\n      },\n\n      // ============================ Header ============================\n      [`${componentCls}-thead`]: {\n        [`\n          > tr > th,\n          > tr > td\n        `]: {\n          position: 'relative',\n          color: tableHeaderTextColor,\n          fontWeight: fontWeightStrong,\n          textAlign: 'start',\n          background: tableHeaderBg,\n          borderBottom: tableBorder,\n          transition: `background ${motionDurationMid} ease`,\n\n          \"&[colspan]:not([colspan='1'])\": {\n            textAlign: 'center',\n          },\n\n          [`&:not(:last-child):not(${componentCls}-selection-column):not(${componentCls}-row-expand-icon-cell):not([colspan])::before`]:\n            {\n              position: 'absolute',\n              top: '50%',\n              insetInlineEnd: 0,\n              width: 1,\n              height: '1.6em',\n              backgroundColor: tableHeaderCellSplitColor,\n              transform: 'translateY(-50%)',\n              transition: `background-color ${motionDurationMid}`,\n              content: '\"\"',\n            },\n        },\n\n        '> tr:not(:last-child) > th[colspan]': {\n          borderBottom: 0,\n        },\n      },\n\n      // ============================ Body ============================\n      // Borderless Table has unique hover style, which would be implemented with `borderTop`.\n      [`${componentCls}:not(${componentCls}-bordered)`]: {\n        [`${componentCls}-tbody`]: {\n          '> tr': {\n            '> td': {\n              borderTop: tableBorder,\n              borderBottom: 'transparent',\n            },\n\n            '&:last-child > td': {\n              borderBottom: tableBorder,\n            },\n\n            [`&:first-child > td,\n              &${componentCls}-measure-row + tr > td`]: {\n              borderTop: 'none',\n              borderTopColor: 'transparent',\n            },\n          },\n        },\n      },\n\n      // Bordered Table remains simple `borderBottom`.\n      // Ref issue: https://github.com/ant-design/ant-design/issues/38724\n      [`${componentCls}${componentCls}-bordered`]: {\n        [`${componentCls}-tbody`]: {\n          '> tr': {\n            '> td': {\n              borderBottom: tableBorder,\n            },\n          },\n        },\n      },\n\n      [`${componentCls}-tbody`]: {\n        '> tr': {\n          '> td': {\n            transition: `background ${motionDurationMid}, border-color ${motionDurationMid}`,\n\n            // ========================= Nest Table ===========================\n            [`\n              > ${componentCls}-wrapper:only-child,\n              > ${componentCls}-expanded-row-fixed > ${componentCls}-wrapper:only-child\n            `]: {\n              [componentCls]: {\n                marginBlock: `-${tablePaddingVertical}px`,\n                marginInline: `${\n                  token.tableExpandColumnWidth - tablePaddingHorizontal\n                }px -${tablePaddingHorizontal}px`,\n                [`${componentCls}-tbody > tr:last-child > td`]: {\n                  borderBottom: 0,\n                  '&:first-child, &:last-child': {\n                    borderRadius: 0,\n                  },\n                },\n              },\n            },\n          },\n\n          [`\n            &${componentCls}-row:hover > td,\n            > td${componentCls}-cell-row-hover\n          `]: {\n            background: tableRowHoverBg,\n          },\n\n          [`&${componentCls}-row-selected`]: {\n            '> td': {\n              background: tableSelectedRowBg,\n            },\n\n            '&:hover > td': {\n              background: tableSelectedRowHoverBg,\n            },\n          },\n        },\n      },\n\n      // ============================ Footer ============================\n      [`${componentCls}-footer`]: {\n        padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px`,\n        color: tableFooterTextColor,\n        background: tableFooterBg,\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Table', token => {\n  const {\n    controlItemBgActive,\n    controlItemBgActiveHover,\n    colorTextPlaceholder,\n    colorTextHeading,\n    colorSplit,\n    colorBorderSecondary,\n    fontSize,\n    padding,\n    paddingXS,\n    paddingSM,\n    controlHeight,\n    colorFillAlter,\n    colorIcon,\n    colorIconHover,\n    opacityLoading,\n    colorBgContainer,\n    borderRadiusLG,\n    colorFillContent,\n    colorFillSecondary,\n    controlInteractiveSize: checkboxSize,\n  } = token;\n\n  const baseColorAction = new TinyColor(colorIcon);\n  const baseColorActionHover = new TinyColor(colorIconHover);\n\n  const tableSelectedRowBg = controlItemBgActive;\n  const zIndexTableFixed: number = 2;\n\n  const colorFillSecondarySolid = new TinyColor(colorFillSecondary)\n    .onBackground(colorBgContainer)\n    .toHexString();\n  const colorFillContentSolid = new TinyColor(colorFillContent)\n    .onBackground(colorBgContainer)\n    .toHexString();\n\n  const colorFillAlterSolid = new TinyColor(colorFillAlter)\n    .onBackground(colorBgContainer)\n    .toHexString();\n\n  const tableToken = mergeToken<TableToken>(token, {\n    tableFontSize: fontSize,\n    tableBg: colorBgContainer,\n    tableRadius: borderRadiusLG,\n\n    tablePaddingVertical: padding,\n    tablePaddingHorizontal: padding,\n    tablePaddingVerticalMiddle: paddingSM,\n    tablePaddingHorizontalMiddle: paddingXS,\n    tablePaddingVerticalSmall: paddingXS,\n    tablePaddingHorizontalSmall: paddingXS,\n    tableBorderColor: colorBorderSecondary,\n    tableHeaderTextColor: colorTextHeading,\n    tableHeaderBg: colorFillAlterSolid,\n    tableFooterTextColor: colorTextHeading,\n    tableFooterBg: colorFillAlterSolid,\n    tableHeaderCellSplitColor: colorBorderSecondary,\n    tableHeaderSortBg: colorFillSecondarySolid,\n    tableHeaderSortHoverBg: colorFillContentSolid,\n    tableHeaderIconColor: baseColorAction\n      .clone()\n      .setAlpha(baseColorAction.getAlpha() * opacityLoading)\n      .toRgbString(),\n    tableHeaderIconColorHover: baseColorActionHover\n      .clone()\n      .setAlpha(baseColorActionHover.getAlpha() * opacityLoading)\n      .toRgbString(),\n    tableBodySortBg: colorFillAlterSolid,\n    tableFixedHeaderSortActiveBg: colorFillSecondarySolid,\n    tableHeaderFilterActiveBg: colorFillContent,\n    tableFilterDropdownBg: colorBgContainer,\n    tableRowHoverBg: colorFillAlterSolid,\n    tableSelectedRowBg,\n    tableSelectedRowHoverBg: controlItemBgActiveHover,\n    zIndexTableFixed,\n    zIndexTableSticky: zIndexTableFixed + 1,\n    tableFontSizeMiddle: fontSize,\n    tableFontSizeSmall: fontSize,\n    tableSelectionColumnWidth: controlHeight,\n    tableExpandIconBg: colorBgContainer,\n    tableExpandColumnWidth: checkboxSize + 2 * token.padding,\n    tableExpandedRowBg: colorFillAlter,\n\n    // Dropdown\n    tableFilterDropdownWidth: 120,\n    tableFilterDropdownHeight: 264,\n    tableFilterDropdownSearchWidth: 140,\n\n    // Virtual Scroll Bar\n    tableScrollThumbSize: 8, // Mac scroll bar size\n    tableScrollThumbBg: colorTextPlaceholder,\n    tableScrollThumbBgHover: colorTextHeading,\n    tableScrollBg: colorSplit,\n  });\n\n  return [\n    genTableStyle(tableToken),\n    genPaginationStyle(tableToken),\n    genSummaryStyle(tableToken),\n    genSorterStyle(tableToken),\n    genFilterStyle(tableToken),\n    genBorderedStyle(tableToken),\n    genRadiusStyle(tableToken),\n    genExpandStyle(tableToken),\n    genSummaryStyle(tableToken),\n    genEmptyStyle(tableToken),\n    genSelectionStyle(tableToken),\n    genFixedStyle(tableToken),\n    genStickyStyle(tableToken),\n    genEllipsisStyle(tableToken),\n    genSizeStyle(tableToken),\n    genResizeStyle(tableToken),\n    genRtlStyle(tableToken),\n  ];\n});\n"
  },
  {
    "path": "components/table/style/pagination.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genPaginationStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls, antCls } = token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      // ========================== Pagination ==========================\n      [`${componentCls}-pagination${antCls}-pagination`]: {\n        margin: `${token.margin}px 0`,\n      },\n\n      [`${componentCls}-pagination`]: {\n        display: 'flex',\n        flexWrap: 'wrap',\n        rowGap: token.paddingXS,\n\n        '> *': {\n          flex: 'none',\n        },\n\n        '&-left': {\n          justifyContent: 'flex-start',\n        },\n\n        '&-center': {\n          justifyContent: 'center',\n        },\n\n        '&-right': {\n          justifyContent: 'flex-end',\n        },\n      },\n    },\n  };\n};\n\nexport default genPaginationStyle;\n"
  },
  {
    "path": "components/table/style/radius.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genRadiusStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls, tableRadius } = token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [componentCls]: {\n        // https://github.com/ant-design/ant-design/issues/39115#issuecomment-1362314574\n        [`${componentCls}-title, ${componentCls}-header`]: {\n          borderRadius: `${tableRadius}px ${tableRadius}px 0 0`,\n        },\n\n        [`${componentCls}-title + ${componentCls}-container`]: {\n          borderStartStartRadius: 0,\n          borderStartEndRadius: 0,\n\n          table: {\n            borderRadius: 0,\n\n            '> thead > tr:first-child': {\n              'th:first-child': {\n                borderRadius: 0,\n              },\n\n              'th:last-child': {\n                borderRadius: 0,\n              },\n            },\n          },\n        },\n\n        '&-container': {\n          borderStartStartRadius: tableRadius,\n          borderStartEndRadius: tableRadius,\n\n          'table > thead > tr:first-child': {\n            '> *:first-child': {\n              borderStartStartRadius: tableRadius,\n            },\n\n            '> *:last-child': {\n              borderStartEndRadius: tableRadius,\n            },\n          },\n        },\n\n        '&-footer': {\n          borderRadius: `0 0 ${tableRadius}px ${tableRadius}px`,\n        },\n      },\n    },\n  };\n};\n\nexport default genRadiusStyle;\n"
  },
  {
    "path": "components/table/style/resize.ts",
    "content": "// 此样式是vue版本独有样式，react版本没有拖拽改变列宽度功能\nimport type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genResizeStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-wrapper ${componentCls}-resize-handle`]: {\n      position: 'absolute',\n      top: 0,\n      height: '100% !important',\n      bottom: 0,\n      left: ' auto !important',\n      right: ' -8px',\n      cursor: 'col-resize',\n      touchAction: 'none',\n      userSelect: 'auto',\n      width: '16px',\n      zIndex: 1,\n      [`&-line`]: {\n        display: 'block',\n        width: '1px',\n        marginLeft: '7px',\n        height: '100% !important',\n        backgroundColor: token.colorPrimary,\n        opacity: 0,\n      },\n      [`&:hover &-line`]: {\n        opacity: 1,\n      },\n    },\n    [`${componentCls}-wrapper  ${componentCls}-resize-handle.dragging`]: {\n      overflow: 'hidden',\n      [`${componentCls}-resize-handle-line`]: {\n        opacity: 1,\n      },\n      [`&:before`]: {\n        position: 'absolute',\n        top: 0,\n        bottom: 0,\n        content: '\" \"',\n        width: '200vw',\n        transform: 'translateX(-50%)',\n        opacity: 0,\n      },\n    },\n  };\n};\n\nexport default genResizeStyle;\n"
  },
  {
    "path": "components/table/style/rtl.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-wrapper-rtl`]: {\n      direction: 'rtl',\n      table: {\n        direction: 'rtl',\n      },\n\n      [`${componentCls}-pagination-left`]: {\n        justifyContent: 'flex-end',\n      },\n\n      [`${componentCls}-pagination-right`]: {\n        justifyContent: 'flex-start',\n      },\n\n      [`${componentCls}-row-expand-icon`]: {\n        '&::after': {\n          transform: 'rotate(-90deg)',\n        },\n\n        '&-collapsed::before': {\n          transform: 'rotate(180deg)',\n        },\n\n        '&-collapsed::after': {\n          transform: 'rotate(0deg)',\n        },\n      },\n    },\n  };\n};\n\nexport default genStyle;\n"
  },
  {
    "path": "components/table/style/selection.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genSelectionStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const {\n    componentCls,\n    antCls,\n    iconCls,\n    fontSizeIcon,\n    paddingXS,\n    tableHeaderIconColor,\n    tableHeaderIconColorHover,\n  } = token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      // ========================== Selections ==========================\n      [`${componentCls}-selection-col`]: {\n        width: token.tableSelectionColumnWidth,\n      },\n\n      [`${componentCls}-bordered ${componentCls}-selection-col`]: {\n        width: token.tableSelectionColumnWidth + paddingXS * 2,\n      },\n\n      [`\n        table tr th${componentCls}-selection-column,\n        table tr td${componentCls}-selection-column\n      `]: {\n        paddingInlineEnd: token.paddingXS,\n        paddingInlineStart: token.paddingXS,\n        textAlign: 'center',\n\n        [`${antCls}-radio-wrapper`]: {\n          marginInlineEnd: 0,\n        },\n      },\n\n      [`table tr th${componentCls}-selection-column${componentCls}-cell-fix-left`]: {\n        zIndex: token.zIndexTableFixed + 1,\n      },\n\n      [`table tr th${componentCls}-selection-column::after`]: {\n        backgroundColor: 'transparent !important',\n      },\n\n      [`${componentCls}-selection`]: {\n        position: 'relative',\n        display: 'inline-flex',\n        flexDirection: 'column',\n      },\n\n      [`${componentCls}-selection-extra`]: {\n        position: 'absolute',\n        top: 0,\n        zIndex: 1,\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationSlow}`,\n        marginInlineStart: '100%',\n        paddingInlineStart: `${token.tablePaddingHorizontal / 4}px`,\n\n        [iconCls]: {\n          color: tableHeaderIconColor,\n          fontSize: fontSizeIcon,\n          verticalAlign: 'baseline',\n\n          '&:hover': {\n            color: tableHeaderIconColorHover,\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genSelectionStyle;\n"
  },
  {
    "path": "components/table/style/size.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genSizeStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls } = token;\n  const getSizeStyle = (\n    size: 'small' | 'middle',\n    paddingVertical: number,\n    paddingHorizontal: number,\n    fontSize: number,\n  ) => ({\n    [`${componentCls}${componentCls}-${size}`]: {\n      fontSize,\n      [`\n        ${componentCls}-title,\n        ${componentCls}-footer,\n        ${componentCls}-thead > tr > th,\n        ${componentCls}-tbody > tr > td,\n        tfoot > tr > th,\n        tfoot > tr > td\n      `]: {\n        padding: `${paddingVertical}px ${paddingHorizontal}px`,\n      },\n\n      [`${componentCls}-filter-trigger`]: {\n        marginInlineEnd: `-${paddingHorizontal / 2}px`,\n      },\n\n      [`${componentCls}-expanded-row-fixed`]: {\n        margin: `-${paddingVertical}px -${paddingHorizontal}px`,\n      },\n\n      [`${componentCls}-tbody`]: {\n        // ========================= Nest Table ===========================\n        [`${componentCls}-wrapper:only-child ${componentCls}`]: {\n          marginBlock: `-${paddingVertical}px`,\n          marginInline: `${\n            token.tableExpandColumnWidth - paddingHorizontal\n          }px -${paddingHorizontal}px`,\n        },\n      },\n\n      // https://github.com/ant-design/ant-design/issues/35167\n      [`${componentCls}-selection-column`]: {\n        paddingInlineStart: `${paddingHorizontal / 4}px`,\n      },\n    },\n  });\n  return {\n    [`${componentCls}-wrapper`]: {\n      ...getSizeStyle(\n        'middle',\n        token.tablePaddingVerticalMiddle,\n        token.tablePaddingHorizontalMiddle,\n        token.tableFontSizeMiddle,\n      ),\n      ...getSizeStyle(\n        'small',\n        token.tablePaddingVerticalSmall,\n        token.tablePaddingHorizontalSmall,\n        token.tableFontSizeSmall,\n      ),\n    },\n  };\n};\n\nexport default genSizeStyle;\n"
  },
  {
    "path": "components/table/style/sorter.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genSorterStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls, marginXXS, fontSizeIcon, tableHeaderIconColor, tableHeaderIconColorHover } =\n    token;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-thead th${componentCls}-column-has-sorters`]: {\n        outline: 'none',\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationSlow}`,\n\n        '&:hover': {\n          background: token.tableHeaderSortHoverBg,\n\n          '&::before': {\n            backgroundColor: 'transparent !important',\n          },\n        },\n\n        '&:focus-visible': {\n          color: token.colorPrimary,\n        },\n\n        // https://github.com/ant-design/ant-design/issues/30969\n        [`\n          &${componentCls}-cell-fix-left:hover,\n          &${componentCls}-cell-fix-right:hover\n        `]: {\n          background: token.tableFixedHeaderSortActiveBg,\n        },\n      },\n\n      [`${componentCls}-thead th${componentCls}-column-sort`]: {\n        background: token.tableHeaderSortBg,\n\n        '&::before': {\n          backgroundColor: 'transparent !important',\n        },\n      },\n\n      [`td${componentCls}-column-sort`]: {\n        background: token.tableBodySortBg,\n      },\n\n      [`${componentCls}-column-title`]: {\n        position: 'relative',\n        zIndex: 1,\n        flex: 1,\n      },\n\n      [`${componentCls}-column-sorters`]: {\n        display: 'flex',\n        flex: 'auto',\n        alignItems: 'center',\n        justifyContent: 'space-between',\n\n        '&::after': {\n          position: 'absolute',\n          inset: 0,\n          width: '100%',\n          height: '100%',\n          content: '\"\"',\n        },\n      },\n\n      [`${componentCls}-column-sorter`]: {\n        marginInlineStart: marginXXS,\n        color: tableHeaderIconColor,\n        fontSize: 0,\n        transition: `color ${token.motionDurationSlow}`,\n\n        '&-inner': {\n          display: 'inline-flex',\n          flexDirection: 'column',\n          alignItems: 'center',\n        },\n\n        '&-up, &-down': {\n          fontSize: fontSizeIcon,\n\n          '&.active': {\n            color: token.colorPrimary,\n          },\n        },\n\n        [`${componentCls}-column-sorter-up + ${componentCls}-column-sorter-down`]: {\n          marginTop: '-0.3em',\n        },\n      },\n\n      [`${componentCls}-column-sorters:hover ${componentCls}-column-sorter`]: {\n        color: tableHeaderIconColorHover,\n      },\n    },\n  };\n};\n\nexport default genSorterStyle;\n"
  },
  {
    "path": "components/table/style/sticky.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genStickyStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const {\n    componentCls,\n    opacityLoading,\n    tableScrollThumbBg,\n    tableScrollThumbBgHover,\n    tableScrollThumbSize,\n    tableScrollBg,\n    zIndexTableSticky,\n  } = token;\n  const tableBorder = `${token.lineWidth}px ${token.lineType} ${token.tableBorderColor}`;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-sticky`]: {\n        '&-holder': {\n          position: 'sticky',\n          zIndex: zIndexTableSticky,\n          background: token.colorBgContainer,\n        },\n\n        '&-scroll': {\n          position: 'sticky',\n          bottom: 0,\n          height: `${tableScrollThumbSize}px !important`,\n          zIndex: zIndexTableSticky,\n          display: 'flex',\n          alignItems: 'center',\n          background: tableScrollBg,\n          borderTop: tableBorder,\n          opacity: opacityLoading,\n\n          '&:hover': {\n            transformOrigin: 'center bottom',\n          },\n\n          // fake scrollbar style of sticky\n          '&-bar': {\n            height: tableScrollThumbSize,\n            backgroundColor: tableScrollThumbBg,\n            borderRadius: 100,\n            transition: `all ${token.motionDurationSlow}, transform none`,\n            position: 'absolute',\n            bottom: 0,\n\n            '&:hover, &-active': {\n              backgroundColor: tableScrollThumbBgHover,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genStickyStyle;\n"
  },
  {
    "path": "components/table/style/summary.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { GenerateStyle } from '../../theme/internal';\nimport type { TableToken } from './index';\n\nconst genSummaryStyle: GenerateStyle<TableToken, CSSObject> = token => {\n  const { componentCls, lineWidth, tableBorderColor } = token;\n  const tableBorder = `${lineWidth}px ${token.lineType} ${tableBorderColor}`;\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-summary`]: {\n        position: 'relative',\n        zIndex: token.zIndexTableFixed,\n        background: token.tableBg,\n\n        '> tr': {\n          '> th, > td': {\n            borderBottom: tableBorder,\n          },\n        },\n      },\n\n      [`div${componentCls}-summary`]: {\n        boxShadow: `0 -${lineWidth}px 0 ${tableBorderColor}`,\n      },\n    },\n  };\n};\n\nexport default genSummaryStyle;\n"
  },
  {
    "path": "components/table/util.ts",
    "content": "import { camelize, flattenChildren } from '../_util/props-util';\nimport type { ColumnType, ColumnsType, ColumnTitle, ColumnTitleProps, Key } from './interface';\n\nexport function getColumnKey<RecordType>(column: ColumnType<RecordType>, defaultKey: string): Key {\n  if ('key' in column && column.key !== undefined && column.key !== null) {\n    return column.key;\n  }\n  if (column.dataIndex) {\n    return (Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : column.dataIndex) as Key;\n  }\n\n  return defaultKey;\n}\n\nexport function getColumnPos(index: number, pos?: string) {\n  return pos ? `${pos}-${index}` : `${index}`;\n}\n\nexport function renderColumnTitle<RecordType>(\n  title: ColumnTitle<RecordType>,\n  props: ColumnTitleProps<RecordType>,\n) {\n  if (typeof title === 'function') {\n    return title(props);\n  }\n\n  return title;\n}\n\nexport function convertChildrenToColumns<RecordType>(\n  elements: any[] = [],\n): ColumnsType<RecordType> {\n  const flattenElements = flattenChildren(elements);\n  const columns = [];\n  flattenElements.forEach(element => {\n    if (!element) {\n      return;\n    }\n    const key = element.key;\n    const style = element.props?.style || {};\n    const cls = element.props?.class || '';\n    const props = element.props || {};\n    for (const [k, v] of Object.entries(props)) {\n      props[camelize(k)] = v;\n    }\n    const { default: children, ...restSlots } = element.children || {};\n    const column = { ...restSlots, ...props, style, class: cls };\n    if (key) {\n      column.key = key;\n    }\n    if (element.type?.__ANT_TABLE_COLUMN_GROUP) {\n      column.children = convertChildrenToColumns(\n        typeof children === 'function' ? children() : children,\n      );\n    } else {\n      const customRender = element.children?.default;\n      column.customRender = column.customRender || customRender;\n    }\n    columns.push(column);\n  });\n  return columns;\n}\n"
  },
  {
    "path": "components/tabs/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tabs/demo/basic.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top \">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab Pane 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">Content of Tab Pane 2</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/card.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top  ant-tabs-card\">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab Pane 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/card-top.vue correctly 1`] = `\n<div class=\"card-container\">\n  <div class=\"ant-tabs ant-tabs-top  ant-tabs-card\">\n    <div role=\"tablist\" class=\"ant-tabs-nav\">\n      <!---->\n      <div class=\"ant-tabs-nav-wrap\">\n        <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab Title 1</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n            <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab Title 2</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab Title 3</div>\n            <!---->\n          </div>\n          <!---->\n          <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n        </div>\n      </div>\n      <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n        <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs-content-holder\">\n      <div class=\"ant-tabs-content ant-tabs-content-top\">\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">\n          <p>Content of Tab Pane 2</p>\n          <p>Content of Tab Pane 2</p>\n          <p>Content of Tab Pane 2</p>\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/centered.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top  ant-tabs-centered\">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab Pane 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">Content of Tab Pane 2</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/custom-add-trigger.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 16px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>ADD</span>\n    </button></div>\n  <div class=\"ant-tabs ant-tabs-top  ant-tabs-card ant-tabs-editable-card ant-tabs-editable\">\n    <div role=\"tablist\" class=\"ant-tabs-nav\">\n      <!---->\n      <div class=\"ant-tabs-nav-wrap\">\n        <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n          <div class=\"ant-tabs-tab ant-tabs-tab-with-remove ant-tabs-tab-active\">\n            <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div><button type=\"button\" aria-label=\"remove\" tabindex=\"0\" class=\"ant-tabs-tab-remove\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n          </div>\n          <div class=\"ant-tabs-tab ant-tabs-tab-with-remove\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div><button type=\"button\" aria-label=\"remove\" tabindex=\"0\" class=\"ant-tabs-tab-remove\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n          </div>\n          <!---->\n          <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n        </div>\n      </div>\n      <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n        <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs-content-holder\">\n      <div class=\"ant-tabs-content ant-tabs-content-top\">\n        <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab Pane 1</div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/custom-tab-bar.vue correctly 1`] = `\n<div>\n  <div class=\"ant-tabs ant-tabs-top \">\n    <div role=\"tablist\" class=\"ant-tabs-nav\" style=\"opacity: 0.5;\">\n      <!---->\n      <div class=\"ant-tabs-nav-wrap\">\n        <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n          <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n            <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n            <!---->\n          </div>\n          <!---->\n          <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n        </div>\n      </div>\n      <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n        <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs-content-holder\">\n      <div class=\"ant-tabs-content ant-tabs-content-top\">\n        <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" style=\"height: 200px;\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab Pane 1</div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">Content of Tab Pane 2</div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/disabled.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top \">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab ant-tabs-tab-disabled\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" aria-disabled=\"true\">Tab 2</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Tab 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/editable-card.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top  ant-tabs-card ant-tabs-editable-card ant-tabs-editable\">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-with-remove ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div><button type=\"button\" aria-label=\"remove\" tabindex=\"0\" class=\"ant-tabs-tab-remove\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n        </div>\n        <div class=\"ant-tabs-tab ant-tabs-tab-with-remove\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div><button type=\"button\" aria-label=\"remove\" tabindex=\"0\" class=\"ant-tabs-tab-remove\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></button>\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div><button type=\"button\" class=\"ant-tabs-nav-add\" aria-label=\"Add tab\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span></button>\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button><button type=\"button\" class=\"ant-tabs-nav-add\" aria-label=\"Add tab\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span></button>\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of Tab 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/extra.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top \">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <div class=\"ant-tabs-extra-content\"><button class=\"ant-btn ant-btn-default tabs-extra-demo-button\" type=\"button\">\n        <!----><span>Left Extra Action</span>\n      </button></div>\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <div class=\"ant-tabs-extra-content\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n        <!----><span>Right Extra Action</span>\n      </button></div>\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of tab 1</div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/icon.vue correctly 1`] = `\n<div class=\"ant-tabs ant-tabs-top \">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\"><span><span role=\"img\" aria-label=\"apple\" class=\"anticon anticon-apple\"><svg focusable=\"false\" class=\"\" data-icon=\"apple\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z\"></path></svg></span> Tab 1 </span></div>\n          <!---->\n        </div>\n        <div class=\"ant-tabs-tab\">\n          <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\"><span><span role=\"img\" aria-label=\"android\" class=\"anticon anticon-android\"><svg focusable=\"false\" class=\"\" data-icon=\"android\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z\"></path></svg></span> Tab 2 </span></div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <!---->\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-top\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\"> Tab 1 </div>\n      <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n        <!---->\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/size.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 16px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"small\"><span class=\"ant-radio-button-inner\"></span></span><span>Small</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"default\"><span class=\"ant-radio-button-inner\"></span></span><span>Default</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"large\"><span class=\"ant-radio-button-inner\"></span></span><span>Large</span></label></div>\n  <div class=\"ant-tabs ant-tabs-top  ant-tabs-small\">\n    <div role=\"tablist\" class=\"ant-tabs-nav\">\n      <!---->\n      <div class=\"ant-tabs-nav-wrap\">\n        <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n          <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n            <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 1</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 2</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab 3</div>\n            <!---->\n          </div>\n          <!---->\n          <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n        </div>\n      </div>\n      <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n        <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs-content-holder\">\n      <div class=\"ant-tabs-content ant-tabs-content-top\">\n        <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of tab 1</div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tabs/demo/slide.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 8px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"top\"><span class=\"ant-radio-button-inner\"></span></span><span>Horizontal</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"left\"><span class=\"ant-radio-button-inner\"></span></span><span>Vertical</span></label></div>\n  <div style=\"height: 200px;\" class=\"ant-tabs ant-tabs-top \">\n    <div role=\"tablist\" class=\"ant-tabs-nav\">\n      <!---->\n      <div class=\"ant-tabs-nav-wrap\">\n        <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n          <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n            <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-1</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-2</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-3</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-4</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-5</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-6</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-7</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-8</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-9</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-10</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-11</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-12</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-13</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-14</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-15</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-16</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-17</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-18</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-19</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-20</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-21</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-22</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-23</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-24</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-25</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-26</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-27</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-28</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-29</div>\n            <!---->\n          </div>\n          <div class=\"ant-tabs-tab\">\n            <div role=\"tab\" aria-selected=\"false\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">Tab-30</div>\n            <!---->\n          </div>\n          <!---->\n          <div class=\"ant-tabs-ink-bar ant-tabs-ink-bar-animated\"></div>\n        </div>\n      </div>\n      <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n        <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n        <!---->\n      </div>\n      <!---->\n      <!---->\n    </div>\n    <div class=\"ant-tabs-content-holder\">\n      <div class=\"ant-tabs-content ant-tabs-content-top\">\n        <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">Content of tab 1</div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n        <div role=\"tabpanel\" tabindex=\"-1\" aria-hidden=\"true\" style=\"display: none;\" class=\"ant-tabs-tabpane\">\n          <!---->\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/tabs/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Tabs tabPosition remove card 1`] = `\n<div class=\"ant-tabs ant-tabs-left \">\n  <div role=\"tablist\" class=\"ant-tabs-nav\">\n    <!---->\n    <div class=\"ant-tabs-nav-wrap\">\n      <div class=\"ant-tabs-nav-list\" style=\"transform: translate(0px, 0px);\">\n        <div class=\"ant-tabs-tab ant-tabs-tab-active\">\n          <div role=\"tab\" aria-selected=\"true\" class=\"ant-tabs-tab-btn\" tabindex=\"0\">foo</div>\n          <!---->\n        </div>\n        <!---->\n        <div class=\"ant-tabs-ink-bar\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tabs-nav-operations ant-tabs-nav-operations-hidden\">\n      <!----><button type=\"button\" class=\"ant-tabs-nav-more\" style=\"visibility: hidden; order: 1;\" tabindex=\"-1\" aria-hidden=\"true\" aria-haspopup=\"listbox\" aria-controls=\"null-more-popup\" id=\"null-more\" aria-expanded=\"false\"><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <div class=\"ant-tabs-extra-content\">xxx</div>\n    <!---->\n  </div>\n  <div class=\"ant-tabs-content-holder\">\n    <div class=\"ant-tabs-content ant-tabs-content-left\">\n      <div role=\"tabpanel\" tabindex=\"0\" aria-hidden=\"false\" class=\"ant-tabs-tabpane ant-tabs-tabpane-active\">foo</div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/tabs/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tabs', { skip: ['position'] });\n"
  },
  {
    "path": "components/tabs/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Tabs, { TabPane } from '..';\n\ndescribe('Tabs', () => {\n  describe('editable-card', () => {\n    let handleEdit;\n    let wrapper;\n\n    beforeEach(() => {\n      handleEdit = jest.fn();\n      wrapper = mount({\n        render() {\n          return (\n            <Tabs type=\"editable-card\" onEdit={handleEdit}>\n              <TabPane tab=\"foo\" key=\"1\">\n                foo\n              </TabPane>\n            </Tabs>\n          );\n        },\n      });\n    });\n\n    it('add card', () => {\n      wrapper.find('.ant-tabs-nav-add').trigger('click');\n      expect(handleEdit.mock.calls[0][1]).toBe('add');\n    });\n\n    it('remove card', () => {\n      wrapper.find('.anticon-close').trigger('click');\n      expect(handleEdit).toBeCalledWith('1', 'remove');\n    });\n  });\n\n  describe('tabPosition', () => {\n    it('remove card', () => {\n      const wrapper = mount({\n        render() {\n          return (\n            <Tabs tabPosition=\"left\" v-slots={{ rightExtra: () => 'xxx' }}>\n              <TabPane tab=\"foo\" key=\"1\">\n                foo\n              </TabPane>\n            </Tabs>\n          );\n        },\n      });\n      expect(wrapper.html()).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "components/tabs/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n默认选中第一项。\n\n## en-US\nDefault activate first tab.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\">\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of Tab Pane 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\" force-render>Content of Tab Pane 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab Pane 3</a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/card-top.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 卡片式页签容器\n  en-US: Container of card type Tab\n---\n\n## zh-CN\n\n用于容器顶部，需要一点额外的样式覆盖。\n\n## en-US\nShould be used at the top of container, needs to override styles.\n\n</docs>\n\n<template>\n  <div class=\"card-container\">\n    <a-tabs v-model:activeKey=\"activeKey\" type=\"card\">\n      <a-tab-pane key=\"1\" tab=\"Tab Title 1\">\n        <p>Content of Tab Pane 1</p>\n        <p>Content of Tab Pane 1</p>\n        <p>Content of Tab Pane 1</p>\n      </a-tab-pane>\n      <a-tab-pane key=\"2\" tab=\"Tab Title 2\">\n        <p>Content of Tab Pane 2</p>\n        <p>Content of Tab Pane 2</p>\n        <p>Content of Tab Pane 2</p>\n      </a-tab-pane>\n      <a-tab-pane key=\"3\" tab=\"Tab Title 3\">\n        <p>Content of Tab Pane 3</p>\n        <p>Content of Tab Pane 3</p>\n        <p>Content of Tab Pane 3</p>\n      </a-tab-pane>\n    </a-tabs>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('2');\n</script>\n\n<style scoped>\n.card-container p {\n  margin: 0;\n}\n.card-container > .ant-tabs-card .ant-tabs-content {\n  height: 120px;\n  margin-top: -16px;\n}\n.card-container > .ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane {\n  padding: 16px;\n  background: #fff;\n}\n.card-container > .ant-tabs-card > .ant-tabs-nav::before {\n  display: none;\n}\n.card-container > .ant-tabs-card .ant-tabs-tab,\n[data-theme='compact'] .card-container > .ant-tabs-card .ant-tabs-tab {\n  background: transparent;\n  border-color: transparent;\n}\n.card-container > .ant-tabs-card .ant-tabs-tab-active,\n[data-theme='compact'] .card-container > .ant-tabs-card .ant-tabs-tab-active {\n  background: #fff;\n  border-color: #fff;\n}\n#components-tabs-demo-card-top .code-box-demo {\n  padding: 24px;\n  overflow: hidden;\n  background: #f5f5f5;\n}\n[data-theme='compact'] .card-container > .ant-tabs-card .ant-tabs-content {\n  height: 120px;\n  margin-top: -8px;\n}\n[data-theme='dark'] .card-container > .ant-tabs-card .ant-tabs-tab {\n  background: transparent;\n  border-color: transparent;\n}\n[data-theme='dark'] #components-tabs-demo-card-top .code-box-demo {\n  background: #000;\n}\n[data-theme='dark'] .card-container > .ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane {\n  background: #141414;\n}\n[data-theme='dark'] .card-container > .ant-tabs-card .ant-tabs-tab-active {\n  background: #141414;\n  border-color: #141414;\n}\n</style>\n"
  },
  {
    "path": "components/tabs/demo/card.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 卡片式页签\n  en-US: Card type tab\n---\n\n## zh-CN\n\n另一种样式的页签，不提供对应的垂直样式。\n\n## en-US\n\nAnother type Tabs, which doesn't support vertical mode.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\" type=\"card\">\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of Tab Pane 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\">Content of Tab Pane 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab Pane 3</a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/centered.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 居中\n  en-US: Centered\n---\n\n## zh-CN\n\n标签居中展示。\n\n## en-US\n\nCentered tabs.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\" centered>\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of Tab Pane 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\" force-render>Content of Tab Pane 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab Pane 3</a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/custom-add-trigger.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 自定义新增页签触发器\n  en-US: Customized trigger of new tab\n---\n\n## zh-CN\n\n隐藏默认的页签增加图标，给自定义触发器绑定事件。\n\n## en-US\n\nHide default plus icon, and bind event for customized trigger.\n\n</docs>\n\n<template>\n  <div>\n    <div :style=\"{ marginBottom: '16px' }\">\n      <a-button @click=\"add\">ADD</a-button>\n    </div>\n    <a-tabs v-model:activeKey=\"activeKey\" hide-add type=\"editable-card\" @edit=\"onEdit\">\n      <a-tab-pane v-for=\"pane in panes\" :key=\"pane.key\" :tab=\"pane.title\" :closable=\"pane.closable\">\n        {{ pane.content }}\n      </a-tab-pane>\n    </a-tabs>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\n\nconst panes = ref<{ title: string; content: string; key: string; closable?: boolean }[]>(\n  new Array(2).fill(null).map((_, index) => {\n    const id = String(index + 1);\n    return { title: `Tab ${id}`, content: `Content of Tab Pane ${id}`, key: id };\n  }),\n);\nconst activeKey = ref(panes.value[0].key);\nconst newTabIndex = ref(0);\n\nconst add = () => {\n  activeKey.value = `newTab${newTabIndex.value++}`;\n  panes.value.push({\n    title: `New Tab ${activeKey.value}`,\n    content: `Content of new Tab ${activeKey.value}`,\n    key: activeKey.value,\n  });\n};\n\nconst remove = (targetKey: string) => {\n  let lastIndex = 0;\n  panes.value.forEach((pane, i) => {\n    if (pane.key === targetKey) {\n      lastIndex = i - 1;\n    }\n  });\n  panes.value = panes.value.filter(pane => pane.key !== targetKey);\n  if (panes.value.length && activeKey.value === targetKey) {\n    if (lastIndex >= 0) {\n      activeKey.value = panes.value[lastIndex].key;\n    } else {\n      activeKey.value = panes.value[0].key;\n    }\n  }\n};\n\nconst onEdit = (targetKey: string) => {\n  remove(targetKey);\n};\n</script>\n"
  },
  {
    "path": "components/tabs/demo/custom-tab-bar.vue",
    "content": "<docs>\n---\norder: 11\ntitle:\n  zh-CN: 自定义页签头\n  en-US: Customized\n---\n\n## zh-CN\n自定义页签头\n\n## en-US\n\nCustomized bar of tab.\n\n</docs>\n\n<template>\n  <div>\n    <a-tabs v-model:activeKey=\"activeKey\">\n      <a-tab-pane key=\"1\" tab=\"Tab 1\" style=\"height: 200px\">Content of Tab Pane 1</a-tab-pane>\n      <a-tab-pane key=\"2\" tab=\"Tab 2\" force-render>Content of Tab Pane 2</a-tab-pane>\n      <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab Pane 3</a-tab-pane>\n      <template #renderTabBar=\"{ DefaultTabBar, ...props }\">\n        <component :is=\"DefaultTabBar\" v-bind=\"props\" :style=\"{ opacity: 0.5 }\" />\n      </template>\n    </a-tabs>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/disabled.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 禁用\n  en-US: Disabled\n---\n\n## zh-CN\n\n禁用某一项。\n\n## en-US\n\nDisabled a tab.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\">\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Tab 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\" disabled>Tab 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Tab 3</a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/editable-card.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 新增和关闭页签\n  en-US: Add & close tab\n---\n\n## zh-CN\n\n只有卡片样式的页签支持新增和关闭选项。\n使用 `:closable=\"false\"` 禁止关闭。\n\n## en-US\nOnly card type Tabs support adding & closable.\n+Use `:closable=\"false\"` to disable close.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\" type=\"editable-card\" @edit=\"onEdit\">\n    <a-tab-pane v-for=\"pane in panes\" :key=\"pane.key\" :tab=\"pane.title\" :closable=\"pane.closable\">\n      {{ pane.content }}\n    </a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst panes = ref<{ title: string; content: string; key: string; closable?: boolean }[]>([\n  { title: 'Tab 1', content: 'Content of Tab 1', key: '1' },\n  { title: 'Tab 2', content: 'Content of Tab 2', key: '2' },\n  { title: 'Tab 3', content: 'Content of Tab 3', key: '3', closable: false },\n]);\n\nconst activeKey = ref(panes.value[0].key);\n\nconst newTabIndex = ref(0);\n\nconst add = () => {\n  activeKey.value = `newTab${++newTabIndex.value}`;\n  panes.value.push({ title: 'New Tab', content: 'Content of new Tab', key: activeKey.value });\n};\n\nconst remove = (targetKey: string) => {\n  let lastIndex = 0;\n  panes.value.forEach((pane, i) => {\n    if (pane.key === targetKey) {\n      lastIndex = i - 1;\n    }\n  });\n  panes.value = panes.value.filter(pane => pane.key !== targetKey);\n  if (panes.value.length && activeKey.value === targetKey) {\n    if (lastIndex >= 0) {\n      activeKey.value = panes.value[lastIndex].key;\n    } else {\n      activeKey.value = panes.value[0].key;\n    }\n  }\n};\n\nconst onEdit = (targetKey: string | MouseEvent, action: string) => {\n  if (action === 'add') {\n    add();\n  } else {\n    remove(targetKey as string);\n  }\n};\n</script>\n"
  },
  {
    "path": "components/tabs/demo/extra.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 附加内容\n  en-US: Extra Content\n---\n\n## zh-CN\n\n可以在页签右边添加附加操作。\n\n## en-US\n\nYou can add extra actions to the right of Tabs.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\">\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of tab 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\">Content of tab 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of tab 3</a-tab-pane>\n    <template #leftExtra>\n      <a-button class=\"tabs-extra-demo-button\">Left Extra Action</a-button>\n    </template>\n    <template #rightExtra>\n      <a-button>Right Extra Action</a-button>\n    </template>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n\n<style scoped>\n.tabs-extra-demo-button {\n  margin-right: 16px;\n}\n\n.ant-row-rtl .tabs-extra-demo-button {\n  margin-right: 0;\n  margin-left: 16px;\n}\n</style>\n"
  },
  {
    "path": "components/tabs/demo/icon.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 图标\n  en-US: Icon\n---\n\n## zh-CN\n\n有图标的标签。\n\n## en-US\n\nThe Tab with Icon.\n\n</docs>\n\n<template>\n  <a-tabs v-model:activeKey=\"activeKey\">\n    <a-tab-pane key=\"1\">\n      <template #tab>\n        <span>\n          <apple-outlined />\n          Tab 1\n        </span>\n      </template>\n      Tab 1\n    </a-tab-pane>\n    <a-tab-pane key=\"2\">\n      <template #tab>\n        <span>\n          <android-outlined />\n          Tab 2\n        </span>\n      </template>\n      Tab 2\n    </a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { AppleOutlined, AndroidOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Disabled />\n    <Centered />\n    <Icon />\n    <Slide />\n    <Extra />\n    <Size />\n    <Position />\n    <Card />\n    <EditableCard />\n    <CardTop />\n    <CustomAddTrigger />\n    <CustomTabBar />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport CardTop from './card-top.vue';\nimport Card from './card.vue';\nimport CustomAddTrigger from './custom-add-trigger.vue';\nimport Disabled from './disabled.vue';\nimport EditableCard from './editable-card.vue';\nimport Extra from './extra.vue';\nimport Icon from './icon.vue';\nimport Position from './position.vue';\nimport Size from './size.vue';\nimport Slide from './slide.vue';\nimport CustomTabBar from './custom-tab-bar.vue';\nimport Centered from './centered.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  category: 'Components',\n  subtitle: '标签页',\n  type: 'Data Display',\n  title: 'Tabs',\n  CN,\n  US,\n  components: {\n    Centered,\n    Basic,\n    Card,\n    CardTop,\n    CustomAddTrigger,\n    Disabled,\n    EditableCard,\n    Extra,\n    Icon,\n    Position,\n    Size,\n    Slide,\n    CustomTabBar,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tabs/demo/position.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 位置\n  en-US: Position\n---\n\n## zh-CN\n\n有四个位置，`tabPosition=\"left|right|top|bottom\"`。在移动端下，`bottom|right` 会自动切换成 `top`。\n\n## en-US\n\nTab's position: left, right, top or bottom.  Will auto switch to `top` in mobile.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"tabPosition\" style=\"margin: 8px\">\n    <a-radio-button value=\"top\">top</a-radio-button>\n    <a-radio-button value=\"bottom\">bottom</a-radio-button>\n    <a-radio-button value=\"left\">left</a-radio-button>\n    <a-radio-button value=\"right\">right</a-radio-button>\n  </a-radio-group>\n  <a-tabs v-model:activeKey=\"activeKey\" :tab-position=\"tabPosition\" animated>\n    <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of Tab 1</a-tab-pane>\n    <a-tab-pane key=\"2\" tab=\"Tab 2\">Content of Tab 2</a-tab-pane>\n    <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of Tab 3</a-tab-pane>\n  </a-tabs>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { TabsProps } from 'ant-design-vue/es/tabs';\nconst tabPosition = ref<TabsProps['tabPosition']>('top');\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/size.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 大小\n  en-US: Size\n---\n\n## zh-CN\n\n大号页签用在页头区域，小号用在弹出框等较狭窄的容器内。\n\n## en-US\nLarge size tabs are usally used in page header, and small size could be used in Modal.\n\n</docs>\n\n<template>\n  <div>\n    <a-radio-group v-model:value=\"size\" style=\"margin-bottom: 16px\">\n      <a-radio-button value=\"small\">Small</a-radio-button>\n      <a-radio-button value=\"default\">Default</a-radio-button>\n      <a-radio-button value=\"large\">Large</a-radio-button>\n    </a-radio-group>\n    <a-tabs v-model:activeKey=\"activeKey\" :size=\"size\">\n      <a-tab-pane key=\"1\" tab=\"Tab 1\">Content of tab 1</a-tab-pane>\n      <a-tab-pane key=\"2\" tab=\"Tab 2\">Content of tab 2</a-tab-pane>\n      <a-tab-pane key=\"3\" tab=\"Tab 3\">Content of tab 3</a-tab-pane>\n    </a-tabs>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TabsProps } from 'ant-design-vue';\nconst size = ref<TabsProps['size']>('small');\nconst activeKey = ref('1');\n</script>\n"
  },
  {
    "path": "components/tabs/demo/slide.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 滑动\n  en-US: Slide\n---\n\n## zh-CN\n\n可以左右、上下滑动，容纳更多标签。\n\n## en-US\n\nIn order to fit in more tabs, they can slide left and right (or up and down).\n\n</docs>\n\n<template>\n  <div>\n    <a-radio-group v-model:value=\"mode\" :style=\"{ marginBottom: '8px' }\">\n      <a-radio-button value=\"top\">Horizontal</a-radio-button>\n      <a-radio-button value=\"left\">Vertical</a-radio-button>\n    </a-radio-group>\n    <a-tabs\n      v-model:activeKey=\"activeKey\"\n      :tab-position=\"mode\"\n      :style=\"{ height: '200px' }\"\n      @tabScroll=\"callback\"\n    >\n      <a-tab-pane v-for=\"i in 30\" :key=\"i\" :tab=\"`Tab-${i}`\">Content of tab {{ i }}</a-tab-pane>\n    </a-tabs>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TabsProps } from 'ant-design-vue';\nconst mode = ref<TabsProps['tabPosition']>('top');\nconst activeKey = ref(1);\nconst callback: TabsProps['onTabScroll'] = val => {\n  console.log(val);\n};\n</script>\n"
  },
  {
    "path": "components/tabs/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Tabs\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*72NDQqXkyOEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8HMoTZUoSGoAAAAAAAAAAAAADrJ8AQ/original\n---\n\nTabs make it easy to switch between different views.\n\n### When To Use\n\nAnt Design has 3 types of Tabs for different situations.\n\n- Card Tabs: for managing too many closeable views.\n- Normal Tabs: for functional aspects of a page.\n- [RadioButton](/ant-design/components/radio/): for secondary tabs.\n\n## API\n\n### Tabs\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| activeKey(v-model) | Current TabPane's key | string | - |  |\n| animated | Whether to change tabs with animation. Only works while tabPosition=`\"top\"` \\| `\"bottom\"` | boolean \\| {inkBar:boolean, tabPane:boolean} | `true`, `false` when `type=\"card\"` |  |\n| centered | Whether to display the labels in the center | boolean | false | 3.0 |\n| destroyInactiveTabPane | Whether destroy inactive TabPane when change tab | boolean | false |  |\n| hideAdd | Hide plus icon or not. Only works while `type=\"editable-card\"` | boolean | `false` | } |\n| size | preset tab bar size | `large` \\| `middle` \\| `small` | `middle` |  |\n| tabBarGutter | The gap between tabs | number | - |  |\n| tabBarStyle | Tab bar style object | CSSProperties | - |  |\n| tabPosition | Position of tabs | `top` \\| `right` \\| `bottom` \\| `left` | `top` |  |\n| type | Basic style of tabs | `line` \\| `card` \\| `editable-card` | `line` |  |\n\n### Tabs Slots\n\n| Slot Name    | Description                    | Type              |     |\n| ------------ | ------------------------------ | ----------------- | --- |\n| addIcon      | Customize add icon             | -                 | -   |\n| leftExtra    | Extra content in tab bar left  | -                 | -   |\n| moreIcon     | The custom icon of ellipsis    | -                 | -   |\n| renderTabBar | Replace the TabBar             | { DefaultTabBar } |     |\n| rightExtra   | Extra content in tab bar right | -                 | -   |\n\n### Tabs Events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| change | Callback executed when active tab is changed | Function(activeKey) {} |\n| edit | Callback executed when tab is added or removed. Only works while `type=\"editable-card\"` | (action === 'add' ? event : targetKey, action): void |\n| nextClick | Callback executed when next button is clicked | Function |\n| prevClick | Callback executed when prev button is clicked | Function |\n| tabClick | Callback executed when tab is clicked | Function |\n\n### Tabs.TabPane\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| forceRender | Forced render of content in tabs, not lazy render after clicking on tabs | boolean | false |\n| key | TabPane's key | string | - |\n| tab | Show text in TabPane's head | string\\|slot | - |\n\n### Tabs.TabPane Slots\n\n| Slot Name | Description                                                   | Arguments |\n| --------- | ------------------------------------------------------------- | --------- |\n| closeIcon | Customize close icon, Only works while `type=\"editable-card\"` | -         |\n| tab       | Show text in TabPane's head                                   | -         |\n"
  },
  {
    "path": "components/tabs/index.ts",
    "content": "import type { App, Plugin } from 'vue';\nimport Tabs, { TabPane } from './src';\nexport type { TabsProps, TabPaneProps } from './src';\n\nTabs.TabPane = TabPane;\n\n/* istanbul ignore next */\nTabs.install = function (app: App) {\n  app.component(Tabs.name, Tabs);\n  app.component(TabPane.name, TabPane);\n  return app;\n};\n\nexport default Tabs as typeof Tabs &\n  Plugin & {\n    readonly TabPane: typeof TabPane;\n  };\n\nexport { TabPane };\n"
  },
  {
    "path": "components/tabs/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 标签页\ntype: 数据展示\ntitle: Tabs\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*72NDQqXkyOEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8HMoTZUoSGoAAAAAAAAAAAAADrJ8AQ/original\n---\n\n选项卡切换组件。\n\n## 何时使用\n\n提供平级的区域将大块内容进行收纳和展现，保持界面整洁。\n\nAnt Design 依次提供了三级选项卡，分别用于不同的场景。\n\n- 卡片式的页签，提供可关闭的样式，常用于容器顶部。\n- 标准线条式页签，用于容器内部的主功能切换，这是最常用的 Tabs。\n- [RadioButton](/ant-design/components/radio-cn/) 可作为更次级的页签来使用。\n\n## API\n\n### Tabs\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| activeKey(v-model) | 当前激活 tab 面板的 key | string | - |  |  |\n| animated | 是否使用动画切换 Tabs，在 tabPosition=`\"top\"` \\| `\"bottom\"` 时有效 | boolean \\| {inkBar:boolean, tabPane:boolean} | true, 当 type=\"card\" 时为 false |  |\n| centered | 标签居中展示 | boolean | false | 3.0 |  |\n| destroyInactiveTabPane | 被隐藏时是否销毁 DOM 结构 | boolean | false |  |  |\n| hideAdd | 是否隐藏加号图标，在 `type=\"editable-card\"` 时有效 | boolean | false |  |  |\n| size | 大小，提供 `large` `middle` 和 `small` 三种大小 | string | `middle` |  |  |\n| tabBarGutter | tabs 之间的间隙 | number | - |  |  |\n| tabBarStyle | tab bar 的样式对象 | CSSProperties | - |  |  |\n| tabPosition | 页签位置，可选值有 `top` `right` `bottom` `left` | string | `top` |  |  |\n| type | 页签的基本样式，可选 `line`、`card` `editable-card` 类型 | string | `line` |  |  |\n\n### Tabs 插槽\n\n| 插槽名称     | 说明                            | 参数              |     |\n| ------------ | ------------------------------- | ----------------- | --- |\n| addIcon      | 自定义添加按钮                  | -                 | -   |\n| leftExtra    | tab bar 上左侧额外的元素        | -                 | -   |\n| moreIcon     | 自定义折叠 icon                 | -                 | -   |\n| renderTabBar | 替换 TabBar，用于二次封装标签头 | { DefaultTabBar } |     |\n| rightExtra   | tab bar 上右侧额外的元素        | -                 | -   |\n\n### Tabs 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| change | 切换面板的回调 | Function(activeKey) {} |\n| edit | 新增和删除页签的回调，在 `type=\"editable-card\"` 时有效 | (action === 'add' ? event : targetKey, action): void |\n| tabClick | tab 被点击的回调 | Function |\n| tabScroll | 滚动 TabBar 时触发 | { direction: 'left' \\| 'right' \\| 'top' \\| 'bottom' } |\n\n### Tabs.TabPane\n\n| 参数        | 说明                      | 类型         | 默认值 |\n| ----------- | ------------------------- | ------------ | ------ |\n| forceRender | 被隐藏时是否渲染 DOM 结构 | boolean      | false  |\n| key         | 对应 activeKey            | string       | -      |\n| tab         | 选项卡头显示文字          | string\\|slot | -      |\n\n### Tabs.TabPane 插槽\n\n| 插槽名称  | 说明                                            | 参数 |\n| --------- | ----------------------------------------------- | ---- |\n| closeIcon | 自定义关闭图标，`在 type=\"editable-card\"`时有效 | -    |\n| tab       | 选项卡头显示文字                                | -    |\n"
  },
  {
    "path": "components/tabs/src/TabContext.ts",
    "content": "import type { Tab } from './interface';\nimport type { PropType, InjectionKey, Ref } from 'vue';\nimport { provide, inject, defineComponent, toRefs, ref } from 'vue';\n\nexport interface TabContextProps {\n  tabs: Ref<Tab[]>;\n  prefixCls: Ref<string>;\n}\n\nconst TabsContextKey: InjectionKey<TabContextProps> = Symbol('tabsContextKey');\n\nexport const useProvideTabs = (props: TabContextProps) => {\n  provide(TabsContextKey, props);\n};\n\nexport const useInjectTabs = () => {\n  return inject(TabsContextKey, { tabs: ref([]), prefixCls: ref() });\n};\n\nconst TabsContextProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TabsContextProvider',\n  inheritAttrs: false,\n  props: {\n    tabs: { type: Object as PropType<TabContextProps['tabs']>, default: undefined },\n    prefixCls: { type: String, default: undefined },\n  },\n  setup(props, { slots }) {\n    useProvideTabs(toRefs(props));\n    return () => slots.default?.();\n  },\n});\n\nexport default TabsContextProvider;\n"
  },
  {
    "path": "components/tabs/src/TabNavList/AddButton.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport type { EditableConfig, TabsLocale } from '../interface';\n\nexport interface AddButtonProps {\n  prefixCls: string;\n  editable?: EditableConfig;\n  locale?: TabsLocale;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AddButton',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    editable: { type: Object as PropType<EditableConfig> },\n    locale: { type: Object as PropType<TabsLocale>, default: undefined as TabsLocale },\n  },\n  setup(props, { expose, attrs }) {\n    const domRef = ref();\n    expose({\n      domRef,\n    });\n    return () => {\n      const { prefixCls, editable, locale } = props;\n      if (!editable || editable.showAdd === false) {\n        return null;\n      }\n\n      return (\n        <button\n          ref={domRef}\n          type=\"button\"\n          class={`${prefixCls}-nav-add`}\n          style={attrs.style as CSSProperties}\n          aria-label={locale?.addAriaLabel || 'Add tab'}\n          onClick={event => {\n            editable.onEdit('add', {\n              event,\n            });\n          }}\n        >\n          {editable.addIcon ? editable.addIcon() : '+'}\n        </button>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/TabNavList/OperationNode.tsx",
    "content": "import Menu, { MenuItem } from '../../../menu';\nimport Dropdown from '../../../vc-dropdown';\nimport type { Tab, TabsLocale, EditableConfig } from '../interface';\nimport AddButton from './AddButton';\nimport type { CustomSlotsType, Key } from '../../../_util/type';\nimport { functionType } from '../../../_util/type';\nimport KeyCode from '../../../_util/KeyCode';\nimport type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport classNames from '../../../_util/classNames';\nimport { defineComponent, watch, computed, onMounted } from 'vue';\nimport PropTypes from '../../../_util/vue-types';\nimport useState from '../../../_util/hooks/useState';\nimport EllipsisOutlined from '@ant-design/icons-vue/EllipsisOutlined';\nimport { useProvideOverride } from '../../../menu/src/OverrideContext';\n\nexport const operationNodeProps = {\n  prefixCls: { type: String },\n  id: { type: String },\n  tabs: { type: Object as PropType<(Tab & { closeIcon?: () => any })[]> },\n  rtl: { type: Boolean },\n  tabBarGutter: { type: Number },\n  activeKey: { type: [String, Number] },\n  mobile: { type: Boolean },\n  moreIcon: PropTypes.any,\n  moreTransitionName: { type: String },\n  editable: { type: Object as PropType<EditableConfig> },\n  locale: { type: Object as PropType<TabsLocale>, default: undefined as TabsLocale },\n  removeAriaLabel: String,\n  onTabClick: { type: Function as PropType<(key: Key, e: MouseEvent | KeyboardEvent) => void> },\n  popupClassName: String,\n  getPopupContainer: functionType<\n    ((triggerNode?: HTMLElement | undefined) => HTMLElement) | undefined\n  >(),\n};\n\nexport type OperationNodeProps = Partial<ExtractPropTypes<typeof operationNodeProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OperationNode',\n  inheritAttrs: false,\n  props: operationNodeProps,\n  emits: ['tabClick'],\n  slots: Object as CustomSlotsType<{\n    moreIcon?: any;\n    default?: any;\n  }>,\n  setup(props, { attrs, slots }) {\n    // ======================== Dropdown ========================\n    const [open, setOpen] = useState(false);\n    const [selectedKey, setSelectedKey] = useState<Key>(null);\n    const selectOffset = (offset: -1 | 1) => {\n      const enabledTabs = props.tabs.filter(tab => !tab.disabled);\n      let selectedIndex = enabledTabs.findIndex(tab => tab.key === selectedKey.value) || 0;\n      const len = enabledTabs.length;\n\n      for (let i = 0; i < len; i += 1) {\n        selectedIndex = (selectedIndex + offset + len) % len;\n        const tab = enabledTabs[selectedIndex];\n        if (!tab.disabled) {\n          setSelectedKey(tab.key);\n          return;\n        }\n      }\n    };\n\n    const onKeyDown = (e: KeyboardEvent) => {\n      const { which } = e;\n\n      if (!open.value) {\n        if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n          setOpen(true);\n          e.preventDefault();\n        }\n        return;\n      }\n\n      switch (which) {\n        case KeyCode.UP:\n          selectOffset(-1);\n          e.preventDefault();\n          break;\n        case KeyCode.DOWN:\n          selectOffset(1);\n          e.preventDefault();\n          break;\n        case KeyCode.ESC:\n          setOpen(false);\n          break;\n        case KeyCode.SPACE:\n        case KeyCode.ENTER:\n          if (selectedKey.value !== null) props.onTabClick(selectedKey.value, e);\n          break;\n      }\n    };\n    const popupId = computed(() => `${props.id}-more-popup`);\n\n    const selectedItemId = computed(() =>\n      selectedKey.value !== null ? `${popupId.value}-${selectedKey.value}` : null,\n    );\n\n    const onRemoveTab = (event: MouseEvent | KeyboardEvent, key: Key) => {\n      event.preventDefault();\n      event.stopPropagation();\n      props.editable.onEdit('remove', {\n        key,\n        event,\n      });\n    };\n\n    onMounted(() => {\n      watch(\n        selectedKey,\n        () => {\n          const ele = document.getElementById(selectedItemId.value);\n          if (ele && ele.scrollIntoView) {\n            ele.scrollIntoView(false);\n          }\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n\n    watch(open, () => {\n      if (!open.value) {\n        setSelectedKey(null);\n      }\n    });\n    useProvideOverride({});\n    return () => {\n      const {\n        prefixCls,\n        id,\n        tabs,\n        locale,\n        mobile,\n        moreIcon = slots.moreIcon?.() || <EllipsisOutlined />,\n        moreTransitionName,\n        editable,\n        tabBarGutter,\n        rtl,\n        onTabClick,\n        popupClassName,\n      } = props;\n      if (!tabs.length) return null;\n      const dropdownPrefix = `${prefixCls}-dropdown`;\n\n      const dropdownAriaLabel = locale?.dropdownAriaLabel;\n\n      // ========================= Render =========================\n      const moreStyle: CSSProperties = {\n        [rtl ? 'marginRight' : 'marginLeft']: tabBarGutter,\n      };\n      if (!tabs.length) {\n        moreStyle.visibility = 'hidden';\n        moreStyle.order = 1;\n      }\n\n      const overlayClassName = classNames({\n        [`${dropdownPrefix}-rtl`]: rtl,\n        [`${popupClassName}`]: true,\n      });\n      const moreNode = mobile ? null : (\n        <Dropdown\n          prefixCls={dropdownPrefix}\n          trigger={['hover']}\n          visible={open.value}\n          transitionName={moreTransitionName}\n          onVisibleChange={setOpen}\n          overlayClassName={overlayClassName}\n          mouseEnterDelay={0.1}\n          mouseLeaveDelay={0.1}\n          getPopupContainer={props.getPopupContainer}\n          v-slots={{\n            overlay: () => (\n              <Menu\n                onClick={({ key, domEvent }) => {\n                  onTabClick(key, domEvent);\n                  setOpen(false);\n                }}\n                id={popupId.value}\n                tabindex={-1}\n                role=\"listbox\"\n                aria-activedescendant={selectedItemId.value}\n                selectedKeys={[selectedKey.value]}\n                aria-label={\n                  dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n                }\n              >\n                {tabs.map(tab => {\n                  const removable = editable && tab.closable !== false && !tab.disabled;\n                  return (\n                    <MenuItem\n                      key={tab.key}\n                      id={`${popupId.value}-${tab.key}`}\n                      role=\"option\"\n                      aria-controls={id && `${id}-panel-${tab.key}`}\n                      disabled={tab.disabled}\n                    >\n                      <span>{typeof tab.tab === 'function' ? tab.tab() : tab.tab}</span>\n                      {removable && (\n                        <button\n                          type=\"button\"\n                          aria-label={props.removeAriaLabel || 'remove'}\n                          tabindex={0}\n                          class={`${dropdownPrefix}-menu-item-remove`}\n                          onClick={e => {\n                            e.stopPropagation();\n                            onRemoveTab(e, tab.key);\n                          }}\n                        >\n                          {tab.closeIcon?.() || editable.removeIcon?.() || '×'}\n                        </button>\n                      )}\n                    </MenuItem>\n                  );\n                })}\n              </Menu>\n            ),\n            default: () => (\n              <button\n                type=\"button\"\n                class={`${prefixCls}-nav-more`}\n                style={moreStyle}\n                tabindex={-1}\n                aria-hidden=\"true\"\n                aria-haspopup=\"listbox\"\n                aria-controls={popupId.value}\n                id={`${id}-more`}\n                aria-expanded={open.value}\n                onKeydown={onKeyDown}\n              >\n                {moreIcon}\n              </button>\n            ),\n          }}\n        ></Dropdown>\n      );\n\n      return (\n        <div\n          class={classNames(`${prefixCls}-nav-operations`, attrs.class)}\n          style={attrs.style as CSSProperties}\n        >\n          {moreNode}\n          <AddButton prefixCls={prefixCls} locale={locale} editable={editable} />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/TabNavList/TabNode.tsx",
    "content": "import type { Tab, EditableConfig } from '../interface';\nimport type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, computed, ref } from 'vue';\nimport type { FocusEventHandler } from '../../../_util/EventInterface';\nimport KeyCode from '../../../_util/KeyCode';\nimport classNames from '../../../_util/classNames';\n\nexport interface TabNodeProps {\n  id: string;\n  prefixCls: string;\n  tab: Tab;\n  active: boolean;\n  closable?: boolean;\n  editable?: EditableConfig;\n  onClick?: (e: MouseEvent | KeyboardEvent) => void;\n  onResize?: (width: number, height: number, left: number, top: number) => void;\n  renderWrapper?: (node: any) => any;\n  removeAriaLabel?: string;\n  onRemove: () => void;\n  onFocus: FocusEventHandler;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TabNode',\n  props: {\n    id: { type: String as PropType<string> },\n    prefixCls: { type: String as PropType<string> },\n    tab: { type: Object as PropType<Tab & { closeIcon?: () => any }> },\n    active: { type: Boolean },\n    closable: { type: Boolean },\n    editable: { type: Object as PropType<EditableConfig> },\n    onClick: { type: Function as PropType<(e: MouseEvent | KeyboardEvent) => void> },\n    onResize: {\n      type: Function as PropType<\n        (width: number, height: number, left: number, top: number) => void\n      >,\n    },\n    renderWrapper: { type: Function as PropType<(node: any) => any> },\n    removeAriaLabel: { type: String },\n    // onRemove: { type: Function as PropType<() => void> },\n    onFocus: { type: Function as PropType<FocusEventHandler> },\n  },\n  emits: ['click', 'resize', 'remove', 'focus'],\n  setup(props, { expose, attrs }) {\n    const domRef = ref();\n    function onInternalClick(e: MouseEvent | KeyboardEvent) {\n      if (props.tab?.disabled) {\n        return;\n      }\n      props.onClick(e);\n    }\n    expose({\n      domRef,\n    });\n    // onBeforeUnmount(() => {\n    //   props.onRemove();\n    // });\n    function onRemoveTab(event: MouseEvent | KeyboardEvent) {\n      event.preventDefault();\n      event.stopPropagation();\n      props.editable.onEdit('remove', {\n        key: props.tab?.key,\n        event,\n      });\n    }\n\n    const removable = computed(\n      () => props.editable && props.closable !== false && !props.tab?.disabled,\n    );\n    return () => {\n      const {\n        prefixCls,\n        id,\n        active,\n        tab: { key, tab, disabled, closeIcon },\n        renderWrapper,\n        removeAriaLabel,\n        editable,\n        onFocus,\n      } = props;\n      const tabPrefix = `${prefixCls}-tab`;\n      const node = (\n        <div\n          key={key}\n          ref={domRef}\n          class={classNames(tabPrefix, {\n            [`${tabPrefix}-with-remove`]: removable.value,\n            [`${tabPrefix}-active`]: active,\n            [`${tabPrefix}-disabled`]: disabled,\n          })}\n          style={attrs.style as CSSProperties}\n          onClick={onInternalClick}\n        >\n          {/* Primary Tab Button */}\n          <div\n            role=\"tab\"\n            aria-selected={active}\n            id={id && `${id}-tab-${key}`}\n            class={`${tabPrefix}-btn`}\n            aria-controls={id && `${id}-panel-${key}`}\n            aria-disabled={disabled}\n            tabindex={disabled ? null : 0}\n            onClick={e => {\n              e.stopPropagation();\n              onInternalClick(e);\n            }}\n            onKeydown={e => {\n              if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n                e.preventDefault();\n                onInternalClick(e);\n              }\n            }}\n            onFocus={onFocus}\n          >\n            {typeof tab === 'function' ? tab() : tab}\n          </div>\n\n          {/* Remove Button */}\n          {removable.value && (\n            <button\n              type=\"button\"\n              aria-label={removeAriaLabel || 'remove'}\n              tabindex={0}\n              class={`${tabPrefix}-remove`}\n              onClick={e => {\n                e.stopPropagation();\n                onRemoveTab(e);\n              }}\n            >\n              {closeIcon?.() || editable.removeIcon?.() || '×'}\n            </button>\n          )}\n        </div>\n      );\n      return renderWrapper ? renderWrapper(node) : node;\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/TabNavList/index.tsx",
    "content": "import { useRafState } from '../hooks/useRaf';\nimport TabNode from './TabNode';\nimport type {\n  TabSizeMap,\n  TabPosition,\n  RenderTabBar,\n  TabsLocale,\n  EditableConfig,\n  AnimatedConfig,\n  OnTabScroll,\n  TabBarExtraPosition,\n  TabBarExtraContent,\n} from '../interface';\nimport useOffsets from '../hooks/useOffsets';\nimport OperationNode from './OperationNode';\nimport { useInjectTabs } from '../TabContext';\nimport useTouchMove from '../hooks/useTouchMove';\nimport AddButton from './AddButton';\nimport { objectType, functionType } from '../../../_util/type';\nimport type { CustomSlotsType, Key } from '../../../_util/type';\nimport type { ExtractPropTypes, PropType, CSSProperties } from 'vue';\nimport { shallowRef, onBeforeUnmount, defineComponent, watch, watchEffect, computed } from 'vue';\nimport PropTypes from '../../../_util/vue-types';\nimport useSyncState from '../hooks/useSyncState';\nimport useState from '../../../_util/hooks/useState';\nimport raf from '../../../_util/raf';\nimport classNames from '../../../_util/classNames';\nimport ResizeObserver from '../../../vc-resize-observer';\nimport { toPx } from '../../../_util/util';\nimport useRefs from '../../../_util/hooks/useRefs';\nimport pick from 'lodash-es/pick';\n\nconst DEFAULT_SIZE = { width: 0, height: 0, left: 0, top: 0, right: 0 };\nexport const tabNavListProps = () => {\n  return {\n    id: { type: String },\n    tabPosition: { type: String as PropType<TabPosition> },\n    activeKey: { type: [String, Number] },\n    rtl: { type: Boolean },\n    animated: objectType<AnimatedConfig>(),\n    editable: objectType<EditableConfig>(),\n    moreIcon: PropTypes.any,\n    moreTransitionName: { type: String },\n    mobile: { type: Boolean },\n    tabBarGutter: { type: Number },\n    renderTabBar: { type: Function as PropType<RenderTabBar> },\n    locale: objectType<TabsLocale>(),\n    popupClassName: String,\n    getPopupContainer: functionType<\n      ((triggerNode?: HTMLElement | undefined) => HTMLElement) | undefined\n    >(),\n    onTabClick: {\n      type: Function as PropType<(activeKey: Key, e: MouseEvent | KeyboardEvent) => void>,\n    },\n    onTabScroll: { type: Function as PropType<OnTabScroll> },\n  };\n};\n\nexport type TabNavListProps = Partial<ExtractPropTypes<ReturnType<typeof tabNavListProps>>>;\n\ninterface ExtraContentProps {\n  position: TabBarExtraPosition;\n  prefixCls: string;\n  extra?: (info?: { position: 'left' | 'right' }) => TabBarExtraContent;\n}\n\nconst getTabSize = (tab: HTMLElement, containerRect: { x: number; y: number }) => {\n  // tabListRef\n  const { offsetWidth, offsetHeight, offsetTop, offsetLeft } = tab;\n  const { width, height, x, y } = tab.getBoundingClientRect();\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (Math.abs(width - offsetWidth) < 1) {\n    return [width, height, x - containerRect.x, y - containerRect.y];\n  }\n\n  return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\n\n// const getSize = (refObj: ShallowRef<HTMLElement>) => {\n//   const { offsetWidth = 0, offsetHeight = 0 } = refObj.value || {};\n\n//   // Use getBoundingClientRect to avoid decimal inaccuracy\n//   if (refObj.value) {\n//     const { width, height } = refObj.value.getBoundingClientRect();\n\n//     if (Math.abs(width - offsetWidth) < 1) {\n//       return [width, height];\n//     }\n//   }\n\n//   return [offsetWidth, offsetHeight];\n// };\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TabNavList',\n  inheritAttrs: false,\n  props: tabNavListProps(),\n  slots: Object as CustomSlotsType<{\n    moreIcon?: any;\n    leftExtra?: any;\n    rightExtra?: any;\n    tabBarExtraContent?: any;\n    default?: any;\n  }>,\n  emits: ['tabClick', 'tabScroll'],\n  setup(props, { attrs, slots }) {\n    const { tabs, prefixCls } = useInjectTabs();\n    const tabsWrapperRef = shallowRef<HTMLDivElement>();\n    const tabListRef = shallowRef<HTMLDivElement>();\n    const operationsRef = shallowRef<{ $el: HTMLDivElement }>();\n    const innerAddButtonRef = shallowRef();\n    const [setRef, btnRefs] = useRefs();\n    const tabPositionTopOrBottom = computed(\n      () => props.tabPosition === 'top' || props.tabPosition === 'bottom',\n    );\n\n    const [transformLeft, setTransformLeft] = useSyncState(0, (next, prev) => {\n      if (tabPositionTopOrBottom.value && props.onTabScroll) {\n        props.onTabScroll({ direction: next > prev ? 'left' : 'right' });\n      }\n    });\n    const [transformTop, setTransformTop] = useSyncState(0, (next, prev) => {\n      if (!tabPositionTopOrBottom.value && props.onTabScroll) {\n        props.onTabScroll({ direction: next > prev ? 'top' : 'bottom' });\n      }\n    });\n\n    const [wrapperScrollWidth, setWrapperScrollWidth] = useState<number>(0);\n    const [wrapperScrollHeight, setWrapperScrollHeight] = useState<number>(0);\n    const [wrapperWidth, setWrapperWidth] = useState<number>(null);\n    const [wrapperHeight, setWrapperHeight] = useState<number>(null);\n    const [addWidth, setAddWidth] = useState<number>(0);\n    const [addHeight, setAddHeight] = useState<number>(0);\n\n    const [tabSizes, setTabSizes] = useRafState<TabSizeMap>(new Map());\n    const tabOffsets = useOffsets(tabs, tabSizes);\n    // ========================== Util =========================\n    const operationsHiddenClassName = computed(() => `${prefixCls.value}-nav-operations-hidden`);\n\n    const transformMin = shallowRef(0);\n    const transformMax = shallowRef(0);\n\n    watchEffect(() => {\n      if (!tabPositionTopOrBottom.value) {\n        transformMin.value = Math.min(0, wrapperHeight.value - wrapperScrollHeight.value);\n        transformMax.value = 0;\n      } else if (props.rtl) {\n        transformMin.value = 0;\n        transformMax.value = Math.max(0, wrapperScrollWidth.value - wrapperWidth.value);\n      } else {\n        transformMin.value = Math.min(0, wrapperWidth.value - wrapperScrollWidth.value);\n        transformMax.value = 0;\n      }\n    });\n\n    const alignInRange = (value: number): number => {\n      if (value < transformMin.value) {\n        return transformMin.value;\n      }\n      if (value > transformMax.value) {\n        return transformMax.value;\n      }\n      return value;\n    };\n\n    // ========================= Mobile ========================\n    const touchMovingRef = shallowRef<any>();\n    const [lockAnimation, setLockAnimation] = useState<number>();\n\n    const doLockAnimation = () => {\n      setLockAnimation(Date.now());\n    };\n\n    const clearTouchMoving = () => {\n      clearTimeout(touchMovingRef.value);\n    };\n    const doMove = (setState: (fn: (val: number) => number) => void, offset: number) => {\n      setState((value: number) => {\n        const newValue = alignInRange(value + offset);\n\n        return newValue;\n      });\n    };\n    useTouchMove(tabsWrapperRef, (offsetX, offsetY) => {\n      if (tabPositionTopOrBottom.value) {\n        // Skip scroll if place is enough\n        if (wrapperWidth.value >= wrapperScrollWidth.value) {\n          return false;\n        }\n\n        doMove(setTransformLeft, offsetX);\n      } else {\n        if (wrapperHeight.value >= wrapperScrollHeight.value) {\n          return false;\n        }\n\n        doMove(setTransformTop, offsetY);\n      }\n\n      clearTouchMoving();\n      doLockAnimation();\n\n      return true;\n    });\n\n    watch(lockAnimation, () => {\n      clearTouchMoving();\n      if (lockAnimation.value) {\n        touchMovingRef.value = setTimeout(() => {\n          setLockAnimation(0);\n        }, 100);\n      }\n    });\n\n    // ========================= Scroll ========================\n    const scrollToTab = (key = props.activeKey) => {\n      const tabOffset = tabOffsets.value.get(key) || {\n        width: 0,\n        height: 0,\n        left: 0,\n        right: 0,\n        top: 0,\n      };\n\n      if (tabPositionTopOrBottom.value) {\n        // ============ Align with top & bottom ============\n        let newTransform = transformLeft.value;\n\n        // RTL\n        if (props.rtl) {\n          if (tabOffset.right < transformLeft.value) {\n            newTransform = tabOffset.right;\n          } else if (tabOffset.right + tabOffset.width > transformLeft.value + wrapperWidth.value) {\n            newTransform = tabOffset.right + tabOffset.width - wrapperWidth.value;\n          }\n        }\n        // LTR\n        else if (tabOffset.left < -transformLeft.value) {\n          newTransform = -tabOffset.left;\n        } else if (tabOffset.left + tabOffset.width > -transformLeft.value + wrapperWidth.value) {\n          newTransform = -(tabOffset.left + tabOffset.width - wrapperWidth.value);\n        }\n\n        setTransformTop(0);\n        setTransformLeft(alignInRange(newTransform));\n      } else {\n        // ============ Align with left & right ============\n        let newTransform = transformTop.value;\n\n        if (tabOffset.top < -transformTop.value) {\n          newTransform = -tabOffset.top;\n        } else if (tabOffset.top + tabOffset.height > -transformTop.value + wrapperHeight.value) {\n          newTransform = -(tabOffset.top + tabOffset.height - wrapperHeight.value);\n        }\n\n        setTransformLeft(0);\n        setTransformTop(alignInRange(newTransform));\n      }\n    };\n\n    const visibleStart = shallowRef(0);\n    const visibleEnd = shallowRef(0);\n\n    watchEffect(() => {\n      let unit: 'width' | 'height';\n      let position: 'left' | 'top' | 'right';\n      let transformSize: number;\n      let basicSize: number;\n      let tabContentSize: number;\n      let addSize: number;\n      const tabOffsetsValue = tabOffsets.value;\n      if (['top', 'bottom'].includes(props.tabPosition)) {\n        unit = 'width';\n        basicSize = wrapperWidth.value;\n        tabContentSize = wrapperScrollWidth.value;\n        addSize = addWidth.value;\n        position = props.rtl ? 'right' : 'left';\n        transformSize = Math.abs(transformLeft.value);\n      } else {\n        unit = 'height';\n        basicSize = wrapperHeight.value;\n        tabContentSize = wrapperScrollWidth.value;\n        addSize = addHeight.value;\n        position = 'top';\n        transformSize = -transformTop.value;\n      }\n      let mergedBasicSize = basicSize;\n      if (tabContentSize + addSize > basicSize && tabContentSize < basicSize) {\n        mergedBasicSize = basicSize - addSize;\n      }\n\n      const tabsVal = tabs.value;\n      if (!tabsVal.length) {\n        return ([visibleStart.value, visibleEnd.value] = [0, 0]);\n      }\n\n      const len = tabsVal.length;\n      let endIndex = len;\n      for (let i = 0; i < len; i += 1) {\n        const offset = tabOffsetsValue.get(tabsVal[i].key) || DEFAULT_SIZE;\n        if (offset[position] + offset[unit] > transformSize + mergedBasicSize) {\n          endIndex = i - 1;\n          break;\n        }\n      }\n      let startIndex = 0;\n      for (let i = len - 1; i >= 0; i -= 1) {\n        const offset = tabOffsetsValue.get(tabsVal[i].key) || DEFAULT_SIZE;\n        if (offset[position] < transformSize) {\n          startIndex = i + 1;\n          break;\n        }\n      }\n\n      return ([visibleStart.value, visibleEnd.value] = [startIndex, endIndex]);\n    });\n    const updateTabSizes = () => {\n      setTabSizes(() => {\n        const newSizes: TabSizeMap = new Map();\n        const listRect = tabListRef.value?.getBoundingClientRect();\n        tabs.value.forEach(({ key }) => {\n          const btnRef = btnRefs.value.get(key);\n          const btnNode = (btnRef as any)?.$el || btnRef;\n          if (btnNode) {\n            const [width, height, left, top] = getTabSize(btnNode, listRect);\n            newSizes.set(key, { width, height, left, top });\n          }\n        });\n        return newSizes;\n      });\n    };\n\n    watch(\n      () => tabs.value.map(tab => tab.key).join('%%'),\n      () => {\n        updateTabSizes();\n      },\n      { flush: 'post' },\n    );\n    const onListHolderResize = () => {\n      // Update wrapper records\n      const offsetWidth = tabsWrapperRef.value?.offsetWidth || 0;\n      const offsetHeight = tabsWrapperRef.value?.offsetHeight || 0;\n      const addDom = innerAddButtonRef.value?.$el || {};\n      const newAddWidth = addDom.offsetWidth || 0;\n      const newAddHeight = addDom.offsetHeight || 0;\n      setWrapperWidth(offsetWidth);\n      setWrapperHeight(offsetHeight);\n      setAddWidth(newAddWidth);\n      setAddHeight(newAddHeight);\n\n      const newWrapperScrollWidth = (tabListRef.value?.offsetWidth || 0) - newAddWidth;\n      const newWrapperScrollHeight = (tabListRef.value?.offsetHeight || 0) - newAddHeight;\n\n      setWrapperScrollWidth(newWrapperScrollWidth);\n      setWrapperScrollHeight(newWrapperScrollHeight);\n\n      // Update buttons records\n      updateTabSizes();\n    };\n\n    // ======================== Dropdown =======================\n    const hiddenTabs = computed(() => [\n      ...tabs.value.slice(0, visibleStart.value),\n      ...tabs.value.slice(visibleEnd.value + 1),\n    ]);\n\n    // =================== Link & Operations ===================\n    const [inkStyle, setInkStyle] = useState<CSSProperties>();\n\n    const activeTabOffset = computed(() => tabOffsets.value.get(props.activeKey));\n\n    // Delay set ink style to avoid remove tab blink\n    const inkBarRafRef = shallowRef<number>();\n    const cleanInkBarRaf = () => {\n      raf.cancel(inkBarRafRef.value);\n    };\n\n    watch([activeTabOffset, tabPositionTopOrBottom, () => props.rtl], () => {\n      const newInkStyle: CSSProperties = {};\n\n      if (activeTabOffset.value) {\n        if (tabPositionTopOrBottom.value) {\n          if (props.rtl) {\n            newInkStyle.right = toPx(activeTabOffset.value.right);\n          } else {\n            newInkStyle.left = toPx(activeTabOffset.value.left);\n          }\n\n          newInkStyle.width = toPx(activeTabOffset.value.width);\n        } else {\n          newInkStyle.top = toPx(activeTabOffset.value.top);\n          newInkStyle.height = toPx(activeTabOffset.value.height);\n        }\n      }\n\n      cleanInkBarRaf();\n      inkBarRafRef.value = raf(() => {\n        setInkStyle(newInkStyle);\n      });\n    });\n\n    watch(\n      [() => props.activeKey, activeTabOffset, tabOffsets, tabPositionTopOrBottom],\n      () => {\n        scrollToTab();\n      },\n      { flush: 'post' },\n    );\n\n    watch(\n      [() => props.rtl, () => props.tabBarGutter, () => props.activeKey, () => tabs.value],\n      () => {\n        onListHolderResize();\n      },\n      { flush: 'post' },\n    );\n\n    const ExtraContent = ({ position, prefixCls, extra }: ExtraContentProps) => {\n      if (!extra) return null;\n      const content = extra?.({ position });\n      return content ? <div class={`${prefixCls}-extra-content`}>{content}</div> : null;\n    };\n\n    onBeforeUnmount(() => {\n      clearTouchMoving();\n      cleanInkBarRaf();\n    });\n\n    return () => {\n      const {\n        id,\n        animated,\n        activeKey,\n        rtl,\n        editable,\n        locale,\n        tabPosition,\n        tabBarGutter,\n        onTabClick,\n      } = props;\n      const { class: className, style } = attrs;\n      const pre = prefixCls.value;\n      // ========================= Render ========================\n      const hasDropdown = !!hiddenTabs.value.length;\n      const wrapPrefix = `${pre}-nav-wrap`;\n      let pingLeft: boolean;\n      let pingRight: boolean;\n      let pingTop: boolean;\n      let pingBottom: boolean;\n\n      if (tabPositionTopOrBottom.value) {\n        if (rtl) {\n          pingRight = transformLeft.value > 0;\n          pingLeft = transformLeft.value + wrapperWidth.value < wrapperScrollWidth.value;\n        } else {\n          pingLeft = transformLeft.value < 0;\n          pingRight = -transformLeft.value + wrapperWidth.value < wrapperScrollWidth.value;\n        }\n      } else {\n        pingTop = transformTop.value < 0;\n        pingBottom = -transformTop.value + wrapperHeight.value < wrapperScrollHeight.value;\n      }\n\n      const tabNodeStyle: CSSProperties = {};\n      if (tabPosition === 'top' || tabPosition === 'bottom') {\n        tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] =\n          typeof tabBarGutter === 'number' ? `${tabBarGutter}px` : tabBarGutter;\n      } else {\n        tabNodeStyle.marginTop =\n          typeof tabBarGutter === 'number' ? `${tabBarGutter}px` : tabBarGutter;\n      }\n\n      const tabNodes = tabs.value.map((tab, i) => {\n        const { key } = tab;\n        return (\n          <TabNode\n            id={id}\n            prefixCls={pre}\n            key={key}\n            tab={tab}\n            /* first node should not have margin left */\n            style={i === 0 ? undefined : tabNodeStyle}\n            closable={tab.closable}\n            editable={editable}\n            active={key === activeKey}\n            removeAriaLabel={locale?.removeAriaLabel}\n            ref={setRef(key)}\n            onClick={e => {\n              onTabClick(key, e);\n            }}\n            onFocus={() => {\n              scrollToTab(key);\n              doLockAnimation();\n              if (!tabsWrapperRef.value) {\n                return;\n              }\n              // Focus element will make scrollLeft change which we should reset back\n              if (!rtl) {\n                tabsWrapperRef.value.scrollLeft = 0;\n              }\n              tabsWrapperRef.value.scrollTop = 0;\n            }}\n            v-slots={slots}\n          ></TabNode>\n        );\n      });\n      return (\n        <div\n          role=\"tablist\"\n          class={classNames(`${pre}-nav`, className)}\n          style={style as CSSProperties}\n          onKeydown={() => {\n            // No need animation when use keyboard\n            doLockAnimation();\n          }}\n        >\n          <ExtraContent position=\"left\" prefixCls={pre} extra={slots.leftExtra} />\n\n          <ResizeObserver onResize={onListHolderResize}>\n            <div\n              class={classNames(wrapPrefix, {\n                [`${wrapPrefix}-ping-left`]: pingLeft,\n                [`${wrapPrefix}-ping-right`]: pingRight,\n                [`${wrapPrefix}-ping-top`]: pingTop,\n                [`${wrapPrefix}-ping-bottom`]: pingBottom,\n              })}\n              ref={tabsWrapperRef}\n            >\n              <ResizeObserver onResize={onListHolderResize}>\n                <div\n                  ref={tabListRef}\n                  class={`${pre}-nav-list`}\n                  style={{\n                    transform: `translate(${transformLeft.value}px, ${transformTop.value}px)`,\n                    transition: lockAnimation.value ? 'none' : undefined,\n                  }}\n                >\n                  {tabNodes}\n                  <AddButton\n                    ref={innerAddButtonRef}\n                    prefixCls={pre}\n                    locale={locale}\n                    editable={editable}\n                    style={{\n                      ...(tabNodes.length === 0 ? undefined : tabNodeStyle),\n                      visibility: hasDropdown ? 'hidden' : null,\n                    }}\n                  />\n\n                  <div\n                    class={classNames(`${pre}-ink-bar`, {\n                      [`${pre}-ink-bar-animated`]: animated.inkBar,\n                    })}\n                    style={inkStyle.value}\n                  />\n                </div>\n              </ResizeObserver>\n            </div>\n          </ResizeObserver>\n          <OperationNode\n            {...props}\n            removeAriaLabel={locale?.removeAriaLabel}\n            v-slots={pick(slots, ['moreIcon'])}\n            ref={operationsRef}\n            prefixCls={pre}\n            tabs={hiddenTabs.value}\n            class={!hasDropdown && operationsHiddenClassName.value}\n          />\n\n          <ExtraContent position=\"right\" prefixCls={pre} extra={slots.rightExtra} />\n          <ExtraContent position=\"right\" prefixCls={pre} extra={slots.tabBarExtraContent} />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/TabPanelList/TabPane.tsx",
    "content": "import { defineComponent, ref, watch, computed } from 'vue';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport PropTypes from '../../../_util/vue-types';\nimport type { CustomSlotsType } from '../../../_util/type';\n\nconst tabPaneProps = () => ({\n  tab: PropTypes.any,\n  disabled: { type: Boolean },\n  forceRender: { type: Boolean },\n  closable: { type: Boolean },\n  animated: { type: Boolean },\n  active: { type: Boolean },\n  destroyInactiveTabPane: { type: Boolean },\n\n  // Pass by TabPaneList\n  prefixCls: { type: String },\n  tabKey: { type: [String, Number] },\n  id: { type: String },\n  // closeIcon: PropTypes.any,\n});\n\nexport type TabPaneProps = Partial<ExtractPropTypes<ReturnType<typeof tabPaneProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATabPane',\n  inheritAttrs: false,\n  __ANT_TAB_PANE: true,\n  props: tabPaneProps(),\n  slots: Object as CustomSlotsType<{\n    closeIcon: any;\n    tab: any;\n    default: any;\n  }>,\n  setup(props, { attrs, slots }) {\n    const visited = ref(props.forceRender);\n    watch(\n      [() => props.active, () => props.destroyInactiveTabPane],\n      () => {\n        if (props.active) {\n          visited.value = true;\n        } else if (props.destroyInactiveTabPane) {\n          visited.value = false;\n        }\n      },\n      { immediate: true },\n    );\n    const mergedStyle = computed<CSSProperties>(() => {\n      if (!props.active) {\n        if (props.animated) {\n          return {\n            visibility: 'hidden',\n            height: 0,\n            overflowY: 'hidden',\n          };\n        } else {\n          return { display: 'none' };\n        }\n      }\n      return {};\n    });\n\n    return () => {\n      const { prefixCls, forceRender, id, active, tabKey } = props;\n      return (\n        <div\n          id={id && `${id}-panel-${tabKey}`}\n          role=\"tabpanel\"\n          tabindex={active ? 0 : -1}\n          aria-labelledby={id && `${id}-tab-${tabKey}`}\n          aria-hidden={!active}\n          style={[mergedStyle.value, attrs.style as CSSProperties]}\n          class={[`${prefixCls}-tabpane`, active && `${prefixCls}-tabpane-active`, attrs.class]}\n        >\n          {(active || visited.value || forceRender) && slots.default?.()}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/TabPanelList/index.tsx",
    "content": "import { useInjectTabs } from '../TabContext';\nimport type { TabPosition, AnimatedConfig } from '../interface';\nimport type { Key } from '../../../_util/type';\nimport type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport { cloneElement } from '../../../_util/vnode';\n\nexport interface TabPanelListProps {\n  activeKey: Key;\n  id: string;\n  rtl: boolean;\n  animated?: AnimatedConfig;\n  tabPosition?: TabPosition;\n  destroyInactiveTabPane?: boolean;\n}\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TabPanelList',\n  inheritAttrs: false,\n  props: {\n    activeKey: { type: [String, Number] as PropType<Key> },\n    id: { type: String },\n    rtl: { type: Boolean },\n    animated: { type: Object as PropType<AnimatedConfig>, default: undefined as AnimatedConfig },\n    tabPosition: { type: String as PropType<TabPosition> },\n    destroyInactiveTabPane: { type: Boolean },\n  },\n  setup(props) {\n    const { tabs, prefixCls } = useInjectTabs();\n    return () => {\n      const { id, activeKey, animated, tabPosition, rtl, destroyInactiveTabPane } = props;\n      const tabPaneAnimated = animated.tabPane;\n      const pre = prefixCls.value;\n      const activeIndex = tabs.value.findIndex(tab => tab.key === activeKey);\n      return (\n        <div class={`${pre}-content-holder`}>\n          <div\n            class={[\n              `${pre}-content`,\n              `${pre}-content-${tabPosition}`,\n              {\n                [`${pre}-content-animated`]: tabPaneAnimated,\n              },\n            ]}\n            style={\n              activeIndex && tabPaneAnimated\n                ? { [rtl ? 'marginRight' : 'marginLeft']: `-${activeIndex}00%` }\n                : null\n            }\n          >\n            {tabs.value.map(tab => {\n              return cloneElement(tab.node, {\n                key: tab.key,\n                prefixCls: pre,\n                tabKey: tab.key,\n                id,\n                animated: tabPaneAnimated,\n                active: tab.key === activeKey,\n                destroyInactiveTabPane,\n              });\n            })}\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/Tabs.tsx",
    "content": "// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport TabNavList from './TabNavList';\nimport TabPanelList from './TabPanelList';\nimport type {\n  TabPosition,\n  RenderTabBar,\n  TabsLocale,\n  EditableConfig,\n  AnimatedConfig,\n  OnTabScroll,\n  Tab,\n} from './interface';\nimport { defineComponent, computed, onMounted, watchEffect } from 'vue';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport {\n  camelize,\n  flattenChildren,\n  initDefaultProps,\n  isValidElement,\n} from '../../_util/props-util';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport useState from '../../_util/hooks/useState';\nimport isMobile from '../../vc-util/isMobile';\nimport useMergedState from '../../_util/hooks/useMergedState';\nimport classNames from '../../_util/classNames';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport PlusOutlined from '@ant-design/icons-vue/PlusOutlined';\nimport devWarning from '../../vc-util/devWarning';\nimport type { SizeType } from '../../config-provider';\nimport { useProvideTabs } from './TabContext';\nimport {\n  arrayType,\n  stringType,\n  someType,\n  functionType,\n  objectType,\n  booleanType,\n} from '../../_util/type';\nimport type { CustomSlotsType, Key } from '../../_util/type';\nimport pick from 'lodash-es/pick';\nimport PropTypes from '../../_util/vue-types';\nimport type { MouseEventHandler } from '../../_util/EventInterface';\nimport omit from '../../_util/omit';\nimport useStyle from '../style';\nexport type TabsType = 'line' | 'card' | 'editable-card';\nexport type TabsPosition = 'top' | 'right' | 'bottom' | 'left';\n\n// Used for accessibility\nlet uuid = 0;\n\nexport const tabsProps = () => {\n  return {\n    prefixCls: { type: String },\n    id: { type: String },\n    popupClassName: String,\n    getPopupContainer: functionType<\n      ((triggerNode?: HTMLElement | undefined) => HTMLElement) | undefined\n    >(),\n    activeKey: { type: [String, Number] },\n    defaultActiveKey: { type: [String, Number] },\n    direction: stringType<'ltr' | 'rtl'>(),\n    animated: someType<boolean | AnimatedConfig>([Boolean, Object]),\n    renderTabBar: functionType<RenderTabBar>(),\n    tabBarGutter: { type: Number },\n    tabBarStyle: objectType<CSSProperties>(),\n    tabPosition: stringType<TabPosition>(),\n    destroyInactiveTabPane: booleanType(),\n\n    hideAdd: Boolean,\n    type: stringType<TabsType>(),\n    size: stringType<SizeType>(),\n    centered: Boolean,\n    onEdit: functionType<(e: MouseEvent | KeyboardEvent | Key, action: 'add' | 'remove') => void>(),\n    onChange: functionType<(activeKey: Key) => void>(),\n    onTabClick: functionType<(activeKey: Key, e: KeyboardEvent | MouseEvent) => void>(),\n    onTabScroll: functionType<OnTabScroll>(),\n    'onUpdate:activeKey': functionType<(activeKey: Key) => void>(),\n    // Accessibility\n    locale: objectType<TabsLocale>(),\n    onPrevClick: functionType<MouseEventHandler>(),\n    onNextClick: functionType<MouseEventHandler>(),\n    tabBarExtraContent: PropTypes.any,\n  };\n};\n\nexport type TabsProps = Partial<ExtractPropTypes<ReturnType<typeof tabsProps>>>;\n\nfunction parseTabList(children: any[]): Tab[] {\n  return children\n    .map(node => {\n      if (isValidElement(node)) {\n        const props = { ...(node.props || {}) };\n        for (const [k, v] of Object.entries(props)) {\n          delete props[k];\n          props[camelize(k)] = v;\n        }\n        const slots = node.children || {};\n        const key = node.key !== undefined ? node.key : undefined;\n        const {\n          tab = slots.tab,\n          disabled,\n          forceRender,\n          closable,\n          animated,\n          active,\n          destroyInactiveTabPane,\n        } = props;\n        return {\n          key,\n          ...props,\n          node,\n          closeIcon: slots.closeIcon,\n          tab,\n          disabled: disabled === '' || disabled,\n          forceRender: forceRender === '' || forceRender,\n          closable: closable === '' || closable,\n          animated: animated === '' || animated,\n          active: active === '' || active,\n          destroyInactiveTabPane: destroyInactiveTabPane === '' || destroyInactiveTabPane,\n        };\n      }\n\n      return null;\n    })\n    .filter(tab => tab);\n}\nconst InternalTabs = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'InternalTabs',\n  inheritAttrs: false,\n  props: {\n    ...initDefaultProps(tabsProps(), {\n      tabPosition: 'top',\n      animated: {\n        inkBar: true,\n        tabPane: false,\n      },\n    }),\n    tabs: arrayType<Tab[]>(),\n  },\n  slots: Object as CustomSlotsType<{\n    tabBarExtraContent?: any;\n    leftExtra?: any;\n    rightExtra?: any;\n    moreIcon?: any;\n    addIcon?: any;\n    removeIcon?: any;\n    renderTabBar?: any;\n    default: any;\n  }>,\n  // emits: ['tabClick', 'tabScroll', 'change', 'update:activeKey'],\n  setup(props, { attrs, slots }) {\n    devWarning(\n      !(props.onPrevClick !== undefined) && !(props.onNextClick !== undefined),\n      'Tabs',\n      '`onPrevClick / @prevClick` and `onNextClick / @nextClick` has been removed. Please use `onTabScroll / @tabScroll` instead.',\n    );\n    devWarning(\n      !(props.tabBarExtraContent !== undefined),\n      'Tabs',\n      '`tabBarExtraContent` prop has been removed. Please use `rightExtra` slot instead.',\n    );\n    devWarning(\n      !(slots.tabBarExtraContent !== undefined),\n      'Tabs',\n      '`tabBarExtraContent` slot is deprecated. Please use `rightExtra` slot instead.',\n    );\n    const { prefixCls, direction, size, rootPrefixCls, getPopupContainer } = useConfigInject(\n      'tabs',\n      props,\n    );\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const rtl = computed(() => direction.value === 'rtl');\n    const mergedAnimated = computed<AnimatedConfig>(() => {\n      const { animated, tabPosition } = props;\n      if (animated === false || ['left', 'right'].includes(tabPosition)) {\n        return {\n          inkBar: false,\n          tabPane: false,\n        };\n      } else if (animated === true) {\n        return {\n          inkBar: true,\n          tabPane: true,\n        };\n      } else {\n        return {\n          inkBar: true,\n          tabPane: false,\n          ...(typeof animated === 'object' ? animated : {}),\n        };\n      }\n    });\n\n    // ======================== Mobile ========================\n    const [mobile, setMobile] = useState(false);\n    onMounted(() => {\n      // Only update on the client side\n      setMobile(isMobile());\n    });\n\n    // ====================== Active Key ======================\n    const [mergedActiveKey, setMergedActiveKey] = useMergedState<Key>(() => props.tabs[0]?.key, {\n      value: computed(() => props.activeKey),\n      defaultValue: props.defaultActiveKey,\n    });\n    const [activeIndex, setActiveIndex] = useState(() =>\n      props.tabs.findIndex(tab => tab.key === mergedActiveKey.value),\n    );\n\n    watchEffect(() => {\n      let newActiveIndex = props.tabs.findIndex(tab => tab.key === mergedActiveKey.value);\n      if (newActiveIndex === -1) {\n        newActiveIndex = Math.max(0, Math.min(activeIndex.value, props.tabs.length - 1));\n        setMergedActiveKey(props.tabs[newActiveIndex]?.key);\n      }\n      setActiveIndex(newActiveIndex);\n    });\n\n    // ===================== Accessibility ====================\n    const [mergedId, setMergedId] = useMergedState(null, {\n      value: computed(() => props.id),\n    });\n\n    const mergedTabPosition = computed(() => {\n      if (mobile.value && !['left', 'right'].includes(props.tabPosition)) {\n        return 'top';\n      } else {\n        return props.tabPosition;\n      }\n    });\n\n    onMounted(() => {\n      if (!props.id) {\n        setMergedId(`rc-tabs-${process.env.NODE_ENV === 'test' ? 'test' : uuid}`);\n        uuid += 1;\n      }\n    });\n\n    // ======================== Events ========================\n    const onInternalTabClick = (key: Key, e: MouseEvent | KeyboardEvent) => {\n      props.onTabClick?.(key, e);\n      const isActiveChanged = key !== mergedActiveKey.value;\n      setMergedActiveKey(key);\n      if (isActiveChanged) {\n        props.onChange?.(key);\n      }\n    };\n\n    useProvideTabs({\n      tabs: computed(() => props.tabs),\n      prefixCls,\n    });\n\n    return () => {\n      const {\n        id,\n        type,\n        tabBarGutter,\n        tabBarStyle,\n        locale,\n        destroyInactiveTabPane,\n        renderTabBar = slots.renderTabBar,\n        onTabScroll,\n        hideAdd,\n        centered,\n      } = props;\n      // ======================== Render ========================\n      const sharedProps = {\n        id: mergedId.value,\n        activeKey: mergedActiveKey.value,\n        animated: mergedAnimated.value,\n        tabPosition: mergedTabPosition.value,\n        rtl: rtl.value,\n        mobile: mobile.value,\n      };\n\n      let editable: EditableConfig | undefined;\n      if (type === 'editable-card') {\n        editable = {\n          onEdit: (editType, { key, event }) => {\n            props.onEdit?.(editType === 'add' ? event : key!, editType);\n          },\n          removeIcon: () => <CloseOutlined />,\n          addIcon: slots.addIcon ? slots.addIcon : () => <PlusOutlined />,\n          showAdd: hideAdd !== true,\n        };\n      }\n\n      let tabNavBar;\n\n      const tabNavBarProps = {\n        ...sharedProps,\n        moreTransitionName: `${rootPrefixCls.value}-slide-up`,\n        editable,\n        locale,\n        tabBarGutter,\n        onTabClick: onInternalTabClick,\n        onTabScroll,\n        style: tabBarStyle,\n        getPopupContainer: getPopupContainer.value,\n        popupClassName: classNames(props.popupClassName, hashId.value),\n      };\n\n      if (renderTabBar) {\n        tabNavBar = renderTabBar({ ...tabNavBarProps, DefaultTabBar: TabNavList });\n      } else {\n        tabNavBar = (\n          <TabNavList\n            {...tabNavBarProps}\n            v-slots={pick(slots, ['moreIcon', 'leftExtra', 'rightExtra', 'tabBarExtraContent'])}\n          />\n        );\n      }\n      const pre = prefixCls.value;\n\n      return wrapSSR(\n        <div\n          {...attrs}\n          id={id}\n          class={classNames(\n            pre,\n            `${pre}-${mergedTabPosition.value}`,\n            {\n              [hashId.value]: true,\n              [`${pre}-${size.value}`]: size.value,\n              [`${pre}-card`]: ['card', 'editable-card'].includes(type as string),\n              [`${pre}-editable-card`]: type === 'editable-card',\n              [`${pre}-centered`]: centered,\n              [`${pre}-mobile`]: mobile.value,\n              [`${pre}-editable`]: type === 'editable-card',\n              [`${pre}-rtl`]: rtl.value,\n            },\n            attrs.class,\n          )}\n        >\n          {tabNavBar}\n          <TabPanelList\n            destroyInactiveTabPane={destroyInactiveTabPane}\n            {...sharedProps}\n            animated={mergedAnimated.value}\n          />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATabs',\n  inheritAttrs: false,\n  props: initDefaultProps(tabsProps(), {\n    tabPosition: 'top',\n    animated: {\n      inkBar: true,\n      tabPane: false,\n    },\n  }),\n  slots: Object as CustomSlotsType<{\n    tabBarExtraContent?: any;\n    leftExtra?: any;\n    rightExtra?: any;\n    moreIcon?: any;\n    addIcon?: any;\n    removeIcon?: any;\n    renderTabBar?: any;\n    default?: any;\n  }>,\n  // emits: ['tabClick', 'tabScroll', 'change', 'update:activeKey'],\n  setup(props, { attrs, slots, emit }) {\n    const handleChange = (key: string) => {\n      emit('update:activeKey', key);\n      emit('change', key);\n    };\n    return () => {\n      const tabs = parseTabList(flattenChildren(slots.default?.()));\n      return (\n        <InternalTabs\n          {...omit(props, ['onUpdate:activeKey'])}\n          {...attrs}\n          onChange={handleChange}\n          tabs={tabs}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tabs/src/hooks/useOffsets.ts",
    "content": "import type { Ref } from 'vue';\nimport { ref, watchEffect } from 'vue';\nimport type { TabSizeMap, TabOffsetMap, Tab, TabOffset } from '../interface';\n\nconst DEFAULT_SIZE = { width: 0, height: 0, left: 0, top: 0 };\n\nexport default function useOffsets(\n  tabs: Ref<Tab[]>,\n  tabSizes: Ref<TabSizeMap>,\n  // holderScrollWidth: Ref<number>,\n): Ref<TabOffsetMap> {\n  const offsetMap = ref<TabOffsetMap>(new Map());\n  watchEffect(() => {\n    const map: TabOffsetMap = new Map();\n    const tabsValue = tabs.value;\n    const lastOffset = tabSizes.value.get(tabsValue[0]?.key) || DEFAULT_SIZE;\n    const rightOffset = lastOffset.left + lastOffset.width;\n\n    for (let i = 0; i < tabsValue.length; i += 1) {\n      const { key } = tabsValue[i];\n      let data = tabSizes.value.get(key);\n\n      // Reuse last one when not exist yet\n      if (!data) {\n        data = tabSizes.value.get(tabsValue[i - 1]?.key) || DEFAULT_SIZE;\n      }\n\n      const entity = (map.get(key) || { ...data }) as TabOffset;\n\n      // Right\n      entity.right = rightOffset - entity.left - entity.width;\n\n      // Update entity\n      map.set(key, entity);\n    }\n    offsetMap.value = new Map(map);\n  });\n\n  return offsetMap;\n}\n"
  },
  {
    "path": "components/tabs/src/hooks/useRaf.ts",
    "content": "import type { Ref } from 'vue';\nimport { shallowRef, onBeforeUnmount } from 'vue';\nimport raf from '../../../_util/raf';\n\nexport default function useRaf<Callback extends Function>(callback: Callback) {\n  const rafRef = shallowRef<number>();\n  const removedRef = shallowRef(false);\n\n  function trigger(...args: any[]) {\n    if (!removedRef.value) {\n      raf.cancel(rafRef.value);\n      rafRef.value = raf(() => {\n        callback(...args);\n      });\n    }\n  }\n\n  onBeforeUnmount(() => {\n    removedRef.value = true;\n    raf.cancel(rafRef.value);\n  });\n\n  return trigger;\n}\n\ntype Callback<T> = (ori: T) => T;\n\nexport function useRafState<T>(\n  defaultState: T | (() => T),\n): [Ref<T>, (updater: Callback<T>) => void] {\n  const batchRef = shallowRef<Callback<T>[]>([]);\n  const state: Ref<T> = shallowRef(\n    typeof defaultState === 'function' ? (defaultState as any)() : defaultState,\n  );\n\n  const flushUpdate = useRaf(() => {\n    let value = state.value;\n    batchRef.value.forEach(callback => {\n      value = callback(value);\n    });\n    batchRef.value = [];\n\n    state.value = value;\n  });\n\n  function updater(callback: Callback<T>) {\n    batchRef.value.push(callback);\n    flushUpdate();\n  }\n\n  return [state, updater];\n}\n"
  },
  {
    "path": "components/tabs/src/hooks/useSyncState.ts",
    "content": "import type { Ref } from 'vue';\nimport { ref } from 'vue';\n\ntype Updater<T> = (prev: T) => T;\n\nexport default function useSyncState<T>(\n  defaultState: T,\n  onChange: (newValue: T, prevValue: T) => void,\n): [Ref<T>, (updater: T | Updater<T>) => void] {\n  const stateRef = ref(defaultState);\n\n  function setState(updater: any) {\n    const newValue = typeof updater === 'function' ? updater(stateRef.value) : updater;\n    if (newValue !== stateRef.value) {\n      onChange(newValue, stateRef.value as T);\n    }\n    stateRef.value = newValue;\n  }\n\n  return [stateRef as Ref<T>, setState];\n}\n"
  },
  {
    "path": "components/tabs/src/hooks/useTouchMove.ts",
    "content": "import type { Ref } from 'vue';\nimport { ref, onBeforeUnmount, onMounted } from 'vue';\nimport useState from '../../../_util/hooks/useState';\n\ntype TouchEventHandler = (e: TouchEvent) => void;\ntype WheelEventHandler = (e: WheelEvent) => void;\n\nconst MIN_SWIPE_DISTANCE = 0.1;\nconst STOP_SWIPE_DISTANCE = 0.01;\nconst REFRESH_INTERVAL = 20;\nconst SPEED_OFF_MULTIPLE = 0.995 ** REFRESH_INTERVAL;\n// ================================= Hook =================================\nexport default function useTouchMove(\n  domRef: Ref<HTMLDivElement>,\n  onOffset: (offsetX: number, offsetY: number) => boolean,\n) {\n  const [touchPosition, setTouchPosition] = useState<{ x: number; y: number }>();\n  const [lastTimestamp, setLastTimestamp] = useState<number>(0);\n  const [lastTimeDiff, setLastTimeDiff] = useState<number>(0);\n  const [lastOffset, setLastOffset] = useState<{ x: number; y: number }>();\n  const motionInterval = ref<any>();\n\n  // ========================= Events =========================\n  // >>> Touch events\n  function onTouchStart(e: TouchEvent) {\n    const { screenX, screenY } = e.touches[0];\n    setTouchPosition({ x: screenX, y: screenY });\n    clearInterval(motionInterval.value);\n  }\n\n  function onTouchMove(e: TouchEvent) {\n    if (!touchPosition.value) return;\n\n    e.preventDefault();\n    const { screenX, screenY } = e.touches[0];\n    const offsetX = screenX - touchPosition.value.x;\n    const offsetY = screenY - touchPosition.value.y;\n    onOffset(offsetX, offsetY);\n    setTouchPosition({ x: screenX, y: screenY });\n    const now = Date.now();\n    setLastTimeDiff(now - lastTimestamp.value);\n    setLastTimestamp(now);\n    setLastOffset({ x: offsetX, y: offsetY });\n  }\n\n  function onTouchEnd() {\n    if (!touchPosition.value) return;\n    const lastOffsetValue = lastOffset.value;\n    setTouchPosition(null);\n    setLastOffset(null);\n\n    // Swipe if needed\n    if (lastOffsetValue) {\n      const distanceX = lastOffsetValue.x / lastTimeDiff.value;\n      const distanceY = lastOffsetValue.y / lastTimeDiff.value;\n      const absX = Math.abs(distanceX);\n      const absY = Math.abs(distanceY);\n\n      // Skip swipe if low distance\n      if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n\n      let currentX = distanceX;\n      let currentY = distanceY;\n\n      motionInterval.value = setInterval(() => {\n        if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n          clearInterval(motionInterval.value);\n          return;\n        }\n\n        currentX *= SPEED_OFF_MULTIPLE;\n        currentY *= SPEED_OFF_MULTIPLE;\n        onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n      }, REFRESH_INTERVAL);\n    }\n  }\n\n  // >>> Wheel event\n  const lastWheelDirectionRef = ref<'x' | 'y'>();\n\n  function onWheel(e: WheelEvent) {\n    const { deltaX, deltaY } = e;\n\n    // Convert both to x & y since wheel only happened on PC\n    let mixed = 0;\n    const absX = Math.abs(deltaX);\n    const absY = Math.abs(deltaY);\n    if (absX === absY) {\n      mixed = lastWheelDirectionRef.value === 'x' ? deltaX : deltaY;\n    } else if (absX > absY) {\n      mixed = deltaX;\n      lastWheelDirectionRef.value = 'x';\n    } else {\n      mixed = deltaY;\n      lastWheelDirectionRef.value = 'y';\n    }\n\n    if (onOffset(-mixed, -mixed)) {\n      e.preventDefault();\n    }\n  }\n\n  // ========================= Effect =========================\n  const touchEventsRef = ref<{\n    onTouchStart: TouchEventHandler;\n    onTouchMove: TouchEventHandler;\n    onTouchEnd: TouchEventHandler;\n    onWheel: WheelEventHandler;\n  }>({\n    onTouchStart,\n    onTouchMove,\n    onTouchEnd,\n    onWheel,\n  });\n  function onProxyTouchStart(e: TouchEvent) {\n    touchEventsRef.value.onTouchStart(e);\n  }\n  function onProxyTouchMove(e: TouchEvent) {\n    touchEventsRef.value.onTouchMove(e);\n  }\n  function onProxyTouchEnd(e: TouchEvent) {\n    touchEventsRef.value.onTouchEnd(e);\n  }\n  function onProxyWheel(e: WheelEvent) {\n    touchEventsRef.value.onWheel(e);\n  }\n  onMounted(() => {\n    document.addEventListener('touchmove', onProxyTouchMove, { passive: false });\n    document.addEventListener('touchend', onProxyTouchEnd, { passive: false });\n\n    // No need to clean up since element removed\n    domRef.value?.addEventListener('touchstart', onProxyTouchStart, { passive: false });\n    domRef.value?.addEventListener('wheel', onProxyWheel, { passive: false });\n  });\n\n  onBeforeUnmount(() => {\n    document.removeEventListener('touchmove', onProxyTouchMove);\n    document.removeEventListener('touchend', onProxyTouchEnd);\n  });\n}\n"
  },
  {
    "path": "components/tabs/src/index.ts",
    "content": "// base rc-tabs 11.12.0\nimport Tabs from './Tabs';\nimport type { TabsProps } from './Tabs';\nimport TabPane from './TabPanelList/TabPane';\nimport type { TabPaneProps } from './TabPanelList/TabPane';\n\nexport type { TabsProps, TabPaneProps };\n\nexport { TabPane };\n\nexport default Tabs;\n"
  },
  {
    "path": "components/tabs/src/interface.ts",
    "content": "import type { Key, VueNode } from '../../_util/type';\nimport type { TabPaneProps } from './TabPanelList/TabPane';\n\nexport type TabSizeMap = Map<Key, { width: number; height: number; left: number; top: number }>;\n\nexport interface TabOffset {\n  width: number;\n  height: number;\n  left: number;\n  right: number;\n  top: number;\n}\nexport type TabOffsetMap = Map<Key, TabOffset>;\n\nexport type TabPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface Tab extends TabPaneProps {\n  key: Key;\n  node: VueNode;\n}\n\nexport type RenderTabBar = (props: { DefaultTabBar: any; [key: string]: any }) => VueNode;\n\nexport interface TabsLocale {\n  dropdownAriaLabel?: string;\n  removeAriaLabel?: string;\n  addAriaLabel?: string;\n}\n\nexport interface EditableConfig {\n  onEdit: (type: 'add' | 'remove', info: { key?: Key; event: MouseEvent | KeyboardEvent }) => void;\n  showAdd?: boolean;\n  removeIcon?: () => VueNode;\n  addIcon?: () => VueNode;\n}\n\nexport interface AnimatedConfig {\n  inkBar?: boolean;\n  tabPane?: boolean;\n}\n\nexport type OnTabScroll = (info: { direction: 'left' | 'right' | 'top' | 'bottom' }) => void;\n\nexport type TabBarExtraPosition = 'left' | 'right';\n\nexport type TabBarExtraMap = Partial<Record<TabBarExtraPosition, any>>;\n\nexport type TabBarExtraContent = VueNode;\n"
  },
  {
    "path": "components/tabs/style/index.ts",
    "content": "import { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport genMotionStyle from './motion';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n}\n\nexport interface TabsToken extends FullToken<'Tabs'> {\n  tabsCardHorizontalPadding: string;\n  tabsCardHeight: number;\n  tabsCardGutter: number;\n  tabsHoverColor: string;\n  tabsActiveColor: string;\n  tabsHorizontalGutter: number;\n  tabsCardHeadBackground: string;\n  dropdownEdgeChildVerticalPadding: number;\n  tabsNavWrapPseudoWidth: number;\n  tabsActiveTextShadow: string;\n  tabsDropdownHeight: number;\n  tabsDropdownWidth: number;\n}\n\nconst genCardStyle: GenerateStyle<TabsToken> = (token: TabsToken): CSSObject => {\n  const {\n    componentCls,\n    tabsCardHorizontalPadding,\n    tabsCardHeadBackground,\n    tabsCardGutter,\n    colorSplit,\n  } = token;\n  return {\n    [`${componentCls}-card`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-tab`]: {\n          margin: 0,\n          padding: tabsCardHorizontalPadding,\n          background: tabsCardHeadBackground,\n          border: `${token.lineWidth}px ${token.lineType} ${colorSplit}`,\n          transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        },\n\n        [`${componentCls}-tab-active`]: {\n          color: token.colorPrimary,\n          background: token.colorBgContainer,\n        },\n\n        [`${componentCls}-ink-bar`]: {\n          visibility: 'hidden',\n        },\n      },\n\n      // ========================== Top & Bottom ==========================\n      [`&${componentCls}-top, &${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginLeft: {\n              _skip_check_: true,\n              value: `${tabsCardGutter}px`,\n            },\n          },\n        },\n      },\n\n      [`&${componentCls}-top`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n          },\n\n          [`${componentCls}-tab-active`]: {\n            borderBottomColor: token.colorBgContainer,\n          },\n        },\n      },\n\n      [`&${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: `0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px`,\n          },\n\n          [`${componentCls}-tab-active`]: {\n            borderTopColor: token.colorBgContainer,\n          },\n        },\n      },\n\n      // ========================== Left & Right ==========================\n      [`&${componentCls}-left, &${componentCls}-right`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginTop: `${tabsCardGutter}px`,\n          },\n        },\n      },\n\n      [`&${componentCls}-left`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `${token.borderRadiusLG}px 0 0 ${token.borderRadiusLG}px`,\n            },\n          },\n\n          [`${componentCls}-tab-active`]: {\n            borderRightColor: {\n              _skip_check_: true,\n              value: token.colorBgContainer,\n            },\n          },\n        },\n      },\n\n      [`&${componentCls}-right`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px 0`,\n            },\n          },\n\n          [`${componentCls}-tab-active`]: {\n            borderLeftColor: {\n              _skip_check_: true,\n              value: token.colorBgContainer,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genDropdownStyle: GenerateStyle<TabsToken> = (token: TabsToken): CSSObject => {\n  const { componentCls, tabsHoverColor, dropdownEdgeChildVerticalPadding } = token;\n  return {\n    [`${componentCls}-dropdown`]: {\n      ...resetComponent(token),\n\n      position: 'absolute',\n      top: -9999,\n      left: {\n        _skip_check_: true,\n        value: -9999,\n      },\n      zIndex: token.zIndexPopup,\n      display: 'block',\n\n      '&-hidden': {\n        display: 'none',\n      },\n\n      [`${componentCls}-dropdown-menu`]: {\n        maxHeight: token.tabsDropdownHeight,\n        margin: 0,\n        padding: `${dropdownEdgeChildVerticalPadding}px 0`,\n        overflowX: 'hidden',\n        overflowY: 'auto',\n        textAlign: {\n          _skip_check_: true,\n          value: 'left',\n        },\n        listStyleType: 'none',\n        backgroundColor: token.colorBgContainer,\n        backgroundClip: 'padding-box',\n        borderRadius: token.borderRadiusLG,\n        outline: 'none',\n        boxShadow: token.boxShadowSecondary,\n\n        '&-item': {\n          ...textEllipsis,\n          display: 'flex',\n          alignItems: 'center',\n          minWidth: token.tabsDropdownWidth,\n          margin: 0,\n          padding: `${token.paddingXXS}px ${token.paddingSM}px`,\n          color: token.colorText,\n          fontWeight: 'normal',\n          fontSize: token.fontSize,\n          lineHeight: token.lineHeight,\n          cursor: 'pointer',\n          transition: `all ${token.motionDurationSlow}`,\n\n          '> span': {\n            flex: 1,\n            whiteSpace: 'nowrap',\n          },\n\n          '&-remove': {\n            flex: 'none',\n            marginLeft: {\n              _skip_check_: true,\n              value: token.marginSM,\n            },\n            color: token.colorTextDescription,\n            fontSize: token.fontSizeSM,\n            background: 'transparent',\n            border: 0,\n            cursor: 'pointer',\n\n            '&:hover': {\n              color: tabsHoverColor,\n            },\n          },\n\n          '&:hover': {\n            background: token.controlItemBgHover,\n          },\n\n          '&-disabled': {\n            '&, &:hover': {\n              color: token.colorTextDisabled,\n              background: 'transparent',\n              cursor: 'not-allowed',\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genPositionStyle: GenerateStyle<TabsToken> = (token: TabsToken): CSSObject => {\n  const { componentCls, margin, colorSplit } = token;\n  return {\n    // ========================== Top & Bottom ==========================\n    [`${componentCls}-top, ${componentCls}-bottom`]: {\n      flexDirection: 'column',\n\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        margin: `0 0 ${margin}px 0`,\n\n        '&::before': {\n          position: 'absolute',\n          right: {\n            _skip_check_: true,\n            value: 0,\n          },\n          left: {\n            _skip_check_: true,\n            value: 0,\n          },\n          borderBottom: `${token.lineWidth}px ${token.lineType} ${colorSplit}`,\n          content: \"''\",\n        },\n\n        [`${componentCls}-ink-bar`]: {\n          height: token.lineWidthBold,\n\n          '&-animated': {\n            transition: `width ${token.motionDurationSlow}, left ${token.motionDurationSlow},\n            right ${token.motionDurationSlow}`,\n          },\n        },\n\n        [`${componentCls}-nav-wrap`]: {\n          '&::before, &::after': {\n            top: 0,\n            bottom: 0,\n            width: token.controlHeight,\n          },\n\n          '&::before': {\n            left: {\n              _skip_check_: true,\n              value: 0,\n            },\n            boxShadow: token.boxShadowTabsOverflowLeft,\n          },\n\n          '&::after': {\n            right: {\n              _skip_check_: true,\n              value: 0,\n            },\n            boxShadow: token.boxShadowTabsOverflowRight,\n          },\n\n          [`&${componentCls}-nav-wrap-ping-left::before`]: {\n            opacity: 1,\n          },\n          [`&${componentCls}-nav-wrap-ping-right::after`]: {\n            opacity: 1,\n          },\n        },\n      },\n    },\n\n    [`${componentCls}-top`]: {\n      [`> ${componentCls}-nav,\n        > div > ${componentCls}-nav`]: {\n        '&::before': {\n          bottom: 0,\n        },\n\n        [`${componentCls}-ink-bar`]: {\n          bottom: 0,\n        },\n      },\n    },\n\n    [`${componentCls}-bottom`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        order: 1,\n        marginTop: `${margin}px`,\n        marginBottom: 0,\n\n        '&::before': {\n          top: 0,\n        },\n\n        [`${componentCls}-ink-bar`]: {\n          top: 0,\n        },\n      },\n\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        order: 0,\n      },\n    },\n\n    // ========================== Left & Right ==========================\n    [`${componentCls}-left, ${componentCls}-right`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        flexDirection: 'column',\n        minWidth: token.controlHeight * 1.25,\n\n        // >>>>>>>>>>> Tab\n        [`${componentCls}-tab`]: {\n          padding: `${token.paddingXS}px ${token.paddingLG}px`,\n          textAlign: 'center',\n        },\n\n        [`${componentCls}-tab + ${componentCls}-tab`]: {\n          margin: `${token.margin}px 0 0 0`,\n        },\n\n        // >>>>>>>>>>> Nav\n        [`${componentCls}-nav-wrap`]: {\n          flexDirection: 'column',\n\n          '&::before, &::after': {\n            right: {\n              _skip_check_: true,\n              value: 0,\n            },\n            left: {\n              _skip_check_: true,\n              value: 0,\n            },\n            height: token.controlHeight,\n          },\n\n          '&::before': {\n            top: 0,\n            boxShadow: token.boxShadowTabsOverflowTop,\n          },\n\n          '&::after': {\n            bottom: 0,\n            boxShadow: token.boxShadowTabsOverflowBottom,\n          },\n\n          [`&${componentCls}-nav-wrap-ping-top::before`]: {\n            opacity: 1,\n          },\n\n          [`&${componentCls}-nav-wrap-ping-bottom::after`]: {\n            opacity: 1,\n          },\n        },\n\n        // >>>>>>>>>>> Ink Bar\n        [`${componentCls}-ink-bar`]: {\n          width: token.lineWidthBold,\n\n          '&-animated': {\n            transition: `height ${token.motionDurationSlow}, top ${token.motionDurationSlow}`,\n          },\n        },\n\n        [`${componentCls}-nav-list, ${componentCls}-nav-operations`]: {\n          flex: '1 0 auto', // fix safari scroll problem\n          flexDirection: 'column',\n        },\n      },\n    },\n\n    [`${componentCls}-left`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-ink-bar`]: {\n          right: {\n            _skip_check_: true,\n            value: 0,\n          },\n        },\n      },\n\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        marginLeft: {\n          _skip_check_: true,\n          value: `-${token.lineWidth}px`,\n        },\n        borderLeft: {\n          _skip_check_: true,\n          value: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n        },\n\n        [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n          paddingLeft: {\n            _skip_check_: true,\n            value: token.paddingLG,\n          },\n        },\n      },\n    },\n\n    [`${componentCls}-right`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        order: 1,\n\n        [`${componentCls}-ink-bar`]: {\n          left: {\n            _skip_check_: true,\n            value: 0,\n          },\n        },\n      },\n\n      [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n        order: 0,\n        marginRight: {\n          _skip_check_: true,\n          value: -token.lineWidth,\n        },\n        borderRight: {\n          _skip_check_: true,\n          value: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n        },\n\n        [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n          paddingRight: {\n            _skip_check_: true,\n            value: token.paddingLG,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genSizeStyle: GenerateStyle<TabsToken> = (token: TabsToken): CSSObject => {\n  const { componentCls, padding } = token;\n  return {\n    [componentCls]: {\n      '&-small': {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: `${token.paddingXS}px 0`,\n            fontSize: token.fontSize,\n          },\n        },\n      },\n\n      '&-large': {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: `${padding}px 0`,\n            fontSize: token.fontSizeLG,\n          },\n        },\n      },\n    },\n\n    [`${componentCls}-card`]: {\n      [`&${componentCls}-small`]: {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: `${token.paddingXXS * 1.5}px ${padding}px`,\n          },\n        },\n        [`&${componentCls}-bottom`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: `0 0 ${token.borderRadius}px ${token.borderRadius}px`,\n          },\n        },\n        [`&${componentCls}-top`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: `${token.borderRadius}px ${token.borderRadius}px 0 0`,\n          },\n        },\n        [`&${componentCls}-right`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `0 ${token.borderRadius}px ${token.borderRadius}px 0`,\n            },\n          },\n        },\n        [`&${componentCls}-left`]: {\n          [`> ${componentCls}-nav ${componentCls}-tab`]: {\n            borderRadius: {\n              _skip_check_: true,\n              value: `${token.borderRadius}px 0 0 ${token.borderRadius}px`,\n            },\n          },\n        },\n      },\n\n      [`&${componentCls}-large`]: {\n        [`> ${componentCls}-nav`]: {\n          [`${componentCls}-tab`]: {\n            padding: `${token.paddingXS}px ${padding}px ${token.paddingXXS * 1.5}px`,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genTabStyle: GenerateStyle<TabsToken, CSSObject> = (token: TabsToken) => {\n  const { componentCls, tabsActiveColor, tabsHoverColor, iconCls, tabsHorizontalGutter } = token;\n\n  const tabCls = `${componentCls}-tab`;\n\n  return {\n    [tabCls]: {\n      position: 'relative',\n      display: 'inline-flex',\n      alignItems: 'center',\n      padding: `${token.paddingSM}px 0`,\n      fontSize: `${token.fontSize}px`,\n      background: 'transparent',\n      border: 0,\n      outline: 'none',\n      cursor: 'pointer',\n      '&-btn, &-remove': {\n        '&:focus:not(:focus-visible), &:active': {\n          color: tabsActiveColor,\n        },\n        ...genFocusStyle(token),\n      },\n      '&-btn': {\n        outline: 'none',\n        transition: 'all 0.3s',\n      },\n      '&-remove': {\n        flex: 'none',\n        marginRight: {\n          _skip_check_: true,\n          value: -token.marginXXS,\n        },\n        marginLeft: {\n          _skip_check_: true,\n          value: token.marginXS,\n        },\n        color: token.colorTextDescription,\n        fontSize: token.fontSizeSM,\n        background: 'transparent',\n        border: 'none',\n        outline: 'none',\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationSlow}`,\n        '&:hover': {\n          color: token.colorTextHeading,\n        },\n      },\n      '&:hover': {\n        color: tabsHoverColor,\n      },\n\n      [`&${tabCls}-active ${tabCls}-btn`]: {\n        color: token.colorPrimary,\n        textShadow: token.tabsActiveTextShadow,\n      },\n\n      [`&${tabCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n      },\n      [`&${tabCls}-disabled ${tabCls}-btn, &${tabCls}-disabled ${componentCls}-remove`]: {\n        '&:focus, &:active': {\n          color: token.colorTextDisabled,\n        },\n      },\n      [`& ${tabCls}-remove ${iconCls}`]: {\n        margin: 0,\n      },\n      [iconCls]: {\n        marginRight: {\n          _skip_check_: true,\n          value: token.marginSM,\n        },\n      },\n    },\n\n    [`${tabCls} + ${tabCls}`]: {\n      margin: {\n        _skip_check_: true,\n        value: `0 0 0 ${tabsHorizontalGutter}px`,\n      },\n    },\n  };\n};\n\nconst genRtlStyle: GenerateStyle<TabsToken, CSSObject> = (token: TabsToken) => {\n  const { componentCls, tabsHorizontalGutter, iconCls, tabsCardGutter } = token;\n  const rtlCls = `${componentCls}-rtl`;\n  return {\n    [rtlCls]: {\n      direction: 'rtl',\n\n      [`${componentCls}-nav`]: {\n        [`${componentCls}-tab`]: {\n          margin: {\n            _skip_check_: true,\n            value: `0 0 0 ${tabsHorizontalGutter}px`,\n          },\n\n          [`${componentCls}-tab:last-of-type`]: {\n            marginLeft: {\n              _skip_check_: true,\n              value: 0,\n            },\n          },\n\n          [iconCls]: {\n            marginRight: {\n              _skip_check_: true,\n              value: 0,\n            },\n            marginLeft: {\n              _skip_check_: true,\n              value: `${token.marginSM}px`,\n            },\n          },\n\n          [`${componentCls}-tab-remove`]: {\n            marginRight: {\n              _skip_check_: true,\n              value: `${token.marginXS}px`,\n            },\n            marginLeft: {\n              _skip_check_: true,\n              value: `-${token.marginXXS}px`,\n            },\n\n            [iconCls]: {\n              margin: 0,\n            },\n          },\n        },\n      },\n\n      [`&${componentCls}-left`]: {\n        [`> ${componentCls}-nav`]: {\n          order: 1,\n        },\n\n        [`> ${componentCls}-content-holder`]: {\n          order: 0,\n        },\n      },\n\n      [`&${componentCls}-right`]: {\n        [`> ${componentCls}-nav`]: {\n          order: 0,\n        },\n\n        [`> ${componentCls}-content-holder`]: {\n          order: 1,\n        },\n      },\n\n      // ====================== Card ======================\n      [`&${componentCls}-card${componentCls}-top, &${componentCls}-card${componentCls}-bottom`]: {\n        [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n          [`${componentCls}-tab + ${componentCls}-tab`]: {\n            marginRight: {\n              _skip_check_: true,\n              value: `${tabsCardGutter}px`,\n            },\n            marginLeft: { _skip_check_: true, value: 0 },\n          },\n        },\n      },\n    },\n\n    [`${componentCls}-dropdown-rtl`]: {\n      direction: 'rtl',\n    },\n\n    [`${componentCls}-menu-item`]: {\n      [`${componentCls}-dropdown-rtl`]: {\n        textAlign: {\n          _skip_check_: true,\n          value: 'right',\n        },\n      },\n    },\n  };\n};\n\nconst genTabsStyle: GenerateStyle<TabsToken> = (token: TabsToken): CSSObject => {\n  const {\n    componentCls,\n    tabsCardHorizontalPadding,\n    tabsCardHeight,\n    tabsCardGutter,\n    tabsHoverColor,\n    tabsActiveColor,\n    colorSplit,\n  } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      display: 'flex',\n\n      // ========================== Navigation ==========================\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        position: 'relative',\n        display: 'flex',\n        flex: 'none',\n        alignItems: 'center',\n\n        [`${componentCls}-nav-wrap`]: {\n          position: 'relative',\n          display: 'flex',\n          flex: 'auto',\n          alignSelf: 'stretch',\n          overflow: 'hidden',\n          whiteSpace: 'nowrap',\n          transform: 'translate(0)', // Fix chrome render bug\n\n          // >>>>> Ping shadow\n          '&::before, &::after': {\n            position: 'absolute',\n            zIndex: 1,\n            opacity: 0,\n            transition: `opacity ${token.motionDurationSlow}`,\n            content: \"''\",\n            pointerEvents: 'none',\n          },\n        },\n\n        [`${componentCls}-nav-list`]: {\n          position: 'relative',\n          display: 'flex',\n          transition: `opacity ${token.motionDurationSlow}`,\n        },\n\n        // >>>>>>>> Operations\n        [`${componentCls}-nav-operations`]: {\n          display: 'flex',\n          alignSelf: 'stretch',\n        },\n\n        [`${componentCls}-nav-operations-hidden`]: {\n          position: 'absolute',\n          visibility: 'hidden',\n          pointerEvents: 'none',\n        },\n\n        [`${componentCls}-nav-more`]: {\n          position: 'relative',\n          padding: tabsCardHorizontalPadding,\n          background: 'transparent',\n          border: 0,\n\n          '&::after': {\n            position: 'absolute',\n            right: {\n              _skip_check_: true,\n              value: 0,\n            },\n            bottom: 0,\n            left: {\n              _skip_check_: true,\n              value: 0,\n            },\n            height: token.controlHeightLG / 8,\n            transform: 'translateY(100%)',\n            content: \"''\",\n          },\n        },\n\n        [`${componentCls}-nav-add`]: {\n          minWidth: `${tabsCardHeight}px`,\n          marginLeft: {\n            _skip_check_: true,\n            value: `${tabsCardGutter}px`,\n          },\n          padding: `0 ${token.paddingXS}px`,\n          background: 'transparent',\n          border: `${token.lineWidth}px ${token.lineType} ${colorSplit}`,\n          borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n          outline: 'none',\n          cursor: 'pointer',\n          color: token.colorText,\n          transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n\n          '&:hover': {\n            color: tabsHoverColor,\n          },\n\n          '&:active, &:focus:not(:focus-visible)': {\n            color: tabsActiveColor,\n          },\n\n          ...genFocusStyle(token),\n        },\n      },\n\n      [`${componentCls}-extra-content`]: {\n        flex: 'none',\n      },\n\n      // ============================ InkBar ============================\n      [`${componentCls}-ink-bar`]: {\n        position: 'absolute',\n        background: token.colorPrimary,\n        pointerEvents: 'none',\n      },\n\n      // ============================= Tabs =============================\n      ...genTabStyle(token),\n\n      // =========================== TabPanes ===========================\n      [`${componentCls}-content`]: {\n        position: 'relative',\n        display: 'flex',\n        width: '100%',\n\n        ['&-animated']: {\n          transition: 'margin 0.3s',\n        },\n      },\n\n      [`${componentCls}-content-holder`]: {\n        flex: 'auto',\n        minWidth: 0,\n        minHeight: 0,\n      },\n\n      [`${componentCls}-tabpane`]: {\n        outline: 'none',\n        flex: 'none',\n        width: '100%',\n      },\n    },\n\n    [`${componentCls}-centered`]: {\n      [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n        [`${componentCls}-nav-wrap`]: {\n          [`&:not([class*='${componentCls}-nav-wrap-ping'])`]: {\n            justifyContent: 'center',\n          },\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Tabs',\n  token => {\n    const tabsCardHeight = token.controlHeightLG;\n\n    const tabsToken = mergeToken<TabsToken>(token, {\n      tabsHoverColor: token.colorPrimaryHover,\n      tabsActiveColor: token.colorPrimaryActive,\n\n      tabsCardHorizontalPadding: `${\n        (tabsCardHeight - Math.round(token.fontSize * token.lineHeight)) / 2 - token.lineWidth\n      }px ${token.padding}px`,\n      tabsCardHeight,\n      tabsCardGutter: token.marginXXS / 2,\n      tabsHorizontalGutter: 32, // Fixed Value\n      tabsCardHeadBackground: token.colorFillAlter,\n      dropdownEdgeChildVerticalPadding: token.paddingXXS,\n      tabsActiveTextShadow: '0 0 0.25px currentcolor',\n      tabsDropdownHeight: 200,\n      tabsDropdownWidth: 120,\n    });\n\n    return [\n      genSizeStyle(tabsToken),\n      genRtlStyle(tabsToken),\n      genPositionStyle(tabsToken),\n      genDropdownStyle(tabsToken),\n      genCardStyle(tabsToken),\n      genTabsStyle(tabsToken),\n      genMotionStyle(tabsToken),\n    ];\n  },\n  token => ({\n    zIndexPopup: token.zIndexPopupBase + 50,\n  }),\n);\n"
  },
  {
    "path": "components/tabs/style/motion.ts",
    "content": "import type { TabsToken } from '.';\nimport { initSlideMotion } from '../../style/motion';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genMotionStyle: GenerateStyle<TabsToken> = token => {\n  const { componentCls, motionDurationSlow } = token;\n\n  return [\n    {\n      [componentCls]: {\n        [`${componentCls}-switch`]: {\n          '&-appear, &-enter': {\n            transition: 'none',\n\n            '&-start': {\n              opacity: 0,\n            },\n            '&-active': {\n              opacity: 1,\n              transition: `opacity ${motionDurationSlow}`,\n            },\n          },\n\n          '&-leave': {\n            position: 'absolute',\n            transition: 'none',\n            inset: 0,\n\n            '&-start': {\n              opacity: 1,\n            },\n            '&-active': {\n              opacity: 0,\n              transition: `opacity ${motionDurationSlow}`,\n            },\n          },\n        },\n      },\n    },\n\n    // Follow code may reuse in other components\n    [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')],\n  ];\n};\n\nexport default genMotionStyle;\n"
  },
  {
    "path": "components/tag/CheckableTag.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\n\nconst checkableTagProps = () => ({\n  prefixCls: String,\n  checked: { type: Boolean, default: undefined },\n  onChange: {\n    type: Function as PropType<(checked: boolean) => void>,\n  },\n  onClick: {\n    type: Function as PropType<(e: MouseEvent) => void>,\n  },\n  'onUpdate:checked': Function as PropType<(checked: boolean) => void>,\n});\nexport type CheckableTagProps = Partial<ExtractPropTypes<ReturnType<typeof checkableTagProps>>>;\n\nconst CheckableTag = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACheckableTag',\n  inheritAttrs: false,\n  props: checkableTagProps(),\n  // emits: ['update:checked', 'change', 'click'],\n  setup(props, { slots, emit, attrs }) {\n    const { prefixCls } = useConfigInject('tag', props);\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const handleClick = (e: MouseEvent) => {\n      const { checked } = props;\n      emit('update:checked', !checked);\n      emit('change', !checked);\n      emit('click', e);\n    };\n\n    const cls = computed(() =>\n      classNames(prefixCls.value, hashId.value, {\n        [`${prefixCls.value}-checkable`]: true,\n        [`${prefixCls.value}-checkable-checked`]: props.checked,\n      }),\n    );\n\n    return () => {\n      return wrapSSR(\n        <span {...attrs} class={[cls.value, attrs.class]} onClick={handleClick}>\n          {slots.default?.()}\n        </span>,\n      );\n    };\n  },\n});\n\nexport default CheckableTag;\n"
  },
  {
    "path": "components/tag/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tag/demo/basic.vue correctly 1`] = `<div><span class=\"ant-tag\">Tag 1<!----></span><span class=\"ant-tag\"><a href=\"https://github.com/vueComponent/ant-design\">Link</a><!----></span><span class=\"ant-tag\">Tag 2<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span><span class=\"ant-tag\">Prevent Default<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></div>`;\n\nexports[`renders ./components/tag/demo/border-less.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-borderless\">Tag 1<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-borderless\">Tag 2<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-borderless\">Tag 3<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" fill-rule=\"evenodd\" viewBox=\"64 64 896 896\"><path d=\"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\"></path></svg></span></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-borderless\">Tag 4<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" fill-rule=\"evenodd\" viewBox=\"64 64 896 896\"><path d=\"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\"></path></svg></span></span></div>\n  <!---->\n</div>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\" style=\"flex-wrap: wrap; margin-bottom: -8px;\">\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-processing ant-tag-borderless\"> processing <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-success ant-tag-borderless\"> success <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-error ant-tag-borderless\"> error <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-warning ant-tag-borderless\"> warning <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-magenta ant-tag-borderless\"> magenta <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-red ant-tag-borderless\"> red <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-volcano ant-tag-borderless\"> volcano <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-orange ant-tag-borderless\"> orange <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-gold ant-tag-borderless\"> gold <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-lime ant-tag-borderless\"> lime <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-green ant-tag-borderless\"> green <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-cyan ant-tag-borderless\"> cyan <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-blue ant-tag-borderless\"> blue <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 0px; padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-geekblue ant-tag-borderless\"> geekblue <!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"padding-bottom: 8px;\"><span class=\"ant-tag ant-tag-purple ant-tag-borderless\"> purple <!----></span></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tag/demo/checkable.vue correctly 1`] = `<div><span class=\"ant-tag ant-tag-checkable\">Tag1</span><span class=\"ant-tag ant-tag-checkable\">Tag2</span><span class=\"ant-tag ant-tag-checkable\">Tag3</span></div>`;\n\nexports[`renders ./components/tag/demo/colorful.vue correctly 1`] = `\n<h4 style=\"margin-bottom: 16px;\">Presets:</h4>\n<div><span class=\"ant-tag ant-tag-pink\">pink<!----></span><span class=\"ant-tag ant-tag-red\">red<!----></span><span class=\"ant-tag ant-tag-orange\">orange<!----></span><span class=\"ant-tag ant-tag-green\">green<!----></span><span class=\"ant-tag ant-tag-cyan\">cyan<!----></span><span class=\"ant-tag ant-tag-blue\">blue<!----></span><span class=\"ant-tag ant-tag-purple\">purple<!----></span></div>\n<h4>Custom:</h4>\n<div><span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(255, 85, 0);\">#f50<!----></span><span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(45, 183, 245);\">#2db7f5<!----></span><span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(135, 208, 104);\">#87d068<!----></span><span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(16, 142, 233);\">#108ee9<!----></span></div>\n`;\n\nexports[`renders ./components/tag/demo/control.vue correctly 1`] = `\n<span class=\"ant-tag\">Unremovable<!----></span>\n<span class=\"ant-tag\">Tag 2<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span>\n<span class=\"ant-tag\">Tag 3Tag 3Tag 3Tag 3...<span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span>\n<span style=\"background: rgb(255, 255, 255); border-style: dashed;\" class=\"ant-tag\"><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span> New Tag\n<!----></span>\n`;\n\nexports[`renders ./components/tag/demo/hot-tags.vue correctly 1`] = `\n<span style=\"margin-right: 8px;\">Categories:</span>\n<span class=\"ant-tag ant-tag-checkable\">Movies</span>\n<span class=\"ant-tag ant-tag-checkable\">Books</span>\n<span class=\"ant-tag ant-tag-checkable\">Music</span>\n<span class=\"ant-tag ant-tag-checkable\">Sports</span>\n`;\n\nexports[`renders ./components/tag/demo/icon.vue correctly 1`] = `\n<span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(85, 172, 238);\"><span role=\"img\" aria-label=\"twitter\" class=\"anticon anticon-twitter\"><svg focusable=\"false\" class=\"\" data-icon=\"twitter\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0075-94 336.64 336.64 0 01-108.2 41.2A170.1 170.1 0 00672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 00-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 01-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 01-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z\"></path></svg></span><span> Twitter </span>\n<!----></span>\n<span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(205, 32, 31);\"><span role=\"img\" aria-label=\"youtube\" class=\"anticon anticon-youtube\"><svg focusable=\"false\" class=\"\" data-icon=\"youtube\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 00-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0082.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z\"></path></svg></span><span> Youtube </span>\n<!----></span>\n<span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(59, 89, 153);\"><span role=\"img\" aria-label=\"facebook\" class=\"anticon anticon-facebook\"><svg focusable=\"false\" class=\"\" data-icon=\"facebook\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z\"></path></svg></span><span> Facebook </span>\n<!----></span>\n<span class=\"ant-tag ant-tag-has-color\" style=\"background-color: rgb(85, 172, 238);\"><span role=\"img\" aria-label=\"linkedin\" class=\"anticon anticon-linkedin\"><svg focusable=\"false\" class=\"\" data-icon=\"linkedin\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 10-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z\"></path></svg></span><span> LinkedIn </span>\n<!----></span>\n`;\n\nexports[`renders ./components/tag/demo/status.vue correctly 1`] = `\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Without icon</span></div>\n<div><span class=\"ant-tag ant-tag-success\">success<!----></span><span class=\"ant-tag ant-tag-processing\">processing<!----></span><span class=\"ant-tag ant-tag-error\">error<!----></span><span class=\"ant-tag ant-tag-warning\">warning<!----></span><span class=\"ant-tag ant-tag-default\">default<!----></span></div>\n<div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">With icon</span></div>\n<div><span class=\"ant-tag ant-tag-success\"><span role=\"img\" aria-label=\"check-circle\" class=\"anticon anticon-check-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"check-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\"></path><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span><span> success </span>\n  <!----></span><span class=\"ant-tag ant-tag-processing\"><span role=\"img\" aria-label=\"sync\" class=\"anticon anticon-sync\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"sync\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 01755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 01512.1 856a342.24 342.24 0 01-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 00-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 00-8-8.2z\"></path></svg></span><span> processing </span>\n  <!----></span><span class=\"ant-tag ant-tag-error\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 00-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"></path><path d=\"M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span><span> error </span>\n  <!----></span><span class=\"ant-tag ant-tag-warning\"><span role=\"img\" aria-label=\"exclamation-circle\" class=\"anticon anticon-exclamation-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"exclamation-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z\"></path></svg></span><span> warning </span>\n  <!----></span><span class=\"ant-tag ant-tag-default\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span><span> waiting </span>\n  <!----></span><span class=\"ant-tag ant-tag-default\"><span role=\"img\" aria-label=\"minus-circle\" class=\"anticon anticon-minus-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"minus-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"></path><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path></svg></span><span> stop </span>\n  <!----></span>\n</div>\n`;\n"
  },
  {
    "path": "components/tag/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Tag visibility can be controlled by visible with hidden as initial value 1`] = `<span class=\"ant-tag ant-tag-hidden\"><!----><!----></span>`;\n\nexports[`Tag visibility can be controlled by visible with hidden as initial value 2`] = `<span class=\"ant-tag\"><!----><!----></span>`;\n\nexports[`Tag visibility can be controlled by visible with hidden as initial value 3`] = `<span class=\"ant-tag ant-tag-hidden\"><!----><!----></span>`;\n\nexports[`Tag visibility can be controlled by visible with visible as initial value 1`] = `<span class=\"ant-tag\"><!----><!----></span>`;\n\nexports[`Tag visibility can be controlled by visible with visible as initial value 2`] = `<span class=\"ant-tag ant-tag-hidden\"><!----><!----></span>`;\n\nexports[`Tag visibility can be controlled by visible with visible as initial value 3`] = `<span class=\"ant-tag\"><!----><!----></span>`;\n"
  },
  {
    "path": "components/tag/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tag');\n"
  },
  {
    "path": "components/tag/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Tag from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Tag', () => {\n  mountTest(Tag);\n  mountTest(Tag.CheckableTag);\n  it('should be closable', async () => {\n    const onClose = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return <Tag closable onClose={onClose} />;\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-close').length).toBe(1);\n      expect(\n        wrapper.findAll('.ant-tag').filter(w => w.element.classList.contains('ant-tag-hidden'))\n          .length,\n      ).toBe(0);\n      wrapper.find('.anticon-close').trigger('click');\n      expect(onClose).toBeCalled();\n    });\n    await asyncExpect(() => {\n      expect(\n        wrapper.findAll('.ant-tag').filter(w => w.element.classList.contains('ant-tag-hidden'))\n          .length,\n      ).toBe(1);\n    });\n  });\n\n  it('should not be closed when prevent default', async () => {\n    const onClose = e => {\n      e.preventDefault();\n    };\n    const wrapper = mount(\n      {\n        render() {\n          return <Tag closable onClose={onClose} />;\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await asyncExpect(() => {\n      expect(wrapper.findAll('.anticon-close').length).toBe(1);\n      expect(\n        wrapper.findAll('.ant-tag').filter(w => w.element.classList.contains('ant-tag-hidden'))\n          .length,\n      ).toBe(0);\n      wrapper.find('.anticon-close').trigger('click');\n    });\n    // await asyncExpect(() => {\n    //   expect(\n    //     wrapper.findAll('.ant-tag').filter(w => {\n    //       const style = window.getComputedStyle(w.element, null);\n    //       return style.display !== 'none';\n    //     }).length,\n    //   ).toBe(1);\n    // });\n  });\n  describe('visibility', () => {\n    it('can be controlled by visible with visible as initial value', async () => {\n      const wrapper = mount(Tag, { props: { visible: true }, sync: false });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n        wrapper.setProps({ visible: false });\n      });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n        wrapper.setProps({ visible: true });\n      });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n\n    it('can be controlled by visible with hidden as initial value', async () => {\n      const wrapper = mount(Tag, { props: { visible: false }, sync: false });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n        wrapper.setProps({ visible: true });\n      });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n        wrapper.setProps({ visible: false });\n      });\n      await asyncExpect(() => {\n        expect(wrapper.html()).toMatchSnapshot();\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "components/tag/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic Usage\n---\n\n## zh-CN\n\n基本标签的用法，可以通过添加 `closable` 变为可关闭标签。可关闭标签具有 `close` 两个事件。\n\n## en-US\nUsage of basic Tag, and it could be closable by set `closable` property. Closable Tag supports `close` events.\n\n</docs>\n\n<template>\n  <div>\n    <a-tag>Tag 1</a-tag>\n    <a-tag><a href=\"https://github.com/vueComponent/ant-design\">Link</a></a-tag>\n    <a-tag closable @close=\"log\">Tag 2</a-tag>\n    <a-tag closable @close.prevent>Prevent Default</a-tag>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nconst log = (e: MouseEvent) => {\n  console.log(e);\n};\n</script>\n"
  },
  {
    "path": "components/tag/demo/border-less.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 无边框\n  en-US: Border Less\n---\n\n## zh-CN\n\n无边框模式。\n\n## en-US\nborder less.\n\n</docs>\n\n<template>\n  <a-space :size=\"[0, 'small']\" wrap>\n    <a-tag :bordered=\"false\">Tag 1</a-tag>\n    <a-tag :bordered=\"false\">Tag 2</a-tag>\n    <a-tag :bordered=\"false\" closable>Tag 3</a-tag>\n    <a-tag :bordered=\"false\" closable>Tag 4</a-tag>\n  </a-space>\n  <a-divider />\n  <a-space :size=\"[0, 'small']\" wrap>\n    <a-tag :bordered=\"false\" color=\"processing\">processing</a-tag>\n    <a-tag :bordered=\"false\" color=\"success\">success</a-tag>\n    <a-tag :bordered=\"false\" color=\"error\">error</a-tag>\n    <a-tag :bordered=\"false\" color=\"warning\">warning</a-tag>\n    <a-tag :bordered=\"false\" color=\"magenta\">magenta</a-tag>\n    <a-tag :bordered=\"false\" color=\"red\">red</a-tag>\n    <a-tag :bordered=\"false\" color=\"volcano\">volcano</a-tag>\n    <a-tag :bordered=\"false\" color=\"orange\">orange</a-tag>\n    <a-tag :bordered=\"false\" color=\"gold\">gold</a-tag>\n    <a-tag :bordered=\"false\" color=\"lime\">lime</a-tag>\n    <a-tag :bordered=\"false\" color=\"green\">green</a-tag>\n    <a-tag :bordered=\"false\" color=\"cyan\">cyan</a-tag>\n    <a-tag :bordered=\"false\" color=\"blue\">blue</a-tag>\n    <a-tag :bordered=\"false\" color=\"geekblue\">geekblue</a-tag>\n    <a-tag :bordered=\"false\" color=\"purple\">purple</a-tag>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/tag/demo/checkable.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 可选择标签\n  en-US: Checkable\n---\n\n## zh-CN\n\n可通过 `CheckableTag` 实现类似 Checkbox 的效果，点击切换选中效果。\n> 该组件为完全受控组件，不支持非受控用法。\n\n## en-US\n\n`CheckableTag` works like Checkbox, click it to toggle checked state.\n> it is an absolute controlled component and has no uncontrolled mode.\n\n</docs>\n\n<template>\n  <span style=\"margin-right: 8px\">Categories:</span>\n  <a-space :size=\"[0, 8]\" wrap>\n    <a-checkable-tag\n      v-for=\"(tag, index) in tagsData\"\n      :key=\"tag\"\n      v-model:checked=\"selectTags[index]\"\n      @change=\"checked => handleChange(tag, checked)\"\n    >\n      {{ tag }}\n    </a-checkable-tag>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst tagsData = reactive(['Movies', 'Books', 'Music', 'Sports']);\nconst selectTags = reactive([false, true, false, false]);\nconst handleChange = (tag: string, checked: boolean) => {\n  console.log(tag, checked);\n};\n</script>\n"
  },
  {
    "path": "components/tag/demo/colorful.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 多彩标签\n  en-US: Colorful Tag\n---\n\n## zh-CN\n\n我们添加了多种预设色彩的标签样式，用作不同场景使用。如果预设值不能满足你的需求，可以设置为具体的色值。\n\n## en-US\n\nWe preset a series of colorful tag styles for use in different situations. You can also set it to a hex color string for custom color.\n\n</docs>\n\n<template>\n  <h4 style=\"margin-bottom: 16px\">Presets:</h4>\n  <div>\n    <a-tag color=\"pink\">pink</a-tag>\n    <a-tag color=\"red\">red</a-tag>\n    <a-tag color=\"orange\">orange</a-tag>\n    <a-tag color=\"green\">green</a-tag>\n    <a-tag color=\"cyan\">cyan</a-tag>\n    <a-tag color=\"blue\">blue</a-tag>\n    <a-tag color=\"purple\">purple</a-tag>\n  </div>\n  <h4 style=\"margin: 16px 0\">Custom:</h4>\n  <div>\n    <a-tag color=\"#f50\">#f50</a-tag>\n    <a-tag color=\"#2db7f5\">#2db7f5</a-tag>\n    <a-tag color=\"#87d068\">#87d068</a-tag>\n    <a-tag color=\"#108ee9\">#108ee9</a-tag>\n  </div>\n</template>\n"
  },
  {
    "path": "components/tag/demo/control.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 动态添加和删除\n  en-US: Add & Remove Dynamically\n---\n\n## zh-CN\n\n用数组生成一组标签，可以动态添加和删除。\n\n## en-US\n\nGenerating a set of Tags by array, you can add and remove dynamically.\n\n</docs>\n\n<template>\n  <template v-for=\"(tag, index) in state.tags\" :key=\"tag\">\n    <a-tooltip v-if=\"tag.length > 20\" :title=\"tag\">\n      <a-tag :closable=\"index !== 0\" @close=\"handleClose(tag)\">\n        {{ `${tag.slice(0, 20)}...` }}\n      </a-tag>\n    </a-tooltip>\n    <a-tag v-else :closable=\"index !== 0\" @close=\"handleClose(tag)\">\n      {{ tag }}\n    </a-tag>\n  </template>\n  <a-input\n    v-if=\"state.inputVisible\"\n    ref=\"inputRef\"\n    v-model:value=\"state.inputValue\"\n    type=\"text\"\n    size=\"small\"\n    :style=\"{ width: '78px' }\"\n    @blur=\"handleInputConfirm\"\n    @keyup.enter=\"handleInputConfirm\"\n  />\n  <a-tag v-else style=\"background: #fff; border-style: dashed\" @click=\"showInput\">\n    <plus-outlined />\n    New Tag\n  </a-tag>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick } from 'vue';\nimport { PlusOutlined } from '@ant-design/icons-vue';\n\nconst inputRef = ref();\nconst state = reactive({\n  tags: ['Unremovable', 'Tag 2', 'Tag 3Tag 3Tag 3Tag 3Tag 3Tag 3Tag 3'],\n  inputVisible: false,\n  inputValue: '',\n});\n\nconst handleClose = (removedTag: string) => {\n  const tags = state.tags.filter(tag => tag !== removedTag);\n  console.log(tags);\n  state.tags = tags;\n};\n\nconst showInput = () => {\n  state.inputVisible = true;\n  nextTick(() => {\n    inputRef.value.focus();\n  });\n};\n\nconst handleInputConfirm = () => {\n  const inputValue = state.inputValue;\n  let tags = state.tags;\n  if (inputValue && tags.indexOf(inputValue) === -1) {\n    tags = [...tags, inputValue];\n  }\n  console.log(tags);\n  Object.assign(state, {\n    tags,\n    inputVisible: false,\n    inputValue: '',\n  });\n};\n</script>\n"
  },
  {
    "path": "components/tag/demo/hot-tags.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 热门标签\n  en-US: Hot Tags\n---\n\n## zh-CN\n\n选择你感兴趣的话题。\n\n## en-US\n\nSelect your favourite topics.\n\n</docs>\n\n<template>\n  <span :style=\"{ marginRight: '8px' }\">Categories:</span>\n  <template v-for=\"tag in state.tags\" :key=\"tag\">\n    <a-checkable-tag\n      :checked=\"state.selectedTags.indexOf(tag) > -1\"\n      @change=\"checked => handleChange(tag, checked)\"\n    >\n      {{ tag }}\n    </a-checkable-tag>\n  </template>\n</template>\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst state = reactive({\n  tags: ['Movies', 'Books', 'Music', 'Sports'],\n  selectedTags: [] as string[],\n});\n\nconst handleChange = (tag: string, checked: boolean) => {\n  const { selectedTags } = state;\n  const nextSelectedTags = checked ? [...selectedTags, tag] : selectedTags.filter(t => t !== tag);\n  console.log('You are interested in: ', nextSelectedTags);\n  state.selectedTags = nextSelectedTags;\n};\n</script>\n"
  },
  {
    "path": "components/tag/demo/icon.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 图标按钮\n  en-US: Icon\n---\n\n## zh-CN\n\n当需要在 `Tag` 内嵌入 `Icon` 时，可以设置 `icon` 属性，或者直接在 `Tag` 内使用 `Icon` 组件。\n如果想控制 `Icon` 具体的位置，只能直接使用 `Icon` 组件，而非 `icon` 属性。\n\n## en-US\n\n`Tag` components can contain an `Icon`. This is done by setting the `icon` property or placing an `Icon` component within the `Tag`.\nIf you want specific control over the positioning and placement of the `Icon`, then that should be done by placing the `Icon` component within the `Tag` rather than using the `icon` property.\n</docs>\n\n<template>\n  <a-tag color=\"#55acee\">\n    <template #icon>\n      <twitter-outlined />\n    </template>\n    Twitter\n  </a-tag>\n  <a-tag color=\"#cd201f\">\n    <template #icon>\n      <youtube-outlined />\n    </template>\n    Youtube\n  </a-tag>\n  <a-tag color=\"#3b5999\">\n    <template #icon>\n      <facebook-outlined />\n    </template>\n    Facebook\n  </a-tag>\n  <a-tag color=\"#55acee\">\n    <template #icon>\n      <linkedin-outlined />\n    </template>\n    LinkedIn\n  </a-tag>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  TwitterOutlined,\n  YoutubeOutlined,\n  FacebookOutlined,\n  LinkedinOutlined,\n} from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/tag/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <Checkable />\n    <Colorful />\n    <Control />\n    <HotTags />\n    <Icon />\n    <Status />\n    <BorderLess />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Checkable from './checkable.vue';\nimport Colorful from './colorful.vue';\nimport Control from './control.vue';\nimport HotTags from './hot-tags.vue';\nimport Icon from './icon.vue';\nimport Status from './status.vue';\nimport BorderLess from './border-less.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Checkable,\n    Colorful,\n    Control,\n    HotTags,\n    Icon,\n    Status,\n    BorderLess,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tag/demo/status.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 预设状态的标签\n  en-US: Status Tag\n---\n\n## zh-CN\n\n预设五种状态颜色，可以通过设置 `color` 为 `success`、 `processing`、`error`、`default`、`warning` 来代表不同的状态。\n\n## en-US\n\nWe preset five different colors, you can set color property such as `success`,`processing`,`error`,`default` and `warning` to indicate specific status.\n\n</docs>\n\n<template>\n  <a-divider orientation=\"left\">Without icon</a-divider>\n  <div>\n    <a-tag color=\"success\">success</a-tag>\n    <a-tag color=\"processing\">processing</a-tag>\n    <a-tag color=\"error\">error</a-tag>\n    <a-tag color=\"warning\">warning</a-tag>\n    <a-tag color=\"default\">default</a-tag>\n  </div>\n  <a-divider orientation=\"left\">With icon</a-divider>\n  <div>\n    <a-tag color=\"success\">\n      <template #icon>\n        <check-circle-outlined />\n      </template>\n      success\n    </a-tag>\n    <a-tag color=\"processing\">\n      <template #icon>\n        <sync-outlined :spin=\"true\" />\n      </template>\n      processing\n    </a-tag>\n    <a-tag color=\"error\">\n      <template #icon>\n        <close-circle-outlined />\n      </template>\n      error\n    </a-tag>\n    <a-tag color=\"warning\">\n      <template #icon>\n        <exclamation-circle-outlined />\n      </template>\n      warning\n    </a-tag>\n    <a-tag color=\"default\">\n      <template #icon>\n        <clock-circle-outlined />\n      </template>\n      waiting\n    </a-tag>\n    <a-tag color=\"default\">\n      <template #icon>\n        <minus-circle-outlined />\n      </template>\n      stop\n    </a-tag>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  CheckCircleOutlined,\n  SyncOutlined,\n  CloseCircleOutlined,\n  ExclamationCircleOutlined,\n  ClockCircleOutlined,\n  MinusCircleOutlined,\n} from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/tag/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Tag\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*_SBsSrKLg00AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JPNAQYrVkYkAAAAAAAAAAAAADrJ8AQ/original\n---\n\nTag for categorizing or markup.\n\n## When To Use\n\n- It can be used to tag by dimension or property.\n- When categorizing.\n\n## API\n\n### Tag\n\n| Property  | Description                   | Type          | Default | Version |\n| --------- | ----------------------------- | ------------- | ------- | ------- |\n| closable  | Whether the Tag can be closed | boolean       | `false` |         |\n| closeIcon | Custom close icon             | VNode \\| slot | -       | 2.0.0   |\n| color     | Color of the Tag              | string        | -       |         |\n| icon      | Set the icon of tag           | VNode \\| slot | -       | 2.0.0   |\n| bordered  | Whether has border style      | boolean       | `true`  | 4.x     |\n\n### Tag Events\n\n| Events Name | Description                          | Arguments   |\n| ----------- | ------------------------------------ | ----------- |\n| close       | Callback executed when tag is closed | (e) => void |\n\n### Tag.CheckableTag\n\n| Property         | Description           | Type    | Default |\n| ---------------- | --------------------- | ------- | ------- |\n| checked(v-model) | Checked status of Tag | boolean | `false` |\n\n### Tag.CheckableTag Events\n\n| Events Name | Description                                     | Arguments         |\n| ----------- | ----------------------------------------------- | ----------------- |\n| change      | Callback executed when Tag is checked/unchecked | (checked) => void |\n"
  },
  {
    "path": "components/tag/index.tsx",
    "content": "import type { HTMLAttributes, App, PropType, ExtractPropTypes, Plugin, CSSProperties } from 'vue';\nimport { shallowRef, defineComponent, watchEffect, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport Wave from '../_util/wave';\nimport type { PresetColorType, PresetStatusColorType } from '../_util/colors';\nimport { isPresetColor, isPresetStatusColor } from '../_util/colors';\nimport { eventType } from '../_util/type';\nimport type { CustomSlotsType, LiteralUnion } from '../_util/type';\n\nimport CheckableTag from './CheckableTag';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport warning from '../_util/warning';\n\nimport useStyle from './style';\n\nexport const tagProps = () => ({\n  prefixCls: String,\n  color: {\n    type: String as PropType<LiteralUnion<PresetColorType | PresetStatusColorType>>,\n  },\n  closable: { type: Boolean, default: false },\n  closeIcon: PropTypes.any,\n  /** @deprecated `visible` will be removed in next major version. */\n  visible: { type: Boolean, default: undefined },\n  onClose: {\n    type: Function as PropType<(e: MouseEvent) => void>,\n  },\n  onClick: eventType<(e: MouseEvent) => void>(),\n  'onUpdate:visible': Function as PropType<(vis: boolean) => void>,\n  icon: PropTypes.any,\n  bordered: { type: Boolean, default: true },\n});\n\nexport type TagProps = HTMLAttributes & Partial<ExtractPropTypes<ReturnType<typeof tagProps>>>;\n\nconst Tag = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATag',\n  inheritAttrs: false,\n  props: tagProps(),\n  // emits: ['update:visible', 'close'],\n  slots: Object as CustomSlotsType<{\n    closeIcon: any;\n    icon: any;\n    default: any;\n  }>,\n  setup(props, { slots, emit, attrs }) {\n    const { prefixCls, direction } = useConfigInject('tag', props);\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const visible = shallowRef(true);\n\n    // Warning for deprecated usage\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        props.visible === undefined,\n        'Tag',\n        '`visible` is deprecated, please use `<Tag v-show=\"visible\" />` instead.',\n      );\n    }\n\n    watchEffect(() => {\n      if (props.visible !== undefined) {\n        visible.value = props.visible!;\n      }\n    });\n\n    const handleCloseClick = (e: MouseEvent) => {\n      e.stopPropagation();\n      emit('update:visible', false);\n      emit('close', e);\n\n      if (e.defaultPrevented) {\n        return;\n      }\n      if (props.visible === undefined) {\n        visible.value = false;\n      }\n    };\n\n    // const isPresetColor = computed(() => {\n    //   const { color } = props;\n    //   if (!color) {\n    //     return false;\n    //   }\n    //   return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color);\n    // });\n\n    const isInternalColor = computed(\n      () => isPresetColor(props.color) || isPresetStatusColor(props.color),\n    );\n\n    const tagClassName = computed(() =>\n      classNames(prefixCls.value, hashId.value, {\n        [`${prefixCls.value}-${props.color}`]: isInternalColor.value,\n        [`${prefixCls.value}-has-color`]: props.color && !isInternalColor.value,\n        [`${prefixCls.value}-hidden`]: !visible.value,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [`${prefixCls.value}-borderless`]: !props.bordered,\n      }),\n    );\n    const handleClick = (e: MouseEvent) => {\n      emit('click', e);\n    };\n    return () => {\n      const {\n        icon = slots.icon?.(),\n        color,\n        closeIcon = slots.closeIcon?.(),\n        closable = false,\n      } = props;\n\n      const renderCloseIcon = () => {\n        if (closable) {\n          return closeIcon ? (\n            <span class={`${prefixCls.value}-close-icon`} onClick={handleCloseClick}>\n              {closeIcon}\n            </span>\n          ) : (\n            <CloseOutlined class={`${prefixCls.value}-close-icon`} onClick={handleCloseClick} />\n          );\n        }\n        return null;\n      };\n\n      const tagStyle = {\n        backgroundColor: color && !isInternalColor.value ? color : undefined,\n      };\n\n      const iconNode = icon || null;\n      const children = slots.default?.();\n      const kids = iconNode ? (\n        <>\n          {iconNode}\n          <span>{children}</span>\n        </>\n      ) : (\n        children\n      );\n\n      const isNeedWave = props.onClick !== undefined;\n      const tagNode = (\n        <span\n          {...attrs}\n          onClick={handleClick}\n          class={[tagClassName.value, attrs.class]}\n          style={[tagStyle, attrs.style as CSSProperties]}\n        >\n          {kids}\n          {renderCloseIcon()}\n        </span>\n      );\n\n      return wrapSSR(isNeedWave ? <Wave>{tagNode}</Wave> : tagNode);\n    };\n  },\n});\n\nTag.CheckableTag = CheckableTag;\n\nTag.install = function (app: App) {\n  app.component(Tag.name, Tag);\n  app.component(CheckableTag.name, CheckableTag);\n  return app;\n};\n\nexport { CheckableTag };\n\nexport default Tag as typeof Tag &\n  Plugin & {\n    readonly CheckableTag: typeof CheckableTag;\n  };\n"
  },
  {
    "path": "components/tag/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 标签\ntype: 数据展示\ntitle: Tag\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*_SBsSrKLg00AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JPNAQYrVkYkAAAAAAAAAAAAADrJ8AQ/original\n---\n\n进行标记和分类的小标签。\n\n## 何时使用\n\n- 用于标记事物的属性和维度。\n- 进行分类。\n\n## API\n\n### Tag\n\n| 参数      | 说明             | 类型          | 默认值 | 版本  |\n| --------- | ---------------- | ------------- | ------ | ----- |\n| closable  | 标签是否可以关闭 | boolean       | false  |       |\n| closeIcon | 自定义关闭按钮   | VNode \\| slot | -      | 2.0.0 |\n| color     | 标签色           | string        | -      |       |\n| icon      | 设置图标         | VNode \\| slot | -      | 2.0.0 |\n| bordered  | 是否有边框       | boolean       | `true` | 4.x   |\n\n### 事件\n\n| 事件名称 | 说明         | 回调参数    |\n| -------- | ------------ | ----------- |\n| close    | 关闭时的回调 | (e) => void |\n\n### Tag.CheckableTag\n\n| 参数             | 说明               | 类型    | 默认值 |\n| ---------------- | ------------------ | ------- | ------ |\n| checked(v-model) | 设置标签的选中状态 | boolean | false  |\n\n### 事件\n\n| 事件名称 | 说明                 | 回调参数          |\n| -------- | -------------------- | ----------------- |\n| change   | 点击标签时触发的回调 | (checked) => void |\n"
  },
  {
    "path": "components/tag/style/index.ts",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genPresetColor, resetComponent } from '../../style';\nimport type { CSSProperties } from 'vue';\nimport { capitalize } from '../../_util/util';\n\nexport interface ComponentToken {}\n\ninterface TagToken extends FullToken<'Tag'> {\n  tagFontSize: number;\n  tagLineHeight: CSSProperties['lineHeight'];\n  tagDefaultBg: string;\n  tagDefaultColor: string;\n  tagIconSize: number;\n  tagPaddingHorizontal: number;\n  tagBorderlessBg: string;\n}\n\n// ============================== Styles ==============================\n\ntype CssVariableType = 'Success' | 'Info' | 'Error' | 'Warning';\n\nconst genTagStatusStyle = (\n  token: TagToken,\n  status: 'success' | 'processing' | 'error' | 'warning',\n  cssVariableType: CssVariableType,\n): CSSObject => {\n  const capitalizedCssVariableType = capitalize(cssVariableType);\n  return {\n    [`${token.componentCls}-${status}`]: {\n      color: token[`color${cssVariableType}`],\n      background: token[`color${capitalizedCssVariableType}Bg`],\n      borderColor: token[`color${capitalizedCssVariableType}Border`],\n      [`&${token.componentCls}-borderless`]: {\n        borderColor: 'transparent',\n      },\n    },\n  };\n};\n\nconst genPresetStyle = (token: TagToken) =>\n  genPresetColor(token, (colorKey, { textColor, lightBorderColor, lightColor, darkColor }) => ({\n    [`${token.componentCls}-${colorKey}`]: {\n      color: textColor,\n      background: lightColor,\n      borderColor: lightBorderColor,\n\n      // Inverse color\n      '&-inverse': {\n        color: token.colorTextLightSolid,\n        background: darkColor,\n        borderColor: darkColor,\n      },\n      [`&${token.componentCls}-borderless`]: {\n        borderColor: 'transparent',\n      },\n    },\n  }));\n\nconst genBaseStyle = (token: TagToken): CSSObject => {\n  const { paddingXXS, lineWidth, tagPaddingHorizontal, componentCls } = token;\n  const paddingInline = tagPaddingHorizontal - lineWidth;\n  const iconMarginInline = paddingXXS - lineWidth;\n\n  return {\n    // Result\n    [componentCls]: {\n      ...resetComponent(token),\n      display: 'inline-block',\n      height: 'auto',\n      marginInlineEnd: token.marginXS,\n      paddingInline,\n      fontSize: token.tagFontSize,\n      lineHeight: `${token.tagLineHeight}px`,\n      whiteSpace: 'nowrap',\n      background: token.tagDefaultBg,\n      border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n      borderRadius: token.borderRadiusSM,\n      opacity: 1,\n      transition: `all ${token.motionDurationMid}`,\n      textAlign: 'start',\n\n      // RTL\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      '&, a, a:hover': {\n        color: token.tagDefaultColor,\n      },\n\n      [`${componentCls}-close-icon`]: {\n        marginInlineStart: iconMarginInline,\n        color: token.colorTextDescription,\n        fontSize: token.tagIconSize,\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationMid}`,\n\n        '&:hover': {\n          color: token.colorTextHeading,\n        },\n      },\n\n      [`&${componentCls}-has-color`]: {\n        borderColor: 'transparent',\n\n        [`&, a, a:hover, ${token.iconCls}-close, ${token.iconCls}-close:hover`]: {\n          color: token.colorTextLightSolid,\n        },\n      },\n\n      [`&-checkable`]: {\n        backgroundColor: 'transparent',\n        borderColor: 'transparent',\n        cursor: 'pointer',\n\n        [`&:not(${componentCls}-checkable-checked):hover`]: {\n          color: token.colorPrimary,\n          backgroundColor: token.colorFillSecondary,\n        },\n\n        '&:active, &-checked': {\n          color: token.colorTextLightSolid,\n        },\n\n        '&-checked': {\n          backgroundColor: token.colorPrimary,\n          '&:hover': {\n            backgroundColor: token.colorPrimaryHover,\n          },\n        },\n\n        '&:active': {\n          backgroundColor: token.colorPrimaryActive,\n        },\n      },\n\n      [`&-hidden`]: {\n        display: 'none',\n      },\n\n      // To ensure that a space will be placed between character and `Icon`.\n      [`> ${token.iconCls} + span, > span + ${token.iconCls}`]: {\n        marginInlineStart: paddingInline,\n      },\n    },\n    [`${componentCls}-borderless`]: {\n      borderColor: 'transparent',\n      background: token.tagBorderlessBg,\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tag', token => {\n  const { fontSize, lineHeight, lineWidth, fontSizeIcon } = token;\n  const tagHeight = Math.round(fontSize * lineHeight);\n\n  const tagFontSize = token.fontSizeSM;\n  const tagLineHeight = tagHeight - lineWidth * 2;\n  const tagDefaultBg = token.colorFillAlter;\n  const tagDefaultColor = token.colorText;\n\n  const tagToken = mergeToken<TagToken>(token, {\n    tagFontSize,\n    tagLineHeight,\n    tagDefaultBg,\n    tagDefaultColor,\n    tagIconSize: fontSizeIcon - 2 * lineWidth, // Tag icon is much more smaller\n    tagPaddingHorizontal: 8, // Fixed padding.\n    tagBorderlessBg: token.colorFillTertiary,\n  });\n\n  return [\n    genBaseStyle(tagToken),\n    genPresetStyle(tagToken),\n    genTagStatusStyle(tagToken, 'success', 'Success'),\n    genTagStatusStyle(tagToken, 'processing', 'Info'),\n    genTagStatusStyle(tagToken, 'error', 'Error'),\n    genTagStatusStyle(tagToken, 'warning', 'Warning'),\n  ];\n});\n"
  },
  {
    "path": "components/theme/__tests__/util.test.js",
    "content": "import getAlphaColor from '../util/getAlphaColor';\n\ndescribe('util', () => {\n  describe('getAlphaColor', () => {\n    it('should not process color with alpha', () => {\n      expect(getAlphaColor('rgba(0, 0, 0, 0.5)', 'rgba(255, 255, 255)')).toBe('rgba(0, 0, 0, 0.5)');\n    });\n  });\n});\n"
  },
  {
    "path": "components/theme/convertLegacyToken.ts",
    "content": "import type { MapToken } from './interface';\nimport formatToken from './util/alias';\n\nexport default function convertLegacyToken(mapToken: MapToken) {\n  const token = formatToken(mapToken as any);\n\n  const raw = {\n    theme: 'default',\n    'ant-prefix': 'ant',\n    'html-selector': 'html',\n\n    // -------- Colors -----------\n    // >>> Primary\n    'primary-color': token.colorPrimary,\n    'primary-color-hover': token.colorPrimaryHover,\n    'primary-color-active': token.colorPrimaryActive,\n    'primary-color-outline': 'fade(@primary-color, @outline-fade)',\n    'processing-color': token.colorPrimary,\n\n    // >>> Info\n    'info-color': token.colorInfo,\n    'info-color-deprecated-bg': token.colorInfoBg,\n    'info-color-deprecated-border': token.colorInfoBorder,\n\n    // >>> Success\n    'success-color': token.colorSuccess,\n    'success-color-hover': token.colorSuccessBgHover,\n    'success-color-active': token.colorSuccessActive,\n    'success-color-outline': 'fade(@success-color, @outline-fade)',\n    'success-color-deprecated-bg': token.colorSuccessBg,\n    'success-color-deprecated-border': token.colorSuccessBorder,\n\n    // >>> Warning\n    'warning-color': token.colorWarning,\n    'warning-color-hover': token.colorWarningHover,\n    'warning-color-active': token.colorWarningActive,\n    'warning-color-outline': 'fade(@warning-color, @outline-fade)',\n    'warning-color-deprecated-bg': token.colorWarningBg,\n    'warning-color-deprecated-border': token.colorWarningBorder,\n\n    // >>> Error\n    'error-color': token.colorError,\n    'error-color-hover': token.colorErrorHover,\n    'error-color-active': token.colorErrorActive,\n    'error-color-outline': 'fade(@error-color, @outline-fade)',\n    'error-color-deprecated-bg': token.colorErrorBg,\n    'error-color-deprecated-border': token.colorErrorBorder,\n\n    'highlight-color': token.colorHighlight,\n    'normal-color': '#d9d9d9',\n    white: token.colorWhite,\n    black: '#000',\n\n    // Color used by default to control hover and active backgrounds and for\n    // alert info backgrounds.\n    'primary-1': token.colorPrimaryBg,\n    'primary-2': token.colorPrimaryBgHover,\n    'primary-3': token.colorPrimaryBorder,\n    'primary-4': token.colorPrimaryBorderHover,\n    'primary-5': token.colorPrimaryHover,\n    'primary-6': token.colorPrimary,\n    'primary-7': token.colorPrimaryActive,\n    'primary-8': token.colorPrimaryTextHover,\n    'primary-9': token.colorPrimaryText,\n    'primary-10': token.colorPrimaryTextActive,\n\n    // Base Scaffolding Variables\n    // ---\n    // Background color for `<body>`\n    'body-background': token.colorBgBase,\n\n    // Base background color for most components\n    'component-background': token.colorBgContainer,\n\n    // Popover background color\n    'popover-background': token.colorBgElevated,\n    'popover-customize-border-color': token.colorSplit,\n    'font-family': token.fontFamily,\n    'code-family': \"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace\",\n    'text-color': token.colorText,\n    'text-color-secondary': token.colorTextSecondary,\n    'text-color-inverse': token.colorWhite,\n    'icon-color': token.colorIcon,\n    'icon-color-hover': token.colorIconHover,\n    'heading-color': token.colorTextHeading,\n    'text-color-dark': 'fade(@white, 85%)',\n    'text-color-secondary-dark': 'fade(@white, 65%)',\n    'text-selection-bg': token.colorPrimary,\n    'font-variant-base': 'tabular-nums',\n    'font-feature-settings-base': 'tnum',\n    'font-size-base': token.fontSize,\n    'font-size-lg': token.fontSizeLG,\n    'font-size-sm': token.fontSizeSM,\n    'heading-1-size': token.fontSizeHeading1,\n    'heading-2-size': token.fontSizeHeading2,\n    'heading-3-size': token.fontSizeHeading3,\n    'heading-4-size': token.fontSizeHeading4,\n    'heading-5-size': token.fontSizeHeading5,\n\n    // https://github.com/ant-design/ant-design/issues/20210\n    'line-height-base': token.lineHeight,\n    'border-radius-base': token.borderRadius,\n    'border-radius-sm': token.borderRadiusSM,\n\n    // control border\n    'control-border-radius': token.borderRadius,\n\n    // arrow border\n    'arrow-border-radius': token.borderRadiusSM, //  2px;\n\n    // vertical paddings\n    'padding-lg': token.paddingLG,\n    'padding-md': token.padding,\n    'padding-sm': token.paddingSM,\n    'padding-xs': token.paddingXS,\n    'padding-xss': token.paddingXXS,\n\n    // vertical padding for all form controls\n    'control-padding-horizontal': token.paddingSM, //@padding-sm;\n    'control-padding-horizontal-sm': token.paddingXS, // @padding-xs;\n\n    // vertical margins\n    'margin-lg': token.marginLG,\n    'margin-md': token.margin,\n    'margin-sm': token.marginSM,\n    'margin-xs': token.marginXS,\n    'margin-xss': token.marginXXS,\n\n    // height rules\n    'height-base': token.controlHeight,\n    'height-lg': token.controlHeightLG,\n    'height-sm': token.controlHeightSM,\n\n    // The background colors for active and hover states for things like\n    // list items or table cells.\n    'item-active-bg': token.controlItemBgActive,\n    'item-hover-bg': token.controlItemBgHover,\n\n    // ICONFONT\n    'iconfont-css-prefix': 'anticon',\n\n    // LINK\n    'link-color': token.colorLink,\n    'link-hover-color': token.colorLinkHover,\n    'link-active-color': token.colorLinkActive,\n    'link-decoration': 'none',\n    'link-hover-decoration': 'none',\n    'link-focus-decoration': 'none',\n    'link-focus-outline': 0,\n\n    // Animation\n    'ease-base-out': token.motionEaseOut,\n    'ease-base-in': 'cubic-bezier(0.9, 0, 0.3, 0.7)',\n    'ease-out': token.motionEaseOut,\n    'ease-in': 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n    'ease-in-out': token.motionEaseInOut,\n    'ease-out-back': token.motionEaseOutBack,\n    'ease-in-back': 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n    'ease-in-out-back': 'cubic-bezier(0.71, -0.46, 0.29, 1.46)',\n    'ease-out-circ': token.motionEaseOutCirc,\n    'ease-in-circ': 'cubic-bezier(0.6, 0.04, 0.98, 0.34)',\n    'ease-in-out-circ': token.motionEaseInOutCirc,\n    'ease-out-quint': token.motionEaseOutQuint,\n    'ease-in-quint': token.motionEaseInQuint,\n    'ease-in-out-quint': 'cubic-bezier(0.86, 0, 0.07, 1)',\n\n    // Border color\n    'border-color-base': token.colorBorder,\n    'border-color-split': token.colorSplit,\n    'border-color-inverse': token.colorWhite,\n    'border-width-base': token.lineWidth,\n    'border-style-base': 'solid',\n\n    // Outline\n    'outline-blur-size': 0,\n    'outline-width': token.controlOutlineWidth,\n    'outline-color': token.controlOutline,\n    'outline-fade': '20%',\n    'background-color-light': 'hsv(0, 0, 98%)', // background of header and selected item\n    'background-color-base': 'hsv(0, 0, 96%)', // Default grey background color\n\n    // Disabled states\n    'disabled-color': token.colorTextDisabled,\n    'disabled-bg': token.colorBgContainerDisabled,\n    'disabled-active-bg': token.colorBgContainerDisabled, // tint(@black, 90%);\n    'disabled-color-dark': 'fade(#fff, 35%)',\n\n    // Shadow\n    'shadow-color': 'rgba(0, 0, 0, 0.15)',\n    'shadow-color-inverse': token.colorBgContainer,\n    'box-shadow-base': token.boxShadow,\n    'shadow-1-up': token.boxShadowDrawerUp,\n    'shadow-1-down': token.boxShadowDrawerDown,\n    'shadow-1-left': token.boxShadowDrawerLeft,\n    'shadow-1-right': token.boxShadowDrawerRight,\n    'shadow-2': token.boxShadowSecondary,\n\n    // ==========================================================================\n    // ==                              Components                              ==\n    // ==========================================================================\n    // Buttons\n    'btn-font-weight': '400',\n    'btn-border-radius-base': '@border-radius-base',\n    'btn-border-radius-sm': '@border-radius-base',\n    'btn-border-width': '@border-width-base',\n    'btn-border-style': '@border-style-base',\n    'btn-shadow': '0 2px 0 rgba(0, 0, 0, 0.015)',\n    'btn-primary-shadow': '0 2px 0 rgba(0, 0, 0, 0.045)',\n    'btn-text-shadow': '0 -1px 0 rgba(0, 0, 0, 0.12)',\n\n    'btn-primary-color': '#fff',\n    'btn-primary-bg': '@primary-color',\n\n    'btn-default-color': '@text-color',\n    'btn-default-bg': '@component-background',\n    'btn-default-border': '@border-color-base',\n\n    'btn-danger-color': '#fff',\n    'btn-danger-bg': '@error-color',\n    'btn-danger-border': '@error-color',\n\n    'btn-disable-color': '@disabled-color',\n    'btn-disable-bg': '@disabled-bg',\n    'btn-disable-border': '@border-color-base',\n\n    'btn-default-ghost-color': '@component-background',\n    'btn-default-ghost-bg': 'transparent',\n    'btn-default-ghost-border': '@component-background',\n\n    'btn-font-size-lg': '@font-size-lg',\n    'btn-font-size-sm': '@font-size-base',\n    'btn-padding-horizontal-base': '@padding-md - 1px',\n    'btn-padding-horizontal-lg': '@btn-padding-horizontal-base',\n    'btn-padding-horizontal-sm': '@padding-xs - 1px',\n\n    'btn-height-base': '@height-base',\n    'btn-height-lg': '@height-lg',\n    'btn-height-sm': '@height-sm',\n\n    'btn-line-height': '@line-height-base',\n\n    'btn-circle-size': '@btn-height-base',\n    'btn-circle-size-lg': '@btn-height-lg',\n    'btn-circle-size-sm': '@btn-height-sm',\n\n    'btn-square-size': '@btn-height-base',\n    'btn-square-size-lg': '@btn-height-lg',\n    'btn-square-size-sm': '@btn-height-sm',\n    'btn-square-only-icon-size': '@font-size-base + 2px',\n    'btn-square-only-icon-size-sm': '@font-size-base',\n    'btn-square-only-icon-size-lg': '@btn-font-size-lg + 2px',\n\n    'btn-group-border': '@primary-5',\n\n    'btn-link-hover-bg': 'transparent',\n    'btn-text-hover-bg': 'rgba(0, 0, 0, 0.018)',\n\n    // Checkbox\n    'checkbox-size': '16px',\n    'checkbox-color': '@primary-color',\n    'checkbox-check-color': '#fff',\n    'checkbox-check-bg': '@checkbox-check-color',\n    'checkbox-border-width': '@border-width-base',\n    'checkbox-border-radius': '@border-radius-base',\n    'checkbox-group-item-margin-right': '8px',\n\n    // Descriptions\n    'descriptions-bg': '#fafafa',\n    'descriptions-title-margin-bottom': '20px',\n    'descriptions-default-padding': '@padding-md @padding-lg',\n    'descriptions-middle-padding': '@padding-sm @padding-lg',\n    'descriptions-small-padding': '@padding-xs @padding-md',\n    'descriptions-item-padding-bottom': '@padding-md',\n    'descriptions-item-trailing-colon': 'true',\n    'descriptions-item-label-colon-margin-right': '8px',\n    'descriptions-item-label-colon-margin-left': '2px',\n    'descriptions-extra-color': '@text-color',\n\n    // Divider\n    'divider-text-padding': '1em',\n    'divider-orientation-margin': '5%',\n    'divider-color': 'rgba(0, 0, 0, 6%)',\n    'divider-vertical-gutter': '8px',\n\n    // Dropdown\n    'dropdown-selected-color': '@primary-color',\n    'dropdown-menu-submenu-disabled-bg': '@component-background',\n    'dropdown-selected-bg': '@item-active-bg',\n\n    // Empty\n    'empty-font-size': '@font-size-base',\n\n    // Radio\n    'radio-size': '16px',\n    'radio-top': '0.2em',\n    'radio-border-width': '1px',\n    'radio-dot-size': '@radio-size - 8px',\n    'radio-dot-color': '@primary-color',\n    'radio-dot-disabled-color': 'fade(@black, 20%)',\n    'radio-solid-checked-color': '@component-background',\n\n    // Radio buttons\n    'radio-button-bg': '@btn-default-bg',\n    'radio-button-checked-bg': '@btn-default-bg',\n    'radio-button-color': '@btn-default-color',\n    'radio-button-hover-color': '@primary-5',\n    'radio-button-active-color': '@primary-7',\n    'radio-button-padding-horizontal': '@padding-md - 1px',\n    'radio-disabled-button-checked-bg': '@disabled-active-bg',\n    'radio-disabled-button-checked-color': '@disabled-color',\n    'radio-wrapper-margin-right': '8px',\n\n    // Media queries breakpoints\n    // @screen-xs and @screen-xs-min is not used in Grid\n    // smallest break point is @screen-md\n    'screen-xs': '480px',\n    'screen-xs-min': '@screen-xs',\n    // 👆 Extra small screen / phone\n\n    // 👇 Small screen / tablet\n    'screen-sm': '576px',\n    'screen-sm-min': '@screen-sm',\n\n    // Medium screen / desktop\n    'screen-md': '768px',\n    'screen-md-min': '@screen-md',\n\n    // Large screen / wide desktop\n    'screen-lg': '992px',\n    'screen-lg-min': '@screen-lg',\n\n    // Extra large screen / full hd\n    'screen-xl': '1200px',\n    'screen-xl-min': '@screen-xl',\n\n    // Extra extra large screen / large desktop\n    'screen-xxl': '1600px',\n    'screen-xxl-min': '@screen-xxl',\n\n    // provide a maximum\n    'screen-xs-max': '(@screen-sm-min - 1px)',\n    'screen-sm-max': '(@screen-md-min - 1px)',\n    'screen-md-max': '(@screen-lg-min - 1px)',\n    'screen-lg-max': '(@screen-xl-min - 1px)',\n    'screen-xl-max': '(@screen-xxl-min - 1px)',\n\n    // Grid system\n    'grid-columns': '24',\n\n    // Layout\n    'layout-body-background': '#f0f2f5',\n    'layout-header-background': '#001529',\n    'layout-header-height': '64px',\n    'layout-header-padding': '0 50px',\n    'layout-header-color': '@text-color',\n    'layout-footer-padding': '24px 50px',\n    'layout-footer-background': '@layout-body-background',\n    'layout-sider-background': '@layout-header-background',\n    'layout-trigger-height': '48px',\n    'layout-trigger-background': '#002140',\n    'layout-trigger-color': '#fff',\n    'layout-zero-trigger-width': '36px',\n    'layout-zero-trigger-height': '42px',\n    // Layout light theme\n    'layout-sider-background-light': '#fff',\n    'layout-trigger-background-light': '#fff',\n    'layout-trigger-color-light': '@text-color',\n\n    // z-index list, order by `z-index`\n    'zindex-badge': 'auto',\n    'zindex-table-fixed': '2',\n    'zindex-affix': '10',\n    'zindex-back-top': '10',\n    'zindex-picker-panel': '10',\n    'zindex-popup-close': '10',\n    'zindex-modal': '1000',\n    'zindex-modal-mask': '1000',\n    'zindex-message': '1010',\n    'zindex-notification': '1010',\n    'zindex-popover': '1030',\n    'zindex-dropdown': '1050',\n    'zindex-picker': '1050',\n    'zindex-popoconfirm': '1060',\n    'zindex-tooltip': '1070',\n    'zindex-image': '1080',\n\n    // Animation\n    'animation-duration-slow': '0.3s', // Modal\n    'animation-duration-base': '0.2s',\n    'animation-duration-fast': '0.1s', // Tooltip\n\n    //CollapsePanel\n    'collapse-panel-border-radius': '@border-radius-base',\n\n    //Dropdown\n    'dropdown-menu-bg': '@component-background',\n    'dropdown-vertical-padding': '5px',\n    'dropdown-edge-child-vertical-padding': '4px',\n    'dropdown-font-size': '@font-size-base',\n    'dropdown-line-height': '22px',\n\n    // Form\n    // ---\n    'label-required-color': '@highlight-color',\n    'label-color': '@heading-color',\n    'form-warning-input-bg': '@input-bg',\n    'form-item-margin-bottom': '24px',\n    'form-item-trailing-colon': 'true',\n    'form-vertical-label-padding': '0 0 8px',\n    'form-vertical-label-margin': '0',\n    'form-item-label-font-size': '@font-size-base',\n    'form-item-label-height': '@input-height-base',\n    'form-item-label-colon-margin-right': '8px',\n    'form-item-label-colon-margin-left': '2px',\n    'form-error-input-bg': '@input-bg',\n\n    // Input\n    // ---\n    'input-height-base': '@height-base',\n    'input-height-lg': '@height-lg',\n    'input-height-sm': '@height-sm',\n    'input-padding-horizontal': '@control-padding-horizontal - 1px',\n    'input-padding-horizontal-base': '@input-padding-horizontal',\n    'input-padding-horizontal-sm': '@control-padding-horizontal-sm - 1px',\n    'input-padding-horizontal-lg': '@input-padding-horizontal',\n    'input-padding-vertical-base': `max(\n  (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n    @border-width-base,\n  3px\n)`,\n    'input-padding-vertical-sm': `max(\n  (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n    @border-width-base,\n  0\n)`,\n    'input-padding-vertical-lg': `(\n    ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10\n  ) - @border-width-base`,\n    'input-placeholder-color': 'hsv(0, 0, 75%)',\n    'input-color': '@text-color',\n    'input-icon-color': '@input-color',\n    'input-border-color': '@border-color-base',\n    'input-bg': '@component-background',\n    'input-number-hover-border-color': '@input-hover-border-color',\n    'input-number-handler-active-bg': '#f4f4f4',\n    'input-number-handler-hover-bg': '@primary-5',\n    'input-number-handler-bg': '@component-background',\n    'input-number-handler-border-color': '@border-color-base',\n    'input-addon-bg': '@background-color-light',\n    'input-hover-border-color': '@primary-5',\n    'input-disabled-bg': '@disabled-bg',\n    'input-outline-offset': '0 0',\n    'input-icon-hover-color': 'fade(@black, 85%)',\n    'input-disabled-color': '@disabled-color',\n\n    // Mentions\n    // ---\n    'mentions-dropdown-bg': '@component-background',\n    'mentions-dropdown-menu-item-hover-bg': '@mentions-dropdown-bg',\n\n    // Select\n    // ---\n    'select-border-color': '@border-color-base',\n    'select-item-selected-color': '@text-color',\n    'select-item-selected-font-weight': '600',\n    'select-dropdown-bg': '@component-background',\n    'select-item-selected-bg': '@primary-1',\n    'select-item-active-bg': '@item-hover-bg',\n    'select-dropdown-vertical-padding': '@dropdown-vertical-padding',\n    'select-dropdown-font-size': '@dropdown-font-size',\n    'select-dropdown-line-height': '@dropdown-line-height',\n    'select-dropdown-height': '32px',\n    'select-background': '@component-background',\n    'select-clear-background': '@select-background',\n    'select-selection-item-bg': '@background-color-base',\n    'select-selection-item-border-color': '@border-color-split',\n    'select-single-item-height-lg': '40px',\n    'select-multiple-item-height': '@input-height-base - @input-padding-vertical-base * 2', // Normal 24px\n    'select-multiple-item-height-lg': '32px',\n    'select-multiple-item-spacing-half': 'ceil((@input-padding-vertical-base / 2))',\n    'select-multiple-disabled-background': '@input-disabled-bg',\n    'select-multiple-item-disabled-color': '#bfbfbf',\n    'select-multiple-item-disabled-border-color': '@select-border-color',\n\n    // Cascader\n    // ---\n    'cascader-bg': '@component-background',\n    'cascader-item-selected-bg': '@primary-1',\n    'cascader-menu-bg': '@component-background',\n    'cascader-menu-border-color-split': '@border-color-split',\n\n    // Cascader\n    // ----\n    'cascader-dropdown-vertical-padding': '@dropdown-vertical-padding',\n    'cascader-dropdown-edge-child-vertical-padding': '@dropdown-edge-child-vertical-padding',\n    'cascader-dropdown-font-size': '@dropdown-font-size',\n    'cascader-dropdown-line-height': '@dropdown-line-height',\n\n    // Anchor\n    // ---\n    'anchor-bg': 'transparent',\n    'anchor-border-color': '@border-color-split',\n    'anchor-link-top': '4px',\n    'anchor-link-left': '16px',\n    'anchor-link-padding': '@anchor-link-top 0 @anchor-link-top @anchor-link-left',\n\n    // Tooltip\n    // ---\n    // Tooltip max width\n    'tooltip-max-width': '250px',\n    // Tooltip text color\n    'tooltip-color': '#fff',\n    // Tooltip background color\n    'tooltip-bg': 'rgba(0, 0, 0, 0.75)',\n    // Tooltip arrow width\n    'tooltip-arrow-width': '8px * sqrt(2)',\n    // Tooltip distance with trigger\n    'tooltip-distance': '@tooltip-arrow-width - 1px + 4px',\n    // Tooltip arrow color\n    'tooltip-arrow-color': '@tooltip-bg',\n    'tooltip-border-radius': '@border-radius-base',\n\n    // Popover\n    // ---\n    // Popover body background color\n    'popover-bg': '@component-background',\n    // Popover text color\n    'popover-color': '@text-color',\n    // Popover maximum width\n    'popover-min-width': '177px',\n    'popover-min-height': '32px',\n    // Popover arrow width\n    'popover-arrow-width': '@tooltip-arrow-width',\n    // Popover arrow color\n    'popover-arrow-color': '@popover-bg',\n    // Popover outer arrow width\n    // Popover outer arrow color\n    'popover-arrow-outer-color': '@popover-bg',\n    // Popover distance with trigger\n    'popover-distance': '@popover-arrow-width + 4px',\n    'popover-padding-horizontal': '@padding-md',\n\n    // Modal\n    // --\n    'modal-header-padding-vertical': '@padding-md',\n    'modal-header-padding-horizontal': '@padding-lg',\n    'modal-body-padding': '@padding-lg',\n    'modal-header-bg': '@component-background',\n    'modal-header-padding': '@modal-header-padding-vertical @modal-header-padding-horizontal',\n    'modal-header-border-width': '@border-width-base',\n    'modal-header-border-style': '@border-style-base',\n    'modal-header-title-line-height': '22px',\n    'modal-header-title-font-size': '@font-size-lg',\n    'modal-header-border-color-split': '@border-color-split',\n    'modal-header-close-size':\n      '@modal-header-title-line-height + 2 * @modal-header-padding-vertical',\n    'modal-content-bg': '@component-background',\n    'modal-heading-color': '@heading-color',\n    'modal-close-color': '@text-color-secondary',\n    'modal-footer-bg': 'transparent',\n    'modal-footer-border-color-split': '@border-color-split',\n    'modal-footer-border-style': '@border-style-base',\n    'modal-footer-padding-vertical': '10px',\n    'modal-footer-padding-horizontal': '16px',\n    'modal-footer-border-width': '@border-width-base',\n    'modal-mask-bg': 'fade(@black, 45%)',\n    'modal-confirm-body-padding': '32px 32px 24px',\n    'modal-confirm-title-font-size': '@font-size-lg',\n    'modal-border-radius': '@border-radius-base',\n\n    // Progress\n    // --\n    'progress-default-color': '@processing-color',\n    'progress-remaining-color': '@background-color-base',\n    'progress-info-text-color': '@progress-text-color',\n    'progress-radius': '100px',\n    'progress-steps-item-bg': '#f3f3f3',\n    'progress-text-font-size': '1em',\n    'progress-text-color': '@text-color', // This is for circle text color, should be renamed better\n    'progress-circle-text-font-size': '1em',\n    // Menu\n    // ---\n    'menu-inline-toplevel-item-height': '40px',\n    'menu-item-height': '40px',\n    'menu-item-group-height': '@line-height-base',\n    'menu-collapsed-width': '80px',\n    'menu-bg': '@component-background',\n    'menu-popup-bg': '@component-background',\n    'menu-item-color': '@text-color',\n    'menu-inline-submenu-bg': '@background-color-light',\n    'menu-highlight-color': '@primary-color',\n    'menu-highlight-danger-color': '@error-color',\n    'menu-item-active-bg': '@primary-1',\n    'menu-item-active-danger-bg': '@red-1',\n    'menu-item-active-border-width': '3px',\n    'menu-item-group-title-color': '@text-color-secondary',\n    'menu-item-vertical-margin': '4px',\n    'menu-item-font-size': '@font-size-base',\n    'menu-item-boundary-margin': '8px',\n    'menu-item-padding-horizontal': '20px',\n    'menu-item-padding': '0 @menu-item-padding-horizontal',\n    'menu-horizontal-line-height': '46px',\n    'menu-icon-margin-right': '10px',\n    'menu-icon-size': '@menu-item-font-size',\n    'menu-icon-size-lg': '@font-size-lg',\n    'menu-item-group-title-font-size': '@menu-item-font-size',\n\n    // dark theme\n    'menu-dark-color': '@text-color-secondary-dark',\n    'menu-dark-danger-color': '@error-color',\n    'menu-dark-bg': '@layout-header-background',\n    'menu-dark-arrow-color': '#fff',\n    'menu-dark-inline-submenu-bg': '#000c17',\n    'menu-dark-highlight-color': '#fff',\n    'menu-dark-item-active-bg': '@primary-color',\n    'menu-dark-item-active-danger-bg': '@error-color',\n    'menu-dark-selected-item-icon-color': '@white',\n    'menu-dark-selected-item-text-color': '@white',\n    'menu-dark-item-hover-bg': 'transparent',\n    // Spin\n    // ---\n    'spin-dot-size-sm': '14px',\n    'spin-dot-size': '20px',\n    'spin-dot-size-lg': '32px',\n\n    // Table\n    // --\n    'table-bg': '@component-background',\n    'table-header-bg': '@background-color-light',\n    'table-header-color': '@heading-color',\n    'table-header-sort-bg': '@background-color-base',\n    'table-body-sort-bg': '#fafafa',\n    'table-row-hover-bg': '@background-color-light',\n    'table-selected-row-color': 'inherit',\n    'table-selected-row-bg': '@primary-1',\n    'table-body-selected-sort-bg': '@table-selected-row-bg',\n    'table-selected-row-hover-bg': 'darken(@table-selected-row-bg, 2%)',\n    'table-expanded-row-bg': '#fbfbfb',\n    'table-padding-vertical': '16px',\n    'table-padding-horizontal': '16px',\n    'table-padding-vertical-md': '(@table-padding-vertical * 3 / 4)',\n    'table-padding-horizontal-md': '(@table-padding-horizontal / 2)',\n    'table-padding-vertical-sm': '(@table-padding-vertical / 2)',\n    'table-padding-horizontal-sm': '(@table-padding-horizontal / 2)',\n    'table-border-color': '@border-color-split',\n    'table-border-radius-base': '@border-radius-base',\n    'table-footer-bg': '@background-color-light',\n    'table-footer-color': '@heading-color',\n    'table-header-bg-sm': '@table-header-bg',\n    'table-font-size': '@font-size-base',\n    'table-font-size-md': '@table-font-size',\n    'table-font-size-sm': '@table-font-size',\n    'table-header-cell-split-color': 'rgba(0, 0, 0, 0.06)',\n    // Sorter\n    // Legacy: `table-header-sort-active-bg` is used for hover not real active\n    'table-header-sort-active-bg': 'rgba(0, 0, 0, 0.04)',\n    'table-fixed-header-sort-active-bg': 'hsv(0, 0, 96%)',\n\n    // Filter\n    'table-header-filter-active-bg': 'rgba(0, 0, 0, 0.04)',\n    'table-filter-btns-bg': 'inherit',\n    'table-filter-dropdown-bg': '@component-background',\n    'table-expand-icon-bg': '@component-background',\n    'table-selection-column-width': '32px',\n    // Sticky\n    'table-sticky-scroll-bar-bg': 'fade(#000, 35%)',\n    'table-sticky-scroll-bar-radius': '4px',\n\n    // Tag\n    // --\n    'tag-border-radius': '@border-radius-base',\n    'tag-default-bg': '@background-color-light',\n    'tag-default-color': '@text-color',\n    'tag-font-size': '@font-size-sm',\n    'tag-line-height': '20px',\n\n    // TimePicker\n    // ---\n    'picker-bg': '@component-background',\n    'picker-basic-cell-hover-color': '@item-hover-bg',\n    'picker-basic-cell-active-with-range-color': '@primary-1',\n    'picker-basic-cell-hover-with-range-color': 'lighten(@primary-color, 35%)',\n    'picker-basic-cell-disabled-bg': 'rgba(0, 0, 0, 0.04)',\n    'picker-border-color': '@border-color-split',\n    'picker-date-hover-range-border-color': 'lighten(@primary-color, 20%)',\n    'picker-date-hover-range-color': '@picker-basic-cell-hover-with-range-color',\n    'picker-time-panel-column-width': '56px',\n    'picker-time-panel-column-height': '224px',\n    'picker-time-panel-cell-height': '28px',\n    'picker-panel-cell-height': '24px',\n    'picker-panel-cell-width': '36px',\n    'picker-text-height': '40px',\n    'picker-panel-without-time-cell-height': '66px',\n\n    // Calendar\n    // ---\n    'calendar-bg': '@component-background',\n    'calendar-input-bg': '@input-bg',\n    'calendar-border-color': '@border-color-inverse',\n    'calendar-item-active-bg': '@item-active-bg',\n    'calendar-column-active-bg': 'fade(@calendar-item-active-bg, 20%)',\n    'calendar-full-bg': '@calendar-bg',\n    'calendar-full-panel-bg': '@calendar-full-bg',\n\n    // Carousel\n    // ---\n    'carousel-dot-width': '16px',\n    'carousel-dot-height': '3px',\n    'carousel-dot-active-width': '24px',\n\n    // Badge\n    // ---\n    'badge-height': '20px',\n    'badge-height-sm': '14px',\n    'badge-dot-size': '6px',\n    'badge-font-size': '@font-size-sm',\n    'badge-font-size-sm': '@font-size-sm',\n    'badge-font-weight': 'normal',\n    'badge-status-size': '6px',\n    'badge-text-color': '@component-background',\n    'badge-color': '@highlight-color',\n\n    // Rate\n    // ---\n    'rate-star-color': '@yellow-6',\n    'rate-star-bg': '@border-color-split',\n    'rate-star-size': '20px',\n    'rate-star-hover-scale': 'scale(1.1)',\n\n    // Card\n    // ---\n    'card-head-color': '@heading-color',\n    'card-head-background': 'transparent',\n    'card-head-font-size': '@font-size-lg',\n    'card-head-font-size-sm': '@font-size-base',\n    'card-head-padding': '16px',\n    'card-head-padding-sm': '(@card-head-padding / 2)',\n    'card-head-height': '48px',\n    'card-head-height-sm': '36px',\n    'card-inner-head-padding': '12px',\n    'card-padding-base': '24px',\n    'card-padding-base-sm': '(@card-padding-base / 2)',\n    'card-actions-background': '@component-background',\n    'card-actions-li-margin': '12px 0',\n    'card-skeleton-bg': '#cfd8dc',\n    'card-background': '@component-background',\n    'card-shadow': `0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12),\n  0 5px 12px 4px rgba(0, 0, 0, 0.09)`,\n    'card-radius': '@border-radius-base',\n    'card-head-tabs-margin-bottom': '-17px',\n    'card-head-extra-color': '@text-color',\n\n    // Comment\n    // ---\n    'comment-bg': 'inherit',\n    'comment-padding-base': '@padding-md 0',\n    'comment-nest-indent': '44px',\n    'comment-font-size-base': '@font-size-base',\n    'comment-font-size-sm': '@font-size-sm',\n    'comment-author-name-color': '@text-color-secondary',\n    'comment-author-time-color': '#ccc',\n    'comment-action-color': '@text-color-secondary',\n    'comment-action-hover-color': '#595959',\n    'comment-actions-margin-bottom': 'inherit',\n    'comment-actions-margin-top': '@margin-sm',\n    'comment-content-detail-p-margin-bottom': 'inherit',\n\n    // Tabs\n    // ---\n    'tabs-card-head-background': '@background-color-light',\n    'tabs-card-height': '40px',\n    'tabs-card-active-color': '@primary-color',\n    'tabs-card-horizontal-padding': `(\n    (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2\n  ) - @border-width-base @padding-md`,\n    'tabs-card-horizontal-padding-sm': '6px @padding-md',\n    'tabs-card-horizontal-padding-lg': '7px @padding-md 6px',\n    'tabs-title-font-size': '@font-size-base',\n    'tabs-title-font-size-lg': '@font-size-lg',\n    'tabs-title-font-size-sm': '@font-size-base',\n    'tabs-ink-bar-color': '@primary-color',\n    'tabs-bar-margin': '0 0 @margin-md 0',\n    'tabs-horizontal-gutter': '32px',\n    'tabs-horizontal-margin': '0 0 0 @tabs-horizontal-gutter',\n    'tabs-horizontal-margin-rtl': '0 0 0 32px',\n    'tabs-horizontal-padding': '@padding-sm 0',\n    'tabs-horizontal-padding-lg': '@padding-md 0',\n    'tabs-horizontal-padding-sm': '@padding-xs 0',\n    'tabs-vertical-padding': '@padding-xs @padding-lg',\n    'tabs-vertical-margin': '@margin-md 0 0 0',\n    'tabs-scrolling-size': '32px',\n    'tabs-highlight-color': '@primary-color',\n    'tabs-hover-color': '@primary-5',\n    'tabs-active-color': '@primary-7',\n    'tabs-card-gutter': '2px',\n    'tabs-card-tab-active-border-top': '2px solid transparent',\n\n    // BackTop\n    // ---\n    'back-top-color': '#fff',\n    'back-top-bg': '@text-color-secondary',\n    'back-top-hover-bg': '@text-color',\n\n    // Avatar\n    // ---\n    'avatar-size-base': '32px',\n    'avatar-size-lg': '40px',\n    'avatar-size-sm': '24px',\n    'avatar-font-size-base': '18px',\n    'avatar-font-size-lg': '24px',\n    'avatar-font-size-sm': '14px',\n    'avatar-bg': '#ccc',\n    'avatar-color': '#fff',\n    'avatar-border-radius': '@border-radius-base',\n    'avatar-group-overlapping': '-8px',\n    'avatar-group-space': '3px',\n    'avatar-group-border-color': '#fff',\n\n    // Switch\n    // ---\n    'switch-height': '22px',\n    'switch-sm-height': '16px',\n    'switch-min-width': '44px',\n    'switch-sm-min-width': '28px',\n    'switch-disabled-opacity': '0.4',\n    'switch-color': '@primary-color',\n    'switch-bg': '@component-background',\n    'switch-shadow-color': 'fade(#00230b, 20%)',\n    'switch-padding': '2px',\n    'switch-inner-margin-min': 'ceil(@switch-height * 0.3)',\n    'switch-inner-margin-max': 'ceil(@switch-height * 1.1)',\n    'switch-sm-inner-margin-min': 'ceil(@switch-sm-height * 0.3)',\n    'switch-sm-inner-margin-max': 'ceil(@switch-sm-height * 1.1)',\n\n    // Pagination\n    // ---\n    'pagination-item-bg': '@component-background',\n    'pagination-item-size': '@height-base',\n    'pagination-item-size-sm': '24px',\n    'pagination-font-family': '@font-family',\n    'pagination-font-weight-active': '500',\n    'pagination-item-bg-active': '@component-background',\n    'pagination-item-link-bg': '@component-background',\n    'pagination-item-disabled-color-active': '@disabled-color',\n    'pagination-item-disabled-bg-active': '@disabled-active-bg',\n    'pagination-item-input-bg': '@component-background',\n    'pagination-mini-options-size-changer-top': '0px',\n\n    // PageHeader\n    // ---\n    'page-header-padding': '@padding-lg',\n    'page-header-padding-vertical': '@padding-md',\n    'page-header-padding-breadcrumb': '@padding-sm',\n    'page-header-content-padding-vertical': '@padding-sm',\n    'page-header-back-color': '#000',\n    'page-header-ghost-bg': 'inherit',\n    'page-header-heading-title': '@heading-4-size',\n    'page-header-heading-sub-title': '14px',\n    'page-header-tabs-tab-font-size': '16px',\n\n    // Breadcrumb\n    // ---\n    'breadcrumb-base-color': '@text-color-secondary',\n    'breadcrumb-last-item-color': '@text-color',\n    'breadcrumb-font-size': '@font-size-base',\n    'breadcrumb-icon-font-size': '@font-size-base',\n    'breadcrumb-link-color': '@text-color-secondary',\n    'breadcrumb-link-color-hover': '@text-color',\n    'breadcrumb-separator-color': '@text-color-secondary',\n    'breadcrumb-separator-margin': '0 @padding-xs',\n\n    // Slider\n    // ---\n    'slider-margin': '10px 6px 10px',\n    'slider-rail-background-color': '@background-color-base',\n    'slider-rail-background-color-hover': '#e1e1e1',\n    'slider-track-background-color': '@primary-3',\n    'slider-track-background-color-hover': '@primary-4',\n    'slider-handle-border-width': '2px',\n    'slider-handle-background-color': '@component-background',\n    'slider-handle-color': '@primary-3',\n    'slider-handle-color-hover': '@primary-4',\n    'slider-handle-color-focus': 'tint(@primary-color, 20%)',\n    'slider-handle-color-focus-shadow': 'fade(@primary-color, 12%)',\n    'slider-handle-color-tooltip-open': '@primary-color',\n    'slider-handle-size': '14px',\n    'slider-handle-margin-top': '-5px',\n    'slider-handle-margin-left': '-5px',\n    'slider-handle-shadow': '0',\n    'slider-dot-border-color': '@border-color-split',\n    'slider-dot-border-color-active': 'tint(@primary-color, 50%)',\n    'slider-disabled-color': '@disabled-color',\n    'slider-disabled-background-color': '@component-background',\n\n    // Tree\n    // ---\n    'tree-bg': '@component-background',\n    'tree-title-height': '24px',\n    'tree-child-padding': '18px',\n    'tree-directory-selected-color': '#fff',\n    'tree-directory-selected-bg': '@primary-color',\n    'tree-node-hover-bg': '@item-hover-bg',\n    'tree-node-selected-bg': '@primary-2',\n\n    // Collapse\n    // ---\n    'collapse-header-padding': '@padding-sm @padding-md',\n    'collapse-header-padding-extra': '40px',\n    'collapse-header-bg': '@background-color-light',\n    'collapse-content-padding': '@padding-md',\n    'collapse-content-bg': '@component-background',\n    'collapse-header-arrow-left': '16px',\n\n    // Skeleton\n    // ---\n    'skeleton-color': 'rgba(190, 190, 190, 0.2)',\n    'skeleton-to-color': 'shade(@skeleton-color, 5%)',\n    'skeleton-paragraph-margin-top': '28px',\n    'skeleton-paragraph-li-margin-top': '@margin-md',\n    'skeleton-paragraph-li-height': '16px',\n    'skeleton-title-height': '16px',\n    'skeleton-title-paragraph-margin-top': '@margin-lg',\n\n    // Transfer\n    // ---\n    'transfer-header-height': '40px',\n    'transfer-item-height': '@height-base',\n    'transfer-disabled-bg': '@disabled-bg',\n    'transfer-list-height': '200px',\n    'transfer-item-hover-bg': '@item-hover-bg',\n    'transfer-item-selected-hover-bg': 'darken(@item-active-bg, 2%)',\n    'transfer-item-padding-vertical': '6px',\n    'transfer-list-search-icon-top': '12px',\n\n    // Message\n    // ---\n    'message-notice-content-padding': '10px 16px',\n    'message-notice-content-bg': '@component-background',\n    // Motion\n    // ---\n    'wave-animation-width': '6px',\n\n    // Alert\n    // ---\n    'alert-success-border-color': token.colorSuccessBorder,\n    'alert-success-bg-color': token.colorSuccessBg,\n    'alert-success-icon-color': token.colorSuccess,\n    'alert-info-border-color': token.colorInfoBorder,\n    'alert-info-bg-color': token.colorInfoBg,\n    'alert-info-icon-color': token.colorInfo,\n    'alert-warning-border-color': token.colorWarningBorder,\n    'alert-warning-bg-color': token.colorWarningBg,\n    'alert-warning-icon-color': token.colorWarning,\n    'alert-error-border-color': token.colorErrorBorder,\n    'alert-error-bg-color': token.colorErrorBg,\n    'alert-error-icon-color': '@error-color',\n    'alert-message-color': '@heading-color',\n    'alert-text-color': '@text-color',\n    'alert-close-color': '@text-color-secondary',\n    'alert-close-hover-color': '@icon-color-hover',\n    'alert-padding-vertical': '@padding-xs',\n    'alert-padding-horizontal': '@padding-md - 1px',\n    'alert-no-icon-padding-vertical': '@padding-xs',\n    'alert-with-description-no-icon-padding-vertical': '@padding-md - 1px',\n    'alert-with-description-padding-vertical': '@padding-md - 1px',\n    'alert-with-description-padding': `@alert-with-description-padding-vertical 15px\n  @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size`,\n    'alert-icon-top': '8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)',\n    'alert-with-description-icon-size': '24px',\n\n    // List\n    // ---\n    'list-header-background': 'transparent',\n    'list-footer-background': 'transparent',\n    'list-empty-text-padding': '@padding-md',\n    'list-item-padding': '@padding-sm 0',\n    'list-item-padding-sm': '@padding-xs @padding-md',\n    'list-item-padding-lg': '16px 24px',\n    'list-item-meta-margin-bottom': '@padding-md',\n    'list-item-meta-avatar-margin-right': '@padding-md',\n    'list-item-meta-title-margin-bottom': '@padding-sm',\n    'list-customize-card-bg': '@component-background',\n    'list-item-meta-description-font-size': '@font-size-base',\n\n    // Statistic\n    // ---\n    'statistic-title-font-size': '@font-size-base',\n    'statistic-content-font-size': '24px',\n    'statistic-unit-font-size': '24px',\n    'statistic-font-family': '@font-family',\n\n    // Drawer\n    // ---\n    'drawer-header-padding': '@padding-md @padding-lg',\n    'drawer-body-padding': '@padding-lg',\n    'drawer-bg': '@component-background',\n    'drawer-footer-padding-vertical': '@modal-footer-padding-vertical',\n    'drawer-footer-padding-horizontal': '@modal-footer-padding-horizontal',\n    'drawer-header-close-size': '56px',\n    'drawer-title-font-size': '@font-size-lg',\n    'drawer-title-line-height': '22px',\n\n    // Timeline\n    // ---\n    'timeline-width': '2px',\n    'timeline-color': '@border-color-split',\n    'timeline-dot-border-width': '2px',\n    'timeline-dot-color': '@primary-color',\n    'timeline-dot-bg': '@component-background',\n    'timeline-item-padding-bottom': '20px',\n\n    // Typography\n    // ---\n    'typography-title-font-weight': '600',\n    'typography-title-margin-top': '1.2em',\n    'typography-title-margin-bottom': '0.5em',\n\n    // Upload\n    // ---\n    'upload-actions-color': '@text-color-secondary',\n\n    // Steps\n    // ---\n    'process-tail-color': '@border-color-split',\n    'steps-nav-arrow-color': 'fade(@black, 25%)',\n    'steps-background': '@component-background',\n    'steps-icon-size': '32px',\n    'steps-icon-custom-size': '@steps-icon-size',\n    'steps-icon-custom-top': '0px',\n    'steps-icon-custom-font-size': '24px',\n    'steps-icon-top': '-0.5px',\n    'steps-icon-font-size': '@font-size-lg',\n    'steps-icon-margin': '0 8px 0 0',\n    'steps-title-line-height': '@height-base',\n    'steps-small-icon-size': '24px',\n    'steps-small-icon-margin': '0 8px 0 0',\n    'steps-dot-size': '8px',\n    'steps-dot-top': '2px',\n    'steps-current-dot-size': '10px',\n    'steps-description-max-width': '140px',\n    'steps-nav-content-max-width': 'auto',\n    'steps-vertical-icon-width': '16px',\n    'steps-vertical-tail-width': '16px',\n    'steps-vertical-tail-width-sm': '12px',\n\n    // Notification\n    // ---\n    'notification-bg': '@component-background',\n    'notification-padding-vertical': '16px',\n    'notification-padding-horizontal': '24px',\n\n    // Result\n    // ---\n    'result-title-font-size': '24px',\n    'result-subtitle-font-size': '@font-size-base',\n    'result-icon-font-size': '72px',\n    'result-extra-margin': '24px 0 0 0',\n\n    // Image\n    // ---\n    'image-size-base': '48px',\n    'image-font-size-base': '24px',\n    'image-bg': '#f5f5f5',\n    'image-color': '#fff',\n    'image-mask-font-size': '16px',\n    'image-preview-operation-size': '18px',\n    'image-preview-operation-color': '@text-color-dark',\n    'image-preview-operation-disabled-color': 'fade(@image-preview-operation-color, 25%)',\n\n    // Segmented\n    // ---\n    'segmented-bg': 'fade(@black, 4%)',\n    'segmented-hover-bg': 'fade(@black, 6%)',\n    'segmented-selected-bg': '@white',\n    'segmented-label-color': 'fade(@black, 65%)',\n    'segmented-label-hover-color': '#262626',\n  } as const;\n\n  // Fill colors. e.g. '@red-1', '@yellow-6'\n  Object.keys(token).forEach((key: any) => {\n    if (key !== key.toLowerCase()) {\n      return;\n    }\n\n    const value = token[key];\n    if (typeof value === 'string') {\n      raw[key] = value;\n    }\n  });\n\n  // Convert to string\n  const returnData: Record<keyof typeof raw, string> = {} as any;\n\n  Object.keys(raw).forEach(key => {\n    const value = raw[key];\n\n    if (typeof value === 'function') {\n      returnData[key] = value(raw);\n    } else if (typeof value === 'number' && !key.includes('line-height')) {\n      returnData[key] = `${value}px`;\n    } else {\n      returnData[key] = `${value}`;\n    }\n  });\n\n  return returnData;\n}\n"
  },
  {
    "path": "components/theme/index.ts",
    "content": "/* eslint-disable import/prefer-default-export */\nimport { defaultConfig, useToken as useInternalToken } from './internal';\nimport type { GlobalToken } from './interface';\nimport defaultAlgorithm from './themes/default';\nimport darkAlgorithm from './themes/dark';\nimport compactAlgorithm from './themes/compact';\n\n// ZombieJ: We export as object to user but array in internal.\n// This is used to minimize the bundle size for antd package but safe to refactor as object also.\n// Please do not export internal `useToken` directly to avoid something export unexpected.\n/** Get current context Design Token. Will be different if you are using nest theme config. */\nfunction useToken() {\n  const [theme, token, hashId] = useInternalToken();\n\n  return { theme, token, hashId };\n}\n\nexport { type GlobalToken };\n\nexport default {\n  /** @private Test Usage. Do not use in production. */\n  defaultConfig,\n\n  /** Default seedToken */\n  defaultSeed: defaultConfig.token,\n\n  useToken,\n  defaultAlgorithm,\n  darkAlgorithm,\n  compactAlgorithm,\n};\n"
  },
  {
    "path": "components/theme/interface/alias.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport type { MapToken } from './maps';\n\n// ======================================================================\n// ==                           Alias Token                            ==\n// ======================================================================\n// 🔥🔥🔥🔥🔥🔥🔥 DO NOT MODIFY THIS. PLEASE CONTACT DESIGNER. 🔥🔥🔥🔥🔥🔥🔥\n\nexport interface AliasToken extends MapToken {\n  // Background\n  colorFillContentHover: string;\n  colorFillAlter: string;\n  colorFillContent: string;\n\n  colorBgContainerDisabled: string;\n  colorBgTextHover: string;\n  colorBgTextActive: string;\n\n  // Border\n  colorBorderBg: string;\n  /**\n   * @nameZH 分割线颜色\n   * @desc 用于作为分割线的颜色，此颜色和 colorBorderSecondary 的颜色一致，但是用的是透明色。\n   */\n  colorSplit: string;\n\n  // Text\n  colorTextPlaceholder: string;\n  colorTextDisabled: string;\n  colorTextHeading: string;\n  colorTextLabel: string;\n  colorTextDescription: string;\n  colorTextLightSolid: string;\n\n  /** Weak action. Such as `allowClear` or Alert close button */\n  colorIcon: string;\n  /** Weak action hover color. Such as `allowClear` or Alert close button */\n  colorIconHover: string;\n\n  colorLink: string;\n  colorLinkHover: string;\n  colorLinkActive: string;\n\n  colorHighlight: string;\n\n  controlOutline: string;\n  colorWarningOutline: string;\n  colorErrorOutline: string;\n\n  // Font\n  /** Operation icon in Select, Cascader, etc. icon fontSize. Normal is same as fontSizeSM */\n  fontSizeIcon: number;\n\n  /** For heading like h1, h2, h3 or option selected item */\n  fontWeightStrong: number;\n\n  // Control\n  controlOutlineWidth: number;\n  controlItemBgHover: string; // Note. It also is a color\n  controlItemBgActive: string; // Note. It also is a color\n  controlItemBgActiveHover: string; // Note. It also is a color\n  controlInteractiveSize: number;\n  controlItemBgActiveDisabled: string; // Note. It also is a color\n\n  // Padding\n  paddingXXS: number;\n  paddingXS: number;\n  paddingSM: number;\n  padding: number;\n  paddingMD: number;\n  paddingLG: number;\n  paddingXL: number;\n\n  // Padding Content\n  paddingContentHorizontalLG: number;\n  paddingContentHorizontal: number;\n  paddingContentHorizontalSM: number;\n  paddingContentVerticalLG: number;\n  paddingContentVertical: number;\n  paddingContentVerticalSM: number;\n\n  // Margin\n  marginXXS: number;\n  marginXS: number;\n  marginSM: number;\n  margin: number;\n  marginMD: number;\n  marginLG: number;\n  marginXL: number;\n  marginXXL: number;\n\n  // =============== Legacy: should be remove ===============\n  opacityLoading: number;\n\n  boxShadow: string;\n  boxShadowSecondary: string;\n  boxShadowTertiary: string;\n\n  linkDecoration: CSSProperties['textDecoration'];\n  linkHoverDecoration: CSSProperties['textDecoration'];\n  linkFocusDecoration: CSSProperties['textDecoration'];\n\n  controlPaddingHorizontal: number;\n  controlPaddingHorizontalSM: number;\n\n  // Media queries breakpoints\n  screenXS: number;\n  screenXSMin: number;\n  screenXSMax: number;\n  screenSM: number;\n  screenSMMin: number;\n  screenSMMax: number;\n  screenMD: number;\n  screenMDMin: number;\n  screenMDMax: number;\n  screenLG: number;\n  screenLGMin: number;\n  screenLGMax: number;\n  screenXL: number;\n  screenXLMin: number;\n  screenXLMax: number;\n  screenXXL: number;\n  screenXXLMin: number;\n  screenXXLMax: number;\n  screenXXXL: number;\n  screenXXXLMin: number;\n\n  /** Used for DefaultButton, Switch which has default outline */\n  controlTmpOutline: string;\n\n  // FIXME: component box-shadow, should be removed\n  /** @internal */\n  boxShadowPopoverArrow: string;\n  /** @internal */\n  boxShadowCard: string;\n  /** @internal */\n  boxShadowDrawerRight: string;\n  /** @internal */\n  boxShadowDrawerLeft: string;\n  /** @internal */\n  boxShadowDrawerUp: string;\n  /** @internal */\n  boxShadowDrawerDown: string;\n  /** @internal */\n  boxShadowTabsOverflowLeft: string;\n  /** @internal */\n  boxShadowTabsOverflowRight: string;\n  /** @internal */\n  boxShadowTabsOverflowTop: string;\n  /** @internal */\n  boxShadowTabsOverflowBottom: string;\n}\n"
  },
  {
    "path": "components/theme/interface/components.ts",
    "content": "import type { ComponentToken as AlertComponentToken } from '../../alert/style';\nimport type { ComponentToken as AnchorComponentToken } from '../../anchor/style';\nimport type { ComponentToken as AvatarComponentToken } from '../../avatar/style';\nimport type { ComponentToken as ButtonComponentToken } from '../../button/style';\nimport type { ComponentToken as FloatButtonComponentToken } from '../../float-button/style';\nimport type { ComponentToken as CalendarComponentToken } from '../../calendar/style';\nimport type { ComponentToken as CardComponentToken } from '../../card/style';\nimport type { ComponentToken as CarouselComponentToken } from '../../carousel/style';\nimport type { ComponentToken as CascaderComponentToken } from '../../cascader/style';\nimport type { ComponentToken as CheckboxComponentToken } from '../../checkbox/style';\nimport type { ComponentToken as CollapseComponentToken } from '../../collapse/style';\nimport type { ComponentToken as DatePickerComponentToken } from '../../date-picker/style';\nimport type { ComponentToken as DividerComponentToken } from '../../divider/style';\nimport type { ComponentToken as DropdownComponentToken } from '../../dropdown/style';\nimport type { ComponentToken as DrawerComponentToken } from '../../drawer/style';\nimport type { ComponentToken as EmptyComponentToken } from '../../empty/style';\nimport type { ComponentToken as ImageComponentToken } from '../../image/style';\nimport type { ComponentToken as InputNumberComponentToken } from '../../input-number/style';\nimport type { ComponentToken as LayoutComponentToken } from '../../layout/style';\nimport type { ComponentToken as ListComponentToken } from '../../list/style';\nimport type { ComponentToken as MentionsComponentToken } from '../../mentions/style';\nimport type { ComponentToken as MenuComponentToken } from '../../menu/style';\nimport type { ComponentToken as MessageComponentToken } from '../../message/style';\nimport type { ComponentToken as ModalComponentToken } from '../../modal/style';\nimport type { ComponentToken as NotificationComponentToken } from '../../notification/style';\nimport type { ComponentToken as PopconfirmComponentToken } from '../../popconfirm/style';\nimport type { ComponentToken as PopoverComponentToken } from '../../popover/style';\nimport type { ComponentToken as ProgressComponentToken } from '../../progress/style';\nimport type { ComponentToken as RadioComponentToken } from '../../radio/style';\nimport type { ComponentToken as RateComponentToken } from '../../rate/style';\nimport type { ComponentToken as ResultComponentToken } from '../../result/style';\nimport type { ComponentToken as SegmentedComponentToken } from '../../segmented/style';\nimport type { ComponentToken as SelectComponentToken } from '../../select/style';\nimport type { ComponentToken as SkeletonComponentToken } from '../../skeleton/style';\nimport type { ComponentToken as SliderComponentToken } from '../../slider/style';\nimport type { ComponentToken as SpaceComponentToken } from '../../space/style';\nimport type { ComponentToken as SpinComponentToken } from '../../spin/style';\nimport type { ComponentToken as StepsComponentToken } from '../../steps/style';\nimport type { ComponentToken as TableComponentToken } from '../../table/style';\nimport type { ComponentToken as TabsComponentToken } from '../../tabs/style';\nimport type { ComponentToken as TagComponentToken } from '../../tag/style';\nimport type { ComponentToken as TimelineComponentToken } from '../../timeline/style';\nimport type { ComponentToken as TooltipComponentToken } from '../../tooltip/style';\nimport type { ComponentToken as TransferComponentToken } from '../../transfer/style';\nimport type { ComponentToken as TypographyComponentToken } from '../../typography/style';\nimport type { ComponentToken as UploadComponentToken } from '../../upload/style';\nimport type { ComponentToken as TourComponentToken } from '../../tour/style';\nimport type { ComponentToken as QRCodeComponentToken } from '../../qrcode/style';\nimport type { ComponentToken as AppComponentToken } from '../../app/style';\nimport type { ComponentToken as WaveToken } from '../../_util/wave/style';\nimport type { ComponentToken as FlexToken } from '../../flex/style';\n\nexport interface ComponentTokenMap {\n  Affix?: {};\n  Alert?: AlertComponentToken;\n  Anchor?: AnchorComponentToken;\n  Avatar?: AvatarComponentToken;\n  Badge?: {};\n  Button?: ButtonComponentToken;\n  Breadcrumb?: {};\n  Card?: CardComponentToken;\n  Carousel?: CarouselComponentToken;\n  Cascader?: CascaderComponentToken;\n  Checkbox?: CheckboxComponentToken;\n  Collapse?: CollapseComponentToken;\n  Comment?: {};\n  DatePicker?: DatePickerComponentToken;\n  Descriptions?: {};\n  Divider?: DividerComponentToken;\n  Drawer?: DrawerComponentToken;\n  Dropdown?: DropdownComponentToken;\n  Empty?: EmptyComponentToken;\n  FloatButton?: FloatButtonComponentToken;\n  Form?: {};\n  Grid?: {};\n  Image?: ImageComponentToken;\n  Input?: {};\n  InputNumber?: InputNumberComponentToken;\n  Layout?: LayoutComponentToken;\n  List?: ListComponentToken;\n  Mentions?: MentionsComponentToken;\n  Notification?: NotificationComponentToken;\n  PageHeader?: {};\n  Pagination?: {};\n  Popover?: PopoverComponentToken;\n  Popconfirm?: PopconfirmComponentToken;\n  Rate?: RateComponentToken;\n  Radio?: RadioComponentToken;\n  Result?: ResultComponentToken;\n  Segmented?: SegmentedComponentToken;\n  Select?: SelectComponentToken;\n  Skeleton?: SkeletonComponentToken;\n  Slider?: SliderComponentToken;\n  Spin?: SpinComponentToken;\n  Statistic?: {};\n  Switch?: {};\n  Tag?: TagComponentToken;\n  Tree?: {};\n  TreeSelect?: {};\n  Typography?: TypographyComponentToken;\n  Timeline?: TimelineComponentToken;\n  Transfer?: TransferComponentToken;\n  Tabs?: TabsComponentToken;\n  Calendar?: CalendarComponentToken;\n  Steps?: StepsComponentToken;\n  Menu?: MenuComponentToken;\n  Modal?: ModalComponentToken;\n  Message?: MessageComponentToken;\n  Upload?: UploadComponentToken;\n  Tooltip?: TooltipComponentToken;\n  Table?: TableComponentToken;\n  Space?: SpaceComponentToken;\n  Progress?: ProgressComponentToken;\n  Tour?: TourComponentToken;\n  QRCode?: QRCodeComponentToken;\n  App?: AppComponentToken;\n  Flex?: FlexToken;\n\n  //   /** @private Internal TS definition. Do not use. */\n  Wave?: WaveToken;\n}\n"
  },
  {
    "path": "components/theme/interface/index.ts",
    "content": "import type { ComponentTokenMap } from './components';\nimport type { AliasToken } from './alias';\n\nexport type OverrideToken = {\n  [key in keyof ComponentTokenMap]: Partial<ComponentTokenMap[key]> & Partial<AliasToken>;\n};\n\n/** Final token which contains the components level override */\nexport type GlobalToken = AliasToken & ComponentTokenMap;\n\nexport { PresetColors } from './presetColors';\nexport type { PresetColorType, ColorPalettes, PresetColorKey } from './presetColors';\nexport type { SeedToken } from './seeds';\nexport type {\n  MapToken,\n  ColorMapToken,\n  ColorNeutralMapToken,\n  CommonMapToken,\n  HeightMapToken,\n  SizeMapToken,\n  FontMapToken,\n  StyleMapToken,\n} from './maps';\nexport type { AliasToken } from './alias';\nexport type { ComponentTokenMap } from './components';\n"
  },
  {
    "path": "components/theme/interface/maps/colors.ts",
    "content": "export interface ColorNeutralMapToken {\n  /**\n   * @internal\n   */\n  colorTextBase: string;\n\n  /**\n   * @internal\n   */\n  colorBgBase: string;\n\n  // ----------   Text   ---------- //\n\n  /**\n   * @nameZH 一级文本色\n   * @desc 最深的文本色。为了符合W3C标准，默认的文本颜色使用了该色，同时这个颜色也是最深的中性色。\n   */\n  colorText: string;\n\n  /**\n   * @nameZH 二级文本色\n   * @desc 作为第二梯度的文本色，一般用在不那么需要强化文本颜色的场景，例如 Label 文本、Menu 的文本选中态等场景。\n   */\n  colorTextSecondary: string;\n\n  /**\n   * @nameZH 三级文本色\n   * @desc 第三级文本色一般用于描述性文本，例如表单的中的补充说明文本、列表的描述性文本等场景。\n   */\n  colorTextTertiary: string;\n\n  /**\n   * @nameZH 四级文本色\n   * @desc 第四级文本色是最浅的文本色，例如表单的输入提示文本、禁用色文本等。\n   */\n  colorTextQuaternary: string;\n\n  // ----------   Border   ---------- //\n\n  /**\n   * @nameZH 一级边框色\n   * @nameEN Default Border Color\n   * @desc 默认使用的边框颜色, 用于分割不同的元素，例如：表单的分割线、卡片的分割线等。\n   * @descEN Default border color, used to separate different elements, such as: form separator, card separator, etc.\n   */\n  colorBorder: string;\n\n  /**\n   * @nameZH 二级边框色\n   * @nameEN Secondary Border Color\n   * @desc 比默认使用的边框色要浅一级，此颜色和 colorSplit 的颜色一致。使用的是实色。\n   * @descEN Slightly lighter than the default border color, this color is the same as `colorSplit`. Solid color is used.\n   */\n  colorBorderSecondary: string;\n\n  // ----------   Fill   ---------- //\n\n  /**\n   * @nameZH 一级填充色\n   * @desc 最深的填充色，用于拉开与二、三级填充色的区分度，目前只用在 Slider 的 hover 效果。\n   */\n  colorFill: string;\n\n  /**\n   * @nameZH 二级填充色\n   * @desc 二级填充色可以较为明显地勾勒出元素形体，如 Rate、Skeleton 等。也可以作为三级填充色的 Hover 状态，如 Table 等。\n   */\n  colorFillSecondary: string;\n\n  /**\n   * @nameZH 三级填充色\n   * @desc 三级填充色用于勾勒出元素形体的场景，如 Slider、Segmented 等。如无强调需求的情况下，建议使用三级填色作为默认填色。\n   */\n  colorFillTertiary: string;\n\n  /**\n   * @nameZH 四级填充色\n   * @desc 最弱一级的填充色，适用于不易引起注意的色块，例如斑马纹、区分边界的色块等。\n   */\n  colorFillQuaternary: string;\n\n  // ----------   Surface   ---------- //\n\n  /**\n   * @nameZH 布局背景色\n   * @desc 该色用于页面整体布局的背景色，只有需要在页面中处于 B1 的视觉层级时才会使用该 token，其他用法都是错误的\n   */\n  colorBgLayout: string;\n\n  /**\n   * @nameZH 组件容器背景色\n   * @desc 组件的容器背景色，例如：默认按钮、输入框等。务必不要将其与 `colorBgElevated` 混淆。\n   */\n  colorBgContainer: string;\n\n  /**\n   * @nameZH 浮层容器背景色\n   * @desc 浮层容器背景色，在暗色模式下该 token 的色值会比 `colorBgContainer` 要亮一些。例如：模态框、弹出框、菜单等。\n   */\n  colorBgElevated: string;\n\n  /**\n   * @nameZH 引起注意的背景色\n   * @desc 该色用于引起用户强烈关注注意的背景色，目前只用在 Tooltip 的背景色上。\n   */\n  colorBgSpotlight: string;\n}\n\n/**\n * 品牌色梯度变量\n */\ninterface ColorPrimaryMapToken {\n  /**\n   * @nameZH 品牌主色\n   * @desc 品牌色是体现产品特性和传播理念最直观的视觉元素之一，用于产品的主色调、主按钮、主图标、主文本等   */\n  colorPrimary: string; // 6\n\n  /**\n   * @nameZH 主色浅色背景色\n   * @nameEN Light Background Color of Primary Color\n   * @desc 主色浅色背景颜色，一般用于视觉层级较弱的选中状态。\n   * @descEN Light background color of primary color, usually used for weak visual level selection state.\n   */\n  colorPrimaryBg: string; // 1\n\n  /**\n   * @nameZH 主色浅色背景悬浮态\n   * @desc 与主色浅色背景颜色相对应的悬浮态颜色。\n   */\n  colorPrimaryBgHover: string; // 2\n\n  /**\n   * @nameZH 主色描边色\n   * @desc 主色梯度下的描边用色，用在 Slider 组件的描边上\n   */\n  colorPrimaryBorder: string; // 3\n\n  /**\n   * @nameZH 主色描边色悬浮态\n   * @desc 主色梯度下的描边用色的悬浮态，Slider 、Button 等组件的描边 Hover 时会使用\n   */\n  colorPrimaryBorderHover: string; // 4\n\n  /**\n   * @nameZH 主色悬浮态\n   * @desc 主色梯度下的悬浮态，使用频率很高\n   */\n  colorPrimaryHover: string; // 5\n\n  /**\n   * @nameZH 主色激活态\n   * @desc 主色梯度下的深色激活态\n   */\n  colorPrimaryActive: string; // 7\n\n  /**\n   * @nameZH 主色文本悬浮态\n   * @desc 主色梯度下的文本悬浮态\n   */\n  colorPrimaryTextHover: string; // 8\n\n  /**\n   * @nameZH 主色文本\n   * @desc 主色梯度下的文本颜色\n   */\n  colorPrimaryText: string; // 9\n\n  /**\n   * @nameZH 主色文本\n   * @desc 主色梯度下的文本激活态\n   */\n  colorPrimaryTextActive: string; // 10\n}\n\ninterface ColorSuccessMapToken {\n  /**\n   * @nameZH 成功色的浅色背景颜色\n   * @nameEN Light Background Color of Success Color\n   * @desc 成功色的浅色背景颜色，用于 Tag 和 Alert 的成功态背景色\n   * @descEN Light background color of success color, used for Tag and Alert success state background color\n   */\n  colorSuccessBg: string; // 1\n\n  /**\n   * @nameZH 成功色的浅色背景色悬浮态\n   * @nameEN Hover State Color of Light Success Background\n   * @desc 成功色浅色背景颜色，一般用于视觉层级较弱的选中状态，不过 antd 目前没有使用到该 token\n   * @descEN Light background color of success color, but antd does not use this token currently\n   */\n  colorSuccessBgHover: string; // 2\n\n  /**\n   * @nameZH 成功色的描边色\n   * @desc 成功色的描边色，用于 Tag 和 Alert 的成功态描边色\n   */\n  colorSuccessBorder: string; // 3\n\n  /**\n   * @nameZH 成功色的描边色悬浮态\n   * @desc 成功色的描边色悬浮态\n   */\n  colorSuccessBorderHover: string; // 4\n\n  /**\n   * @nameZH 成功色的深色悬浮态\n   * @desc 成功色的深色悬浮态\n   */\n  colorSuccessHover: string; // 5\n\n  /**\n   * @nameZH 成功色\n   * @desc 默认的成功色，如 Result、Progress 等组件中都有使用该颜色\n   */\n  colorSuccess: string; // 6\n\n  /**\n   * @nameZH 成功色的深色激活态\n   * @desc 成功色的深色激活态\n   */\n  colorSuccessActive: string; // 7\n\n  /**\n   * @nameZH 成功色的文本悬浮态\n   * @desc 成功色的文本悬浮态\n   */\n  colorSuccessTextHover: string; // 8\n\n  /**\n   * @nameZH 成功色的文本默认态\n   * @desc 成功色的文本默认态\n   */\n  colorSuccessText: string; // 9\n\n  /**\n   * @nameZH 成功色的文本激活态\n   * @desc 成功色的文本激活态\n   */\n  colorSuccessTextActive: string; // 10\n}\n\ninterface ColorWarningMapToken {\n  /**\n   * @nameZH 警戒色的浅色背景颜色\n   */\n  colorWarningBg: string; // 1\n\n  /**\n   * @nameZH 警戒色的浅色背景色悬浮态\n   * @desc 警戒色的浅色背景色悬浮态\n   */\n  colorWarningBgHover: string; // 2\n\n  /**\n   * @nameZH 警戒色的描边色\n   * @desc 警戒色的描边色\n   */\n  colorWarningBorder: string; // 3\n\n  /**\n   * @nameZH 警戒色的描边色悬浮态\n   * @desc 警戒色的描边色悬浮态\n   */\n  colorWarningBorderHover: string; // 4\n\n  /**\n   * @nameZH 警戒色的深色悬浮态\n   * @desc 警戒色的深色悬浮态\n   */\n  colorWarningHover: string; // 5\n\n  /**\n   * @nameZH 警戒色\n   * @desc 最常用的警戒色，例如 Notification、 Alert等警告类组件或 Input 输入类等组件会使用该颜色\n   */\n  colorWarning: string; // 6\n\n  /**\n   * @nameZH 警戒色的深色激活态\n   * @desc 警戒色的深色激活态\n   */\n  colorWarningActive: string; // 7\n\n  /**\n   * @nameZH 警戒色的文本悬浮态\n   * @desc 警戒色的文本悬浮态\n   */\n  colorWarningTextHover: string; // 8\n\n  /**\n   * @nameZH 警戒色的文本默认态\n   * @desc 警戒色的文本默认态\n   */\n  colorWarningText: string; // 9\n\n  /**\n   * @nameZH 警戒色的文本激活态\n   * @desc 警戒色的文本激活态\n   */\n  colorWarningTextActive: string; // 10\n}\n\ninterface ColorInfoMapToken {\n  /**\n   * @nameZH 信息色的浅色背景颜色\n   * @desc 信息色的浅色背景颜色\n   */\n  colorInfoBg: string; // 1\n\n  /**\n   * @nameZH 信息色的浅色背景色悬浮态\n   * @desc 信息色的浅色背景色悬浮态\n   */\n  colorInfoBgHover: string; // 2\n\n  /**\n   * @nameZH 信息色的描边色\n   */\n  colorInfoBorder: string; // 3\n\n  /**\n   * @nameZH 信息色的描边色悬浮态\n   */\n  colorInfoBorderHover: string; // 4\n\n  /**\n   * @nameZH 信息色的深色悬浮态\n   */\n  colorInfoHover: string; // 5\n\n  /**\n   * @nameZH 信息色\n   */\n  colorInfo: string; // 6\n\n  /**\n   * @nameZH 信息色的深色激活态\n   */\n  colorInfoActive: string; // 7\n\n  /**\n   * @nameZH 信息色的文本悬浮态\n   */\n  colorInfoTextHover: string; // 8\n\n  /**\n   * @nameZH 信息色的文本默认态\n   */\n  colorInfoText: string; // 9\n\n  /**\n   * @nameZH 信息色的文本激活态\n   */\n  colorInfoTextActive: string; // 10\n}\n\ninterface ColorErrorMapToken {\n  /**\n   * @nameZH 错误色的浅色背景颜色\n   */\n  colorErrorBg: string; // 1\n\n  /**\n   * @nameZH 错误色的浅色背景色悬浮态\n   */\n  colorErrorBgHover: string; // 2\n\n  /**\n   * @nameZH 错误色的描边色\n   */\n  colorErrorBorder: string; // 3\n\n  /**\n   * @nameZH 错误色的描边色悬浮态\n   */\n  colorErrorBorderHover: string; // 4\n\n  /**\n   * @nameZH 错误色的深色悬浮态\n   */\n  colorErrorHover: string; // 5\n\n  /**\n   * @nameZH 错误色\n   */\n  colorError: string; // 6\n\n  /**\n   * @nameZH 错误色的深色激活态\n   */\n  colorErrorActive: string; // 7\n\n  /**\n   * @nameZH 错误色的文本悬浮态\n   */\n  colorErrorTextHover: string; // 8\n\n  /**\n   * @nameZH 错误色的文本默认态\n   */\n  colorErrorText: string; // 9\n\n  /**\n   * @nameZH 错误色的文本激活态\n   */\n  colorErrorTextActive: string; // 10\n}\n\nexport interface ColorMapToken\n  extends ColorNeutralMapToken,\n    ColorPrimaryMapToken,\n    ColorSuccessMapToken,\n    ColorWarningMapToken,\n    ColorErrorMapToken,\n    ColorInfoMapToken {\n  /**\n   * @nameZH 纯白色\n   * @desc 不随主题变化的纯白色\n   * @descEN Pure white color don't changed by theme\n   * @default #FFFFFF\n   */\n  colorWhite: string;\n\n  /**\n   * @nameZH 浮层的背景蒙层颜色\n   * @nameEN Background color of the mask\n   * @desc 浮层的背景蒙层颜色，用于遮罩浮层下面的内容，Modal、Drawer 等组件的蒙层使用的是该 token\n   * @descEN The background color of the mask, used to cover the content below the mask, Modal, Drawer and other components use this token\n   */\n  colorBgMask: string;\n\n  /**\n   * @nameZH 纯黑色\n   * @desc 不随主题变化的纯黑色\n   * @default #0000\n   */\n  // colorBlack: string;\n}\n"
  },
  {
    "path": "components/theme/interface/maps/font.ts",
    "content": "export interface FontMapToken {\n  // Font Size\n  fontSizeSM: number;\n  fontSize: number;\n  fontSizeLG: number;\n  fontSizeXL: number;\n\n  /**\n   * @nameZH 一级标题字号\n   * @desc H1 标签所使用的字号\n   * @default 38\n   */\n  fontSizeHeading1: number;\n  /**\n   * @nameZH 二级标题字号\n   * @desc h2 标签所使用的字号\n   * @default 30\n   */\n  fontSizeHeading2: number;\n  /**\n   * @nameZH 三级标题字号\n   * @desc h3 标签使用的字号\n   * @default 24\n   */\n  fontSizeHeading3: number;\n  /**\n   * @nameZH 四级标题字号\n   * @desc h4 标签使用的字号\n   * @default 20\n   */\n  fontSizeHeading4: number;\n  /**\n   * @nameZH 五级标题字号\n   * @desc h5 标签使用的字号\n   * @default 16\n   */\n  fontSizeHeading5: number;\n\n  // LineHeight\n  lineHeight: number;\n  lineHeightLG: number;\n  lineHeightSM: number;\n\n  lineHeightHeading1: number;\n  lineHeightHeading2: number;\n  lineHeightHeading3: number;\n  lineHeightHeading4: number;\n  lineHeightHeading5: number;\n}\n"
  },
  {
    "path": "components/theme/interface/maps/index.ts",
    "content": "import type { ColorPalettes } from '../presetColors';\nimport type { SeedToken } from '../seeds';\nimport type { SizeMapToken, HeightMapToken } from './size';\nimport type { ColorMapToken } from './colors';\nimport type { StyleMapToken } from './style';\nimport type { FontMapToken } from './font';\n\nexport * from './colors';\nexport * from './style';\nexport * from './size';\nexport * from './font';\n\nexport interface CommonMapToken extends StyleMapToken {\n  // Motion\n  motionDurationFast: string;\n  motionDurationMid: string;\n  motionDurationSlow: string;\n}\n\n// ======================================================================\n// ==                         Map Token                         ==\n// ======================================================================\n// 🔥🔥🔥🔥🔥🔥🔥 DO NOT MODIFY THIS. PLEASE CONTACT DESIGNER. 🔥🔥🔥🔥🔥🔥🔥\n\nexport interface MapToken\n  extends SeedToken,\n    ColorPalettes,\n    ColorMapToken,\n    SizeMapToken,\n    HeightMapToken,\n    StyleMapToken,\n    FontMapToken,\n    CommonMapToken {}\n"
  },
  {
    "path": "components/theme/interface/maps/size.ts",
    "content": "export interface SizeMapToken {\n  /**\n   * @nameZH XXL\n   * @default 48\n   */\n  sizeXXL: number;\n  /**\n   * @nameZH XL\n   * @default 32\n   */\n  sizeXL: number;\n  /**\n   * @nameZH LG\n   * @default 24\n   */\n  sizeLG: number;\n  /**\n   * @nameZH MD\n   * @default 20\n   */\n  sizeMD: number;\n  /** Same as size by default, but could be larger in compact mode */\n  sizeMS: number;\n  /**\n   * @nameZH 默认\n   * @desc 默认尺寸\n   * @default 16\n   */\n  size: number;\n  /**\n   * @nameZH SM\n   * @default 12\n   */\n  sizeSM: number;\n  /**\n   * @nameZH XS\n   * @default 8\n   */\n  sizeXS: number;\n  /**\n   * @nameZH XXS\n   * @default 4\n   */\n  sizeXXS: number;\n}\n\nexport interface HeightMapToken {\n  // Control\n  /** Only Used for control inside component like Multiple Select inner selection item */\n\n  /**\n   * @nameZH 更小的组件高度\n   * @nameEN XS component height\n   */\n  controlHeightXS: number;\n\n  /**\n   * @nameZH 较小的组件高度\n   * @nameEN SM component height\n   */\n  controlHeightSM: number;\n\n  /**\n   * @nameZH 较高的组件高度\n   * @nameEN LG component height\n   */\n  controlHeightLG: number;\n}\n"
  },
  {
    "path": "components/theme/interface/maps/style.ts",
    "content": "export interface StyleMapToken {\n  /**\n   * @nameZH 线宽\n   * @nameEN Line Width\n   * @desc 描边类组件的默认线宽，如 Button、Input、Select 等输入类控件。\n   * @descEN The default line width of the outline class components, such as Button, Input, Select, etc.\n   * @default 1\n   */\n  lineWidthBold: number;\n\n  /**\n   * @nameZH XS号圆角\n   * @desc XS号圆角，用于组件中的一些小圆角，如 Segmented 、Arrow 等一些内部圆角的组件样式中。\n   * @descEN XS size border radius, used in some small border radius components, such as Segmented, Arrow and other components.\n   * @default 2\n   */\n  borderRadiusXS: number;\n  /**\n   * @nameZH SM号圆角\n   * @nameEN SM Border Radius\n   * @desc SM号圆角，用于组件小尺寸下的圆角，如 Button、Input、Select 等输入类控件在 small size 下的圆角\n   * @descEN SM size border radius, used in small size components, such as Button, Input, Select and other input components in small size\n   * @default 4\n   */\n  borderRadiusSM: number;\n  /**\n   * @nameZH LG号圆角\n   * @nameEN LG Border Radius\n   * @desc LG号圆角，用于组件中的一些大圆角，如 Card、Modal 等一些组件样式。\n   * @descEN LG size border radius, used in some large border radius components, such as Card, Modal and other components.\n   * @default 8\n   */\n  borderRadiusLG: number;\n  /**\n   * @default 4\n   */\n  borderRadiusOuter: number;\n}\n"
  },
  {
    "path": "components/theme/interface/presetColors.ts",
    "content": "export const PresetColors = [\n  'blue',\n  'purple',\n  'cyan',\n  'green',\n  'magenta',\n  'pink',\n  'red',\n  'orange',\n  'yellow',\n  'volcano',\n  'geekblue',\n  'lime',\n  'gold',\n] as const;\n\nexport type PresetColorKey = (typeof PresetColors)[number];\n\nexport type PresetColorType = Record<PresetColorKey, string>;\n\ntype ColorPaletteKeyIndex = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n\nexport type ColorPalettes = {\n  [key in `${keyof PresetColorType}-${ColorPaletteKeyIndex}`]: string;\n};\n"
  },
  {
    "path": "components/theme/interface/seeds.ts",
    "content": "import type { PresetColorType } from './presetColors';\n// ======================================================================\n// ==                            Seed Token                            ==\n// ======================================================================\n// 🔥🔥🔥🔥🔥🔥🔥 DO NOT MODIFY THIS. PLEASE CONTACT DESIGNER. 🔥🔥🔥🔥🔥🔥🔥\n\nexport interface SeedToken extends PresetColorType {\n  //  ----------   Color   ---------- //\n\n  /**\n   * @nameZH 品牌主色\n   * @nameEN Brand Color\n   * @desc 品牌色是体现产品特性和传播理念最直观的视觉元素之一。在你完成品牌主色的选取之后，我们会自动帮你生成一套完整的色板，并赋予它们有效的设计语义\n   * @descEN Brand color is one of the most direct visual elements to reflect the characteristics and communication of the product. After you have selected the brand color, we will automatically generate a complete color palette and assign it effective design semantics.\n   */\n  colorPrimary: string;\n\n  /**\n   * @nameZH 成功色\n   * @nameEN Success Color\n   * @desc 用于表示操作成功的 Token 序列，如 Result、Progress 等组件会使用该组梯度变量。\n   * @descEN Used to represent the token sequence of operation success, such as Result, Progress and other components will use these map tokens.\n   */\n  colorSuccess: string;\n\n  /**\n   * @nameZH 警戒色\n   * @nameEN Warning Color\n   * @desc 用于表示操作警告的 Token 序列，如 Notification、 Alert等警告类组件或 Input 输入类等组件会使用该组梯度变量。\n   * @descEN Used to represent the warning map token, such as Notification, Alert, etc. Alert or Control component(like Input) will use these map tokens.\n   */\n  colorWarning: string;\n\n  /**\n   * @nameZH 错误色\n   * @nameEN Error Color\n   * @desc 用于表示操作失败的 Token 序列，如失败按钮、错误状态提示（Result）组件等。\n   * @descEN Used to represent the visual elements of the operation failure, such as the error Button, error Result component, etc.\n   */\n  colorError: string;\n\n  /**\n   * @nameZH 信息色\n   * @nameEN Info Color\n   * @desc 用于表示操作信息的 Token 序列，如 Alert 、Tag、 Progress 等组件都有用到该组梯度变量。\n   * @descEN Used to represent the operation information of the Token sequence, such as Alert, Tag, Progress, and other components use these map tokens.\n   */\n  colorInfo: string;\n\n  /**\n   * @nameZH 基础文本色\n   * @nameEN Seed Text Color\n   * @desc 用于派生文本色梯度的基础变量，v5 中我们添加了一层文本色的派生算法可以产出梯度明确的文本色的梯度变量。但**请不要在代码中直接使用该 Seed Token**！\n   * @descEN Used to derive the base variable of the text color gradient. In v5, we added a layer of text color derivation algorithm to produce gradient variables of text color gradient. But please do not use this Seed Token directly in the code!\n   */\n  colorTextBase: string;\n\n  /**\n   * @nameZH 基础背景色\n   * @nameEN Seed Background Color\n   * @desc 用于派生背景色梯度的基础变量，v5 中我们添加了一层背景色的派生算法可以产出梯度明确的背景色的梯度变量。但 **请不要在代码中直接使用该 Seed Token** ！\n   * @descEN Used to derive the base variable of the background color gradient. In v5, we added a layer of background color derivation algorithm to produce map token of background color. But PLEASE DO NOT USE this Seed Token directly in the code!\n   */\n  colorBgBase: string;\n\n  //  ----------   Font   ---------- //\n\n  /**\n   * @nameZH 字体\n   * @nameEN FontFamily\n   * @desc Ant Design 的字体家族中优先使用系统默认的界面字体，同时提供了一套利于屏显的备用字体库，来维护在不同平台以及浏览器的显示下，字体始终保持良好的易读性和可读性，体现了友好、稳定和专业的特性。\n   */\n  fontFamily: string;\n\n  /**\n   * @nameZH 默认字号\n   * @nameEN Default Font Size\n   * @desc 设计系统中使用最广泛的字体大小，文本梯度也将基于该字号进行派生。\n   * @default 14\n   */\n  fontSize: number;\n\n  //  ----------   Line   ---------- //\n\n  /**\n   * @nameZH 基础线宽\n   * @nameEN Base Line Width\n   * @desc 用于控制组件边框、分割线等的宽度\n   * @descEN Border width of base components\n   */\n  lineWidth: number;\n\n  /**\n   * @nameZH 线条样式\n   * @nameEN Line Style\n   * @desc 用于控制组件边框、分割线等的样式，默认是实线\n   * @descEN Border style of base components\n   */\n  lineType: string;\n\n  //  ----------   BorderRadius   ---------- //\n\n  /**\n   * @nameZH 基础圆角\n   * @nameEN Base Border Radius\n   * @descEN Border radius of base components\n   * @desc 基础组件的圆角大小，例如按钮、输入框、卡片等\n   */\n  borderRadius: number;\n\n  //  ----------   Size   ---------- //\n\n  /**\n   * @nameZH 尺寸变化单位\n   * @nameEN Size Change Unit\n   * @desc 用于控制组件尺寸的变化单位，在 Ant Design 中我们的基础单位为 4 ，便于更加细致地控制尺寸梯度\n   * @descEN The unit of size change, in Ant Design, our base unit is 4, which is more fine-grained control of the size step\n   * @default 4\n   */\n  sizeUnit: number;\n\n  /**\n   * @nameZH 尺寸步长\n   * @nameEN Size Base Step\n   * @desc 用于控制组件尺寸的基础步长，尺寸步长结合尺寸变化单位，就可以派生各种尺寸梯度。通过调整步长即可得到不同的布局模式，例如 V5 紧凑模式下的尺寸步长为 2\n   * @descEN The base step of size change, the size step combined with the size change unit, can derive various size steps. By adjusting the step, you can get different layout modes, such as the size step of the compact mode of V5 is 2\n   * @default 4\n   */\n  sizeStep: number;\n\n  /**\n   * @nameZH 组件箭头尺寸\n   */\n  sizePopupArrow: number;\n\n  /**\n   * @nameZH 基础高度\n   * @nameEN Base Control Height\n   * @desc Ant Design 中按钮和输入框等基础控件的高度\n   * @descEN The height of the basic controls such as buttons and input boxes in Ant Design\n   * @default 32\n   */\n  controlHeight: number;\n\n  //  ----------   zIndex   ---------- //\n\n  /**\n   * @nameZH 基础 zIndex\n   * @nameEN Base zIndex\n   * @desc 所有组件的基础 Z 轴值，用于一些悬浮类的组件的可以基于该值 Z 轴控制层级，例如 BackTop、 Affix 等\n   * @descEN The base Z axis value of all components, which can be used to control the level of some floating components based on the Z axis value, such as BackTop, Affix, etc.\n   *\n   * @default 0\n   */\n  zIndexBase: number;\n\n  /**\n   * @nameZH 浮层基础 zIndex\n   * @nameEN popup base zIndex\n   * @desc 浮层类组件的基础 Z 轴值，用于一些悬浮类的组件的可以基于该值 Z 轴控制层级，例如 FloatButton、 Affix、Modal 等\n   * @descEN Base zIndex of component like FloatButton, Affix which can be cover by large popup\n   * @default 1000\n   */\n  zIndexPopupBase: number;\n\n  //  ----------   Opacity   ---------- //\n\n  /**\n   * @nameZH 图片不透明度\n   * @nameEN Define default Image opacity. Useful when in dark-like theme\n   */\n  opacityImage: number;\n\n  //  ----------   motion   ---------- //\n  // TODO: 缺一个懂 motion 的人来收敛 Motion 相关的 Token\n\n  /**\n   * @nameZH 动画时长变化单位\n   * @nameEN Animation Duration Unit\n   * @desc 用于控制动画时长的变化单位\n   * @descEN The unit of animation duration change\n   * @default 100ms\n   */\n  motionUnit: number;\n\n  /**\n   * @nameZH 动画基础时长\n   */\n  motionBase: number;\n\n  motionEaseOutCirc: string;\n\n  motionEaseInOutCirc: string;\n\n  motionEaseInOut: string;\n\n  motionEaseOutBack: string;\n\n  motionEaseInBack: string;\n\n  motionEaseInQuint: string;\n\n  motionEaseOutQuint: string;\n\n  motionEaseOut: string;\n\n  //  ----------   Style   ---------- //\n\n  /**\n   * @nameZH 线框风格\n   * @nameEN Wireframe Style\n   * @desc 用于将组件的视觉效果变为线框化，如果需要使用 V4 的效果，需要开启配置项\n   * @default false\n   */\n  wireframe: boolean;\n}\n"
  },
  {
    "path": "components/theme/internal.ts",
    "content": "import type { CSSInterpolation, Theme } from '../_util/cssinjs';\nimport { createTheme, useCacheToken, useStyleRegister } from '../_util/cssinjs';\n\nimport version from '../version';\nimport type {\n  AliasToken,\n  GlobalToken,\n  MapToken,\n  OverrideToken,\n  PresetColorType,\n  PresetColorKey,\n  SeedToken,\n} from './interface';\nimport { PresetColors } from './interface';\nimport defaultDerivative from './themes/default';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\nimport type { FullToken } from './util/genComponentStyleHook';\nimport genComponentStyleHook from './util/genComponentStyleHook';\nimport statisticToken, { merge as mergeToken, statistic } from './util/statistic';\nimport type { VueNode } from '../_util/type';\nimport { objectType } from '../_util/type';\nimport type { ComputedRef, InjectionKey, Ref } from 'vue';\nimport {\n  triggerRef,\n  unref,\n  defineComponent,\n  provide,\n  computed,\n  inject,\n  watch,\n  shallowRef,\n} from 'vue';\n\nconst defaultTheme = createTheme(defaultDerivative);\n\nexport {\n  // colors\n  PresetColors,\n  // Statistic\n  statistic,\n  statisticToken,\n  mergeToken,\n  // hooks\n  useStyleRegister,\n  genComponentStyleHook,\n};\nexport type {\n  SeedToken,\n  AliasToken,\n  PresetColorType,\n  PresetColorKey,\n  // FIXME: Remove this type\n  AliasToken as DerivativeToken,\n  FullToken,\n};\n\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n  token: defaultSeedToken,\n  hashed: true,\n};\n\nexport interface DesignTokenContext {\n  token: Partial<AliasToken>;\n  theme?: Theme<SeedToken, MapToken>;\n  components?: OverrideToken;\n  hashed?: string | boolean;\n}\n//defaultConfig\nconst DesignTokenContextKey: InjectionKey<ComputedRef<DesignTokenContext>> =\n  Symbol('DesignTokenContext');\n\nexport const globalDesignTokenApi = shallowRef<DesignTokenContext>();\n\nexport const useDesignTokenProvider = (value: ComputedRef<DesignTokenContext>) => {\n  provide(DesignTokenContextKey, value);\n  watch(\n    value,\n    () => {\n      globalDesignTokenApi.value = unref(value);\n      triggerRef(globalDesignTokenApi);\n    },\n    { immediate: true, deep: true },\n  );\n};\n\nexport const useDesignTokenInject = () => {\n  return inject(\n    DesignTokenContextKey,\n    computed(() => globalDesignTokenApi.value || defaultConfig),\n  );\n};\nexport const DesignTokenProvider = defineComponent({\n  props: {\n    value: objectType<DesignTokenContext>(),\n  },\n  setup(props, { slots }) {\n    useDesignTokenProvider(computed(() => props.value));\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n// ================================== Hook ==================================\nexport function useToken(): [\n  ComputedRef<Theme<SeedToken, MapToken>>,\n  ComputedRef<GlobalToken>,\n  ComputedRef<string>,\n] {\n  const designTokenContext = inject<ComputedRef<DesignTokenContext>>(\n    DesignTokenContextKey,\n    computed(() => globalDesignTokenApi.value || defaultConfig),\n  );\n\n  const salt = computed(() => `${version}-${designTokenContext.value.hashed || ''}`);\n\n  const mergedTheme = computed(() => designTokenContext.value.theme || defaultTheme);\n\n  const cacheToken = useCacheToken<GlobalToken, SeedToken>(\n    mergedTheme,\n    computed(() => [defaultSeedToken, designTokenContext.value.token]),\n    computed(() => ({\n      salt: salt.value,\n      override: {\n        override: designTokenContext.value.token,\n        ...designTokenContext.value.components,\n      },\n      formatToken,\n    })),\n  );\n\n  return [\n    mergedTheme,\n    computed(() => cacheToken.value[0]),\n    computed(() => (designTokenContext.value.hashed ? cacheToken.value[1] : '')),\n  ];\n}\n\nexport type UseComponentStyleResult = [(node: VueNode) => VueNode, Ref<string>];\n\nexport type GenerateStyle<\n  ComponentToken extends object = AliasToken,\n  ReturnType = CSSInterpolation,\n> = (token: ComponentToken) => ReturnType;\n"
  },
  {
    "path": "components/theme/themes/ColorMap.ts",
    "content": "import type { ColorNeutralMapToken } from '../interface';\n\nexport interface ColorMap {\n  1: string;\n  2: string;\n  3: string;\n  4: string;\n  5: string;\n  6: string;\n  7: string;\n  8: string;\n  9: string;\n  10: string;\n}\n\nexport type GenerateColorMap = (baseColor: string) => ColorMap;\nexport type GenerateNeutralColorMap = (\n  bgBaseColor: string,\n  textBaseColor: string,\n) => ColorNeutralMapToken;\n"
  },
  {
    "path": "components/theme/themes/compact/genCompactSizeMapToken.ts",
    "content": "import type { SeedToken, SizeMapToken } from '../../interface';\n\nexport default function genSizeMapToken(token: SeedToken): SizeMapToken {\n  const { sizeUnit, sizeStep } = token;\n\n  const compactSizeStep = sizeStep - 2;\n\n  return {\n    sizeXXL: sizeUnit * (compactSizeStep + 10),\n    sizeXL: sizeUnit * (compactSizeStep + 6),\n    sizeLG: sizeUnit * (compactSizeStep + 2),\n    sizeMD: sizeUnit * (compactSizeStep + 2),\n    sizeMS: sizeUnit * (compactSizeStep + 1),\n    size: sizeUnit * compactSizeStep,\n    sizeSM: sizeUnit * compactSizeStep,\n    sizeXS: sizeUnit * (compactSizeStep - 1),\n    sizeXXS: sizeUnit * (compactSizeStep - 1),\n  };\n}\n"
  },
  {
    "path": "components/theme/themes/compact/index.ts",
    "content": "import genControlHeight from '../shared/genControlHeight';\nimport type { MapToken, SeedToken } from '../../interface';\nimport defaultAlgorithm from '../default';\nimport genCompactSizeMapToken from './genCompactSizeMapToken';\nimport genFontMapToken from '../shared/genFontMapToken';\nimport type { DerivativeFunc } from '../../../_util/cssinjs';\n\nconst derivative: DerivativeFunc<SeedToken, MapToken> = (token, mapToken) => {\n  const mergedMapToken = mapToken ?? defaultAlgorithm(token);\n\n  const fontSize = mergedMapToken.fontSizeSM; // Smaller size font-size as base\n  const controlHeight = mergedMapToken.controlHeight - 4;\n\n  return {\n    ...mergedMapToken,\n    ...genCompactSizeMapToken(mapToken ?? token),\n\n    // font\n    ...genFontMapToken(fontSize),\n\n    // controlHeight\n    controlHeight,\n    ...genControlHeight({ ...mergedMapToken, controlHeight }),\n  };\n};\n\nexport default derivative;\n"
  },
  {
    "path": "components/theme/themes/dark/colorAlgorithm.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\n\nexport const getAlphaColor = (baseColor: string, alpha: number) =>\n  new TinyColor(baseColor).setAlpha(alpha).toRgbString();\n\nexport const getSolidColor = (baseColor: string, brightness: number) => {\n  const instance = new TinyColor(baseColor);\n  return instance.lighten(brightness).toHexString();\n};\n"
  },
  {
    "path": "components/theme/themes/dark/colors.ts",
    "content": "import { generate } from '@ant-design/colors';\nimport type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\n\nexport const generateColorPalettes: GenerateColorMap = (baseColor: string) => {\n  const colors = generate(baseColor, { theme: 'dark' });\n  return {\n    1: colors[0],\n    2: colors[1],\n    3: colors[2],\n    4: colors[3],\n    5: colors[6],\n    6: colors[5],\n    7: colors[4],\n    8: colors[6],\n    9: colors[5],\n    10: colors[4],\n    // 8: colors[9],\n    // 9: colors[8],\n    // 10: colors[7],\n  };\n};\n\nexport const generateNeutralColorPalettes: GenerateNeutralColorMap = (\n  bgBaseColor: string,\n  textBaseColor: string,\n) => {\n  const colorBgBase = bgBaseColor || '#000';\n  const colorTextBase = textBaseColor || '#fff';\n\n  return {\n    colorBgBase,\n    colorTextBase,\n\n    colorText: getAlphaColor(colorTextBase, 0.85),\n    colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n    colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n    colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n\n    colorFill: getAlphaColor(colorTextBase, 0.18),\n    colorFillSecondary: getAlphaColor(colorTextBase, 0.12),\n    colorFillTertiary: getAlphaColor(colorTextBase, 0.08),\n    colorFillQuaternary: getAlphaColor(colorTextBase, 0.04),\n\n    colorBgElevated: getSolidColor(colorBgBase, 12),\n    colorBgContainer: getSolidColor(colorBgBase, 8),\n    colorBgLayout: getSolidColor(colorBgBase, 0),\n    colorBgSpotlight: getSolidColor(colorBgBase, 26),\n\n    colorBorder: getSolidColor(colorBgBase, 26),\n    colorBorderSecondary: getSolidColor(colorBgBase, 19),\n  };\n};\n"
  },
  {
    "path": "components/theme/themes/dark/index.ts",
    "content": "import { generate } from '@ant-design/colors';\nimport type { DerivativeFunc } from '../../../_util/cssinjs';\nimport type { ColorPalettes, MapToken, PresetColorType, SeedToken } from '../../interface';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nimport defaultAlgorithm from '../default';\n\nconst derivative: DerivativeFunc<SeedToken, MapToken> = (token, mapToken) => {\n  const colorPalettes = Object.keys(defaultPresetColors)\n    .map((colorKey: keyof PresetColorType) => {\n      const colors = generate(token[colorKey], { theme: 'dark' });\n\n      return new Array(10).fill(1).reduce((prev, _, i) => {\n        prev[`${colorKey}-${i + 1}`] = colors[i];\n        return prev;\n      }, {}) as ColorPalettes;\n    })\n    .reduce((prev, cur) => {\n      prev = {\n        ...prev,\n        ...cur,\n      };\n      return prev;\n    }, {} as ColorPalettes);\n\n  const mergedMapToken = mapToken ?? defaultAlgorithm(token);\n\n  return {\n    ...mergedMapToken,\n\n    // Dark tokens\n    ...colorPalettes,\n    // Colors\n    ...genColorMapToken(token, {\n      generateColorPalettes,\n      generateNeutralColorPalettes,\n    }),\n  };\n};\n\nexport default derivative;\n"
  },
  {
    "path": "components/theme/themes/default/colorAlgorithm.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\n\nexport const getAlphaColor = (baseColor: string, alpha: number) =>\n  new TinyColor(baseColor).setAlpha(alpha).toRgbString();\n\nexport const getSolidColor = (baseColor: string, brightness: number) => {\n  const instance = new TinyColor(baseColor);\n  return instance.darken(brightness).toHexString();\n};\n"
  },
  {
    "path": "components/theme/themes/default/colors.ts",
    "content": "import { generate } from '@ant-design/colors';\nimport type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\n\nexport const generateColorPalettes: GenerateColorMap = (baseColor: string) => {\n  const colors = generate(baseColor);\n  return {\n    1: colors[0],\n    2: colors[1],\n    3: colors[2],\n    4: colors[3],\n    5: colors[4],\n    6: colors[5],\n    7: colors[6],\n    8: colors[4],\n    9: colors[5],\n    10: colors[6],\n    // 8: colors[7],\n    // 9: colors[8],\n    // 10: colors[9],\n  };\n};\n\nexport const generateNeutralColorPalettes: GenerateNeutralColorMap = (\n  bgBaseColor: string,\n  textBaseColor: string,\n) => {\n  const colorBgBase = bgBaseColor || '#fff';\n  const colorTextBase = textBaseColor || '#000';\n\n  return {\n    colorBgBase,\n    colorTextBase,\n\n    colorText: getAlphaColor(colorTextBase, 0.88),\n    colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n    colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n    colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n\n    colorFill: getAlphaColor(colorTextBase, 0.15),\n    colorFillSecondary: getAlphaColor(colorTextBase, 0.06),\n    colorFillTertiary: getAlphaColor(colorTextBase, 0.04),\n    colorFillQuaternary: getAlphaColor(colorTextBase, 0.02),\n\n    colorBgLayout: getSolidColor(colorBgBase, 4),\n    colorBgContainer: getSolidColor(colorBgBase, 0),\n    colorBgElevated: getSolidColor(colorBgBase, 0),\n    colorBgSpotlight: getAlphaColor(colorTextBase, 0.85),\n\n    colorBorder: getSolidColor(colorBgBase, 15),\n    colorBorderSecondary: getSolidColor(colorBgBase, 6),\n  };\n};\n"
  },
  {
    "path": "components/theme/themes/default/index.ts",
    "content": "import { generate } from '@ant-design/colors';\nimport genControlHeight from '../shared/genControlHeight';\nimport genSizeMapToken from '../shared/genSizeMapToken';\nimport type { ColorPalettes, MapToken, PresetColorType, SeedToken } from '../../interface';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport genCommonMapToken from '../shared/genCommonMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nimport genFontMapToken from '../shared/genFontMapToken';\n\nexport default function derivative(token: SeedToken): MapToken {\n  const colorPalettes = Object.keys(defaultPresetColors)\n    .map((colorKey: keyof PresetColorType) => {\n      const colors = generate(token[colorKey]);\n\n      return new Array(10).fill(1).reduce((prev, _, i) => {\n        prev[`${colorKey}-${i + 1}`] = colors[i];\n        return prev;\n      }, {}) as ColorPalettes;\n    })\n    .reduce((prev, cur) => {\n      prev = {\n        ...prev,\n        ...cur,\n      };\n      return prev;\n    }, {} as ColorPalettes);\n\n  return {\n    ...token,\n    ...colorPalettes,\n    // Colors\n    ...genColorMapToken(token, {\n      generateColorPalettes,\n      generateNeutralColorPalettes,\n    }),\n    // Font\n    ...genFontMapToken(token.fontSize),\n    // Size\n    ...genSizeMapToken(token),\n    // Height\n    ...genControlHeight(token),\n    // Others\n    ...genCommonMapToken(token),\n  };\n}\n"
  },
  {
    "path": "components/theme/themes/seed.ts",
    "content": "import type { PresetColorType, SeedToken } from '../internal';\n\nexport const defaultPresetColors: PresetColorType = {\n  blue: '#1677ff',\n  purple: '#722ED1',\n  cyan: '#13C2C2',\n  green: '#52C41A',\n  magenta: '#EB2F96',\n  pink: '#eb2f96',\n  red: '#F5222D',\n  orange: '#FA8C16',\n  yellow: '#FADB14',\n  volcano: '#FA541C',\n  geekblue: '#2F54EB',\n  gold: '#FAAD14',\n  lime: '#A0D911',\n};\n\nconst seedToken: SeedToken = {\n  // preset color palettes\n  ...defaultPresetColors,\n\n  // Color\n  colorPrimary: '#1677ff',\n  colorSuccess: '#52c41a',\n  colorWarning: '#faad14',\n  colorError: '#ff4d4f',\n  colorInfo: '#1677ff',\n  colorTextBase: '',\n\n  colorBgBase: '',\n\n  // Font\n  fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,\n  fontSize: 14,\n\n  // Line\n  lineWidth: 1,\n  lineType: 'solid',\n\n  // Motion\n  motionUnit: 0.1,\n  motionBase: 0,\n  motionEaseOutCirc: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n  motionEaseInOutCirc: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n  motionEaseOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n  motionEaseInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n  motionEaseOutBack: 'cubic-bezier(0.12, 0.4, 0.29, 1.46)',\n  motionEaseInBack: 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n  motionEaseInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n  motionEaseOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n\n  // Radius\n  borderRadius: 6,\n\n  // Size\n  sizeUnit: 4,\n  sizeStep: 4,\n  sizePopupArrow: 16,\n\n  // Control Base\n  controlHeight: 32,\n\n  // zIndex\n  zIndexBase: 0,\n  zIndexPopupBase: 1000,\n\n  // Image\n  opacityImage: 1,\n\n  // Wireframe\n  wireframe: false,\n};\nexport default seedToken;\n"
  },
  {
    "path": "components/theme/themes/shared/genColorMapToken.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport type { ColorMapToken, SeedToken } from '../../interface';\nimport type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap';\n\ninterface PaletteGenerators {\n  generateColorPalettes: GenerateColorMap;\n  generateNeutralColorPalettes: GenerateNeutralColorMap;\n}\n\nexport default function genColorMapToken(\n  seed: SeedToken,\n  { generateColorPalettes, generateNeutralColorPalettes }: PaletteGenerators,\n): ColorMapToken {\n  const {\n    colorSuccess: colorSuccessBase,\n    colorWarning: colorWarningBase,\n    colorError: colorErrorBase,\n    colorInfo: colorInfoBase,\n    colorPrimary: colorPrimaryBase,\n    colorBgBase,\n    colorTextBase,\n  } = seed;\n\n  const primaryColors = generateColorPalettes(colorPrimaryBase);\n  const successColors = generateColorPalettes(colorSuccessBase);\n  const warningColors = generateColorPalettes(colorWarningBase);\n  const errorColors = generateColorPalettes(colorErrorBase);\n  const infoColors = generateColorPalettes(colorInfoBase);\n  const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase);\n\n  return {\n    ...neutralColors,\n\n    colorPrimaryBg: primaryColors[1],\n    colorPrimaryBgHover: primaryColors[2],\n    colorPrimaryBorder: primaryColors[3],\n    colorPrimaryBorderHover: primaryColors[4],\n    colorPrimaryHover: primaryColors[5],\n    colorPrimary: primaryColors[6],\n    colorPrimaryActive: primaryColors[7],\n    colorPrimaryTextHover: primaryColors[8],\n    colorPrimaryText: primaryColors[9],\n    colorPrimaryTextActive: primaryColors[10],\n\n    colorSuccessBg: successColors[1],\n    colorSuccessBgHover: successColors[2],\n    colorSuccessBorder: successColors[3],\n    colorSuccessBorderHover: successColors[4],\n    colorSuccessHover: successColors[4],\n    colorSuccess: successColors[6],\n    colorSuccessActive: successColors[7],\n    colorSuccessTextHover: successColors[8],\n    colorSuccessText: successColors[9],\n    colorSuccessTextActive: successColors[10],\n\n    colorErrorBg: errorColors[1],\n    colorErrorBgHover: errorColors[2],\n    colorErrorBorder: errorColors[3],\n    colorErrorBorderHover: errorColors[4],\n    colorErrorHover: errorColors[5],\n    colorError: errorColors[6],\n    colorErrorActive: errorColors[7],\n    colorErrorTextHover: errorColors[8],\n    colorErrorText: errorColors[9],\n    colorErrorTextActive: errorColors[10],\n\n    colorWarningBg: warningColors[1],\n    colorWarningBgHover: warningColors[2],\n    colorWarningBorder: warningColors[3],\n    colorWarningBorderHover: warningColors[4],\n    colorWarningHover: warningColors[4],\n    colorWarning: warningColors[6],\n    colorWarningActive: warningColors[7],\n    colorWarningTextHover: warningColors[8],\n    colorWarningText: warningColors[9],\n    colorWarningTextActive: warningColors[10],\n\n    colorInfoBg: infoColors[1],\n    colorInfoBgHover: infoColors[2],\n    colorInfoBorder: infoColors[3],\n    colorInfoBorderHover: infoColors[4],\n    colorInfoHover: infoColors[4],\n    colorInfo: infoColors[6],\n    colorInfoActive: infoColors[7],\n    colorInfoTextHover: infoColors[8],\n    colorInfoText: infoColors[9],\n    colorInfoTextActive: infoColors[10],\n\n    colorBgMask: new TinyColor('#000').setAlpha(0.45).toRgbString(),\n    colorWhite: '#fff',\n  };\n}\n"
  },
  {
    "path": "components/theme/themes/shared/genCommonMapToken.ts",
    "content": "import type { CommonMapToken, SeedToken } from '../../interface';\nimport genRadius from './genRadius';\n\nexport default function genCommonMapToken(token: SeedToken): CommonMapToken {\n  const { motionUnit, motionBase, borderRadius, lineWidth } = token;\n\n  return {\n    // motion\n    motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,\n    motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,\n    motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,\n\n    // line\n    lineWidthBold: lineWidth + 1,\n\n    // radius\n    ...genRadius(borderRadius),\n  };\n}\n"
  },
  {
    "path": "components/theme/themes/shared/genControlHeight.ts",
    "content": "import type { HeightMapToken, SeedToken } from '../../interface';\n\nconst genControlHeight = (token: SeedToken): HeightMapToken => {\n  const { controlHeight } = token;\n\n  return {\n    controlHeightSM: controlHeight * 0.75,\n    controlHeightXS: controlHeight * 0.5,\n    controlHeightLG: controlHeight * 1.25,\n  };\n};\n\nexport default genControlHeight;\n"
  },
  {
    "path": "components/theme/themes/shared/genFontMapToken.ts",
    "content": "import type { FontMapToken } from '../../interface';\nimport genFontSizes from './genFontSizes';\n\nconst genFontMapToken = (fontSize: number): FontMapToken => {\n  const fontSizePairs = genFontSizes(fontSize);\n  const fontSizes = fontSizePairs.map(pair => pair.size);\n  const lineHeights = fontSizePairs.map(pair => pair.lineHeight);\n\n  return {\n    fontSizeSM: fontSizes[0],\n    fontSize: fontSizes[1],\n    fontSizeLG: fontSizes[2],\n    fontSizeXL: fontSizes[3],\n\n    fontSizeHeading1: fontSizes[6],\n    fontSizeHeading2: fontSizes[5],\n    fontSizeHeading3: fontSizes[4],\n    fontSizeHeading4: fontSizes[3],\n    fontSizeHeading5: fontSizes[2],\n\n    lineHeight: lineHeights[1],\n    lineHeightLG: lineHeights[2],\n    lineHeightSM: lineHeights[0],\n\n    lineHeightHeading1: lineHeights[6],\n    lineHeightHeading2: lineHeights[5],\n    lineHeightHeading3: lineHeights[4],\n    lineHeightHeading4: lineHeights[3],\n    lineHeightHeading5: lineHeights[2],\n  };\n};\n\nexport default genFontMapToken;\n"
  },
  {
    "path": "components/theme/themes/shared/genFontSizes.ts",
    "content": "// https://zhuanlan.zhihu.com/p/32746810\nexport default function getFontSizes(base: number) {\n  const fontSizes = new Array(10).fill(null).map((_, index) => {\n    const i = index - 1;\n    const baseSize = base * 2.71828 ** (i / 5);\n    const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);\n\n    // Convert to even\n    return Math.floor(intSize / 2) * 2;\n  });\n\n  fontSizes[1] = base;\n\n  return fontSizes.map(size => {\n    const height = size + 8;\n\n    return {\n      size,\n      lineHeight: height / size,\n    };\n  });\n}\n"
  },
  {
    "path": "components/theme/themes/shared/genRadius.ts",
    "content": "import type { MapToken } from '../../interface';\n\nconst genRadius = (\n  radiusBase: number,\n): Pick<\n  MapToken,\n  'borderRadiusXS' | 'borderRadiusSM' | 'borderRadiusLG' | 'borderRadius' | 'borderRadiusOuter'\n> => {\n  let radiusLG = radiusBase;\n  let radiusSM = radiusBase;\n  let radiusXS = radiusBase;\n  let radiusOuter = radiusBase;\n\n  // radiusLG\n  if (radiusBase < 6 && radiusBase >= 5) {\n    radiusLG = radiusBase + 1;\n  } else if (radiusBase < 16 && radiusBase >= 6) {\n    radiusLG = radiusBase + 2;\n  } else if (radiusBase >= 16) {\n    radiusLG = 16;\n  }\n\n  // radiusSM\n  if (radiusBase < 7 && radiusBase >= 5) {\n    radiusSM = 4;\n  } else if (radiusBase < 8 && radiusBase >= 7) {\n    radiusSM = 5;\n  } else if (radiusBase < 14 && radiusBase >= 8) {\n    radiusSM = 6;\n  } else if (radiusBase < 16 && radiusBase >= 14) {\n    radiusSM = 7;\n  } else if (radiusBase >= 16) {\n    radiusSM = 8;\n  }\n\n  // radiusXS\n  if (radiusBase < 6 && radiusBase >= 2) {\n    radiusXS = 1;\n  } else if (radiusBase >= 6) {\n    radiusXS = 2;\n  }\n\n  // radiusOuter\n  if (radiusBase > 4 && radiusBase < 8) {\n    radiusOuter = 4;\n  } else if (radiusBase >= 8) {\n    radiusOuter = 6;\n  }\n\n  return {\n    borderRadius: radiusBase > 16 ? 16 : radiusBase,\n    borderRadiusXS: radiusXS,\n    borderRadiusSM: radiusSM,\n    borderRadiusLG: radiusLG,\n    borderRadiusOuter: radiusOuter,\n  };\n};\n\nexport default genRadius;\n"
  },
  {
    "path": "components/theme/themes/shared/genSizeMapToken.ts",
    "content": "import type { SeedToken, SizeMapToken } from '../../interface';\n\nexport default function genSizeMapToken(token: SeedToken): SizeMapToken {\n  const { sizeUnit, sizeStep } = token;\n\n  return {\n    sizeXXL: sizeUnit * (sizeStep + 8), // 48\n    sizeXL: sizeUnit * (sizeStep + 4), // 32\n    sizeLG: sizeUnit * (sizeStep + 2), // 24\n    sizeMD: sizeUnit * (sizeStep + 1), // 20\n    sizeMS: sizeUnit * sizeStep, // 16\n    size: sizeUnit * sizeStep, // 16\n    sizeSM: sizeUnit * (sizeStep - 1), // 12\n    sizeXS: sizeUnit * (sizeStep - 2), // 8\n    sizeXXS: sizeUnit * (sizeStep - 3), // 4\n  };\n}\n"
  },
  {
    "path": "components/theme/util/alias.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport type { AliasToken, MapToken, OverrideToken, SeedToken } from '../interface';\nimport getAlphaColor from './getAlphaColor';\nimport seedToken from '../themes/seed';\n\n/** Raw merge of `@ant-design/cssinjs` token. Which need additional process */\ntype RawMergedToken = MapToken & OverrideToken & { override: Partial<AliasToken> };\n\n/**\n * Seed (designer) > Derivative (designer) > Alias (developer).\n *\n * Merge seed & derivative & override token and generate alias token for developer.\n */\nexport default function formatToken(derivativeToken: RawMergedToken): AliasToken {\n  const { override, ...restToken } = derivativeToken;\n  const overrideTokens = { ...override };\n\n  Object.keys(seedToken).forEach(token => {\n    delete overrideTokens[token as keyof SeedToken];\n  });\n\n  const mergedToken = {\n    ...restToken,\n    ...overrideTokens,\n  };\n\n  const screenXS = 480;\n  const screenSM = 576;\n  const screenMD = 768;\n  const screenLG = 992;\n  const screenXL = 1200;\n  const screenXXL = 1600;\n  const screenXXXL = 2000;\n\n  // Generate alias token\n  const aliasToken: AliasToken = {\n    ...mergedToken,\n\n    colorLink: mergedToken.colorInfoText,\n    colorLinkHover: mergedToken.colorInfoHover,\n    colorLinkActive: mergedToken.colorInfoActive,\n\n    // ============== Background ============== //\n    colorFillContent: mergedToken.colorFillSecondary,\n    colorFillContentHover: mergedToken.colorFill,\n    colorFillAlter: mergedToken.colorFillQuaternary,\n    colorBgContainerDisabled: mergedToken.colorFillTertiary,\n\n    // ============== Split ============== //\n    colorBorderBg: mergedToken.colorBgContainer,\n    colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),\n\n    // ============== Text ============== //\n    colorTextPlaceholder: mergedToken.colorTextQuaternary,\n    colorTextDisabled: mergedToken.colorTextQuaternary,\n    colorTextHeading: mergedToken.colorText,\n    colorTextLabel: mergedToken.colorTextSecondary,\n    colorTextDescription: mergedToken.colorTextTertiary,\n    colorTextLightSolid: mergedToken.colorWhite,\n    colorHighlight: mergedToken.colorError,\n    colorBgTextHover: mergedToken.colorFillSecondary,\n    colorBgTextActive: mergedToken.colorFill,\n\n    colorIcon: mergedToken.colorTextTertiary,\n    colorIconHover: mergedToken.colorText,\n\n    colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),\n    colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),\n\n    // Font\n    fontSizeIcon: mergedToken.fontSizeSM,\n\n    // Control\n    lineWidth: mergedToken.lineWidth,\n    controlOutlineWidth: mergedToken.lineWidth * 2,\n    // Checkbox size and expand icon size\n    controlInteractiveSize: mergedToken.controlHeight / 2,\n\n    controlItemBgHover: mergedToken.colorFillTertiary,\n    controlItemBgActive: mergedToken.colorPrimaryBg,\n    controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,\n    controlItemBgActiveDisabled: mergedToken.colorFill,\n    controlTmpOutline: mergedToken.colorFillQuaternary,\n    controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),\n\n    lineType: mergedToken.lineType,\n    borderRadius: mergedToken.borderRadius,\n    borderRadiusXS: mergedToken.borderRadiusXS,\n    borderRadiusSM: mergedToken.borderRadiusSM,\n    borderRadiusLG: mergedToken.borderRadiusLG,\n\n    fontWeightStrong: 600,\n\n    opacityLoading: 0.65,\n\n    linkDecoration: 'none',\n    linkHoverDecoration: 'none',\n    linkFocusDecoration: 'none',\n\n    controlPaddingHorizontal: 12,\n    controlPaddingHorizontalSM: 8,\n\n    paddingXXS: mergedToken.sizeXXS,\n    paddingXS: mergedToken.sizeXS,\n    paddingSM: mergedToken.sizeSM,\n    padding: mergedToken.size,\n    paddingMD: mergedToken.sizeMD,\n    paddingLG: mergedToken.sizeLG,\n    paddingXL: mergedToken.sizeXL,\n\n    paddingContentHorizontalLG: mergedToken.sizeLG,\n    paddingContentVerticalLG: mergedToken.sizeMS,\n    paddingContentHorizontal: mergedToken.sizeMS,\n    paddingContentVertical: mergedToken.sizeSM,\n    paddingContentHorizontalSM: mergedToken.size,\n    paddingContentVerticalSM: mergedToken.sizeXS,\n\n    marginXXS: mergedToken.sizeXXS,\n    marginXS: mergedToken.sizeXS,\n    marginSM: mergedToken.sizeSM,\n    margin: mergedToken.size,\n    marginMD: mergedToken.sizeMD,\n    marginLG: mergedToken.sizeLG,\n    marginXL: mergedToken.sizeXL,\n    marginXXL: mergedToken.sizeXXL,\n\n    boxShadow: `\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,\n    boxShadowSecondary: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTertiary: `\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,\n\n    screenXS,\n    screenXSMin: screenXS,\n    screenXSMax: screenSM - 1,\n    screenSM,\n    screenSMMin: screenSM,\n    screenSMMax: screenMD - 1,\n    screenMD,\n    screenMDMin: screenMD,\n    screenMDMax: screenLG - 1,\n    screenLG,\n    screenLGMin: screenLG,\n    screenLGMax: screenXL - 1,\n    screenXL,\n    screenXLMin: screenXL,\n    screenXLMax: screenXXL - 1,\n    screenXXL,\n    screenXXLMin: screenXXL,\n    screenXXLMax: screenXXXL - 1,\n    screenXXXL,\n    screenXXXLMin: screenXXXL,\n\n    // FIXME: component box-shadow, should be removed\n    boxShadowPopoverArrow: '3px 3px 7px rgba(0, 0, 0, 0.1)',\n    boxShadowCard: `\n      0 1px 2px -2px ${new TinyColor('rgba(0, 0, 0, 0.16)').toRgbString()},\n      0 3px 6px 0 ${new TinyColor('rgba(0, 0, 0, 0.12)').toRgbString()},\n      0 5px 12px 4px ${new TinyColor('rgba(0, 0, 0, 0.09)').toRgbString()}\n    `,\n    boxShadowDrawerRight: `\n      -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerLeft: `\n      6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerUp: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerDown: `\n      0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)',\n\n    // Override AliasToken\n    ...overrideTokens,\n  };\n\n  return aliasToken;\n}\n"
  },
  {
    "path": "components/theme/util/genComponentStyleHook.ts",
    "content": "/* eslint-disable no-redeclare */\n\nimport { useStyleRegister } from '../../_util/cssinjs';\nimport type { CSSInterpolation } from '../../_util/cssinjs';\nimport { genCommonStyle, genLinkStyle } from '../../style';\nimport type { UseComponentStyleResult } from '../internal';\nimport { mergeToken, statisticToken, useToken } from '../internal';\nimport type { ComponentTokenMap, GlobalToken } from '../interface';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport { useConfigContextInject } from '../../config-provider/context';\n\nexport type OverrideTokenWithoutDerivative = ComponentTokenMap;\nexport type OverrideComponent = keyof OverrideTokenWithoutDerivative;\nexport type GlobalTokenWithComponent<ComponentName extends OverrideComponent> = GlobalToken &\n  ComponentTokenMap[ComponentName];\n\nexport interface StyleInfo<ComponentName extends OverrideComponent> {\n  hashId: string;\n  prefixCls: string;\n  rootPrefixCls: string;\n  iconPrefixCls: string;\n  overrideComponentToken: ComponentTokenMap[ComponentName];\n}\n\nexport type TokenWithCommonCls<T> = T & {\n  /** Wrap component class with `.` prefix */\n  componentCls: string;\n  /** Origin prefix which do not have `.` prefix */\n  prefixCls: string;\n  /** Wrap icon class with `.` prefix */\n  iconCls: string;\n  /** Wrap ant prefixCls class with `.` prefix */\n  antCls: string;\n};\nexport type FullToken<ComponentName extends OverrideComponent> = TokenWithCommonCls<\n  GlobalTokenWithComponent<ComponentName>\n>;\n\nexport default function genComponentStyleHook<ComponentName extends OverrideComponent>(\n  component: ComponentName,\n  styleFn: (token: FullToken<ComponentName>, info: StyleInfo<ComponentName>) => CSSInterpolation,\n  getDefaultToken?:\n    | OverrideTokenWithoutDerivative[ComponentName]\n    | ((token: GlobalToken) => OverrideTokenWithoutDerivative[ComponentName]),\n) {\n  return (_prefixCls?: Ref<string>): UseComponentStyleResult => {\n    const prefixCls = computed(() => _prefixCls?.value);\n    const [theme, token, hashId] = useToken();\n    const { getPrefixCls, iconPrefixCls } = useConfigContextInject();\n    const rootPrefixCls = computed(() => getPrefixCls());\n    const sharedInfo = computed(() => {\n      return {\n        theme: theme.value,\n        token: token.value,\n        hashId: hashId.value,\n        path: ['Shared', rootPrefixCls.value],\n      };\n    });\n    // Generate style for all a tags in antd component.\n    useStyleRegister(sharedInfo, () => [\n      {\n        // Link\n        '&': genLinkStyle(token.value),\n      },\n    ]);\n    const componentInfo = computed(() => {\n      return {\n        theme: theme.value,\n        token: token.value,\n        hashId: hashId.value,\n        path: [component, prefixCls.value, iconPrefixCls.value],\n      };\n    });\n    return [\n      useStyleRegister(componentInfo, () => {\n        const { token: proxyToken, flush } = statisticToken(token.value);\n\n        const defaultComponentToken =\n          typeof getDefaultToken === 'function'\n            ? (getDefaultToken as any)(proxyToken)\n            : getDefaultToken;\n        const mergedComponentToken = { ...defaultComponentToken, ...token.value[component] };\n\n        const componentCls = `.${prefixCls.value}`;\n        const mergedToken = mergeToken<\n          TokenWithCommonCls<GlobalTokenWithComponent<OverrideComponent>>\n        >(\n          proxyToken,\n          {\n            componentCls,\n            prefixCls: prefixCls.value,\n            iconCls: `.${iconPrefixCls.value}`,\n            antCls: `.${rootPrefixCls.value}`,\n          },\n          mergedComponentToken,\n        );\n        const styleInterpolation = styleFn(mergedToken as unknown as FullToken<ComponentName>, {\n          hashId: hashId.value,\n          prefixCls: prefixCls.value,\n          rootPrefixCls: rootPrefixCls.value,\n          iconPrefixCls: iconPrefixCls.value,\n          overrideComponentToken: token.value[component],\n        });\n        flush(component, mergedComponentToken);\n        return [genCommonStyle(token.value, prefixCls.value), styleInterpolation];\n      }),\n      hashId,\n    ];\n  };\n}\n"
  },
  {
    "path": "components/theme/util/getAlphaColor.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\n\nfunction isStableColor(color: number): boolean {\n  return color >= 0 && color <= 255;\n}\n\nfunction getAlphaColor(frontColor: string, backgroundColor: string): string {\n  const { r: fR, g: fG, b: fB, a: originAlpha } = new TinyColor(frontColor).toRgb();\n  if (originAlpha < 1) {\n    return frontColor;\n  }\n\n  const { r: bR, g: bG, b: bB } = new TinyColor(backgroundColor).toRgb();\n\n  for (let fA = 0.01; fA <= 1; fA += 0.01) {\n    const r = Math.round((fR - bR * (1 - fA)) / fA);\n    const g = Math.round((fG - bG * (1 - fA)) / fA);\n    const b = Math.round((fB - bB * (1 - fA)) / fA);\n    if (isStableColor(r) && isStableColor(g) && isStableColor(b)) {\n      return new TinyColor({ r, g, b, a: Math.round(fA * 100) / 100 }).toRgbString();\n    }\n  }\n\n  // fallback\n  /* istanbul ignore next */\n  return new TinyColor({ r: fR, g: fG, b: fB, a: 1 }).toRgbString();\n}\n\nexport default getAlphaColor;\n"
  },
  {
    "path": "components/theme/util/statistic.ts",
    "content": "declare const CSSINJS_STATISTIC: any;\n\nconst enableStatistic =\n  process.env.NODE_ENV !== 'production' || typeof CSSINJS_STATISTIC !== 'undefined';\nlet recording = true;\n\n/**\n * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to\n * pass all value access in development. To support statistic field usage with alias token.\n */\nexport function merge<T extends object>(...objs: Partial<T>[]): T {\n  /* istanbul ignore next */\n  if (!enableStatistic) {\n    return Object.assign({}, ...objs);\n  }\n\n  recording = false;\n\n  const ret = {} as T;\n\n  objs.forEach(obj => {\n    const keys = Object.keys(obj);\n\n    keys.forEach(key => {\n      Object.defineProperty(ret, key, {\n        configurable: true,\n        enumerable: true,\n        get: () => (obj as any)[key],\n      });\n    });\n  });\n\n  recording = true;\n  return ret;\n}\n\n/** @private Internal Usage. Not use in your production. */\nexport const statistic: Record<\n  string,\n  { global: string[]; component: Record<string, string | number> }\n> = {};\n\n/** @private Internal Usage. Not use in your production. */\n// eslint-disable-next-line camelcase\nexport const _statistic_build_: typeof statistic = {};\n\n/* istanbul ignore next */\nfunction noop() {}\n\n/** Statistic token usage case. Should use `merge` function if you do not want spread record. */\nexport default function statisticToken<T extends object>(token: T) {\n  let tokenKeys: Set<string> | undefined;\n  let proxy = token;\n  let flush: (componentName: string, componentToken: Record<string, string | number>) => void =\n    noop;\n\n  if (enableStatistic) {\n    tokenKeys = new Set<string>();\n\n    proxy = new Proxy(token, {\n      get(obj: any, prop: any) {\n        if (recording) {\n          tokenKeys!.add(prop);\n        }\n        return obj[prop];\n      },\n    });\n\n    flush = (componentName, componentToken) => {\n      statistic[componentName] = { global: Array.from(tokenKeys!), component: componentToken };\n    };\n  }\n\n  return { token: proxy, keys: tokenKeys, flush };\n}\n"
  },
  {
    "path": "components/time-picker/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/time-picker/demo/12hours.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"12\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\" style=\"width: 140px;\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"11\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/addon.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/basic.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"08:00:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"09:00:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/bordered.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-borderless\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range ant-picker-borderless\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/disabled.vue correctly 1`] = `\n<div class=\"ant-picker ant-picker-disabled\">\n  <div class=\"ant-picker-input\"><input disabled=\"\" readonly=\"\" placeholder=\"Select time\" title=\"12:08:23\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/hide-column.vue correctly 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"12:08\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/interval-options.vue correctly 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/placement.vue correctly 1`] = `\n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>topLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topRight\"><span class=\"ant-radio-button-inner\"></span></span><span>topRight</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomRight\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomRight</span></label></div>\n<br>\n<br>\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 12px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/range-picker.vue correctly 1`] = `\n<div class=\"ant-picker ant-picker-range\">\n  <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n  <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n  <!----></span>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/size.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-large\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"12:08:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"12:08:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-small\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"12:08:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-status-error\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-status-warning\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker ant-picker-range ant-picker-status-error\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker ant-picker-range ant-picker-status-warning\">\n      <div class=\"ant-picker-input ant-picker-input-active\"><input readonly=\"\" placeholder=\"Start time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-range-separator\"><span aria-label=\"to\" class=\"ant-picker-separator\"><span role=\"img\" aria-label=\"swap-right\" class=\"anticon anticon-swap-right\"><svg focusable=\"false\" class=\"\" data-icon=\"swap-right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"></path></svg></span></span></div>\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"End time\" size=\"10\" autocomplete=\"off\"></div>\n      <div class=\"ant-picker-active-bar\" style=\"left: 0px; width: 0px; position: absolute;\"></div><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n      <!----></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/suffix.vue correctly 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"00:00:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n    <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/time-picker/demo/value.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <p>use value and @change</p>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <p>v-model</p>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <p>Do not change</p>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-picker\">\n      <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"00:00:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n        <!----></span><span class=\"ant-picker-clear\" role=\"button\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n      </div>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/time-picker/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`TimePicker not render clean icon when allowClear is false 1`] = `\n<div class=\"ant-picker\">\n  <div class=\"ant-picker-input\"><input readonly=\"\" placeholder=\"Select time\" title=\"00:00:00\" size=\"10\" autocomplete=\"off\"><span class=\"ant-picker-suffix\"><span role=\"img\" aria-label=\"clock-circle\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span>\n    <!----></span>\n    <!---->\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/time-picker/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('time-picker');\n"
  },
  {
    "path": "components/time-picker/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport TimePicker from '..';\nimport dayjs from 'dayjs';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { sleep } from '../../../tests/utils';\n\ndescribe('TimePicker', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n  beforeEach(() => {\n    document.body.innerHTML = '';\n  });\n  afterEach(() => {\n    errorSpy.mockReset();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n\n  focusTest(TimePicker);\n  mountTest(TimePicker);\n\n  it('renders addon correctly', async () => {\n    mount(\n      {\n        render() {\n          return (\n            <TimePicker\n              open={true}\n              addon={() => (\n                <button class=\"my-btn\" type=\"button\">\n                  Ok\n                </button>\n              )}\n            />\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n    await sleep();\n    expect(document.getElementsByClassName('my-btn').length).toBeTruthy();\n    expect(errorSpy).toHaveBeenCalledWith(\n      'Warning: [ant-design-vue: TimePicker] `addon` is deprecated. Please use `v-slot:renderExtraFooter` instead.',\n    );\n  });\n\n  it('not render clean icon when allowClear is false', () => {\n    const wrapper = mount({\n      render() {\n        return <TimePicker defaultValue={dayjs('2000-01-01 00:00:00')} allowClear={false} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/time-picker/date-fns.tsx",
    "content": "import createTimePicker from './time-picker';\nimport dateFnsGenerateConfig from '../vc-picker/generate/dateFns';\nimport type { App } from 'vue';\nimport type { PickerTimeProps, RangePickerTimeProps } from '../date-picker/generatePicker';\n\nconst { TimePicker, TimeRangePicker } = createTimePicker<Date>(dateFnsGenerateConfig);\n\nexport interface TimeRangePickerProps extends Omit<RangePickerTimeProps<Date>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\nexport interface TimePickerProps extends Omit<PickerTimeProps<Date>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\n/* istanbul ignore next */\nexport { TimePicker, TimeRangePicker };\nexport default Object.assign(TimePicker, {\n  TimePicker,\n  TimeRangePicker,\n  install: (app: App) => {\n    app.component(TimePicker.name, TimePicker);\n    app.component(TimeRangePicker.name, TimeRangePicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/time-picker/dayjs.tsx",
    "content": "import type { Dayjs } from 'dayjs';\nimport createTimePicker from './time-picker';\nimport dayjsGenerateConfig from '../vc-picker/generate/dayjs';\nimport type { App } from 'vue';\nimport type { PickerTimeProps, RangePickerTimeProps } from '../date-picker/generatePicker';\n\nconst { TimePicker, TimeRangePicker } = createTimePicker<Dayjs>(dayjsGenerateConfig);\n\nexport interface TimeRangePickerProps extends Omit<RangePickerTimeProps<Dayjs>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\nexport interface TimePickerProps extends Omit<PickerTimeProps<Dayjs>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\n\n/* istanbul ignore next */\nexport { TimePicker, TimeRangePicker };\nexport default Object.assign(TimePicker, {\n  TimePicker,\n  TimeRangePicker,\n  install: (app: App) => {\n    app.component(TimePicker.name, TimePicker);\n    app.component(TimeRangePicker.name, TimeRangePicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/time-picker/demo/12hours.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 12 小时制\n  en-US: 12 hours\n---\n\n## zh-CN\n\n12 小时制的时间选择器，默认的 format 为 `h:mm:ss a`。\n\n## en-US\n\nTimePicker of 12 hours format, with default format `h:mm:ss a`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-time-picker v-model:value=\"value\" use12-hours />\n    <a-time-picker v-model:value=\"value\" use12-hours format=\"h:mm:ss A\" style=\"width: 140px\" />\n    <a-time-picker v-model:value=\"value\" use12-hours format=\"h:mm a\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst value = ref<Dayjs>();\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/addon.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 附加内容\n  en-US: Addon\n---\n\n## zh-CN\n\n在 TimePicker 选择框底部显示自定义的内容。\n\n## en-US\n\nRender addon contents to timepicker panel's bottom.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-time-picker v-model:value=\"value\" v-model:open=\"open\" @openChange=\"handleOpenChange\">\n      <template #renderExtraFooter=\"{ prefixCls }\">\n        <a-button size=\"small\" type=\"primary\" @click=\"handleClose\">OK {{ prefixCls }}</a-button>\n      </template>\n    </a-time-picker>\n    <a-time-picker v-model:value=\"value\" v-model:open=\"open2\">\n      <template #renderExtraFooter>\n        <a-button size=\"small\" type=\"primary\" @click=\"handleClose\">OK</a-button>\n      </template>\n    </a-time-picker>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { Dayjs } from 'dayjs';\nconst open = ref(false);\nconst open2 = ref(false);\nconst value = ref<Dayjs>();\n\nconst handleOpenChange = (openStatus: boolean) => {\n  console.log('open', openStatus);\n  open.value = openStatus;\n};\n\nconst handleClose = () => {\n  open.value = false;\n  open2.value = false;\n};\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n点击 TimePicker，然后可以在浮层中选择或者输入某一时间。\n\n## en-US\n\nClick `TimePicker`, and then we could select or input a time in panel.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-time-picker v-model:value=\"value\" />\n    <a-time-picker v-model:value=\"strValue\" value-format=\"HH:mm:ss\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { ref, watch } from 'vue';\nconst value = ref<Dayjs>(dayjs('08:00:00', 'HH:mm:ss'));\nconst strValue = ref<string>('09:00:00');\n\nwatch(value, () => {\n  console.log(value.value);\n});\nwatch(strValue, () => {\n  console.log(strValue.value);\n});\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/bordered.vue",
    "content": "<docs>\n---\norder: 14\ntitle:\n  zh-CN: 无边框\n  en-US: Bordered-less\n---\n\n## zh-CN\n\n无边框样式。\n\n## en-US\n\nBordered-less style component.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-time-picker :bordered=\"false\" />\n    <a-time-range-picker :bordered=\"false\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/time-picker/demo/disabled.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 禁用\n  en-US: Disabled\n---\n\n## zh-CN\n\n禁用时间选择。\n\n## en-US\n\nA disabled state of the `TimePicker`.\n\n</docs>\n\n<template>\n  <a-time-picker :value=\"dayjs('12:08:23', 'HH:mm:ss')\" disabled />\n</template>\n<script lang=\"ts\" setup>\nimport dayjs from 'dayjs';\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/hide-column.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 选择时分\n  en-US: Hour and minute\n---\n\n## zh-CN\n\nTimePicker 浮层中的列会随着 `format` 变化，当略去 `format` 中的某部分时，浮层中对应的列也会消失。\n\n## en-US\n\nWhile part of `format` is omitted, the corresponding column in panel will disappear, too.\n\n</docs>\n\n<template>\n  <a-time-picker v-model:value=\"value\" format=\"HH:mm\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport dayjs from 'dayjs';\nconst value = ref(dayjs('12:08', 'HH:mm'));\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <Bordered />\n    <RangePicker />\n    <Hours />\n    <Addon />\n    <Disabled />\n    <HideColumn />\n    <IntervalOptions />\n    <Size />\n    <Suffix />\n    <statusVue />\n    <placementVue />\n  </demo-sort>\n</template>\n\n<script>\nimport Hours from './12hours.vue';\nimport Addon from './addon.vue';\nimport Basic from './basic.vue';\nimport Disabled from './disabled.vue';\nimport HideColumn from './hide-column.vue';\nimport IntervalOptions from './interval-options.vue';\nimport Size from './size.vue';\nimport Suffix from './suffix.vue';\nimport Bordered from './bordered.vue';\nimport RangePicker from './range-picker.vue';\nimport placementVue from './placement.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nexport default {\n  CN,\n  US,\n  components: {\n    placementVue,\n    statusVue,\n    Hours,\n    Addon,\n    Basic,\n    Disabled,\n    HideColumn,\n    IntervalOptions,\n    Size,\n    Suffix,\n    Bordered,\n    RangePicker,\n  },\n};\n</script>\n<style>\n[id^='components-time-picker-demo'] .ant-time-picker {\n  margin: 0 8px 12px 0;\n}\n</style>\n"
  },
  {
    "path": "components/time-picker/demo/interval-options.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 步长选项\n  en-US: Interval option\n---\n\n## zh-CN\n\n可以使用 `hourStep` `minuteStep` `secondStep` 按步长展示可选的时分秒。\n\n## en-US\n\nShow stepped options by `hourStep` `minuteStep` `secondStep`.\n\n</docs>\n\n<template>\n  <a-time-picker v-model:value=\"value\" :minute-step=\"15\" :second-step=\"10\" />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst value = ref();\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/placement.vue",
    "content": "<docs>\n---\norder: 28\ntitle:\n  zh-CN: 弹出位置\n  en-US: Popup Placement\n---\n\n## zh-CN\n\n可以通过 `placement` 手动指定弹出的位置。\n\n## en-US\n\nYou can manually specify the position of the popup via `placement`.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\">\n    <a-radio-button value=\"topLeft\">topLeft</a-radio-button>\n    <a-radio-button value=\"topRight\">topRight</a-radio-button>\n    <a-radio-button value=\"bottomLeft\">bottomLeft</a-radio-button>\n    <a-radio-button value=\"bottomRight\">bottomRight</a-radio-button>\n  </a-radio-group>\n  <br />\n  <br />\n  <a-space direction=\"vertical\" :size=\"12\">\n    <a-time-picker v-model:value=\"value1\" :placement=\"placement\" />\n    <a-time-range-picker v-model:value=\"value2\" :placement=\"placement\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { Dayjs } from 'dayjs';\nconst placement = ref('topLeft' as const);\nconst value1 = ref<Dayjs>();\nconst value2 = ref<[Dayjs, Dayjs]>();\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/range-picker.vue",
    "content": "<docs>\n---\norder: 13\ntitle:\n  zh-CN: 范围选择器\n  en-US: Time Range Picker\n---\n\n## zh-CN\n\n通过 `TimeRangePicker` 使用时间范围选择器。\n\n## en-US\n\nUse time range picker with `TimeRangePicker`.\n\n</docs>\n\n<template>\n  <a-time-range-picker />\n</template>\n"
  },
  {
    "path": "components/time-picker/demo/size.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 三种大小\n  en-US: Three Sizes\n---\n\n## zh-CN\n\n三种大小的输入框，大的用在表单中，中的为默认。\n\n## en-US\n\nThe input box comes in three sizes. large is used in the form, while the medium size is the default.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-time-picker v-model:value=\"value1\" size=\"large\" />\n    <a-time-picker v-model:value=\"value2\" />\n    <a-time-picker v-model:value=\"value3\" size=\"small\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs from 'dayjs';\nimport { ref } from 'vue';\nconst value1 = ref(dayjs('12:08:23', 'HH:mm'));\nconst value2 = ref(dayjs('12:08:23', 'HH:mm'));\nconst value3 = ref(dayjs('12:08:23', 'HH:mm'));\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 DatePicker 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to DatePicker with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-time-picker status=\"error\" />\n    <a-time-picker status=\"warning\" />\n    <a-time-range-picker status=\"error\" />\n    <a-time-range-picker status=\"warning\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/time-picker/demo/suffix.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 后缀图标\n  en-US: Suffix\n---\n\n## zh-CN\n\n点击 TimePicker，然后可以在浮层中选择或者输入某一时间。\n\n## en-US\n\nClick `TimePicker`, and then we could select or input a time in panel.\n\n</docs>\n\n<template>\n  <a-time-picker v-model:value=\"value\" :default-value=\"dayjs('00:00:00', 'HH:mm:ss')\">\n    <template #suffixIcon><smile-outlined /></template>\n  </a-time-picker>\n</template>\n<script lang=\"ts\" setup>\nimport dayjs, { Dayjs } from 'dayjs';\nimport { SmileOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nconst value = ref<Dayjs>();\n</script>\n"
  },
  {
    "path": "components/time-picker/demo/value.vue",
    "content": "<docs>\n---\norder: 8\ndebugger: true\ntitle:\n  zh-CN: 受控组件\n  en-US: Under Control\n---\n\n## zh-CN\n\nvalue 和 onChange 需要配合使用。也可以直接使用v-model。\n\n## en-US\n\n`value` and `@change` should be used together or use v-model.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <p>use value and @change</p>\n    <a-time-picker :value=\"value\" @change=\"onChange\" />\n    <p>v-model</p>\n    <a-time-picker v-model:value=\"value\" />\n    <p>Do not change</p>\n    <a-time-picker :value=\"value2\" />\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport dayjs, { Dayjs } from 'dayjs';\n\nconst value = ref<Dayjs>();\n\nconst onChange = (time: Dayjs) => {\n  console.log(time);\n  value.value = time;\n};\n\nconst value2 = ref(dayjs());\n</script>\n"
  },
  {
    "path": "components/time-picker/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: TimePicker\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*kGmGSLk_1fwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1hDmQJIDFJQAAAAAAAAAAAAADrJ8AQ/original\n---\n\nTo select/input a time.\n\n## When To Use\n\nBy clicking the input box, you can select a time from a popup panel.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowClear | Whether allow clearing text | boolean | true |  |\n| autofocus | If get focus when component mounted | boolean | false |  |\n| bordered | Whether has border style | boolean | true |  |\n| clearIcon | The custom clear icon | v-slot:clearIcon | - |  |\n| clearText | The clear tooltip of icon | string | clear |  |\n| disabled | Determine whether the TimePicker is disabled | boolean | false |  |\n| disabledTime | To specify the time that cannot be selected | [DisabledTime](#disabledtime) | - | 3.3.0 |\n| format | To set the time format | string | `HH:mm:ss` |  |\n| getPopupContainer | To set the container of the floating layer, while the default is to create a div element in body | function(trigger) | - |  |\n| hideDisabledOptions | Whether hide the options that can not be selected | boolean | false |  |\n| hourStep | Interval between hours in picker | number | 1 |  |\n| inputReadOnly | Set the `readonly` attribute of the input tag (avoids virtual keyboard on touch devices) | boolean | false |  |\n| minuteStep | Interval between minutes in picker | number | 1 |  |\n| open(v-model) | Whether to popup panel | boolean | false |  |\n| placeholder | Display when there's no value | string \\| \\[string, string] | `Select a time` |  |\n| placement | The position where the selection box pops up | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft |  |\n| popupClassName | The className of panel | string | - |  |\n| popupStyle | The style of panel | CSSProperties | - |  |\n| renderExtraFooter | Called from time picker panel to render some addon to its bottom | v-slot:renderExtraFooter | - |  |\n| secondStep | Interval between seconds in picker | number | 1 |  |\n| showNow | Whether to show `Now` button on panel | boolean | - |  |\n| suffixIcon | The custom suffix icon | v-slot:suffixIcon | - |  |\n| use12Hours | Display as 12 hours format, with default format `h:mm:ss a` | boolean | false |  |\n| value(v-model) | To set time | [dayjs](https://day.js.org/) | - |  |\n| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string, [date formats](https://day.js.org/docs/en/display/format) | - |  |\n\n#### DisabledTime\n\n```typescript\ntype DisabledTime = (now: Dayjs) => {\n  disabledHours?: () => number[];\n  disabledMinutes?: (selectedHour: number) => number[];\n  disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];\n};\n```\n\n### events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| change | a callback function, can be executed when the selected time is changing | function(time: dayjs \\| string, timeString: string): void |\n| openChange | a callback function which will be called while panel opening/closing | (open: boolean): void |\n\n## Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n\n### TimeRangePicker\n\nSame props from [RangePicker](/components/date-picker/#rangepicker) of DatePicker. And includes additional props:\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| order | Order start and end time | boolean | true |  |\n| disabledTime | To specify the time that cannot be selected | [RangeDisabledTime](#rangedisabledtime) | - | 3.3.0 |\n\n#### RangeDisabledTime\n\n```typescript\ntype RangeDisabledTime = (\n  now: Dayjs,\n  type = 'start' | 'end',\n) => {\n  disabledHours?: () => number[];\n  disabledMinutes?: (selectedHour: number) => number[];\n  disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];\n};\n```\n\n## FAQ\n\n### How to use DatePicker with customize date library（like moment.js \\| dayjs \\| date-fns）？\n\nPlease refer [replace date](/docs/vue/replace-date)\n"
  },
  {
    "path": "components/time-picker/index.tsx",
    "content": "import TimePicker from './dayjs';\nexport * from './dayjs';\nexport interface TimePickerLocale {\n  placeholder?: string;\n  rangePlaceholder?: [string, string];\n}\n\nexport default TimePicker;\n"
  },
  {
    "path": "components/time-picker/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: TimePicker\nsubtitle: 时间选择框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*kGmGSLk_1fwAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1hDmQJIDFJQAAAAAAAAAAAAADrJ8AQ/original\n---\n\n输入或选择时间的控件。\n\n## 何时使用\n\n当用户需要输入一个时间，可以点击标准输入框，弹出时间面板进行选择。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| allowClear | 是否展示清除按钮 | boolean | true |  |\n| autofocus | 自动获取焦点 | boolean | false |  |\n| bordered | 是否有边框 | boolean | true |  |\n| clearIcon | 自定义的清除图标 | v-slot:clearIcon | - |  |\n| clearText | 清除按钮的提示文案 | string | clear |  |\n| disabled | 禁用全部操作 | boolean | false |  |\n| disabledTime | 不可选择的时间 | [DisabledTime](#disabledtime) | - | 3.3.0 |\n| format | 展示的时间格式 | string | `HH:mm:ss` |  |\n| getPopupContainer | 定义浮层的容器，默认为 body 上新建 div | function(trigger) | - |  |\n| hideDisabledOptions | 隐藏禁止选择的选项 | boolean | false |  |\n| hourStep | 小时选项间隔 | number | 1 |  |\n| inputReadOnly | 设置输入框为只读（避免在移动设备上打开虚拟键盘） | boolean | false |  |\n| minuteStep | 分钟选项间隔 | number | 1 |  |\n| open(v-model) | 面板是否打开 | boolean | false |  |\n| placeholder | 没有值的时候显示的内容 | string \\| \\[string, string] | `请选择时间` |  |\n| placement | 选择框弹出的位置 | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft |  |\n| popupClassName | 弹出层类名 | string | - |  |\n| popupStyle | 弹出层样式对象 | object | - |  |\n| renderExtraFooter | 选择框底部显示自定义的内容 | v-slot:renderExtraFooter | - |  |\n| secondStep | 秒选项间隔 | number | 1 |  |\n| showNow | 面板是否显示“此刻”按钮 | boolean | - |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | 自定义的选择框后缀图标 | v-slot:suffixIcon | - |  |\n| use12Hours | 使用 12 小时制，为 true 时 `format` 默认为 `h:mm:ss a` | boolean | false |  |\n| value(v-model) | 当前时间 | [dayjs](https://day.js.org/) | - |  |\n| valueFormat | 可选，绑定值的格式，对 value、defaultValue 起作用。不指定则绑定值为 dayjs 对象 | string，[具体格式](https://day.js.org/docs/zh-CN/display/format) | - |  |\n\n#### DisabledTime\n\n```typescript\ntype DisabledTime = (now: Dayjs) => {\n  disabledHours?: () => number[];\n  disabledMinutes?: (selectedHour: number) => number[];\n  disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];\n};\n```\n\n### 事件\n\n| 事件名称   | 说明                  | 回调参数                                                  |\n| ---------- | --------------------- | --------------------------------------------------------- |\n| change     | 时间发生变化的回调    | function(time: dayjs \\| string, timeString: string): void |\n| openChange | 面板打开/关闭时的回调 | (open: boolean): void                                     |\n\n## 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n### TimeRangePicker\n\n属性与 DatePicker 的 [RangePicker](/components/date-picker/#rangepicker) 相同。还包含以下属性：\n\n| 参数         | 说明                 | 类型                                    | 默认值 | 版本  |\n| ------------ | -------------------- | --------------------------------------- | ------ | ----- |\n| order        | 始末时间是否自动排序 | boolean                                 | true   |       |\n| disabledTime | 不可选择的时间       | [RangeDisabledTime](#pangedisabledtime) | -      | 3.3.0 |\n\n#### RangeDisabledTime\n\n```typescript\ntype RangeDisabledTime = (\n  now: Dayjs,\n  type = 'start' | 'end',\n) => {\n  disabledHours?: () => number[];\n  disabledMinutes?: (selectedHour: number) => number[];\n  disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];\n};\n```\n\n## FAQ\n\n### 如何在 DatePicker 中使用自定义日期库（如 moment.js \\| dayjs \\| date-fns）？\n\n请参考[《自定义日期库》](/docs/vue/replace-date-cn)\n"
  },
  {
    "path": "components/time-picker/locale/ar_EG.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'اختيار الوقت',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/az_AZ.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Vaxtı seç',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/bg_BG.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Избор на час',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/bn_BD.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'সময় নির্বাচন',\n  rangePlaceholder: ['সময় শুরু', 'শেষ সময়'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/by_BY.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Выберыце час',\n  rangePlaceholder: ['Час пачатку', 'Час заканчэння'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ca_ES.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Seleccionar hora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ckb_IQ.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'کات هەڵبژێرە',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/cs_CZ.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Vybrat čas',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/da_DK.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Vælg tid',\n  rangePlaceholder: ['Starttidspunkt', 'Sluttidspunkt'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/de_DE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Zeit auswählen',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/el_GR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Επιλέξτε ώρα',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/en_GB.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Select time',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/en_US.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Select time',\n  rangePlaceholder: ['Start time', 'End time'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/es_ES.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Seleccionar hora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/et_EE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Vali aeg',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/fa_IR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'انتخاب زمان',\n  rangePlaceholder: ['زمان شروع', 'زمان پایان'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/fi_FI.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Valitse aika',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/fr_BE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: \"Sélectionner l'heure\",\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/fr_CA.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: \"Sélectionner l'heure\",\n  rangePlaceholder: ['Heure de début', 'Heure de fin'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/fr_FR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: \"Sélectionner l'heure\",\n  rangePlaceholder: ['Heure de début', 'Heure de fin'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ga_IE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Roghnaigh am',\n  rangePlaceholder: ['Am tosaigh', 'Am deiridh'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/gl_ES.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Escolla hora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/he_IL.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'בחר שעה',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/hi_IN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'समय का चयन करें',\n  rangePlaceholder: ['आरंभिक समय', 'अंत समय'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/hr_HR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Odaberite vrijeme',\n  rangePlaceholder: ['Vrijeme početka', 'Vrijeme završetka'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/hu_HU.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Válasszon időt',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/id_ID.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Pilih waktu',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/is_IS.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Velja tíma',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/it_IT.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: \"Selezionare l'orario\",\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ja_JP.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: '時間を選択',\n  rangePlaceholder: ['開始時間', '終了時間'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ka_GE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'აირჩიეთ დრო',\n  rangePlaceholder: ['საწყისი თარიღი', 'საბოლოო თარიღი'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/kk_KZ.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Уақытты таңдаңыз',\n  rangePlaceholder: ['Бастау уақыты', 'Аяқталу уақыты'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/km_KH.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'រើសម៉ោង',\n  rangePlaceholder: ['ម៉ោងចប់ផ្ដើម', 'ម៉ោងបញ្ចប់'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/kmr_IQ.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Demê hilbijêre',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/kn_IN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'ಸಮಯ ಆಯ್ಕೆಮಾಡಿ',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ko_KR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: '시간 선택',\n  rangePlaceholder: ['시작 시간', '종료 시간'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/lt_LT.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Pasirinkite laiką',\n  rangePlaceholder: ['Pradžios laikas', 'Pabaigos laikas'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/lv_LV.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Izvēlieties laiku',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/mk_MK.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Избери време',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ml_IN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'സമയം തിരഞ്ഞെടുക്കുക',\n  rangePlaceholder: ['ആരംഭ സമയം', 'അവസാന സമയം'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/mn_MN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Цаг сонгох',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ms_MY.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Sila pilih masa',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/nb_NO.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Velg tid',\n  rangePlaceholder: ['Starttid', 'Sluttid'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/nl_BE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Selecteer tijd',\n  rangePlaceholder: ['Start tijd', 'Eind tijd'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/nl_NL.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Selecteer tijd',\n  rangePlaceholder: ['Start tijd', 'Eind tijd'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/pl_PL.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Wybierz godzinę',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/pt_BR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Hora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/pt_PT.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Hora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ro_RO.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Selectează ora',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ru_RU.ts",
    "content": "/** Created by Andrey Gayvoronsky on 13/04/16. */\nimport type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Выберите время',\n  rangePlaceholder: ['Время начала', 'Время окончания'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/sk_SK.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Vybrať čas',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/sl_SI.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Izberite čas',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/sr_RS.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Izaberi vreme',\n  rangePlaceholder: ['Vreme početka', 'Vreme završetka'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/sv_SE.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Välj tid',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ta_IN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'நேரத்தைத் தேர்ந்தெடுக்கவும்',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/th_TH.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'เลือกเวลา',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/tr_TR.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Zaman seç',\n  rangePlaceholder: ['Başlangıç zamanı', 'Bitiş zamanı'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/uk_UA.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Оберіть час',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/ur_PK.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'وقت منتخب کریں',\n  rangePlaceholder: ['وقت منتخب کریں', 'آخر وقت'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/vi_VN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: 'Chọn thời gian',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/zh_CN.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: '请选择时间',\n  rangePlaceholder: ['开始时间', '结束时间'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/locale/zh_TW.ts",
    "content": "import type { TimePickerLocale } from '../index';\n\nconst locale: TimePickerLocale = {\n  placeholder: '請選擇時間',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/time-picker/moment.tsx",
    "content": "import type { Moment } from 'moment';\nimport createTimePicker from './time-picker';\nimport momentGenerateConfig from '../vc-picker/generate/moment';\nimport type { App } from 'vue';\nimport type { PickerTimeProps, RangePickerTimeProps } from '../date-picker/generatePicker';\n\nconst { TimePicker, TimeRangePicker } = createTimePicker<Moment>(momentGenerateConfig);\n\nexport interface TimeRangePickerProps extends Omit<RangePickerTimeProps<Moment>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\nexport interface TimePickerProps extends Omit<PickerTimeProps<Moment>, 'picker'> {\n  popupClassName?: string;\n  valueFormat?: string;\n}\n/* istanbul ignore next */\nexport { TimePicker, TimeRangePicker };\nexport default Object.assign(TimePicker, {\n  TimePicker,\n  TimeRangePicker,\n  install: (app: App) => {\n    app.component(TimePicker.name, TimePicker);\n    app.component(TimeRangePicker.name, TimeRangePicker);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/time-picker/time-picker.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport type { RangePickerTimeProps } from '../date-picker/generatePicker';\nimport generatePicker from '../date-picker/generatePicker';\nimport {\n  commonProps,\n  datePickerProps,\n  rangePickerProps,\n} from '../date-picker/generatePicker/props';\nimport type { CommonProps, DatePickerProps } from '../date-picker/generatePicker/props';\nimport type { GenerateConfig } from '../vc-picker/generate';\nimport type { PanelMode, RangeValue } from '../vc-picker/interface';\nimport type { RangePickerSharedProps } from '../vc-picker/RangePicker';\nimport devWarning from '../vc-util/devWarning';\nimport { useInjectFormItemContext } from '../form/FormItemContext';\nimport omit from '../_util/omit';\n\nimport type { InputStatus } from '../_util/statusUtils';\nimport { booleanType, stringType } from '../_util/type';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport interface TimePickerLocale {\n  placeholder?: string;\n  rangePlaceholder?: [string, string];\n}\n\nexport const timePickerProps = () => ({\n  format: String,\n  showNow: booleanType(),\n  showHour: booleanType(),\n  showMinute: booleanType(),\n  showSecond: booleanType(),\n  use12Hours: booleanType(),\n  hourStep: Number,\n  minuteStep: Number,\n  secondStep: Number,\n  hideDisabledOptions: booleanType(),\n  popupClassName: String,\n  status: stringType<InputStatus>(),\n});\ntype CommonTimePickerProps = Partial<ExtractPropTypes<ReturnType<typeof timePickerProps>>>;\nexport type TimeRangePickerProps<DateType> = Omit<\n  RangePickerTimeProps<DateType>,\n  'picker' | 'defaultPickerValue' | 'defaultValue' | 'value' | 'onChange' | 'onPanelChange' | 'onOk'\n> & {\n  popupClassName?: string;\n  valueFormat?: string;\n  defaultPickerValue?: RangeValue<DateType> | RangeValue<string>;\n  defaultValue?: RangeValue<DateType> | RangeValue<string>;\n  value?: RangeValue<DateType> | RangeValue<string>;\n  onChange?: (\n    value: RangeValue<DateType> | RangeValue<string> | null,\n    dateString: [string, string],\n  ) => void;\n  'onUpdate:value'?: (value: RangeValue<DateType> | RangeValue<string> | null) => void;\n  onPanelChange?: (\n    values: RangeValue<DateType> | RangeValue<string>,\n    modes: [PanelMode, PanelMode],\n  ) => void;\n  onOk?: (dates: RangeValue<DateType> | RangeValue<string>) => void;\n};\n\nexport type TimePickerProps<DateType> = CommonProps<DateType> &\n  DatePickerProps<DateType> &\n  CommonTimePickerProps & {\n    addon?: () => void;\n  };\n\nfunction createTimePicker<\n  DateType,\n  DTimePickerProps extends TimePickerProps<DateType> = TimePickerProps<DateType>,\n  DTimeRangePickerProps extends TimeRangePickerProps<DateType> = TimeRangePickerProps<DateType>,\n>(generateConfig: GenerateConfig<DateType>) {\n  const DatePicker = generatePicker<DateType>(generateConfig, {\n    ...timePickerProps(),\n    order: { type: Boolean, default: true },\n  });\n\n  const { TimePicker: InternalTimePicker, RangePicker: InternalRangePicker } = DatePicker as any;\n  const TimePicker = defineComponent<DTimePickerProps>({\n    name: 'ATimePicker',\n    inheritAttrs: false,\n    props: {\n      ...commonProps<any>(),\n      ...datePickerProps<any>(),\n      ...timePickerProps(),\n      addon: { type: Function },\n    } as any,\n    slots: Object as CustomSlotsType<{\n      addon?: any;\n      renderExtraFooter?: any;\n      suffixIcon?: any;\n      clearIcon?: any;\n      default: any;\n    }>,\n    setup(p, { slots, expose, emit, attrs }) {\n      const props = p as unknown as DTimePickerProps;\n      const formItemContext = useInjectFormItemContext();\n      devWarning(\n        !(slots.addon || props.addon),\n        'TimePicker',\n        '`addon` is deprecated. Please use `v-slot:renderExtraFooter` instead.',\n      );\n      const pickerRef = ref();\n      expose({\n        focus: () => {\n          pickerRef.value?.focus();\n        },\n        blur: () => {\n          pickerRef.value?.blur();\n        },\n      });\n      const onChange = (value: DateType | string, dateString: string) => {\n        emit('update:value', value);\n        emit('change', value, dateString);\n        formItemContext.onFieldChange();\n      };\n      const onOpenChange = (open: boolean) => {\n        emit('update:open', open);\n        emit('openChange', open);\n      };\n      const onFocus = (e: FocusEvent) => {\n        emit('focus', e);\n      };\n      const onBlur = (e: FocusEvent) => {\n        emit('blur', e);\n        formItemContext.onFieldBlur();\n      };\n      const onOk = (value: DateType) => {\n        emit('ok', value);\n      };\n      return () => {\n        const { id = formItemContext.id.value } = props;\n        //restProps.addon\n        return (\n          <InternalTimePicker\n            {...attrs}\n            {...omit(props, ['onUpdate:value', 'onUpdate:open'])}\n            id={id}\n            dropdownClassName={props.popupClassName}\n            mode={undefined}\n            ref={pickerRef}\n            renderExtraFooter={\n              props.addon || slots.addon || props.renderExtraFooter || slots.renderExtraFooter\n            }\n            onChange={onChange}\n            onOpenChange={onOpenChange}\n            onFocus={onFocus}\n            onBlur={onBlur}\n            onOk={onOk}\n            v-slots={slots}\n          />\n        );\n      };\n    },\n  });\n\n  const TimeRangePicker = defineComponent<DTimeRangePickerProps>({\n    name: 'ATimeRangePicker',\n    inheritAttrs: false,\n    props: {\n      ...commonProps<any>(),\n      ...rangePickerProps<any>(),\n      ...timePickerProps(),\n      order: { type: Boolean, default: true },\n    } as any,\n    slots: Object as CustomSlotsType<{\n      renderExtraFooter?: any;\n      suffixIcon?: any;\n      clearIcon?: any;\n      default: any;\n    }>,\n    setup(p, { slots, expose, emit, attrs }) {\n      const props = p as unknown as DTimeRangePickerProps;\n      const pickerRef = ref();\n      const formItemContext = useInjectFormItemContext();\n      expose({\n        focus: () => {\n          pickerRef.value?.focus();\n        },\n        blur: () => {\n          pickerRef.value?.blur();\n        },\n      });\n      const onChange = (\n        values: RangeValue<string> | RangeValue<DateType>,\n        dateStrings: [string, string],\n      ) => {\n        emit('update:value', values);\n        emit('change', values, dateStrings);\n        formItemContext.onFieldChange();\n      };\n      const onOpenChange = (open: boolean) => {\n        emit('update:open', open);\n        emit('openChange', open);\n      };\n      const onFocus = (e: FocusEvent) => {\n        emit('focus', e);\n      };\n      const onBlur = (e: FocusEvent) => {\n        emit('blur', e);\n        formItemContext.onFieldBlur();\n      };\n      const onPanelChange = (\n        values: RangeValue<string> | RangeValue<DateType>,\n        modes: [PanelMode, PanelMode],\n      ) => {\n        emit('panelChange', values, modes);\n      };\n      const onOk = (values: RangeValue<string | DateType>) => {\n        emit('ok', values);\n      };\n      const onCalendarChange: RangePickerSharedProps<DateType>['onCalendarChange'] = (\n        values: RangeValue<string> | RangeValue<DateType>,\n        dateStrings: [string, string],\n        info,\n      ) => {\n        emit('calendarChange', values, dateStrings, info);\n      };\n      return () => {\n        const { id = formItemContext.id.value } = props;\n        return (\n          <InternalRangePicker\n            {...attrs}\n            {...omit(props, ['onUpdate:open', 'onUpdate:value'] as any)}\n            id={id}\n            dropdownClassName={props.popupClassName}\n            picker=\"time\"\n            mode={undefined}\n            ref={pickerRef}\n            onChange={onChange}\n            onOpenChange={onOpenChange}\n            onFocus={onFocus}\n            onBlur={onBlur}\n            onPanelChange={onPanelChange}\n            onOk={onOk}\n            onCalendarChange={onCalendarChange}\n            v-slots={slots}\n          />\n        );\n      };\n    },\n  });\n\n  return {\n    TimePicker,\n    TimeRangePicker,\n  };\n}\n\nexport default createTimePicker;\n"
  },
  {
    "path": "components/timeline/Timeline.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { cloneVNode, defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty } from '../_util/props-util';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport TimelineItem from './TimelineItem';\nimport LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\n\nimport { tuple, booleanType } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\n// CSSINJS\nimport useStyle from './style';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport const timelineProps = () => ({\n  prefixCls: String,\n  /** 指定最后一个幽灵节点是否存在或内容 */\n  pending: PropTypes.any,\n  pendingDot: PropTypes.any,\n  reverse: booleanType(),\n  mode: PropTypes.oneOf(tuple('left', 'alternate', 'right', '')),\n});\n\nexport type TimelineProps = Partial<ExtractPropTypes<ReturnType<typeof timelineProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATimeline',\n  inheritAttrs: false,\n  props: initDefaultProps(timelineProps(), {\n    reverse: false,\n    mode: '',\n  }),\n  slots: Object as CustomSlotsType<{\n    pending?: any;\n    pendingDot?: any;\n    default?: any;\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('timeline', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const getPositionCls = (ele, idx: number) => {\n      const eleProps = ele.props || {};\n      if (props.mode === 'alternate') {\n        if (eleProps.position === 'right') return `${prefixCls.value}-item-right`;\n        if (eleProps.position === 'left') return `${prefixCls.value}-item-left`;\n        return idx % 2 === 0 ? `${prefixCls.value}-item-left` : `${prefixCls.value}-item-right`;\n      }\n      if (props.mode === 'left') return `${prefixCls.value}-item-left`;\n      if (props.mode === 'right') return `${prefixCls.value}-item-right`;\n      if (eleProps.position === 'right') return `${prefixCls.value}-item-right`;\n      return '';\n    };\n\n    return () => {\n      const {\n        pending = slots.pending?.(),\n        pendingDot = slots.pendingDot?.(),\n        reverse,\n        mode,\n      } = props;\n      const pendingNode = typeof pending === 'boolean' ? null : pending;\n      const children = filterEmpty(slots.default?.());\n\n      const pendingItem = pending ? (\n        <TimelineItem pending={!!pending} dot={pendingDot || <LoadingOutlined />}>\n          {pendingNode}\n        </TimelineItem>\n      ) : null;\n\n      if (pendingItem) {\n        children.push(pendingItem);\n      }\n\n      const timeLineItems = reverse ? children.reverse() : children;\n\n      const itemsCount = timeLineItems.length;\n      const lastCls = `${prefixCls.value}-item-last`;\n      const items = timeLineItems.map((ele, idx) => {\n        const pendingClass = idx === itemsCount - 2 ? lastCls : '';\n        const readyClass = idx === itemsCount - 1 ? lastCls : '';\n        return cloneVNode(ele, {\n          class: classNames([\n            !reverse && !!pending ? pendingClass : readyClass,\n            getPositionCls(ele, idx),\n          ]),\n        });\n      });\n      const hasLabelItem = timeLineItems.some(\n        item => !!(item.props?.label || item.children?.label),\n      );\n      const classString = classNames(\n        prefixCls.value,\n        {\n          [`${prefixCls.value}-pending`]: !!pending,\n          [`${prefixCls.value}-reverse`]: !!reverse,\n          [`${prefixCls.value}-${mode}`]: !!mode && !hasLabelItem,\n          [`${prefixCls.value}-label`]: hasLabelItem,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n      return wrapSSR(\n        <ul {...attrs} class={classString}>\n          {items}\n        </ul>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/timeline/TimelineItem.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\n\nimport { tuple, booleanType } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport const timelineItemProps = () => ({\n  prefixCls: String,\n  color: String,\n  dot: PropTypes.any,\n  pending: booleanType(),\n  position: PropTypes.oneOf(tuple('left', 'right', '')).def(''),\n  label: PropTypes.any,\n});\n\nexport type TimelineItemProps = Partial<ExtractPropTypes<ReturnType<typeof timelineItemProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATimelineItem',\n  props: initDefaultProps(timelineItemProps(), {\n    color: 'blue',\n    pending: false,\n  }),\n  slots: Object as CustomSlotsType<{\n    dot?: any;\n    label?: any;\n    default?: any;\n  }>,\n  setup(props, { slots }) {\n    const { prefixCls } = useConfigInject('timeline', props);\n    const itemClassName = computed(() => ({\n      [`${prefixCls.value}-item`]: true,\n      [`${prefixCls.value}-item-pending`]: props.pending,\n    }));\n\n    const customColor = computed(() =>\n      /blue|red|green|gray/.test(props.color || '') ? undefined : props.color || 'blue',\n    );\n    const dotClassName = computed(() => ({\n      [`${prefixCls.value}-item-head`]: true,\n      [`${prefixCls.value}-item-head-${props.color || 'blue'}`]: !customColor.value,\n    }));\n    return () => {\n      const { label = slots.label?.(), dot = slots.dot?.() } = props;\n      return (\n        <li class={itemClassName.value}>\n          {label && <div class={`${prefixCls.value}-item-label`}>{label}</div>}\n          <div class={`${prefixCls.value}-item-tail`} />\n          <div\n            class={[dotClassName.value, !!dot && `${prefixCls.value}-item-head-custom`]}\n            style={{ borderColor: customColor.value, color: customColor.value }}\n          >\n            {dot}\n          </div>\n          <div class={`${prefixCls.value}-item-content`}>{slots.default?.()}</div>\n        </li>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/timeline/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/timeline/demo/alternate.vue correctly 1`] = `\n<ul class=\"ant-timeline ant-timeline-alternate\">\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-green\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Solve initial network problems 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue ant-timeline-item-head-custom\"><span role=\"img\" aria-label=\"clock-circle\" style=\"font-size: 16px;\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></div>\n    <div class=\"ant-timeline-item-content\"> Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. </div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-red\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Network problems being solved 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue ant-timeline-item-head-custom\"><span role=\"img\" aria-label=\"clock-circle\" style=\"font-size: 16px;\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></div>\n    <div class=\"ant-timeline-item-content\"> Technical testing 2015-09-01 </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/timeline/demo/basic.vue correctly 1`] = `\n<ul class=\"ant-timeline\">\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Solve initial network problems 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Technical testing 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Network problems being solved 2015-09-01</div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/timeline/demo/color.vue correctly 1`] = `\n<ul class=\"ant-timeline\">\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-green\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-green\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-red\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">\n      <p>Solve initial network problems 1</p>\n      <p>Solve initial network problems 2</p>\n      <p>Solve initial network problems 3 2015-09-01</p>\n    </div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-gray\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-gray\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-custom\" style=\"border-color: #00ccff; color: rgb(0, 204, 255);\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></div>\n    <div class=\"ant-timeline-item-content\">\n      <p>Custom color testing</p>\n    </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/timeline/demo/custom.vue correctly 1`] = `\n<ul class=\"ant-timeline\">\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Solve initial network problems 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-red ant-timeline-item-head-custom\"><span role=\"img\" aria-label=\"clock-circle\" style=\"font-size: 16px;\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></div>\n    <div class=\"ant-timeline-item-content\"> Technical testing 2015-09-01 </div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Network problems being solved 2015-09-01</div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/timeline/demo/label.vue correctly 1`] = `\n<div style=\"margin-bottom: 20px;\" class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"left\"><span class=\"ant-radio-inner\"></span></span><span>Left</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"right\"><span class=\"ant-radio-inner\"></span></span><span>Right</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"alternate\"><span class=\"ant-radio-inner\"></span></span><span>Alternate</span></label></div>\n<ul class=\"ant-timeline ant-timeline-label\">\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <div class=\"ant-timeline-item-label\">2015-09-01</div>\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <div class=\"ant-timeline-item-label\">2015-09-01 09:12:11</div>\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Solve initial network problems</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-left\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Technical testing</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last ant-timeline-item-left\">\n    <div class=\"ant-timeline-item-label\"><strong style=\"color: red;\">2015-09-01 09:12:11</strong></div>\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\"> Network problems being solved </div>\n  </li>\n</ul>\n`;\n\nexports[`renders ./components/timeline/demo/pending.vue correctly 1`] = `\n<div>\n  <ul class=\"ant-timeline ant-timeline-pending\">\n    <li class=\"ant-timeline-item\">\n      <!---->\n      <div class=\"ant-timeline-item-tail\"></div>\n      <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n        <!---->\n      </div>\n      <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n    </li>\n    <li class=\"ant-timeline-item\">\n      <!---->\n      <div class=\"ant-timeline-item-tail\"></div>\n      <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n        <!---->\n      </div>\n      <div class=\"ant-timeline-item-content\">Solve initial network problems 2015-09-01</div>\n    </li>\n    <li class=\"ant-timeline-item ant-timeline-item-last\">\n      <!---->\n      <div class=\"ant-timeline-item-tail\"></div>\n      <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n        <!---->\n      </div>\n      <div class=\"ant-timeline-item-content\">Technical testing 2015-09-01</div>\n    </li>\n    <li class=\"ant-timeline-item ant-timeline-item-pending\">\n      <!---->\n      <div class=\"ant-timeline-item-tail\"></div>\n      <div class=\"ant-timeline-item-head ant-timeline-item-head-blue ant-timeline-item-head-custom\"><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg focusable=\"false\" class=\"anticon-spin\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span></div>\n      <div class=\"ant-timeline-item-content\">Recording...</div>\n    </li>\n  </ul><button style=\"margin-top: 16px;\" class=\"ant-btn ant-btn-primary\" type=\"button\">\n    <!----><span>Toggle Reverse</span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/timeline/demo/right.vue correctly 1`] = `\n<ul class=\"ant-timeline ant-timeline-right\">\n  <li class=\"ant-timeline-item ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Create a services site 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Solve initial network problems 2015-09-01</div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue ant-timeline-item-head-custom\"><span role=\"img\" aria-label=\"clock-circle\" style=\"font-size: 16px;\" class=\"anticon anticon-clock-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"clock-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"></path><path d=\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"></path></svg></span></div>\n    <div class=\"ant-timeline-item-content\"> Technical testing 2015-09-01 </div>\n  </li>\n  <li class=\"ant-timeline-item ant-timeline-item-last ant-timeline-item-right\">\n    <!---->\n    <div class=\"ant-timeline-item-tail\"></div>\n    <div class=\"ant-timeline-item-head ant-timeline-item-head-blue\">\n      <!---->\n    </div>\n    <div class=\"ant-timeline-item-content\">Network problems being solved 2015-09-01</div>\n  </li>\n</ul>\n`;\n"
  },
  {
    "path": "components/timeline/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('timeline');\n"
  },
  {
    "path": "components/timeline/__tests__/index.test.js",
    "content": "import TimeLine from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Tag', () => {\n  mountTest(TimeLine);\n  mountTest(TimeLine.Item);\n});\n"
  },
  {
    "path": "components/timeline/demo/alternate.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 交替展现\n  en-US: Alternate\n---\n\n## zh-CN\n\n内容在时间轴两侧轮流出现。\n\n## en-US\n\nAlternate timeline.\n\n</docs>\n\n<template>\n  <a-timeline mode=\"alternate\">\n    <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item color=\"green\">Solve initial network problems 2015-09-01</a-timeline-item>\n    <a-timeline-item>\n      <template #dot><ClockCircleOutlined style=\"font-size: 16px\" /></template>\n      Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque\n      laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto\n      beatae vitae dicta sunt explicabo.\n    </a-timeline-item>\n    <a-timeline-item color=\"red\">Network problems being solved 2015-09-01</a-timeline-item>\n    <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item>\n      <template #dot><ClockCircleOutlined style=\"font-size: 16px\" /></template>\n      Technical testing 2015-09-01\n    </a-timeline-item>\n  </a-timeline>\n</template>\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/timeline/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n基本的时间轴。\n\n## en-US\n\nBasic timeline.\n\n</docs>\n\n<template>\n  <a-timeline>\n    <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item>Solve initial network problems 2015-09-01</a-timeline-item>\n    <a-timeline-item>Technical testing 2015-09-01</a-timeline-item>\n    <a-timeline-item>Network problems being solved 2015-09-01</a-timeline-item>\n  </a-timeline>\n</template>\n"
  },
  {
    "path": "components/timeline/demo/color.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 圆圈颜色\n  en-US: Color\n---\n\n## zh-CN\n\n圆圈颜色，绿色用于已完成、成功状态，红色表示告警或错误状态，蓝色可表示正在进行或其他默认状态。\n\n## en-US\n\nSet the color of circles. `green` means completed or success status, `red` means warning or error, and `blue` means ongoing or other default status.\n\n</docs>\n\n<template>\n  <a-timeline>\n    <a-timeline-item color=\"green\">Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item color=\"green\">Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item color=\"red\">\n      <p>Solve initial network problems 1</p>\n      <p>Solve initial network problems 2</p>\n      <p>Solve initial network problems 3 2015-09-01</p>\n    </a-timeline-item>\n    <a-timeline-item>\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </a-timeline-item>\n    <a-timeline-item color=\"gray\">\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </a-timeline-item>\n    <a-timeline-item color=\"gray\">\n      <p>Technical testing 1</p>\n      <p>Technical testing 2</p>\n      <p>Technical testing 3 2015-09-01</p>\n    </a-timeline-item>\n    <a-timeline-item color=\"#00CCFF\">\n      <template #dot>\n        <SmileOutlined />\n      </template>\n      <p>Custom color testing</p>\n    </a-timeline-item>\n  </a-timeline>\n</template>\n<script lang=\"ts\" setup>\nimport { SmileOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/timeline/demo/custom.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义时间轴点\n  en-US: Custom\n---\n\n## zh-CN\n\n可以设置为图标或其他自定义元素。\n\n## en-US\n\nSet a node as an icon or other custom element.\n\n</docs>\n\n<template>\n  <a-timeline>\n    <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item>Solve initial network problems 2015-09-01</a-timeline-item>\n    <a-timeline-item color=\"red\">\n      <template #dot><clock-circle-outlined style=\"font-size: 16px\" /></template>\n      Technical testing 2015-09-01\n    </a-timeline-item>\n    <a-timeline-item>Network problems being solved 2015-09-01</a-timeline-item>\n  </a-timeline>\n</template>\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/timeline/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <color />\n    <pending />\n    <custom />\n    <alternate />\n    <right />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Color from './color.vue';\nimport Pending from './pending.vue';\nimport Custom from './custom.vue';\nimport Alternate from './alternate.vue';\nimport Right from './right.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Color,\n    Pending,\n    Custom,\n    Alternate,\n    Right,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/timeline/demo/label.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 标签\n  en-US: Label\n---\n\n## zh-CN\n\n使用 `label` 标签单独展示时间。\n\n## en-US\n\nUse `label` show time alone.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"mode\" style=\"margin-bottom: 20px\">\n    <a-radio value=\"left\">Left</a-radio>\n    <a-radio value=\"right\">Right</a-radio>\n    <a-radio value=\"alternate\">Alternate</a-radio>\n  </a-radio-group>\n  <a-timeline :mode=\"mode\">\n    <a-timeline-item label=\"2015-09-01\">Create a services</a-timeline-item>\n    <a-timeline-item label=\"2015-09-01 09:12:11\">Solve initial network problems</a-timeline-item>\n    <a-timeline-item>Technical testing</a-timeline-item>\n    <a-timeline-item>\n      <template #label><strong style=\"color: red\">2015-09-01 09:12:11</strong></template>\n      Network problems being solved\n    </a-timeline-item>\n  </a-timeline>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TimelineProps } from 'ant-design-vue';\nconst mode = ref<TimelineProps['mode']>('left');\n</script>\n"
  },
  {
    "path": "components/timeline/demo/pending.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 最后一个及排序\n  en-US: Last node\n---\n\n## zh-CN\n\n当任务状态正在发生，还在记录过程中，可用幽灵节点来表示当前的时间节点，当 `pending` 为真值时展示幽灵节点，如果 `pending` 是 `VNode` 可用于定制该节点内容，同时 `pendingDot` 将可以用于定制其轴点。reverse 属性用于控制节点排序，为 false 时按正序排列，为 true 时按倒序排列。\n\n## en-US\n\nWhen the timeline is incomplete and ongoing, put a ghost node at last. Set `pending` as truthy value to enable displaying pending item. You can customize the `pending` content by passing a `VNode`. Meanwhile, `slot=\"pendingDot\"` is used to customize the dot of the pending item.\n`reverse={true}` is used for reversing nodes.\n\n</docs>\n\n<template>\n  <div>\n    <a-timeline pending=\"Recording...\" :reverse=\"reverse\">\n      <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n      <a-timeline-item>Solve initial network problems 2015-09-01</a-timeline-item>\n      <a-timeline-item>Technical testing 2015-09-01</a-timeline-item>\n    </a-timeline>\n    <a-button type=\"primary\" style=\"margin-top: 16px\" @click=\"handleClick\">Toggle Reverse</a-button>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst reverse = ref<boolean>(false);\n\nconst handleClick = () => {\n  reverse.value = !reverse.value;\n};\n</script>\n"
  },
  {
    "path": "components/timeline/demo/right.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 右侧时间轴点\n  en-US: Right alternate\n---\n\n## zh-CN\n\n时间轴点可以在内容的右边。\n\n## en-US\n\nRight alternate timeline.\n\n</docs>\n\n<template>\n  <a-timeline mode=\"right\">\n    <a-timeline-item>Create a services site 2015-09-01</a-timeline-item>\n    <a-timeline-item>Solve initial network problems 2015-09-01</a-timeline-item>\n    <a-timeline-item>\n      <template #dot><clock-circle-outlined style=\"font-size: 16px\" /></template>\n      Technical testing 2015-09-01\n    </a-timeline-item>\n    <a-timeline-item>Network problems being solved 2015-09-01</a-timeline-item>\n  </a-timeline>\n</template>\n<script lang=\"ts\" setup>\nimport { ClockCircleOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/timeline/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Timeline\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*FkTySqNt3sYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*yIl9S4hAIBcAAAAAAAAAAAAADrJ8AQ/original\n---\n\nVertical display timeline.\n\n## When To Use\n\n- When a series of information needs to be ordered by time (ascending or descending).\n- When you need a timeline to make a visual connection.\n\n## API\n\n```html\n<a-timeline>\n  <a-timeline-item>step1 2015-09-01</a-timeline-item>\n  <a-timeline-item>step2 2015-09-01</a-timeline-item>\n  <a-timeline-item>step3 2015-09-01</a-timeline-item>\n  <a-timeline-item>step4 2015-09-01</a-timeline-item>\n</a-timeline>\n```\n\n### Timeline\n\nTimeline\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| mode | By sending `alternate` the timeline will distribute the nodes to the left and right. | `left` \\| `alternate` \\| `right` | `left` |\n| pending | Set the last ghost node's existence or its content | boolean\\|string\\|slot | `false` |\n| pendingDot | Set the dot of the last ghost node when pending is true | string\\|slot | `<LoadingOutlined />` |\n| reverse | reverse nodes or not | boolean | false |\n\n### Timeline.Item\n\nNode of timeline\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| color | Set the circle's color to `blue`, `red`, `green` or other custom colors | string | `blue` |  |\n| dot | Customize timeline dot | string\\|slot | - |  |\n| label | Set the label | string \\| slot | - | 3.0 |\n| position | Customize node position | `left` \\| `right` | - |  |\n"
  },
  {
    "path": "components/timeline/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport Timeline, { timelineProps } from './Timeline';\nimport TimelineItem, { timelineItemProps } from './TimelineItem';\n\nexport type { TimelineProps } from './Timeline';\nexport type { TimelineItemProps } from './TimelineItem';\n\nTimeline.Item = TimelineItem;\n\n/* istanbul ignore next */\nTimeline.install = function (app: App) {\n  app.component(Timeline.name, Timeline);\n  app.component(TimelineItem.name, TimelineItem);\n  return app;\n};\nexport { TimelineItem, timelineProps, timelineItemProps };\nexport default Timeline as typeof Timeline &\n  Plugin & {\n    readonly Item: typeof TimelineItem;\n  };\n"
  },
  {
    "path": "components/timeline/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Timeline\nsubtitle: 时间轴\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*FkTySqNt3sYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*yIl9S4hAIBcAAAAAAAAAAAAADrJ8AQ/original\n---\n\n垂直展示的时间流信息。\n\n## 何时使用\n\n- 当有一系列信息需按时间排列时，可正序和倒序。\n- 需要有一条时间轴进行视觉上的串联时。\n\n## API\n\n```html\n<a-timeline>\n  <a-timeline-item>创建服务现场 2015-09-01</a-timeline-item>\n  <a-timeline-item>初步排除网络异常 2015-09-01</a-timeline-item>\n  <a-timeline-item>技术测试异常 2015-09-01</a-timeline-item>\n  <a-timeline-item>网络异常正在修复 2015-09-01</a-timeline-item>\n</a-timeline>\n```\n\n### Timeline\n\n时间轴。\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| mode | 通过设置 `mode` 可以改变时间轴和内容的相对位置 | `left` \\| `alternate` \\| `right` |  |\n| pending | 指定最后一个幽灵节点是否存在或内容 | boolean\\|string\\|slot | false |\n| pendingDot | 当最后一个幽灵节点存在時，指定其时间图点 | string\\|slot | `<LoadingOutlined />` |\n| reverse | 节点排序 | boolean | false |\n\n### Timeline.Item\n\n时间轴的每一个节点。\n\n| 参数     | 说明                                            | 类型              | 默认值 | 版本 |\n| -------- | ----------------------------------------------- | ----------------- | ------ | ---- |\n| color    | 指定圆圈颜色 `blue, red, green`，或自定义的色值 | string            | blue   |      |\n| dot      | 自定义时间轴点                                  | string\\|slot      | -      |      |\n| label    | 设置标签                                        | string \\| slot    | -      | 3.0  |\n| position | 自定义节点位置                                  | `left` \\| `right` | -      |      |\n"
  },
  {
    "path": "components/timeline/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n\nexport interface ComponentToken {}\n\ninterface TimelineToken extends FullToken<'Timeline'> {\n  timeLineItemPaddingBottom: number;\n  timeLineItemHeadSize: number;\n  timeLineItemCustomHeadPaddingVertical: number;\n  timeLineItemTailWidth: number;\n  timeLinePaddingInlineEnd: number;\n  timeLineHeadBorderWidth: number;\n}\n\nconst genTimelineStyle: GenerateStyle<TimelineToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      margin: 0,\n      padding: 0,\n      listStyle: 'none',\n\n      [`${componentCls}-item`]: {\n        position: 'relative',\n        margin: 0,\n        paddingBottom: token.timeLineItemPaddingBottom,\n        fontSize: token.fontSize,\n        listStyle: 'none',\n\n        '&-tail': {\n          position: 'absolute',\n          insetBlockStart: token.timeLineItemHeadSize,\n          insetInlineStart: (token.timeLineItemHeadSize - token.timeLineItemTailWidth) / 2,\n          height: `calc(100% - ${token.timeLineItemHeadSize}px)`,\n          borderInlineStart: `${token.timeLineItemTailWidth}px ${token.lineType} ${token.colorSplit}`,\n        },\n\n        '&-pending': {\n          [`${componentCls}-item-head`]: {\n            fontSize: token.fontSizeSM,\n            backgroundColor: 'transparent',\n          },\n\n          [`${componentCls}-item-tail`]: {\n            display: 'none',\n          },\n        },\n\n        '&-head': {\n          position: 'absolute',\n          width: token.timeLineItemHeadSize,\n          height: token.timeLineItemHeadSize,\n          backgroundColor: token.colorBgContainer,\n          border: `${token.timeLineHeadBorderWidth}px ${token.lineType} transparent`,\n          borderRadius: '50%',\n\n          '&-blue': {\n            color: token.colorPrimary,\n            borderColor: token.colorPrimary,\n          },\n\n          '&-red': {\n            color: token.colorError,\n            borderColor: token.colorError,\n          },\n\n          '&-green': {\n            color: token.colorSuccess,\n            borderColor: token.colorSuccess,\n          },\n\n          '&-gray': {\n            color: token.colorTextDisabled,\n            borderColor: token.colorTextDisabled,\n          },\n        },\n\n        '&-head-custom': {\n          position: 'absolute',\n          insetBlockStart: token.timeLineItemHeadSize / 2,\n          insetInlineStart: token.timeLineItemHeadSize / 2,\n          width: 'auto',\n          height: 'auto',\n          marginBlockStart: 0,\n          paddingBlock: token.timeLineItemCustomHeadPaddingVertical,\n          lineHeight: 1,\n          textAlign: 'center',\n          border: 0,\n          borderRadius: 0,\n          transform: `translate(-50%, -50%)`,\n        },\n\n        '&-content': {\n          position: 'relative',\n          insetBlockStart: -(token.fontSize * token.lineHeight - token.fontSize) + token.lineWidth,\n          marginInlineStart: token.margin + token.timeLineItemHeadSize,\n          marginInlineEnd: 0,\n          marginBlockStart: 0,\n          marginBlockEnd: 0,\n          wordBreak: 'break-word',\n        },\n\n        '&-last': {\n          [`> ${componentCls}-item-tail`]: {\n            display: 'none',\n          },\n\n          [`> ${componentCls}-item-content`]: {\n            minHeight: token.controlHeightLG * 1.2,\n          },\n        },\n      },\n\n      [`&${componentCls}-alternate,\n        &${componentCls}-right,\n        &${componentCls}-label`]: {\n        [`${componentCls}-item`]: {\n          '&-tail, &-head, &-head-custom': {\n            insetInlineStart: '50%',\n          },\n\n          '&-head': {\n            marginInlineStart: `-${token.marginXXS}px`,\n\n            '&-custom': {\n              marginInlineStart: token.timeLineItemTailWidth / 2,\n            },\n          },\n\n          '&-left': {\n            [`${componentCls}-item-content`]: {\n              insetInlineStart: `calc(50% - ${token.marginXXS}px)`,\n              width: `calc(50% - ${token.marginSM}px)`,\n              textAlign: 'start',\n            },\n          },\n\n          '&-right': {\n            [`${componentCls}-item-content`]: {\n              width: `calc(50% - ${token.marginSM}px)`,\n              margin: 0,\n              textAlign: 'end',\n            },\n          },\n        },\n      },\n\n      [`&${componentCls}-right`]: {\n        [`${componentCls}-item-right`]: {\n          [`${componentCls}-item-tail,\n            ${componentCls}-item-head,\n            ${componentCls}-item-head-custom`]: {\n            insetInlineStart: `calc(100% - ${\n              (token.timeLineItemHeadSize + token.timeLineItemTailWidth) / 2\n            }px)`,\n          },\n\n          [`${componentCls}-item-content`]: {\n            width: `calc(100% - ${token.timeLineItemHeadSize + token.marginXS}px)`,\n          },\n        },\n      },\n\n      [`&${componentCls}-pending\n        ${componentCls}-item-last\n        ${componentCls}-item-tail`]: {\n        display: 'block',\n        height: `calc(100% - ${token.margin}px)`,\n        borderInlineStart: `${token.timeLineItemTailWidth}px dotted ${token.colorSplit}`,\n      },\n\n      [`&${componentCls}-reverse\n        ${componentCls}-item-last\n        ${componentCls}-item-tail`]: {\n        display: 'none',\n      },\n\n      [`&${componentCls}-reverse ${componentCls}-item-pending`]: {\n        [`${componentCls}-item-tail`]: {\n          insetBlockStart: token.margin,\n          display: 'block',\n          height: `calc(100% - ${token.margin}px)`,\n          borderInlineStart: `${token.timeLineItemTailWidth}px dotted ${token.colorSplit}`,\n        },\n\n        [`${componentCls}-item-content`]: {\n          minHeight: token.controlHeightLG * 1.2,\n        },\n      },\n\n      [`&${componentCls}-label`]: {\n        [`${componentCls}-item-label`]: {\n          position: 'absolute',\n          insetBlockStart:\n            -(token.fontSize * token.lineHeight - token.fontSize) + token.timeLineItemTailWidth,\n          width: `calc(50% - ${token.marginSM}px)`,\n          textAlign: 'end',\n        },\n\n        [`${componentCls}-item-right`]: {\n          [`${componentCls}-item-label`]: {\n            insetInlineStart: `calc(50% + ${token.marginSM}px)`,\n            width: `calc(50% - ${token.marginSM}px)`,\n            textAlign: 'start',\n          },\n        },\n      },\n\n      // ====================== RTL =======================\n      '&-rtl': {\n        direction: 'rtl',\n\n        [`${componentCls}-item-head-custom`]: {\n          transform: `translate(50%, -50%)`,\n        },\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Timeline', token => {\n  const timeLineToken = mergeToken<TimelineToken>(token, {\n    timeLineItemPaddingBottom: token.padding * 1.25,\n    timeLineItemHeadSize: 10,\n    timeLineItemCustomHeadPaddingVertical: token.paddingXXS,\n    timeLinePaddingInlineEnd: 2,\n    timeLineItemTailWidth: token.lineWidthBold,\n    timeLineHeadBorderWidth: token.wireframe ? token.lineWidthBold : token.lineWidth * 3,\n  });\n\n  return [genTimelineStyle(timeLineToken)];\n});\n"
  },
  {
    "path": "components/tooltip/Tooltip.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { computed, watch, defineComponent, ref } from 'vue';\nimport VcTooltip from '../vc-tooltip';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport warning from '../_util/warning';\nimport {\n  getStyle,\n  filterEmpty,\n  isValidElement,\n  initDefaultProps,\n  isFragment,\n} from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nexport type { TriggerType, TooltipPlacement } from './abstractTooltipProps';\nimport abstractTooltipProps from './abstractTooltipProps';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport getPlacements from '../_util/placements';\nimport firstNotUndefined from '../_util/firstNotUndefined';\nimport raf from '../_util/raf';\n\nimport { parseColor } from './util';\nexport type { AdjustOverflow, PlacementsConfig } from '../_util/placements';\nimport useStyle from './style';\nimport { getTransitionName } from '../_util/transition';\nimport type { CustomSlotsType } from '../_util/type';\n\n// https://github.com/react-component/tooltip\n// https://github.com/yiminghe/dom-align\nexport interface TooltipAlignConfig {\n  points?: [string, string];\n  offset?: [number | string, number | string];\n  targetOffset?: [number | string, number | string];\n  overflow?: { adjustX: boolean; adjustY: boolean };\n  useCssRight?: boolean;\n  useCssBottom?: boolean;\n  useCssTransform?: boolean;\n}\nconst splitObject = <T extends CSSProperties>(\n  obj: T,\n  keys: (keyof T)[],\n): Record<'picked' | 'omitted', T> => {\n  const picked: T = {} as T;\n  const omitted: T = { ...obj };\n  keys.forEach(key => {\n    if (obj && key in obj) {\n      picked[key] = obj[key];\n      delete omitted[key];\n    }\n  });\n  return { picked, omitted };\n};\n\nexport const tooltipProps = () => ({\n  ...abstractTooltipProps(),\n  title: PropTypes.any,\n});\n\nexport const tooltipDefaultProps = () => ({\n  trigger: 'hover',\n  align: {},\n  placement: 'top',\n  mouseEnterDelay: 0.1,\n  mouseLeaveDelay: 0.1,\n  arrowPointAtCenter: false,\n  autoAdjustOverflow: true,\n});\n\nexport type TooltipProps = Partial<ExtractPropTypes<ReturnType<typeof tooltipProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATooltip',\n  inheritAttrs: false,\n  props: initDefaultProps(tooltipProps(), {\n    trigger: 'hover',\n    align: {},\n    placement: 'top',\n    mouseEnterDelay: 0.1,\n    mouseLeaveDelay: 0.1,\n    arrowPointAtCenter: false,\n    autoAdjustOverflow: true,\n  }),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    default?: any;\n  }>,\n  // emits: ['update:visible', 'visibleChange'],\n  setup(props, { slots, emit, attrs, expose }) {\n    if (process.env.NODE_ENV !== 'production') {\n      [\n        ['visible', 'open'],\n        ['onVisibleChange', 'onOpenChange'],\n      ].forEach(([deprecatedName, newName]) => {\n        warning(\n          props[deprecatedName] === undefined,\n          'Tooltip',\n          `\\`${deprecatedName}\\` is deprecated, please use \\`${newName}\\` instead.`,\n        );\n      });\n    }\n\n    const { prefixCls, getPopupContainer, direction, rootPrefixCls } = useConfigInject(\n      'tooltip',\n      props,\n    );\n    const mergedOpen = computed(() => props.open ?? props.visible);\n    const innerOpen = ref(firstNotUndefined([props.open, props.visible]));\n\n    const tooltip = ref();\n\n    let rafId: any;\n    watch(mergedOpen, val => {\n      raf.cancel(rafId);\n      rafId = raf(() => {\n        innerOpen.value = !!val;\n      });\n    });\n    const isNoTitle = () => {\n      const title = props.title ?? slots.title;\n      return !title && title !== 0;\n    };\n\n    const handleVisibleChange = (val: boolean) => {\n      const noTitle = isNoTitle();\n      if (mergedOpen.value === undefined) {\n        innerOpen.value = noTitle ? false : val;\n      }\n      if (!noTitle) {\n        emit('update:visible', val);\n        emit('visibleChange', val);\n        emit('update:open', val);\n        emit('openChange', val);\n      }\n    };\n\n    const getPopupDomNode = () => {\n      return tooltip.value.getPopupDomNode();\n    };\n\n    expose({\n      getPopupDomNode,\n      open: innerOpen,\n      forcePopupAlign: () => tooltip.value?.forcePopupAlign(),\n    });\n\n    const tooltipPlacements = computed(() => {\n      const { builtinPlacements, autoAdjustOverflow, arrow, arrowPointAtCenter } = props;\n      let mergedArrowPointAtCenter = arrowPointAtCenter;\n\n      if (typeof arrow === 'object') {\n        mergedArrowPointAtCenter = arrow.pointAtCenter ?? arrowPointAtCenter;\n      }\n      return (\n        builtinPlacements ||\n        getPlacements({\n          arrowPointAtCenter: mergedArrowPointAtCenter,\n          autoAdjustOverflow,\n        })\n      );\n    });\n    const isTrueProps = (val: boolean | '') => {\n      return val || val === '';\n    };\n    const getDisabledCompatibleChildren = (ele: any) => {\n      const elementType = ele.type as any;\n      if (typeof elementType === 'object' && ele.props) {\n        if (\n          ((elementType.__ANT_BUTTON === true || elementType === 'button') &&\n            isTrueProps(ele.props.disabled)) ||\n          (elementType.__ANT_SWITCH === true &&\n            (isTrueProps(ele.props.disabled) || isTrueProps(ele.props.loading))) ||\n          (elementType.__ANT_RADIO === true && isTrueProps(ele.props.disabled))\n        ) {\n          // Pick some layout related style properties up to span\n          // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n          const { picked, omitted } = splitObject(getStyle(ele), [\n            'position',\n            'left',\n            'right',\n            'top',\n            'bottom',\n            'float',\n            'display',\n            'zIndex',\n          ]);\n          const spanStyle: CSSProperties = {\n            display: 'inline-block', // default inline-block is important\n            ...picked,\n            cursor: 'not-allowed',\n            lineHeight: 1, // use the true height of child nodes\n            width: ele.props && ele.props.block ? '100%' : undefined,\n          };\n          const buttonStyle: CSSProperties = {\n            ...omitted,\n            pointerEvents: 'none',\n          };\n          const child = cloneElement(\n            ele,\n            {\n              style: buttonStyle,\n            },\n            true,\n          );\n          return (\n            <span style={spanStyle} class={`${prefixCls.value}-disabled-compatible-wrapper`}>\n              {child}\n            </span>\n          );\n        }\n      }\n      return ele;\n    };\n\n    const getOverlay = () => {\n      return props.title ?? slots.title?.();\n    };\n\n    const onPopupAlign = (domNode: HTMLElement, align: any) => {\n      const placements = tooltipPlacements.value;\n      // 当前返回的位置\n      const placement = Object.keys(placements).find(\n        key =>\n          placements[key].points[0] === align.points?.[0] &&\n          placements[key].points[1] === align.points?.[1],\n      );\n      if (placement) {\n        // 根据当前坐标设置动画点\n        const rect = domNode.getBoundingClientRect();\n        const transformOrigin = {\n          top: '50%',\n          left: '50%',\n        };\n        if (placement.indexOf('top') >= 0 || placement.indexOf('Bottom') >= 0) {\n          transformOrigin.top = `${rect.height - align.offset[1]}px`;\n        } else if (placement.indexOf('Top') >= 0 || placement.indexOf('bottom') >= 0) {\n          transformOrigin.top = `${-align.offset[1]}px`;\n        }\n        if (placement.indexOf('left') >= 0 || placement.indexOf('Right') >= 0) {\n          transformOrigin.left = `${rect.width - align.offset[0]}px`;\n        } else if (placement.indexOf('right') >= 0 || placement.indexOf('Left') >= 0) {\n          transformOrigin.left = `${-align.offset[0]}px`;\n        }\n        domNode.style.transformOrigin = `${transformOrigin.left} ${transformOrigin.top}`;\n      }\n    };\n    const colorInfo = computed(() => parseColor(prefixCls.value, props.color));\n    const injectFromPopover = computed(() => (attrs as any)['data-popover-inject']);\n    const [wrapSSR, hashId] = useStyle(\n      prefixCls,\n      computed(() => !injectFromPopover.value),\n    );\n    return () => {\n      const { openClassName, overlayClassName, overlayStyle, overlayInnerStyle } = props;\n      let children = filterEmpty(slots.default?.()) ?? null;\n      children = children.length === 1 ? children[0] : children;\n\n      let tempVisible = innerOpen.value;\n      // Hide tooltip when there is no title\n      if (mergedOpen.value === undefined && isNoTitle()) {\n        tempVisible = false;\n      }\n      if (!children) {\n        return null;\n      }\n      const child = getDisabledCompatibleChildren(\n        isValidElement(children) && !isFragment(children) ? children : <span>{children}</span>,\n      );\n      const childCls = classNames({\n        [openClassName || `${prefixCls.value}-open`]: true,\n        [child.props && child.props.class]: child.props && child.props.class,\n      });\n      const customOverlayClassName = classNames(\n        overlayClassName,\n        {\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n\n        colorInfo.value.className,\n        hashId.value,\n      );\n      const formattedOverlayInnerStyle = {\n        ...colorInfo.value.overlayStyle,\n        ...overlayInnerStyle,\n      };\n      const arrowContentStyle = colorInfo.value.arrowStyle;\n      const vcTooltipProps = {\n        ...attrs,\n        ...(props as TooltipProps),\n        prefixCls: prefixCls.value,\n        arrow: !!props.arrow,\n        getPopupContainer: getPopupContainer?.value,\n        builtinPlacements: tooltipPlacements.value,\n        visible: tempVisible,\n        ref: tooltip,\n        overlayClassName: customOverlayClassName,\n        overlayStyle: { ...arrowContentStyle, ...overlayStyle },\n        overlayInnerStyle: formattedOverlayInnerStyle,\n        onVisibleChange: handleVisibleChange,\n        onPopupAlign,\n        transitionName: getTransitionName(\n          rootPrefixCls.value,\n          'zoom-big-fast',\n          props.transitionName,\n        ),\n      };\n      return wrapSSR(\n        <VcTooltip\n          {...vcTooltipProps}\n          v-slots={{\n            arrowContent: () => <span class={`${prefixCls.value}-arrow-content`}></span>,\n            overlay: getOverlay,\n          }}\n        >\n          {innerOpen.value ? cloneElement(child, { class: childCls }) : child}\n        </VcTooltip>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tooltip/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tooltip/demo/arrow-point-at-center.vue correctly 1`] = `\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Align edge / 边缘对齐</span>\n    </button>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Arrow points to center / 箭头指向中心</span>\n    </button>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tooltip/demo/auto-adjust-overflow.vue correctly 1`] = `\n<div style=\"overflow: hidden; position: relative; padding: 24px; border: 1px solid #e9e9e9;\">\n  <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Adjust automatically / 自动调整</span>\n  </button><br>\n  <!----><button style=\"margin-top: 10px;\" class=\"ant-btn ant-btn-default\" type=\"button\">\n    <!----><span>Ingore / 不处理</span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/tooltip/demo/basic.vue correctly 1`] = `<span> Tooltip will show when mouse enter. </span>`;\n\nexports[`renders ./components/tooltip/demo/color.vue correctly 1`] = `\n<div id=\"components-a-tooltip-demo-color\">\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Presets</span></div>\n  <div>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>pink</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>red</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>yellow</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>orange</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>cyan</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>green</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>blue</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>purple</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>geekblue</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>magenta</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>volcano</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>gold</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>lime</span>\n    </button>\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-left\" role=\"separator\"><span class=\"ant-divider-inner-text\">Custom</span></div>\n  <div>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>#f50</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>#2db7f5</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>#87d068</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>#108ee9</span>\n    </button>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tooltip/demo/placement.vue correctly 1`] = `\n<div id=\"components-a-tooltip-demo-placement\">\n  <div style=\"margin-left: 70px; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Top</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>TR</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; float: left;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Left</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>LB</span>\n    </button>\n  </div>\n  <div style=\"width: 70px; margin-left: 304px;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RT</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Right</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>RB</span>\n    </button>\n  </div>\n  <div style=\"margin-left: 70px; clear: both; white-space: nowrap;\">\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BL</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Bottom</span>\n    </button>\n    <!----><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>BR</span>\n    </button>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/tooltip/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tooltip');\n"
  },
  {
    "path": "components/tooltip/__tests__/tooltip.test.js",
    "content": "import { asyncExpect } from '../../../tests/utils';\nimport { mount } from '@vue/test-utils';\nimport Tooltip from '..';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('Tooltip', () => {\n  mountTest(Tooltip);\n  it('check `onOpenChange` arguments', async () => {\n    const onOpenChange = jest.fn();\n    const wrapper = mount(\n      {\n        props: ['title', 'open'],\n        render() {\n          const props = {\n            title: this.title || '',\n            mouseEnterDelay: 0,\n            mouseLeaveDelay: 0,\n            onOpenChange,\n          };\n          if (this.open !== undefined) {\n            props.open = this.open;\n          }\n          return (\n            <Tooltip ref=\"tooltip\" {...props}>\n              <div id=\"hello\">Hello world!</div>\n            </Tooltip>\n          );\n        },\n      },\n      { sync: false, attachTo: 'body' },\n    );\n\n    let div = null;\n    let lastCount = null;\n    await asyncExpect(() => {\n      // `title` is empty.\n      div = document.getElementById('hello');\n      div.dispatchEvent(new MouseEvent('mouseenter'));\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange).not.toHaveBeenCalled();\n      expect(wrapper.vm.$refs.tooltip.open).toBe(false);\n    });\n    await asyncExpect(() => {\n      div.dispatchEvent(new MouseEvent('mouseleave'));\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange).not.toHaveBeenCalled();\n      expect(wrapper.vm.$refs.tooltip.open).toBe(false);\n    });\n    await asyncExpect(() => {\n      // update `title` value.\n      wrapper.setProps({ title: 'Have a nice day!' });\n    });\n    await asyncExpect(() => {\n      document.getElementById('hello').dispatchEvent(new MouseEvent('mouseenter'));\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange).toHaveBeenLastCalledWith(true);\n      expect(wrapper.vm.$refs.tooltip.open).toBe(true);\n    }, 0);\n    await asyncExpect(() => {\n      document.getElementById('hello').dispatchEvent(new MouseEvent('mouseleave'));\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange).toHaveBeenLastCalledWith(false);\n      expect(wrapper.vm.$refs.tooltip.open).toBe(false);\n    });\n    await asyncExpect(() => {\n      // add `open` props.\n      wrapper.setProps({ open: false });\n    });\n    await asyncExpect(() => {\n      document.getElementById('hello').dispatchEvent(new MouseEvent('mouseenter'));\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange).toHaveBeenLastCalledWith(true);\n      expect(wrapper.vm.$refs.tooltip.open).toBe(false);\n    });\n    await asyncExpect(() => {\n      // always trigger onOpenChange\n      document.getElementById('hello').dispatchEvent(new MouseEvent('mouseleave'));\n      lastCount = onOpenChange.mock.calls.length;\n    });\n    await asyncExpect(() => {\n      expect(onOpenChange.mock.calls.length).toBe(lastCount); // no change with lastCount\n      expect(wrapper.vm.$refs.tooltip.open).toBe(false);\n    });\n  });\n});\n"
  },
  {
    "path": "components/tooltip/abstractTooltipProps.ts",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport type { AlignType, BuildInPlacements } from '../vc-trigger/interface';\nimport type { AdjustOverflow } from '../_util/placements';\nexport type TriggerType = 'hover' | 'focus' | 'click' | 'contextmenu';\nimport type { PresetColorType } from '../_util/colors';\nimport type { LiteralUnion } from '../_util/type';\nimport { objectType } from '../_util/type';\nexport type TooltipPlacement =\n  | 'top'\n  | 'left'\n  | 'right'\n  | 'bottom'\n  | 'topLeft'\n  | 'topRight'\n  | 'bottomLeft'\n  | 'bottomRight'\n  | 'leftTop'\n  | 'leftBottom'\n  | 'rightTop'\n  | 'rightBottom';\n\nexport default () => ({\n  trigger: [String, Array] as PropType<TriggerType | TriggerType[]>,\n  open: { type: Boolean, default: undefined },\n  /** @deprecated Please use `open` instead. */\n  visible: { type: Boolean, default: undefined },\n  placement: String as PropType<TooltipPlacement>,\n  color: String as PropType<LiteralUnion<PresetColorType>>,\n  transitionName: String,\n  overlayStyle: objectType<CSSProperties>(),\n  overlayInnerStyle: objectType<CSSProperties>(),\n  overlayClassName: String,\n  openClassName: String,\n  prefixCls: String,\n  mouseEnterDelay: Number,\n  mouseLeaveDelay: Number,\n  getPopupContainer: Function as PropType<(triggerNode: HTMLElement) => HTMLElement>,\n  /**@deprecated Please use `arrow={{ pointAtCenter: true }}` instead. */\n  arrowPointAtCenter: { type: Boolean, default: undefined },\n  arrow: {\n    type: [Boolean, Object] as PropType<boolean | { pointAtCenter?: boolean }>,\n    default: true as boolean | { pointAtCenter?: boolean },\n  },\n  autoAdjustOverflow: {\n    type: [Boolean, Object] as PropType<boolean | AdjustOverflow>,\n    default: undefined as boolean | AdjustOverflow,\n  },\n  destroyTooltipOnHide: { type: Boolean, default: undefined },\n  align: objectType<AlignType>(),\n  builtinPlacements: objectType<BuildInPlacements>(),\n  children: Array,\n  /** @deprecated Please use `onOpenChange` instead. */\n  onVisibleChange: Function as PropType<(vis: boolean) => void>,\n  /** @deprecated Please use `onUpdate:open` instead. */\n  'onUpdate:visible': Function as PropType<(vis: boolean) => void>,\n  onOpenChange: Function as PropType<(vis: boolean) => void>,\n  'onUpdate:open': Function as PropType<(vis: boolean) => void>,\n});\n"
  },
  {
    "path": "components/tooltip/demo/arrow-point-at-center.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 箭头指向\n  en-US: Arrow pointing at the center\n---\n\n## zh-CN\n\n设置了 `arrowPointAtCenter` 后，箭头将指向目标元素的中心。\n\n## en-US\n\nBy specifying `arrowPointAtCenter` prop, the arrow will point to the center of the target element.\n\n</docs>\n\n<template>\n  <a-space>\n    <a-tooltip placement=\"topLeft\" title=\"Prompt Text\">\n      <a-button>Align edge / 边缘对齐</a-button>\n    </a-tooltip>\n    <a-tooltip placement=\"topLeft\" title=\"Prompt Text\" arrow-point-at-center>\n      <a-button>Arrow points to center / 箭头指向中心</a-button>\n    </a-tooltip>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/tooltip/demo/arrow.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 箭头展示\n  en-US: Arrow show\n---\n\n## zh-CN\n支持显示、隐藏以及将箭头保持居中定位。\n\n## en-US\n\nSupport show, hide or keep arrow in the center.\n</docs>\n\n<template>\n  <div id=\"components-a-tooltip-demo-arrow\">\n    <div style=\"margin-bottom: 24px\">\n      <a-segmented v-model:value=\"arrow\" :options=\"options\" />\n    </div>\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, whiteSpace: 'nowrap' }\">\n      <a-tooltip placement=\"topLeft\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>TL</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"top\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Top</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"topRight\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>TR</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, float: 'left' }\">\n      <a-tooltip placement=\"leftTop\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>LT</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"left\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Left</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"leftBottom\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>LB</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, marginLeft: `${buttonWidth * 4 + 24}px` }\">\n      <a-tooltip placement=\"rightTop\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>RT</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"right\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Right</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"rightBottom\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>RB</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, clear: 'both', whiteSpace: 'nowrap' }\">\n      <a-tooltip placement=\"bottomLeft\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>BL</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"bottom\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Bottom</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"bottomRight\" :arrow=\"mergedArrow\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>BR</a-button>\n      </a-tooltip>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, computed } from 'vue';\nconst buttonWidth = 70;\n\nconst arrow = ref<string>('show');\n\nconst options = [\n  {\n    label: 'Show',\n    value: 'show',\n  },\n  {\n    label: 'Hide',\n    value: 'hide',\n  },\n  {\n    label: 'Center',\n    value: 'center',\n  },\n];\nconst mergedArrow = computed(() => {\n  switch (arrow.value) {\n    case 'show':\n      return true;\n    case 'hide':\n      return false;\n    case 'center':\n    default:\n      return { pointAtCenter: true };\n  }\n});\n</script>\n<style scoped>\n:deep(#components-a-tooltip-demo-arrow) .ant-btn {\n  width: 70px;\n  text-align: center;\n  padding: 0;\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/tooltip/demo/auto-adjust-overflow.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自动调整位置\n  en-US: Adjust placement automatically\n---\n\n## zh-CN\n\n气泡框不可见时自动调整位置。\n\n## en-US\n\nAdjust popup placement automatically when popup is invisible.\n\n</docs>\n\n<template>\n  <div :style=\"wrapStyles\">\n    <a-tooltip placement=\"left\" title=\"Prompt Text\" :get-popup-container=\"getPopupContainer\">\n      <a-button>Adjust automatically / 自动调整</a-button>\n    </a-tooltip>\n    <br />\n    <a-tooltip\n      placement=\"left\"\n      title=\"Prompt Text\"\n      :get-popup-container=\"getPopupContainer\"\n      :auto-adjust-overflow=\"false\"\n    >\n      <a-button style=\"margin-top: 10px\">Ingore / 不处理</a-button>\n    </a-tooltip>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nconst wrapStyles: Record<string, string> = {\n  overflow: 'hidden',\n  position: 'relative',\n  padding: '24px',\n  border: '1px solid #e9e9e9',\n};\nconst getPopupContainer = (trigger: HTMLElement) => {\n  return trigger.parentElement;\n};\n</script>\n"
  },
  {
    "path": "components/tooltip/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe simplest usage.\n\n</docs>\n\n<template>\n  <a-tooltip>\n    <template #title>prompt text</template>\n    Tooltip will show when mouse enter.\n  </a-tooltip>\n</template>\n"
  },
  {
    "path": "components/tooltip/demo/color.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 多彩文字提示\n  en-US: Colorful Tooltip\n---\n\n## zh-CN\n\n我们添加了多种预设色彩的文字提示样式，用作不同场景使用。\n\n## en-US\n\nWe preset a series of colorful Tooltip styles for use in different situations.\n\n</docs>\n\n<template>\n  <div id=\"components-a-tooltip-demo-color\">\n    <a-divider orientation=\"left\">Presets</a-divider>\n    <div>\n      <a-tooltip v-for=\"color in colors\" :key=\"color\" title=\"prompt text\" :color=\"color\">\n        <a-button>{{ color }}</a-button>\n      </a-tooltip>\n    </div>\n    <a-divider orientation=\"left\">Custom</a-divider>\n    <div>\n      <a-tooltip v-for=\"color in customColors\" :key=\"color\" title=\"prompt text\" :color=\"color\">\n        <a-button>{{ color }}</a-button>\n      </a-tooltip>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nconst colors = [\n  'pink',\n  'red',\n  'yellow',\n  'orange',\n  'cyan',\n  'green',\n  'blue',\n  'purple',\n  'geekblue',\n  'magenta',\n  'volcano',\n  'gold',\n  'lime',\n];\nconst customColors = ['#f50', '#2db7f5', '#87d068', '#108ee9'];\n</script>\n\n<style scoped>\n:deep(#components-a-tooltip-demo-color) .ant-btn {\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/tooltip/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <placement />\n    <arrow-point-at-center />\n    <auto-adjust-overflow />\n    <color />\n    <Arrow />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Placement from './placement.vue';\nimport arrowPointAtCenter from './arrow-point-at-center.vue';\nimport AutoAdjustOverflow from './auto-adjust-overflow.vue';\nimport Color from './color.vue';\nimport Arrow from './arrow.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Placement,\n    arrowPointAtCenter,\n    AutoAdjustOverflow,\n    Color,\n    Arrow,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tooltip/demo/placement.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 位置\n  en-US: Placement\n---\n\n## zh-CN\n\n位置有 12 个方向。\n\n## en-US\n\nThere are 12 placement options available.\n\n</docs>\n\n<template>\n  <div id=\"components-a-tooltip-demo-placement\">\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, whiteSpace: 'nowrap' }\">\n      <a-tooltip placement=\"topLeft\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>TL</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"top\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Top</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"topRight\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>TR</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, float: 'left' }\">\n      <a-tooltip placement=\"leftTop\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>LT</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"left\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Left</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"leftBottom\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>LB</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ width: `${buttonWidth}px`, marginLeft: `${buttonWidth * 4 + 24}px` }\">\n      <a-tooltip placement=\"rightTop\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>RT</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"right\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Right</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"rightBottom\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>RB</a-button>\n      </a-tooltip>\n    </div>\n    <div :style=\"{ marginLeft: `${buttonWidth}px`, clear: 'both', whiteSpace: 'nowrap' }\">\n      <a-tooltip placement=\"bottomLeft\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>BL</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"bottom\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>Bottom</a-button>\n      </a-tooltip>\n      <a-tooltip placement=\"bottomRight\">\n        <template #title>\n          <span>prompt text</span>\n        </template>\n        <a-button>BR</a-button>\n      </a-tooltip>\n    </div>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nconst buttonWidth = 70;\n</script>\n<style scoped>\n:deep(#components-a-tooltip-demo-placement) .ant-btn {\n  width: 70px;\n  text-align: center;\n  padding: 0;\n  margin-right: 8px;\n  margin-bottom: 8px;\n}\n</style>\n"
  },
  {
    "path": "components/tooltip/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Tooltip\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3u9eSZO_4c0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*gwrhTozoTC4AAAAAAAAAAAAADrJ8AQ/original\n---\n\nA simple text popup tip.\n\n## When To Use\n\n- The tip is shown on mouse enter, and is hidden on mouse leave. The Tooltip doesn't support complex text or operations.\n- To provide an explanation of a 'button/text/operation'. It's often used instead of the html 'title' attribute.\n\n## API\n\n| Property | Description                   | Type         | Default |\n| -------- | ----------------------------- | ------------ | ------- |\n| title    | The text shown in the tooltip | string\\|slot | -       |\n\n### Common API\n\nThe following APIs are shared by Tooltip, Popconfirm, Popover.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| align | this value will be merged into placement's config, please refer to the settings [dom-align](https://github.com/yiminghe/dom-align) | Object | - |  |\n| arrowPointAtCenter | Whether the arrow is pointed at the center of target | boolean | `false` |  |\n| arrow | Change arrow's visible state and change whether the arrow is pointed at the center of target. | boolean \\| { pointAtCenter: boolean} | `true` | 4.2.0 |\n| autoAdjustOverflow | Whether to adjust popup placement automatically when popup is off screen | boolean | `true` |  |\n| color | The background color | string | - |  |\n| destroyTooltipOnHide | Whether to destroy tooltip on hide | boolean | false |  |\n| getPopupContainer | The DOM container of the tip, the default behavior is to create a `div` element in `body`. | (triggerNode: HTMLElement) => HTMLElement | () => document.body |  |\n| mouseEnterDelay | Delay in seconds, before tooltip is shown on mouse enter | number | 0.1 |  |\n| mouseLeaveDelay | Delay in seconds, before tooltip is hidden on mouse leave | number | 0.1 |  |\n| overlayClassName | Class name of the tooltip card | string | - |  |\n| overlayStyle | Style of the tooltip card | object | - |  |\n| overlayInnerStyle | Style of the tooltip inner content | object | - | 4.0.0 |\n| placement | The position of the tooltip relative to the target, which can be one of `top` `left` `right` `bottom` `topLeft` `topRight` `bottomLeft` `bottomRight` `leftTop` `leftBottom` `rightTop` `rightBottom` | string | `top` |  |\n| trigger | Tooltip trigger mode | `hover` \\| `focus` \\| `click` \\| `contextmenu` | `hover` |  |\n| open(v-model) | Whether the floating tooltip card is open or not, Use `visible` under 4.0.0 | boolean | `false` | 4.0.0 |\n\n### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| openChange | Callback executed when visibility of the tooltip card is changed | (visible) => void | 4.0 |\n\n## Note\n\nPlease ensure that the child node of `Tooltip` accepts `mouseenter`, `mouseleave`, `focus`, `click` events.\n"
  },
  {
    "path": "components/tooltip/index.ts",
    "content": "import { withInstall } from '../_util/type';\nimport ToolTip, { tooltipProps } from './Tooltip';\n\nexport type {\n  TooltipProps,\n  AdjustOverflow,\n  PlacementsConfig,\n  TooltipAlignConfig,\n  TooltipPlacement,\n} from './Tooltip';\n\nexport { tooltipProps };\n\nexport default withInstall(ToolTip);\n"
  },
  {
    "path": "components/tooltip/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Tooltip\nsubtitle: 文字提示\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*3u9eSZO_4c0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*gwrhTozoTC4AAAAAAAAAAAAADrJ8AQ/original\n---\n\n警告提示，展现需要关注的信息。\n\n## 何时使用\n\n- 当某个页面需要向用户显示警告的信息时。\n- 非浮层的静态展现形式，始终展现，不会自动消失，用户可以点击关闭。\n\n## API\n\n| 参数  | 说明     | 类型         | 默认值 |\n| ----- | -------- | ------------ | ------ |\n| title | 提示文字 | string\\|slot | -      |\n\n### 共同的 API\n\n以下 API 为 Tooltip、Popconfirm、Popover 共享的 API。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| align | 该值将合并到 placement 的配置中，设置参考 [dom-align](https://github.com/yiminghe/dom-align) | Object | - |  |\n| arrowPointAtCenter | 箭头是否指向目标元素中心 | boolean | `false` |  |\n| arrow | 修改箭头的显示状态以及修改箭头是否指向目标元素中心 | boolean \\| { pointAtCenter: boolean} | `true` | 4.2.0 |\n| autoAdjustOverflow | 气泡被遮挡时自动调整位置 | boolean | `true` |  |\n| color | 背景颜色 | string | - |  |\n| destroyTooltipOnHide | 隐藏后是否销毁 tooltip | boolean | false |  |\n| getPopupContainer | 浮层渲染父节点，默认渲染到 body 上 | (triggerNode: HTMLElement) => HTMLElement | () => document.body |  |\n| mouseEnterDelay | 鼠标移入后延时多少才显示 Tooltip，单位：秒 | number | 0.1 |  |\n| mouseLeaveDelay | 鼠标移出后延时多少才隐藏 Tooltip，单位：秒 | number | 0.1 |  |\n| overlayClassName | 卡片类名 | string | - |  |\n| overlayStyle | 卡片样式 | object | - |  |\n| overlayInnerStyle | 卡片内容区域样式 | object | - | 4.0 |\n| placement | 气泡框位置，可选 `top` `left` `right` `bottom` `topLeft` `topRight` `bottomLeft` `bottomRight` `leftTop` `leftBottom` `rightTop` `rightBottom` | string | top |  |\n| trigger | 触发行为，可选 `hover/focus/click/contextmenu` | string | hover |  |\n| open(v-model) | 用于手动控制浮层显隐, 小于 4.0.0 使用 `visible` | boolean | false | 4.0 |\n\n### 事件\n\n| 事件名称   | 说明           | 回调参数          | 版本 |\n| ---------- | -------------- | ----------------- | ---- |\n| openChange | 显示隐藏的回调 | (visible) => void | 4.0  |\n\n## 注意\n\n请确保 `Tooltip` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。\n"
  },
  {
    "path": "components/tooltip/style/index.ts",
    "content": "import { initZoomMotion } from '../../style/motion';\nimport type { FullToken, GenerateStyle, UseComponentStyleResult } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genPresetColor, resetComponent } from '../../style';\nimport getArrowStyle, { MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\nimport { Ref } from 'vue';\n\nexport interface ComponentToken {\n  zIndexPopup: number;\n  colorBgDefault: string;\n}\n\ninterface TooltipToken extends FullToken<'Tooltip'> {\n  // default variables\n  tooltipMaxWidth: number;\n  tooltipColor: string;\n  tooltipBg: string;\n  tooltipBorderRadius: number;\n  tooltipRadiusOuter: number;\n}\n\nconst genTooltipStyle: GenerateStyle<TooltipToken> = token => {\n  const {\n    componentCls, // ant-tooltip\n    tooltipMaxWidth,\n    tooltipColor,\n    tooltipBg,\n    tooltipBorderRadius,\n    zIndexPopup,\n    controlHeight,\n    boxShadowSecondary,\n    paddingSM,\n    paddingXS,\n    tooltipRadiusOuter,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n        position: 'absolute',\n        zIndex: zIndexPopup,\n        display: 'block',\n        '&': [{ width: 'max-content' }, { width: 'intrinsic' }],\n        maxWidth: tooltipMaxWidth,\n        visibility: 'visible',\n        '&-hidden': {\n          display: 'none',\n        },\n\n        '--antd-arrow-background-color': tooltipBg,\n\n        // Wrapper for the tooltip content\n        [`${componentCls}-inner`]: {\n          minWidth: controlHeight,\n          minHeight: controlHeight,\n          padding: `${paddingSM / 2}px ${paddingXS}px`,\n          color: tooltipColor,\n          textAlign: 'start',\n          textDecoration: 'none',\n          wordWrap: 'break-word',\n          backgroundColor: tooltipBg,\n          borderRadius: tooltipBorderRadius,\n          boxShadow: boxShadowSecondary,\n        },\n\n        // Limit left and right placement radius\n        [[\n          `&-placement-left`,\n          `&-placement-leftTop`,\n          `&-placement-leftBottom`,\n          `&-placement-right`,\n          `&-placement-rightTop`,\n          `&-placement-rightBottom`,\n        ].join(',')]: {\n          [`${componentCls}-inner`]: {\n            borderRadius: Math.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS),\n          },\n        },\n\n        [`${componentCls}-content`]: {\n          position: 'relative',\n        },\n\n        // generator for preset color\n        ...genPresetColor(token, (colorKey, { darkColor }) => ({\n          [`&${componentCls}-${colorKey}`]: {\n            [`${componentCls}-inner`]: {\n              backgroundColor: darkColor,\n            },\n            [`${componentCls}-arrow`]: {\n              '--antd-arrow-background-color': darkColor,\n            },\n          },\n        })),\n\n        // RTL\n        '&-rtl': {\n          direction: 'rtl',\n        },\n      },\n    },\n\n    // Arrow Style\n    getArrowStyle<TooltipToken>(\n      mergeToken<TooltipToken>(token, {\n        borderRadiusOuter: tooltipRadiusOuter,\n      }),\n      {\n        colorBg: 'var(--antd-arrow-background-color)',\n        showArrowCls: '',\n        contentRadius: tooltipBorderRadius,\n        limitVerticalRadius: true,\n      },\n    ),\n\n    // Pure Render\n    {\n      [`${componentCls}-pure`]: {\n        position: 'relative',\n        maxWidth: 'none',\n      },\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default (prefixCls: Ref<string>, injectStyle: Ref<boolean>): UseComponentStyleResult => {\n  const useOriginHook = genComponentStyleHook(\n    'Tooltip',\n    token => {\n      // Popover use Tooltip as internal component. We do not need to handle this.\n      if (injectStyle?.value === false) {\n        return [];\n      }\n\n      const { borderRadius, colorTextLightSolid, colorBgDefault, borderRadiusOuter } = token;\n\n      const TooltipToken = mergeToken<TooltipToken>(token, {\n        // default variables\n        tooltipMaxWidth: 250,\n        tooltipColor: colorTextLightSolid,\n        tooltipBorderRadius: borderRadius,\n        tooltipBg: colorBgDefault,\n        tooltipRadiusOuter: borderRadiusOuter > 4 ? 4 : borderRadiusOuter,\n      });\n\n      return [genTooltipStyle(TooltipToken), initZoomMotion(token, 'zoom-big-fast')];\n    },\n    ({ zIndexPopupBase, colorBgSpotlight }) => ({\n      zIndexPopup: zIndexPopupBase + 70,\n      colorBgDefault: colorBgSpotlight,\n    }),\n  );\n\n  return useOriginHook(prefixCls);\n};\n"
  },
  {
    "path": "components/tooltip/util.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport classNames from '../_util/classNames';\nimport { isPresetColor } from '../_util/colors';\n\nexport function parseColor(prefixCls: string, color?: string) {\n  const isInternalColor = isPresetColor(color);\n\n  const className = classNames({\n    [`${prefixCls}-${color}`]: color && isInternalColor,\n  });\n\n  const overlayStyle: CSSProperties = {};\n  const arrowStyle: CSSProperties = {};\n\n  if (color && !isInternalColor) {\n    overlayStyle.background = color;\n    // @ts-ignore\n    arrowStyle['--antd-arrow-background-color'] = color;\n  }\n\n  return { className, overlayStyle, arrowStyle };\n}\n"
  },
  {
    "path": "components/tour/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tour/demo/basic.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Begin Tour</span>\n</button>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Upload</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Save</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tour/demo/indicator.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Begin Tour</span>\n</button>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Upload</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Save</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tour/demo/mask.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Begin Tour</span>\n</button>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Upload</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Save</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tour/demo/non-modal.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Begin Tour</span>\n</button>\n<div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n  <!---->\n</div>\n<div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span>Upload</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><button class=\"ant-btn ant-btn-primary\" type=\"button\">\n      <!----><span>Save</span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\"><button class=\"ant-btn ant-btn-default\" type=\"button\">\n      <!----><span role=\"img\" aria-label=\"ellipsis\" class=\"anticon anticon-ellipsis\"><svg focusable=\"false\" class=\"\" data-icon=\"ellipsis\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"></path></svg></span>\n    </button></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tour/demo/placement.vue correctly 1`] = `\n<button class=\"ant-btn ant-btn-primary\" type=\"button\">\n  <!----><span>Begin Tour</span>\n</button>\n`;\n"
  },
  {
    "path": "components/tour/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tour');\n"
  },
  {
    "path": "components/tour/__tests__/index.test.js",
    "content": "import Tour from '..';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { mount } from '@vue/test-utils';\n\ndescribe('Tour', () => {\n  mountTest(Tour);\n\n  it('The Tour should render successfully ', function () {\n    const wrapper = mount({\n      setup() {\n        return () => {\n          return <Tour class=\"Tour\" content=\"Ant Design\" />;\n        };\n      },\n    });\n    expect(wrapper.find('.Tour').exists()).toBe(true);\n  });\n});\n"
  },
  {
    "path": "components/tour/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n  \n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"handleOpen(true)\">Begin Tour</a-button>\n\n  <a-divider />\n\n  <a-space>\n    <a-button ref=\"ref1\">Upload</a-button>\n    <a-button ref=\"ref2\" type=\"primary\">Save</a-button>\n    <a-button ref=\"ref3\"><EllipsisOutlined /></a-button>\n  </a-space>\n\n  <a-tour v-model:current=\"current\" :open=\"open\" :steps=\"steps\" @close=\"handleOpen(false)\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, createVNode } from 'vue';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport type { TourProps } from 'ant-design-vue';\n\nconst open = ref<boolean>(false);\n\nconst ref1 = ref(null);\nconst ref2 = ref(null);\nconst ref3 = ref(null);\nconst current = ref(0);\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Upload File',\n    description: 'Put your files here.',\n    cover: createVNode('img', {\n      alt: 'tour.png',\n      src: 'https://user-images.githubusercontent.com/5378891/197385811-55df8480-7ff4-44bd-9d43-a7dade598d70.png',\n    }),\n    target: () => ref1.value && ref1.value.$el,\n  },\n  {\n    title: 'Save',\n    description: 'Save your changes.',\n    target: () => ref2.value && ref2.value.$el,\n  },\n  {\n    title: 'Other Actions',\n    description: 'Click to see other actions.',\n    target: () => ref3.value && ref3.value.$el,\n  },\n];\n\nconst handleOpen = (val: boolean): void => {\n  open.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/tour/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <non-modal />\n    <placement />\n    <Mask />\n    <indicator />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport NonModal from './non-modal.vue';\nimport Placement from './placement.vue';\nimport Mask from './mask.vue';\nimport Indicator from './indicator.vue';\n\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\n\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    NonModal,\n    Placement,\n    Mask,\n    Indicator,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tour/demo/indicator.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义指示器\n  en-US: custom indicator\n---\n\n## zh-CN\n\n自定义指示器。\n\n## en-US\n\nCustom indicator.\n\n  \n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"handleOpen(true)\">Begin Tour</a-button>\n\n  <a-divider />\n\n  <a-space>\n    <a-button ref=\"ref1\">Upload</a-button>\n    <a-button ref=\"ref2\" type=\"primary\">Save</a-button>\n    <a-button ref=\"ref3\"><EllipsisOutlined /></a-button>\n  </a-space>\n\n  <a-tour :open=\"open\" :steps=\"steps\" @close=\"handleOpen(false)\">\n    <template #indicatorsRender=\"{ current, total }\">\n      <span>{{ current + 1 }} / {{ total }}</span>\n    </template>\n  </a-tour>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport type { TourProps } from 'ant-design-vue';\n\nconst open = ref<boolean>(false);\n\nconst ref1 = ref(null);\nconst ref2 = ref(null);\nconst ref3 = ref(null);\n\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Upload File',\n    description: 'Put your files here.',\n    target: () => ref1.value && ref1.value.$el,\n  },\n  {\n    title: 'Save',\n    description: 'Save your changes.',\n    target: () => ref2.value && ref2.value.$el,\n  },\n  {\n    title: 'Other Actions',\n    description: 'Click to see other actions.',\n    target: () => ref3.value && ref3.value.$el,\n  },\n];\n\nconst handleOpen = (val: boolean): void => {\n  open.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/tour/demo/mask.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 自定义遮罩样式\n  en-US: custom mask style\n---\n\n## zh-CN\n\n自定义遮罩样式。\n\n## en-US\n\ncustom mask style.\n\n  \n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"handleOpen(true)\">Begin Tour</a-button>\n\n  <a-divider />\n\n  <a-space>\n    <a-button ref=\"ref1\">Upload</a-button>\n    <a-button ref=\"ref2\" type=\"primary\">Save</a-button>\n    <a-button ref=\"ref3\"><EllipsisOutlined /></a-button>\n  </a-space>\n\n  <a-tour\n    :open=\"open\"\n    :steps=\"steps\"\n    :mask=\"{\n      style: {\n        boxShadow: 'inset 0 0 15px #333',\n      },\n      color: 'rgba(80, 255, 255, .4)',\n    }\"\n    @close=\"handleOpen(false)\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, createVNode } from 'vue';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport type { TourProps } from 'ant-design-vue';\nconst open = ref<boolean>(false);\n\nconst ref1 = ref(null);\nconst ref2 = ref(null);\nconst ref3 = ref(null);\n\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Upload File',\n    description: 'Put your files here.',\n    cover: createVNode('img', {\n      alt: 'tour.png',\n      src: 'https://user-images.githubusercontent.com/5378891/197385811-55df8480-7ff4-44bd-9d43-a7dade598d70.png',\n    }),\n    target: () => ref1.value && ref1.value.$el,\n  },\n  {\n    title: 'Save',\n    description: 'Save your changes.',\n    target: () => ref2.value && ref2.value.$el,\n    mask: {\n      style: {\n        boxShadow: 'inset 0 0 15px #fff',\n      },\n      color: 'rgba(40, 0, 255, .4)',\n    },\n  },\n  {\n    title: 'Other Actions',\n    description: 'Click to see other actions.',\n    target: () => ref3.value && ref3.value.$el,\n    mask: false,\n  },\n];\n\nconst handleOpen = (val: boolean): void => {\n  open.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/tour/demo/non-modal.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 非模态\n  en-US: Non modal\n---\n\n## zh-CN\n\n使用 `mask={false}` 可以将引导变为非模态，同时为了强调引导本身，建议与 `type=\"primary\"` 组合使用。\n\n## en-US\n\nUse `mask={false}` to make Tour non-modal. At the meantime it is recommended to use with `type=\"primary\"` to emphasize the guide itself.\n  \n    \n</docs>\n\n<template>\n  <a-button type=\"primary\" @click=\"handleOpen(true)\">Begin Tour</a-button>\n\n  <a-divider />\n\n  <a-space>\n    <a-button ref=\"ref1\">Upload</a-button>\n    <a-button ref=\"ref2\" type=\"primary\">Save</a-button>\n    <a-button ref=\"ref3\"><EllipsisOutlined /></a-button>\n  </a-space>\n\n  <a-tour :open=\"open\" :mask=\"false\" type=\"primary\" :steps=\"steps\" @close=\"handleOpen(false)\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, createVNode } from 'vue';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport type { TourProps } from 'ant-design-vue';\nconst open = ref<boolean>(false);\n\nconst ref1 = ref(null);\nconst ref2 = ref(null);\nconst ref3 = ref(null);\n\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Upload File',\n    description: 'Put your files here.',\n    cover: createVNode('img', {\n      alt: 'tour.png',\n      src: 'https://user-images.githubusercontent.com/5378891/197385811-55df8480-7ff4-44bd-9d43-a7dade598d70.png',\n    }),\n    target: () => ref1.value && ref1.value.$el,\n  },\n  {\n    title: 'Save',\n    description: 'Save your changes.',\n    target: () => ref2.value && ref2.value.$el,\n  },\n  {\n    title: 'Other Actions',\n    description: 'Click to see other actions.',\n    target: () => ref3.value && ref3.value.$el,\n  },\n];\n\nconst handleOpen = (val: boolean): void => {\n  open.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/tour/demo/placement.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 位置\n  en-US: Placement\n---\n  \n## zh-CN\n\n改变引导相对于目标的位置，共有 12 种位置可供选择。当 `target={null}` 时引导将会展示在正中央。\n\n## en-US\n\nChange the placement of the guide relative to the target, there are 12 placements available. When `target={null}` the guide will show in the center.\n\n    \n</docs>\n\n<template>\n  <a-button ref=\"btnRef\" type=\"primary\" @click=\"handleOpen(true)\">Begin Tour</a-button>\n\n  <a-tour :open=\"open\" :steps=\"steps\" @close=\"handleOpen(false)\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TourProps } from 'ant-design-vue';\n\nconst open = ref<boolean>(false);\n\nconst btnRef = ref(null);\n\nconst steps: TourProps['steps'] = [\n  {\n    title: 'Center',\n    description: 'Displayed in the center of screen.',\n    target: null,\n  },\n  {\n    title: 'Right',\n    description: 'On the right of target.',\n    placement: 'right',\n    target: () => btnRef.value && btnRef.value.$el,\n  },\n  {\n    title: 'Top',\n    description: 'On the top of target.',\n    placement: 'top',\n    target: () => btnRef.value && btnRef.value.$el,\n  },\n];\n\nconst handleOpen = (val: boolean): void => {\n  open.value = val;\n};\n</script>\n"
  },
  {
    "path": "components/tour/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Tour\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8CC_Tbe3_e4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*nF6hQpM0XtEAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\nA popup component for guiding users through a product. Available since `4.0.0`.\n\n## When To Use\n\nUse when you want to guide users through a product.\n\n## API\n\n### Tour\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| arrow | Whether to show the arrow, including the configuration whether to point to the center of the element | `boolean`\\|`{ pointAtCenter: boolean}` | `true` |  |\n| placement | Position of the guide card relative to the target element | `left` `leftTop` `leftBottom` `right` `rightTop` `rightBottom` `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` | `bottom` |  |\n| mask | Whether to enable masking, change mask style and fill color by pass custom props | `boolean` \\| `{ style?: CSSProperties; color?: string; }` | `true` |  |\n| type | Type, affects the background color and text color | `default` `primary` | `default` |  |\n| open | Open tour | `boolean` | - |  |\n| current(v-model) | What is the current step | `number` | - |  |\n| scrollIntoViewOptions | support pass custom scrollIntoView options | `boolean` \\| `ScrollIntoViewOptions` | `true` |  |\n| indicatorsRender | custom indicator | `v-slot:indicatorsRender=\"{current, total}\"` | - |  |\n| zIndex | Tour's zIndex | `number` | `1001` |  |\n\n### Tour events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- | --- |\n| close | Callback function on shutdown | `Function` | - |  |\n| finish | Callback function on finished | `Function` | - |  |\n| change | Callback when the step changes. Current is the previous step | `(current: number) => void` |\n\n### TourStep\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| target | Get the element the guide card points to. Empty makes it show in center of screen | `() => HTMLElement` `HTMLElement` | - |  |\n| arrow | Whether to show the arrow, including the configuration whether to point to the center of the element | `boolean` `{ pointAtCenter: boolean}` | `true` |  |\n| cover | Displayed pictures or videos | `VueNode` | - |  |\n| title | title | `VueNode` | - |  |\n| description | description | `VueNode` | - |  |\n| placement | Position of the guide card relative to the target element | `left` `leftTop` `leftBottom` `right` `rightTop` `rightBottom` `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` | `bottom` |  |\n| mask | Whether to enable masking, change mask style and fill color by pass custom props, the default follows the `mask` property of Tour | `boolean` \\| `{ style?: CSSProperties; color?: string; }` | `true` |  |\n| type | Type, affects the background color and text color | `default` `primary` | `default` |  |\n| nextButtonProps | Properties of the Next button | `{ children: VueNode; onClick: Function }` | - |  |\n| prevButtonProps | Properties of the previous button | `{ children: VueNode; onClick: Function }` | - |  |\n| scrollIntoViewOptions | support pass custom scrollIntoView options, the default follows the `scrollIntoViewOptions` property of Tour | `boolean` \\| `ScrollIntoViewOptions` | `true` |  |\n\n### TourStep events\n\n| Events Name | Description                   | Arguments  | Version |\n| ----------- | ----------------------------- | ---------- | ------- | --- |\n| close       | Callback function on shutdown | `Function` | -       |     |\n"
  },
  {
    "path": "components/tour/index.tsx",
    "content": "import { computed, defineComponent, toRefs } from 'vue';\nimport VCTour from '../vc-tour';\nimport classNames from '../_util/classNames';\nimport TourPanel from './panelRender';\nimport type { TourProps, TourStepProps } from './interface';\nimport { tourProps } from './interface';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { VueNode } from '../_util/type';\nimport { withInstall } from '../_util/type';\nimport useMergedType from './useMergedType';\n\n// CSSINJS\nimport useStyle from './style';\nimport getPlacements from '../_util/placements';\n\nexport { TourProps, TourStepProps };\n\nconst Tour = defineComponent({\n  name: 'ATour',\n  inheritAttrs: false,\n  props: tourProps(),\n  setup(props, { attrs, emit, slots }) {\n    const { current, type, steps, defaultCurrent } = toRefs(props);\n    const { prefixCls, direction } = useConfigInject('tour', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const { currentMergedType, updateInnerCurrent } = useMergedType({\n      defaultType: type,\n      steps,\n      current,\n      defaultCurrent,\n    });\n    return () => {\n      const { steps, current, type, rootClassName, ...restProps } = props;\n\n      const customClassName = classNames(\n        {\n          [`${prefixCls.value}-primary`]: currentMergedType.value === 'primary',\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        hashId.value,\n        rootClassName,\n      );\n\n      const mergedRenderPanel = (stepProps: TourStepProps, stepCurrent: number): VueNode => {\n        return (\n          <TourPanel\n            {...stepProps}\n            type={type}\n            current={stepCurrent}\n            v-slots={{\n              indicatorsRender: slots.indicatorsRender,\n            }}\n          ></TourPanel>\n        );\n      };\n\n      const onStepChange = (stepCurrent: number) => {\n        updateInnerCurrent(stepCurrent);\n        emit('update:current', stepCurrent);\n        emit('change', stepCurrent);\n      };\n\n      const builtinPlacements = computed(() =>\n        getPlacements({\n          arrowPointAtCenter: true,\n          autoAdjustOverflow: true,\n        }),\n      );\n\n      return wrapSSR(\n        <VCTour\n          {...attrs}\n          {...restProps}\n          rootClassName={customClassName}\n          prefixCls={prefixCls.value}\n          current={current}\n          defaultCurrent={props.defaultCurrent}\n          animated\n          renderPanel={mergedRenderPanel}\n          onChange={onStepChange}\n          steps={steps}\n          builtinPlacements={builtinPlacements.value as any}\n        />,\n      );\n    };\n  },\n});\n\nexport default withInstall(Tour);\n"
  },
  {
    "path": "components/tour/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Tour\nsubtitle: 漫游式引导\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*8CC_Tbe3_e4AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*nF6hQpM0XtEAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n用于分步引导用户了解产品功能的气泡组件。自 `4.0.0` 版本开始提供该组件。\n\n## 何时使用\n\n常用于引导用户了解产品功能。\n\n## API\n\n### Tour\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| arrow | 是否显示箭头，包含是否指向元素中心的配置 | `boolean` \\| `{ pointAtCenter: boolean}` | `true` |  |\n| placement | 引导卡片相对于目标元素的位置 | `left` `leftTop` `leftBottom` `right` `rightTop` `rightBottom` `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` | `bottom` |  |\n| mask | 是否启用蒙层，也可传入配置改变蒙层样式和填充色 | `boolean` \\| `{ style?: CSSProperties; color?: string; }` | `true` |  |\n| type | 类型，影响底色与文字颜色 | `default` \\| `primary` | `default` |  |\n| open | 打开引导 | `boolean` | - |  |\n| current(v-model) | 当前处于哪一步 | `number` | - |  |\n| scrollIntoViewOptions | 是否支持当前元素滚动到视窗内，也可传入配置指定滚动视窗的相关参数 | `boolean` \\| `ScrollIntoViewOptions` | `true` |  |\n| indicatorsRender | 自定义指示器 | `v-slot:indicatorsRender=\"{current, total}\"` | - |  |\n| zIndex | Tour 的层级 | `number` | `1001` |  |\n\n### Tour events\n\n| 事件名称 | 说明                                     | 回调参数                    | 版本 |\n| -------- | ---------------------------------------- | --------------------------- | ---- | --- |\n| close    | 关闭引导时的回调函数                     | `Function`                  | -    |     |\n| finish   | 引导完成时的回调                         | `Function`                  | -    |     |\n| change   | 步骤改变时的回调，current 为当前前的步骤 | `(current: number) => void` | -    |     |\n\n### TourStep 引导步骤卡片\n\n| 属性 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| target | 获取引导卡片指向的元素，为空时居中于屏幕 | `() => HTMLElement` \\| `HTMLElement` | - |  |\n| arrow | 是否显示箭头，包含是否指向元素中心的配置 | `boolean` \\| `{ pointAtCenter: boolean}` | `true` |  |\n| cover | 展示的图片或者视频 | `VueNode` | - |  |\n| title | 标题 | `VueNode` | - |  |\n| description | 主要描述部分 | `VueNode` | - |  |\n| placement | 引导卡片相对于目标元素的位置 | `left` `leftTop` `leftBottom` `right` `rightTop` `rightBottom` `top` `topLeft` `topRight` `bottom` `bottomLeft` `bottomRight` `bottom` |  |  |\n| mask | 是否启用蒙层，也可传入配置改变蒙层样式和填充色，默认跟随 Tour 的 `mask` 属性 | `boolean` \\| `{ style?: CSSProperties; color?: string; }` | `true` |  |\n| type | 类型，影响底色与文字颜色 | `default` \\| `primary` | `default` |  |\n| nextButtonProps | 下一步按钮的属性 | `{ children: VueNode; onClick: Function }` | - |  |\n| prevButtonProps | 上一步按钮的属性 | `{ children: VueNode; onClick: Function }` | - |  |\n| scrollIntoViewOptions | 是否支持当前元素滚动到视窗内，也可传入配置指定滚动视窗的相关参数，默认跟随 Tour 的 `scrollIntoViewOptions` 属性 | `boolean` \\| `ScrollIntoViewOptions` | `true` |  |\n\n### TourStep events\n\n| 事件名称 | 说明                 | 回调参数   | 版本 |\n| -------- | -------------------- | ---------- | ---- | --- |\n| close    | 关闭引导时的回调函数 | `Function` | -    |     |\n"
  },
  {
    "path": "components/tour/interface.ts",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport { tourProps as VCTourProps, tourStepProps as VCTourStepProps } from '../vc-tour';\nimport type { VueNode } from '../_util/type';\n\nexport const tourProps = () => ({\n  ...VCTourProps(),\n  steps: { type: Array as PropType<TourStepProps[]> },\n  prefixCls: { type: String },\n  current: { type: Number },\n  type: { type: String as PropType<'default' | 'primary'> }, //\tdefault\t类型，影响底色与文字颜色\n  'onUpdate:current': Function as PropType<(val: number) => void>,\n});\n\nexport type TourProps = Partial<ExtractPropTypes<ReturnType<typeof tourProps>>>;\n\nexport interface TourBtnProps {\n  children?: () => VueNode;\n  onClick?: () => void;\n  className?: string;\n  style?: CSSProperties;\n}\n\nexport const tourStepProps = () => ({\n  ...VCTourStepProps(),\n  cover: { type: Object as PropType<VueNode> }, // 展示的图片或者视频\n  nextButtonProps: {\n    type: Object as PropType<TourBtnProps>,\n  },\n  prevButtonProps: {\n    type: Object as PropType<TourBtnProps>,\n  },\n  current: { type: Number },\n  type: { type: String as PropType<'default' | 'primary'> }, //\tdefault\t类型，影响底色与文字颜色\n});\n\nexport type TourStepProps = Partial<ExtractPropTypes<ReturnType<typeof tourStepProps>>>;\n\nexport interface TourLocale {\n  Next: string;\n  Previous: string;\n  Finish: string;\n}\n"
  },
  {
    "path": "components/tour/panelRender.tsx",
    "content": "import { computed, defineComponent, toRefs } from 'vue';\nimport classNames from '../_util/classNames';\nimport { isFunction } from '../_util/util';\nimport CloseOutlined from '@ant-design/icons-vue/CloseOutlined';\nimport { tourStepProps } from './interface';\nimport type { TourBtnProps } from './interface';\n\nimport LocaleReceiver from '../locale/LocaleReceiver';\nimport Button from '../button';\nimport type { ButtonProps } from '../button';\nimport defaultLocale from '../locale/en_US';\n\nimport type { VueNode } from '../_util/type';\n\nconst panelRender = defineComponent({\n  name: 'ATourPanel',\n  inheritAttrs: false,\n  props: tourStepProps(),\n  setup(props, { attrs, slots }) {\n    const { current, total } = toRefs(props);\n\n    const isLastStep = computed(() => current.value === total.value - 1);\n\n    const prevBtnClick = e => {\n      const prevButtonProps = props.prevButtonProps as TourBtnProps;\n      props.onPrev?.(e);\n      if (typeof prevButtonProps?.onClick === 'function') {\n        prevButtonProps?.onClick();\n      }\n    };\n\n    const nextBtnClick = e => {\n      const nextButtonProps = props.nextButtonProps as TourBtnProps;\n      if (isLastStep.value) {\n        props.onFinish?.(e);\n      } else {\n        props.onNext?.(e);\n      }\n      if (typeof nextButtonProps?.onClick === 'function') {\n        nextButtonProps?.onClick();\n      }\n    };\n\n    return () => {\n      const { prefixCls, title, onClose, cover, description, type: stepType, arrow } = props;\n\n      const prevButtonProps = props.prevButtonProps as TourBtnProps;\n      const nextButtonProps = props.nextButtonProps as TourBtnProps;\n\n      let headerNode: VueNode;\n      if (title) {\n        headerNode = (\n          <div class={`${prefixCls}-header`}>\n            <div class={`${prefixCls}-title`}>{title}</div>\n          </div>\n        );\n      }\n\n      let descriptionNode: VueNode;\n      if (description) {\n        descriptionNode = <div class={`${prefixCls}-description`}>{description}</div>;\n      }\n\n      let coverNode: VueNode;\n      if (cover) {\n        coverNode = <div class={`${prefixCls}-cover`}>{cover}</div>;\n      }\n\n      let mergeIndicatorNode: VueNode;\n\n      if (slots.indicatorsRender) {\n        mergeIndicatorNode = slots.indicatorsRender({ current: current.value, total });\n      } else {\n        mergeIndicatorNode = [...Array.from({ length: total.value }).keys()].map(\n          (stepItem, index) => (\n            <span\n              key={stepItem}\n              class={classNames(\n                index === current.value && `${prefixCls}-indicator-active`,\n                `${prefixCls}-indicator`,\n              )}\n            />\n          ),\n        );\n      }\n\n      const mainBtnType = stepType === 'primary' ? 'default' : 'primary';\n      const secondaryBtnProps: ButtonProps = {\n        type: 'default',\n        ghost: stepType === 'primary',\n      };\n\n      return (\n        <LocaleReceiver componentName=\"Tour\" defaultLocale={defaultLocale.Tour}>\n          {contextLocale => (\n            <div\n              {...attrs}\n              class={classNames(\n                stepType === 'primary' ? `${prefixCls}-primary` : '',\n                attrs.class,\n                `${prefixCls}-content`,\n              )}\n            >\n              {arrow && <div class={`${prefixCls}-arrow`} key=\"arrow\" />}\n              <div class={`${prefixCls}-inner`}>\n                <CloseOutlined class={`${prefixCls}-close`} onClick={onClose} />\n                {coverNode}\n                {headerNode}\n                {descriptionNode}\n                <div class={`${prefixCls}-footer`}>\n                  {total.value > 1 && (\n                    <div class={`${prefixCls}-indicators`}>{mergeIndicatorNode}</div>\n                  )}\n                  <div class={`${prefixCls}-buttons`}>\n                    {current.value !== 0 ? (\n                      <Button\n                        {...secondaryBtnProps}\n                        {...prevButtonProps}\n                        onClick={prevBtnClick}\n                        size=\"small\"\n                        class={classNames(`${prefixCls}-prev-btn`, prevButtonProps?.className)}\n                      >\n                        {isFunction(prevButtonProps?.children)\n                          ? prevButtonProps.children()\n                          : prevButtonProps?.children ?? contextLocale.Previous}\n                      </Button>\n                    ) : null}\n                    <Button\n                      type={mainBtnType}\n                      {...nextButtonProps}\n                      onClick={nextBtnClick}\n                      size=\"small\"\n                      class={classNames(`${prefixCls}-next-btn`, nextButtonProps?.className)}\n                    >\n                      {isFunction(nextButtonProps?.children)\n                        ? nextButtonProps?.children()\n                        : isLastStep.value\n                        ? contextLocale.Finish\n                        : contextLocale.Next}\n                    </Button>\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n        </LocaleReceiver>\n      );\n    };\n  },\n});\n\nexport default panelRender;\n"
  },
  {
    "path": "components/tour/style/index.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\nimport getArrowStyle, { MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\n\nexport interface ComponentToken {}\n\ninterface TourToken extends FullToken<'Tour'> {\n  tourZIndexPopup: number;\n  indicatorWidth: number;\n  indicatorHeight: number;\n  tourBorderRadius: number;\n  tourCloseSize: number;\n}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<TourToken> = token => {\n  const {\n    componentCls,\n    lineHeight,\n    padding,\n    paddingXS,\n    borderRadius,\n    borderRadiusXS,\n    colorPrimary,\n    colorText,\n    colorFill,\n    indicatorHeight,\n    indicatorWidth,\n    boxShadowTertiary,\n    tourZIndexPopup,\n    fontSize,\n    colorBgContainer,\n    fontWeightStrong,\n    marginXS,\n    colorTextLightSolid,\n    tourBorderRadius,\n    colorWhite,\n    colorBgTextHover,\n    tourCloseSize,\n    motionDurationSlow,\n    antCls,\n  } = token;\n\n  return [\n    {\n      [componentCls]: {\n        ...resetComponent(token),\n\n        color: colorText,\n        position: 'absolute',\n        zIndex: tourZIndexPopup,\n        display: 'block',\n        visibility: 'visible',\n        fontSize,\n        lineHeight,\n        width: 520,\n        '--antd-arrow-background-color': colorBgContainer,\n\n        '&-pure': {\n          maxWidth: '100%',\n          position: 'relative',\n        },\n\n        [`&${componentCls}-hidden`]: {\n          display: 'none',\n        },\n\n        // ============================= panel content ============================\n        [`${componentCls}-content`]: {\n          position: 'relative',\n        },\n        [`${componentCls}-inner`]: {\n          textAlign: 'start',\n          textDecoration: 'none',\n          borderRadius: tourBorderRadius,\n          boxShadow: boxShadowTertiary,\n          position: 'relative',\n          backgroundColor: colorBgContainer,\n          border: 'none',\n          backgroundClip: 'padding-box',\n\n          [`${componentCls}-close`]: {\n            position: 'absolute',\n            top: padding,\n            insetInlineEnd: padding,\n            color: token.colorIcon,\n            outline: 'none',\n            width: tourCloseSize,\n            height: tourCloseSize,\n            borderRadius: token.borderRadiusSM,\n            transition: `background-color ${token.motionDurationMid}, color ${token.motionDurationMid}`,\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n\n            '&:hover': {\n              color: token.colorIconHover,\n              backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n            },\n          },\n\n          [`${componentCls}-cover`]: {\n            textAlign: 'center',\n            padding: `${padding + tourCloseSize + paddingXS}px ${padding}px 0`,\n            img: {\n              width: '100%',\n            },\n          },\n          [`${componentCls}-header`]: {\n            padding: `${padding}px ${padding}px ${paddingXS}px`,\n\n            [`${componentCls}-title`]: {\n              lineHeight,\n              fontSize,\n              fontWeight: fontWeightStrong,\n            },\n          },\n\n          [`${componentCls}-description`]: {\n            padding: `0 ${padding}px`,\n            lineHeight,\n            wordWrap: 'break-word',\n          },\n\n          [`${componentCls}-footer`]: {\n            padding: `${paddingXS}px ${padding}px ${padding}px`,\n            textAlign: 'end',\n            borderRadius: `0 0 ${borderRadiusXS}px ${borderRadiusXS}px`,\n            display: 'flex',\n            [`${componentCls}-indicators`]: {\n              display: 'inline-block',\n\n              [`${componentCls}-indicator`]: {\n                width: indicatorWidth,\n                height: indicatorHeight,\n                display: 'inline-block',\n                borderRadius: '50%',\n                background: colorFill,\n                '&:not(:last-child)': {\n                  marginInlineEnd: indicatorHeight,\n                },\n                '&-active': {\n                  background: colorPrimary,\n                },\n              },\n            },\n            [`${componentCls}-buttons`]: {\n              marginInlineStart: 'auto',\n              [`${antCls}-btn`]: {\n                marginInlineStart: marginXS,\n              },\n            },\n          },\n        },\n\n        // =============================  primary type  ===========================\n        // `$` for panel, `&$` for pure panel\n        [`${componentCls}-primary, &${componentCls}-primary`]: {\n          '--antd-arrow-background-color': colorPrimary,\n\n          [`${componentCls}-inner`]: {\n            color: colorTextLightSolid,\n            textAlign: 'start',\n            textDecoration: 'none',\n            backgroundColor: colorPrimary,\n            borderRadius,\n            boxShadow: boxShadowTertiary,\n\n            [`${componentCls}-close`]: {\n              color: colorTextLightSolid,\n            },\n\n            [`${componentCls}-indicators`]: {\n              [`${componentCls}-indicator`]: {\n                background: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(),\n                '&-active': {\n                  background: colorTextLightSolid,\n                },\n              },\n            },\n\n            [`${componentCls}-prev-btn`]: {\n              color: colorTextLightSolid,\n              borderColor: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(),\n              backgroundColor: colorPrimary,\n\n              '&:hover': {\n                backgroundColor: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(),\n                borderColor: 'transparent',\n              },\n            },\n\n            [`${componentCls}-next-btn`]: {\n              color: colorPrimary,\n              borderColor: 'transparent',\n              background: colorWhite,\n\n              '&:hover': {\n                background: new TinyColor(colorBgTextHover).onBackground(colorWhite).toRgbString(),\n              },\n            },\n          },\n        },\n      },\n\n      // ============================= mask ===========================\n      [`${componentCls}-mask`]: {\n        [`${componentCls}-placeholder-animated`]: {\n          transition: `all ${motionDurationSlow}`,\n        },\n      },\n\n      // =========== Limit left and right placement radius ==============\n      [[\n        '&-placement-left',\n        '&-placement-leftTop',\n        '&-placement-leftBottom',\n        '&-placement-right',\n        '&-placement-rightTop',\n        '&-placement-rightBottom',\n      ].join(',')]: {\n        [`${componentCls}-inner`]: {\n          borderRadius: Math.min(tourBorderRadius, MAX_VERTICAL_CONTENT_RADIUS),\n        },\n      },\n    },\n\n    // ============================= Arrow ===========================\n    getArrowStyle<TourToken>(token, {\n      colorBg: 'var(--antd-arrow-background-color)',\n      contentRadius: tourBorderRadius,\n      limitVerticalRadius: true,\n    }),\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tour', token => {\n  const { borderRadiusLG, fontSize, lineHeight } = token;\n  const TourToken = mergeToken<TourToken>(token, {\n    tourZIndexPopup: token.zIndexPopupBase + 70,\n    indicatorWidth: 6,\n    indicatorHeight: 6,\n    tourBorderRadius: borderRadiusLG,\n    tourCloseSize: fontSize * lineHeight,\n  });\n  return [genBaseStyle(TourToken)];\n});\n"
  },
  {
    "path": "components/tour/useMergedType.ts",
    "content": "import type { TourProps } from './interface';\nimport type { Ref } from 'vue';\nimport { ref, computed, watch } from 'vue';\n\ninterface Props {\n  defaultType?: Ref<string>;\n  steps?: Ref<TourProps['steps']>;\n  current?: Ref<number>;\n  defaultCurrent?: Ref<number>;\n}\n/**\n * returns the merged type of a step or the default type.\n */\nconst useMergedType = ({ defaultType, steps, current, defaultCurrent }: Props) => {\n  const innerCurrent = ref(defaultCurrent?.value);\n  const mergedCurrent = computed(() => current?.value);\n  watch(\n    mergedCurrent,\n    val => {\n      innerCurrent.value = val ?? defaultCurrent?.value;\n    },\n    { immediate: true },\n  );\n  const updateInnerCurrent = (val: number) => {\n    innerCurrent.value = val;\n  };\n  const innerType = computed(() => {\n    return typeof innerCurrent.value === 'number'\n      ? steps && steps.value?.[innerCurrent.value]?.type\n      : defaultType?.value;\n  });\n\n  const currentMergedType = computed(() => innerType.value ?? defaultType?.value);\n\n  return { currentMergedType, updateInnerCurrent };\n};\n\nexport default useMergedType;\n"
  },
  {
    "path": "components/transfer/ListBody.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent, computed, ref, watch } from 'vue';\nimport classNames from '../_util/classNames';\nimport ListItem from './ListItem';\nimport Pagination from '../pagination';\nimport PropTypes from '../_util/vue-types';\nimport type { TransferItem } from '.';\nimport { booleanType } from '../_util/type';\n\nexport const transferListBodyProps = {\n  prefixCls: String,\n  filteredRenderItems: PropTypes.array.def([]),\n  selectedKeys: PropTypes.array,\n  disabled: booleanType(),\n  showRemove: booleanType(),\n  pagination: PropTypes.any,\n  onItemSelect: Function,\n  onScroll: Function,\n  onItemRemove: Function,\n};\n\nexport type TransferListBodyProps = Partial<ExtractPropTypes<typeof transferListBodyProps>>;\n\nfunction parsePagination(pagination) {\n  if (!pagination) {\n    return null;\n  }\n\n  const defaultPagination = {\n    pageSize: 10,\n    simple: true,\n    showSizeChanger: false,\n    showLessItems: false,\n  };\n\n  if (typeof pagination === 'object') {\n    return {\n      ...defaultPagination,\n      ...pagination,\n    };\n  }\n\n  return defaultPagination;\n}\n\nconst ListBody = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ListBody',\n  inheritAttrs: false,\n  props: transferListBodyProps,\n  emits: ['itemSelect', 'itemRemove', 'scroll'],\n  setup(props, { emit, expose }) {\n    const current = ref(1);\n\n    const handleItemSelect = (item: TransferItem) => {\n      const { selectedKeys } = props;\n      const checked = selectedKeys.indexOf(item.key) >= 0;\n      emit('itemSelect', item.key, !checked);\n    };\n\n    const handleItemRemove = (item: TransferItem) => {\n      emit('itemRemove', [item.key]);\n    };\n\n    const handleScroll = (e: Event) => {\n      emit('scroll', e);\n    };\n\n    const mergedPagination = computed(() => parsePagination(props.pagination));\n\n    watch(\n      [mergedPagination, () => props.filteredRenderItems],\n      () => {\n        if (mergedPagination.value) {\n          // Calculate the page number\n          const maxPageCount = Math.ceil(\n            props.filteredRenderItems.length / mergedPagination.value.pageSize,\n          );\n          current.value = Math.min(current.value, maxPageCount);\n        }\n      },\n      { immediate: true },\n    );\n    const items = computed(() => {\n      const { filteredRenderItems } = props;\n\n      let displayItems = filteredRenderItems;\n\n      if (mergedPagination.value) {\n        displayItems = filteredRenderItems.slice(\n          (current.value - 1) * mergedPagination.value.pageSize,\n          current.value * mergedPagination.value.pageSize,\n        );\n      }\n\n      return displayItems;\n    });\n\n    const onPageChange = (cur: number) => {\n      current.value = cur;\n    };\n\n    expose({ items });\n\n    return () => {\n      const {\n        prefixCls,\n        filteredRenderItems,\n        selectedKeys,\n        disabled: globalDisabled,\n        showRemove,\n      } = props;\n\n      let paginationNode = null;\n\n      if (mergedPagination.value) {\n        paginationNode = (\n          <Pagination\n            simple={mergedPagination.value.simple}\n            showSizeChanger={mergedPagination.value.showSizeChanger}\n            showLessItems={mergedPagination.value.showLessItems}\n            size=\"small\"\n            disabled={globalDisabled}\n            class={`${prefixCls}-pagination`}\n            total={filteredRenderItems.length}\n            pageSize={mergedPagination.value.pageSize}\n            current={current.value}\n            onChange={onPageChange}\n          />\n        );\n      }\n\n      const itemsList = items.value.map(({ renderedEl, renderedText, item }: any) => {\n        const { disabled } = item;\n        const checked = selectedKeys.indexOf(item.key) >= 0;\n\n        return (\n          <ListItem\n            disabled={globalDisabled || disabled}\n            key={item.key}\n            item={item}\n            renderedText={renderedText}\n            renderedEl={renderedEl}\n            checked={checked}\n            prefixCls={prefixCls}\n            onClick={handleItemSelect}\n            onRemove={handleItemRemove}\n            showRemove={showRemove}\n          />\n        );\n      });\n      return (\n        <>\n          <ul\n            class={classNames(`${prefixCls}-content`, {\n              [`${prefixCls}-content-show-remove`]: showRemove,\n            })}\n            onScroll={handleScroll}\n          >\n            {itemsList}\n          </ul>\n          {paginationNode}\n        </>\n      );\n    };\n  },\n});\n\nexport default ListBody;\n"
  },
  {
    "path": "components/transfer/ListItem.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport type { TransferLocale } from '.';\nimport DeleteOutlined from '@ant-design/icons-vue/DeleteOutlined';\nimport defaultLocale from '../locale/en_US';\nimport Checkbox from '../checkbox';\nimport TransButton from '../_util/transButton';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport { booleanType } from '../_util/type';\n\nfunction noop() {}\n\nexport const transferListItemProps = {\n  renderedText: PropTypes.any,\n  renderedEl: PropTypes.any,\n  item: PropTypes.any,\n  checked: booleanType(),\n  prefixCls: String,\n  disabled: booleanType(),\n  showRemove: booleanType(),\n  onClick: Function,\n  onRemove: Function,\n};\n\nexport type TransferListItemProps = Partial<ExtractPropTypes<typeof transferListItemProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ListItem',\n  inheritAttrs: false,\n  props: transferListItemProps,\n  emits: ['click', 'remove'],\n  setup(props, { emit }) {\n    return () => {\n      const { renderedText, renderedEl, item, checked, disabled, prefixCls, showRemove } = props;\n      const className = classNames({\n        [`${prefixCls}-content-item`]: true,\n        [`${prefixCls}-content-item-disabled`]: disabled || item.disabled,\n      });\n\n      let title: string;\n      if (typeof renderedText === 'string' || typeof renderedText === 'number') {\n        title = String(renderedText);\n      }\n\n      return (\n        <LocaleReceiver componentName=\"Transfer\" defaultLocale={defaultLocale.Transfer}>\n          {(transferLocale: TransferLocale) => {\n            const labelNode = <span class={`${prefixCls}-content-item-text`}>{renderedEl}</span>;\n            if (showRemove) {\n              return (\n                <li class={className} title={title}>\n                  {labelNode}\n                  <TransButton\n                    disabled={disabled || item.disabled}\n                    class={`${prefixCls}-content-item-remove`}\n                    aria-label={transferLocale.remove}\n                    onClick={() => {\n                      emit('remove', item);\n                    }}\n                  >\n                    <DeleteOutlined />\n                  </TransButton>\n                </li>\n              );\n            }\n\n            return (\n              <li\n                class={className}\n                title={title}\n                onClick={\n                  disabled || item.disabled\n                    ? noop\n                    : () => {\n                        emit('click', item);\n                      }\n                }\n              >\n                <Checkbox\n                  class={`${prefixCls}-checkbox`}\n                  checked={checked}\n                  disabled={disabled || item.disabled}\n                />\n                {labelNode}\n              </li>\n            );\n          }}\n        </LocaleReceiver>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/transfer/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/transfer/demo/advanced.vue correctly 1`] = `\n<div class=\"ant-transfer\">\n  <div class=\"ant-transfer-list ant-transfer-list-with-footer\" style=\"width: 250px; height: 300px;\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n      <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n        <!----></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body-not-found\"><span>没数据</span></div>\n    </div>\n    <div class=\"ant-transfer-list-footer\"><button style=\"float: left; margin: 5px;\" class=\"ant-btn ant-btn-default ant-btn-sm\" type=\"button\">\n        <!----><span>left reload</span>\n      </button></div>\n  </div>\n  <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span><span>to right</span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span><span>to left</span></button></div>\n  <div class=\"ant-transfer-list ant-transfer-list-with-footer\" style=\"width: 250px; height: 300px;\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n      <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n        <!----></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body-not-found\">\n        <!---->\n      </div>\n    </div>\n    <div class=\"ant-transfer-list-footer\"><button style=\"float: right; margin: 5px;\" class=\"ant-btn ant-btn-default ant-btn-sm\" type=\"button\">\n        <!----><span>right reload</span>\n      </button></div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/basic.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-indeterminate\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-checked=\"mixed\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>2/14 items</span><span class=\"ant-transfer-list-header-title\">Source</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content1\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content1</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content2\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content2</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content4\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content4</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content5\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content5</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content7\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content7</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content8\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content8</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content10\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content10</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content11\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content11</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content13\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content13</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content14\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content14</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content16\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content16</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content17\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content17</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content19\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content19</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content20\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content20</span></li>\n        </ul>\n        <!---->\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>6 items</span><span class=\"ant-transfer-list-header-title\">Target</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item\" title=\"content3\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content3</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content6\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content6</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content9\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content9</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content12\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content12</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content15\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content15</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content18\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content18</span></li>\n        </ul>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">disabled</span><span class=\"ant-switch-inner-unchecked\">enabled</span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/custom-item.vue correctly 1`] = `\n<div class=\"ant-transfer\">\n  <div class=\"ant-transfer-list\" style=\"width: 300px; height: 300px;\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <div class=\"ant-transfer-list-body-not-found\">\n        <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n          <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                  <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                  <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                </g>\n              </g>\n            </svg></div>\n          <p class=\"ant-empty-description\">No data</p>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n  <div class=\"ant-transfer-list\" style=\"width: 300px; height: 300px;\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <div class=\"ant-transfer-list-body-not-found\">\n        <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n          <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                  <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                  <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                </g>\n              </g>\n            </svg></div>\n          <p class=\"ant-empty-description\">No data</p>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/custom-select-all-labels.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-indeterminate\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-checked=\"mixed\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>Select All</span><span class=\"ant-transfer-list-header-title\">Source</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content1\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content1</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content2\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content2</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content4\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content4</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content5\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content5</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content7\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content7</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content8\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content8</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content10\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content10</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content11\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content11</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content13\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content13</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content14\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content14</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content16\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content16</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content17\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content17</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content19\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content19</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content20\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content20</span></li>\n        </ul>\n        <!---->\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0/6</span><span class=\"ant-transfer-list-header-title\">Target</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item\" title=\"content3\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content3</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content6\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content6</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content9\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content9</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content12\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content12</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content15\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content15</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content18\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content18</span></li>\n        </ul>\n        <!---->\n      </div>\n      <!---->\n    </div>\n  </div><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">disabled</span><span class=\"ant-switch-inner-unchecked\">enabled</span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/oneway.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-indeterminate\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-checked=\"mixed\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label>\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>2/20 items</span><span class=\"ant-transfer-list-header-title\">Source</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content1\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content1</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content2\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content2</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content3\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content3</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content4\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content4</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content5\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content5</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content6\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content6</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content7\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content7</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content8\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content8</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content9\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content9</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content10\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content10</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content11\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content11</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content12\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content12</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content13\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content13</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content14\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content14</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content15\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content15</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content16\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content16</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content17\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content17</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content18\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content18</span></li>\n          <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\" title=\"content19\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content19</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content20\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content20</span></li>\n        </ul>\n        <!---->\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\">\n        <!---->\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\">Target</span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">disabled</span><span class=\"ant-switch-inner-unchecked\">enabled</span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/pagination.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer\">\n    <div class=\"ant-transfer-list ant-transfer-list-with-pagination\">\n      <div class=\"ant-transfer-list-header\">\n        <!---->\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>134 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item\" title=\"content1\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content1</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content2\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content2</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content4\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content4</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content5\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content5</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content7\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content7</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content8\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content8</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content10\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content10</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content11\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content11</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content13\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content13</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content14\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content14</span></li>\n        </ul>\n        <ul class=\"ant-pagination ant-pagination-simple mini ant-transfer-list-pagination\">\n          <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n          <li title=\"1/14\" class=\"ant-pagination-simple-pager\"><input type=\"text\" size=\"3\"><span class=\"ant-pagination-slash\">／</span>14</li>\n          <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n          <!---->\n        </ul>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list ant-transfer-list-with-pagination\">\n      <div class=\"ant-transfer-list-header\">\n        <!---->\n        <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>66 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <ul class=\"ant-transfer-list-content\">\n          <li class=\"ant-transfer-list-content-item\" title=\"content3\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content3</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content6\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content6</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content9\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content9</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content12\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content12</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content15\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content15</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content18\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content18</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content21\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content21</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content24\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content24</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content27\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content27</span></li>\n          <li class=\"ant-transfer-list-content-item\" title=\"content30\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n              <!---->\n            </label><span class=\"ant-transfer-list-content-item-text\">content30</span></li>\n        </ul>\n        <ul class=\"ant-pagination ant-pagination-simple mini ant-transfer-list-pagination\">\n          <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n          <li title=\"1/7\" class=\"ant-pagination-simple-pager\"><input type=\"text\" size=\"3\"><span class=\"ant-pagination-slash\">／</span>7</li>\n          <li title=\"Next Page\" tabindex=\"0\" class=\"ant-pagination-next\" aria-disabled=\"false\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n          <!---->\n        </ul>\n      </div>\n      <!---->\n    </div>\n  </div><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">disabled</span><span class=\"ant-switch-inner-unchecked\">enabled</span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/search.vue correctly 1`] = `\n<div class=\"ant-transfer\">\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n      <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n        <!----></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body-not-found\">\n        <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n          <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                  <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                  <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                </g>\n              </g>\n            </svg></div>\n          <p class=\"ant-empty-description\">No data</p>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n      <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n        <!----></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body-not-found\">\n        <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n          <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                  <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                  <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                </g>\n              </g>\n            </svg></div>\n          <p class=\"ant-empty-description\">No data</p>\n          <!---->\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/status.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div class=\"ant-transfer ant-transfer-status-error\">\n      <div class=\"ant-transfer-list\">\n        <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label>\n          <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body\">\n          <!---->\n          <div class=\"ant-transfer-list-body-not-found\">\n            <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n              <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                    <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                    <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                      <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                      <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                    </g>\n                  </g>\n                </svg></div>\n              <p class=\"ant-empty-description\">No data</p>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n      <div class=\"ant-transfer-list\">\n        <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label>\n          <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body\">\n          <!---->\n          <div class=\"ant-transfer-list-body-not-found\">\n            <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n              <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                    <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                    <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                      <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                      <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                    </g>\n                  </g>\n                </svg></div>\n              <p class=\"ant-empty-description\">No data</p>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div class=\"ant-transfer ant-transfer-status-warning\">\n      <div class=\"ant-transfer-list\">\n        <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label>\n          <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n          <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n            <!----></span></span>\n          </div>\n          <div class=\"ant-transfer-list-body-not-found\">\n            <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n              <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                    <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                    <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                      <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                      <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                    </g>\n                  </g>\n                </svg></div>\n              <p class=\"ant-empty-description\">No data</p>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n      </div>\n      <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n      <div class=\"ant-transfer-list\">\n        <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label>\n          <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n        </div>\n        <div class=\"ant-transfer-list-body ant-transfer-list-body-with-search\">\n          <div class=\"ant-transfer-list-body-search-wrapper\"><span class=\"ant-input-affix-wrapper ant-transfer-list-search\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"Search here\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n            <!----></span></span>\n          </div>\n          <div class=\"ant-transfer-list-body-not-found\">\n            <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n              <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                    <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                    <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                      <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                      <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                    </g>\n                  </g>\n                </svg></div>\n              <p class=\"ant-empty-description\">No data</p>\n              <!---->\n            </div>\n          </div>\n        </div>\n        <!---->\n      </div>\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/table-transfer.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer ant-transfer-customize-list\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\">\n        <!----><span class=\"ant-transfer-list-header-selected\"><span>7 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-customize-wrapper\">\n          <div class=\"ant-table-wrapper\">\n            <div class=\"ant-spin-nested-loading\">\n              <!---->\n              <div class=\"ant-spin-container\">\n                <!---->\n                <div class=\"ant-table ant-table-small\">\n                  <!---->\n                  <div class=\"ant-table-container\">\n                    <div class=\"ant-table-content\">\n                      <table style=\"table-layout: auto;\">\n                        <colgroup>\n                          <col class=\"ant-table-selection-col\">\n                        </colgroup>\n                        <thead class=\"ant-table-thead\">\n                          <tr>\n                            <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                              <!---->\n                              <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                                  <!---->\n                                </label>\n                                <!---->\n                              </div>\n                              <!---->\n                            </th>\n                            <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                              <!---->Name\n                              <!---->\n                            </th>\n                            <th class=\"ant-table-cell\" colstart=\"2\" colend=\"2\">\n                              <!---->Description\n                              <!---->\n                            </th>\n                          </tr>\n                        </thead>\n                        <tbody class=\"ant-table-tbody\">\n                          <!---->\n                          <tr data-row-key=\"0\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content1\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content1\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"1\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content2\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content2\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"3\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content4\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content4\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"4\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content5\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content5\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"6\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content7\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content7\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"7\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content8\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content8\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"9\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content10\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->description of content10\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                        </tbody>\n                        <!---->\n                      </table>\n                    </div>\n                  </div>\n                  <!---->\n                </div>\n                <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n                  <!---->\n                  <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n                  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n                  <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n                  <!---->\n                </ul>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\">\n        <!----><span class=\"ant-transfer-list-header-selected\"><span>3 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-customize-wrapper\">\n          <div class=\"ant-table-wrapper\">\n            <div class=\"ant-spin-nested-loading\">\n              <!---->\n              <div class=\"ant-spin-container\">\n                <!---->\n                <div class=\"ant-table ant-table-small\">\n                  <!---->\n                  <div class=\"ant-table-container\">\n                    <div class=\"ant-table-content\">\n                      <table style=\"table-layout: auto;\">\n                        <colgroup>\n                          <col class=\"ant-table-selection-col\">\n                        </colgroup>\n                        <thead class=\"ant-table-thead\">\n                          <tr>\n                            <th class=\"ant-table-cell ant-table-selection-column\" colstart=\"0\" colend=\"0\">\n                              <!---->\n                              <div class=\"ant-table-selection\"><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-label=\"Select all\"><span class=\"ant-checkbox-inner\"></span></span>\n                                  <!---->\n                                </label>\n                                <!---->\n                              </div>\n                              <!---->\n                            </th>\n                            <th class=\"ant-table-cell\" colstart=\"1\" colend=\"1\">\n                              <!---->Name\n                              <!---->\n                            </th>\n                          </tr>\n                        </thead>\n                        <tbody class=\"ant-table-tbody\">\n                          <!---->\n                          <tr data-row-key=\"2\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content3\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"5\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content6\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                          <tr data-row-key=\"8\" class=\"ant-table-row ant-table-row-level-0\">\n                            <td class=\"ant-table-cell ant-table-selection-column\">\n                              <!----><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n                                <!---->\n                              </label>\n                              <!---->\n                            </td>\n                            <td class=\"ant-table-cell\">\n                              <!---->content9\n                              <!---->\n                            </td>\n                          </tr>\n                          <!---->\n                        </tbody>\n                        <!---->\n                      </table>\n                    </div>\n                  </div>\n                  <!---->\n                </div>\n                <ul unselectable=\"on\" class=\"ant-pagination mini ant-table-pagination ant-table-pagination-right\">\n                  <!---->\n                  <li title=\"Previous Page\" class=\"ant-pagination-prev ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></li>\n                  <li title=\"1\" tabindex=\"0\" class=\"ant-pagination-item ant-pagination-item-1 ant-pagination-item-active\"><a rel=\"nofollow\">1</a></li>\n                  <li title=\"Next Page\" class=\"ant-pagination-next ant-pagination-disabled\" aria-disabled=\"true\"><button class=\"ant-pagination-item-link\" type=\"button\" tabindex=\"-1\" disabled=\"\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button></li>\n                  <!---->\n                </ul>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">disabled</span><span class=\"ant-switch-inner-unchecked\">disabled</span></span>\n  </button><button style=\"margin-top: 16px;\" type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n    <div class=\"ant-switch-handle\">\n      <!---->\n    </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">showSearch</span><span class=\"ant-switch-inner-unchecked\">showSearch</span></span>\n  </button>\n</div>\n`;\n\nexports[`renders ./components/transfer/demo/tree-transfer.vue correctly 1`] = `\n<div>\n  <div class=\"ant-transfer tree-transfer ant-transfer-customize-list\">\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\">\n        <!----><span class=\"ant-transfer-list-header-selected\"><span>5 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-customize-wrapper\">\n          <div role=\"tree\" class=\"ant-tree ant-tree-icon-hide ant-tree-block-node\">\n            <!---->\n            <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n            <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n              <div class=\"ant-tree-indent\">\n                <div class=\"ant-tree-indent-unit\"></div>\n              </div>\n            </div>\n            <div style=\"position: relative;\" class=\"ant-tree-list\">\n              <div class=\"ant-tree-list-holder\">\n                <div>\n                  <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n                    <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n                      <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"0-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0</span>\n                      <!----></span>\n                    </div>\n                    <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n                      <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"0-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">0-1</span>\n                      <!----></span>\n                    </div>\n                    <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit\"></span></span>\n                      <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"0-1-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-1-0</span>\n                      <!----></span>\n                    </div>\n                    <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit\"></span></span>\n                      <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"0-1-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-1-1</span>\n                      <!----></span>\n                    </div>\n                    <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n                      <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"0-3\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-3</span>\n                      <!----></span>\n                    </div>\n                  </div>\n                </div>\n              </div>\n              <!---->\n            </div>\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n    <div class=\"ant-transfer-list\">\n      <div class=\"ant-transfer-list-header\">\n        <!----><span class=\"ant-transfer-list-header-selected\"><span>0 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n      </div>\n      <div class=\"ant-transfer-list-body\">\n        <!---->\n        <div class=\"ant-transfer-list-body-not-found\">\n          <div class=\"ant-empty ant-empty-small ant-empty-normal\">\n            <div class=\"ant-empty-image\"><svg width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n                  <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\"></ellipse>\n                  <g fill-rule=\"nonzero\" stroke=\"#d9d9d9\">\n                    <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"></path>\n                    <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" fill=\"#fafafa\"></path>\n                  </g>\n                </g>\n              </svg></div>\n            <p class=\"ant-empty-description\">No data</p>\n            <!---->\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/transfer/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Transfer should render correctly 1`] = `\n<div lazy=\"false\" class=\"ant-transfer\">\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>1/2 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <ul class=\"ant-transfer-list-content\">\n        <li class=\"ant-transfer-list-content-item\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n        <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n      </ul>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-transfer-operation\"><button class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>1 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <ul class=\"ant-transfer-list-content\">\n        <li class=\"ant-transfer-list-content-item\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n      </ul>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`Transfer should show sorted targetkey 1`] = `\n<div lazy=\"false\" class=\"ant-transfer\">\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>1 item</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <ul class=\"ant-transfer-list-content\">\n        <li class=\"ant-transfer-list-content-item\" title=\"a\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\">a</span></li>\n      </ul>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <div class=\"ant-transfer-operation\"><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right\"><svg focusable=\"false\" class=\"\" data-icon=\"right\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"></path></svg></span></button><button disabled=\"\" class=\"ant-btn ant-btn-primary ant-btn-sm ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left\"><svg focusable=\"false\" class=\"\" data-icon=\"left\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"></path></svg></span></button></div>\n  <div class=\"ant-transfer-list\">\n    <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n        <!---->\n      </label>\n      <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>2 items</span><span class=\"ant-transfer-list-header-title\"></span></span>\n    </div>\n    <div class=\"ant-transfer-list-body\">\n      <!---->\n      <ul class=\"ant-transfer-list-content\">\n        <li class=\"ant-transfer-list-content-item\" title=\"c\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\">c</span></li>\n        <li class=\"ant-transfer-list-content-item\" title=\"b\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n            <!---->\n          </label><span class=\"ant-transfer-list-content-item-text\">b</span></li>\n      </ul>\n      <!---->\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/transfer/__tests__/__snapshots__/list.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`List should render correctly 1`] = `\n<div class=\"ant-transfer-list\">\n  <div class=\"ant-transfer-list-header\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-indeterminate\"><input type=\"checkbox\" class=\"ant-checkbox-input\" aria-checked=\"mixed\"><span class=\"ant-checkbox-inner\"></span></span>\n      <!---->\n    </label>\n    <!----><span role=\"img\" aria-label=\"down\" tabindex=\"-1\" class=\"anticon anticon-down ant-dropdown-trigger ant-transfer-list-header-dropdown\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span><span class=\"ant-transfer-list-header-selected\"><span>1/3 <!----></span><span class=\"ant-transfer-list-header-title\"><!----></span></span>\n  </div>\n  <div class=\"ant-transfer-list-body\">\n    <!---->\n    <ul class=\"ant-transfer-list-content\">\n      <li class=\"ant-transfer-list-content-item\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-checked ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-checked\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n      <li class=\"ant-transfer-list-content-item\"><label class=\"ant-checkbox-wrapper ant-transfer-list-checkbox\"><span class=\"ant-checkbox\"><input type=\"checkbox\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n      <li class=\"ant-transfer-list-content-item ant-transfer-list-content-item-disabled\"><label class=\"ant-checkbox-wrapper ant-checkbox-wrapper-disabled ant-transfer-list-checkbox\"><span class=\"ant-checkbox ant-checkbox-disabled\"><input type=\"checkbox\" disabled=\"\" class=\"ant-checkbox-input\"><span class=\"ant-checkbox-inner\"></span></span>\n          <!---->\n        </label><span class=\"ant-transfer-list-content-item-text\"><!----></span></li>\n    </ul>\n    <!---->\n  </div>\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/transfer/__tests__/__snapshots__/search.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Search should show cross icon when input value exists 1`] = `\n<span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n<!----></span></span>\n`;\n\nexports[`Search should show cross icon when input value exists 2`] = `\n<span class=\"ant-input-affix-wrapper\"><span class=\"ant-input-prefix\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></span><input placeholder=\"\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-suffix\"><span class=\"ant-input-clear-icon-hidden ant-input-clear-icon\" role=\"button\" tabindex=\"-1\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n<!----></span></span>\n`;\n"
  },
  {
    "path": "components/transfer/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('transfer');\n"
  },
  {
    "path": "components/transfer/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Transfer from '..';\nimport * as Vue from 'vue';\nimport { sleep, asyncExpect } from '../../../tests/utils';\nimport mountTest from '../../../tests/shared/mountTest';\n\nconst listCommonProps = {\n  dataSource: [\n    {\n      key: 'a',\n      title: 'a',\n    },\n    {\n      key: 'b',\n      title: 'b',\n    },\n    {\n      key: 'c',\n      title: 'c',\n      disabled: true,\n    },\n  ],\n  selectedKeys: ['a'],\n  targetKeys: ['b'],\n  lazy: false,\n};\n\nconst listDisabledProps = {\n  dataSource: [\n    {\n      key: 'a',\n      title: 'a',\n      disabled: true,\n    },\n    {\n      key: 'b',\n      title: 'b',\n    },\n  ],\n  selectedKeys: ['a', 'b'],\n  targetKeys: [],\n  lazy: false,\n};\n\nconst searchTransferProps = {\n  dataSource: [\n    {\n      key: '0',\n      title: 'content1',\n      description: 'description of content1',\n      chosen: false,\n    },\n    {\n      key: '1',\n      title: 'content2',\n      description: 'description of content2',\n      chosen: false,\n    },\n    {\n      key: '2',\n      title: 'content3',\n      description: 'description of content3',\n      chosen: false,\n    },\n    {\n      key: '3',\n      title: 'content4',\n      description: 'description of content4',\n      chosen: false,\n    },\n    {\n      key: '4',\n      title: 'content5',\n      description: 'description of content5',\n      chosen: false,\n    },\n    {\n      key: '5',\n      title: 'content6',\n      description: 'description of content6',\n      chosen: false,\n    },\n  ],\n  selectedKeys: [],\n  targetKeys: ['3', '4'],\n  lazy: false,\n};\n\ndescribe('Transfer', () => {\n  mountTest(Transfer);\n  it('should render correctly', () => {\n    const wrapper = mount({\n      setup() {\n        return () => <Transfer {...{ ...listCommonProps }} />;\n      },\n    });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should move selected keys to corresponding list', done => {\n    const handleChange = jest.fn();\n\n    const wrapper = mount(\n      {\n        setup() {\n          return () => <Transfer {...{ ...listCommonProps, onChange: handleChange }} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    Vue.nextTick(() => {\n      wrapper.findAll('.ant-btn')[0].trigger('click'); // move selected keys to right list\n      expect(handleChange).toHaveBeenCalledWith(['a', 'b'], 'right', ['a']);\n      done();\n    });\n  });\n  it('should move selected keys expect disabled to corresponding list', done => {\n    const handleChange = jest.fn();\n    const wrapper = mount(\n      {\n        setup() {\n          return () => <Transfer {...{ ...listDisabledProps, onChange: handleChange }} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    Vue.nextTick(() => {\n      wrapper.findAll('.ant-btn')[0].trigger('click');\n      expect(handleChange).toHaveBeenCalledWith(['b'], 'right', ['b']);\n      done();\n    });\n  });\n\n  it('should uncheck checkbox when click on checked item', async () => {\n    const handleSelectChange = jest.fn();\n\n    const wrapper = mount(\n      {\n        setup() {\n          return () => <Transfer {...{ ...listCommonProps, onSelectChange: handleSelectChange }} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n\n    await sleep();\n    wrapper.findAll('.ant-transfer-list-content-item')[0].trigger('click');\n    expect(handleSelectChange).toHaveBeenLastCalledWith([], []);\n  });\n\n  it('should check checkbox when click on unchecked item', async () => {\n    const handleSelectChange = jest.fn();\n\n    const wrapper = mount(\n      {\n        setup() {\n          return () => <Transfer {...{ ...listCommonProps, onSelectChange: handleSelectChange }} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n\n    await sleep();\n    wrapper.findAll('.ant-transfer-list-content-item')[2].trigger('click');\n    await sleep();\n    expect(handleSelectChange).toHaveBeenLastCalledWith(['a'], ['b']);\n  });\n\n  it('should not check checkbox when click on disabled item', async () => {\n    const handleSelectChange = jest.fn();\n\n    const wrapper = mount(\n      {\n        setup() {\n          return () => <Transfer {...{ ...listCommonProps, onSelectChange: handleSelectChange }} />;\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n\n    await sleep();\n    wrapper.findAll('.ant-transfer-list-content-item')[1].trigger('click');\n    expect(handleSelectChange).not.toHaveBeenCalled();\n  });\n\n  xit('should check all item when click on check all', done => {\n    const handleSelectChange = jest.fn();\n    const wrapper = mount(Transfer, {\n      props: listCommonProps,\n      listeners: {\n        selectChange: handleSelectChange,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      wrapper\n        .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n        .filter(n => {\n          return !n.vnode.data.domProps.checked;\n        })\n        .trigger('change');\n      expect(handleSelectChange).toHaveBeenCalledWith(['a'], ['b']);\n      done();\n    });\n  });\n\n  xit('should uncheck all item when click on uncheck all', done => {\n    const handleSelectChange = jest.fn();\n    const wrapper = mount(Transfer, {\n      props: listCommonProps,\n      listeners: {\n        selectChange: handleSelectChange,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      wrapper\n        .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n        .filter(n => {\n          return n.vnode.data.domProps.checked;\n        })\n        .trigger('change');\n      expect(handleSelectChange).toHaveBeenCalledWith([], []);\n      done();\n    });\n  });\n\n  it('should call `filterOption` when use input in search box', done => {\n    const filterOption = (inputValue, option) => inputValue === option.title;\n\n    const wrapper = mount(\n      {\n        setup() {\n          return () => (\n            <Transfer\n              {...{\n                ...listCommonProps,\n                showSearch: true,\n                filterOption,\n              }}\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n\n    Vue.nextTick(() => {\n      const input = wrapper.findAll('.ant-transfer-list-body-search-wrapper input')[0];\n      input.element.value = 'a';\n      input.trigger('input');\n      Vue.nextTick(() => {\n        expect(\n          wrapper\n            .findAll('.ant-transfer-list-content')[0]\n            .find('.ant-transfer-list-content-item')\n            .findAll('input[type=\"checkbox\"]'),\n        ).toHaveLength(1);\n        done();\n      });\n    });\n  });\n\n  it('should display the correct count of items when filter by input', done => {\n    const filterOption = (inputValue, option) => option.description.indexOf(inputValue) > -1;\n    const renderFunc = item => item.title;\n    const wrapper = mount(\n      {\n        setup() {\n          return () => (\n            <Transfer\n              {...{\n                ...searchTransferProps,\n                showSearch: true,\n                filterOption,\n                render: renderFunc,\n              }}\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n\n    Vue.nextTick(() => {\n      const input = wrapper.findAll('.ant-transfer-list-body-search-wrapper input')[0];\n      input.element.value = 'content2';\n      input.trigger('input');\n      Vue.nextTick(() => {\n        expect(\n          wrapper\n            .findAll('.ant-transfer-list')[0]\n            .findAll('.ant-transfer-list-header-selected > span')[0]\n            .text()\n            .trim(),\n        ).toEqual('1 item');\n        done();\n      });\n    });\n  });\n\n  xit('should just check the filtered item when click on check all after search by input', done => {\n    const filterOption = (inputValue, option) => option.description.indexOf(inputValue) > -1;\n    const renderFunc = item => item.title;\n    const handleSelectChange = jest.fn();\n    const wrapper = mount(Transfer, {\n      props: {\n        ...searchTransferProps,\n        showSearch: true,\n        filterOption,\n        render: renderFunc,\n      },\n      listeners: {\n        selectChange: handleSelectChange,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      const input = wrapper.findAll('.ant-transfer-list-body-search-wrapper input')[0];\n      input.element.value = 'content2';\n      input.trigger('input');\n      Vue.nextTick(() => {\n        wrapper\n          .findAll('.ant-transfer-list')[0]\n          .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n          .filter(n => {\n            return !n.vnode.data.domProps.checked;\n          })\n          .trigger('change');\n        expect(handleSelectChange).toHaveBeenCalledWith(['1'], []);\n        done();\n      });\n    });\n  });\n\n  xit('should transfer just the filtered item after search by input', done => {\n    const filterOption = (inputValue, option) => option.description.indexOf(inputValue) > -1;\n    const renderFunc = item => item.title;\n    const handleChange = jest.fn();\n    const handleSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {\n      wrapper.setProps({\n        selectedKeys: [...sourceSelectedKeys, ...targetSelectedKeys],\n      });\n    };\n    const wrapper = mount(Transfer, {\n      props: {\n        ...searchTransferProps,\n        showSearch: true,\n        filterOption,\n        render: renderFunc,\n      },\n      listeners: {\n        selectChange: handleSelectChange,\n        change: handleChange,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      const input = wrapper.findAll('.ant-transfer-list-body-search-wrapper input')[0];\n      input.element.value = 'content2';\n      input.trigger('input');\n      Vue.nextTick(() => {\n        wrapper\n          .findAll('.ant-transfer-list')[0]\n          .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n          .filter(n => {\n            return !n.element.checked;\n          })\n          .trigger('change');\n        Vue.nextTick(() => {\n          wrapper.findAll('.ant-btn')[0].trigger('click');\n          expect(handleChange).toHaveBeenCalledWith(['1', '3', '4'], 'right', ['1']);\n          done();\n        });\n      });\n    });\n  });\n\n  xit('should check correctly when there is a search text', done => {\n    const newProps = { ...listCommonProps };\n    delete newProps.targetKeys;\n    delete newProps.selectedKeys;\n    const handleSelectChange = jest.fn();\n    const wrapper = mount(Transfer, {\n      props: {\n        ...newProps,\n        showSearch: true,\n        render: item => item.title,\n      },\n      listeners: {\n        selectChange: handleSelectChange,\n      },\n      sync: false,\n    });\n    Vue.nextTick(() => {\n      wrapper\n        .findAll('.ant-transfer-list-content-item')\n        .filter(n => {\n          return n.vnode.data.key === 'b';\n        })\n        .trigger('click');\n      expect(handleSelectChange).toHaveBeenLastCalledWith(['b'], []);\n\n      const input = wrapper.findAll('.ant-transfer-list-body-search-wrapper input')[0];\n      input.element.value = 'a';\n      input.trigger('input');\n      Vue.nextTick(() => {\n        wrapper\n          .findAll('.ant-transfer-list')[0]\n          .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n          .trigger('change');\n        Vue.nextTick(() => {\n          expect(handleSelectChange).toHaveBeenLastCalledWith(['b', 'a'], []);\n          wrapper\n            .findAll('.ant-transfer-list')[0]\n            .findAll('.ant-transfer-list-header input[type=\"checkbox\"]')\n            .trigger('change');\n          expect(handleSelectChange).toHaveBeenLastCalledWith(['b'], []);\n          done();\n        });\n      });\n    });\n  });\n\n  it('should show sorted targetkey', () => {\n    const sortedTargetKeyProps = {\n      dataSource: [\n        {\n          key: 'a',\n          title: 'a',\n        },\n        {\n          key: 'b',\n          title: 'b',\n        },\n        {\n          key: 'c',\n          title: 'c',\n        },\n      ],\n      targetKeys: ['c', 'b'],\n      lazy: false,\n    };\n    const wrapper = mount({\n      setup() {\n        return () => <Transfer {...sortedTargetKeyProps} render={item => item.title} />;\n      },\n    });\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n  it('should add custom styles when their props are provided', async () => {\n    const style = {\n      backgroundColor: 'red',\n    };\n    const listStyle = {\n      backgroundColor: 'blue',\n    };\n    const operationStyle = {\n      backgroundColor: 'yellow',\n    };\n    const transferProps = {\n      props: {\n        ...listCommonProps,\n        listStyle,\n        operationStyle,\n      },\n      style,\n    };\n    const component = mount(\n      {\n        render() {\n          return <Transfer {...transferProps} />;\n        },\n      },\n      { sync: false },\n    );\n    await asyncExpect(() => {\n      const wrapper = component.find('.ant-transfer');\n      // const list = component.findAll('.ant-transfer-list');\n      // const listSource = list[0];\n      // const listTarget = list[list.length - 1];\n      // const operation = component.findAll('.ant-transfer-operation')[0];\n      expect(wrapper.element.style).toHaveProperty('backgroundColor', 'red');\n      // expect(listSource.element.style).toHaveProperty('backgroundColor', 'blue');\n      // expect(listTarget.element.style).toHaveProperty('backgroundColor', 'blue');\n      // expect(operation.element.style).toHaveProperty('backgroundColor', 'yellow');\n    });\n  });\n});\n"
  },
  {
    "path": "components/transfer/__tests__/list.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport List from '../list';\n\nconst listCommonProps = {\n  prefixCls: 'ant-transfer-list',\n  dataSource: [\n    {\n      key: 'a',\n      title: 'a',\n    },\n    {\n      key: 'b',\n      title: 'b',\n    },\n    {\n      key: 'c',\n      title: 'c',\n      disabled: true,\n    },\n  ],\n  checkedKeys: ['a'],\n  notFoundContent: 'Not Found',\n  lazy: false,\n};\n\ndescribe('List', () => {\n  it('should render correctly', () => {\n    const props = {\n      props: listCommonProps,\n    };\n    const wrapper = mount(List, props);\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('should check top Checkbox while all available items are checked', () => {\n    const props = {\n      props: {\n        ...listCommonProps,\n        checkedKeys: ['a', 'b'],\n      },\n    };\n    const wrapper = mount(List, props);\n    expect(\n      wrapper\n        .findComponent({\n          name: 'ACheckbox',\n        })\n        .props().checked,\n    ).toBeTruthy();\n  });\n});\n"
  },
  {
    "path": "components/transfer/__tests__/search.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect } from '../../../tests/utils';\nimport Search from '../search';\nimport Transfer from '../index';\n\ndescribe('Search', () => {\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n\n  afterEach(() => {\n    errorSpy.mockReset();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n  });\n\n  it('should show cross icon when input value exists', () => {\n    const props = {\n      props: {\n        value: '',\n      },\n    };\n    const wrapper = mount(Search, props);\n\n    expect(wrapper.html()).toMatchSnapshot();\n\n    wrapper.setProps({ value: 'a' });\n\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n\n  it('onSearch', async () => {\n    const dataSource = [\n      {\n        key: 'a',\n        title: 'a',\n        description: 'a',\n      },\n      {\n        key: 'b',\n        title: 'b',\n        description: 'b',\n      },\n      {\n        key: 'c',\n        title: 'c',\n        description: 'c',\n      },\n    ];\n\n    const onSearch = jest.fn();\n    const wrapper = mount(\n      {\n        render() {\n          return (\n            <Transfer\n              dataSource={dataSource}\n              selectedKeys={[]}\n              targetKeys={[]}\n              render={item => item.title}\n              onSearch={onSearch}\n              showSearch\n            />\n          );\n        },\n      },\n      {\n        sync: false,\n      },\n    );\n    await asyncExpect(() => {\n      const input = wrapper.findAll('.ant-input')[0];\n      input.element.value = 'a';\n      input.trigger('input');\n    });\n\n    await asyncExpect(() => {\n      expect(onSearch).toBeCalledWith('left', 'a');\n    });\n\n    onSearch.mockReset();\n\n    wrapper.findAll('.ant-input-clear-icon')[0].trigger('click');\n    expect(onSearch).toBeCalledWith('left', '');\n  });\n});\n"
  },
  {
    "path": "components/transfer/demo/advanced.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 高级用法\n  en-US: Advanced\n---\n\n## zh-CN\n\n穿梭框高级用法，可配置操作文案，可定制宽高，可对底部进行自定义渲染。\n\n## en-US\n\nYou can customize the labels of the transfer buttons, the width and height of the columns, and what should be displayed in the footer.\n\n</docs>\n\n<template>\n  <a-transfer\n    v-model:target-keys=\"targetKeys\"\n    :data-source=\"mockData\"\n    show-search\n    :list-style=\"{\n      width: '250px',\n      height: '300px',\n    }\"\n    :operations=\"['to right', 'to left']\"\n    :render=\"item => `${item.title}-${item.description}`\"\n    @change=\"handleChange\"\n  >\n    <template #footer=\"{ direction }\">\n      <a-button\n        v-if=\"direction === 'left'\"\n        size=\"small\"\n        style=\"float: left; margin: 5px\"\n        @click=\"getMock\"\n      >\n        left reload\n      </a-button>\n      <a-button\n        v-else-if=\"direction === 'right'\"\n        size=\"small\"\n        style=\"float: right; margin: 5px\"\n        @click=\"getMock\"\n      >\n        right reload\n      </a-button>\n    </template>\n    <template #notFoundContent>\n      <span>没数据</span>\n    </template>\n  </a-transfer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, onMounted } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  chosen: boolean;\n}\nconst mockData = ref<MockData[]>([]);\n\nconst targetKeys = ref<string[]>([]);\nonMounted(() => {\n  getMock();\n});\nconst getMock = () => {\n  const keys = [];\n  const mData = [];\n  for (let i = 0; i < 20; i++) {\n    const data = {\n      key: i.toString(),\n      title: `content${i + 1}`,\n      description: `description of content${i + 1}`,\n      chosen: Math.random() * 2 > 1,\n    };\n    if (data.chosen) {\n      keys.push(data.key);\n    }\n    mData.push(data);\n  }\n  mockData.value = mData;\n  targetKeys.value = keys;\n};\nconst handleChange = (keys: string[], direction: string, moveKeys: string[]) => {\n  console.log(keys, direction, moveKeys);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最基本的用法，展示了 `dataSource`、`targetKeys`、每行的渲染函数 `render` 以及回调函数 `change` `selectChange` `scroll` 的用法。\n\n## en-US\n\nThe most basic usage of `Transfer` involves providing the source data and target keys arrays, plus the rendering and some callback functions.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      v-model:selected-keys=\"selectedKeys\"\n      :data-source=\"mockData\"\n      :titles=\"['Source', 'Target']\"\n      :render=\"item => item.title\"\n      :disabled=\"disabled\"\n      @change=\"handleChange\"\n      @selectChange=\"handleSelectChange\"\n      @scroll=\"handleScroll\"\n    />\n    <a-switch\n      v-model:checked=\"disabled\"\n      un-checked-children=\"enabled\"\n      checked-children=\"disabled\"\n      style=\"margin-top: 16px\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  disabled: boolean;\n}\nconst mockData: MockData[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n    disabled: i % 3 < 1,\n  });\n}\n\nconst oriTargetKeys = mockData.filter(item => +item.key % 3 > 1).map(item => item.key);\nconst disabled = ref<boolean>(false);\n\nconst targetKeys = ref<string[]>(oriTargetKeys);\n\nconst selectedKeys = ref<string[]>(['1', '4']);\n\nconst handleChange = (nextTargetKeys: string[], direction: string, moveKeys: string[]) => {\n  console.log('targetKeys: ', nextTargetKeys);\n  console.log('direction: ', direction);\n  console.log('moveKeys: ', moveKeys);\n};\nconst handleSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {\n  console.log('sourceSelectedKeys: ', sourceSelectedKeys);\n  console.log('targetSelectedKeys: ', targetSelectedKeys);\n};\nconst handleScroll = (direction: string, e: Event) => {\n  console.log('direction:', direction);\n  console.log('target:', e.target);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/custom-item.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义渲染行数据\n  en-US: Custom datasource\n---\n\n## zh-CN\n\n自定义渲染每一个 Transfer Item，可用于渲染复杂数据。\n\n## en-US\n\nCustom each Transfer Item, and in this way you can render a complex datasource.\n\n</docs>\n\n<template>\n  <a-transfer\n    v-model:target-keys=\"targetKeys\"\n    :data-source=\"mockData\"\n    :list-style=\"{\n      width: '300px',\n      height: '300px',\n    }\"\n    @change=\"handleChange\"\n  >\n    <template #render=\"item\">\n      <span class=\"custom-item\" style=\"color: red\">{{ item.title }} - {{ item.description }}</span>\n    </template>\n  </a-transfer>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, onMounted } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  chosen: boolean;\n}\nconst mockData = ref<MockData[]>([]);\n\nconst targetKeys = ref<string[]>([]);\nonMounted(() => {\n  getMock();\n});\nconst getMock = () => {\n  const keys = [];\n  const mData = [];\n  for (let i = 0; i < 20; i++) {\n    const data = {\n      key: i.toString(),\n      title: `content${i + 1}`,\n      description: `description of content${i + 1}`,\n      chosen: Math.random() * 2 > 1,\n    };\n    if (data.chosen) {\n      keys.push(data.key);\n    }\n    mData.push(data);\n  }\n  mockData.value = mData;\n  targetKeys.value = keys;\n};\nconst handleChange = (keys: string[], direction: string, moveKeys: string[]) => {\n  console.log(keys, direction, moveKeys);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/custom-select-all-labels.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 自定义全选文字\n  en-US: Custom Select All Labels\n---\n\n\n## zh-CN\n\n自定义穿梭框全选按钮的文字。\n\n## en-US\n\nCustom the labels for select all checkboxs.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      v-model:selected-keys=\"selectedKeys\"\n      :data-source=\"mockData\"\n      :titles=\"['Source', 'Target']\"\n      :render=\"item => item.title\"\n      :select-all-labels=\"selectAllLabels\"\n      :disabled=\"disabled\"\n      @change=\"handleChange\"\n      @selectChange=\"handleSelectChange\"\n      @scroll=\"handleScroll\"\n    />\n    <a-switch\n      v-model:checked=\"disabled\"\n      un-checked-children=\"enabled\"\n      checked-children=\"disabled\"\n      style=\"margin-top: 16px\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { SelectAllLabel } from 'ant-design-vue/es/transfer';\n\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  disabled: boolean;\n}\nconst mockData: MockData[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n    disabled: i % 3 < 1,\n  });\n}\n\nconst oriTargetKeys = mockData.filter(item => +item.key % 3 > 1).map(item => item.key);\nconst disabled = ref<boolean>(false);\n\nconst targetKeys = ref<string[]>(oriTargetKeys);\n\nconst selectedKeys = ref<string[]>(['1', '4']);\n\nconst handleChange = (nextTargetKeys: string[], direction: string, moveKeys: string[]) => {\n  console.log('targetKeys: ', nextTargetKeys);\n  console.log('direction: ', direction);\n  console.log('moveKeys: ', moveKeys);\n};\nconst handleSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {\n  console.log('sourceSelectedKeys: ', sourceSelectedKeys);\n  console.log('targetSelectedKeys: ', targetSelectedKeys);\n};\nconst handleScroll = (direction: string, e: Event) => {\n  console.log('direction:', direction);\n  console.log('target:', e.target);\n};\n\nconst selectAllLabels: SelectAllLabel[] = [\n  'Select All',\n  ({ selectedCount, totalCount }) => `${selectedCount}/${totalCount}`,\n];\n</script>\n"
  },
  {
    "path": "components/transfer/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n    <oneway />\n    <search />\n    <advanced />\n    <custom-item />\n    <pagination />\n    <table-transfer />\n    <tree-transfer />\n    <statusVue />\n    <custom-select-all-labels></custom-select-all-labels>\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Oneway from './oneway.vue';\nimport Search from './search.vue';\nimport Advanced from './advanced.vue';\nimport CustomItem from './custom-item.vue';\nimport CustomSelectAllLabels from './custom-select-all-labels.vue';\nimport TableTransfer from './table-transfer.vue';\nimport TreeTransfer from './tree-transfer.vue';\nimport Pagination from './pagination.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    statusVue,\n    Basic,\n    Oneway,\n    Search,\n    Advanced,\n    CustomItem,\n    CustomSelectAllLabels,\n    Pagination,\n    TableTransfer,\n    TreeTransfer,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/transfer/demo/oneway.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 单向样式\n  en-US: One Way\n---\n\n## zh-CN\n\n通过 `oneWay` 将 Transfer 转为单向样式。\n\n## en-US\n\nUse `oneWay` to makes Transfer to one way style.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      v-model:selected-keys=\"selectedKeys\"\n      :data-source=\"mockData\"\n      :one-way=\"true\"\n      :titles=\"['Source', 'Target']\"\n      :render=\"item => item.title\"\n      :disabled=\"disabled\"\n      @change=\"handleChange\"\n      @selectChange=\"handleSelectChange\"\n      @scroll=\"handleScroll\"\n    />\n    <a-switch\n      v-model:checked=\"disabled\"\n      un-checked-children=\"enabled\"\n      checked-children=\"disabled\"\n      style=\"margin-top: 16px\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  disabled: boolean;\n}\nconst mockData: MockData[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n    disabled: i % 3 < 1,\n  });\n}\n\nconst disabled = ref<boolean>(false);\n\nconst targetKeys = ref<string[]>([]);\n\nconst selectedKeys = ref<string[]>(['1', '4']);\n\nconst handleChange = (nextTargetKeys: string[], direction: string, moveKeys: string[]) => {\n  console.log('targetKeys: ', nextTargetKeys);\n  console.log('direction: ', direction);\n  console.log('moveKeys: ', moveKeys);\n};\nconst handleSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {\n  console.log('sourceSelectedKeys: ', sourceSelectedKeys);\n  console.log('targetSelectedKeys: ', targetSelectedKeys);\n};\nconst handleScroll = (direction: string, e: Event) => {\n  console.log('direction:', direction);\n  console.log('target:', e.target);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/pagination.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 分页\n  en-US: Pagination\n---\n\n## zh-CN\n\n大数据下使用分页。\n\n## en-US\n\nlarge count of items with pagination.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      :data-source=\"mockData\"\n      :render=\"item => item.title\"\n      :disabled=\"disabled\"\n      pagination\n      @change=\"handleChange\"\n    />\n    <a-switch\n      v-model:checked=\"disabled\"\n      un-checked-children=\"enabled\"\n      checked-children=\"disabled\"\n      style=\"margin-top: 16px\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n}\nconst mockData: MockData[] = [];\nfor (let i = 0; i < 200; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n  });\n}\n\nconst oriTargetKeys = mockData.filter(item => +item.key % 3 > 1).map(item => item.key);\n\nconst disabled = ref<boolean>(false);\n\nconst targetKeys = ref<string[]>(oriTargetKeys);\n\nconst handleChange = (nextTargetKeys: string[], direction: string, moveKeys: string[]) => {\n  console.log('targetKeys: ', nextTargetKeys);\n  console.log('direction: ', direction);\n  console.log('moveKeys: ', moveKeys);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/search.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 带搜索框\n  en-US: Search\n---\n\n## zh-CN\n\n带搜索框的穿梭框，可以自定义搜索函数。\n\n## en-US\n\nTransfer with a search box.\n\n</docs>\n\n<template>\n  <a-transfer\n    v-model:target-keys=\"targetKeys\"\n    :data-source=\"mockData\"\n    show-search\n    :filter-option=\"filterOption\"\n    :render=\"item => item.title\"\n    @change=\"handleChange\"\n    @search=\"handleSearch\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  chosen: boolean;\n}\nconst mockData = ref<MockData[]>([]);\n\nconst targetKeys = ref<string[]>([]);\nonMounted(() => {\n  getMock();\n});\nconst getMock = () => {\n  const keys = [];\n  const mData = [];\n  for (let i = 0; i < 20; i++) {\n    const data = {\n      key: i.toString(),\n      title: `content${i + 1}`,\n      description: `description of content${i + 1}`,\n      chosen: Math.random() * 2 > 1,\n    };\n    if (data.chosen) {\n      keys.push(data.key);\n    }\n    mData.push(data);\n  }\n  mockData.value = mData;\n  targetKeys.value = keys;\n};\nconst filterOption = (inputValue: string, option: MockData) => {\n  return option.description.indexOf(inputValue) > -1;\n};\nconst handleChange = (keys: string[], direction: string, moveKeys: string[]) => {\n  console.log(keys, direction, moveKeys);\n};\n\nconst handleSearch = (dir: string, value: string) => {\n  console.log('search:', dir, value);\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 DatePicker 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to DatePicker with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-transfer status=\"error\" />\n    <a-transfer status=\"warning\" show-search />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/transfer/demo/table-transfer.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 表格穿梭框\n  en-US: Table Transfer\n---\n\n## zh-CN\n\n使用 Table 组件作为自定义渲染列表。\n\n## en-US\n\nCustomize render list with Table component.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      :data-source=\"mockData\"\n      :disabled=\"disabled\"\n      :show-search=\"showSearch\"\n      :filter-option=\"(inputValue, item) => item.title.indexOf(inputValue) !== -1\"\n      :show-select-all=\"false\"\n      @change=\"onChange\"\n    >\n      <template\n        #children=\"{\n          direction,\n          filteredItems,\n          selectedKeys,\n          disabled: listDisabled,\n          onItemSelectAll,\n          onItemSelect,\n        }\"\n      >\n        <a-table\n          :row-selection=\"\n            getRowSelection({\n              disabled: listDisabled,\n              selectedKeys,\n              onItemSelectAll,\n              onItemSelect,\n            })\n          \"\n          :columns=\"direction === 'left' ? leftColumns : rightColumns\"\n          :data-source=\"filteredItems\"\n          size=\"small\"\n          :style=\"{ pointerEvents: listDisabled ? 'none' : null }\"\n          :custom-row=\"\n            ({ key, disabled: itemDisabled }) => ({\n              onClick: () => {\n                if (itemDisabled || listDisabled) return;\n                onItemSelect(key, !selectedKeys.includes(key));\n              },\n            })\n          \"\n        />\n      </template>\n    </a-transfer>\n    <a-switch\n      v-model:checked=\"disabled\"\n      un-checked-children=\"disabled\"\n      checked-children=\"disabled\"\n      style=\"margin-top: 16px\"\n    />\n    <a-switch\n      v-model:checked=\"showSearch\"\n      un-checked-children=\"showSearch\"\n      checked-children=\"showSearch\"\n      style=\"margin-top: 16px\"\n    />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\ninterface MockData {\n  key: string;\n  title: string;\n  description: string;\n  disabled: boolean;\n}\ntype tableColumn = Record<string, string>;\nconst mockData: MockData[] = [];\nfor (let i = 0; i < 10; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n    disabled: i % 4 === 0,\n  });\n}\n\nconst originTargetKeys = mockData.filter(item => +item.key % 3 > 1).map(item => item.key);\n\nconst leftTableColumns = [\n  {\n    dataIndex: 'title',\n    title: 'Name',\n  },\n  {\n    dataIndex: 'description',\n    title: 'Description',\n  },\n];\nconst rightTableColumns = [\n  {\n    dataIndex: 'title',\n    title: 'Name',\n  },\n];\n\nconst targetKeys = ref<string[]>(originTargetKeys);\nconst disabled = ref<boolean>(false);\nconst showSearch = ref<boolean>(false);\nconst leftColumns = ref<tableColumn[]>(leftTableColumns);\nconst rightColumns = ref<tableColumn[]>(rightTableColumns);\n\nconst onChange = (nextTargetKeys: string[]) => {\n  console.log('nextTargetKeys', nextTargetKeys);\n};\n\nconst getRowSelection = ({\n  disabled,\n  selectedKeys,\n  onItemSelectAll,\n  onItemSelect,\n}: Record<string, any>) => {\n  return {\n    getCheckboxProps: (item: Record<string, string | boolean>) => ({\n      disabled: disabled || item.disabled,\n    }),\n    onSelectAll(selected: boolean, selectedRows: Record<string, string | boolean>[]) {\n      const treeSelectedKeys = selectedRows.filter(item => !item.disabled).map(({ key }) => key);\n      onItemSelectAll(treeSelectedKeys, selected);\n    },\n    onSelect({ key }: Record<string, string>, selected: boolean) {\n      onItemSelect(key, selected);\n    },\n    selectedRowKeys: selectedKeys,\n  };\n};\n</script>\n"
  },
  {
    "path": "components/transfer/demo/tree-transfer.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 树穿梭框\n  en-US: Tree Transfer\n---\n\n## zh-CN\n\n使用 Tree 组件作为自定义渲染列表。\n\n## en-US\n\nCustomize render list with Tree component.\n\n</docs>\n\n<template>\n  <div>\n    <a-transfer\n      v-model:target-keys=\"targetKeys\"\n      class=\"tree-transfer\"\n      :data-source=\"dataSource\"\n      :render=\"item => item.title\"\n      :show-select-all=\"false\"\n    >\n      <template #children=\"{ direction, selectedKeys, onItemSelect }\">\n        <a-tree\n          v-if=\"direction === 'left'\"\n          block-node\n          checkable\n          check-strictly\n          default-expand-all\n          :checked-keys=\"[...selectedKeys, ...targetKeys]\"\n          :tree-data=\"treeData\"\n          @check=\"\n            (_, props) => {\n              onChecked(props, [...selectedKeys, ...targetKeys], onItemSelect);\n            }\n          \"\n          @select=\"\n            (_, props) => {\n              onChecked(props, [...selectedKeys, ...targetKeys], onItemSelect);\n            }\n          \"\n        />\n      </template>\n    </a-transfer>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nimport type { TransferProps, TreeProps } from 'ant-design-vue';\nconst tData: TransferProps['dataSource'] = [\n  { key: '0-0', title: '0-0' },\n  {\n    key: '0-1',\n    title: '0-1',\n    children: [\n      { key: '0-1-0', title: '0-1-0' },\n      { key: '0-1-1', title: '0-1-1' },\n    ],\n  },\n  { key: '0-2', title: '0-3' },\n];\n\nconst transferDataSource: TransferProps['dataSource'] = [];\nfunction flatten(list: TransferProps['dataSource'] = []) {\n  list.forEach(item => {\n    transferDataSource.push(item);\n    flatten(item.children);\n  });\n}\nflatten(JSON.parse(JSON.stringify(tData)));\n\nfunction isChecked(selectedKeys: (string | number)[], eventKey: string | number) {\n  return selectedKeys.indexOf(eventKey) !== -1;\n}\n\nfunction handleTreeData(treeNodes: TransferProps['dataSource'], targetKeys: string[] = []) {\n  return treeNodes.map(({ children, ...props }) => ({\n    ...props,\n    disabled: targetKeys.includes(props.key as string),\n    children: handleTreeData(children ?? [], targetKeys),\n  }));\n}\nconst targetKeys = ref<string[]>([]);\n\nconst dataSource = ref(transferDataSource);\n\nconst treeData = computed(() => {\n  return handleTreeData(tData, targetKeys.value);\n});\n\nconst onChecked = (\n  e: Parameters<TreeProps['onCheck']>[1] | Parameters<TreeProps['onSelect']>[1],\n  checkedKeys: string[],\n  onItemSelect: (n: any, c: boolean) => void,\n) => {\n  const { eventKey } = e.node;\n  onItemSelect(eventKey, !isChecked(checkedKeys, eventKey));\n};\n</script>\n<style scoped>\n.tree-transfer .ant-transfer-list:first-child {\n  width: 50%;\n  flex: none;\n}\n</style>\n"
  },
  {
    "path": "components/transfer/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Transfer\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*EAApQ5ephigAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*yv12S4sSRAEAAAAAAAAAAAAADrJ8AQ/original\n---\n\nAlert component for feedback.\n\n## When To Use\n\n- When you need to show alert messages to users.\n- When you need a persistent static container which is closable by user actions.\n\nTransfer the elements between two columns in an intuitive and efficient way.\n\nOne or more elements can be selected from either column, one click on the proper `direction` button, and the transfer is done. The left column is considered the `source` and the right column is considered the `target`. As you can see in the API description, these names are reflected in.\n\n## API\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| dataSource | Used for setting the source data. The elements that are part of this array will be present the left column. Except the elements whose keys are included in `targetKeys` prop. | \\[{key: string.isRequired,title: string.isRequired,description: string,disabled: bool}] | \\[] |  |\n| disabled | Whether disabled transfer | boolean | false |  |\n| filterOption | A function to determine whether an item should show in search result list | (inputValue, option): boolean |  |  |\n| footer | customize the progress dot by setting a scoped slot | slot=\"footer\" slot-scope=\"props\" |  |  |\n| listStyle | A custom CSS style used for rendering the transfer columns. | CSSProperties |  |  |\n| locale | i18n text including filter, empty text, item unit, etc | object | `{ itemUnit: 'item', itemsUnit: 'items', notFoundContent: 'The list is empty', searchPlaceholder: 'Search here' }` |  |\n| oneWay | Display as single direction style | boolean | false | 3.0.0 |\n| operations | A set of operations that are sorted from top to bottom. | string\\[] | \\['>', '&lt;'] |  |\n| operationStyle | A custom CSS style used for rendering the operations column | CSSProperties | - | 3.0.0 |\n| pagination | Use pagination. Not work in render props | boolean \\| { pageSize: number, simple: boolean, showSizeChanger?: boolean, showLessItems?: boolean } | false | 3.0.0 |\n| render | The function to generate the item shown on a column. Based on an record (element of the dataSource array), this function should return a element which is generated from that record. Also, it can return a plain object with `value` and `label`, `label` is a element and `value` is for title | Function(record) \\| slot |  |  |\n| selectAllLabels | A set of customized labels for select all checkboxes on the header | VueNode \\| ((info: { selectedCount: number; totalCount: number }) => VueNode); | - | 3.0.0 |\n| selectedKeys(v-model) | A set of keys of selected items. | string\\[] | \\[] |  |\n| showSearch | If included, a search box is shown on each column. | boolean | false |  |\n| showSelectAll | Show select all checkbox on the header | boolean | true |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| targetKeys(v-model) | A set of keys of elements that are listed on the right column. | string\\[] | \\[] |  |\n| titles | A set of titles that are sorted from left to right. | string\\[] | - |  |\n\n### events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| change | A callback function that is executed when the transfer between columns is complete. | (targetKeys, direction, moveKeys): void |  |\n| scroll | A callback function which is executed when scroll options list | (direction, event): void |  |\n| search | A callback function which is executed when search field are changed | (direction: 'left'\\|'right', value: string): void | - |\n| selectChange | A callback function which is executed when selected items are changed. | (sourceSelectedKeys, targetSelectedKeys): void |  |\n\n### Render Props\n\nTransfer accept `children` to customize render list, using follow props:\n\n```json\n{\n  \"direction\": String,\n  \"disabled\": Boolean,\n  \"filteredItems\": Array,\n  \"selectedKeys\": Array,\n  \"onItemSelect\": Function,\n  \"onItemSelectAll\": Function\n}\n```\n\n| Property        | Description             | Type                                 | Version |\n| --------------- | ----------------------- | ------------------------------------ | ------- |\n| direction       | List render direction   | 'left' \\| 'right'                    |         |\n| disabled        | Disable list or not     | boolean                              |         |\n| filteredItems   | Filtered items          | TransferItem\\[]                      |         |\n| selectedKeys    | Selected items          | string\\[]                            |         |\n| onItemSelect    | Select item             | (key: string, selected: boolean)     |         |\n| onItemSelectAll | Select a group of items | (keys: string\\[], selected: boolean) |         |\n\n#### example\n\n```html\n<a-transfer>\n  <template\n    #children=\"{\n      direction,\n      filteredItems,\n      selectedKeys,\n      disabled: listDisabled,\n      onItemSelectAll,\n      onItemSelect,\n    }\"\n  >\n    <your-component />\n  <template>\n</a-transfer>\n```\n\n## Warning\n\nAccording the standard of Vue, the key should always be supplied directly to the elements in the array. In Transfer, the keys should be set on the elements included in `dataSource` array. By default, `key` property is used as an unique identifier.\n\nIf there's no `key` in your data, you should use `rowKey` to specify the key that will be used for uniquely identify each element.\n\n```jsx\n// eg. your primary key is `uid`\nreturn <Transfer :rowKey=\"record => record.uid\" />;\n```\n"
  },
  {
    "path": "components/transfer/index.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { computed, watchEffect, defineComponent, ref, watch, toRaw } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { getPropsSlot } from '../_util/props-util';\nimport classNames from '../_util/classNames';\nimport List from './list';\nimport Operation from './operation';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\n\nimport defaultLocale from '../locale/en_US';\nimport type { VueNode, CustomSlotsType } from '../_util/type';\nimport {\n  withInstall,\n  stringType,\n  arrayType,\n  someType,\n  booleanType,\n  objectType,\n  functionType,\n} from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\n\nimport type { TransferListBodyProps } from './ListBody';\nimport type { PaginationType } from './interface';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport type { RenderEmptyHandler } from '../config-provider/renderEmpty';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport { groupKeysMap, groupDisabledKeysMap } from '../_util/transKeys';\n// CSSINJS\nimport useStyle from './style';\n\nexport type { TransferListProps } from './list';\nexport type { TransferOperationProps } from './operation';\nexport type { TransferSearchProps } from './search';\n\nexport type TransferDirection = 'left' | 'right';\n\nexport interface RenderResultObject {\n  label: VueNode;\n  value: string;\n}\n\nexport type RenderResult = VueNode | RenderResultObject | string | null;\n\nexport interface TransferItem {\n  key?: string;\n  title?: string;\n  description?: string;\n  disabled?: boolean;\n  [name: string]: any;\n}\n\nexport type KeyWise<T> = T & { key: string };\n\nexport type KeyWiseTransferItem = KeyWise<TransferItem>;\n\ntype TransferRender<RecordType> = (item: RecordType) => RenderResult;\n\nexport interface ListStyle {\n  direction: TransferDirection;\n}\n\nexport type SelectAllLabel =\n  | VueNode\n  | ((info: { selectedCount: number; totalCount: number }) => VueNode);\n\nexport interface TransferLocale {\n  titles?: VueNode[];\n  notFoundContent?: VueNode;\n  searchPlaceholder: string;\n  itemUnit: string;\n  itemsUnit: string;\n  remove?: string;\n  selectAll?: string;\n  selectCurrent?: string;\n  selectInvert?: string;\n  removeAll?: string;\n  removeCurrent?: string;\n}\n\nexport const transferProps = () => ({\n  id: String,\n  prefixCls: String,\n  dataSource: arrayType<TransferItem[]>([]),\n  disabled: booleanType(),\n  targetKeys: arrayType<string[]>(),\n  selectedKeys: arrayType<string[]>(),\n  render: functionType<TransferRender<TransferItem>>(),\n  listStyle: someType<((style: ListStyle) => CSSProperties) | CSSProperties>(\n    [Function, Object],\n    () => ({}),\n  ),\n  operationStyle: objectType<CSSProperties>(undefined as CSSProperties),\n  titles: arrayType<string[]>(),\n  operations: arrayType<string[]>(),\n  showSearch: booleanType(false),\n  filterOption: functionType<(inputValue: string, item: TransferItem) => boolean>(),\n  searchPlaceholder: String,\n  notFoundContent: PropTypes.any,\n  locale: objectType(),\n  rowKey: functionType<(record: TransferItem) => string>(),\n  showSelectAll: booleanType(),\n  selectAllLabels: arrayType<SelectAllLabel[]>(),\n  children: functionType<(props: TransferListBodyProps) => VueNode>(),\n  oneWay: booleanType(),\n  pagination: someType<PaginationType>([Object, Boolean]),\n  status: stringType<InputStatus>(),\n  onChange:\n    functionType<\n      (targetKeys: string[], direction: TransferDirection, moveKeys: string[]) => void\n    >(),\n  onSelectChange:\n    functionType<(sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void>(),\n  onSearch: functionType<(direction: TransferDirection, value: string) => void>(),\n  onScroll: functionType<(direction: TransferDirection, e: UIEvent) => void>(),\n  'onUpdate:targetKeys': functionType<(keys: string[]) => void>(),\n  'onUpdate:selectedKeys': functionType<(keys: string[]) => void>(),\n});\n\nexport type TransferProps = Partial<ExtractPropTypes<ReturnType<typeof transferProps>>>;\n\nconst Transfer = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATransfer',\n  inheritAttrs: false,\n  props: transferProps(),\n  slots: Object as CustomSlotsType<{\n    leftTitle?: any;\n    rightTitle?: any;\n    children?: any;\n    render?: TransferItem;\n    notFoundContent?: any;\n    leftSelectAllLabel?: any;\n    rightSelectAllLabel?: any;\n    footer?: any;\n    default?: any;\n  }>,\n  // emits: ['update:targetKeys', 'update:selectedKeys', 'change', 'search', 'scroll', 'selectChange'],\n  setup(props, { emit, attrs, slots, expose }) {\n    const { configProvider, prefixCls, direction } = useConfigInject('transfer', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const sourceSelectedKeys = ref([]);\n    const targetSelectedKeys = ref([]);\n\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    watch(\n      () => props.selectedKeys,\n      () => {\n        sourceSelectedKeys.value =\n          props.selectedKeys?.filter(key => props.targetKeys.indexOf(key) === -1) || [];\n        targetSelectedKeys.value =\n          props.selectedKeys?.filter(key => props.targetKeys.indexOf(key) > -1) || [];\n      },\n      { immediate: true },\n    );\n\n    const getLocale = (transferLocale: TransferLocale, renderEmpty: RenderEmptyHandler) => {\n      // Keep old locale props still working.\n      const oldLocale: { notFoundContent?: any; searchPlaceholder?: string } = {\n        notFoundContent: renderEmpty('Transfer'),\n      };\n      const notFoundContent = getPropsSlot(slots, props, 'notFoundContent');\n      if (notFoundContent) {\n        oldLocale.notFoundContent = notFoundContent;\n      }\n      if (props.searchPlaceholder !== undefined) {\n        oldLocale.searchPlaceholder = props.searchPlaceholder;\n      }\n\n      return { ...transferLocale, ...oldLocale, ...props.locale };\n    };\n\n    const moveTo = (direction: TransferDirection) => {\n      const { targetKeys = [], dataSource = [] } = props;\n      const moveKeys = direction === 'right' ? sourceSelectedKeys.value : targetSelectedKeys.value;\n      const dataSourceDisabledKeysMap = groupDisabledKeysMap(dataSource);\n      // filter the disabled options\n      const newMoveKeys = moveKeys.filter(key => !dataSourceDisabledKeysMap.has(key));\n      const newMoveKeysMap = groupKeysMap(newMoveKeys);\n\n      // move items to target box\n      const newTargetKeys =\n        direction === 'right'\n          ? newMoveKeys.concat(targetKeys)\n          : targetKeys.filter(targetKey => !newMoveKeysMap.has(targetKey));\n\n      // empty checked keys\n      const oppositeDirection = direction === 'right' ? 'left' : 'right';\n      direction === 'right' ? (sourceSelectedKeys.value = []) : (targetSelectedKeys.value = []);\n      emit('update:targetKeys', newTargetKeys);\n      handleSelectChange(oppositeDirection, []);\n      emit('change', newTargetKeys, direction, newMoveKeys);\n      formItemContext.onFieldChange();\n    };\n\n    const moveToLeft = () => {\n      moveTo('left');\n    };\n    const moveToRight = () => {\n      moveTo('right');\n    };\n\n    const onItemSelectAll = (direction: TransferDirection, selectedKeys: string[]) => {\n      handleSelectChange(direction, selectedKeys);\n    };\n\n    const onLeftItemSelectAll = (selectedKeys: string[]) => {\n      return onItemSelectAll('left', selectedKeys);\n    };\n\n    const onRightItemSelectAll = (selectedKeys: string[]) => {\n      return onItemSelectAll('right', selectedKeys);\n    };\n\n    const handleSelectChange = (direction: TransferDirection, holder: string[]) => {\n      if (direction === 'left') {\n        if (!props.selectedKeys) {\n          sourceSelectedKeys.value = holder;\n        }\n        emit('update:selectedKeys', [...holder, ...targetSelectedKeys.value]);\n        emit('selectChange', holder, toRaw(targetSelectedKeys.value));\n      } else {\n        if (!props.selectedKeys) {\n          targetSelectedKeys.value = holder;\n        }\n        emit('update:selectedKeys', [...holder, ...sourceSelectedKeys.value]);\n        emit('selectChange', toRaw(sourceSelectedKeys.value), holder);\n      }\n    };\n\n    const handleFilter = (direction: TransferDirection, e) => {\n      const value = e.target.value;\n      emit('search', direction, value);\n    };\n\n    const handleLeftFilter = (e: Event) => {\n      handleFilter('left', e);\n    };\n    const handleRightFilter = (e: Event) => {\n      handleFilter('right', e);\n    };\n\n    const handleClear = (direction: TransferDirection) => {\n      emit('search', direction, '');\n    };\n\n    const handleLeftClear = () => {\n      handleClear('left');\n    };\n\n    const handleRightClear = () => {\n      handleClear('right');\n    };\n\n    const onItemSelect = (direction: TransferDirection, selectedKey: string, checked: boolean) => {\n      const holder =\n        direction === 'left' ? [...sourceSelectedKeys.value] : [...targetSelectedKeys.value];\n      const index = holder.indexOf(selectedKey);\n      if (index > -1) {\n        holder.splice(index, 1);\n      }\n      if (checked) {\n        holder.push(selectedKey);\n      }\n      handleSelectChange(direction, holder);\n    };\n\n    const onLeftItemSelect = (selectedKey: string, checked: boolean) => {\n      return onItemSelect('left', selectedKey, checked);\n    };\n    const onRightItemSelect = (selectedKey: string, checked: boolean) => {\n      return onItemSelect('right', selectedKey, checked);\n    };\n    const onRightItemRemove = (targetedKeys: string[]) => {\n      const { targetKeys = [] } = props;\n      const newTargetKeys = targetKeys.filter(key => !targetedKeys.includes(key));\n      emit('update:targetKeys', newTargetKeys);\n      emit('change', newTargetKeys, 'left', [...targetedKeys]);\n    };\n\n    const handleScroll = (direction: TransferDirection, e: UIEvent) => {\n      emit('scroll', direction, e);\n    };\n\n    const handleLeftScroll = (e: UIEvent) => {\n      handleScroll('left', e);\n    };\n    const handleRightScroll = (e: UIEvent) => {\n      handleScroll('right', e);\n    };\n    const handleListStyle = (\n      listStyle: ((style: ListStyle) => CSSProperties) | CSSProperties,\n      direction: TransferDirection,\n    ) => {\n      if (typeof listStyle === 'function') {\n        return listStyle({ direction });\n      }\n      return listStyle;\n    };\n\n    const leftDataSource = ref([]);\n    const rightDataSource = ref([]);\n\n    watchEffect(() => {\n      const { dataSource, rowKey, targetKeys = [] } = props;\n\n      const ld = [];\n      const rd = new Array(targetKeys.length);\n      const targetKeysMap = groupKeysMap(targetKeys);\n      dataSource.forEach(record => {\n        if (rowKey) {\n          record.key = rowKey(record);\n        }\n\n        // rightData should be ordered by targetKeys\n        // leftData should be ordered by dataSource\n        if (targetKeysMap.has(record.key)) {\n          rd[targetKeysMap.get(record.key)!] = record;\n        } else {\n          ld.push(record);\n        }\n      });\n\n      leftDataSource.value = ld;\n      rightDataSource.value = rd;\n    });\n\n    expose({ handleSelectChange });\n\n    const renderTransfer = (transferLocale: TransferLocale) => {\n      const {\n        disabled,\n        operations = [],\n        showSearch,\n        listStyle,\n        operationStyle,\n        filterOption,\n        showSelectAll,\n        selectAllLabels = [],\n        oneWay,\n        pagination,\n        id = formItemContext.id.value,\n      } = props;\n      const { class: className, style } = attrs;\n\n      const children = slots.children;\n      const mergedPagination = !children && pagination;\n\n      const renderEmpty = configProvider.renderEmpty;\n      const locale = getLocale(transferLocale, renderEmpty);\n      const { footer } = slots;\n      const renderItem = props.render || slots.render;\n      const leftActive = targetSelectedKeys.value.length > 0;\n      const rightActive = sourceSelectedKeys.value.length > 0;\n\n      const cls = classNames(\n        prefixCls.value,\n        className,\n        {\n          [`${prefixCls.value}-disabled`]: disabled,\n          [`${prefixCls.value}-customize-list`]: !!children,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        getStatusClassNames(prefixCls.value, mergedStatus.value, formItemInputContext.hasFeedback),\n        hashId.value,\n      );\n      const titles = props.titles;\n      const leftTitle =\n        (titles && titles[0]) ?? slots.leftTitle?.() ?? (locale.titles || ['', ''])[0];\n      const rightTitle =\n        (titles && titles[1]) ?? slots.rightTitle?.() ?? (locale.titles || ['', ''])[1];\n      return (\n        <div {...attrs} class={cls} style={style as CSSProperties} id={id}>\n          <List\n            key=\"leftList\"\n            prefixCls={`${prefixCls.value}-list`}\n            dataSource={leftDataSource.value}\n            filterOption={filterOption}\n            style={handleListStyle(listStyle, 'left')}\n            checkedKeys={sourceSelectedKeys.value}\n            handleFilter={handleLeftFilter}\n            handleClear={handleLeftClear}\n            onItemSelect={onLeftItemSelect}\n            onItemSelectAll={onLeftItemSelectAll}\n            renderItem={renderItem}\n            showSearch={showSearch}\n            renderList={children}\n            onScroll={handleLeftScroll}\n            disabled={disabled}\n            direction={direction.value === 'rtl' ? 'right' : 'left'}\n            showSelectAll={showSelectAll}\n            selectAllLabel={selectAllLabels[0] || slots.leftSelectAllLabel}\n            pagination={mergedPagination}\n            {...locale}\n            v-slots={{ titleText: () => leftTitle, footer }}\n          />\n          <Operation\n            key=\"operation\"\n            class={`${prefixCls.value}-operation`}\n            rightActive={rightActive}\n            rightArrowText={operations[0]}\n            moveToRight={moveToRight}\n            leftActive={leftActive}\n            leftArrowText={operations[1]}\n            moveToLeft={moveToLeft}\n            style={operationStyle}\n            disabled={disabled}\n            direction={direction.value}\n            oneWay={oneWay}\n          />\n          <List\n            key=\"rightList\"\n            prefixCls={`${prefixCls.value}-list`}\n            dataSource={rightDataSource.value}\n            filterOption={filterOption}\n            style={handleListStyle(listStyle, 'right')}\n            checkedKeys={targetSelectedKeys.value}\n            handleFilter={handleRightFilter}\n            handleClear={handleRightClear}\n            onItemSelect={onRightItemSelect}\n            onItemSelectAll={onRightItemSelectAll}\n            onItemRemove={onRightItemRemove}\n            renderItem={renderItem}\n            showSearch={showSearch}\n            renderList={children}\n            onScroll={handleRightScroll}\n            disabled={disabled}\n            direction={direction.value === 'rtl' ? 'left' : 'right'}\n            showSelectAll={showSelectAll}\n            selectAllLabel={selectAllLabels[1] || slots.rightSelectAllLabel}\n            showRemove={oneWay}\n            pagination={mergedPagination}\n            {...locale}\n            v-slots={{ titleText: () => rightTitle, footer }}\n          />\n        </div>\n      );\n    };\n    return () =>\n      wrapSSR(\n        <LocaleReceiver\n          componentName=\"Transfer\"\n          defaultLocale={defaultLocale.Transfer}\n          children={renderTransfer}\n        />,\n      );\n  },\n});\n\nexport default withInstall(Transfer);\n"
  },
  {
    "path": "components/transfer/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: Transfer\nsubtitle: 穿梭框\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*EAApQ5ephigAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*yv12S4sSRAEAAAAAAAAAAAAADrJ8AQ/original\n---\n\n双栏穿梭选择框。\n\n## 何时使用\n\n- 需要在多个可选项中进行多选时。\n- 比起 Select 和 TreeSelect，穿梭框占据更大的空间，可以展示可选项的更多信息。\n\n穿梭选择框用直观的方式在两栏中移动元素，完成选择行为。\n\n选择一个或以上的选项后，点击对应的方向键，可以把选中的选项移动到另一栏。其中，左边一栏为 `source`，右边一栏为 `target`，API 的设计也反映了这两个概念。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| dataSource | 数据源，其中的数据将会被渲染到左边一栏中，`targetKeys` 中指定的除外。 | \\[{key: string.isRequired,title: string.isRequired,description: string,disabled: bool}]\\[] | \\[] |  |\n| disabled | 是否禁用 | boolean | false |  |\n| filterOption | 接收 `inputValue` `option` 两个参数，当 `option` 符合筛选条件时，应返回 `true`，反之则返回 `false`。 | (inputValue, option): boolean |  |  |\n| footer | 可以设置为一个 作用域插槽 | slot=\"footer\" slot-scope=\"props\" |  |  |\n| listStyle | 两个穿梭框的自定义样式 | CSSProperties |  |  |\n| locale | 各种语言 | object | `{ itemUnit: '项', itemsUnit: '项', notFoundContent: '列表为空', searchPlaceholder: '请输入搜索内容' }` |  |\n| oneWay | 展示为单向样式 | boolean | false | 3.0.0 |\n| operations | 操作文案集合，顺序从上至下 | string\\[] | \\['>', '&lt;'] |  |\n| operationStyle | 操作栏的自定义样式 | CSSProperties | - | 3.0.0 |\n| pagination | 使用分页样式，自定义渲染列表下无效 | boolean \\| { pageSize: number, simple: boolean, showSizeChanger?: boolean, showLessItems?: boolean } | flase | 3.0.0 |\n| render | 每行数据渲染函数，该函数的入参为 `dataSource` 中的项，返回值为 element。或者返回一个普通对象，其中 `label` 字段为 element，`value` 字段为 title | Function(record)\\| slot |  |  |\n| selectAllLabels | 自定义顶部多选框标题的集合 | VueNode \\| ((info: { selectedCount: number; totalCount: number }) => VueNode); | - | 3.0.0 |\n| selectedKeys(v-model) | 设置哪些项应该被选中 | string\\[] | \\[] |  |\n| showSearch | 是否显示搜索框 | boolean | false |  |\n| showSelectAll | 是否展示全选勾选框 | boolean | true |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| targetKeys(v-model) | 显示在右侧框数据的 key 集合 | string\\[] | \\[] |  |\n| titles | 标题集合，顺序从左至右 | string\\[] | \\['', ''] |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- |\n| change | 选项在两栏之间转移时的回调函数 | (targetKeys, direction, moveKeys): void |  |\n| scroll | 选项列表滚动时的回调函数 | (direction, event): void |  |\n| search | 搜索框内容时改变时的回调函数 | (direction: 'left'\\|'right', value: string): void | - |\n| selectChange | 选中项发生改变时的回调函数 | (sourceSelectedKeys, targetSelectedKeys): void |  |\n\n### Render Props\n\nTransfer 支持接收 `children` 自定义渲染列表，并返回以下参数：\n\n```json\n{\n  \"direction\": String,\n  \"disabled\": Boolean,\n  \"filteredItems\": Array,\n  \"selectedKeys\": Array,\n  \"onItemSelect\": Function,\n  \"onItemSelectAll\": Function\n}\n```\n\n| 参数          | 说明           | 类型                                 | 版本 |\n| ------------- | -------------- | ------------------------------------ | ---- |\n| direction     | 渲染列表的方向 | 'left' \\| 'right'                    |      |\n| disabled      | 是否禁用列表   | boolean                              |      |\n| filteredItems | 过滤后的数据   | TransferItem\\[]                      |      |\n| itemSelect    | 勾选条目       | (key: string, selected: boolean)     |      |\n| itemSelectAll | 勾选一组条目   | (keys: string\\[], selected: boolean) |      |\n| selectedKeys  | 选中的条目     | string\\[]                            |      |\n\n#### 参考示例\n\n```html\n<a-transfer>\n  <template\n    #children=\"{\n      direction,\n      filteredItems,\n      selectedKeys,\n      disabled: listDisabled,\n      onItemSelectAll,\n      onItemSelect,\n    }\"\n  >\n    <your-component />\n  <template>\n</a-transfer>\n```\n\n## 注意\n\n按照 Vue 最新的规范，所有的组件数组最好绑定 key。在 Transfer 中，`dataSource`里的数据值需要指定 `key` 值。对于 `dataSource` 默认将每列数据的 `key` 属性作为唯一的标识。\n\n如果你的数据没有这个属性，务必使用 `rowKey` 来指定数据列的主键。\n\n```jsx\n// 比如你的数据主键是 uid\nreturn <Transfer :rowKey=\"record => record.uid\" />;\n```\n"
  },
  {
    "path": "components/transfer/interface.ts",
    "content": "export type PaginationType =\n  | boolean\n  | {\n      pageSize?: number;\n      simple?: boolean;\n      showSizeChanger?: boolean;\n      showLessItems?: boolean;\n    };\n"
  },
  {
    "path": "components/transfer/list.tsx",
    "content": "import classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { isValidElement, splitAttrs, filterEmpty } from '../_util/props-util';\nimport DownOutlined from '@ant-design/icons-vue/DownOutlined';\nimport Checkbox from '../checkbox';\nimport Menu from '../menu';\nimport Dropdown from '../dropdown';\nimport Search from './search';\nimport ListBody from './ListBody';\nimport type { VNode, VNodeTypes, ExtractPropTypes, CSSProperties } from 'vue';\nimport { watchEffect, computed, defineComponent, ref } from 'vue';\nimport type { RadioChangeEvent } from '../radio/interface';\nimport type { TransferDirection, TransferItem } from './index';\nimport { stringType, arrayType, booleanType } from '../_util/type';\nimport { groupKeysMap } from '../_util/transKeys';\nimport type { CustomSlotsType } from '../_util/type';\n\nconst defaultRender = () => null;\n\nfunction isRenderResultPlainObject(result: VNode) {\n  return !!(\n    result &&\n    !isValidElement(result) &&\n    Object.prototype.toString.call(result) === '[object Object]'\n  );\n}\n\nfunction getEnabledItemKeys<RecordType extends TransferItem>(items: RecordType[]) {\n  return items.filter(data => !data.disabled).map(data => data.key);\n}\n\nexport const transferListProps = {\n  prefixCls: String,\n  dataSource: arrayType<TransferItem[]>([]),\n  filter: String,\n  filterOption: Function,\n  checkedKeys: PropTypes.arrayOf(PropTypes.string),\n  handleFilter: Function,\n  handleClear: Function,\n  renderItem: Function,\n  showSearch: booleanType(false),\n  searchPlaceholder: String,\n  notFoundContent: PropTypes.any,\n  itemUnit: String,\n  itemsUnit: String,\n  renderList: PropTypes.any,\n  disabled: booleanType(),\n  direction: stringType<TransferDirection>(),\n  showSelectAll: booleanType(),\n  remove: String,\n  selectAll: String,\n  selectCurrent: String,\n  selectInvert: String,\n  removeAll: String,\n  removeCurrent: String,\n  selectAllLabel: PropTypes.any,\n  showRemove: booleanType(),\n  pagination: PropTypes.any,\n  onItemSelect: Function,\n  onItemSelectAll: Function,\n  onItemRemove: Function,\n  onScroll: Function,\n};\n\nexport type TransferListProps = Partial<ExtractPropTypes<typeof transferListProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TransferList',\n  inheritAttrs: false,\n  props: transferListProps,\n  // emits: ['scroll', 'itemSelectAll', 'itemRemove', 'itemSelect'],\n  slots: Object as CustomSlotsType<{\n    footer?: any;\n    titleText?: any;\n    default?: any;\n  }>,\n  setup(props, { attrs, slots }) {\n    const filterValue = ref('');\n    const transferNode = ref();\n    const defaultListBodyRef = ref();\n\n    const renderListBody = (renderList: any, props: any) => {\n      let bodyContent = renderList ? renderList(props) : null;\n      const customize = !!bodyContent && filterEmpty(bodyContent).length > 0;\n      if (!customize) {\n        bodyContent = <ListBody {...props} ref={defaultListBodyRef} />;\n      }\n      return {\n        customize,\n        bodyContent,\n      };\n    };\n\n    const renderItemHtml = (item: TransferItem) => {\n      const { renderItem = defaultRender } = props;\n      const renderResult = renderItem(item);\n      const isRenderResultPlain = isRenderResultPlainObject(renderResult);\n      return {\n        renderedText: isRenderResultPlain ? renderResult.value : renderResult,\n        renderedEl: isRenderResultPlain ? renderResult.label : renderResult,\n        item,\n      };\n    };\n\n    const filteredItems = ref([]);\n    const filteredRenderItems = ref([]);\n\n    watchEffect(() => {\n      const fItems = [];\n      const fRenderItems = [];\n\n      props.dataSource.forEach(item => {\n        const renderedItem = renderItemHtml(item);\n        const { renderedText } = renderedItem;\n\n        // Filter skip\n        if (filterValue.value && filterValue.value.trim() && !matchFilter(renderedText, item)) {\n          return null;\n        }\n\n        fItems.push(item);\n        fRenderItems.push(renderedItem);\n      });\n      filteredItems.value = fItems;\n      filteredRenderItems.value = fRenderItems;\n    });\n\n    const checkStatus = computed(() => {\n      const { checkedKeys } = props;\n      if (checkedKeys.length === 0) {\n        return 'none';\n      }\n      const checkedKeysMap = groupKeysMap(checkedKeys);\n      if (filteredItems.value.every(item => checkedKeysMap.has(item.key) || !!item.disabled)) {\n        return 'all';\n      }\n      return 'part';\n    });\n\n    const enabledItemKeys = computed(() => {\n      return getEnabledItemKeys(filteredItems.value);\n    });\n\n    const getNewSelectKeys = (keys, unCheckedKeys) => {\n      return Array.from(new Set([...keys, ...props.checkedKeys])).filter(\n        key => unCheckedKeys.indexOf(key) === -1,\n      );\n    };\n\n    const getCheckBox = ({ disabled, prefixCls }: { disabled?: boolean; prefixCls?: string }) => {\n      const checkedAll = checkStatus.value === 'all';\n      const checkAllCheckbox = (\n        <Checkbox\n          disabled={props.dataSource?.length === 0 || disabled}\n          checked={checkedAll}\n          indeterminate={checkStatus.value === 'part'}\n          class={`${prefixCls}-checkbox`}\n          onChange={() => {\n            // Only select enabled items\n\n            const keys = enabledItemKeys.value;\n            props.onItemSelectAll(\n              getNewSelectKeys(!checkedAll ? keys : [], checkedAll ? props.checkedKeys : []),\n            );\n          }}\n        />\n      );\n\n      return checkAllCheckbox;\n    };\n\n    const handleFilter = (e: RadioChangeEvent) => {\n      const {\n        target: { value: filter },\n      } = e;\n      filterValue.value = filter;\n      props.handleFilter?.(e);\n    };\n    const handleClear = (e: Event) => {\n      filterValue.value = '';\n      props.handleClear?.(e);\n    };\n    const matchFilter = (text: string, item: TransferItem) => {\n      const { filterOption } = props;\n      if (filterOption) {\n        return filterOption(filterValue.value, item);\n      }\n      return text.includes(filterValue.value);\n    };\n\n    const getSelectAllLabel = (selectedCount: number, totalCount: number) => {\n      const { itemsUnit, itemUnit, selectAllLabel } = props;\n      if (selectAllLabel) {\n        return typeof selectAllLabel === 'function'\n          ? selectAllLabel({ selectedCount, totalCount })\n          : selectAllLabel;\n      }\n      const unit = totalCount > 1 ? itemsUnit : itemUnit;\n      return (\n        <>\n          {(selectedCount > 0 ? `${selectedCount}/` : '') + totalCount} {unit}\n        </>\n      );\n    };\n\n    const notFoundContentEle = computed(() =>\n      Array.isArray(props.notFoundContent)\n        ? props.notFoundContent[props.direction === 'left' ? 0 : 1]\n        : props.notFoundContent,\n    );\n    const getListBody = (\n      prefixCls: string,\n      searchPlaceholder: string,\n      checkedKeys: string[],\n      renderList: Function,\n      showSearch: boolean,\n      disabled: boolean,\n    ) => {\n      const search = showSearch ? (\n        <div class={`${prefixCls}-body-search-wrapper`}>\n          <Search\n            prefixCls={`${prefixCls}-search`}\n            onChange={handleFilter}\n            handleClear={handleClear}\n            placeholder={searchPlaceholder}\n            value={filterValue.value}\n            disabled={disabled}\n          />\n        </div>\n      ) : null;\n\n      let bodyNode: VNodeTypes;\n      const { onEvents } = splitAttrs(attrs);\n      const { bodyContent, customize } = renderListBody(renderList, {\n        ...props,\n        filteredItems: filteredItems.value,\n        filteredRenderItems: filteredRenderItems.value,\n        selectedKeys: checkedKeys,\n        ...onEvents,\n      });\n\n      // We should wrap customize list body in a classNamed div to use flex layout.\n      if (customize) {\n        bodyNode = <div class={`${prefixCls}-body-customize-wrapper`}>{bodyContent}</div>;\n      } else {\n        bodyNode = filteredItems.value.length ? (\n          bodyContent\n        ) : (\n          <div class={`${prefixCls}-body-not-found`}>{notFoundContentEle.value}</div>\n        );\n      }\n\n      return (\n        <div\n          class={\n            showSearch ? `${prefixCls}-body ${prefixCls}-body-with-search` : `${prefixCls}-body`\n          }\n          ref={transferNode}\n        >\n          {search}\n          {bodyNode}\n        </div>\n      );\n    };\n\n    return () => {\n      const {\n        prefixCls,\n        checkedKeys,\n        disabled,\n        showSearch,\n        searchPlaceholder,\n        selectAll,\n        selectCurrent,\n        selectInvert,\n        removeAll,\n        removeCurrent,\n        renderList,\n        onItemSelectAll,\n        onItemRemove,\n        showSelectAll = true,\n        showRemove,\n        pagination,\n      } = props;\n\n      // Custom Layout\n      const footerDom = slots.footer?.({ ...props });\n\n      const listCls = classNames(prefixCls, {\n        [`${prefixCls}-with-pagination`]: !!pagination,\n        [`${prefixCls}-with-footer`]: !!footerDom,\n      });\n\n      // ================================= List Body =================================\n\n      const listBody = getListBody(\n        prefixCls,\n        searchPlaceholder,\n        checkedKeys,\n        renderList,\n        showSearch,\n        disabled,\n      );\n\n      const listFooter = footerDom ? <div class={`${prefixCls}-footer`}>{footerDom}</div> : null;\n\n      const checkAllCheckbox = !showRemove && !pagination && getCheckBox({ disabled, prefixCls });\n\n      let menu = null;\n      if (showRemove) {\n        menu = (\n          <Menu>\n            {/* Remove Current Page */}\n            {pagination && (\n              <Menu.Item\n                key=\"removeCurrent\"\n                onClick={() => {\n                  const pageKeys = getEnabledItemKeys(\n                    (defaultListBodyRef.value.items || []).map(entity => entity.item),\n                  );\n                  onItemRemove?.(pageKeys);\n                }}\n              >\n                {removeCurrent}\n              </Menu.Item>\n            )}\n\n            {/* Remove All */}\n            <Menu.Item\n              key=\"removeAll\"\n              onClick={() => {\n                onItemRemove?.(enabledItemKeys.value);\n              }}\n            >\n              {removeAll}\n            </Menu.Item>\n          </Menu>\n        );\n      } else {\n        menu = (\n          <Menu>\n            <Menu.Item\n              key=\"selectAll\"\n              onClick={() => {\n                const keys = enabledItemKeys.value;\n                onItemSelectAll(getNewSelectKeys(keys, []));\n              }}\n            >\n              {selectAll}\n            </Menu.Item>\n            {pagination && (\n              <Menu.Item\n                onClick={() => {\n                  const pageKeys = getEnabledItemKeys(\n                    (defaultListBodyRef.value.items || []).map(entity => entity.item),\n                  );\n                  onItemSelectAll(getNewSelectKeys(pageKeys, []));\n                }}\n              >\n                {selectCurrent}\n              </Menu.Item>\n            )}\n            <Menu.Item\n              key=\"selectInvert\"\n              onClick={() => {\n                let availableKeys: string[];\n                if (pagination) {\n                  availableKeys = getEnabledItemKeys(\n                    (defaultListBodyRef.value.items || []).map(entity => entity.item),\n                  );\n                } else {\n                  availableKeys = enabledItemKeys.value;\n                }\n\n                const checkedKeySet = new Set(checkedKeys);\n                const newCheckedKeys: string[] = [];\n                const newUnCheckedKeys: string[] = [];\n\n                availableKeys.forEach(key => {\n                  if (checkedKeySet.has(key)) {\n                    newUnCheckedKeys.push(key);\n                  } else {\n                    newCheckedKeys.push(key);\n                  }\n                });\n                onItemSelectAll(getNewSelectKeys(newCheckedKeys, newUnCheckedKeys));\n              }}\n            >\n              {selectInvert}\n            </Menu.Item>\n          </Menu>\n        );\n      }\n\n      const dropdown = (\n        <Dropdown class={`${prefixCls}-header-dropdown`} overlay={menu} disabled={disabled}>\n          <DownOutlined />\n        </Dropdown>\n      );\n\n      return (\n        <div class={listCls} style={attrs.style as CSSProperties}>\n          <div class={`${prefixCls}-header`}>\n            {showSelectAll ? (\n              <>\n                {checkAllCheckbox}\n                {dropdown}\n              </>\n            ) : null}\n            <span class={`${prefixCls}-header-selected`}>\n              <span>{getSelectAllLabel(checkedKeys.length, filteredItems.value.length)}</span>\n              <span class={`${prefixCls}-header-title`}>{slots.titleText?.()}</span>\n            </span>\n          </div>\n          {listBody}\n          {listFooter}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/transfer/operation.tsx",
    "content": "import type { CSSProperties, FunctionalComponent } from 'vue';\nimport LeftOutlined from '@ant-design/icons-vue/LeftOutlined';\nimport RightOutlined from '@ant-design/icons-vue/RightOutlined';\nimport Button from '../button';\nimport type { Direction } from '../config-provider';\n\nfunction noop() {}\n\nexport interface TransferOperationProps {\n  class?: string;\n  leftArrowText?: string;\n  rightArrowText?: string;\n  moveToLeft?: (e: MouseEvent) => void;\n  moveToRight?: (e: MouseEvent) => void;\n  leftActive?: boolean;\n  rightActive?: boolean;\n  style?: CSSProperties | string;\n  disabled?: boolean;\n  direction?: Direction;\n  oneWay?: boolean;\n}\n\nconst Operation: FunctionalComponent<TransferOperationProps> = props => {\n  const {\n    disabled,\n    moveToLeft = noop,\n    moveToRight = noop,\n    leftArrowText = '',\n    rightArrowText = '',\n    leftActive,\n    rightActive,\n    class: className,\n    style,\n    direction,\n    oneWay,\n  } = props;\n\n  return (\n    <div class={className} style={style}>\n      <Button\n        type=\"primary\"\n        size=\"small\"\n        disabled={disabled || !rightActive}\n        onClick={moveToRight}\n        icon={direction !== 'rtl' ? <RightOutlined /> : <LeftOutlined />}\n      >\n        {rightArrowText}\n      </Button>\n      {!oneWay && (\n        <Button\n          type=\"primary\"\n          size=\"small\"\n          disabled={disabled || !leftActive}\n          onClick={moveToLeft}\n          icon={direction !== 'rtl' ? <LeftOutlined /> : <RightOutlined />}\n        >\n          {leftArrowText}\n        </Button>\n      )}\n    </div>\n  );\n};\nOperation.displayName = 'Operation';\nOperation.inheritAttrs = false;\n\nexport default Operation;\n"
  },
  {
    "path": "components/transfer/search.tsx",
    "content": "import initDefaultProps from '../_util/props-util/initDefaultProps';\nimport SearchOutlined from '@ant-design/icons-vue/SearchOutlined';\nimport Input from '../input';\nimport type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport type { ChangeEvent } from '../_util/EventInterface';\n\nexport const transferSearchProps = {\n  prefixCls: String,\n  placeholder: String,\n  value: String,\n  handleClear: Function,\n  disabled: { type: Boolean, default: undefined },\n  onChange: Function,\n};\n\nexport type TransferSearchProps = Partial<ExtractPropTypes<typeof transferSearchProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Search',\n  inheritAttrs: false,\n  props: initDefaultProps(transferSearchProps, {\n    placeholder: '',\n  }),\n  emits: ['change'],\n  setup(props, { emit }) {\n    const handleChange = (e: ChangeEvent) => {\n      emit('change', e);\n      if (e.target.value === '') {\n        props.handleClear?.();\n      }\n    };\n\n    return () => {\n      const { placeholder, value, prefixCls, disabled } = props;\n      return (\n        <Input\n          placeholder={placeholder}\n          class={prefixCls}\n          value={value}\n          onChange={handleChange}\n          disabled={disabled}\n          allowClear\n          v-slots={{ prefix: () => <SearchOutlined /> }}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/transfer/style/index.tsx",
    "content": "import type { CSSObject } from '../../_util/cssinjs';\n\nimport type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, resetIcon, textEllipsis } from '../../style';\n\nexport interface ComponentToken {\n  listWidth: number;\n  listWidthLG: number;\n  listHeight: number;\n}\n\ninterface TransferToken extends FullToken<'Transfer'> {\n  transferItemHeight: number;\n  transferHeaderVerticalPadding: number;\n  transferItemPaddingVertical: number;\n  transferHeaderHeight: number;\n}\n\nconst genTransferCustomizeStyle: GenerateStyle<TransferToken> = (\n  token: TransferToken,\n): CSSObject => {\n  const { antCls, componentCls, listHeight, controlHeightLG, marginXXS, margin } = token;\n\n  const tableCls = `${antCls}-table`;\n  const inputCls = `${antCls}-input`;\n\n  return {\n    [`${componentCls}-customize-list`]: {\n      [`${componentCls}-list`]: {\n        flex: '1 1 50%',\n        width: 'auto',\n        height: 'auto',\n        minHeight: listHeight,\n      },\n\n      // =================== Hook Components ===================\n      [`${tableCls}-wrapper`]: {\n        [`${tableCls}-small`]: {\n          border: 0,\n          borderRadius: 0,\n\n          [`${tableCls}-selection-column`]: {\n            width: controlHeightLG,\n            minWidth: controlHeightLG,\n          },\n        },\n\n        [`${tableCls}-pagination${tableCls}-pagination`]: {\n          margin: `${margin}px 0 ${marginXXS}px`,\n        },\n      },\n\n      [`${inputCls}[disabled]`]: {\n        backgroundColor: 'transparent',\n      },\n    },\n  };\n};\n\nconst genTransferStatusColor = (token: TransferToken, color: string): CSSObject => {\n  const { componentCls, colorBorder } = token;\n  return {\n    [`${componentCls}-list`]: {\n      borderColor: color,\n\n      '&-search:not([disabled])': {\n        borderColor: colorBorder,\n      },\n    },\n  };\n};\n\nconst genTransferStatusStyle: GenerateStyle<TransferToken> = (token: TransferToken): CSSObject => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-status-error`]: {\n      ...genTransferStatusColor(token, token.colorError),\n    },\n    [`${componentCls}-status-warning`]: {\n      ...genTransferStatusColor(token, token.colorWarning),\n    },\n  };\n};\n\nconst genTransferListStyle: GenerateStyle<TransferToken> = (token: TransferToken): CSSObject => {\n  const {\n    componentCls,\n    colorBorder,\n    colorSplit,\n    lineWidth,\n    transferItemHeight,\n    transferHeaderHeight,\n    transferHeaderVerticalPadding,\n    transferItemPaddingVertical,\n    controlItemBgActive,\n    controlItemBgActiveHover,\n    colorTextDisabled,\n    listHeight,\n    listWidth,\n    listWidthLG,\n    fontSizeIcon,\n    marginXS,\n    paddingSM,\n    lineType,\n    iconCls,\n    motionDurationSlow,\n  } = token;\n\n  return {\n    display: 'flex',\n    flexDirection: 'column',\n    width: listWidth,\n    height: listHeight,\n    border: `${lineWidth}px ${lineType} ${colorBorder}`,\n    borderRadius: token.borderRadiusLG,\n\n    '&-with-pagination': {\n      width: listWidthLG,\n      height: 'auto',\n    },\n\n    '&-search': {\n      [`${iconCls}-search`]: {\n        color: colorTextDisabled,\n      },\n    },\n\n    '&-header': {\n      display: 'flex',\n      flex: 'none',\n      alignItems: 'center',\n      height: transferHeaderHeight,\n      // border-top is on the transfer dom. We should minus 1px for this\n      padding: `${\n        transferHeaderVerticalPadding - lineWidth\n      }px ${paddingSM}px ${transferHeaderVerticalPadding}px`,\n      color: token.colorText,\n      background: token.colorBgContainer,\n      borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`,\n      borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`,\n\n      '> *:not(:last-child)': {\n        marginInlineEnd: 4, // This is magic and fixed number, DO NOT use token since it may change.\n      },\n\n      '> *': {\n        flex: 'none',\n      },\n\n      '&-title': {\n        ...textEllipsis,\n        flex: 'auto',\n        textAlign: 'end',\n      },\n\n      '&-dropdown': {\n        ...resetIcon(),\n\n        fontSize: fontSizeIcon,\n        transform: 'translateY(10%)',\n        cursor: 'pointer',\n\n        '&[disabled]': {\n          cursor: 'not-allowed',\n        },\n      },\n    },\n\n    '&-body': {\n      display: 'flex',\n      flex: 'auto',\n      flexDirection: 'column',\n      overflow: 'hidden',\n      fontSize: token.fontSize,\n\n      '&-search-wrapper': {\n        position: 'relative',\n        flex: 'none',\n        padding: paddingSM,\n      },\n    },\n\n    '&-content': {\n      flex: 'auto',\n      margin: 0,\n      padding: 0,\n      overflow: 'auto',\n      listStyle: 'none',\n\n      '&-item': {\n        display: 'flex',\n        alignItems: 'center',\n        minHeight: transferItemHeight,\n        padding: `${transferItemPaddingVertical}px ${paddingSM}px`,\n        transition: `all ${motionDurationSlow}`,\n\n        '> *:not(:last-child)': {\n          marginInlineEnd: marginXS,\n        },\n\n        '> *': {\n          flex: 'none',\n        },\n\n        '&-text': {\n          ...textEllipsis,\n          flex: 'auto',\n        },\n\n        '&-remove': {\n          position: 'relative',\n          color: colorBorder,\n\n          cursor: 'pointer',\n          transition: `all ${motionDurationSlow}`,\n\n          '&:hover': {\n            color: token.colorLinkHover,\n          },\n\n          '&::after': {\n            position: 'absolute',\n            insert: `-${transferItemPaddingVertical}px -50%`,\n            content: '\"\"',\n          },\n        },\n\n        [`&:not(${componentCls}-list-content-item-disabled)`]: {\n          '&:hover': {\n            backgroundColor: token.controlItemBgHover,\n            cursor: 'pointer',\n          },\n\n          [`&${componentCls}-list-content-item-checked:hover`]: {\n            backgroundColor: controlItemBgActiveHover,\n          },\n        },\n\n        '&-checked': {\n          backgroundColor: controlItemBgActive,\n        },\n\n        '&-disabled': {\n          color: colorTextDisabled,\n          cursor: 'not-allowed',\n        },\n      },\n\n      // Do not change hover style when `oneWay` mode\n      [`&-show-remove ${componentCls}-list-content-item:not(${componentCls}-list-content-item-disabled):hover`]:\n        {\n          background: 'transparent',\n          cursor: 'default',\n        },\n    },\n\n    '&-pagination': {\n      padding: `${token.paddingXS}px 0`,\n      textAlign: 'end',\n      borderTop: `${lineWidth}px ${lineType} ${colorSplit}`,\n    },\n\n    '&-body-not-found': {\n      flex: 'none',\n      width: '100%',\n      margin: 'auto 0',\n      color: colorTextDisabled,\n      textAlign: 'center',\n    },\n\n    '&-footer': {\n      borderTop: `${lineWidth}px ${lineType} ${colorSplit}`,\n    },\n\n    '&-checkbox': {\n      lineHeight: 1,\n    },\n  };\n};\n\nconst genTransferStyle: GenerateStyle<TransferToken> = (token: TransferToken): CSSObject => {\n  const {\n    antCls,\n    iconCls,\n    componentCls,\n    transferHeaderHeight,\n    marginXS,\n    marginXXS,\n    fontSizeIcon,\n    fontSize,\n    lineHeight,\n  } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'stretch',\n\n      [`${componentCls}-disabled`]: {\n        [`${componentCls}-list`]: {\n          background: token.colorBgContainerDisabled,\n        },\n      },\n\n      [`${componentCls}-list`]: genTransferListStyle(token),\n\n      [`${componentCls}-operation`]: {\n        display: 'flex',\n        flex: 'none',\n        flexDirection: 'column',\n        alignSelf: 'center',\n        margin: `0 ${marginXS}px`,\n        verticalAlign: 'middle',\n\n        [`${antCls}-btn`]: {\n          display: 'block',\n\n          '&:first-child': {\n            marginBottom: marginXXS,\n          },\n\n          [iconCls]: {\n            fontSize: fontSizeIcon,\n          },\n        },\n      },\n\n      [`${antCls}-empty-image`]: {\n        maxHeight: transferHeaderHeight / 2 - Math.round(fontSize * lineHeight),\n      },\n    },\n  };\n};\n\nconst genTransferRTLStyle: GenerateStyle<TransferToken> = (token: TransferToken): CSSObject => {\n  const { componentCls } = token;\n  return {\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl',\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook(\n  'Transfer',\n  token => {\n    const { fontSize, lineHeight, lineWidth, controlHeightLG, controlHeight } = token;\n\n    const fontHeight = Math.round(fontSize * lineHeight);\n    const transferHeaderHeight = controlHeightLG;\n    const transferItemHeight = controlHeight;\n\n    const transferToken = mergeToken<TransferToken>(token, {\n      transferItemHeight,\n      transferHeaderHeight,\n      transferHeaderVerticalPadding: Math.ceil((transferHeaderHeight - lineWidth - fontHeight) / 2),\n      transferItemPaddingVertical: (transferItemHeight - fontHeight) / 2,\n    });\n\n    return [\n      genTransferStyle(transferToken),\n      genTransferCustomizeStyle(transferToken),\n      genTransferStatusStyle(transferToken),\n      genTransferRTLStyle(transferToken),\n    ];\n  },\n  {\n    listWidth: 180,\n    listHeight: 200,\n    listWidthLG: 250,\n  },\n);\n"
  },
  {
    "path": "components/tree/DirectoryTree.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { nextTick, onUpdated, ref, watch, defineComponent, computed } from 'vue';\nimport debounce from 'lodash-es/debounce';\nimport FolderOpenOutlined from '@ant-design/icons-vue/FolderOpenOutlined';\nimport FolderOutlined from '@ant-design/icons-vue/FolderOutlined';\nimport FileOutlined from '@ant-design/icons-vue/FileOutlined';\nimport classNames from '../_util/classNames';\nimport type { AntdTreeNodeAttribute, TreeProps } from './Tree';\nimport Tree, { treeProps } from './Tree';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport {\n  convertDataToEntities,\n  convertTreeToData,\n  fillFieldNames,\n} from '../vc-tree/utils/treeUtil';\nimport type { DataNode, EventDataNode, Key, ScrollTo } from '../vc-tree/interface';\nimport { conductExpandParent } from '../vc-tree/util';\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils/dictUtil';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { filterEmpty } from '../_util/props-util';\nimport { someType } from '../_util/type';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport type ExpandAction = false | 'click' | 'doubleclick' | 'dblclick';\n\nexport const directoryTreeProps = () => ({\n  ...treeProps(),\n  expandAction: someType<ExpandAction>([Boolean, String]),\n});\n\nexport type DirectoryTreeProps = Partial<ExtractPropTypes<ReturnType<typeof directoryTreeProps>>>;\n\nfunction getIcon(props: AntdTreeNodeAttribute) {\n  const { isLeaf, expanded } = props;\n  if (isLeaf) {\n    return <FileOutlined />;\n  }\n  return expanded ? <FolderOpenOutlined /> : <FolderOutlined />;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADirectoryTree',\n  inheritAttrs: false,\n  props: initDefaultProps(directoryTreeProps(), {\n    showIcon: true,\n    expandAction: 'click',\n  }),\n  slots: Object as CustomSlotsType<{\n    icon?: any;\n    title?: any;\n    switcherIcon?: any;\n    titleRender?: any;\n    default?: any;\n  }>,\n\n  // emits: [\n  //   'update:selectedKeys',\n  //   'update:checkedKeys',\n  //   'update:expandedKeys',\n  //   'expand',\n  //   'select',\n  //   'check',\n  //   'doubleclick',\n  //   'dblclick',\n  //   'click',\n  // ],\n  setup(props, { attrs, slots, emit, expose }) {\n    // convertTreeToData 兼容 a-tree-node 历史写法，未来a-tree-node移除后，删除相关代码，不要再render中调用 treeData，否则死循环\n    const treeData = ref<DataNode[]>(\n      props.treeData || convertTreeToData(filterEmpty(slots.default?.())),\n    );\n\n    watch(\n      () => props.treeData,\n      () => {\n        treeData.value = props.treeData;\n      },\n    );\n    onUpdated(() => {\n      nextTick(() => {\n        if (props.treeData === undefined && slots.default) {\n          treeData.value = convertTreeToData(filterEmpty(slots.default?.()));\n        }\n      });\n    });\n    // Shift click usage\n    const lastSelectedKey = ref<Key>();\n\n    const cachedSelectedKeys = ref<Key[]>();\n    const fieldNames = computed(() => fillFieldNames(props.fieldNames));\n    const treeRef = ref();\n    const scrollTo: ScrollTo = scroll => {\n      treeRef.value?.scrollTo(scroll);\n    };\n    expose({\n      scrollTo,\n      selectedKeys: computed(() => treeRef.value?.selectedKeys),\n      checkedKeys: computed(() => treeRef.value?.checkedKeys),\n      halfCheckedKeys: computed(() => treeRef.value?.halfCheckedKeys),\n      loadedKeys: computed(() => treeRef.value?.loadedKeys),\n      loadingKeys: computed(() => treeRef.value?.loadingKeys),\n      expandedKeys: computed(() => treeRef.value?.expandedKeys),\n    });\n    const getInitExpandedKeys = () => {\n      const { keyEntities } = convertDataToEntities(treeData.value, {\n        fieldNames: fieldNames.value,\n      });\n\n      let initExpandedKeys: any;\n\n      // Expanded keys\n      if (props.defaultExpandAll) {\n        initExpandedKeys = Object.keys(keyEntities);\n      } else if (props.defaultExpandParent) {\n        initExpandedKeys = conductExpandParent(\n          props.expandedKeys || props.defaultExpandedKeys || [],\n          keyEntities,\n        );\n      } else {\n        initExpandedKeys = props.expandedKeys || props.defaultExpandedKeys;\n      }\n      return initExpandedKeys;\n    };\n\n    const selectedKeys = ref(props.selectedKeys || props.defaultSelectedKeys || []);\n\n    const expandedKeys = ref<Key[]>(getInitExpandedKeys());\n\n    watch(\n      () => props.selectedKeys,\n      () => {\n        if (props.selectedKeys !== undefined) {\n          selectedKeys.value = props.selectedKeys;\n        }\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.expandedKeys,\n      () => {\n        if (props.expandedKeys !== undefined) {\n          expandedKeys.value = props.expandedKeys;\n        }\n      },\n      { immediate: true },\n    );\n\n    const expandFolderNode = (event: MouseEvent, node: any) => {\n      const { isLeaf } = node;\n\n      if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {\n        return;\n      }\n      // Call internal rc-tree expand function\n      // https://github.com/ant-design/ant-design/issues/12567\n      treeRef.value!.onNodeExpand(event as any, node);\n    };\n    const onDebounceExpand = debounce(expandFolderNode, 200, {\n      leading: true,\n    });\n    const onExpand = (\n      keys: Key[],\n      info: {\n        node: EventDataNode;\n        expanded: boolean;\n        nativeEvent: MouseEvent;\n      },\n    ) => {\n      if (props.expandedKeys === undefined) {\n        expandedKeys.value = keys;\n      }\n      // Call origin function\n      emit('update:expandedKeys', keys);\n      emit('expand', keys, info);\n    };\n\n    const onClick = (event: MouseEvent, node: EventDataNode) => {\n      const { expandAction } = props;\n\n      // Expand the tree\n      if (expandAction === 'click') {\n        onDebounceExpand(event, node);\n      }\n      emit('click', event, node);\n    };\n\n    const onDoubleClick = (event: MouseEvent, node: EventDataNode) => {\n      const { expandAction } = props;\n      // Expand the tree\n      if (expandAction === 'dblclick' || expandAction === 'doubleclick') {\n        onDebounceExpand(event, node);\n      }\n\n      emit('doubleclick', event, node);\n      emit('dblclick', event, node);\n    };\n    const onSelect = (\n      keys: Key[],\n      event: {\n        event: 'select';\n        selected: boolean;\n        node: any;\n        selectedNodes: DataNode[];\n        nativeEvent: MouseEvent;\n      },\n    ) => {\n      const { multiple } = props;\n      const { node, nativeEvent } = event;\n      const key = node[fieldNames.value.key];\n      // const newState: DirectoryTreeState = {};\n\n      // We need wrap this event since some value is not same\n      const newEvent: any = {\n        ...event,\n        selected: true, // Directory selected always true\n      };\n\n      // Windows / Mac single pick\n      const ctrlPick: boolean = nativeEvent?.ctrlKey || nativeEvent?.metaKey;\n      const shiftPick: boolean = nativeEvent?.shiftKey;\n\n      // Generate new selected keys\n      let newSelectedKeys: Key[];\n      if (multiple && ctrlPick) {\n        // Control click\n        newSelectedKeys = keys;\n        lastSelectedKey.value = key;\n        cachedSelectedKeys.value = newSelectedKeys;\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      } else if (multiple && shiftPick) {\n        // Shift click\n        newSelectedKeys = Array.from(\n          new Set([\n            ...(cachedSelectedKeys.value || []),\n            ...calcRangeKeys({\n              treeData: treeData.value,\n              expandedKeys: expandedKeys.value,\n              startKey: key,\n              endKey: lastSelectedKey.value,\n              fieldNames: fieldNames.value,\n            }),\n          ]),\n        );\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      } else {\n        // Single click\n        newSelectedKeys = [key];\n        lastSelectedKey.value = key;\n        cachedSelectedKeys.value = newSelectedKeys;\n        newEvent.selectedNodes = convertDirectoryKeysToNodes(\n          treeData.value,\n          newSelectedKeys,\n          fieldNames.value,\n        );\n      }\n\n      emit('update:selectedKeys', newSelectedKeys);\n      emit('select', newSelectedKeys, newEvent);\n      if (props.selectedKeys === undefined) {\n        selectedKeys.value = newSelectedKeys;\n      }\n    };\n\n    const onCheck: TreeProps['onCheck'] = (checkedObjOrKeys, eventObj) => {\n      emit('update:checkedKeys', checkedObjOrKeys);\n      emit('check', checkedObjOrKeys, eventObj);\n    };\n\n    const { prefixCls, direction } = useConfigInject('tree', props);\n\n    return () => {\n      const connectClassName = classNames(\n        `${prefixCls.value}-directory`,\n        {\n          [`${prefixCls.value}-directory-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n      );\n      const { icon = slots.icon, blockNode = true, ...otherProps } = props;\n      return (\n        <Tree\n          {...attrs}\n          icon={icon || getIcon}\n          ref={treeRef}\n          blockNode={blockNode}\n          {...otherProps}\n          prefixCls={prefixCls.value}\n          class={connectClassName}\n          expandedKeys={expandedKeys.value}\n          selectedKeys={selectedKeys.value}\n          onSelect={onSelect}\n          onClick={onClick}\n          onDblclick={onDoubleClick}\n          onExpand={onExpand}\n          onCheck={onCheck}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tree/Tree.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { watchEffect, ref, defineComponent, computed } from 'vue';\nimport classNames from '../_util/classNames';\nimport VcTree from '../vc-tree';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty } from '../_util/props-util';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport type { DataNode, EventDataNode, FieldNames, Key, ScrollTo } from '../vc-tree/interface';\nimport type { TreeNodeProps } from '../vc-tree/props';\nimport { treeProps as vcTreeProps } from '../vc-tree/props';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { SwitcherIconProps } from './utils/iconUtil';\nimport renderSwitcherIcon from './utils/iconUtil';\nimport dropIndicatorRender from './utils/dropIndicator';\nimport devWarning from '../vc-util/devWarning';\nimport { warning } from '../vc-util/warning';\nimport omit from '../_util/omit';\nimport { booleanType, someType, arrayType, functionType, objectType } from '../_util/type';\n\n// CSSINJS\nimport useStyle from './style';\nimport type { CustomSlotsType } from '../_util/type';\n\nexport interface AntdTreeNodeAttribute {\n  eventKey: string;\n  prefixCls: string;\n  class: string;\n  expanded: boolean;\n  selected: boolean;\n  checked: boolean;\n  halfChecked: boolean;\n  children: any;\n  title: any;\n  pos: string;\n  dragOver: boolean;\n  dragOverGapTop: boolean;\n  dragOverGapBottom: boolean;\n  isLeaf: boolean;\n  selectable: boolean;\n  disabled: boolean;\n  disableCheckbox: boolean;\n}\n\nexport type AntTreeNodeProps = TreeNodeProps;\n\n// [Legacy] Compatible for v2\nexport type TreeDataItem = DataNode;\n\nexport interface AntTreeNodeBaseEvent {\n  node: EventDataNode;\n  nativeEvent: MouseEvent;\n}\n\nexport interface AntTreeNodeCheckedEvent extends AntTreeNodeBaseEvent {\n  event: 'check';\n  checked?: boolean;\n  checkedNodes?: DataNode[];\n}\n\nexport interface AntTreeNodeSelectedEvent extends AntTreeNodeBaseEvent {\n  event: 'select';\n  selected?: boolean;\n  selectedNodes?: DataNode[];\n}\n\nexport interface AntTreeNodeExpandedEvent extends AntTreeNodeBaseEvent {\n  expanded?: boolean;\n}\n\nexport interface AntTreeNodeMouseEvent {\n  node: EventDataNode;\n  event: DragEvent;\n}\n\nexport interface AntTreeNodeDragEnterEvent extends AntTreeNodeMouseEvent {\n  expandedKeys: Key[];\n}\n\nexport interface AntTreeNodeDropEvent {\n  node: EventDataNode;\n  dragNode: EventDataNode;\n  dragNodesKeys: Key[];\n  dropPosition: number;\n  dropToGap?: boolean;\n  event: MouseEvent;\n}\n\nexport const treeProps = () => {\n  const baseTreeProps = vcTreeProps();\n  return {\n    ...baseTreeProps,\n    showLine: someType<boolean | { showLeafIcon: boolean }>([Boolean, Object]),\n    /** 是否支持多选 */\n    multiple: booleanType(),\n    /** 是否自动展开父节点 */\n    autoExpandParent: booleanType(),\n    /** checkable状态下节点选择完全受控（父子节点选中状态不再关联）*/\n    checkStrictly: booleanType(),\n    /** 是否支持选中 */\n    checkable: booleanType(),\n    /** 是否禁用树 */\n    disabled: booleanType(),\n    /** 默认展开所有树节点 */\n    defaultExpandAll: booleanType(),\n    /** 默认展开对应树节点 */\n    defaultExpandParent: booleanType(),\n    /** 默认展开指定的树节点 */\n    defaultExpandedKeys: arrayType<Key[]>(),\n    /** （受控）展开指定的树节点 */\n    expandedKeys: arrayType<Key[]>(),\n    /** （受控）选中复选框的树节点 */\n    checkedKeys: someType<Key[] | { checked: Key[]; halfChecked: Key[] }>([Array, Object]),\n    /** 默认选中复选框的树节点 */\n    defaultCheckedKeys: arrayType<Key[]>(),\n    /** （受控）设置选中的树节点 */\n    selectedKeys: arrayType<Key[]>(),\n    /** 默认选中的树节点 */\n    defaultSelectedKeys: arrayType<Key[]>(),\n    selectable: booleanType(),\n\n    loadedKeys: arrayType<Key[]>(),\n    draggable: booleanType(),\n    showIcon: booleanType(),\n    icon: functionType<(nodeProps: AntdTreeNodeAttribute) => any>(),\n    switcherIcon: PropTypes.any,\n    prefixCls: String,\n    /**\n     * @default{title,key,children}\n     * deprecated, please use `fieldNames` instead\n     * 替换treeNode中 title,key,children字段为treeData中对应的字段\n     */\n    replaceFields: objectType<FieldNames>(),\n    blockNode: booleanType(),\n    openAnimation: PropTypes.any,\n    onDoubleclick: baseTreeProps.onDblclick,\n    'onUpdate:selectedKeys': functionType<(keys: Key[]) => void>(),\n    'onUpdate:checkedKeys': functionType<(keys: Key[]) => void>(),\n    'onUpdate:expandedKeys': functionType<(keys: Key[]) => void>(),\n  };\n};\n\nexport type TreeProps = Partial<ExtractPropTypes<ReturnType<typeof treeProps>>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATree',\n  inheritAttrs: false,\n  props: initDefaultProps(treeProps(), {\n    checkable: false,\n    selectable: true,\n    showIcon: false,\n    blockNode: false,\n  }),\n\n  slots: Object as CustomSlotsType<{\n    icon?: any;\n    title?: any;\n    switcherIcon?: any;\n    titleRender?: any;\n    default?: any;\n    leafIcon?: any;\n  }>,\n  setup(props, { attrs, expose, emit, slots }) {\n    warning(\n      !(props.treeData === undefined && slots.default),\n      '`children` of Tree is deprecated. Please use `treeData` instead.',\n    );\n    const { prefixCls, direction, virtual } = useConfigInject('tree', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const treeRef = ref();\n    const scrollTo: ScrollTo = scroll => {\n      treeRef.value?.scrollTo(scroll);\n    };\n    expose({\n      treeRef,\n      onNodeExpand: (...args) => {\n        treeRef.value?.onNodeExpand(...args);\n      },\n      scrollTo,\n      selectedKeys: computed(() => treeRef.value?.selectedKeys),\n      checkedKeys: computed(() => treeRef.value?.checkedKeys),\n      halfCheckedKeys: computed(() => treeRef.value?.halfCheckedKeys),\n      loadedKeys: computed(() => treeRef.value?.loadedKeys),\n      loadingKeys: computed(() => treeRef.value?.loadingKeys),\n      expandedKeys: computed(() => treeRef.value?.expandedKeys),\n    });\n\n    watchEffect(() => {\n      devWarning(\n        props.replaceFields === undefined,\n        'Tree',\n        '`replaceFields` is deprecated, please use fieldNames instead',\n      );\n    });\n\n    const handleCheck: TreeProps['onCheck'] = (checkedObjOrKeys, eventObj) => {\n      emit('update:checkedKeys', checkedObjOrKeys);\n      emit('check', checkedObjOrKeys, eventObj);\n    };\n    const handleExpand: TreeProps['onExpand'] = (expandedKeys, eventObj) => {\n      emit('update:expandedKeys', expandedKeys);\n      emit('expand', expandedKeys, eventObj);\n    };\n    const handleSelect: TreeProps['onSelect'] = (selectedKeys, eventObj) => {\n      emit('update:selectedKeys', selectedKeys);\n      emit('select', selectedKeys, eventObj);\n    };\n    return () => {\n      const {\n        showIcon,\n        showLine,\n        switcherIcon = slots.switcherIcon,\n        icon = slots.icon,\n        blockNode,\n        checkable,\n        selectable,\n        fieldNames = props.replaceFields,\n        motion = props.openAnimation,\n        itemHeight = 28,\n        onDoubleclick,\n        onDblclick,\n      } = props as TreeProps;\n      const newProps = {\n        ...attrs,\n        ...omit(props, [\n          'onUpdate:checkedKeys',\n          'onUpdate:expandedKeys',\n          'onUpdate:selectedKeys',\n          'onDoubleclick',\n        ]),\n        showLine: Boolean(showLine),\n        dropIndicatorRender,\n        fieldNames,\n        icon,\n        itemHeight,\n      };\n      const children = slots.default ? filterEmpty(slots.default()) : undefined;\n      return wrapSSR(\n        <VcTree\n          {...newProps}\n          virtual={virtual.value}\n          motion={motion}\n          ref={treeRef}\n          prefixCls={prefixCls.value}\n          class={classNames(\n            {\n              [`${prefixCls.value}-icon-hide`]: !showIcon,\n              [`${prefixCls.value}-block-node`]: blockNode,\n              [`${prefixCls.value}-unselectable`]: !selectable,\n              [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n            hashId.value,\n          )}\n          direction={direction.value}\n          checkable={checkable}\n          selectable={selectable}\n          switcherIcon={(nodeProps: SwitcherIconProps) =>\n            renderSwitcherIcon(prefixCls.value, switcherIcon, nodeProps, slots.leafIcon, showLine)\n          }\n          onCheck={handleCheck}\n          onExpand={handleExpand}\n          onSelect={handleSelect}\n          onDblclick={onDblclick || onDoubleclick}\n          v-slots={{\n            ...slots,\n            checkable: () => <span class={`${prefixCls.value}-checkbox-inner`} />,\n          }}\n          children={children}\n        ></VcTree>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/tree/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tree/demo/accordion.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 2</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/basic.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked ant-tree-checkbox-disabled\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-disabled\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1-1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><span style=\"color: rgb(24, 144, 255);\">sss</span></span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/context-menu.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-0</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-0-0</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-0-1</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-0-2</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-1</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-1-0</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-1-1</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><!----><span class=\"ant-dropdown-trigger\">0-0-1-2</span></span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/customized-icon.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n            <!----><span title=\"parent 1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></span><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-selected\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal ant-tree-node-selected\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"frown\" class=\"anticon anticon-frown\"><svg focusable=\"false\" class=\"\" data-icon=\"frown\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 008 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 008-8.4C667.6 600.3 597.5 533 512 533z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/directory.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-block-node ant-tree-directory\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"parent 0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"folder-open\" class=\"anticon anticon-folder-open\"><svg focusable=\"false\" class=\"\" data-icon=\"folder-open\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\"></path></svg></span></span><span class=\"ant-tree-title\">parent 0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf 0-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf 0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf 0-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf 0-1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"parent 1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"folder-open\" class=\"anticon anticon-folder-open\"><svg focusable=\"false\" class=\"\" data-icon=\"folder-open\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\"></path></svg></span></span><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf 1-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf 1-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"leaf 1-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><span class=\"ant-tree-iconEle ant-tree-icon__customize\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span><span class=\"ant-tree-title\">leaf 1-1</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/draggable.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide ant-tree-block-node draggable-tree\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-draggable\" draggable=\"true\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"0-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-draggable\" draggable=\"true\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"0-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">0-1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last ant-tree-treenode-draggable\" draggable=\"true\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"0-2\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-2</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/dynamic.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"Expand to load\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">Expand to load</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n            <!----><span title=\"Expand to load\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">Expand to load</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n            <!----><span title=\"Tree Node\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">Tree Node</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/line.vue correctly 1`] = `\n<div>\n  <div style=\"margin-bottom: 16px;\"> showLine: <button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button><br><br> showIcon: <button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n    </button></div>\n  <div role=\"tree\" class=\"ant-tree ant-tree-icon-hide ant-tree-show-line\">\n    <!---->\n    <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n    <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n      <div class=\"ant-tree-indent\">\n        <div class=\"ant-tree-indent-unit\"></div>\n      </div>\n    </div>\n    <div style=\"position: relative;\" class=\"ant-tree-list\">\n      <div class=\"ant-tree-list-holder\">\n        <div>\n          <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"minus-square\" class=\"anticon anticon-minus-square ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"minus-square\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path><path d=\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"minus-square\" class=\"anticon anticon-minus-square ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"minus-square\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path><path d=\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1-0</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><div>multiple line title</div><div>multiple line title</div></span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"plus-square\" class=\"anticon anticon-plus-square ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"plus-square\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path><path d=\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 1-1</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" fill=\"#1890ff\"></path><path d=\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 018-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 018 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" fill=\"#e6f7ff\"></path><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4zm-24-112a48 48 0 1096 0 48 48 0 10-96 0z\" fill=\"#1890ff\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 1-2</span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"plus-square\" class=\"anticon anticon-plus-square ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"plus-square\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"></path><path d=\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 2</span>\n              <!----></span>\n            </div>\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/replaceFields.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked ant-tree-checkbox-disabled\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">张晨成</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-disabled\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\"><span style=\"color: rgb(24, 144, 255);\">parent 1-1</span></span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">zcvc</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/search.vue correctly 1`] = `\n<div><span class=\"ant-input-group-wrapper ant-input-search\" style=\"margin-bottom: 8px;\"><span class=\"ant-input-wrapper ant-input-group\"><!----><input placeholder=\"Search\" type=\"text\" class=\"ant-input\"><span class=\"ant-input-group-addon\"><button class=\"ant-btn ant-btn-default ant-input-search-button ant-btn-icon-only\" type=\"button\"><span role=\"img\" aria-label=\"search\" class=\"anticon anticon-search\"><svg focusable=\"false\" class=\"\" data-icon=\"search\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"></path></svg></span></button></span></span></span>\n  <div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n    <!---->\n    <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n    <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n      <div class=\"ant-tree-indent\">\n        <div class=\"ant-tree-indent-unit\"></div>\n      </div>\n    </div>\n    <div style=\"position: relative;\" class=\"ant-tree-list\">\n      <div class=\"ant-tree-list-holder\">\n        <div>\n          <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\"><span> <span style=\"color: rgb(255, 85, 0);\"></span> 0-0</span></span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\"><span> <span style=\"color: rgb(255, 85, 0);\"></span> 0-1</span></span>\n              <!----></span>\n            </div>\n            <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n              <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span>\n              <!----><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\"><span> <span style=\"color: rgb(255, 85, 0);\"></span> 0-2</span></span>\n              <!----></span>\n            </div>\n          </div>\n        </div>\n      </div>\n      <!---->\n    </div>\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/switcher-icon.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide ant-tree-show-line\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\">\n      <div>\n        <div style=\"display: flex; flex-direction: column;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n            <!----><span title=\"parent 1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n            <!----><span title=\"parent 1-0\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">parent 1-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n            <!----><span title=\"leaf\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n            <!----><span title=\"leaf\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file ant-tree-switcher-line-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\"></path></svg></span></span>\n            <!----><span title=\"leaf\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">leaf</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n            <!----><span title=\"parent 1-1\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 1-1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-close ant-tree-treenode-leaf-last\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start ant-tree-indent-unit-end\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_close\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span>\n            <!----><span title=\"parent 1-2\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"><!----><span class=\"ant-tree-title\">parent 1-2</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!---->\n  </div>\n</div>\n`;\n\nexports[`renders ./components/tree/demo/virtual-scroll.vue correctly 1`] = `\n<div role=\"tree\" class=\"ant-tree ant-tree-icon-hide\">\n  <!---->\n  <div><input style=\"width: 0px; height: 0px; display: flex; overflow: hidden; opacity: 0; border: 0px; padding: 0px; margin: 0px;\" tabindex=\"0\" aria-label=\"for screen reader\"></div>\n  <div class=\"ant-tree-treenode\" aria-hidden=\"true\" style=\"position: absolute; pointer-events: none; visibility: hidden; height: 0px; overflow: hidden;\">\n    <div class=\"ant-tree-indent\">\n      <div class=\"ant-tree-indent-unit\"></div>\n    </div>\n  </div>\n  <div style=\"position: relative;\" class=\"ant-tree-list\">\n    <div class=\"ant-tree-list-holder\" style=\"max-height: 233px; overflow-y: hidden;\">\n      <div style=\"height: 311080px; position: relative; overflow: hidden;\">\n        <div style=\"display: flex; flex-direction: column; transform: translateY(0px); position: absolute; left: 0px; right: 0px; top: 0px;\" class=\"ant-tree-list-holder-inner\">\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-indeterminate\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-indeterminate\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open ant-tree-node-selected\"><!----><span class=\"ant-tree-title\">0-0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher_open\"><span role=\"img\" aria-label=\"caret-down\" class=\"anticon anticon-caret-down ant-tree-switcher-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"caret-down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"></path></svg></span></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open\"><!----><span class=\"ant-tree-title\">0-0-0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-0</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-1</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-2</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-3</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-4</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-5</span>\n            <!----></span>\n          </div>\n          <div class=\"ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked\" draggable=\"false\" aria-grabbed=\"false\"><span aria-hidden=\"true\" class=\"ant-tree-indent\"><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span><span class=\"ant-tree-indent-unit ant-tree-indent-unit-start\"></span></span>\n            <!----><span class=\"ant-tree-switcher ant-tree-switcher-noop\"><!----></span><span class=\"ant-tree-checkbox ant-tree-checkbox-checked\"><span class=\"ant-tree-checkbox-inner\"></span></span><span title=\"\" class=\"ant-tree-node-content-wrapper ant-tree-node-content-wrapper-normal\"><!----><span class=\"ant-tree-title\">0-0-0-0-6</span>\n            <!----></span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ant-tree-list-scrollbar ant-tree-list-scrollbar-show\" style=\"width: 8px; top: 0px; bottom: 0px; right: 0px; position: absolute; display: none;\">\n      <div class=\"ant-tree-list-scrollbar-thumb\" style=\"width: 100%; height: 20px; top: 0px; left: 0px; position: absolute; background: rgba(0, 0, 0, 0.5); border-radius: 99px; cursor: pointer; user-select: none;\"></div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "components/tree/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tree');\n"
  },
  {
    "path": "components/tree/__tests__/util.test.js",
    "content": "import { calcRangeKeys } from '../utils/dictUtil';\n\ndescribe('Tree util', () => {\n  describe('calcRangeKeys', () => {\n    const treeData = [\n      { key: '0-0', children: [{ key: '0-0-0' }, { key: '0-0-1' }] },\n      { key: '0-1', children: [{ key: '0-1-0' }, { key: '0-1-1' }] },\n      {\n        key: '0-2',\n        children: [\n          { key: '0-2-0', children: [{ key: '0-2-0-0' }, { key: '0-2-0-1' }, { key: '0-2-0-2' }] },\n        ],\n      },\n    ];\n\n    it('calc range keys', () => {\n      const keys = calcRangeKeys({\n        treeData,\n        expandedKeys: ['0-0', '0-2', '0-2-0'],\n        startKey: '0-2-0-1',\n        endKey: '0-0-0',\n      });\n      const target = ['0-0-0', '0-0-1', '0-1', '0-2', '0-2-0', '0-2-0-0', '0-2-0-1'];\n      expect(keys.sort()).toEqual(target.sort());\n    });\n\n    it('return startKey when startKey === endKey', () => {\n      const keys = calcRangeKeys({\n        treeData,\n        expandedKeys: ['0-0', '0-2', '0-2-0'],\n        startKey: '0-0-0',\n        endKey: '0-0-0',\n      });\n      expect(keys).toEqual(['0-0-0']);\n    });\n\n    it('return empty array without startKey and endKey', () => {\n      const keys = calcRangeKeys({\n        treeData,\n        expandedKeys: ['0-0', '0-2', '0-2-0'],\n      });\n      expect(keys).toEqual([]);\n    });\n  });\n});\n"
  },
  {
    "path": "components/tree/breakchange.md",
    "content": "title 的渲染逻辑\n"
  },
  {
    "path": "components/tree/demo/accordion.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 手风琴模式\n  en-US: Accordion\n---\n\n## zh-CN\n\n同一级的节点，每次只能展开一个\n\n## en-US\n\nNodes of the same level can only be expanded one\n\n</docs>\n<template>\n  <a-tree\n    v-model:selectedKeys=\"selectedKeys\"\n    :expanded-keys=\"expandedKeys\"\n    :tree-data=\"treeData\"\n    @expand=\"handleExpand\"\n  >\n    <template #title=\"{ title, key }\">\n      <span v-if=\"key === '0-0-1-0'\" style=\"color: #1890ff\">{{ title }}</span>\n      <template v-else>{{ title }}</template>\n    </template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeProps } from 'ant-design-vue';\nimport difference from 'lodash-es/difference';\n\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        children: [\n          { title: 'leaf', key: '0-0-0-0' },\n          { title: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [{ key: '0-0-1-0', title: 'sss' }],\n      },\n    ],\n  },\n  {\n    title: 'parent 2',\n    key: '1-0',\n    children: [\n      {\n        title: 'parent 2-0',\n        key: '1-0-0',\n      },\n      {\n        title: 'parent 2-1',\n        key: '2-0-1',\n      },\n    ],\n  },\n];\n\nconst expandedKeys = ref<string[]>([]);\nconst selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nwatch(expandedKeys, () => {\n  console.log('expandedKeys', expandedKeys);\n});\nwatch(selectedKeys, () => {\n  console.log('selectedKeys', selectedKeys);\n});\nwatch(checkedKeys, () => {\n  console.log('checkedKeys', checkedKeys);\n});\nconst handleExpand = (keys: string[], { expanded, node }) => {\n  // node.parent add from 3.0.0-alpha.10\n  const tempKeys = ((node.parent ? node.parent.children : treeData) || []).map(({ key }) => key);\n  if (expanded) {\n    expandedKeys.value = difference(keys, tempKeys).concat(node.key);\n  } else {\n    expandedKeys.value = keys;\n  }\n};\n</script>\n"
  },
  {
    "path": "components/tree/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法，展示可勾选，可选中，禁用，默认展开等功能。\n\n## en-US\n\nThe most basic usage, tell you how to use checkable, selectable, disabled, defaultExpandKeys, and etc.\n\n</docs>\n<template>\n  <a-tree\n    v-model:expandedKeys=\"expandedKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    v-model:checkedKeys=\"checkedKeys\"\n    checkable\n    :tree-data=\"treeData\"\n  >\n    <template #title=\"{ title, key }\">\n      <span v-if=\"key === '0-0-1-0'\" style=\"color: #1890ff\">{{ title }}</span>\n      <template v-else>{{ title }}</template>\n    </template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeProps } from 'ant-design-vue';\n\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        disabled: true,\n        children: [\n          { title: 'leaf', key: '0-0-0-0', disableCheckbox: true },\n          { title: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [{ key: '0-0-1-0', title: 'sss' }],\n      },\n    ],\n  },\n];\n\nconst expandedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nwatch(expandedKeys, () => {\n  console.log('expandedKeys', expandedKeys);\n});\nwatch(selectedKeys, () => {\n  console.log('selectedKeys', selectedKeys);\n});\nwatch(checkedKeys, () => {\n  console.log('checkedKeys', checkedKeys);\n});\n</script>\n"
  },
  {
    "path": "components/tree/demo/context-menu.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 右键菜单\n  en-US: Context Menu\n---\n\n## zh-CN\n\n自定义展示右键菜单\n\n## en-US\n\nCustom display the context menu\n\n</docs>\n\n<template>\n  <a-tree v-model:expandedKeys=\"expandedKeys\" :tree-data=\"treeData\">\n    <template #title=\"{ key: treeKey, title }\">\n      <a-dropdown :trigger=\"['contextmenu']\">\n        <span>{{ title }}</span>\n        <template #overlay>\n          <a-menu @click=\"({ key: menuKey }) => onContextMenuClick(treeKey, menuKey)\">\n            <a-menu-item key=\"1\">1st menu item</a-menu-item>\n            <a-menu-item key=\"2\">2nd menu item</a-menu-item>\n            <a-menu-item key=\"3\">3rd menu item</a-menu-item>\n          </a-menu>\n        </template>\n      </a-dropdown>\n    </template>\n  </a-tree>\n</template>\n\n<script lang=\"ts\" setup>\nimport { watch, ref } from 'vue';\n\nconst treeData = [\n  {\n    title: '0-0',\n    key: '0-0',\n    children: [\n      {\n        title: '0-0-0',\n        key: '0-0-0',\n        children: [\n          { title: '0-0-0-0', key: '0-0-0-0' },\n          { title: '0-0-0-1', key: '0-0-0-1' },\n          { title: '0-0-0-2', key: '0-0-0-2' },\n        ],\n      },\n      {\n        title: '0-0-1',\n        key: '0-0-1',\n        children: [\n          { title: '0-0-1-0', key: '0-0-1-0' },\n          { title: '0-0-1-1', key: '0-0-1-1' },\n          { title: '0-0-1-2', key: '0-0-1-2' },\n        ],\n      },\n    ],\n  },\n];\nconst onContextMenuClick = (treeKey: string, menuKey: string | number) => {\n  console.log(`treeKey: ${treeKey}, menuKey: ${menuKey}`);\n};\nconst expandedKeys = ref<string[]>(['0-0-0', '0-0-1']);\n\nwatch(expandedKeys, () => {\n  console.log('expandedKeys', expandedKeys);\n});\n</script>\n"
  },
  {
    "path": "components/tree/demo/customized-icon.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 自定义图标\n  en-US: Customize Icon\n---\n\n## zh-CN\n\n可以针对不同的节点定制图标。\n\n## en-US\n\nYou can customize icons for different nodes.\n\n</docs>\n\n<template>\n  <a-tree v-model:selectedKeys=\"selectedKeys\" :tree-data=\"treeData\" show-icon default-expand-all>\n    <template #switcherIcon=\"{ switcherCls }\"><down-outlined :class=\"switcherCls\" /></template>\n    <template #icon=\"{ key, selected }\">\n      <template v-if=\"key === '0-0'\">\n        <smile-outlined />\n      </template>\n      <template v-else-if=\"key === '0-0-0'\">\n        <smile-outlined />\n      </template>\n      <template v-else>\n        <frown-filled v-if=\"selected\" />\n        <frown-outlined v-else />\n      </template>\n    </template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { DownOutlined, SmileOutlined, FrownOutlined, FrownFilled } from '@ant-design/icons-vue';\nimport type { TreeProps } from 'ant-design-vue';\n\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      { title: 'leaf', key: '0-0-0' },\n      { title: 'leaf', key: '0-0-1' },\n    ],\n  },\n];\nconst selectedKeys = ref(['0-0-0']);\n</script>\n"
  },
  {
    "path": "components/tree/demo/directory.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 目录\n  en-US: Directory\n---\n\n## zh-CN\n\n内置的目录树，`multiple` 模式支持 `ctrl(Windows)` / `command(Mac)` 复选。\n\n## en-US\n\nBuilt-in directory tree. `multiple` support `ctrl(Windows)` / `command(Mac)` selection.\n\n</docs>\n\n<template>\n  <a-directory-tree\n    v-model:expandedKeys=\"expandedKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    multiple\n    :tree-data=\"treeData\"\n  ></a-directory-tree>\n</template>\n<script lang=\"ts\" setup>\nimport type { TreeProps } from 'ant-design-vue';\nimport { ref } from 'vue';\n\nconst expandedKeys = ref<string[]>(['0-0', '0-1']);\nconst selectedKeys = ref<string[]>([]);\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 0',\n    key: '0-0',\n    children: [\n      {\n        title: 'leaf 0-0',\n        key: '0-0-0',\n        isLeaf: true,\n      },\n      {\n        title: 'leaf 0-1',\n        key: '0-0-1',\n        isLeaf: true,\n      },\n    ],\n  },\n  {\n    title: 'parent 1',\n    key: '0-1',\n    children: [\n      {\n        title: 'leaf 1-0',\n        key: '0-1-0',\n        isLeaf: true,\n      },\n      {\n        title: 'leaf 1-1',\n        key: '0-1-1',\n        isLeaf: true,\n      },\n    ],\n  },\n];\n</script>\n"
  },
  {
    "path": "components/tree/demo/draggable.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 拖动示例\n  en-US: draggable\n---\n\n## zh-CN\n\n将节点拖拽到其他节点内部或前后。\n\n## en-US\n\nDrag treeNode to insert after the other treeNode or insert into the other parent TreeNode.\n\n</docs>\n<template>\n  <a-tree\n    class=\"draggable-tree\"\n    draggable\n    block-node\n    :tree-data=\"gData\"\n    @dragenter=\"onDragEnter\"\n    @drop=\"onDrop\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type {\n  AntTreeNodeDragEnterEvent,\n  AntTreeNodeDropEvent,\n  TreeProps,\n} from 'ant-design-vue/es/tree';\n\nconst x = 3;\nconst y = 2;\nconst z = 1;\nconst genData = [];\n\nconst generateData = (_level: number, _preKey?: string, _tns?: TreeProps['treeData']) => {\n  const preKey = _preKey || '0';\n  const tns = _tns || genData;\n\n  const children = [];\n  for (let i = 0; i < x; i++) {\n    const key = `${preKey}-${i}`;\n    tns.push({ title: key, key });\n    if (i < y) {\n      children.push(key);\n    }\n  }\n  if (_level < 0) {\n    return tns;\n  }\n  const level = _level - 1;\n  children.forEach((key, index) => {\n    tns[index].children = [];\n    return generateData(level, key, tns[index].children);\n  });\n};\ngenerateData(z);\ntype TreeDataItem = TreeProps['treeData'][number];\nconst gData = ref<TreeProps['treeData']>(genData);\nconst onDragEnter = (info: AntTreeNodeDragEnterEvent) => {\n  console.log(info);\n  // expandedKeys 需要展开时\n  // expandedKeys.value = info.expandedKeys;\n};\n\nconst onDrop = (info: AntTreeNodeDropEvent) => {\n  console.log(info);\n  const dropKey = info.node.key;\n  const dragKey = info.dragNode.key;\n  const dropPos = info.node.pos.split('-');\n  const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n  const loop = (data: TreeProps['treeData'], key: string | number, callback: any) => {\n    data.forEach((item, index) => {\n      if (item.key === key) {\n        return callback(item, index, data);\n      }\n      if (item.children) {\n        return loop(item.children, key, callback);\n      }\n    });\n  };\n  const data = [...gData.value];\n\n  // Find dragObject\n  let dragObj: TreeDataItem;\n  loop(data, dragKey, (item: TreeDataItem, index: number, arr: TreeProps['treeData']) => {\n    arr.splice(index, 1);\n    dragObj = item;\n  });\n  if (!info.dropToGap) {\n    // Drop on the content\n    loop(data, dropKey, (item: TreeDataItem) => {\n      item.children = item.children || [];\n      /// where to insert 示例添加到头部，可以是随意位置\n      item.children.unshift(dragObj);\n    });\n  } else if (\n    (info.node.children || []).length > 0 && // Has children\n    info.node.expanded && // Is expanded\n    dropPosition === 1 // On the bottom gap\n  ) {\n    loop(data, dropKey, (item: TreeDataItem) => {\n      item.children = item.children || [];\n      // where to insert 示例添加到头部，可以是随意位置\n      item.children.unshift(dragObj);\n    });\n  } else {\n    let ar: TreeProps['treeData'] = [];\n    let i = 0;\n    loop(data, dropKey, (_item: TreeDataItem, index: number, arr: TreeProps['treeData']) => {\n      ar = arr;\n      i = index;\n    });\n    if (dropPosition === -1) {\n      ar.splice(i, 0, dragObj);\n    } else {\n      ar.splice(i + 1, 0, dragObj);\n    }\n  }\n  gData.value = data;\n};\n</script>\n"
  },
  {
    "path": "components/tree/demo/dynamic.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 异步数据加载\n  en-US: load data asynchronously\n---\n\n## zh-CN\n\n点击展开节点，动态加载数据。\n\n## en-US\n\nTo load data asynchronously when click to expand a treeNode.\n\n</docs>\n\n<template>\n  <a-tree\n    v-model:expandedKeys=\"expandedKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    :load-data=\"onLoadData\"\n    :tree-data=\"treeData\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TreeProps } from 'ant-design-vue';\n\nconst expandedKeys = ref<string[]>([]);\nconst selectedKeys = ref<string[]>([]);\nconst treeData = ref<TreeProps['treeData']>([\n  { title: 'Expand to load', key: '0' },\n  { title: 'Expand to load', key: '1' },\n  { title: 'Tree Node', key: '2', isLeaf: true },\n]);\nconst onLoadData: TreeProps['loadData'] = treeNode => {\n  return new Promise<void>(resolve => {\n    if (treeNode.dataRef.children) {\n      resolve();\n      return;\n    }\n    setTimeout(() => {\n      treeNode.dataRef.children = [\n        { title: 'Child Node', key: `${treeNode.eventKey}-0` },\n        { title: 'Child Node', key: `${treeNode.eventKey}-1` },\n      ];\n      treeData.value = [...treeData.value];\n      resolve();\n    }, 1000);\n  });\n};\n</script>\n"
  },
  {
    "path": "components/tree/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <draggable />\n    <dynamic />\n    <custom-icon />\n    <search />\n    <show-line />\n    <directory />\n    <switcher-icon />\n    <replace-fields />\n    <context-menu />\n    <virtual-scroll />\n    <accordion />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Draggable from './draggable.vue';\nimport Dynamic from './dynamic.vue';\nimport Search from './search.vue';\nimport Line from './line.vue';\nimport CustomIcon from './customized-icon.vue';\nimport Directory from './directory.vue';\nimport SwitcherIcon from './switcher-icon.vue';\nimport ReplaceFields from './replaceFields.vue';\nimport ContextMenu from './context-menu.vue';\nimport VirtualScroll from './virtual-scroll.vue';\nimport Accordion from './accordion.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Draggable,\n    Dynamic,\n    Search,\n    ShowLine: Line,\n    CustomIcon,\n    Directory,\n    SwitcherIcon,\n    ReplaceFields,\n    ContextMenu,\n    VirtualScroll,\n    Accordion,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tree/demo/line.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 连接线\n  en-US: Tree With Line\n---\n\n## zh-CN\n\n节点之间带连接线的树，常用于文件目录结构展示。使用 `showLine` 开启，可以用 `switcherIcon` 修改默认图标。\n\n## en-US\n\nTree with connected line between nodes, turn on by `showLine`, customize the preseted icon by `switcherIcon`.\n\n</docs>\n\n<template>\n  <div>\n    <div style=\"margin-bottom: 16px\">\n      showLine:\n      <a-switch v-model:checked=\"showLine\" />\n      <br />\n      <br />\n      showIcon:\n      <a-switch v-model:checked=\"showIcon\" />\n    </div>\n    <a-tree\n      :show-line=\"showLine\"\n      :show-icon=\"showIcon\"\n      :default-expanded-keys=\"['0-0-0']\"\n      :tree-data=\"treeData\"\n      @select=\"onSelect\"\n    >\n      <template #icon><carry-out-outlined /></template>\n      <template #title=\"{ dataRef }\">\n        <template v-if=\"dataRef.key === '0-0-0-1'\">\n          <div>multiple line title</div>\n          <div>multiple line title</div>\n        </template>\n        <template v-else>{{ dataRef.title }}</template>\n      </template>\n      <template #switcherIcon=\"{ dataRef, defaultIcon }\">\n        <SmileTwoTone v-if=\"dataRef.key === '0-0-2'\" />\n        <component :is=\"defaultIcon\" v-else />\n      </template>\n    </a-tree>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { CarryOutOutlined, SmileTwoTone } from '@ant-design/icons-vue';\nimport type { TreeProps } from 'ant-design-vue';\nconst showLine = ref<boolean>(true);\nconst showIcon = ref<boolean>(false);\nconst treeData = ref<TreeProps['treeData']>([\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        children: [\n          { title: 'leaf', key: '0-0-0-0' },\n          {\n            key: '0-0-0-1',\n          },\n          { title: 'leaf', key: '0-0-0-2' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [{ title: 'leaf', key: '0-0-1-0' }],\n      },\n      {\n        title: 'parent 1-2',\n        key: '0-0-2',\n        children: [\n          { title: 'leaf 1', key: '0-0-2-0' },\n          {\n            title: 'leaf 2',\n            key: '0-0-2-1',\n          },\n        ],\n      },\n    ],\n  },\n  {\n    title: 'parent 2',\n    key: '0-1',\n    children: [\n      {\n        title: 'parent 2-0',\n        key: '0-1-0',\n        children: [\n          { title: 'leaf', key: '0-1-0-0' },\n          { title: 'leaf', key: '0-1-0-1' },\n        ],\n      },\n    ],\n  },\n]);\nconst onSelect: TreeProps['onSelect'] = (selectedKeys, info) => {\n  console.log('selected', selectedKeys, info);\n};\n</script>\n"
  },
  {
    "path": "components/tree/demo/replaceFields.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 自定义字段\n  en-US: ReplaceFields\n---\n\n## zh-CN\n\n替换treeNode中 title,key,children字段为treeData中对应的字段\n\n## en-US\n\nReplace the title,key and children fields in treeNode with the corresponding fields in treeData.\n\n</docs>\n\n<template>\n  <a-tree\n    v-model:expandedKeys=\"expandedKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    v-model:checkedKeys=\"checkedKeys\"\n    checkable\n    :tree-data=\"treeData\"\n    :field-names=\"fieldNames\"\n  >\n    <template #title=\"{ name, key }\">\n      <span v-if=\"key === '0-0-1'\" style=\"color: #1890ff\">{{ name }}</span>\n      <template v-else>{{ name }}</template>\n    </template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport { Ref, ref, watch } from 'vue';\nimport type { TreeProps } from 'ant-design-vue';\nconst expandedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\n\nconst fieldNames: TreeProps['fieldNames'] = {\n  children: 'child',\n  title: 'name',\n};\n\nconst treeData: Ref<TreeProps['treeData']> = ref([\n  {\n    name: 'parent 1',\n    key: '0-0',\n    child: [\n      {\n        name: '张晨成',\n        key: '0-0-0',\n        disabled: true,\n        child: [\n          { name: 'leaf', key: '0-0-0-0', disableCheckbox: true },\n          { name: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        name: 'parent 1-1',\n        key: '0-0-1',\n        child: [{ key: '0-0-1-0', name: 'zcvc' }],\n      },\n    ],\n  },\n]);\nwatch(expandedKeys, () => {\n  console.log('expandedKeys', expandedKeys);\n});\nwatch(selectedKeys, () => {\n  console.log('selectedKeys', selectedKeys);\n});\nwatch(checkedKeys, () => {\n  console.log('checkedKeys', checkedKeys);\n});\n</script>\n"
  },
  {
    "path": "components/tree/demo/search.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 可搜索\n  en-US: Searchable\n---\n\n## zh-CN\n\n可搜索的树。\n\n## en-US\n\nSearchable Tree.\n\n</docs>\n\n<template>\n  <div>\n    <a-input-search v-model:value=\"searchValue\" style=\"margin-bottom: 8px\" placeholder=\"Search\" />\n    <a-tree\n      :expanded-keys=\"expandedKeys\"\n      :auto-expand-parent=\"autoExpandParent\"\n      :tree-data=\"gData\"\n      @expand=\"onExpand\"\n    >\n      <template #title=\"{ title }\">\n        <span v-if=\"title.indexOf(searchValue) > -1\">\n          {{ title.substring(0, title.indexOf(searchValue)) }}\n          <span style=\"color: #f50\">{{ searchValue }}</span>\n          {{ title.substring(title.indexOf(searchValue) + searchValue.length) }}\n        </span>\n        <span v-else>{{ title }}</span>\n      </template>\n    </a-tree>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeProps } from 'ant-design-vue';\n\nconst x = 3;\nconst y = 2;\nconst z = 1;\nconst genData: TreeProps['treeData'] = [];\n\nconst generateData = (_level: number, _preKey?: string, _tns?: TreeProps['treeData']) => {\n  const preKey = _preKey || '0';\n  const tns = _tns || genData;\n\n  const children = [];\n  for (let i = 0; i < x; i++) {\n    const key = `${preKey}-${i}`;\n    tns.push({ title: key, key });\n    if (i < y) {\n      children.push(key);\n    }\n  }\n  if (_level < 0) {\n    return tns;\n  }\n  const level = _level - 1;\n  children.forEach((key, index) => {\n    tns[index].children = [];\n    return generateData(level, key, tns[index].children);\n  });\n};\ngenerateData(z);\n\nconst dataList: TreeProps['treeData'] = [];\nconst generateList = (data: TreeProps['treeData']) => {\n  for (let i = 0; i < data.length; i++) {\n    const node = data[i];\n    const key = node.key;\n    dataList.push({ key, title: key });\n    if (node.children) {\n      generateList(node.children);\n    }\n  }\n};\ngenerateList(genData);\n\nconst getParentKey = (\n  key: string | number,\n  tree: TreeProps['treeData'],\n): string | number | undefined => {\n  let parentKey;\n  for (let i = 0; i < tree.length; i++) {\n    const node = tree[i];\n    if (node.children) {\n      if (node.children.some(item => item.key === key)) {\n        parentKey = node.key;\n      } else if (getParentKey(key, node.children)) {\n        parentKey = getParentKey(key, node.children);\n      }\n    }\n  }\n  return parentKey;\n};\nconst expandedKeys = ref<(string | number)[]>([]);\nconst searchValue = ref<string>('');\nconst autoExpandParent = ref<boolean>(true);\nconst gData = ref<TreeProps['treeData']>(genData);\n\nconst onExpand = (keys: string[]) => {\n  expandedKeys.value = keys;\n  autoExpandParent.value = false;\n};\n\nwatch(searchValue, value => {\n  const expanded = dataList\n    .map((item: TreeProps['treeData'][number]) => {\n      if (item.title.indexOf(value) > -1) {\n        return getParentKey(item.key, gData.value);\n      }\n      return null;\n    })\n    .filter((item, i, self) => item && self.indexOf(item) === i);\n  expandedKeys.value = expanded;\n  searchValue.value = value;\n  autoExpandParent.value = true;\n});\n</script>\n"
  },
  {
    "path": "components/tree/demo/switcher-icon.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 自定义展开/折叠图标\n  en-US: Customize collapse/expand icon\n---\n\n## zh-CN\n\n自定义展开/折叠图标。\n\n## en-US\n\ncustomize collapse/expand icon of tree node\n\n</docs>\n\n<template>\n  <a-tree\n    v-model:expandedKeys=\"expandedKeys\"\n    v-model:selectedKeys=\"selectedKeys\"\n    show-line\n    :tree-data=\"treeData\"\n  >\n    <template #switcherIcon=\"{ switcherCls }\"><down-outlined :class=\"switcherCls\" /></template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport type { TreeProps } from 'ant-design-vue';\nconst expandedKeys = ref<string[]>(['0-0-0']);\nconst selectedKeys = ref<string[]>([]);\nconst treeData: TreeProps['treeData'] = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        children: [\n          {\n            title: 'leaf',\n            key: '0-0-0-0',\n          },\n          {\n            title: 'leaf',\n            key: '0-0-0-1',\n          },\n          {\n            title: 'leaf',\n            key: '0-0-0-2',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [\n          {\n            title: 'leaf',\n            key: '0-0-1-0',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-2',\n        key: '0-0-2',\n        children: [\n          {\n            title: 'leaf',\n            key: '0-0-2-0',\n          },\n          {\n            title: 'leaf',\n            key: '0-0-2-1',\n          },\n        ],\n      },\n    ],\n  },\n];\n</script>\n"
  },
  {
    "path": "components/tree/demo/virtual-scroll.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 虚拟滚动\n  en-US: Virtual scroll\n---\n\n## zh-CN\n\n使用 `height` 属性则切换为虚拟滚动。\n\n## en-US\n\nUse virtual list through `height` prop.\n\n</docs>\n<template>\n  <a-tree\n    v-model:selectedKeys=\"selectedKeys\"\n    v-model:checkedKeys=\"checkedKeys\"\n    default-expand-all\n    checkable\n    :height=\"233\"\n    :tree-data=\"dig()\"\n  >\n    <template #title=\"{ title, key }\">\n      <span v-if=\"key === '0-0-1-0'\" style=\"color: #1890ff\">{{ title }}</span>\n      <template v-else>{{ title }}</template>\n    </template>\n  </a-tree>\n</template>\n<script lang=\"ts\" setup>\nimport type { TreeProps } from 'ant-design-vue';\nimport { ref, watch } from 'vue';\n\nfunction dig(path = '0', level = 3) {\n  const list: TreeProps['treeData'] = [];\n  for (let i = 0; i < 10; i += 1) {\n    const key = `${path}-${i}`;\n    const treeNode: TreeProps['treeData'][number] = {\n      title: key,\n      key,\n    };\n\n    if (level > 0) {\n      treeNode.children = dig(key, level - 1);\n    }\n\n    list.push(treeNode);\n  }\n  return list;\n}\n\nconst selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nwatch(selectedKeys, () => {\n  console.log('selectedKeys', selectedKeys);\n});\nwatch(checkedKeys, () => {\n  console.log('checkedKeys', checkedKeys);\n});\n</script>\n"
  },
  {
    "path": "components/tree/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Display\ntitle: Tree\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ag9_Q6ArswEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1GeUQJPTGUYAAAAAAAAAAAAADrJ8AQ/original\n---\n\nA hierarchical list structure component.\n\n## When To Use\n\nAlmost anything can be represented in a tree structure. Examples include directories, organization hierarchies, biological classifications, countries, etc. The `Tree` component is a way of representing the hierarchical relationship between these things. You can also expand, collapse, and select a treeNode within a `Tree`.\n\n## API\n\n### Tree props\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| allowDrop | Whether to allow dropping on the node | ({ dropNode, dropPosition }) => boolean | - |  |\n| autoExpandParent | Whether to automatically expand a parent treeNode | boolean | false |  |\n| blockNode | Whether treeNode fill remaining horizontal space | boolean | false |  |\n| checkable | Adds a `Checkbox` before the treeNodes | boolean | false |  |\n| checkedKeys(v-model) | (Controlled) Specifies the keys of the checked treeNodes (PS: When this specifies the key of a treeNode which is also a parent treeNode, all the children treeNodes of will be checked; and vice versa, when it specifies the key of a treeNode which is a child treeNode, its parent treeNode will also be checked. When `checkable` and `checkStrictly` is true, its object has `checked` and `halfChecked` property. Regardless of whether the child or parent treeNode is checked, they won't impact each other. | string\\[] \\| number\\[] \\| {checked: string\\[] \\| number\\[], halfChecked: string\\[] \\| number\\[]} | \\[] |  |\n| checkStrictly | Check treeNode precisely; parent treeNode and children treeNodes are not associated | boolean | false |  |\n| defaultExpandAll | Whether to expand all treeNodes by default | boolean | false |  |\n| disabled | whether disabled the tree | bool | false |  |\n| draggable | Specifies whether this Tree is draggable (IE > 8) | boolean | false |  |\n| expandedKeys(v-model) | (Controlled) Specifies the keys of the expanded treeNodes | string\\[] \\| number\\[] | \\[] |  |\n| fieldNames | Replace the title,key and children fields in treeNode with the corresponding fields in treeData | object | { children:'children', title:'title', key:'key' } | 3.0.0 |\n| filterTreeNode | Defines a function to filter (highlight) treeNodes. When the function returns `true`, the corresponding treeNode will be highlighted | function(node) | - |  |\n| height | Config virtual scroll height. Will not support horizontal scroll when enable this | number | - |  |\n| loadData | Load data asynchronously | function(node) | - |  |\n| loadedKeys | (Controlled) Set loaded tree nodes. Need work with `loadData` | string\\[] \\| number\\[] | \\[] |  |\n| multiple | Allows selecting multiple treeNodes | boolean | false |  |\n| selectable | whether can be selected | boolean | true |  |\n| selectedKeys(v-model) | (Controlled) Specifies the keys of the selected treeNodes | string\\[] \\| number\\[] | - |  |\n| showIcon | Shows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to `true` | boolean | false |  |\n| showLine | Shows a connecting line | boolean \\| {showLeafIcon: boolean}(3.0+) | false |  |\n| switcherIcon | customize collapse/expand icon of tree node | v-slot:switcherIcon=\"{active, checked, expanded, loading, selected, halfChecked, title, key, children, dataRef, data, defaultIcon, switcherCls}\" | - |  |\n| title | custom title | slot |  | 2.0.0 |\n| treeData | treeNode of tree, please use `treeNodes` before v1.1.4 | [TreeNode\\[\\]](#treenode) | - |  |\n| virtual | Disable virtual scroll when set to false | boolean | true | 3.0 |\n\n### Events\n\n| Events Name | Description | Arguments |\n| --- | --- | --- |\n| check | Callback function for when the onCheck event occurs | function(checkedKeys, e:{checked: bool, checkedNodes, node, event}) |\n| dragend | Callback function for when the onDragEnd event occurs | function({event, node}) |\n| dragenter | Callback function for when the onDragEnter event occurs | function({event, node, expandedKeys}) |\n| dragleave | Callback function for when the onDragLeave event occurs | function({event, node}) |\n| dragover | Callback function for when the onDragOver event occurs | function({event, node}) |\n| dragstart | Callback function for when the onDragStart event occurs | function({event, node}) |\n| drop | Callback function for when the onDrop event occurs | function({event, node, dragNode, dragNodesKeys}) |\n| expand | Callback function for when a treeNode is expanded or collapsed | function(expandedKeys, {expanded: bool, node}) |\n| load | Callback function for when a treeNode is loaded | function(loadedKeys, {event, node}) |\n| rightClick | Callback function for when the user right clicks a treeNode | function({event, node}) |\n| select | Callback function for when the user clicks a treeNode | function(selectedKeys, e:{selected: bool, selectedNodes, node, event}) |\n\n### Tree Methods\n\n| Name | Description |\n| --- | --- |\n| scrollTo({ key: string \\| number; align?: 'top' \\| 'bottom' \\| 'auto'; offset?: number }) | Scroll to key item in virtual scroll |\n\n### TreeNode\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| checkable | When Tree is checkable, set TreeNode display Checkbox or not | boolean | - |  |\n| class | className | string | - |  |\n| disableCheckbox | Disables the checkbox of the treeNode | boolean | false |  |\n| disabled | Disables the treeNode | boolean | false |  |\n| icon | customize icon. When you pass component, whose render will receive full TreeNode props as component props | slot\\|slot-scope | - |  |\n| isLeaf | Determines if this is a leaf node(effective when `loadData` is specified) | boolean | - |  |\n| key | Used with (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. P.S.: It must be unique in all of treeNodes of the tree! | string \\| number | internal calculated position of treeNode |  |\n| selectable | Set whether the treeNode can be selected | boolean | true |  |\n| style | style | string\\|object | - |  |\n| title | Title | string | '---' |  |\n\n### DirectoryTree props\n\n| Property     | Description                                                   | Type   | Default |\n| ------------ | ------------------------------------------------------------- | ------ | ------- |\n| expandAction | Directory open logic, optional `false` `'click'` `'dblclick'` | string | click   |\n\n## FAQ\n\n### How to hide file icon when use showLine?\n\nFile icon realize by using switcherIcon. You can overwrite the style to hide it\n"
  },
  {
    "path": "components/tree/index.tsx",
    "content": "import type { App } from 'vue';\nimport Tree from './Tree';\nimport { TreeNode as VcTreeNode } from '../vc-tree';\nimport DirectoryTree from './DirectoryTree';\n\nexport type { EventDataNode, DataNode } from '../vc-tree/interface';\n\nexport type {\n  TreeProps,\n  AntTreeNodeMouseEvent,\n  AntTreeNodeExpandedEvent,\n  AntTreeNodeCheckedEvent,\n  AntTreeNodeSelectedEvent,\n  AntTreeNodeDragEnterEvent,\n  AntTreeNodeDropEvent,\n  AntdTreeNodeAttribute,\n  TreeDataItem,\n} from './Tree';\n\nexport type {\n  ExpandAction as DirectoryTreeExpandAction,\n  DirectoryTreeProps,\n} from './DirectoryTree';\n\n/* istanbul ignore next */\n\nconst TreeNode = VcTreeNode;\n\nexport { DirectoryTree, TreeNode };\n\nexport default Object.assign(Tree, {\n  DirectoryTree,\n  TreeNode,\n  install: (app: App) => {\n    app.component(Tree.name, Tree);\n    app.component(TreeNode.name, TreeNode);\n    app.component(DirectoryTree.name, DirectoryTree);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/tree/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据展示\ntitle: Tree\nsubtitle: 树形控件\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ag9_Q6ArswEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1GeUQJPTGUYAAAAAAAAAAAAADrJ8AQ/original\n---\n\n多层次的结构列表。\n\n## 何时使用\n\n文件夹、组织架构、生物分类、国家地区等等，世间万物的大多数结构都是树形结构。使用`树控件`可以完整展现其中的层级关系，并具有展开收起选择等交互功能。\n\n## API\n\n### Tree props\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| allowDrop | 是否允许拖拽时放置在该节点 | ({ dropNode, dropPosition }) => boolean | - |  |\n| autoExpandParent | 是否自动展开父节点 | boolean | false |  |  |\n| blockNode | 是否节点占据一行 | boolean | false |  |  |\n| checkable | 节点前添加 Checkbox 复选框 | boolean | false |  |  |\n| checkedKeys(v-model) | （受控）选中复选框的树节点（注意：父子节点有关联，如果传入父节点 key，则子节点自动选中；相应当子节点 key 都传入，父节点也自动选中。当设置`checkable`和`checkStrictly`，它是一个有`checked`和`halfChecked`属性的对象，并且父子节点的选中与否不再关联 | string\\[] \\| number\\[] \\| {checked: string\\[] \\| number\\[], halfChecked: string\\[] \\| number\\[]} | \\[] |  |  |\n| checkStrictly | checkable 状态下节点选择完全受控（父子节点选中状态不再关联） | boolean | false |  |  |\n| defaultExpandAll | 默认展开所有树节点, 如果是异步数据，需要在数据返回后再实例化，建议用 v-if=\"data.length\"；当有 expandedKeys 时，defaultExpandAll 将失效 | boolean | false |  |  |\n| disabled | 将树禁用 | bool | false |  |  |\n| draggable | 设置节点可拖拽 | boolean | false |  |  |\n| expandedKeys(v-model) | （受控）展开指定的树节点 | string\\[] \\| number\\[] | \\[] |  |  |\n| fieldNames | 替换 treeNode 中 title,key,children 字段为 treeData 中对应的字段 | object | {children:'children', title:'title', key:'key' } | 3.0.0 |  |\n| filterTreeNode | 按需筛选树节点（高亮），返回 true | function(node) | - |  |  |\n| height | 设置虚拟滚动容器高度，设置后内部节点不再支持横向滚动 | number | - |  |\n| loadData | 异步加载数据 | function(node) | - |  |  |\n| loadedKeys | （受控）已经加载的节点，需要配合 `loadData` 使用 | string\\[] \\| number\\[] | \\[] |  |  |\n| multiple | 支持点选多个节点（节点本身） | boolean | false |  |  |\n| selectable | 是否可选中 | boolean | true |  |  |\n| selectedKeys(v-model) | （受控）设置选中的树节点 | string\\[] \\| number\\[] | - |  |  |\n| showIcon | 是否展示 TreeNode title 前的图标，没有默认样式，如设置为 true，需要自行定义图标相关样式 | boolean | false |  |  |\n| showLine | 是否展示连接线 | boolean \\| {showLeafIcon: boolean}(3.0+) | false |  |  |\n| switcherIcon | 自定义树节点的展开/折叠图标 | v-slot:switcherIcon=\"{active, checked, expanded, loading, selected, halfChecked, title, key, children, dataRef, data, defaultIcon, switcherCls}\" | - |  |  |\n| title | 自定义标题 | slot |  | 2.0.0 |  |\n| treeData | treeNodes 数据，如果设置则不需要手动构造 TreeNode 节点（key 在整个树范围内唯一） | [TreeNode\\[\\]](#treenode) | -- |  |  |\n| virtual | 设置 false 时关闭虚拟滚动 | boolean | true | 3.0 |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 |\n| --- | --- | --- |\n| check | 点击复选框触发 | function(checkedKeys, e:{checked: bool, checkedNodes, node, event}) |\n| dragend | dragend 触发时调用 | function({event, node}) |\n| dragenter | dragenter 触发时调用 | function({event, node, expandedKeys}) |\n| dragleave | dragleave 触发时调用 | function({event, node}) |\n| dragover | dragover 触发时调用 | function({event, node}) |\n| dragstart | 开始拖拽时调用 | function({event, node}) |\n| drop | drop 触发时调用 | function({event, node, dragNode, dragNodesKeys}) |\n| expand | 展开/收起节点时触发 | function(expandedKeys, {expanded: bool, node}) |\n| load | 节点加载完毕时触发 | function(loadedKeys, {event, node}) |\n| rightClick | 响应右键点击 | function({event, node}) |\n| select | 点击树节点触发 | function(selectedKeys, e:{selected: bool, selectedNodes, node, event}) |\n\n### Tree 方法\n\n| 名称 | 说明 |\n| --- | --- |\n| scrollTo({ key: string \\| number; align?: 'top' \\| 'bottom' \\| 'auto'; offset?: number }) | 虚拟滚动下，滚动到指定 key 条目 |\n\n### TreeNode\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| checkable | 当树为 checkable 时，设置独立节点是否展示 Checkbox | boolean | - |  |\n| class | 节点的 class | string | - |  |\n| disableCheckbox | 禁掉 checkbox | boolean | false |  |\n| disabled | 禁掉响应 | boolean | false |  |\n| icon | 自定义图标。可接收组件，props 为当前节点 props | slot\\|slot-scope | - |  |\n| isLeaf | 设置为叶子节点(设置了`loadData`时有效) | boolean | - |  |\n| key | 被树的 (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys 属性所用。注意：整个树范围内的所有节点的 key 值不能重复！ | string \\| number | 内部计算出的节点位置 |  |\n| selectable | 设置节点是否可被选中 | boolean | true |  |\n| style | 节点的 style | string\\|object | - |  |\n| title | 标题 | string | '---' |  |\n\n### DirectoryTree props\n\n| 参数         | 说明                                              | 类型   | 默认值 |\n| ------------ | ------------------------------------------------- | ------ | ------ |\n| expandAction | 目录展开逻辑，可选 `false` `'click'` `'dblclick'` | string | click  |\n\n## FAQ\n\n### 在 showLine 时，如何隐藏子节点图标？\n\n文件图标通过 switcherIcon 来实现，如果不需要你可以覆盖对应的样式\n"
  },
  {
    "path": "components/tree/style/index.ts",
    "content": "import type { CSSInterpolation, CSSObject } from '../../_util/cssinjs';\nimport { Keyframes } from '../../_util/cssinjs';\nimport { genCollapseMotion } from '../../style/motion';\nimport { getStyle as getCheckboxStyle } from '../../checkbox/style';\nimport type { DerivativeToken } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusOutline, resetComponent } from '../../style';\n\n// ============================ Keyframes =============================\nconst treeNodeFX = new Keyframes('ant-tree-node-fx-do-not-use', {\n  '0%': {\n    opacity: 0,\n  },\n  '100%': {\n    opacity: 1,\n  },\n});\n\n// ============================== Switch ==============================\nconst getSwitchStyle = (prefixCls: string, token: DerivativeToken): CSSObject => ({\n  [`.${prefixCls}-switcher-icon`]: {\n    display: 'inline-block',\n    fontSize: 10,\n    verticalAlign: 'baseline',\n\n    svg: {\n      transition: `transform ${token.motionDurationSlow}`,\n    },\n  },\n});\n\n// =============================== Drop ===============================\nconst getDropIndicatorStyle = (prefixCls: string, token: DerivativeToken) => ({\n  [`.${prefixCls}-drop-indicator`]: {\n    position: 'absolute',\n    // it should displayed over the following node\n    zIndex: 1,\n    height: 2,\n    backgroundColor: token.colorPrimary,\n    borderRadius: 1,\n    pointerEvents: 'none',\n\n    '&:after': {\n      position: 'absolute',\n      top: -3,\n      insetInlineStart: -6,\n      width: 8,\n      height: 8,\n      backgroundColor: 'transparent',\n      border: `${token.lineWidthBold}px solid ${token.colorPrimary}`,\n      borderRadius: '50%',\n      content: '\"\"',\n    },\n  },\n});\n\n// =============================== Base ===============================\ntype TreeToken = DerivativeToken & {\n  treeCls: string;\n  treeNodeCls: string;\n  treeNodePadding: number;\n  treeTitleHeight: number;\n};\n\nexport const genBaseStyle = (prefixCls: string, token: TreeToken): CSSObject => {\n  const { treeCls, treeNodeCls, treeNodePadding, treeTitleHeight } = token;\n\n  const treeCheckBoxMarginVertical = (treeTitleHeight - token.fontSizeLG) / 2;\n  const treeCheckBoxMarginHorizontal = token.paddingXS;\n\n  return {\n    [treeCls]: {\n      ...resetComponent(token),\n      background: token.colorBgContainer,\n      borderRadius: token.borderRadius,\n      transition: `background-color ${token.motionDurationSlow}`,\n\n      [`&${treeCls}-rtl`]: {\n        // >>> Switcher\n        [`${treeCls}-switcher`]: {\n          '&_close': {\n            [`${treeCls}-switcher-icon`]: {\n              svg: {\n                transform: 'rotate(90deg)',\n              },\n            },\n          },\n        },\n      },\n\n      [`&-focused:not(:hover):not(${treeCls}-active-focused)`]: {\n        ...genFocusOutline(token),\n      },\n\n      // =================== Virtual List ===================\n      [`${treeCls}-list-holder-inner`]: {\n        alignItems: 'flex-start',\n      },\n\n      [`&${treeCls}-block-node`]: {\n        [`${treeCls}-list-holder-inner`]: {\n          alignItems: 'stretch',\n\n          // >>> Title\n          [`${treeCls}-node-content-wrapper`]: {\n            flex: 'auto',\n          },\n\n          // >>> Drag\n          [`${treeNodeCls}.dragging`]: {\n            position: 'relative',\n\n            '&:after': {\n              position: 'absolute',\n              top: 0,\n              insetInlineEnd: 0,\n              bottom: treeNodePadding,\n              insetInlineStart: 0,\n              border: `1px solid ${token.colorPrimary}`,\n              opacity: 0,\n              animationName: treeNodeFX,\n              animationDuration: token.motionDurationSlow,\n              animationPlayState: 'running',\n              animationFillMode: 'forwards',\n              content: '\"\"',\n              pointerEvents: 'none',\n            },\n          },\n        },\n      },\n\n      // ===================== TreeNode =====================\n      [`${treeNodeCls}`]: {\n        display: 'flex',\n        alignItems: 'flex-start',\n        padding: `0 0 ${treeNodePadding}px 0`,\n        outline: 'none',\n\n        '&-rtl': {\n          direction: 'rtl',\n        },\n\n        // Disabled\n        '&-disabled': {\n          // >>> Title\n          [`${treeCls}-node-content-wrapper`]: {\n            color: token.colorTextDisabled,\n            cursor: 'not-allowed',\n            '&:hover': {\n              background: 'transparent',\n            },\n          },\n        },\n\n        [`&-active ${treeCls}-node-content-wrapper`]: {\n          ...genFocusOutline(token),\n        },\n\n        [`&:not(${treeNodeCls}-disabled).filter-node ${treeCls}-title`]: {\n          color: 'inherit',\n          fontWeight: 500,\n        },\n\n        '&-draggable': {\n          [`${treeCls}-draggable-icon`]: {\n            width: treeTitleHeight,\n            lineHeight: `${treeTitleHeight}px`,\n            textAlign: 'center',\n            visibility: 'visible',\n            opacity: 0.2,\n            transition: `opacity ${token.motionDurationSlow}`,\n\n            [`${treeNodeCls}:hover &`]: {\n              opacity: 0.45,\n            },\n          },\n\n          [`&${treeNodeCls}-disabled`]: {\n            [`${treeCls}-draggable-icon`]: {\n              visibility: 'hidden',\n            },\n          },\n        },\n      },\n\n      // >>> Indent\n      [`${treeCls}-indent`]: {\n        alignSelf: 'stretch',\n        whiteSpace: 'nowrap',\n        userSelect: 'none',\n        '&-unit': {\n          display: 'inline-block',\n          width: treeTitleHeight,\n        },\n      },\n\n      // >>> Drag Handler\n      [`${treeCls}-draggable-icon`]: {\n        visibility: 'hidden',\n      },\n\n      // >>> Switcher\n      [`${treeCls}-switcher`]: {\n        ...getSwitchStyle(prefixCls, token),\n        position: 'relative',\n        flex: 'none',\n        alignSelf: 'stretch',\n        width: treeTitleHeight,\n        margin: 0,\n        lineHeight: `${treeTitleHeight}px`,\n        textAlign: 'center',\n        cursor: 'pointer',\n        userSelect: 'none',\n\n        '&-noop': {\n          cursor: 'default',\n        },\n\n        '&_close': {\n          [`${treeCls}-switcher-icon`]: {\n            svg: {\n              transform: 'rotate(-90deg)',\n            },\n          },\n        },\n\n        '&-loading-icon': {\n          color: token.colorPrimary,\n        },\n\n        '&-leaf-line': {\n          position: 'relative',\n          zIndex: 1,\n          display: 'inline-block',\n          width: '100%',\n          height: '100%',\n\n          // https://github.com/ant-design/ant-design/issues/31884\n          '&:before': {\n            position: 'absolute',\n            top: 0,\n            insetInlineEnd: treeTitleHeight / 2,\n            bottom: -treeNodePadding,\n            marginInlineStart: -1,\n            borderInlineEnd: `1px solid ${token.colorBorder}`,\n            content: '\"\"',\n          },\n\n          '&:after': {\n            position: 'absolute',\n            width: (treeTitleHeight / 2) * 0.8,\n            height: treeTitleHeight / 2,\n            borderBottom: `1px solid ${token.colorBorder}`,\n            content: '\"\"',\n          },\n        },\n      },\n\n      // >>> Checkbox\n      [`${treeCls}-checkbox`]: {\n        top: 'initial',\n        marginInlineEnd: treeCheckBoxMarginHorizontal,\n        marginBlockStart: treeCheckBoxMarginVertical,\n      },\n\n      // >>> Title\n      // add `${treeCls}-checkbox + span` to cover checkbox `${checkboxCls} + span`\n      [`${treeCls}-node-content-wrapper, ${treeCls}-checkbox + span`]: {\n        position: 'relative',\n        zIndex: 'auto',\n        minHeight: treeTitleHeight,\n        margin: 0,\n        padding: `0 ${token.paddingXS / 2}px`,\n        color: 'inherit',\n        lineHeight: `${treeTitleHeight}px`,\n        background: 'transparent',\n        borderRadius: token.borderRadius,\n        cursor: 'pointer',\n        transition: `all ${token.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,\n\n        '&:hover': {\n          backgroundColor: token.controlItemBgHover,\n        },\n\n        [`&${treeCls}-node-selected`]: {\n          backgroundColor: token.controlItemBgActive,\n        },\n\n        // Icon\n        [`${treeCls}-iconEle`]: {\n          display: 'inline-block',\n          width: treeTitleHeight,\n          height: treeTitleHeight,\n          lineHeight: `${treeTitleHeight}px`,\n          textAlign: 'center',\n          verticalAlign: 'top',\n\n          '&:empty': {\n            display: 'none',\n          },\n        },\n      },\n\n      // https://github.com/ant-design/ant-design/issues/28217\n      [`${treeCls}-unselectable ${treeCls}-node-content-wrapper:hover`]: {\n        backgroundColor: 'transparent',\n      },\n\n      // ==================== Draggable =====================\n      [`${treeCls}-node-content-wrapper`]: {\n        lineHeight: `${treeTitleHeight}px`,\n        userSelect: 'none',\n\n        ...getDropIndicatorStyle(prefixCls, token),\n      },\n\n      [`${treeNodeCls}.drop-container`]: {\n        '> [draggable]': {\n          boxShadow: `0 0 0 2px ${token.colorPrimary}`,\n        },\n      },\n\n      // ==================== Show Line =====================\n      '&-show-line': {\n        // ================ Indent lines ================\n        [`${treeCls}-indent`]: {\n          '&-unit': {\n            position: 'relative',\n            height: '100%',\n\n            '&:before': {\n              position: 'absolute',\n              top: 0,\n              insetInlineEnd: treeTitleHeight / 2,\n              bottom: -treeNodePadding,\n              borderInlineEnd: `1px solid ${token.colorBorder}`,\n              content: '\"\"',\n            },\n\n            '&-end': {\n              '&:before': {\n                display: 'none',\n              },\n            },\n          },\n        },\n\n        // ============== Cover Background ==============\n        [`${treeCls}-switcher`]: {\n          background: 'transparent',\n\n          '&-line-icon': {\n            // https://github.com/ant-design/ant-design/issues/32813\n            verticalAlign: '-0.15em',\n          },\n        },\n      },\n\n      [`${treeNodeCls}-leaf-last`]: {\n        [`${treeCls}-switcher`]: {\n          '&-leaf-line': {\n            '&:before': {\n              top: 'auto !important',\n              bottom: 'auto !important',\n              height: `${treeTitleHeight / 2}px !important`,\n            },\n          },\n        },\n      },\n    },\n  };\n};\n\n// ============================ Directory =============================\nexport const genDirectoryStyle = (token: TreeToken): CSSObject => {\n  const { treeCls, treeNodeCls, treeNodePadding } = token;\n\n  return {\n    [`${treeCls}${treeCls}-directory`]: {\n      // ================== TreeNode ==================\n      [treeNodeCls]: {\n        position: 'relative',\n\n        // Hover color\n        '&:before': {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: treeNodePadding,\n          insetInlineStart: 0,\n          transition: `background-color ${token.motionDurationMid}`,\n          content: '\"\"',\n          pointerEvents: 'none',\n        },\n\n        '&:hover': {\n          '&:before': {\n            background: token.controlItemBgHover,\n          },\n        },\n\n        // Elements\n        '> *': {\n          zIndex: 1,\n        },\n\n        // >>> Switcher\n        [`${treeCls}-switcher`]: {\n          transition: `color ${token.motionDurationMid}`,\n        },\n\n        // >>> Title\n        [`${treeCls}-node-content-wrapper`]: {\n          borderRadius: 0,\n          userSelect: 'none',\n\n          '&:hover': {\n            background: 'transparent',\n          },\n\n          [`&${treeCls}-node-selected`]: {\n            color: token.colorTextLightSolid,\n            background: 'transparent',\n          },\n        },\n\n        // ============= Selected =============\n        '&-selected': {\n          [`\n            &:hover::before,\n            &::before\n          `]: {\n            background: token.colorPrimary,\n          },\n\n          // >>> Switcher\n          [`${treeCls}-switcher`]: {\n            color: token.colorTextLightSolid,\n          },\n\n          // >>> Title\n          [`${treeCls}-node-content-wrapper`]: {\n            color: token.colorTextLightSolid,\n            background: 'transparent',\n          },\n        },\n      },\n    },\n  };\n};\n\n// ============================== Merged ==============================\nexport const genTreeStyle = (prefixCls: string, token: DerivativeToken): CSSInterpolation => {\n  const treeCls = `.${prefixCls}`;\n  const treeNodeCls = `${treeCls}-treenode`;\n\n  const treeNodePadding = token.paddingXS / 2;\n  const treeTitleHeight = token.controlHeightSM;\n\n  const treeToken = mergeToken<TreeToken>(token, {\n    treeCls,\n    treeNodeCls,\n    treeNodePadding,\n    treeTitleHeight,\n  });\n\n  return [\n    // Basic\n    genBaseStyle(prefixCls, treeToken),\n    // Directory\n    genDirectoryStyle(treeToken),\n  ];\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tree', (token, { prefixCls }) => [\n  {\n    [token.componentCls]: getCheckboxStyle(`${prefixCls}-checkbox`, token),\n  },\n  genTreeStyle(prefixCls, token),\n  genCollapseMotion(token),\n]);\n"
  },
  {
    "path": "components/tree/utils/dictUtil.ts",
    "content": "import type { DataNode, FieldNames, Key } from '../../vc-tree/interface';\n\nenum Record {\n  None,\n  Start,\n  End,\n}\n\nfunction traverseNodesKey(\n  treeData: DataNode[],\n  fieldNames: FieldNames,\n  callback: (key: Key | number | null, node: DataNode) => boolean,\n) {\n  function processNode(dataNode: DataNode) {\n    const key = dataNode[fieldNames.key];\n    const children = dataNode[fieldNames.children];\n    if (callback(key, dataNode) !== false) {\n      traverseNodesKey(children || [], fieldNames, callback);\n    }\n  }\n\n  treeData.forEach(processNode);\n}\n\n/** 计算选中范围，只考虑expanded情况以优化性能 */\nexport function calcRangeKeys({\n  treeData,\n  expandedKeys,\n  startKey,\n  endKey,\n  fieldNames = {\n    title: 'title',\n    key: 'key',\n    children: 'children',\n  },\n}: {\n  treeData: DataNode[];\n  expandedKeys: Key[];\n  startKey?: Key;\n  endKey?: Key;\n  fieldNames?: FieldNames;\n}): Key[] {\n  const keys: Key[] = [];\n  let record: Record = Record.None;\n\n  if (startKey && startKey === endKey) {\n    return [startKey];\n  }\n  if (!startKey || !endKey) {\n    return [];\n  }\n\n  function matchKey(key: Key) {\n    return key === startKey || key === endKey;\n  }\n\n  traverseNodesKey(treeData, fieldNames, (key: Key) => {\n    if (record === Record.End) {\n      return false;\n    }\n\n    if (matchKey(key)) {\n      // Match test\n      keys.push(key);\n\n      if (record === Record.None) {\n        record = Record.Start;\n      } else if (record === Record.Start) {\n        record = Record.End;\n        return false;\n      }\n    } else if (record === Record.Start) {\n      // Append selection\n      keys.push(key);\n    }\n\n    return expandedKeys.includes(key);\n  });\n\n  return keys;\n}\n\nexport function convertDirectoryKeysToNodes(\n  treeData: DataNode[],\n  keys: Key[],\n  fieldNames: FieldNames,\n) {\n  const restKeys: Key[] = [...keys];\n  const nodes: DataNode[] = [];\n  traverseNodesKey(treeData, fieldNames, (key: Key, node: DataNode) => {\n    const index = restKeys.indexOf(key);\n    if (index !== -1) {\n      nodes.push(node);\n      restKeys.splice(index, 1);\n    }\n\n    return !!restKeys.length;\n  });\n  return nodes;\n}\n"
  },
  {
    "path": "components/tree/utils/dropIndicator.tsx",
    "content": "import type { CSSProperties } from 'vue';\n\nexport const offset = 4;\n\nexport default function dropIndicatorRender(props: {\n  dropPosition: -1 | 0 | 1;\n  dropLevelOffset: number;\n  indent: number;\n  prefixCls: string;\n  direction: 'ltr' | 'rtl';\n}) {\n  const { dropPosition, dropLevelOffset, prefixCls, indent, direction = 'ltr' } = props;\n  const startPosition = direction === 'ltr' ? 'left' : 'right';\n  const endPosition = direction === 'ltr' ? 'right' : 'left';\n  const style: CSSProperties = {\n    [startPosition]: `${-dropLevelOffset * indent + offset}px`,\n    [endPosition]: 0,\n  };\n  switch (dropPosition) {\n    case -1:\n      style.top = `${-3}px`;\n      break;\n    case 1:\n      style.bottom = `${-3}px`;\n      break;\n    default:\n      // dropPosition === 0\n      style.bottom = `${-3}px`;\n      style[startPosition] = `${indent + offset}px`;\n      break;\n  }\n  return <div style={style} class={`${prefixCls}-drop-indicator`} />;\n}\n"
  },
  {
    "path": "components/tree/utils/iconUtil.tsx",
    "content": "import LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport FileOutlined from '@ant-design/icons-vue/FileOutlined';\nimport MinusSquareOutlined from '@ant-design/icons-vue/MinusSquareOutlined';\nimport PlusSquareOutlined from '@ant-design/icons-vue/PlusSquareOutlined';\nimport CaretDownFilled from '@ant-design/icons-vue/CaretDownFilled';\nimport type { AntTreeNodeProps } from '../Tree';\nimport { isValidElement } from '../../_util/props-util';\n\nimport { cloneVNode } from 'vue';\nexport interface SwitcherIconProps extends AntTreeNodeProps {\n  expanded: boolean;\n  loading: boolean;\n}\nexport default function renderSwitcherIcon(\n  prefixCls: string,\n  switcherIcon: any,\n  props: SwitcherIconProps,\n  leafIcon?: (props: SwitcherIconProps) => any,\n  showLine?: boolean | { showLeafIcon: boolean } | undefined,\n) {\n  const { isLeaf, expanded, loading } = props;\n  let icon = switcherIcon;\n  if (loading) {\n    return <LoadingOutlined class={`${prefixCls}-switcher-loading-icon`} />;\n  }\n  let showLeafIcon: boolean;\n  if (showLine && typeof showLine === 'object') {\n    showLeafIcon = showLine.showLeafIcon;\n  }\n  let defaultIcon = null;\n  const switcherCls = `${prefixCls}-switcher-icon`;\n  if (isLeaf) {\n    if (!showLine) {\n      return null;\n    }\n    if (showLeafIcon && leafIcon) {\n      return leafIcon(props);\n    }\n    if (typeof showLine === 'object' && !showLeafIcon) {\n      defaultIcon = <span class={`${prefixCls}-switcher-leaf-line`} />;\n    } else {\n      defaultIcon = <FileOutlined class={`${prefixCls}-switcher-line-icon`} />;\n    }\n    return defaultIcon;\n  } else {\n    defaultIcon = <CaretDownFilled class={switcherCls} />;\n    if (showLine) {\n      defaultIcon = expanded ? (\n        <MinusSquareOutlined class={`${prefixCls}-switcher-line-icon`} />\n      ) : (\n        <PlusSquareOutlined class={`${prefixCls}-switcher-line-icon`} />\n      );\n    }\n  }\n\n  if (typeof switcherIcon === 'function') {\n    icon = switcherIcon({ ...props, defaultIcon, switcherCls });\n  } else if (isValidElement(icon)) {\n    icon = cloneVNode(icon, {\n      class: switcherCls,\n    });\n  }\n\n  return icon || defaultIcon;\n}\n"
  },
  {
    "path": "components/tree-select/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/tree-select/demo/async.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-single ant-select-show-arrow\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/basic.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/checkable.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-multiple ant-select-allow-clear ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"Node1\"><span class=\"ant-select-selection-item-content\">Node1</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!----><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/custom-tag-render.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-multiple ant-select-allow-clear ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span><span style=\"margin-right: 3px;\" class=\"ant-tag ant-tag-pink\">parent 1&nbsp;&nbsp; <span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span><span style=\"margin-right: 3px;\" class=\"ant-tag ant-tag-orange\">parent 1-0&nbsp;&nbsp; <span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span><span style=\"margin-right: 3px;\" class=\"ant-tag ant-tag-green\">my leaf&nbsp;&nbsp; <span role=\"img\" aria-label=\"close\" tabindex=\"-1\" class=\"anticon anticon-close ant-tag-close-icon\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!----><span class=\"ant-select-clear\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close-circle\" class=\"anticon anticon-close-circle\"><svg focusable=\"false\" class=\"\" data-icon=\"close-circle\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"></path></svg></span></span>\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/highlight.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/multiple.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-multiple ant-select-allow-clear ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/placement.vue correctly 1`] = `\n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-button-wrapper ant-radio-button-wrapper-checked\"><span class=\"ant-radio-button ant-radio-button-checked\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>topLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"topRight\"><span class=\"ant-radio-button-inner\"></span></span><span>topRight</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomLeft\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomLeft</span></label><label class=\"ant-radio-button-wrapper\"><span class=\"ant-radio-button\"><input type=\"radio\" class=\"ant-radio-button-input\" value=\"bottomRight\"><span class=\"ant-radio-button-inner\"></span></span><span>bottomRight</span></label></div>\n<br>\n<br>\n<div class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/replaceFields.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n    <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n  </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n  <!----></span>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/status.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-status-error ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Error</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-status-warning ant-select-multiple ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div><span class=\"ant-select-selection-placeholder\">Warning multiple</span>\n      </div>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/suffix.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-single ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 100%;\" class=\"ant-select ant-tree-select ant-select-multiple ant-select-allow-clear ant-select-show-arrow ant-select-show-search\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\">\n        <div class=\"ant-select-selection-overflow\">\n          <!---->\n          <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n            <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n          </div>\n          <!---->\n        </div><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/tree-line.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">treeLine</span><span class=\"ant-switch-inner-unchecked\">treeLine</span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><button type=\"button\" role=\"switch\" aria-checked=\"false\" class=\"ant-switch\">\n      <div class=\"ant-switch-handle\">\n        <!---->\n      </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\">showLeafIcon</span><span class=\"ant-switch-inner-unchecked\">showLeafIcon</span></span>\n    </button></div>\n  <!---->\n  <div class=\"ant-space-item\">\n    <div style=\"width: 300px;\" class=\"ant-select ant-tree-select ant-select-single ant-select-show-arrow\">\n      <!---->\n      <!---->\n      <div class=\"ant-select-selector\"><span class=\"ant-select-selection-search\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"></span>\n        <!----><span class=\"ant-select-selection-placeholder\">Please select</span>\n      </div><span class=\"ant-select-arrow\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-select-suffix\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span>\n      <!----></span>\n      <!---->\n    </div>\n  </div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/tree-select/demo/virtual-scroll.vue correctly 1`] = `\n<div style=\"width: 100%;\" height=\"233\" class=\"ant-select ant-tree-select ant-select-multiple ant-select-show-search\">\n  <!---->\n  <!---->\n  <div class=\"ant-select-selector\">\n    <div class=\"ant-select-selection-overflow\">\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"0-0-0\"><span class=\"ant-select-selection-item-content\">0-0-0</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <div class=\"ant-select-selection-overflow-item\" style=\"opacity: 1;\"><span class=\"ant-select-selection-item\" title=\"0-0-1\"><span class=\"ant-select-selection-item-content\">0-0-1</span><span class=\"ant-select-selection-item-remove\" style=\"user-select: none;\" unselectable=\"on\" aria-hidden=\"true\"><span role=\"img\" aria-label=\"close\" class=\"anticon anticon-close\"><svg focusable=\"false\" class=\"\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path></svg></span></span></span></div>\n      <!---->\n      <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\" style=\"opacity: 1;\">\n        <div class=\"ant-select-selection-search\" style=\"width: 0px;\"><input type=\"search\" id=\"rc_select_TEST_OR_SSR\" autocomplete=\"off\" class=\"ant-select-selection-search-input\" role=\"combobox\" aria-haspopup=\"listbox\" aria-owns=\"rc_select_TEST_OR_SSR_list\" aria-autocomplete=\"list\" aria-controls=\"rc_select_TEST_OR_SSR_list\" readonly=\"\" unselectable=\"on\" style=\"opacity: 0;\"><span class=\"ant-select-selection-search-mirror\" aria-hidden=\"true\">&nbsp;</span></div>\n      </div>\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/tree-select/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('tree-select');\n"
  },
  {
    "path": "components/tree-select/__tests__/index.test.js",
    "content": "import TreeSelect from '..';\nimport focusTest from '../../../tests/shared/focusTest';\nimport mountTest from '../../../tests/shared/mountTest';\n\ndescribe('TreeSelect', () => {\n  focusTest(TreeSelect);\n  mountTest(TreeSelect);\n});\n"
  },
  {
    "path": "components/tree-select/demo/async.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 异步加载\n  en-US: Asynchronous loading\n---\n\n## zh-CN\n\n异步加载树节点。\n\n## en-US\n\nAsynchronous loading tree node.\n\n</docs>\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    tree-data-simple-mode\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    :tree-data=\"treeData\"\n    placeholder=\"Please select\"\n    :load-data=\"onLoadData\"\n  />\n</template>\n\n<script lang=\"ts\" setup>\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { ref, watch } from 'vue';\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  { id: 1, pId: 0, value: '1', title: 'Expand to load' },\n  { id: 2, pId: 0, value: '2', title: 'Expand to load' },\n  { id: 3, pId: 0, value: '3', title: 'Tree Node', isLeaf: true },\n]);\n\nwatch(value, () => {\n  console.log(value.value);\n});\n\nconst genTreeNode = (parentId: number, isLeaf = false): TreeSelectProps['treeData'][number] => {\n  const random = Math.random().toString(36).substring(2, 6);\n  return {\n    id: random,\n    pId: parentId,\n    value: random,\n    title: isLeaf ? 'Tree Node' : 'Expand to load',\n    isLeaf,\n  };\n};\nconst onLoadData = (treeNode: TreeSelectProps['treeData'][number]) => {\n  return new Promise(resolve => {\n    const { id } = treeNode.dataRef;\n    setTimeout(() => {\n      treeData.value = treeData.value.concat([\n        genTreeNode(id, false),\n        genTreeNode(id, true),\n        genTreeNode(id, true),\n      ]);\n      console.log(treeData.value);\n      resolve(true);\n    }, 300);\n  });\n};\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本用法\n  en-US: Basic usage\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n</docs>\n\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    show-search\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    tree-node-filter-prop=\"label\"\n  >\n    <template #title=\"{ value: val, label }\">\n      <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">sss</b>\n      <template v-else>{{ label }}</template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    label: 'root 1',\n    value: 'root 1',\n    children: [\n      {\n        label: 'parent 1',\n        value: 'parent 1',\n        children: [\n          {\n            label: 'parent 1-0',\n            value: 'parent 1-0',\n            children: [\n              {\n                label: 'my leaf',\n                value: 'leaf1',\n              },\n              {\n                label: 'your leaf',\n                value: 'leaf2',\n              },\n            ],\n          },\n          {\n            label: 'parent 1-1',\n            value: 'parent 1-1',\n          },\n        ],\n      },\n      {\n        label: 'parent 2',\n        value: 'parent 2',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log(value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/checkable.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 可勾选\n  en-US: Checkable\n---\n\n## zh-CN\n\n使用勾选框实现多选功能。\n\n## en-US\n\nMultiple and checkable.\n\n</docs>\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    style=\"width: 100%\"\n    :tree-data=\"treeData\"\n    tree-checkable\n    allow-clear\n    :show-checked-strategy=\"SHOW_PARENT\"\n    placeholder=\"Please select\"\n    tree-node-filter-prop=\"label\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { TreeSelect } from 'ant-design-vue';\nconst SHOW_PARENT = TreeSelect.SHOW_PARENT;\n\nconst treeData: TreeSelectProps['treeData'] = [\n  {\n    label: 'Node1',\n    value: '0-0',\n    children: [\n      {\n        label: 'Child Node1',\n        value: '0-0-0',\n      },\n    ],\n  },\n  {\n    label: 'Node2',\n    value: '0-1',\n\n    children: [\n      {\n        label: 'Child Node3',\n        value: '0-1-0',\n        disabled: true,\n      },\n      {\n        label: 'Child Node4',\n        value: '0-1-1',\n      },\n      {\n        label: 'Child Node5',\n        value: '0-1-2',\n      },\n    ],\n  },\n];\n\nconst value = ref<string[]>(['0-0-0']);\n\nwatch(value, () => {\n  console.log(value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/custom-tag-render.vue",
    "content": "<docs>\n---\norder: 24\ntitle:\n  zh-CN: 自定义选择标签\n  en-US: Custom Tag Render\n---\n\n## zh-CN\n\n允许自定义选择标签的样式。仅支持多选模式，单选可直接使用 `title` 插槽\n\n## en-US\n\nAllows for custom rendering of tags.\n\n</docs>\n\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    show-search\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    multiple\n    :show-checked-strategy=\"SHOW_ALL\"\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    tree-node-filter-prop=\"label\"\n  >\n    <template #tagRender=\"{ label, closable, onClose, option }\">\n      <a-tag :closable=\"closable\" :color=\"option.color\" style=\"margin-right: 3px\" @close=\"onClose\">\n        {{ label }}&nbsp;&nbsp;\n      </a-tag>\n    </template>\n    <template #title=\"{ value: val, label }\">\n      <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">{{ val }}</b>\n      <template v-else>{{ label }}</template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { TreeSelect } from 'ant-design-vue';\nconst SHOW_ALL = TreeSelect.SHOW_ALL;\nconst value = ref<string[]>(['parent 1', 'parent 1-0', 'leaf1']);\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    label: 'parent 1',\n    value: 'parent 1',\n    color: 'pink',\n    children: [\n      {\n        label: 'parent 1-0',\n        value: 'parent 1-0',\n        color: 'pink',\n        children: [\n          {\n            label: 'parent 1-0-0',\n            value: 'parent 1-0-0',\n            color: 'orange',\n            children: [\n              {\n                label: 'my leaf',\n                value: 'leaf1',\n                color: 'green',\n              },\n              {\n                label: 'your leaf',\n                value: 'leaf2',\n                color: 'cyan',\n              },\n            ],\n          },\n          {\n            label: 'parent 1-0-1',\n            value: 'parent 1-0-1',\n            color: 'blue',\n          },\n        ],\n      },\n      {\n        label: 'parent 1-1',\n        value: 'parent 1-1',\n        color: 'blue',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log('select', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/highlight.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 高亮\n  en-US: Highlight\n---\n\n## zh-CN\n\n搜索值高亮\n\n## en-US\n\nSearch Value Hightlight\n\n</docs>\n\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    v-model:searchValue=\"searchValue\"\n    show-search\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    tree-node-filter-prop=\"label\"\n  >\n    <template #title=\"{ value: val, label }\">\n      <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">sss</b>\n      <template v-else>\n        <template\n          v-for=\"(fragment, i) in label\n            .toString()\n            .split(new RegExp(`(?<=${searchValue})|(?=${searchValue})`, 'i'))\"\n        >\n          <span\n            v-if=\"fragment.toLowerCase() === searchValue.toLowerCase()\"\n            :key=\"i\"\n            style=\"color: #08c\"\n          >\n            {{ fragment }}\n          </span>\n          <template v-else>{{ fragment }}</template>\n        </template>\n      </template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { ref, watch } from 'vue';\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    label: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        label: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            label: 'parent 1-0-0',\n            value: 'parent 1-0-0',\n            children: [\n              {\n                label: 'my leaf',\n                value: 'leaf1',\n              },\n              {\n                label: 'your leaf',\n                value: 'leaf2',\n              },\n            ],\n          },\n          {\n            label: 'parent 1-0-1',\n            value: 'parent 1-0-1',\n          },\n        ],\n      },\n      {\n        label: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log(value.value);\n});\nconst searchValue = ref('');\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <basic />\n    <multiple />\n    <!-- <tree-data /> -->\n    <checkable />\n    <suffix />\n    <async />\n    <Highlight />\n    <treeLineVue />\n    <virtualScrollVue />\n    <customTagRenderVue />\n    <replaceFieldsVue />\n    <placementVue />\n    <statusVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Multiple from './multiple.vue';\n// import TreeData from './treeData.vue';\nimport Checkable from './checkable.vue';\nimport Suffix from './suffix.vue';\nimport Async from './async.vue';\nimport Highlight from './highlight.vue';\nimport treeLineVue from './tree-line.vue';\nimport virtualScrollVue from './virtual-scroll.vue';\nimport customTagRenderVue from './custom-tag-render.vue';\nimport replaceFieldsVue from './replaceFields.vue';\nimport placementVue from './placement.vue';\nimport statusVue from './status.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    placementVue,\n    statusVue,\n    Basic,\n    Multiple,\n    // TreeData,\n    Checkable,\n    Suffix,\n    Async,\n    Highlight,\n    treeLineVue,\n    virtualScrollVue,\n    customTagRenderVue,\n    replaceFieldsVue,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/multiple.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 多选\n  en-US: Multiple Selection\n---\n\n## zh-CN\n\n多选的树选择。\n\n## en-US\n\nMultiple selection usage.\n\n</docs>\n\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    show-search\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    multiple\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    tree-node-filter-prop=\"label\"\n  >\n    <template #title=\"{ value: val, label }\">\n      <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">{{ val }}</b>\n      <template v-else>{{ label }}</template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\n\nconst value = ref<string[]>([]);\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    label: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        label: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            label: 'parent 1-0-0',\n            value: 'parent 1-0-0',\n            children: [\n              {\n                label: 'my leaf',\n                value: 'leaf1',\n              },\n              {\n                label: 'your leaf',\n                value: 'leaf2',\n              },\n            ],\n          },\n          {\n            label: 'parent 1-0-1',\n            value: 'parent 1-0-1',\n          },\n        ],\n      },\n      {\n        label: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log('select', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/placement.vue",
    "content": "<docs>\n---\norder: 28\ntitle:\n  zh-CN: 弹出位置\n  en-US: Popup Placement\n---\n\n## zh-CN\n\n可以通过 `placement` 手动指定弹出的位置。\n\n## en-US\n\nYou can manually specify the position of the popup via `placement`.\n\n</docs>\n\n<template>\n  <a-radio-group v-model:value=\"placement\">\n    <a-radio-button value=\"topLeft\">topLeft</a-radio-button>\n    <a-radio-button value=\"topRight\">topRight</a-radio-button>\n    <a-radio-button value=\"bottomLeft\">bottomLeft</a-radio-button>\n    <a-radio-button value=\"bottomRight\">bottomRight</a-radio-button>\n  </a-radio-group>\n  <br />\n  <br />\n  <a-tree-select\n    v-model:value=\"value\"\n    show-search\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto', minWidth: '300px' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    :placement=\"placement\"\n    :dropdown-match-select-width=\"false\"\n    tree-node-filter-prop=\"label\"\n  >\n    <template #title=\"{ value: val, label }\">\n      <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">sss</b>\n      <template v-else>{{ label }}</template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nconst placement = ref('topLeft' as const);\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    label: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        label: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            label: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            label: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        label: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/replaceFields.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 自定义字段\n  en-US: ReplaceFields\n---\n\n## zh-CN\n\nfieldNames 替换 treeNode中 title,key,children 字段为treeData中对应的字段\n\n## en-US\n\nReplace the title,key and children fields in treeNode with the corresponding fields in treeData.\n\n</docs>\n\n<template>\n  <a-tree-select\n    v-model:value=\"value\"\n    show-search\n    style=\"width: 100%\"\n    :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n    placeholder=\"Please select\"\n    allow-clear\n    tree-default-expand-all\n    :tree-data=\"treeData\"\n    :field-names=\"{\n      children: 'children',\n      label: 'name',\n      value: 'value',\n    }\"\n    tree-node-filter-prop=\"name\"\n  ></a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { ref, watch } from 'vue';\n\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    name: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        name: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            name: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            name: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        name: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log(value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/status.vue",
    "content": "<docs>\n---\norder: 19\nversion: 3.3.0\ntitle:\n  zh-CN: 自定义状态\n  en-US: Status\n---\n\n## zh-CN\n\n使用 `status` 为 DatePicker 添加状态，可选 `error` 或者 `warning`。\n\n## en-US\n\nAdd status to DatePicker with `status`, which could be `error` or `warning`.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-tree-select status=\"error\" style=\"width: 100%\" placeholder=\"Error\" />\n    <a-tree-select status=\"warning\" style=\"width: 100%\" multiple placeholder=\"Warning multiple\" />\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/tree-select/demo/suffix.vue",
    "content": "<docs>\n---\norder: 12\ndebug: true\ntitle:\n  zh-CN: 后缀图标\n  en-US: Suffix\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\">\n    <a-tree-select\n      v-model:value=\"value\"\n      show-search\n      style=\"width: 100%\"\n      :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n      placeholder=\"Please select\"\n      allow-clear\n      tree-default-expand-all\n      :tree-data=\"treeData\"\n      :field-names=\"{\n        children: 'children',\n        value: 'value',\n        label: 'title',\n      }\"\n      tree-node-filter-prop=\"title\"\n    >\n      <template #suffixIcon><SmileOutlined /></template>\n    </a-tree-select>\n\n    <a-tree-select\n      v-model:value=\"value1\"\n      show-search\n      style=\"width: 100%\"\n      :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n      placeholder=\"Please select\"\n      allow-clear\n      multiple\n      show-arrow\n      tree-default-expand-all\n      :tree-data=\"treeData\"\n      :field-names=\"{\n        children: 'children',\n        value: 'value',\n        label: 'title',\n      }\"\n      tree-node-filter-prop=\"title\"\n    >\n      <template #suffixIcon><SmileOutlined /></template>\n    </a-tree-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport { SmileOutlined } from '@ant-design/icons-vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nconst value = ref<string>();\nconst value1 = ref<string[]>([]);\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    title: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        title: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            title: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            title: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log('select', value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/tree-line.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 线性样式\n  en-US: Show Tree Line\n---\n\n## zh-CN\n\n通过 `treeLine` 配置线性样式。\n\n## en-US\n\nUse `treeLine` to show the line style.\n\n</docs>\n\n<template>\n  <a-space direction=\"vertical\">\n    <a-switch\n      v-model:checked=\"treeLine\"\n      checked-children=\"treeLine\"\n      un-checked-children=\"treeLine\"\n    ></a-switch>\n    <a-switch\n      v-model:checked=\"showLeafIcon\"\n      :disabled=\"!treeLine\"\n      checked-children=\"showLeafIcon\"\n      un-checked-children=\"showLeafIcon\"\n    ></a-switch>\n    <a-tree-select\n      v-model:value=\"value\"\n      style=\"width: 300px\"\n      placeholder=\"Please select\"\n      :tree-line=\"treeLine && { showLeafIcon }\"\n      :tree-data=\"treeData\"\n      tree-node-filter-prop=\"title\"\n    >\n      <template #title=\"{ value: val, title }\">\n        <b v-if=\"val === 'parent 1-1'\" style=\"color: #08c\">sss</b>\n        <template v-else>{{ title }}</template>\n      </template>\n    </a-tree-select>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\n\nconst treeLine = ref(true);\nconst showLeafIcon = ref(false);\nconst value = ref<string>();\nconst treeData = ref<TreeSelectProps['treeData']>([\n  {\n    title: 'parent 1',\n    value: 'parent 1',\n    children: [\n      {\n        title: 'parent 1-0',\n        value: 'parent 1-0',\n        children: [\n          {\n            title: 'my leaf',\n            value: 'leaf1',\n          },\n          {\n            title: 'your leaf',\n            value: 'leaf2',\n          },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        value: 'parent 1-1',\n      },\n    ],\n  },\n]);\nwatch(value, () => {\n  console.log(value.value);\n});\n</script>\n"
  },
  {
    "path": "components/tree-select/demo/virtual-scroll.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 虚拟滚动\n  en-US: Virtual scroll\n---\n\n## zh-CN\n\n使用 `height` 属性则切换为虚拟滚动。\n\n## en-US\n\nUse virtual list through `height` prop.\n\n</docs>\n<template>\n  <a-tree-select\n    v-model:value=\"checkedKeys\"\n    style=\"width: 100%\"\n    tree-checkable\n    tree-default-expand-all\n    :show-checked-strategy=\"SHOW_PARENT\"\n    :height=\"233\"\n    :tree-data=\"treeData\"\n    :max-tag-count=\"10\"\n    tree-node-filter-prop=\"title\"\n  >\n    <template #title=\"{ title, value }\">\n      <span v-if=\"value === '0-0-1-0'\" style=\"color: #1890ff\">{{ title }}</span>\n      <template v-else>{{ title }}</template>\n    </template>\n  </a-tree-select>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport type { TreeSelectProps } from 'ant-design-vue';\nimport { TreeSelect } from 'ant-design-vue';\nconst SHOW_PARENT = TreeSelect.SHOW_PARENT;\n\nfunction dig(path = '0', level = 3) {\n  const list: TreeSelectProps['treeData'] = [];\n  for (let i = 0; i < 10; i += 1) {\n    const value = `${path}-${i}`;\n    const treeNode: TreeSelectProps['treeData'][number] = {\n      title: value,\n      value,\n    };\n\n    if (level > 0) {\n      treeNode.children = dig(value, level - 1);\n    }\n\n    list.push(treeNode);\n  }\n  return list;\n}\n\nconst checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);\nwatch(checkedKeys, () => {\n  console.log('checkedKeys', checkedKeys);\n});\nconst treeData = ref<TreeSelectProps['treeData']>(dig());\n</script>\n"
  },
  {
    "path": "components/tree-select/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: TreeSelect\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DfTMRYSDngEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Y5pcQLplFu4AAAAAAAAAAAAADrJ8AQ/original\n---\n\nTree selection control.\n\n## When To Use\n\n`TreeSelect` is similar to `Select`, but the values are provided in a tree like structure. Any data whose entries are defined in a hierarchical manner is fit to use this control. Examples of such case may include a corporate hierarchy, a directory structure, and so on.\n\n## API\n\n### Tree props\n\n| Property | Description | Type | Default | Version |  |\n| --- | --- | --- | --- | --- | --- |\n| allowClear | Whether allow clear | boolean | false |  |  |\n| defaultValue | To set the initial selected treeNode(s). | string\\|string\\[] | - |  |  |\n| disabled | Disabled or not | boolean | false |  |  |\n| popupClassName | className of dropdown menu | string | - |  | 4.0 |\n| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \\| number | true |  |  |\n| dropdownStyle | To set the style of the dropdown menu | object | - |  |  |\n| fieldNames | Replace the label,value and children fields in treeNode with the corresponding fields in treeData | object | { children:'children', label:'title', value:'value' } |  | 3.0.0 |\n| filterTreeNode | Whether to filter treeNodes by input value. The value of `treeNodeFilterProp` is used for filtering by default. | boolean\\|Function(inputValue: string, treeNode: TreeNode) (should return boolean) | Function |  |  |\n| getPopupContainer | To set the container of the dropdown menu. The default is to create a `div` element in `body`, you can reset it to the scrolling area and make a relative reposition. | Function(triggerNode) | () => document.body |  |  |\n| labelInValue | whether to embed label in value, turn the format of value from `string` to `{value: string, label: VNode, halfChecked: string[]}` | boolean | false |  |  |\n| listHeight | Config popup height | number | 256 |  |  |\n| loadData | Load data asynchronously. | function(node) | - |  |  |\n| maxTagCount | Max tag count to show | number | - |  |  |\n| maxTagPlaceholder | Placeholder for not showing tags | slot/function(omittedValues) | - |  |  |\n| multiple | Support multiple or not, will be `true` when enable `treeCheckable`. | boolean | false |  |  |\n| notFoundContent | Specify content to show when no result matches | slot | `Not Found` |  |  |\n| placeholder | Placeholder of the select input | string\\|slot | - |  |  |\n| placement | The position where the selection box pops up | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| replaceFields | Replace the label,value, key and children fields in treeNode with the corresponding fields in treeData | object | { children:'children', label:'title', value: 'value' } |  | 1.6.1 (3.0.0 deprecated) |\n| searchPlaceholder | Placeholder of the search input | string\\|slot | - |  |  |\n| searchValue(v-model) | work with `search` event to make search value controlled. | string | - |  |  |\n| showCheckedStrategy | The way show selected item in box. **Default:** just show child nodes. **`TreeSelect.SHOW_ALL`:** show all checked treeNodes (include parent treeNode). **`TreeSelect.SHOW_PARENT`:** show checked treeNodes (just show parent treeNode). | enum { TreeSelect.SHOW_ALL, TreeSelect.SHOW_PARENT, TreeSelect.SHOW_CHILD } | TreeSelect.SHOW_CHILD |  |  |\n| showSearch | Whether to display a search input in the dropdown menu(valid only in the single mode) | boolean | false |  |  |\n| size | To set the size of the select input, options: `large` `small` | string | 'default' |  |  |\n| status | Set validation status | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | The custom suffix icon | VNode \\| slot | - |  |  |\n| tagRender | Customize tag render when `multiple` | (props) => slot | - | 3.0 |  |\n| title | custom title | slot |  | 3.0.0 |  |\n| treeCheckable | Whether to show checkbox on the treeNodes | boolean | false |  |  |\n| treeCheckStrictly | Whether to check nodes precisely (in the `checkable` mode), means parent and child nodes are not associated, and it will make `labelInValue` be true | boolean | false |  |  |\n| treeData | Data of the treeNodes, manual construction work is no longer needed if this property has been set(ensure the Uniqueness of each value) | array\\\\&lt;{ value, title, children, \\[disabled, disableCheckbox, selectable] }> | \\[] |  |  |\n| treeDataSimpleMode | Enable simple mode of treeData. Changes the `treeData` schema to: \\[{id:1, pId:0, value:'1', title:\"test1\",...},...] where pId is parent node's id). It is possible to replace the default `id` and `pId` keys by providing object to `treeDataSimpleMode` | false\\|object\\\\&lt;{ id: string, pId: string, rootPId: null }> | false |  |  |\n| treeDefaultExpandAll | Whether to expand all treeNodes by default | boolean | false |  |  |\n| treeDefaultExpandedKeys | Default expanded treeNodes | string\\[] \\| number\\[] | - |  |  |\n| treeExpandedKeys(v-model) | Set expanded keys | string\\[] \\| number\\[] | - |  |  |\n| treeIcon | Shows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to `true` | boolean | false |  |  |\n| treeLoadedKeys | (Controlled) Set loaded tree nodes, work with `loadData` only | string[] | [] | 3.3.0 |\n| treeLine | Show the line. Ref [Tree - showLine](/components/tree/#components-tree-demo-line) | boolean \\| object | false | 3.0 |  |\n| treeNodeFilterProp | Will be used for filtering if `filterTreeNode` returns true | string | 'value' |  |  |\n| treeNodeLabelProp | Will render as content of select | string | 'title' |  |  |\n| value(v-model) | To set the current selected treeNode(s). | string\\|string\\[] | - |  |  |\n| virtual | Disable virtual scroll when set to false | boolean | true | 3.0 |  |\n\n### Events\n\n| Events Name | Description | Arguments | Version |\n| --- | --- | --- | --- |\n| change | A callback function, can be executed when selected treeNodes or input value change | function(value, label, extra) |  |\n| dropdownVisibleChange | Called when dropdown open | function(open) | 3.0 |\n| search | A callback function, can be executed when the search input changes. | function(value: string) |  |\n| select | A callback function, can be executed when you select a treeNode. | function(value, node, extra) |  |\n| treeExpand | A callback function, can be executed when treeNode expanded | function(expandedKeys) |  |\n\n### Tree Methods\n\n| Name    | Description  |\n| ------- | ------------ |\n| blur()  | remove focus |\n| focus() | get focus    |\n\n### TreeNode props\n\n> We recommend you to use `treeData` rather than `TreeNode`, to avoid the trouble of manual construction.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| checkable | When Tree is checkable, set TreeNode display Checkbox or not | boolean | - |  |\n| disableCheckbox | Disables the checkbox of the treeNode | boolean | false |  |\n| disabled | Disabled or not | boolean | false |  |\n| isLeaf | Leaf node or not | boolean | false |  |\n| key | Required property, should be unique in the tree | string \\| number | - |  |\n| selectable | can be selected | boolean | true |  |\n| title | Content showed on the treeNodes | string | '---' |  |\n| value | Will be treated as `treeNodeFilterProp` by default, should be unique in the tree | string | - |  |\n\n## FAQ\n\n### How to get parent node in onChange?\n\nWe don't provide this since performance consideration.\n"
  },
  {
    "path": "components/tree-select/index.tsx",
    "content": "import type { App, ExtractPropTypes } from 'vue';\nimport { computed, ref, defineComponent } from 'vue';\nimport VcTreeSelect, {\n  TreeNode,\n  SHOW_ALL,\n  SHOW_PARENT,\n  SHOW_CHILD,\n  treeSelectProps as vcTreeSelectProps,\n} from '../vc-tree-select';\nimport classNames from '../_util/classNames';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport type { SizeType } from '../config-provider';\nimport type { FieldNames, Key } from '../vc-tree-select/interface';\nimport omit from '../_util/omit';\nimport PropTypes from '../_util/vue-types';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport devWarning from '../vc-util/devWarning';\nimport getIcons from '../select/utils/iconUtil';\nimport type { SwitcherIconProps } from '../tree/utils/iconUtil';\nimport renderSwitcherIcon from '../tree/utils/iconUtil';\nimport { warning } from '../vc-util/warning';\nimport { flattenChildren } from '../_util/props-util';\nimport { FormItemInputContext, useInjectFormItemContext } from '../form/FormItemContext';\nimport type { BaseSelectRef } from '../vc-select';\nimport type { BaseOptionType, DefaultOptionType } from '../vc-tree-select/TreeSelect';\nimport type { TreeProps } from '../tree';\n\nimport type { SelectCommonPlacement } from '../_util/transition';\nimport { getTransitionDirection } from '../_util/transition';\nimport type { InputStatus } from '../_util/statusUtils';\nimport { getStatusClassNames, getMergedStatus } from '../_util/statusUtils';\nimport { booleanType, stringType, objectType, someType, functionType } from '../_util/type';\n\n// CSSINJS\nimport useSelectStyle from '../select/style';\nimport useStyle from './style';\nimport { useCompactItemContext } from '../space/Compact';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nimport type { CustomSlotsType } from '../_util/type';\n\nconst getTransitionName = (rootPrefixCls: string, motion: string, transitionName?: string) => {\n  if (transitionName !== undefined) {\n    return transitionName;\n  }\n  return `${rootPrefixCls}-${motion}`;\n};\n\ntype RawValue = string | number;\n\nexport interface LabeledValue {\n  key?: string;\n  value: RawValue;\n  label?: any;\n}\n\nexport type SelectValue = RawValue | RawValue[] | LabeledValue | LabeledValue[];\n\nexport type RefTreeSelectProps = BaseSelectRef;\n\nexport function treeSelectProps<\n  ValueType = any,\n  OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType,\n>() {\n  return {\n    ...omit(vcTreeSelectProps<ValueType, OptionType>(), [\n      'showTreeIcon',\n      'treeMotion',\n      'inputIcon',\n      'getInputElement',\n      'treeLine',\n      'customSlots',\n    ]),\n    suffixIcon: PropTypes.any,\n    size: stringType<SizeType>(),\n    bordered: booleanType(),\n    treeLine: someType<TreeProps['showLine']>([Boolean, Object]),\n    replaceFields: objectType<FieldNames>(),\n    placement: stringType<SelectCommonPlacement>(),\n    status: stringType<InputStatus>(),\n    popupClassName: String,\n    /** @deprecated Please use `popupClassName` instead */\n    dropdownClassName: String,\n    'onUpdate:value': functionType<(value: any) => void>(),\n    'onUpdate:treeExpandedKeys': functionType<(keys: Key[]) => void>(),\n    'onUpdate:searchValue': functionType<(value: string) => void>(),\n  };\n}\nexport type TreeSelectProps = Partial<ExtractPropTypes<ReturnType<typeof treeSelectProps>>>;\n\nconst TreeSelect = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATreeSelect',\n  inheritAttrs: false,\n  props: initDefaultProps(treeSelectProps(), {\n    choiceTransitionName: '',\n    listHeight: 256,\n    treeIcon: false,\n    listItemHeight: 26,\n    bordered: true,\n  }),\n  slots: Object as CustomSlotsType<{\n    title?: any;\n    titleRender?: any;\n    placeholder?: any;\n    maxTagPlaceholder?: any;\n    treeIcon?: any;\n    switcherIcon?: any;\n    notFoundContent?: any;\n    default?: any;\n    leafIcon?: any;\n    tagRender?: any;\n    suffixIcon?: any;\n  }>,\n  setup(props, { attrs, slots, expose, emit }) {\n    warning(\n      !(props.treeData === undefined && slots.default),\n      '`children` of TreeSelect is deprecated. Please use `treeData` instead.',\n    );\n    devWarning(\n      props.multiple !== false || !props.treeCheckable,\n      'TreeSelect',\n      '`multiple` will always be `true` when `treeCheckable` is true',\n    );\n    devWarning(\n      props.replaceFields === undefined,\n      'TreeSelect',\n      '`replaceFields` is deprecated, please use fieldNames instead',\n    );\n    devWarning(\n      !props.dropdownClassName,\n      'TreeSelect',\n      '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n    );\n\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const {\n      prefixCls,\n      renderEmpty,\n      direction,\n      virtual,\n      dropdownMatchSelectWidth,\n      size: contextSize,\n      getPopupContainer,\n      getPrefixCls,\n      disabled,\n    } = useConfigInject('select', props);\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const mergedSize = computed(() => compactSize.value || contextSize.value);\n    const contextDisabled = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? contextDisabled.value);\n    const rootPrefixCls = computed(() => getPrefixCls());\n    // ===================== Placement =====================\n    const placement = computed(() => {\n      if (props.placement !== undefined) {\n        return props.placement;\n      }\n      return direction.value === 'rtl'\n        ? ('bottomRight' as SelectCommonPlacement)\n        : ('bottomLeft' as SelectCommonPlacement);\n    });\n    const transitionName = computed(() =>\n      getTransitionName(\n        rootPrefixCls.value,\n        getTransitionDirection(placement.value),\n        props.transitionName,\n      ),\n    );\n    const choiceTransitionName = computed(() =>\n      getTransitionName(rootPrefixCls.value, '', props.choiceTransitionName),\n    );\n    const treePrefixCls = computed(() => getPrefixCls('select-tree', props.prefixCls));\n    const treeSelectPrefixCls = computed(() => getPrefixCls('tree-select', props.prefixCls));\n\n    // style\n    const [wrapSelectSSR, hashId] = useSelectStyle(prefixCls);\n    const [wrapTreeSelectSSR] = useStyle(treeSelectPrefixCls, treePrefixCls);\n\n    const mergedDropdownClassName = computed(() =>\n      classNames(\n        props.popupClassName || props.dropdownClassName,\n        `${treeSelectPrefixCls.value}-dropdown`,\n        {\n          [`${treeSelectPrefixCls.value}-dropdown-rtl`]: direction.value === 'rtl',\n        },\n        hashId.value,\n      ),\n    );\n\n    const isMultiple = computed(() => !!(props.treeCheckable || props.multiple));\n    const mergedShowArrow = computed(() =>\n      props.showArrow !== undefined ? props.showArrow : props.loading || !isMultiple.value,\n    );\n\n    const treeSelectRef = ref();\n    expose({\n      focus() {\n        treeSelectRef.value.focus?.();\n      },\n\n      blur() {\n        treeSelectRef.value.blur?.();\n      },\n    });\n\n    const handleChange: TreeSelectProps['onChange'] = (...args: any[]) => {\n      emit('update:value', args[0]);\n      emit('change', ...args);\n      formItemContext.onFieldChange();\n    };\n    const handleTreeExpand: TreeSelectProps['onTreeExpand'] = (keys: Key[]) => {\n      emit('update:treeExpandedKeys', keys);\n      emit('treeExpand', keys);\n    };\n    const handleSearch: TreeSelectProps['onSearch'] = (value: string) => {\n      emit('update:searchValue', value);\n      emit('search', value);\n    };\n    const handleBlur = (e: FocusEvent) => {\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n    return () => {\n      const {\n        notFoundContent = slots.notFoundContent?.(),\n        prefixCls: customizePrefixCls,\n        bordered,\n        listHeight,\n        listItemHeight,\n        multiple,\n        treeIcon,\n        treeLine,\n        showArrow,\n        switcherIcon = slots.switcherIcon?.(),\n        fieldNames = props.replaceFields,\n        id = formItemContext.id.value,\n        placeholder = slots.placeholder?.(),\n      } = props;\n      const { isFormItemInput, hasFeedback, feedbackIcon } = formItemInputContext;\n      // ===================== Icons =====================\n      const { suffixIcon, removeIcon, clearIcon } = getIcons(\n        {\n          ...props,\n          multiple: isMultiple.value,\n          showArrow: mergedShowArrow.value,\n          hasFeedback,\n          feedbackIcon,\n          prefixCls: prefixCls.value,\n        },\n        slots,\n      );\n\n      // ===================== Empty =====================\n      let mergedNotFound;\n      if (notFoundContent !== undefined) {\n        mergedNotFound = notFoundContent;\n      } else {\n        mergedNotFound = renderEmpty('Select');\n      }\n      // ==================== Render =====================\n      const selectProps = omit(props as typeof props & { itemIcon: any; switcherIcon: any }, [\n        'suffixIcon',\n        'itemIcon',\n        'removeIcon',\n        'clearIcon',\n        'switcherIcon',\n        'bordered',\n        'status',\n        'onUpdate:value',\n        'onUpdate:treeExpandedKeys',\n        'onUpdate:searchValue',\n      ]);\n\n      const mergedClassName = classNames(\n        !customizePrefixCls && treeSelectPrefixCls.value,\n        {\n          [`${prefixCls.value}-lg`]: mergedSize.value === 'large',\n          [`${prefixCls.value}-sm`]: mergedSize.value === 'small',\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          [`${prefixCls.value}-borderless`]: !bordered,\n          [`${prefixCls.value}-in-form-item`]: isFormItemInput,\n        },\n        getStatusClassNames(prefixCls.value, mergedStatus.value, hasFeedback),\n        compactItemClassnames.value,\n        attrs.class,\n        hashId.value,\n      );\n      const otherProps: any = {};\n      if (props.treeData === undefined && slots.default) {\n        otherProps.children = flattenChildren(slots.default());\n      }\n      return wrapSelectSSR(\n        wrapTreeSelectSSR(\n          <VcTreeSelect\n            {...attrs}\n            {...selectProps}\n            disabled={mergedDisabled.value}\n            virtual={virtual.value}\n            dropdownMatchSelectWidth={dropdownMatchSelectWidth.value}\n            id={id}\n            fieldNames={fieldNames}\n            ref={treeSelectRef}\n            prefixCls={prefixCls.value}\n            class={mergedClassName}\n            listHeight={listHeight}\n            listItemHeight={listItemHeight}\n            treeLine={!!treeLine}\n            inputIcon={suffixIcon}\n            multiple={multiple}\n            removeIcon={removeIcon}\n            clearIcon={clearIcon}\n            switcherIcon={(nodeProps: SwitcherIconProps) =>\n              renderSwitcherIcon(\n                treePrefixCls.value,\n                switcherIcon,\n                nodeProps,\n                slots.leafIcon,\n                treeLine,\n              )\n            }\n            showTreeIcon={treeIcon as any}\n            notFoundContent={mergedNotFound}\n            getPopupContainer={getPopupContainer?.value}\n            treeMotion={null}\n            dropdownClassName={mergedDropdownClassName.value}\n            choiceTransitionName={choiceTransitionName.value}\n            onChange={handleChange}\n            onBlur={handleBlur}\n            onSearch={handleSearch}\n            onTreeExpand={handleTreeExpand}\n            v-slots={{\n              ...slots,\n              treeCheckable: () => <span class={`${prefixCls.value}-tree-checkbox-inner`} />,\n            }}\n            {...otherProps}\n            transitionName={transitionName.value}\n            customSlots={{\n              ...slots,\n              treeCheckable: () => <span class={`${prefixCls.value}-tree-checkbox-inner`} />,\n            }}\n            maxTagPlaceholder={props.maxTagPlaceholder || slots.maxTagPlaceholder}\n            placement={placement.value}\n            showArrow={hasFeedback || showArrow}\n            placeholder={placeholder}\n          />,\n        ),\n      );\n    };\n  },\n});\n\n/* istanbul ignore next */\nexport const TreeSelectNode = TreeNode;\nexport default Object.assign(TreeSelect, {\n  TreeNode,\n  SHOW_ALL: SHOW_ALL as typeof SHOW_ALL,\n  SHOW_PARENT: SHOW_PARENT as typeof SHOW_PARENT,\n  SHOW_CHILD: SHOW_CHILD as typeof SHOW_CHILD,\n  install: (app: App) => {\n    app.component(TreeSelect.name, TreeSelect);\n    app.component(TreeSelectNode.displayName, TreeSelectNode);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/tree-select/index.zh-CN.md",
    "content": "---\ncategory: Components\ntype: 数据录入\ntitle: TreeSelect\nsubtitle: 树选择\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*DfTMRYSDngEAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Y5pcQLplFu4AAAAAAAAAAAAADrJ8AQ/original\n---\n\n树型选择控件。\n\n## 何时使用\n\n类似 Select 的选择控件，可选择的数据结构是一个树形结构时，可以使用 TreeSelect，例如公司层级、学科系统、分类目录等等。\n\n## API\n\n### Tree props\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| allowClear | 显示清除按钮 | boolean | false |  |  |\n| defaultValue | 指定默认选中的条目 | string/string\\[] | - |  |  |\n| disabled | 是否禁用 | boolean | false |  |  |\n| popupClassName | 下拉菜单的 className 属性 | string | - |  | 4.0 |\n| dropdownMatchSelectWidth | 下拉菜单和选择器同宽。默认将设置 `min-width`，当值小于选择框宽度时会被忽略。false 时会关闭虚拟滚动 | boolean \\| number | true |  |  |\n| dropdownStyle | 下拉菜单的样式 | object | - |  |  |\n| fieldNames | 替换 treeNode 中 label,value,children 字段为 treeData 中对应的字段 | object | {children:'children', label:'title', value: 'value' } |  | 3.0.0 |\n| filterTreeNode | 是否根据输入项进行筛选，默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值 | boolean\\|Function(inputValue: string, treeNode: TreeNode) (函数需要返回 bool 值) | Function |  |  |\n| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上，如果你遇到菜单滚动定位问题，试试修改为滚动的区域，并相对其定位。 | Function(triggerNode) | () => document.body |  |  |\n| labelInValue | 是否把每个选项的 label 包装到 value 中，会把 value 类型从 `string` 变为 `{value: string, label: VNode, halfChecked(treeCheckStrictly 时有效): string[] }` 的格式 | boolean | false |  |  |\n| listHeight | 设置弹窗滚动高度 | number | 256 |  |  |\n| loadData | 异步加载数据 | function(node) | - |  |  |\n| maxTagCount | 最多显示多少个 tag | number | - |  |  |\n| maxTagPlaceholder | 隐藏 tag 时显示的内容 | slot/function(omittedValues) | - |  |  |\n| multiple | 支持多选（当设置 treeCheckable 时自动变为 true） | boolean | false |  |  |\n| notFoundContent | 当下拉列表为空时显示的内容 | slot | `Not Found` |  |  |\n| placeholder | 选择框默认文字 | string\\|slot | - |  |  |\n| placement | 选择框弹出的位置 | `bottomLeft` `bottomRight` `topLeft` `topRight` | bottomLeft | 3.3.0 |\n| replaceFields | 替换 treeNode 中 label,value,key,children 字段为 treeData 中对应的字段 | object | {children:'children', label:'title', key:'key', value: 'value' } |  | 1.6.1 (3.0.0 废弃) |\n| searchPlaceholder | 搜索框默认文字 | string\\|slot | - |  |  |\n| searchValue(v-model) | 搜索框的值，可以通过 `search` 事件获取用户输入 | string | - |  |  |\n| showCheckedStrategy | 定义选中项回填的方式。`TreeSelect.SHOW_ALL`: 显示所有选中节点(包括父节点). `TreeSelect.SHOW_PARENT`: 只显示父节点(当父节点下所有子节点都选中时). 默认只显示子节点. | enum{TreeSelect.SHOW_ALL, TreeSelect.SHOW_PARENT, TreeSelect.SHOW_CHILD } | TreeSelect.SHOW_CHILD |  |  |\n| showSearch | 在下拉中显示搜索框(仅在单选模式下生效) | boolean | false |  |  |\n| size | 选择框大小，可选 `large` `small` | string | 'default' |  |  |\n| status | 设置校验状态 | 'error' \\| 'warning' | - | 3.3.0 |\n| suffixIcon | 自定义的选择框后缀图标 | VNode \\| slot | - |  |  |\n| tagRender | 自定义 tag 内容，多选时生效 | slot | - | 3.0 |  |\n| title | 自定义标题 | slot |  | 3.0.0 |  |\n| treeCheckable | 显示 checkbox | boolean | false |  |  |\n| treeCheckStrictly | checkable 状态下节点选择完全受控（父子节点选中状态不再关联），会使得 `labelInValue` 强制为 true | boolean | false |  |  |\n| treeData | treeNodes 数据，如果设置则不需要手动构造 TreeNode 节点（value 在整个树范围内唯一） | array&lt;{value, label, children, [disabled, disableCheckbox, selectable]}> | \\[] |  |  |\n| treeDataSimpleMode | 使用简单格式的 treeData，具体设置参考可设置的类型 (此时 treeData 应变为这样的数据结构: \\[{id:1, pId:0, value:'1', label:\"test1\",...},...], `pId` 是父节点的 id) | false\\|Array&lt;{ id: string, pId: string, rootPId: null }> | false |  |  |\n| treeDefaultExpandAll | 默认展开所有树节点 | boolean | false |  |  |\n| treeDefaultExpandedKeys | 默认展开的树节点 | string\\[] \\| number\\[] | - |  |  |\n| treeExpandedKeys(v-model) | 设置展开的树节点 | string\\[] \\| number\\[] | - |  |  |\n| treeIcon | 是否展示 TreeNode title 前的图标，没有默认样式，如设置为 true，需要自行定义图标相关样式 | boolean | false |  |  |\n| treeLine | 是否展示线条样式，请参考 [Tree - showLine](/components/tree/#components-tree-demo-line) | boolean \\| object | false | 3.0 |  |\n| treeLoadedKeys | （受控）已经加载的节点，需要配合 `loadData` 使用 | string[] | [] | 3.3.0 |\n| treeNodeFilterProp | 输入项过滤对应的 treeNode 属性 | string | 'value' |  |  |\n| treeNodeLabelProp | 作为显示的 prop 设置 | string | 'title' |  |  |\n| value(v-model) | 指定当前选中的条目 | string/string\\[] | - |  |  |\n| virtual | 设置 false 时关闭虚拟滚动 | boolean | true | 3.0 |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |\n| --- | --- | --- | --- |\n| change | 选中树节点或输入值发生变化时调用此函数 | function(value, label, extra) |  |\n| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) | 3.0 |\n| search | 文本框值变化时回调 | function(value: string) |  |\n| select | 树节点被选中时调用 | function(value, node, extra) |  |\n| treeExpand | 展开树节点时调用 | function(expandedKeys) |  |\n\n### Tree 方法\n\n| 名称    | 描述     |\n| ------- | -------- |\n| blur()  | 移除焦点 |\n| focus() | 获取焦点 |\n\n### TreeNode props\n\n> 建议使用 treeData 来代替 TreeNode，免去手工构造麻烦\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| checkable | 当树为 checkable 时，设置独立节点是否展示 Checkbox | boolean | - |  |\n| disableCheckbox | 禁掉 checkbox | boolean | false |  |\n| disabled | 是否禁用 | boolean | false |  |\n| isLeaf | 是否是叶子节点 | boolean | false |  |\n| key | 此项必须设置（其值在整个树范围内唯一） | string \\| number | - |  |\n| selectable | 是否可选 | boolean | true |  |\n| title | 树节点显示的内容 | string\\|slot | '---' |  |\n| value | 默认根据此属性值进行筛选（其值在整个树范围内唯一） | string | - |  |\n"
  },
  {
    "path": "components/tree-select/style/index.tsx",
    "content": "import type { Ref } from 'vue';\nimport { getStyle as getCheckboxStyle } from '../../checkbox/style';\nimport type { AliasToken, FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genTreeStyle } from '../../tree/style';\n\ninterface TreeSelectToken extends FullToken<'TreeSelect'> {\n  treePrefixCls: string;\n}\n\n// =============================== Base ===============================\nconst genBaseStyle: GenerateStyle<TreeSelectToken> = token => {\n  const { componentCls, treePrefixCls, colorBgElevated } = token;\n  const treeCls = `.${treePrefixCls}`;\n\n  return [\n    // ======================================================\n    // ==                     Dropdown                     ==\n    // ======================================================\n    {\n      [`${componentCls}-dropdown`]: [\n        {\n          padding: `${token.paddingXS}px ${token.paddingXS / 2}px`,\n        },\n\n        // ====================== Tree ======================\n        genTreeStyle(\n          treePrefixCls,\n          mergeToken<AliasToken>(token, { colorBgContainer: colorBgElevated }),\n        ),\n        {\n          [treeCls]: {\n            borderRadius: 0,\n            '&-list-holder-inner': {\n              alignItems: 'stretch',\n\n              [`${treeCls}-treenode`]: {\n                [`${treeCls}-node-content-wrapper`]: {\n                  flex: 'auto',\n                },\n              },\n            },\n          },\n        },\n\n        // ==================== Checkbox ====================\n        getCheckboxStyle(`${treePrefixCls}-checkbox`, token),\n\n        // ====================== RTL =======================\n        {\n          '&-rtl': {\n            direction: 'rtl',\n\n            [`${treeCls}-switcher${treeCls}-switcher_close`]: {\n              [`${treeCls}-switcher-icon svg`]: {\n                transform: 'rotate(90deg)',\n              },\n            },\n          },\n        },\n      ],\n    },\n  ];\n};\n\n// ============================== Export ==============================\nexport default function useTreeSelectStyle(prefixCls: Ref<string>, treePrefixCls: Ref<string>) {\n  return genComponentStyleHook('TreeSelect', token => {\n    const treeSelectToken = mergeToken<TreeSelectToken>(token, {\n      treePrefixCls: treePrefixCls.value,\n    });\n    return [genBaseStyle(treeSelectToken)];\n  })(prefixCls);\n}\n"
  },
  {
    "path": "components/typography/Base.tsx",
    "content": "import LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport warning from '../_util/warning';\nimport TransButton from '../_util/transButton';\nimport raf from '../_util/raf';\nimport { isStyleSupport } from '../_util/styleChecker';\nimport Editable from './Editable';\nimport measure from './util';\nimport type { TypographyProps } from './Typography';\nimport Typography from './Typography';\nimport ResizeObserver from '../vc-resize-observer';\nimport Tooltip from '../tooltip';\nimport copy from '../_util/copy-to-clipboard';\nimport CheckOutlined from '@ant-design/icons-vue/CheckOutlined';\nimport CopyOutlined from '@ant-design/icons-vue/CopyOutlined';\nimport EditOutlined from '@ant-design/icons-vue/EditOutlined';\nimport type { VNodeTypes, CSSProperties, PropType, HTMLAttributes } from 'vue';\nimport {\n  defineComponent,\n  reactive,\n  ref,\n  onMounted,\n  onBeforeUnmount,\n  watch,\n  watchEffect,\n  nextTick,\n  computed,\n  toRaw,\n} from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { EventHandler } from '../_util/EventInterface';\nimport omit from '../_util/omit';\nimport type { AutoSizeType } from '../input/inputProps';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport { findDOMNode } from '../_util/props-util';\n\nexport type BaseType = 'secondary' | 'success' | 'warning' | 'danger';\n\nconst isLineClampSupport = isStyleSupport('webkitLineClamp');\nconst isTextOverflowSupport = isStyleSupport('textOverflow');\n\nexport interface CopyConfig {\n  text?: string;\n  onCopy?: (event?: MouseEvent) => void;\n  tooltip?: boolean;\n}\n\nexport interface EditConfig {\n  editing?: boolean;\n  tooltip?: boolean;\n  onStart?: () => void;\n  onChange?: (value: string) => void;\n  onCancel?: () => void;\n  onEnd?: () => void;\n  maxlength?: number;\n  autoSize?: boolean | AutoSizeType;\n  triggerType?: ('icon' | 'text')[];\n}\n\nexport interface EllipsisConfig {\n  rows?: number;\n  expandable?: boolean;\n  suffix?: string;\n  symbol?: string;\n  onExpand?: EventHandler;\n  onEllipsis?: (ellipsis: boolean) => void;\n  tooltip?: any;\n}\n\nexport interface BlockProps extends TypographyProps {\n  title?: string;\n  editable?: boolean | EditConfig;\n  copyable?: boolean | CopyConfig;\n  type?: BaseType;\n  disabled?: boolean;\n  ellipsis?: boolean | EllipsisConfig;\n  // decorations\n  code?: boolean;\n  mark?: boolean;\n  underline?: boolean;\n  delete?: boolean;\n  strong?: boolean;\n  keyboard?: boolean;\n  content?: string;\n}\n\ninterface Locale {\n  edit?: string;\n  copy?: string;\n  copied?: string;\n  expand?: string;\n}\n\ninterface InternalBlockProps extends BlockProps {\n  component: string;\n}\n\nconst ELLIPSIS_STR = '...';\n\nexport const baseProps = () => ({\n  editable: {\n    type: [Boolean, Object] as PropType<InternalBlockProps['editable']>,\n    default: undefined as InternalBlockProps['editable'],\n  },\n  copyable: {\n    type: [Boolean, Object] as PropType<InternalBlockProps['copyable']>,\n    default: undefined as InternalBlockProps['copyable'],\n  },\n  prefixCls: String,\n  component: String,\n  type: String as PropType<BaseType>,\n  disabled: { type: Boolean, default: undefined },\n  ellipsis: {\n    type: [Boolean, Object] as PropType<InternalBlockProps['ellipsis']>,\n    default: undefined as InternalBlockProps['ellipsis'],\n  },\n  code: { type: Boolean, default: undefined },\n  mark: { type: Boolean, default: undefined },\n  underline: { type: Boolean, default: undefined },\n  delete: { type: Boolean, default: undefined },\n  strong: { type: Boolean, default: undefined },\n  keyboard: { type: Boolean, default: undefined },\n  content: String,\n  'onUpdate:content': Function as PropType<(content: string) => void>,\n});\n\nconst Base = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TypographyBase',\n  inheritAttrs: false,\n  props: baseProps(),\n  // emits: ['update:content'],\n  setup(props, { slots, attrs, emit }) {\n    const { prefixCls, direction } = useConfigInject('typography', props);\n\n    const state = reactive({\n      copied: false,\n      ellipsisText: '',\n      ellipsisContent: null,\n      isEllipsis: false,\n      expanded: false,\n      clientRendered: false,\n      //locale\n      expandStr: '',\n      copyStr: '',\n      copiedStr: '',\n      editStr: '',\n\n      copyId: undefined,\n      rafId: undefined,\n      prevProps: undefined,\n\n      originContent: '',\n    });\n\n    const contentRef = ref();\n    const editIcon = ref();\n    const ellipsis = computed((): EllipsisConfig => {\n      const ellipsis = props.ellipsis;\n      if (!ellipsis) return {};\n\n      return {\n        rows: 1,\n        expandable: false,\n        ...(typeof ellipsis === 'object' ? ellipsis : null),\n      };\n    });\n    onMounted(() => {\n      state.clientRendered = true;\n      syncEllipsis();\n    });\n\n    onBeforeUnmount(() => {\n      clearTimeout(state.copyId);\n      raf.cancel(state.rafId);\n    });\n\n    watch(\n      [() => ellipsis.value.rows, () => props.content],\n      () => {\n        nextTick(() => {\n          resizeOnNextFrame();\n        });\n      },\n      { flush: 'post', deep: true },\n    );\n\n    watchEffect(() => {\n      if (props.content === undefined) {\n        warning(\n          !props.editable,\n          'Typography',\n          'When `editable` is enabled, please use `content` instead of children',\n        );\n        warning(\n          !props.ellipsis,\n          'Typography',\n          'When `ellipsis` is enabled, please use `content` instead of children',\n        );\n      }\n    });\n\n    function getChildrenText(): string {\n      return props.ellipsis || props.editable\n        ? props.content\n        : findDOMNode(contentRef.value)?.innerText;\n    }\n\n    // =============== Expand ===============\n    function onExpandClick(e: MouseEvent) {\n      const { onExpand } = ellipsis.value;\n      state.expanded = true;\n      onExpand?.(e);\n    }\n    // ================ Edit ================\n    function onEditClick(e: MouseEvent) {\n      e.preventDefault();\n      state.originContent = props.content;\n      triggerEdit(true);\n    }\n\n    function onEditChange(value: string) {\n      onContentChange(value);\n      triggerEdit(false);\n    }\n    function onContentChange(value: string) {\n      const { onChange } = editable.value;\n      if (value !== props.content) {\n        emit('update:content', value);\n        onChange?.(value);\n      }\n    }\n\n    function onEditCancel() {\n      editable.value.onCancel?.();\n      triggerEdit(false);\n    }\n\n    // ================ Copy ================\n    function onCopyClick(e: MouseEvent) {\n      e.preventDefault();\n      e.stopPropagation();\n      const { copyable } = props;\n\n      const copyConfig = {\n        ...(typeof copyable === 'object' ? copyable : null),\n      };\n\n      if (copyConfig.text === undefined) {\n        copyConfig.text = getChildrenText();\n      }\n\n      copy(copyConfig.text || '');\n\n      state.copied = true;\n      nextTick(() => {\n        if (copyConfig.onCopy) {\n          copyConfig.onCopy(e);\n        }\n\n        state.copyId = setTimeout(() => {\n          state.copied = false;\n        }, 3000);\n      });\n    }\n\n    const editable = computed(() => {\n      const editable = props.editable;\n      if (!editable) return { editing: false };\n\n      return {\n        ...(typeof editable === 'object' ? editable : null),\n      };\n    });\n\n    const [editing, setEditing] = useMergedState(false, {\n      value: computed(() => {\n        return editable.value.editing;\n      }),\n    });\n\n    function triggerEdit(edit: boolean) {\n      const { onStart } = editable.value;\n      if (edit && onStart) {\n        onStart();\n      }\n\n      setEditing(edit);\n    }\n    watch(\n      editing,\n      val => {\n        if (!val) {\n          editIcon.value?.focus();\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // ============== Ellipsis ==============\n    function resizeOnNextFrame(sizeInfo?: { width: number; height: number }) {\n      if (sizeInfo) {\n        const { width, height } = sizeInfo;\n        if (!width || !height) return;\n      }\n\n      raf.cancel(state.rafId);\n      state.rafId = raf(() => {\n        // Do not bind `syncEllipsis`. It need for test usage on prototype\n        syncEllipsis();\n      });\n    }\n\n    const canUseCSSEllipsis = computed(() => {\n      const { rows, expandable, suffix, onEllipsis, tooltip } = ellipsis.value;\n\n      if (suffix || tooltip) return false;\n\n      // Can't use css ellipsis since we need to provide the place for button\n      if (props.editable || props.copyable || expandable || onEllipsis) {\n        return false;\n      }\n\n      if (rows === 1) {\n        return isTextOverflowSupport;\n      }\n\n      return isLineClampSupport;\n    });\n\n    const syncEllipsis = () => {\n      const { ellipsisText, isEllipsis } = state;\n      const { rows, suffix, onEllipsis } = ellipsis.value;\n      if (\n        !rows ||\n        rows < 0 ||\n        !findDOMNode(contentRef.value) ||\n        state.expanded ||\n        props.content === undefined\n      )\n        return;\n\n      // Do not measure if css already support ellipsis\n      if (canUseCSSEllipsis.value) return;\n\n      const {\n        content,\n        text,\n        ellipsis: ell,\n      } = measure(\n        findDOMNode(contentRef.value),\n        { rows, suffix },\n        props.content,\n        renderOperations(true),\n        ELLIPSIS_STR,\n      );\n\n      if (ellipsisText !== text || state.isEllipsis !== ell) {\n        state.ellipsisText = text;\n        state.ellipsisContent = content;\n        state.isEllipsis = ell;\n        if (isEllipsis !== ell && onEllipsis) {\n          onEllipsis(ell);\n        }\n      }\n    };\n\n    function wrapperDecorations(\n      { mark, code, underline, delete: del, strong, keyboard }: BlockProps,\n      content,\n    ) {\n      let currentContent = content;\n\n      function wrap(needed: boolean, Tag: string) {\n        if (!needed) return;\n\n        currentContent = <Tag>{currentContent}</Tag>;\n      }\n\n      wrap(strong, 'strong');\n      wrap(underline, 'u');\n      wrap(del, 'del');\n      wrap(code, 'code');\n      wrap(mark, 'mark');\n      wrap(keyboard, 'kbd');\n\n      return currentContent;\n    }\n\n    function renderExpand(forceRender?: boolean) {\n      const { expandable, symbol } = ellipsis.value;\n\n      if (!expandable) return null;\n\n      // force render expand icon for measure usage or it will cause dead loop\n      if (!forceRender && (state.expanded || !state.isEllipsis)) return null;\n      const expandContent =\n        (slots.ellipsisSymbol ? slots.ellipsisSymbol() : symbol) || state.expandStr;\n\n      return (\n        <a\n          key=\"expand\"\n          class={`${prefixCls.value}-expand`}\n          onClick={onExpandClick}\n          aria-label={state.expandStr}\n        >\n          {expandContent}\n        </a>\n      );\n    }\n\n    function renderEdit() {\n      if (!props.editable) return;\n\n      const { tooltip, triggerType = ['icon'] } = props.editable as EditConfig;\n      const icon = slots.editableIcon ? slots.editableIcon() : <EditOutlined role=\"button\" />;\n      const title = slots.editableTooltip ? slots.editableTooltip() : state.editStr;\n      const ariaLabel = typeof title === 'string' ? title : '';\n\n      return triggerType.indexOf('icon') !== -1 ? (\n        <Tooltip key=\"edit\" title={tooltip === false ? '' : title}>\n          <TransButton\n            ref={editIcon}\n            class={`${prefixCls.value}-edit`}\n            onClick={onEditClick}\n            aria-label={ariaLabel}\n          >\n            {icon}\n          </TransButton>\n        </Tooltip>\n      ) : null;\n    }\n\n    function renderCopy() {\n      if (!props.copyable) return;\n\n      const { tooltip } = props.copyable as CopyConfig;\n      const defaultTitle = state.copied ? state.copiedStr : state.copyStr;\n      const title = slots.copyableTooltip\n        ? slots.copyableTooltip({ copied: state.copied })\n        : defaultTitle;\n      const ariaLabel = typeof title === 'string' ? title : '';\n      const defaultIcon = state.copied ? <CheckOutlined /> : <CopyOutlined />;\n      const icon = slots.copyableIcon\n        ? slots.copyableIcon({ copied: !!state.copied })\n        : defaultIcon;\n\n      return (\n        <Tooltip key=\"copy\" title={tooltip === false ? '' : title}>\n          <TransButton\n            class={[\n              `${prefixCls.value}-copy`,\n              { [`${prefixCls.value}-copy-success`]: state.copied },\n            ]}\n            onClick={onCopyClick}\n            aria-label={ariaLabel}\n          >\n            {icon}\n          </TransButton>\n        </Tooltip>\n      );\n    }\n\n    function renderEditInput() {\n      const { class: className, style } = attrs;\n      const { maxlength, autoSize, onEnd } = editable.value;\n\n      return (\n        <Editable\n          class={className}\n          style={style}\n          prefixCls={prefixCls.value}\n          value={props.content}\n          originContent={state.originContent}\n          maxlength={maxlength}\n          autoSize={autoSize}\n          onSave={onEditChange}\n          onChange={onContentChange}\n          onCancel={onEditCancel}\n          onEnd={onEnd}\n          direction={direction.value}\n          component={props.component}\n          v-slots={{ enterIcon: slots.editableEnterIcon }}\n        />\n      );\n    }\n\n    function renderOperations(forceRenderExpanded?: boolean) {\n      return [renderExpand(forceRenderExpanded), renderEdit(), renderCopy()].filter(node => node);\n    }\n\n    return () => {\n      const { triggerType = ['icon'] } = editable.value;\n      const children =\n        props.ellipsis || props.editable\n          ? props.content !== undefined\n            ? props.content\n            : slots.default?.()\n          : slots.default\n          ? slots.default()\n          : props.content;\n\n      if (editing.value) {\n        return renderEditInput();\n      }\n      return (\n        <LocaleReceiver\n          componentName=\"Text\"\n          children={(locale: Locale) => {\n            const {\n              type,\n              disabled,\n              content,\n              class: className,\n              style,\n              ...restProps\n            } = {\n              ...props,\n              ...(attrs as HTMLAttributes),\n            };\n            const { rows, suffix, tooltip } = ellipsis.value;\n\n            const { edit, copy: copyStr, copied, expand } = locale;\n\n            state.editStr = edit;\n            state.copyStr = copyStr;\n            state.copiedStr = copied;\n            state.expandStr = expand;\n\n            const textProps = omit(restProps, [\n              'prefixCls',\n              'editable',\n              'copyable',\n              'ellipsis',\n              'mark',\n              'code',\n              'delete',\n              'underline',\n              'strong',\n              'keyboard',\n              'onUpdate:content',\n            ]);\n            const cssEllipsis = canUseCSSEllipsis.value;\n            const cssTextOverflow = rows === 1 && cssEllipsis;\n            const cssLineClamp = rows && rows > 1 && cssEllipsis;\n\n            let textNode = children as VNodeTypes;\n            let ariaLabel: string | undefined;\n\n            // Only use js ellipsis when css ellipsis not support\n            if (rows && state.isEllipsis && !state.expanded && !cssEllipsis) {\n              const { title } = restProps;\n              let restContent = title || '';\n\n              if (!title && (typeof children === 'string' || typeof children === 'number')) {\n                restContent = String(children);\n              }\n\n              // show rest content as title on symbol\n              restContent = restContent?.slice(String(state.ellipsisContent || '').length);\n              // We move full content to outer element to avoid repeat read the content by accessibility\n              textNode = (\n                <>\n                  {toRaw(state.ellipsisContent)}\n                  <span title={restContent} aria-hidden=\"true\">\n                    {ELLIPSIS_STR}\n                  </span>\n                  {suffix}\n                </>\n              );\n            } else {\n              textNode = (\n                <>\n                  {children}\n                  {suffix}\n                </>\n              );\n            }\n\n            textNode = wrapperDecorations(props, textNode);\n\n            const showTooltip =\n              tooltip && rows && state.isEllipsis && !state.expanded && !cssEllipsis;\n            const title = slots.ellipsisTooltip ? slots.ellipsisTooltip() : tooltip;\n            return (\n              <ResizeObserver onResize={resizeOnNextFrame} disabled={!rows}>\n                <Typography\n                  ref={contentRef}\n                  class={[\n                    {\n                      [`${prefixCls.value}-${type}`]: type,\n                      [`${prefixCls.value}-disabled`]: disabled,\n                      [`${prefixCls.value}-ellipsis`]: rows,\n                      [`${prefixCls.value}-single-line`]: rows === 1 && !state.isEllipsis,\n                      [`${prefixCls.value}-ellipsis-single-line`]: cssTextOverflow,\n                      [`${prefixCls.value}-ellipsis-multiple-line`]: cssLineClamp,\n                    },\n                    className,\n                  ]}\n                  style={{\n                    ...(style as CSSProperties),\n                    WebkitLineClamp: cssLineClamp ? rows : undefined,\n                  }}\n                  aria-label={ariaLabel}\n                  direction={direction.value}\n                  onClick={triggerType.indexOf('text') !== -1 ? onEditClick : () => {}}\n                  {...textProps}\n                >\n                  {showTooltip ? (\n                    <Tooltip title={tooltip === true ? children : title}>\n                      <span>{textNode}</span>\n                    </Tooltip>\n                  ) : (\n                    textNode\n                  )}\n                  {renderOperations()}\n                </Typography>\n              </ResizeObserver>\n            );\n          }}\n        />\n      );\n    };\n  },\n});\n\nexport default Base;\n"
  },
  {
    "path": "components/typography/Editable.tsx",
    "content": "import KeyCode from '../_util/KeyCode';\nimport TextArea from '../input/TextArea';\nimport EnterOutlined from '@ant-design/icons-vue/EnterOutlined';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport { defineComponent, ref, reactive, watch, onMounted, toRefs } from 'vue';\nimport type { Direction } from '../config-provider';\nimport type { ChangeEventHandler } from '../_util/EventInterface';\nimport type { AutoSizeType } from '../input/inputProps';\nimport classNames from '../_util/classNames';\n\n// CSSINJS\nimport useStyle from './style';\n\nconst editableProps = () => ({\n  prefixCls: String,\n  value: String,\n  maxlength: Number,\n  autoSize: { type: [Boolean, Object] as PropType<boolean | AutoSizeType> },\n  onSave: Function as PropType<(val: string) => void>,\n  onCancel: Function as PropType<() => void>,\n  onEnd: Function as PropType<() => void>,\n  onChange: Function as PropType<(val: string) => void>,\n  originContent: String,\n  direction: String as PropType<Direction>,\n  component: String,\n});\nexport type EditableProps = Partial<ExtractPropTypes<ReturnType<typeof editableProps>>>;\nconst Editable = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Editable',\n  inheritAttrs: false,\n  props: editableProps(),\n  // emits: ['save', 'cancel', 'end', 'change'],\n  setup(props, { emit, slots, attrs }) {\n    const { prefixCls } = toRefs(props);\n    const state = reactive({\n      current: props.value || '',\n      lastKeyCode: undefined,\n      inComposition: false,\n      cancelFlag: false,\n    });\n    watch(\n      () => props.value,\n      current => {\n        state.current = current;\n      },\n    );\n\n    const textArea = ref();\n\n    onMounted(() => {\n      if (textArea.value) {\n        const resizableTextArea = textArea.value?.resizableTextArea;\n        const innerTextArea = resizableTextArea?.textArea;\n        innerTextArea.focus();\n        const { length } = innerTextArea.value;\n        innerTextArea.setSelectionRange(length, length);\n      }\n    });\n\n    function saveTextAreaRef(node: any) {\n      textArea.value = node;\n    }\n\n    function onChange({ target: { value } }) {\n      state.current = value.replace(/[\\r\\n]/g, '');\n      emit('change', state.current);\n    }\n\n    function onCompositionStart() {\n      state.inComposition = true;\n    }\n\n    function onCompositionEnd() {\n      state.inComposition = false;\n    }\n\n    function onKeyDown(e: KeyboardEvent) {\n      const { keyCode } = e;\n      if (keyCode === KeyCode.ENTER) {\n        e.preventDefault();\n      }\n      // We don't record keyCode when IME is using\n      if (state.inComposition) return;\n\n      state.lastKeyCode = keyCode;\n    }\n\n    function onKeyUp(e: KeyboardEvent) {\n      const { keyCode, ctrlKey, altKey, metaKey, shiftKey } = e;\n\n      // Check if it's a real key\n      if (\n        state.lastKeyCode === keyCode &&\n        !state.inComposition &&\n        !ctrlKey &&\n        !altKey &&\n        !metaKey &&\n        !shiftKey\n      ) {\n        if (keyCode === KeyCode.ENTER) {\n          confirmChange();\n          emit('end');\n        } else if (keyCode === KeyCode.ESC) {\n          state.current = props.originContent;\n          emit('cancel');\n        }\n      }\n    }\n\n    function onBlur() {\n      confirmChange();\n    }\n\n    function confirmChange() {\n      emit('save', state.current.trim());\n    }\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const textAreaClassName = classNames(\n        {\n          [`${prefixCls.value}`]: true,\n          [`${prefixCls.value}-edit-content`]: true,\n          [`${prefixCls.value}-rtl`]: props.direction === 'rtl',\n          [props.component ? `${prefixCls.value}-${props.component}` : '']: true,\n        },\n        attrs.class,\n        hashId.value,\n      );\n\n      return wrapSSR(\n        <div {...attrs} class={textAreaClassName}>\n          <TextArea\n            ref={saveTextAreaRef}\n            maxlength={props.maxlength}\n            value={state.current}\n            onChange={onChange as ChangeEventHandler}\n            onKeydown={onKeyDown}\n            onKeyup={onKeyUp}\n            onCompositionstart={onCompositionStart}\n            onCompositionend={onCompositionEnd}\n            onBlur={onBlur}\n            rows={1}\n            autoSize={props.autoSize === undefined || props.autoSize}\n          />\n          {slots.enterIcon ? (\n            slots.enterIcon({ className: `${props.prefixCls}-edit-content-confirm` })\n          ) : (\n            <EnterOutlined class={`${props.prefixCls}-edit-content-confirm`} />\n          )}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default Editable;\n"
  },
  {
    "path": "components/typography/Link.tsx",
    "content": "import type { AnchorHTMLAttributes, ExtractPropTypes, FunctionalComponent } from 'vue';\nimport warning from '../_util/warning';\nimport Base, { baseProps } from './Base';\nimport omit from '../_util/omit';\n\nexport const linkProps = () =>\n  omit({ ...baseProps(), ellipsis: { type: Boolean, default: undefined } }, ['component']);\n\nexport type LinkProps = Partial<ExtractPropTypes<ReturnType<typeof linkProps>>> &\n  AnchorHTMLAttributes;\n\nconst Link: FunctionalComponent<LinkProps> = (props, { slots, attrs }) => {\n  const { ellipsis, rel, ...restProps } = { ...props, ...attrs };\n  warning(\n    typeof ellipsis !== 'object',\n    'Typography.Link',\n    '`ellipsis` only supports boolean value.',\n  );\n  const mergedProps = {\n    ...restProps,\n    rel: rel === undefined && restProps.target === '_blank' ? 'noopener noreferrer' : rel,\n    ellipsis: !!ellipsis,\n    component: 'a',\n  };\n  // https://github.com/ant-design/ant-design/issues/26622\n  // @ts-ignore\n  delete mergedProps.navigate;\n\n  return <Base {...mergedProps} v-slots={slots}></Base>;\n};\n\nLink.displayName = 'ATypographyLink';\nLink.inheritAttrs = false;\nLink.props = linkProps();\n\nexport default Link;\n"
  },
  {
    "path": "components/typography/Paragraph.tsx",
    "content": "import type { ExtractPropTypes, FunctionalComponent } from 'vue';\nimport omit from '../_util/omit';\nimport Base, { baseProps } from './Base';\n\nexport const paragraphProps = () => omit(baseProps(), ['component']);\n\nexport type ParagraphProps = Partial<ExtractPropTypes<ReturnType<typeof paragraphProps>>>;\n\nconst Paragraph: FunctionalComponent<ParagraphProps> = (props, { slots, attrs }) => {\n  const paragraphProps = {\n    ...props,\n    component: 'div',\n    ...attrs,\n  };\n\n  return <Base {...paragraphProps} v-slots={slots}></Base>;\n};\n\nParagraph.displayName = 'ATypographyParagraph';\nParagraph.inheritAttrs = false;\nParagraph.props = paragraphProps();\n\nexport default Paragraph;\n"
  },
  {
    "path": "components/typography/Text.tsx",
    "content": "import type { ExtractPropTypes, FunctionalComponent, PropType } from 'vue';\nimport omit from '../_util/omit';\nimport warning from '../_util/warning';\nimport type { EllipsisConfig } from './Base';\nimport Base, { baseProps } from './Base';\n\nexport const textProps = () => ({\n  ...omit(baseProps(), ['component']),\n  ellipsis: {\n    type: [Boolean, Object] as PropType<\n      boolean | Omit<EllipsisConfig, 'expandable' | 'rows' | 'onExpand'>\n    >,\n    default: undefined as boolean | Omit<EllipsisConfig, 'expandable' | 'rows' | 'onExpand'>,\n  },\n});\n\nexport type TextProps = Partial<ExtractPropTypes<ReturnType<typeof textProps>>>;\n\nconst Text: FunctionalComponent<TextProps> = (props, { slots, attrs }) => {\n  const { ellipsis } = props;\n  warning(\n    typeof ellipsis !== 'object' ||\n      !ellipsis ||\n      (!('expandable' in ellipsis) && !('rows' in ellipsis)),\n    'Typography.Text',\n    '`ellipsis` do not support `expandable` or `rows` props.',\n  );\n  const textProps = {\n    ...props,\n    ellipsis:\n      ellipsis && typeof ellipsis === 'object'\n        ? omit(ellipsis as any, ['expandable', 'rows'])\n        : ellipsis,\n    component: 'span',\n    ...attrs,\n  };\n  return <Base {...textProps} v-slots={slots}></Base>;\n};\n\nText.displayName = 'ATypographyText';\nText.inheritAttrs = false;\nText.props = textProps();\n\nexport default Text;\n"
  },
  {
    "path": "components/typography/Title.tsx",
    "content": "import type { ExtractPropTypes, FunctionalComponent, PropType } from 'vue';\nimport omit from '../_util/omit';\nimport { tupleNum } from '../_util/type';\nimport warning from '../_util/warning';\nimport Base, { baseProps } from './Base';\n\nconst TITLE_ELE_LIST = tupleNum(1, 2, 3, 4, 5);\n\nexport const titleProps = () => ({\n  ...omit(baseProps(), ['component', 'strong']),\n  level: Number as PropType<(typeof TITLE_ELE_LIST)[number]>,\n});\n\nexport type TitleProps = Partial<ExtractPropTypes<ReturnType<typeof titleProps>>>;\n\nconst Title: FunctionalComponent<TitleProps> = (props, { slots, attrs }) => {\n  const { level = 1, ...restProps } = props;\n  let component: string;\n  if (TITLE_ELE_LIST.includes(level)) {\n    component = `h${level}`;\n  } else {\n    warning(false, 'Typography', 'Title only accept `1 | 2 | 3 | 4 | 5` as `level` value.');\n    component = 'h1';\n  }\n\n  const titleProps = {\n    ...restProps,\n    component,\n    ...attrs,\n  };\n\n  return <Base {...titleProps} v-slots={slots}></Base>;\n};\n\nTitle.displayName = 'ATypographyTitle';\nTitle.inheritAttrs = false;\nTitle.props = titleProps();\n\nexport default Title;\n"
  },
  {
    "path": "components/typography/Typography.tsx",
    "content": "import type { HTMLAttributes, PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport classNames from '../_util/classNames';\nimport type { Direction } from '../config-provider';\n\n// CSSINJS\nimport useStyle from './style';\n\nexport interface TypographyProps extends HTMLAttributes {\n  direction?: Direction;\n  prefixCls?: string;\n}\n\nexport interface InternalTypographyProps extends TypographyProps {\n  component?: string;\n}\nexport const typographyProps = () => ({\n  prefixCls: String,\n  direction: String as PropType<Direction>,\n  // Form Internal use\n  component: String,\n});\nconst Typography = defineComponent({\n  name: 'ATypography',\n  inheritAttrs: false,\n  props: typographyProps(),\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('typography', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    return () => {\n      const {\n        prefixCls: _prefixCls,\n        direction: _direction,\n        component: Component = 'article' as any,\n        ...restProps\n      } = { ...props, ...attrs };\n      return wrapSSR(\n        <Component\n          {...restProps}\n          class={classNames(\n            prefixCls.value,\n            { [`${prefixCls.value}-rtl`]: direction.value === 'rtl' },\n            attrs.class,\n            hashId.value,\n          )}\n        >\n          {slots.default?.()}\n        </Component>,\n      );\n    };\n  },\n});\n\nexport default Typography;\n"
  },
  {
    "path": "components/typography/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/typography/demo/basic.vue correctly 1`] = `\n<article class=\"ant-typography\">\n  <h1 class=\"ant-typography\">Introduction\n    <!---->\n  </h1>\n  <div class=\"ant-typography\"> In the process of internal desktop applications development, many different design specs and implementations would be involved, which might cause designers and developers difficulties and duplication and reduce the efficiency of development.\n    <!---->\n  </div>\n  <div class=\"ant-typography\"> After massive project practice and summaries, Ant Design, a design language for background applications, is refined by Ant UED Team, which aims to <span class=\"ant-typography\"><strong> uniform the user interface specs for internal background projects, lower the unnecessary cost of design differences and implementation and liberate the resources of design and front-end development. <!----></strong></span>\n    <!---->\n  </div>\n  <h2 class=\"ant-typography\">Guidelines and Resources\n    <!---->\n  </h2>\n  <div class=\"ant-typography\"> We supply a series of design principles, practical patterns and high quality design resources ( <span class=\"ant-typography\"><code>Sketch<!----></code></span> and <span class=\"ant-typography\"><code>Axure<!----></code></span> ), to help people create their product prototypes beautifully and efficiently.\n    <!---->\n  </div>\n  <div class=\"ant-typography\">\n    <ul>\n      <li><a class=\"ant-typography\" href=\"/docs/resources\">Resource Download\n          <!---->\n        </a></li>\n    </ul>\n    <!---->\n  </div>\n  <div class=\"ant-typography\"> Press <span class=\"ant-typography\"><kbd>Esc<!----></kbd></span> to exit...\n    <!---->\n  </div>\n  <div class=\"ant-divider ant-divider-horizontal\" role=\"separator\">\n    <!---->\n  </div>\n  <h1 class=\"ant-typography\">介绍\n    <!---->\n  </h1>\n  <div class=\"ant-typography\"> 蚂蚁的企业级产品是一个庞大且复杂的体系。这类产品不仅量级巨大且功能复杂，而且变动和并发频繁，常常需要设计与开发能够快速的做出响应。同时这类产品中有存在很多类似的页面以及组件，可以通过抽象得到一些稳定且高复用性的内容。\n    <!---->\n  </div>\n  <div class=\"ant-typography\"> 随着商业化的趋势，越来越多的企业级产品对更好的用户体验有了进一步的要求。带着这样的一个终极目标，我们（蚂蚁金服体验技术部）经过大量的项目实践和总结，逐步打磨出一个服务于企业级产品的设计体系 Ant Design。基于 <span class=\"ant-typography\"><mark>『确定』和『自然』<!----></mark></span> 的设计价值观，通过模块化的解决方案，降低冗余的生产成本，让设计者专注于 <span class=\"ant-typography\"><strong>更好的用户体验<!----></strong></span> 。\n    <!---->\n  </div>\n  <h2 class=\"ant-typography\">设计资源\n    <!---->\n  </h2>\n  <div class=\"ant-typography\"> 我们提供完善的设计原则、最佳实践和设计资源文件（ <span class=\"ant-typography\"><code>Sketch<!----></code></span> 和 <span class=\"ant-typography\"><code>Axure<!----></code></span> ），来帮助业务快速设计出高质量的产品原型。\n    <!---->\n  </div>\n  <div class=\"ant-typography\">\n    <ul>\n      <li><a class=\"ant-typography\" href=\"/docs/resources-cn\">设计资源\n          <!---->\n        </a></li>\n    </ul>\n    <!---->\n  </div>\n  <div class=\"ant-typography\">\n    <blockquote>AntV 是蚂蚁金服全新一代数据可视化解决方案，致力于提供一套简单方便、专业可靠、不限可能的数据可视化最佳实践。得益于丰富的业务场景和用户需求挑战，AntV 经历多年积累与不断打磨，已支撑整个阿里集团内外 20000+ 业务系统，通过了日均千万级 UV 产品的严苛考验。\n      我们正在基础图表，图分析，图编辑，地理空间可视化，智能可视化等各个可视化的领域耕耘，欢迎同路人一起前行。</blockquote><pre>AntV 是蚂蚁金服全新一代数据可视化解决方案，致力于提供一套简单方便、专业可靠、不限可能的数据可视化最佳实践。得益于丰富的业务场景和用户需求挑战，AntV 经历多年积累与不断打磨，已支撑整个阿里集团内外 20000+ 业务系统，通过了日均千万级 UV 产品的严苛考验。\n我们正在基础图表，图分析，图编辑，地理空间可视化，智能可视化等各个可视化的领域耕耘，欢迎同路人一起前行。</pre>\n    <!---->\n  </div>\n  <div class=\"ant-typography\"> 按 <span class=\"ant-typography\"><kbd>Esc<!----></kbd></span> 键退出阅读……\n    <!---->\n  </div>\n</article>\n`;\n\nexports[`renders ./components/typography/demo/ellipsis.vue correctly 1`] = `\n<button type=\"button\" role=\"switch\" aria-checked=\"true\" class=\"ant-switch-checked ant-switch\">\n  <div class=\"ant-switch-handle\">\n    <!---->\n  </div><span class=\"ant-switch-inner\"><span class=\"ant-switch-inner-checked\"><!----></span><span class=\"ant-switch-inner-unchecked\"><!----></span></span>\n</button>\n<div class=\"ant-typography ant-typography-ellipsis ant-typography-single-line ant-typography-ellipsis-single-line\"> Ant Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team.\n  <!---->\n</div>\n<div class=\"ant-typography ant-typography-ellipsis\">Ant Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team. Ant\n  Design, a design language for background applications, is refined by Ant UED Team.\n  <!---->\n</div>\n<span class=\"ant-typography ant-typography-ellipsis ant-typography-single-line\" style=\"width: 100px;\">Ant Design, a design language for background applications, is refined by Ant UED Team.<!----></span>\n`;\n\nexports[`renders ./components/typography/demo/interactive.vue correctly 1`] = `\n<div class=\"ant-typography\">This is an editable text.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"Edit\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"button\" aria-label=\"edit\" class=\"anticon anticon-edit\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">Custom Edit icon and replace tooltip text.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"highlight\" class=\"anticon anticon-highlight\"><svg focusable=\"false\" class=\"\" data-icon=\"highlight\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M957.6 507.4L603.2 158.2a7.9 7.9 0 00-11.2 0L353.3 393.4a8.03 8.03 0 00-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 00-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0011.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0011.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z\"></path></svg></span></div>\n</div>\nTrigger edit with:  \n<div class=\"ant-radio-group ant-radio-group-outline\"><label class=\"ant-radio-wrapper ant-radio-wrapper-checked\"><span class=\"ant-radio ant-radio-checked\"><input type=\"radio\" class=\"ant-radio-input\" value=\"icon\"><span class=\"ant-radio-inner\"></span></span><span>icon</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"text\"><span class=\"ant-radio-inner\"></span></span><span>text</span></label><label class=\"ant-radio-wrapper\"><span class=\"ant-radio\"><input type=\"radio\" class=\"ant-radio-input\" value=\"both\"><span class=\"ant-radio-inner\"></span></span><span>both</span></label></div>\n<div class=\"ant-typography\">Text or icon as trigger - click to start editing.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"button\" aria-label=\"edit\" class=\"anticon anticon-edit\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">Editable text with a custom enter icon in edit field.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"highlight\" class=\"anticon anticon-highlight\"><svg focusable=\"false\" class=\"\" data-icon=\"highlight\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M957.6 507.4L603.2 158.2a7.9 7.9 0 00-11.2 0L353.3 393.4a8.03 8.03 0 00-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 00-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0011.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0011.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">Editable text with no enter icon in edit field.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"highlight\" class=\"anticon anticon-highlight\"><svg focusable=\"false\" class=\"\" data-icon=\"highlight\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M957.6 507.4L603.2 158.2a7.9 7.9 0 00-11.2 0L353.3 393.4a8.03 8.03 0 00-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 00-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0011.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0011.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">Hide Edit tooltip.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"Edit\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"button\" aria-label=\"edit\" class=\"anticon anticon-edit\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">This is an editable text with limited length.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-edit\" aria-label=\"Edit\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"button\" aria-label=\"edit\" class=\"anticon anticon-edit\"><svg focusable=\"false\" class=\"\" data-icon=\"edit\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">This is a copyable text.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-copy\" aria-label=\"Copy\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"copy\" class=\"anticon anticon-copy\"><svg focusable=\"false\" class=\"\" data-icon=\"copy\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\"> Replace copy text.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-copy\" aria-label=\"Copy\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"copy\" class=\"anticon anticon-copy\"><svg focusable=\"false\" class=\"\" data-icon=\"copy\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\">Custom Copy icon and replace tooltips text.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-copy\" aria-label=\"\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"smile\" class=\"anticon anticon-smile\"><svg focusable=\"false\" class=\"\" data-icon=\"smile\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M288 421a48 48 0 1096 0 48 48 0 10-96 0zm352 0a48 48 0 1096 0 48 48 0 10-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 01248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 01249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 01775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 01775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 00-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 00-8-8.4z\"></path></svg></span></div>\n</div>\n<div class=\"ant-typography\"> Hide Copy tooltips.\n  <!---->\n  <!---->\n  <div role=\"button\" tabindex=\"0\" class=\"ant-typography-copy\" aria-label=\"Copy\" style=\"border: 0px; background: transparent; padding: 0px; line-height: inherit; display: inline-block;\"><span role=\"img\" aria-label=\"copy\" class=\"anticon anticon-copy\"><svg focusable=\"false\" class=\"\" data-icon=\"copy\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"></path></svg></span></div>\n</div>\n`;\n\nexports[`renders ./components/typography/demo/suffix.vue correctly 1`] = `\n<div tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n  <div class=\"ant-slider-rail\"></div>\n  <div class=\"ant-slider-track\" style=\"left: 0%; width: 0%;\"></div>\n  <div class=\"ant-slider-step\"></div>\n  <!---->\n  <div class=\"ant-slider-handle\" style=\"left: 0%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"1\" aria-valuemax=\"10\" aria-valuenow=\"1\" aria-disabled=\"false\"></div>\n  <div class=\"ant-slider-mark\"></div>\n</div>\n<div class=\"ant-typography ant-typography-ellipsis ant-typography-single-line\" title=\"To be, or not to be, that is a question: Whether it is nobler in the mind to suffer. The slings and arrows of outrageous fortune Or to take arms against a sea of troubles, And by opposing end them? To die: to sleep; No more; and by a sleep to say we end The heart-ache and the thousand natural shocks That flesh is heir to, 'tis a consummation Devoutly to be wish'd. To die, to sleep To sleep- perchance to dream: ay, there's the rub! For in that sleep of death what dreams may come When we have shuffled off this mortal coil, Must give us pause. There 's the respect That makes calamity of so long life--William Shakespeare\">To be, or not to be, that is a question: Whether it is nobler in the mind to suffer. The slings and arrows of outrageous fortune Or to take arms against a sea of troubles, And by opposing end them? To die: to sleep; No more; and by a sleep to say we end The heart-ache and the thousand natural shocks That flesh is heir to, 'tis a consummation Devoutly to be wish'd. To die, to sleep To sleep- perchance to dream: ay, there's the rub! For in that sleep of death what dreams may come When we have shuffled off this mortal coil, Must give us pause. There 's the respect That makes calamity of so long life--William Shakespeare</div>\n`;\n\nexports[`renders ./components/typography/demo/text.vue correctly 1`] = `\n<div class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\">Ant Design Vue (default)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography ant-typography-secondary\">Ant Design Vue (secondary)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography ant-typography-success\">Ant Design Vue (success)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography ant-typography-warning\">Ant Design Vue (warning)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography ant-typography-danger\">Ant Design Vue (danger)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography ant-typography-disabled\">Ant Design Vue (disabled)<!----></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><mark>Ant Design Vue (mark)<!----></mark></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><code>Ant Design Vue (code)<!----></code></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><kbd>Ant Design Vue (keyboard)<!----></kbd></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><u>Ant Design Vue (underline)<!----></u></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><del>Ant Design Vue (delete)<!----></del></span></div>\n  <!---->\n  <div class=\"ant-space-item\" style=\"margin-bottom: 8px;\"><span class=\"ant-typography\"><strong>Ant Design Vue (strong)<!----></strong></span></div>\n  <!---->\n  <div class=\"ant-space-item\"><a class=\"ant-typography\" href=\"https://antdv.com\" target=\"_blank\" rel=\"noopener noreferrer\"> Ant Design Vue (Link)\n      <!---->\n    </a></div>\n  <!---->\n</div>\n`;\n\nexports[`renders ./components/typography/demo/title.vue correctly 1`] = `\n<h1 class=\"ant-typography\">h1. Ant Design Vue\n  <!---->\n</h1>\n<h2 class=\"ant-typography\">h2. Ant Design Vue\n  <!---->\n</h2>\n<h3 class=\"ant-typography\">h3. Ant Design Vue\n  <!---->\n</h3>\n<h4 class=\"ant-typography\">h4. Ant Design Vue\n  <!---->\n</h4>\n<h5 class=\"ant-typography\">h5. Ant Design Vue\n  <!---->\n</h5>\n`;\n"
  },
  {
    "path": "components/typography/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('typography');\n"
  },
  {
    "path": "components/typography/__tests__/index.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { asyncExpect, sleep } from '../../../tests/utils';\nimport KeyCode from '../../_util/KeyCode';\nimport copy from '../../_util/copy-to-clipboard';\nimport Typography from '..';\nimport Title from '../Title';\nimport Paragraph from '../Paragraph';\nimport Link from '../Link';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { nextTick, createTextVNode, ref } from 'vue';\n\nconst Base = Typography.Base;\ndescribe('Typography', () => {\n  mountTest(Paragraph);\n  mountTest(Base);\n  mountTest(Title);\n  mountTest(Link);\n\n  const LINE_STR_COUNT = 20;\n  const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});\n  // Mock offsetHeight\n  const originOffsetHeight = Object.getOwnPropertyDescriptor(\n    HTMLElement.prototype,\n    'offsetHeight',\n  ).get;\n  const mockGetBoundingClientRect = jest.spyOn(HTMLElement.prototype, 'getBoundingClientRect');\n  beforeAll(() => {\n    Object.defineProperty(HTMLElement.prototype, 'offsetHeight', {\n      get() {\n        let html = this.innerHTML;\n        html = html.replace(/<[^>]*>/g, '');\n        const lines = Math.ceil(html.length / LINE_STR_COUNT);\n        return lines * 16;\n      },\n    });\n    mockGetBoundingClientRect.mockImplementation(function fn() {\n      let html = this.innerHTML;\n      html = html.replace(/<[^>]*>/g, '');\n      const lines = Math.ceil(html.length / LINE_STR_COUNT);\n      return { height: lines * 16 };\n    });\n  });\n\n  // Mock getComputedStyle\n  const originGetComputedStyle = window.getComputedStyle;\n  window.getComputedStyle = ele => {\n    const style = originGetComputedStyle(ele);\n    style.lineHeight = '16px';\n    return style;\n  };\n\n  afterEach(() => {\n    errorSpy.mockReset();\n  });\n\n  afterAll(() => {\n    errorSpy.mockRestore();\n    Object.defineProperty(HTMLElement.prototype, 'offsetHeight', {\n      get: originOffsetHeight,\n    });\n    mockGetBoundingClientRect.mockRestore();\n    window.getComputedStyle = originGetComputedStyle;\n  });\n\n  describe('Base', () => {\n    describe('trigger ellipsis update', () => {\n      const fullStr =\n        'Bamboo is Little Light Bamboo is Little Light Bamboo is Little Light Bamboo is Little Light Bamboo is Little Light';\n\n      // xit('should trigger update', async () => {\n      //   const onEllipsis = jest.fn();\n      //   const wrapper = mount(Base, {\n      //     props: {\n      //       ellipsis: { onEllipsis },\n      //       component: 'p',\n      //       editable: true,\n      //       content: fullStr,\n      //     },\n      //   });\n\n      //   await sleep(20);\n\n      //   expect(wrapper.text()).toEqual('Bamboo is Little ...');\n      //   expect(onEllipsis).toHaveBeenCalledWith(true);\n      //   onEllipsis.mockReset();\n      //   wrapper.setProps({ ellipsis: { rows: 2, onEllipsis } });\n      //   await sleep(300);\n      //   expect(wrapper.text()).toEqual('Bamboo is Little Light Bamboo is Litt...');\n      //   expect(onEllipsis).not.toHaveBeenCalled();\n\n      //   wrapper.setProps({ ellipsis: { rows: 99, onEllipsis } });\n      //   await sleep(20);\n      //   expect(wrapper.find('p').text()).toEqual(fullStr);\n      //   expect(onEllipsis).toHaveBeenCalledWith(false);\n      // });\n\n      it('should middle ellipsis', async () => {\n        const suffix = '--suffix';\n        const wrapper = mount(Base, {\n          props: {\n            ellipsis: {\n              rows: 1,\n              suffix,\n            },\n            component: 'p',\n            content: fullStr,\n          },\n        });\n\n        await sleep(20);\n        expect(wrapper.find('p').text()).toEqual('Bamboo is...--suffix');\n      });\n\n      it('should front or middle ellipsis', async () => {\n        const suffix = '--The information is very important';\n        const wrapper = mount(Base, {\n          props: {\n            ellipsis: {\n              rows: 1,\n              suffix,\n            },\n            component: 'p',\n            content: fullStr,\n          },\n        });\n\n        await sleep(20);\n        expect(wrapper.find('p').text()).toEqual('...--The information is very important');\n\n        wrapper.setProps({ ellipsis: { rows: 2, suffix } });\n        await sleep(20);\n        expect(wrapper.find('p').text()).toEqual('Ba...--The information is very important');\n\n        wrapper.setProps({ ellipsis: { rows: 99, suffix } });\n        await sleep(20);\n        expect(wrapper.find('p').text()).toEqual(fullStr + suffix);\n      });\n\n      // it('connect children', async () => {\n      //   const bamboo = 'Bamboo';\n      //   const is = ' is ';\n\n      //   const wrapper = mount(Base, {\n      //     props: {\n      //       ellipsis: true,\n      //       component: 'p',\n      //       editable: true,\n      //     },\n      //     slots: {\n      //       default: [\n      //         createTextVNode(bamboo),\n      //         createTextVNode(is),\n      //         createVNode('code', null, 'Little'),\n      //         createVNode('code', null, 'Light'),\n      //       ],\n      //     },\n      //   });\n\n      //   await sleep(20);\n      //   expect(wrapper.find('span').text()).toEqual('Bamboo is Little...');\n      // });\n\n      it('should expandable work', async () => {\n        const onExpand = jest.fn();\n        const wrapper = mount(Base, {\n          props: {\n            ellipsis: {\n              expandable: true,\n              onExpand,\n            },\n            component: 'p',\n            copyable: true,\n            editable: true,\n            content: fullStr,\n          },\n        });\n\n        await sleep(20);\n        wrapper.find('.ant-typography-expand').trigger('click');\n        expect(onExpand).toHaveBeenCalled();\n        await sleep(20);\n\n        expect(wrapper.find('p').text()).toEqual(fullStr);\n      });\n\n      it('should have custom expand style', async () => {\n        const symbol = 'more';\n        const wrapper = mount(Base, {\n          props: {\n            ellipsis: {\n              expandable: true,\n              symbol,\n            },\n            component: 'p',\n            content: fullStr,\n          },\n        });\n\n        await sleep(20);\n        expect(wrapper.find('.ant-typography-expand').text()).toEqual('more');\n      });\n\n      it('can use css ellipsis', async () => {\n        const wrapper = mount(Base, {\n          props: {\n            ellipsis: true,\n            component: 'p',\n          },\n        });\n\n        await sleep(20);\n        expect(wrapper.findAll('.ant-typography-ellipsis-single-line').length).toBeTruthy();\n      });\n    });\n\n    describe('copyable', () => {\n      // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n      function copyTest(name, text, target, icon) {\n        it(name, async () => {\n          jest.useFakeTimers();\n          const onCopy = jest.fn();\n          const wrapper = mount(Base, {\n            props: {\n              component: 'p',\n              copyable: { text, onCopy },\n            },\n            slots: {\n              default: [createTextVNode('test copy')],\n              copyableIcon: icon ? () => icon : undefined,\n            },\n          });\n\n          if (icon) {\n            expect(wrapper.findAll('.anticon-smile').length).toBeTruthy();\n          } else {\n            expect(wrapper.findAll('.anticon-copy').length).toBeTruthy();\n          }\n\n          wrapper.find('.ant-typography-copy').trigger('click');\n\n          await asyncExpect(() => {\n            expect(copy.lastStr).toEqual(target);\n          });\n\n          await asyncExpect(() => {\n            expect(onCopy).toHaveBeenCalled();\n          });\n\n          expect(wrapper.findAll('.anticon-check').length).toBeTruthy();\n\n          jest.runAllTimers();\n\n          // Will set back when 3 seconds pass\n          await nextTick();\n          expect(wrapper.findAll('.anticon-check').length).toBeFalsy();\n\n          jest.useRealTimers();\n        });\n      }\n\n      //copyTest('basic copy', undefined, 'test copy');\n      //copyTest('customize copy', 'bamboo', 'bamboo');\n    });\n\n    describe('editable', () => {\n      function testStep(name, submitFunc, expectFunc) {\n        it(name, async () => {\n          const onStart = jest.fn();\n          const onChange = jest.fn();\n\n          const className = 'test';\n\n          const content = ref('');\n\n          const Component = {\n            setup() {\n              return () => (\n                <Paragraph\n                  content={content.value}\n                  onUpdate:content={val => (content.value = val)}\n                  class={className}\n                  style={{ color: 'red' }}\n                >\n                  Bamboo\n                </Paragraph>\n              );\n            },\n          };\n\n          const wrapper = mount(Component, {\n            props: {\n              editable: { onChange, onStart },\n            },\n            attachTo: 'body',\n          });\n          await sleep(20);\n\n          // Should have class\n          const component = wrapper.find('div');\n          expect(component.element.style.color).toEqual('red');\n          expect(component.classes()).toContain(className);\n\n          wrapper.find('.ant-typography-edit').trigger('click');\n          await sleep(20);\n          expect(onStart).toHaveBeenCalled();\n\n          await sleep(20);\n          wrapper.find('textarea').element.value = 'Bamboo';\n          wrapper.find('textarea').trigger('change');\n          await sleep();\n          if (submitFunc) {\n            submitFunc(wrapper);\n          } else {\n            return;\n          }\n          await sleep(20);\n          if (expectFunc) {\n            expectFunc(onChange);\n          } else {\n            expect(onChange).toHaveBeenCalledWith('Bamboo');\n            expect(onChange).toHaveBeenCalledTimes(1);\n          }\n        });\n      }\n\n      testStep('by key up', async wrapper => {\n        // Not trigger when inComposition\n        wrapper.find('textarea').trigger('compositionstart');\n        wrapper.find('textarea').trigger('keydown', { keyCode: KeyCode.ENTER });\n        wrapper.find('textarea').trigger('compositionend');\n        wrapper.find('textarea').trigger('keyup', { keyCode: KeyCode.ENTER });\n\n        // // Now trigger\n        wrapper.find('textarea').trigger('keydown', { keyCode: KeyCode.ENTER });\n        await sleep();\n        wrapper.find('textarea').trigger('keyup', { keyCode: KeyCode.ENTER });\n      });\n      testStep('by esc key', async wrapper => {\n        wrapper.find('textarea').trigger('keydown', { keyCode: KeyCode.ESC });\n        await sleep();\n        wrapper.find('textarea').trigger('keyup', { keyCode: KeyCode.ESC });\n      });\n\n      testStep('by blur', wrapper => {\n        wrapper.find('textarea').trigger('blur');\n      });\n    });\n\n    xit('should focus at the end of textarea', async () => {\n      const wrapper = mount(Paragraph, {\n        props: {\n          editable: true,\n          content: 'content',\n        },\n      });\n      await sleep();\n      wrapper.find('.ant-typography-edit').trigger('click');\n      await sleep();\n      const textareaNode = wrapper.find('textarea').element;\n      expect(textareaNode.selectionStart).toBe(7);\n      expect(textareaNode.selectionEnd).toBe(7);\n    });\n  });\n});\n"
  },
  {
    "path": "components/typography/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n展示文档样例。\n\n## en-US\n\nDisplay the document sample.\n</docs>\n<template>\n  <a-typography>\n    <a-typography-title>Introduction</a-typography-title>\n    <a-typography-paragraph>\n      In the process of internal desktop applications development, many different design specs and\n      implementations would be involved, which might cause designers and developers difficulties and\n      duplication and reduce the efficiency of development.\n    </a-typography-paragraph>\n    <a-typography-paragraph>\n      After massive project practice and summaries, Ant Design, a design language for background\n      applications, is refined by Ant UED Team, which aims to\n      <a-typography-text strong>\n        uniform the user interface specs for internal background projects, lower the unnecessary\n        cost of design differences and implementation and liberate the resources of design and\n        front-end development.\n      </a-typography-text>\n    </a-typography-paragraph>\n    <a-typography-title :level=\"2\">Guidelines and Resources</a-typography-title>\n    <a-typography-paragraph>\n      We supply a series of design principles, practical patterns and high quality design resources\n      (\n      <a-typography-text code>Sketch</a-typography-text>\n      and\n      <a-typography-text code>Axure</a-typography-text>\n      ), to help people create their product prototypes beautifully and efficiently.\n    </a-typography-paragraph>\n\n    <a-typography-paragraph>\n      <ul>\n        <li>\n          <a-typography-link href=\"/docs/resources\">Resource Download</a-typography-link>\n        </li>\n      </ul>\n    </a-typography-paragraph>\n\n    <a-typography-paragraph>\n      Press\n      <a-typography-text keyboard>Esc</a-typography-text>\n      to exit...\n    </a-typography-paragraph>\n\n    <a-divider />\n\n    <a-typography-title>介绍</a-typography-title>\n    <a-typography-paragraph>\n      蚂蚁的企业级产品是一个庞大且复杂的体系。这类产品不仅量级巨大且功能复杂，而且变动和并发频繁，常常需要设计与开发能够快速的做出响应。同时这类产品中有存在很多类似的页面以及组件，可以通过抽象得到一些稳定且高复用性的内容。\n    </a-typography-paragraph>\n    <a-typography-paragraph>\n      随着商业化的趋势，越来越多的企业级产品对更好的用户体验有了进一步的要求。带着这样的一个终极目标，我们（蚂蚁金服体验技术部）经过大量的项目实践和总结，逐步打磨出一个服务于企业级产品的设计体系\n      Ant Design。基于\n      <a-typography-text mark>『确定』和『自然』</a-typography-text>\n      的设计价值观，通过模块化的解决方案，降低冗余的生产成本，让设计者专注于\n      <a-typography-text strong>更好的用户体验</a-typography-text>\n      。\n    </a-typography-paragraph>\n    <a-typography-title :level=\"2\">设计资源</a-typography-title>\n    <a-typography-paragraph>\n      我们提供完善的设计原则、最佳实践和设计资源文件（\n      <a-typography-text code>Sketch</a-typography-text>\n      和\n      <a-typography-text code>Axure</a-typography-text>\n      ），来帮助业务快速设计出高质量的产品原型。\n    </a-typography-paragraph>\n\n    <a-typography-paragraph>\n      <ul>\n        <li>\n          <a-typography-link href=\"/docs/resources-cn\">设计资源</a-typography-link>\n        </li>\n      </ul>\n    </a-typography-paragraph>\n\n    <a-typography-paragraph>\n      <blockquote>{{ blockContent }}</blockquote>\n      <pre>{{ blockContent }}</pre>\n    </a-typography-paragraph>\n\n    <a-typography-paragraph>\n      按\n      <a-typography-text keyboard>Esc</a-typography-text>\n      键退出阅读……\n    </a-typography-paragraph>\n  </a-typography>\n</template>\n<script lang=\"ts\" setup>\nconst blockContent = `AntV 是蚂蚁金服全新一代数据可视化解决方案，致力于提供一套简单方便、专业可靠、不限可能的数据可视化最佳实践。得益于丰富的业务场景和用户需求挑战，AntV 经历多年积累与不断打磨，已支撑整个阿里集团内外 20000+ 业务系统，通过了日均千万级 UV 产品的严苛考验。\n我们正在基础图表，图分析，图编辑，地理空间可视化，智能可视化等各个可视化的领域耕耘，欢迎同路人一起前行。`;\n</script>\n"
  },
  {
    "path": "components/typography/demo/ellipsis.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 省略号\n  en-US: Ellipsis\n---\n\n## zh-CN\n\n多行文本省略。你可以通过 `tooltip` 属性配置省略展示内容，大量文本时推荐优先使用 `expandable`。\n\n## en-US\n\nMultiple line ellipsis support. You can use `tooltip` to config ellipsis tooltip. Recommend `expandable` when have lots of content.\n</docs>\n<template>\n  <a-switch v-model:checked=\"ellipsis\" />\n  <a-typography-paragraph\n    :ellipsis=\"ellipsis\"\n    content=\" Ant Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team.\"\n  />\n\n  <a-typography-paragraph\n    :ellipsis=\"ellipsis ? { rows: 2, expandable: true, symbol: 'more' } : false\"\n    content=\"Ant Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team. Ant\n    Design, a design language for background applications, is refined by Ant UED Team.\"\n  />\n\n  <a-typography-text\n    :style=\"ellipsis ? { width: '100px' } : {}\"\n    :ellipsis=\"ellipsis ? { tooltip: 'I am ellipsis now!' } : false\"\n    content=\"Ant Design, a design language for background applications, is refined by Ant UED Team.\"\n  />\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nconst ellipsis = ref(true);\n</script>\n"
  },
  {
    "path": "components/typography/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <Basic />\n    <Ellipsis />\n    <Interactive />\n    <Text />\n    <Suffix />\n    <Titlt />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Ellipsis from './ellipsis.vue';\nimport Interactive from './interactive.vue';\nimport Suffix from './suffix.vue';\nimport Text from './text.vue';\nimport Titlt from './title.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Ellipsis,\n    Interactive,\n    Text,\n    Suffix,\n    Titlt,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/typography/demo/interactive.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 可交互\n  en-US: Interactive\n---\n\n## zh-CN\n\n提供可编辑和可复制等额外的交互能力。\n\n## en-US\n\nProvide additional interactive capacity of editable and copyable.\n</docs>\n<template>\n  <a-typography-paragraph v-model:content=\"editableStr\" editable />\n  <a-typography-paragraph v-model:content=\"customIconStr\" editable>\n    <template #editableIcon><HighlightOutlined /></template>\n    <template #editableTooltip>click to edit text</template>\n  </a-typography-paragraph>\n  Trigger edit with:&nbsp;&nbsp;\n  <a-radio-group\n    :value=\"stateToRadio()\"\n    @change=\"e => (chooseTrigger = radioToState(e.target.value))\"\n  >\n    <a-radio value=\"icon\">icon</a-radio>\n    <a-radio value=\"text\">text</a-radio>\n    <a-radio value=\"both\">both</a-radio>\n  </a-radio-group>\n  <a-typography-paragraph\n    v-model:content=\"clickTriggerStr\"\n    :editable=\"{ triggerType: chooseTrigger }\"\n  >\n    <template #editableTooltip>click to edit text</template>\n  </a-typography-paragraph>\n  <a-typography-paragraph v-model:content=\"customEnterIconStr\" editable>\n    <template #editableIcon><HighlightOutlined /></template>\n    <template #editableTooltip>click to edit text</template>\n    <template #editableEnterIcon=\"{ className }\">\n      <CheckOutlined :class=\"className\" />\n    </template>\n  </a-typography-paragraph>\n  <a-typography-paragraph v-model:content=\"noEnterIconStr\" editable>\n    <template #editableIcon><HighlightOutlined /></template>\n    <template #editableTooltip>click to edit text</template>\n    <template #editableEnterIcon>{{ null }}</template>\n  </a-typography-paragraph>\n  <a-typography-paragraph v-model:content=\"hideTooltipStr\" :editable=\"{ tooltip: false }\" />\n  <a-typography-paragraph\n    v-model:content=\"lengthLimitedStr\"\n    :editable=\"{ maxlength: 50, autoSize: { maxRows: 5, minRows: 3 } }\"\n  />\n\n  <a-typography-paragraph copyable>This is a copyable text.</a-typography-paragraph>\n  <a-typography-paragraph :copyable=\"{ text: 'Hello, Ant Design!' }\">\n    Replace copy text.\n  </a-typography-paragraph>\n  <a-typography-paragraph copyable content=\"Custom Copy icon and replace tooltips text.\">\n    <template #copyableIcon=\"{ copied }\">\n      <SmileOutlined v-if=\"!copied\" key=\"copy-icon\" />\n      <SmileFilled v-else key=\"copied-icon\" />\n    </template>\n    <template #copyableTooltip=\"{ copied }\">\n      <span v-if=\"!copied\" key=\"copy-tooltip\">click here</span>\n      <span v-else key=\"copied-tooltip\">you clicked!!</span>\n    </template>\n  </a-typography-paragraph>\n  <a-typography-paragraph :copyable=\"{ tooltip: false }\">\n    Hide Copy tooltips.\n  </a-typography-paragraph>\n</template>\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport {\n  HighlightOutlined,\n  SmileOutlined,\n  SmileFilled,\n  CheckOutlined,\n} from '@ant-design/icons-vue';\n\nconst editableStr = ref('This is an editable text.');\nwatch(editableStr, () => {\n  console.log('editableStr', editableStr.value);\n});\nconst chooseTrigger = ref<('icon' | 'text')[]>(['icon']);\n\nconst radioToState = (input: string): ('icon' | 'text')[] => {\n  switch (input) {\n    case 'text':\n      return ['text'];\n    case 'both':\n      return ['icon', 'text'];\n    case 'icon':\n    default:\n      return ['icon'];\n  }\n};\n\nconst stateToRadio = () => {\n  if (chooseTrigger.value.indexOf('text') !== -1) {\n    return chooseTrigger.value.indexOf('icon') !== -1 ? 'both' : 'text';\n  }\n  return 'icon';\n};\nconst customIconStr = ref('Custom Edit icon and replace tooltip text.');\nconst hideTooltipStr = ref('Hide Edit tooltip.');\nconst lengthLimitedStr = ref('This is an editable text with limited length.');\nconst clickTriggerStr = ref('Text or icon as trigger - click to start editing.');\nconst customEnterIconStr = ref('Editable text with a custom enter icon in edit field.');\nconst noEnterIconStr = ref('Editable text with no enter icon in edit field.');\n</script>\n"
  },
  {
    "path": "components/typography/demo/suffix.vue",
    "content": "<docs>\n---\norder: 100\ntitle:\n  zh-CN: 后缀\n  en-US: suffix\n---\n\n## zh-CN\n\n添加后缀的省略。\n\n## en-US\n\nadd suffix ellipsis support.\n</docs>\n<template>\n  <a-slider v-model:value=\"rows\" :min=\"1\" :max=\"10\" />\n  <a-typography-paragraph\n    :ellipsis=\"ellipsis\"\n    :title=\"`${article}--William Shakespeare`\"\n    :content=\"article\"\n  ></a-typography-paragraph>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nconst rows = ref(1);\nconst ellipsis = computed(() => {\n  return {\n    rows: rows.value,\n    expandable: true,\n    suffix: '--William Shakespeare',\n    onEllipsis: (ellipsis: boolean) => {\n      console.log('Ellipsis changed:', ellipsis);\n    },\n  };\n});\n\nconst article =\n  \"To be, or not to be, that is a question: Whether it is nobler in the mind to suffer. The slings and arrows of outrageous fortune Or to take arms against a sea of troubles, And by opposing end them? To die: to sleep; No more; and by a sleep to say we end The heart-ache and the thousand natural shocks That flesh is heir to, 'tis a consummation Devoutly to be wish'd. To die, to sleep To sleep- perchance to dream: ay, there's the rub! For in that sleep of death what dreams may come When we have shuffled off this mortal coil, Must give us pause. There 's the respect That makes calamity of so long life\";\n</script>\n"
  },
  {
    "path": "components/typography/demo/text.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 文本与超链接组件\n  en-US: Text and Link Component\n---\n\n## zh-CN\n\n内置不同样式的文本以及超链接组件。\n\n## en-US\n\nProvides multiple types of text and link.\n</docs>\n<template>\n  <a-space direction=\"vertical\">\n    <a-typography-text>Ant Design Vue (default)</a-typography-text>\n    <a-typography-text type=\"secondary\">Ant Design Vue (secondary)</a-typography-text>\n    <a-typography-text type=\"success\">Ant Design Vue (success)</a-typography-text>\n    <a-typography-text type=\"warning\">Ant Design Vue (warning)</a-typography-text>\n    <a-typography-text type=\"danger\">Ant Design Vue (danger)</a-typography-text>\n    <a-typography-text disabled>Ant Design Vue (disabled)</a-typography-text>\n    <a-typography-text mark>Ant Design Vue (mark)</a-typography-text>\n    <a-typography-text code>Ant Design Vue (code)</a-typography-text>\n    <a-typography-text keyboard>Ant Design Vue (keyboard)</a-typography-text>\n    <a-typography-text underline>Ant Design Vue (underline)</a-typography-text>\n    <a-typography-text delete>Ant Design Vue (delete)</a-typography-text>\n    <a-typography-text strong>Ant Design Vue (strong)</a-typography-text>\n    <a-typography-link href=\"https://antdv.com\" target=\"_blank\">\n      Ant Design Vue (Link)\n    </a-typography-link>\n  </a-space>\n</template>\n"
  },
  {
    "path": "components/typography/demo/title.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 标题组件\n  en-US: Title Component\n---\n\n## zh-CN\n\n展示不同级别的标题。\n\n## en-US\n\nDisplay title in different level.\n</docs>\n<template>\n  <a-typography-title>h1. Ant Design Vue</a-typography-title>\n  <a-typography-title :level=\"2\">h2. Ant Design Vue</a-typography-title>\n  <a-typography-title :level=\"3\">h3. Ant Design Vue</a-typography-title>\n  <a-typography-title :level=\"4\">h4. Ant Design Vue</a-typography-title>\n  <a-typography-title :level=\"5\">h5. Ant Design Vue</a-typography-title>\n</template>\n"
  },
  {
    "path": "components/typography/index.en-US.md",
    "content": "---\ncategory: Components\ntype: General\ntitle: Typography\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*MLt3R6m9huoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*LT2jR41Uj2EAAAAAAAAAAAAADrJ8AQ/original\n---\n\nBasic text writing, including headings, body text, lists, and more.\n\n## When To Use\n\n- When need to display a title or paragraph contents in Articles/Blogs/Notes.\n- When you need copyable/editable/ellipsis texts.\n\n## API\n\n### Typography.Text\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| code | Code style | boolean | false |  |\n| content(v-model) | When using ellipsis or editable, use content instead of children | string | - |  |\n| copyable | Whether to be copyable, customize it via setting an object | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | Deleted line style | boolean | false |  |\n| disabled | Disabled content | boolean | false |  |\n| editable | If editable. Can control edit state when is object | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | Display ellipsis when text overflows | boolean | false |  |\n| keyboard | Keyboard style | boolean | false |  |\n| mark | Marked style | boolean | false |  |\n| strong | Bold style | boolean | false |  |\n| type | Content type | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | Underlined style | boolean | false |  |\n\n### Typography.Title\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| code | Code style | boolean | false |  |\n| content(v-model) | When using ellipsis or editable, use content instead of children | string | - |  |\n| copyable | Whether to be copyable, customize it via setting an object | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | Deleted line style | boolean | false |  |\n| disabled | Disabled content | boolean | false |  |\n| editable | If editable. Can control edit state when is object | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | Display ellipsis when text overflows, can configure rows and expandable by using object | boolean \\| [ellipsis](#ellipsis) | false | [ellipsis](#ellipsis) |\n| level | Set content importance. Match with `h1`, `h2`, `h3`, `h4`, `h5` | number: 1, 2, 3, 4, 5 | 1 |  |\n| mark | Marked style | boolean | false |  |\n| type | Content type | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | Underlined style | boolean | false |  |\n\n### Typography.Paragraph\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| code | Code style | boolean | false |  |\n| content(v-model) | When using ellipsis or editable, use content instead of children | string | - |  |\n| copyable | Whether to be copyable, customize it via setting an object | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | Deleted line style | boolean | false |  |\n| disabled | Disabled content | boolean | false |  |\n| editable | If editable. Can control edit state when is object | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | Display ellipsis when text overflows, can configure rows and expandable by using object | boolean \\| [ellipsis](#ellipsis) | false | [ellipsis](#ellipsis) |\n| mark | Marked style | boolean | false |  |\n| strong | Bold style | boolean | false |  |\n| type | Content type | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | Underlined style | boolean | false |  |\n\n### slots\n\n| Name | Description | Property | Default | Version |\n| --- | --- | --- | --- | --- |\n| copyableIcon | Custom copy icon | `{ copied: boolean }` | `copied ? <CheckOutlined /> : <CopyOutlined />` |  |\n| copyableTooltip | Custom tooltip text, hide when `copyable.tooltip = false` | `{ copied: boolean }` | `copied ? 'Copied' : 'Copy'` |  |\n| editableEnterIcon | Custom \"enter\" icon in the edit field | `{className: string}` | `<EnterOutlined />` | 3.0 |\n| editableIcon | Custom editable icon | - | &lt;EditOutlined /> |  |\n| editableTooltip | Custom tooltip text, hide when `editable.tooltip = false` | - | `Edit` |  |\n| ellipsisSymbol | Custom description of ellipsis | - | - |  |\n| ellipsisTooltip | Show tooltip when ellipsis | - | - |  |\n\n### copyable\n\n```json\n  {\n    text: string,\n    onCopy: function(event),\n    tooltip: false,\n  }\n```\n\n| Property | Description             | Type     | Default | Version |\n| -------- | ----------------------- | -------- | ------- | ------- |\n| text     | The text to copy        | string   | -       |         |\n| tooltip  | Whether to show tooltip | boolean  | true    |         |\n| onCopy   | Called when copied text | function | -       |         |\n\n### editable\n\n```json\n  {\n    tooltip: boolean,\n    editing: boolean,\n    maxlength: number,\n    autoSize: boolean | { minRows: number, maxRows: number },\n    onStart: function,\n    onChange: function(string),\n    onCancel: function,\n    onEnd: function,\n    triggerType: ('icon' | 'text')[],\n  }\n```\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| autoSize | `autoSize` attribute of textarea | boolean \\| { minRows: number, maxRows: number } | - |  |\n| editing | Whether to be editable | boolean | false |  |\n| maxlength | `maxlength` attribute of textarea | number | - |  |\n| tooltip | Whether to show tooltip | boolean | true |  |\n| triggerType | Edit mode trigger - icon, text or both (not specifying icon as trigger hides it) | Array&lt;`icon`\\|`text`> | \\[`icon`] |  |\n| onCancel | Called when type ESC to exit editable state | function | - |  |\n| onChange | Called when input at textarea | function(event) | - |  |\n| onEnd | Called when type ENTER to exit editable state | function | - |  |\n| onStart | Called when enter editable state | function | - |  |\n\n### ellipsis\n\n```json\n  {\n    rows: number,\n    expandable: boolean,\n    suffix: string,\n    symbol: string,\n    tooltip: boolean | string,\n    onExpand: function(event),\n    onEllipsis: function(ellipsis),\n  }\n```\n\n| Property   | Description                               | Type               | Default  | Version |\n| ---------- | ----------------------------------------- | ------------------ | -------- | ------- |\n| expandable | Whether to be expandable                  | boolean            | -        |         |\n| rows       | Max rows of content                       | number             | -        |         |\n| suffix     | Suffix of ellipsis content                | string             | -        |         |\n| symbol     | Custom description of ellipsis            | string             | `Expand` |         |\n| tooltip    | Show tooltip when ellipsis                | boolean \\| string  | -        |         |\n| onEllipsis | Called when enter or leave ellipsis state | function(ellipsis) | -        |         |\n| onExpand   | Called when expand content                | function(event)    | -        |         |\n"
  },
  {
    "path": "components/typography/index.tsx",
    "content": "import type { App, Plugin } from 'vue';\nimport Base from './Base';\nimport Link from './Link';\nimport Paragraph from './Paragraph';\nimport Text from './Text';\nimport Title from './Title';\nimport Typography from './Typography';\n\nexport type { TypographyProps } from './Typography';\n\nTypography.Text = Text;\nTypography.Title = Title;\nTypography.Paragraph = Paragraph;\nTypography.Link = Link;\nTypography.Base = Base;\n\nTypography.install = function (app: App) {\n  app.component(Typography.name, Typography);\n  app.component(Typography.Text.displayName, Text);\n  app.component(Typography.Title.displayName, Title);\n  app.component(Typography.Paragraph.displayName, Paragraph);\n  app.component(Typography.Link.displayName, Link);\n  return app;\n};\n\nexport {\n  Text as TypographyText,\n  Title as TypographyTitle,\n  Paragraph as TypographyParagraph,\n  Link as TypographyLink,\n};\n\nexport default Typography as typeof Typography &\n  Plugin & {\n    readonly Text: typeof Text;\n    readonly Title: typeof Title;\n    readonly Paragraph: typeof Paragraph;\n    readonly Link: typeof Link;\n    readonly Base: typeof Base;\n  };\n"
  },
  {
    "path": "components/typography/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 排版\ntype: 通用\ntitle: Typography\ncols: 1\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*MLt3R6m9huoAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*LT2jR41Uj2EAAAAAAAAAAAAADrJ8AQ/original\n---\n\n文本的基本格式。\n\n## 何时使用\n\n- 当需要展示标题、段落、列表内容时使用，如文章/博客/日志的文本样式。\n- 当需要一列基于文本的基础操作时，如拷贝/省略/可编辑。\n\n## API\n\n### Typography.Text\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| code | 添加代码样式 | boolean | false |  |\n| content(v-model) | 当使用 ellipsis 或 editable 时，使用 content 代替 children | string | - |  |\n| copyable | 是否可拷贝，为对象时可进行各种自定义 | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | 添加删除线样式 | boolean | false |  |\n| disabled | 禁用文本 | boolean | false |  |\n| editable | 是否可编辑，为对象时可对编辑进行控制 | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | 自动溢出省略 | boolean | false |  |\n| keyboard | 添加键盘样式 | boolean | false |  |\n| mark | 添加标记样式 | boolean | false |  |\n| strong | 是否加粗 | boolean | false |  |\n| type | 文本类型 | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | 添加下划线样式 | boolean | false |  |\n\n### Typography.Title\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| code | 添加代码样式 | boolean | false |  |\n| content(v-model) | 当使用 ellipsis 或 editable 时，使用 content 代替 children | string | - |  |\n| copyable | 是否可拷贝，为对象时可进行各种自定义 | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | 添加删除线样式 | boolean | false |  |\n| disabled | 禁用文本 | boolean | false |  |\n| editable | 是否可编辑，为对象时可对编辑进行控制 | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | 自动溢出省略，为对象时可设置省略行数、是否可展开、添加后缀等 | boolean \\| [ellipsis](#ellipsis) | false | [ellipsis](#ellipsis) |\n| level | 重要程度，相当于 `h1`、`h2`、`h3`、`h4`、`h5` | number: 1, 2, 3, 4, 5 | 1 |  |\n| mark | 添加标记样式 | boolean | false |  |\n| type | 文本类型 | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | 添加下划线样式 | boolean | false |  |\n\n### Typography.Paragraph\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| code | 添加代码样式 | boolean | false |  |\n| content(v-model) | 当使用 ellipsis 或 editable 时，使用 content 代替 children | string | - |  |\n| copyable | 是否可拷贝，为对象时可进行各种自定义 | boolean \\| [copyable](#copyable) | false | [copyable](#copyable) |\n| delete | 添加删除线样式 | boolean | false |  |\n| disabled | 禁用文本 | boolean | false |  |\n| editable | 是否可编辑，为对象时可对编辑进行控制 | boolean \\| [editable](#editable) | false | [editable](#editable) |\n| ellipsis | 自动溢出省略，为对象时可设置省略行数、是否可展开、添加后缀等 | boolean \\| [ellipsis](#ellipsis) | false | [ellipsis](#ellipsis) |\n| mark | 添加标记样式 | boolean | false |  |\n| strong | 是否加粗 | boolean | false |  |\n| type | 文本类型 | `secondary` \\| `success` \\| `warning` \\| `danger` | - |  |\n| underline | 添加下划线样式 | boolean | false |  |\n\n### slots\n\n| 名称 | 说明 | 参数 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| copyableIcon | 自定义拷贝图标 | `{ copied: boolean }` | `copied ? <CheckOutlined /> : <CopyOutlined />` |  |\n| copyableTooltip | 自定义提示文案，当 `copyable.tooltip = false` 时关闭 | `{ copied: boolean }` | `copied ? '复制成功' : '复制'` |  |\n| editableEnterIcon | 在编辑段中自定义“enter”图标 | `{className: string}` | `<EnterOutlined />` | 3.0 |\n| editableIcon | 自定义编辑图标 | - | &lt;EditOutlined /> |  |\n| editableTooltip | 自定义提示文本，当 `editable.tooltip = false` 时关闭 | - | `编辑` |  |\n| ellipsisSymbol | 自定义展开描述文案 | - | - |  |\n| ellipsisTooltip | 省略时，展示提示信息 | - | - |  |\n\n### copyable\n\n```json\n  {\n    text: string,\n    onCopy: function(event),\n    tooltip: false,\n  }\n```\n\n| 参数    | 说明                 | 类型     | 默认值 | 版本 |\n| ------- | -------------------- | -------- | ------ | ---- |\n| text    | 拷贝到剪切板里的文本 | string   | -      |      |\n| tooltip | 是否展示提示文本     | boolean  | true   |      |\n| onCopy  | 拷贝成功的回调函数   | function | -      |      |\n\n### editable\n\n```json\n  {\n    tooltip: boolean,\n    editing: boolean,\n    maxlength: number,\n    autoSize: boolean | { minRows: number, maxRows: number },\n    onStart: function,\n    onChange: function(string),\n    onCancel: function,\n    onEnd: function,\n    triggerType: ('icon' | 'text')[],\n  }\n```\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| autoSize | 自动 resize 文本域 | boolean \\| { minRows: number, maxRows: number } | - |  |\n| editing | 控制是否是编辑中状态 | boolean | false |  |\n| maxlength | 编辑中文本域最大长度 | number | - |  |\n| tooltip | 是否展示提示文本 | boolean | true |  |\n| triggerType | 编辑模式触发器类型，图标、文本或者两者都设置（不设置图标作为触发器时它会隐藏） | Array&lt;`icon`\\|`text`> | \\[`icon`] |  |\n| onCancel | 按 ESC 退出编辑状态时触发 | function | - |  |\n| onChange | 文本域编辑时触发 | function(event) | - |  |\n| onEnd | 按 ENTER 结束编辑状态时触发 | function | - |  |\n| onStart | 进入编辑中状态时触发 | function | - |  |\n\n### ellipsis\n\n```json\n  {\n    rows: number,\n    expandable: boolean,\n    suffix: string,\n    symbol: string,\n    tooltip: boolean,\n    onExpand: function(event),\n    onEllipsis: function(ellipsis),\n  }\n```\n\n| 参数       | 说明                 | 类型               | 默认值 | 版本 |\n| ---------- | -------------------- | ------------------ | ------ | ---- |\n| expandable | 是否可展开           | boolean            | -      |      |\n| rows       | 最多显示的行数       | number             | -      |      |\n| suffix     | 自定义省略内容后缀   | string             | -      |      |\n| symbol     | 自定义展开描述文案   | string             | `展开` |      |\n| tooltip    | 省略时，展示提示信息 | boolean \\| string  | -      |      |\n| onEllipsis | 触发省略时的回调     | function(ellipsis) | -      |      |\n| onExpand   | 点击展开时的回调     | function(event)    | -      |      |\n"
  },
  {
    "path": "components/typography/style/index.tsx",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook } from '../../theme/internal';\nimport {\n  getCopiableStyles,\n  getEditableStyles,\n  getEllipsisStyles,\n  getLinkStyles,\n  getResetStyles,\n  getTitleStyles,\n} from './mixins';\nimport { operationUnit } from '../../style';\n\n/** Component only token. Which will handle additional calculation of alias token */\nexport interface ComponentToken {\n  sizeMarginHeadingVerticalStart: number | string;\n  sizeMarginHeadingVerticalEnd: number | string;\n}\n\nexport type TypographyToken = FullToken<'Typography'>;\n\nconst genTypographyStyle: GenerateStyle<TypographyToken> = token => {\n  const { componentCls, sizeMarginHeadingVerticalStart } = token;\n\n  return {\n    [componentCls]: {\n      color: token.colorText,\n      wordBreak: 'break-word',\n      lineHeight: token.lineHeight,\n      [`&${componentCls}-secondary`]: {\n        color: token.colorTextDescription,\n      },\n\n      [`&${componentCls}-success`]: {\n        color: token.colorSuccess,\n      },\n\n      [`&${componentCls}-warning`]: {\n        color: token.colorWarning,\n      },\n\n      [`&${componentCls}-danger`]: {\n        color: token.colorError,\n        'a&:active, a&:focus': {\n          color: token.colorErrorActive,\n        },\n        'a&:hover': {\n          color: token.colorErrorHover,\n        },\n      },\n\n      [`&${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        userSelect: 'none',\n      },\n\n      [`\n        div&,\n        p\n      `]: {\n        marginBottom: '1em',\n      },\n\n      ...getTitleStyles(token),\n\n      [`\n      & + h1${componentCls},\n      & + h2${componentCls},\n      & + h3${componentCls},\n      & + h4${componentCls},\n      & + h5${componentCls}\n      `]: {\n        marginTop: sizeMarginHeadingVerticalStart,\n      },\n\n      [`\n      div,\n      ul,\n      li,\n      p,\n      h1,\n      h2,\n      h3,\n      h4,\n      h5`]: {\n        [`\n        + h1,\n        + h2,\n        + h3,\n        + h4,\n        + h5\n        `]: {\n          marginTop: sizeMarginHeadingVerticalStart,\n        },\n      },\n\n      ...getResetStyles(),\n\n      ...getLinkStyles(token),\n\n      // Operation\n      [`\n        ${componentCls}-expand,\n        ${componentCls}-edit,\n        ${componentCls}-copy\n      `]: {\n        ...operationUnit(token),\n        marginInlineStart: token.marginXXS,\n      },\n\n      ...getEditableStyles(token),\n\n      ...getCopiableStyles(token),\n\n      ...getEllipsisStyles(),\n\n      '&-rtl': {\n        direction: 'rtl',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Typography', token => [genTypographyStyle(token)], {\n  sizeMarginHeadingVerticalStart: '1.2em',\n  sizeMarginHeadingVerticalEnd: '0.5em',\n});\n"
  },
  {
    "path": "components/typography/style/mixins.tsx",
    "content": "/*\n.typography-title(@fontSize; @fontWeight; @lineHeight; @headingColor; @headingMarginBottom;) {\n  margin-bottom: @headingMarginBottom;\n  color: @headingColor;\n  font-weight: @fontWeight;\n  fontSize: @fontSize;\n  line-height: @lineHeight;\n}\n*/\nimport { gold } from '@ant-design/colors';\nimport type { CSSObject } from '../../_util/cssinjs';\nimport type { TypographyToken } from '.';\nimport { initInputToken } from '../../input/style';\nimport type { GenerateStyle } from '../../theme/internal';\nimport { operationUnit } from '../../style';\n\n// eslint-disable-next-line import/prefer-default-export\nconst getTitleStyle = (\n  fontSize: number,\n  lineHeight: number,\n  color: string,\n  token: TypographyToken,\n) => {\n  const { sizeMarginHeadingVerticalEnd, fontWeightStrong } = token;\n\n  return {\n    marginBottom: sizeMarginHeadingVerticalEnd,\n    color,\n    fontWeight: fontWeightStrong,\n    fontSize,\n    lineHeight,\n  };\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getTitleStyles: GenerateStyle<TypographyToken, CSSObject> = token => {\n  const headings = [1, 2, 3, 4, 5] as const;\n\n  const styles = {} as CSSObject;\n  headings.forEach(headingLevel => {\n    styles[\n      `\n      h${headingLevel}&,\n      div&-h${headingLevel},\n      div&-h${headingLevel} > textarea,\n      h${headingLevel}\n    `\n    ] = getTitleStyle(\n      token[`fontSizeHeading${headingLevel}`],\n      token[`lineHeightHeading${headingLevel}`],\n      token.colorTextHeading,\n      token,\n    );\n  });\n  return styles;\n};\n\nexport const getLinkStyles: GenerateStyle<TypographyToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  return {\n    'a&, a': {\n      ...operationUnit(token),\n      textDecoration: token.linkDecoration,\n\n      '&:active, &:hover': {\n        textDecoration: token.linkHoverDecoration,\n      },\n\n      [`&[disabled], &${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n\n        '&:active, &:hover': {\n          color: token.colorTextDisabled,\n        },\n\n        '&:active': {\n          pointerEvents: 'none',\n        },\n      },\n    },\n  };\n};\n\nexport const getResetStyles = (): CSSObject => ({\n  code: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.2em 0.1em',\n    fontSize: '85%',\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3,\n  },\n\n  kbd: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.15em 0.1em',\n    fontSize: '90%',\n    background: 'rgba(150, 150, 150, 0.06)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderBottomWidth: 2,\n    borderRadius: 3,\n  },\n\n  mark: {\n    padding: 0,\n    // FIXME hardcode in v4\n    backgroundColor: gold[2],\n  },\n\n  'u, ins': {\n    textDecoration: 'underline',\n    textDecorationSkipInk: 'auto',\n  },\n\n  's, del': {\n    textDecoration: 'line-through',\n  },\n\n  strong: {\n    fontWeight: 600,\n  },\n\n  // list\n  'ul, ol': {\n    marginInline: 0,\n    marginBlock: '0 1em',\n    padding: 0,\n\n    li: {\n      marginInline: '20px 0',\n      marginBlock: 0,\n      paddingInline: '4px 0',\n      paddingBlock: 0,\n    },\n  },\n\n  ul: {\n    listStyleType: 'circle',\n\n    ul: {\n      listStyleType: 'disc',\n    },\n  },\n\n  ol: {\n    listStyleType: 'decimal',\n  },\n\n  // pre & block\n  'pre, blockquote': {\n    margin: '1em 0',\n  },\n\n  pre: {\n    padding: '0.4em 0.6em',\n    whiteSpace: 'pre-wrap',\n    wordWrap: 'break-word',\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3,\n\n    // Compatible for marked\n    code: {\n      display: 'inline',\n      margin: 0,\n      padding: 0,\n      fontSize: 'inherit',\n      fontFamily: 'inherit',\n      background: 'transparent',\n      border: 0,\n    },\n  },\n\n  blockquote: {\n    paddingInline: '0.6em 0',\n    paddingBlock: 0,\n    borderInlineStart: '4px solid rgba(100, 100, 100, 0.2)',\n    opacity: 0.85,\n  },\n});\n\nexport const getEditableStyles: GenerateStyle<TypographyToken, CSSObject> = token => {\n  const { componentCls } = token;\n\n  const inputToken = initInputToken(token);\n  const inputShift = inputToken.inputPaddingVertical + 1;\n  return {\n    '&-edit-content': {\n      position: 'relative',\n\n      'div&': {\n        insetInlineStart: -token.paddingSM,\n        marginTop: -inputShift,\n        marginBottom: `calc(1em - ${inputShift}px)`,\n      },\n\n      [`${componentCls}-edit-content-confirm`]: {\n        position: 'absolute',\n        insetInlineEnd: token.marginXS + 2,\n        insetBlockEnd: token.marginXS,\n        color: token.colorTextDescription,\n        // default style\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n        fontStyle: 'normal',\n        pointerEvents: 'none',\n      },\n\n      textarea: {\n        margin: '0!important',\n        // Fix Editable Textarea flash in Firefox\n        MozTransition: 'none',\n        height: '1em',\n      },\n    },\n  };\n};\n\nexport const getCopiableStyles: GenerateStyle<TypographyToken, CSSObject> = token => ({\n  '&-copy-success': {\n    [`\n    &,\n    &:hover,\n    &:focus`]: {\n      color: token.colorSuccess,\n    },\n  },\n});\n\nexport const getEllipsisStyles = (): CSSObject => ({\n  [`\n  a&-ellipsis,\n  span&-ellipsis\n  `]: {\n    display: 'inline-block',\n    maxWidth: '100%',\n  },\n\n  '&-single-line': {\n    whiteSpace: 'nowrap',\n  },\n\n  '&-ellipsis-single-line': {\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n\n    // https://blog.csdn.net/iefreer/article/details/50421025\n    'a&, span&': {\n      verticalAlign: 'bottom',\n    },\n  },\n\n  '&-ellipsis-multiple-line': {\n    display: '-webkit-box',\n    overflow: 'hidden',\n    WebkitLineClamp: 3,\n    WebkitBoxOrient: 'vertical',\n  },\n});\n"
  },
  {
    "path": "components/typography/util.tsx",
    "content": "import type { CSSProperties, VNodeTypes } from 'vue';\nimport { createApp } from 'vue';\nimport { styleToString } from '../vc-util/Dom/css';\n\ninterface MeasureResult {\n  finished: boolean;\n  vNode: VNodeTypes;\n}\ninterface Option {\n  rows: number;\n  suffix?: string;\n}\n\n// We only handle element & text node.\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nlet ellipsisContainer: HTMLParagraphElement;\n\nconst wrapperStyle: CSSProperties = {\n  padding: 0,\n  margin: 0,\n  display: 'inline',\n  lineHeight: 'inherit',\n};\n\nfunction resetDomStyles(target: HTMLElement, origin: HTMLElement) {\n  target.setAttribute('aria-hidden', 'true');\n  const originStyle = window.getComputedStyle(origin);\n  const originCSS = styleToString(originStyle);\n  // Set shadow\n  target.setAttribute('style', originCSS);\n  target.style.position = 'fixed';\n  target.style.left = '0';\n  target.style.height = 'auto';\n  target.style.minHeight = 'auto';\n  target.style.maxHeight = 'auto';\n  target.style.paddingTop = '0';\n  target.style.paddingBottom = '0';\n  target.style.borderTopWidth = '0';\n  target.style.borderBottomWidth = '0';\n  target.style.top = '-999999px';\n  target.style.zIndex = '-1000';\n  // clean up css overflow\n  target.style.textOverflow = 'clip';\n  target.style.whiteSpace = 'normal';\n  (target.style as any).webkitLineClamp = 'none';\n}\n\nfunction getRealLineHeight(originElement: HTMLElement) {\n  const heightContainer = document.createElement('div');\n  resetDomStyles(heightContainer, originElement);\n  heightContainer.appendChild(document.createTextNode('text'));\n  document.body.appendChild(heightContainer);\n  // The element real height is always less than multiple of line-height\n  // Use getBoundingClientRect to get actual single row height of the element\n  const realHeight = heightContainer.getBoundingClientRect().height;\n  document.body.removeChild(heightContainer);\n  return realHeight;\n}\n\nexport default (\n  originElement: HTMLElement,\n  option: Option,\n  content: string,\n  fixedContent: VNodeTypes[],\n  ellipsisStr: string,\n): {\n  content: VNodeTypes;\n  text: string;\n  ellipsis: boolean;\n} => {\n  if (!ellipsisContainer) {\n    ellipsisContainer = document.createElement('div');\n    ellipsisContainer.setAttribute('aria-hidden', 'true');\n    document.body.appendChild(ellipsisContainer);\n  }\n\n  const { rows, suffix = '' } = option;\n  const lineHeight = getRealLineHeight(originElement);\n  const maxHeight = Math.round(lineHeight * rows * 100) / 100;\n\n  resetDomStyles(ellipsisContainer, originElement);\n\n  // Render in the fake container\n  const vm = createApp({\n    render() {\n      return (\n        <div style={wrapperStyle}>\n          <span style={wrapperStyle}>\n            {content}\n            {suffix}\n          </span>\n          <span style={wrapperStyle}>{fixedContent}</span>\n        </div>\n      );\n    },\n  });\n\n  vm.mount(ellipsisContainer);\n\n  // Check if ellipsis in measure div is height enough for content\n  function inRange() {\n    const currentHeight = Math.round(ellipsisContainer.getBoundingClientRect().height * 100) / 100;\n    return currentHeight - 0.1 <= maxHeight; // -.1 for firefox\n  }\n\n  // Skip ellipsis if already match\n  if (inRange()) {\n    vm.unmount();\n    return { content, text: ellipsisContainer.innerHTML, ellipsis: false };\n  }\n  const childNodes = Array.prototype.slice\n    .apply(ellipsisContainer.childNodes[0].childNodes[0].cloneNode(true).childNodes)\n    .filter(({ nodeType, data }) => nodeType !== COMMENT_NODE && data !== '');\n  const fixedNodes = Array.prototype.slice.apply(\n    ellipsisContainer.childNodes[0].childNodes[1].cloneNode(true).childNodes,\n  );\n\n  vm.unmount();\n\n  // ========================= Find match ellipsis content =========================\n  const ellipsisChildren = [];\n  ellipsisContainer.innerHTML = '';\n\n  // Create origin content holder\n  const ellipsisContentHolder = document.createElement('span');\n  ellipsisContainer.appendChild(ellipsisContentHolder);\n  const ellipsisTextNode = document.createTextNode(ellipsisStr + suffix);\n  ellipsisContentHolder.appendChild(ellipsisTextNode);\n\n  fixedNodes.forEach(childNode => {\n    ellipsisContainer.appendChild(childNode);\n  });\n\n  // Append before fixed nodes\n  function appendChildNode(node: ChildNode) {\n    ellipsisContentHolder.insertBefore(node, ellipsisTextNode);\n  }\n\n  // Get maximum text\n  function measureText(\n    textNode: Text,\n    fullText: string,\n    startLoc = 0,\n    endLoc = fullText.length,\n    lastSuccessLoc = 0,\n  ): MeasureResult {\n    const midLoc = Math.floor((startLoc + endLoc) / 2);\n    const currentText = fullText.slice(0, midLoc);\n    textNode.textContent = currentText;\n\n    if (startLoc >= endLoc - 1) {\n      // Loop when step is small\n      for (let step = endLoc; step >= startLoc; step -= 1) {\n        const currentStepText = fullText.slice(0, step);\n        textNode.textContent = currentStepText;\n\n        if (inRange() || !currentStepText) {\n          return step === fullText.length\n            ? {\n                finished: false,\n                vNode: fullText,\n              }\n            : {\n                finished: true,\n                vNode: currentStepText,\n              };\n        }\n      }\n    }\n\n    if (inRange()) {\n      return measureText(textNode, fullText, midLoc, endLoc, midLoc);\n    }\n    return measureText(textNode, fullText, startLoc, midLoc, lastSuccessLoc);\n  }\n\n  function measureNode(childNode: ChildNode): MeasureResult {\n    const type = childNode.nodeType;\n    // console.log('type', type);\n    // if (type === ELEMENT_NODE) {\n    //   // We don't split element, it will keep if whole element can be displayed.\n    //   appendChildNode(childNode);\n    //   if (inRange()) {\n    //     return {\n    //       finished: false,\n    //       vNode: contentList[index],\n    //     };\n    //   }\n\n    //   // Clean up if can not pull in\n    //   ellipsisContentHolder.removeChild(childNode);\n    //   return {\n    //     finished: true,\n    //     vNode: null,\n    //   };\n    // }\n    if (type === TEXT_NODE) {\n      const fullText = childNode.textContent || '';\n      const textNode = document.createTextNode(fullText);\n      appendChildNode(textNode);\n      return measureText(textNode, fullText);\n    }\n\n    // Not handle other type of content\n    return {\n      finished: false,\n      vNode: null,\n    };\n  }\n\n  childNodes.some(childNode => {\n    const { finished, vNode } = measureNode(childNode);\n    if (vNode) {\n      ellipsisChildren.push(vNode);\n    }\n    return finished;\n  });\n\n  return {\n    content: ellipsisChildren,\n    text: ellipsisContainer.innerHTML,\n    ellipsis: true,\n  };\n};\n"
  },
  {
    "path": "components/upload/Dragger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport Upload from './Upload';\nimport { uploadProps } from './interface';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AUploadDragger',\n  inheritAttrs: false,\n  props: uploadProps(),\n  setup(props, { slots, attrs }) {\n    return () => {\n      const { height, ...restProps } = props;\n      const { style, ...restAttrs } = attrs;\n      const draggerProps = {\n        ...restProps,\n        ...restAttrs,\n        type: 'drag',\n        style: { ...(style as any), height: typeof height === 'number' ? `${height}px` : height },\n      } as any;\n      return <Upload {...draggerProps} v-slots={slots}></Upload>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/upload/Upload.tsx",
    "content": "import type { UploadProps as RcUploadProps } from '../vc-upload';\nimport VcUpload from '../vc-upload';\nimport UploadList from './UploadList';\nimport type { UploadFile, UploadChangeParam, ShowUploadListInterface, FileType } from './interface';\nimport { uploadProps } from './interface';\nimport { file2Obj, getFileItem, removeFileItem, updateFileList } from './utils';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale/en_US';\nimport type { CSSProperties } from 'vue';\nimport { computed, defineComponent, onMounted, ref, toRef } from 'vue';\nimport { flattenChildren, initDefaultProps } from '../_util/props-util';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport devWarning from '../vc-util/devWarning';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport type { VueNode } from '../_util/type';\nimport classNames from '../_util/classNames';\nimport { useInjectFormItemContext } from '../form';\n\n// CSSINJS\nimport useStyle from './style';\nimport { useInjectDisabled } from '../config-provider/DisabledContext';\n\nexport const LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AUpload',\n  inheritAttrs: false,\n  props: initDefaultProps(uploadProps(), {\n    type: 'select',\n    multiple: false,\n    action: '',\n    data: {},\n    accept: '',\n    showUploadList: true,\n    listType: 'text', // or picture\n    supportServerRender: true,\n  }),\n  setup(props, { slots, attrs, expose }) {\n    const formItemContext = useInjectFormItemContext();\n    const { prefixCls, direction, disabled } = useConfigInject('upload', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? disabledContext.value);\n\n    const [mergedFileList, setMergedFileList] = useMergedState(props.defaultFileList || [], {\n      value: toRef(props, 'fileList'),\n      postState: list => {\n        const timestamp = Date.now();\n        return (list ?? []).map((file, index) => {\n          if (!file.uid && !Object.isFrozen(file)) {\n            file.uid = `__AUTO__${timestamp}_${index}__`;\n          }\n          return file;\n        });\n      },\n    });\n    const dragState = ref('drop');\n\n    const upload = ref(null);\n    onMounted(() => {\n      devWarning(\n        props.fileList !== undefined || attrs.value === undefined,\n        'Upload',\n        '`value` is not a valid prop, do you mean `fileList`?',\n      );\n\n      devWarning(\n        props.transformFile === undefined,\n        'Upload',\n        '`transformFile` is deprecated. Please use `beforeUpload` directly.',\n      );\n      devWarning(\n        props.remove === undefined,\n        'Upload',\n        '`remove` props is deprecated. Please use `remove` event.',\n      );\n    });\n\n    const onInternalChange = (\n      file: UploadFile,\n      changedFileList: UploadFile[],\n      event?: { percent: number },\n    ) => {\n      let cloneList = [...changedFileList];\n\n      // Cut to match count\n      if (props.maxCount === 1) {\n        cloneList = cloneList.slice(-1);\n      } else if (props.maxCount) {\n        cloneList = cloneList.slice(0, props.maxCount);\n      }\n\n      setMergedFileList(cloneList);\n\n      const changeInfo: UploadChangeParam<UploadFile> = {\n        file: file as UploadFile,\n        fileList: cloneList,\n      };\n\n      if (event) {\n        changeInfo.event = event;\n      }\n      props['onUpdate:fileList']?.(changeInfo.fileList);\n      props.onChange?.(changeInfo);\n      formItemContext.onFieldChange();\n    };\n\n    const mergedBeforeUpload = async (file: FileType, fileListArgs: FileType[]) => {\n      const { beforeUpload, transformFile } = props;\n\n      let parsedFile: FileType | Blob | string = file;\n      if (beforeUpload) {\n        const result = await beforeUpload(file, fileListArgs);\n\n        if (result === false) {\n          return false;\n        }\n\n        // Hack for LIST_IGNORE, we add additional info to remove from the list\n        delete (file as any)[LIST_IGNORE];\n        if ((result as any) === LIST_IGNORE) {\n          Object.defineProperty(file, LIST_IGNORE, {\n            value: true,\n            configurable: true,\n          });\n          return false;\n        }\n\n        if (typeof result === 'object' && result) {\n          parsedFile = result as File;\n        }\n      }\n\n      if (transformFile) {\n        parsedFile = await transformFile(parsedFile as any);\n      }\n\n      return parsedFile as File;\n    };\n\n    const onBatchStart: RcUploadProps['onBatchStart'] = batchFileInfoList => {\n      // Skip file which marked as `LIST_IGNORE`, these file will not add to file list\n      const filteredFileInfoList = batchFileInfoList.filter(\n        info => !(info.file as any)[LIST_IGNORE],\n      );\n\n      // Nothing to do since no file need upload\n      if (!filteredFileInfoList.length) {\n        return;\n      }\n\n      const objectFileList = filteredFileInfoList.map(info => file2Obj(info.file as FileType));\n\n      // Concat new files with prev files\n      let newFileList = [...mergedFileList.value];\n\n      objectFileList.forEach(fileObj => {\n        // Replace file if exist\n        newFileList = updateFileList(fileObj, newFileList);\n      });\n\n      objectFileList.forEach((fileObj, index) => {\n        // Repeat trigger `onChange` event for compatible\n        let triggerFileObj: UploadFile = fileObj;\n\n        if (!filteredFileInfoList[index].parsedFile) {\n          // `beforeUpload` return false\n          const { originFileObj } = fileObj;\n          let clone;\n\n          try {\n            clone = new File([originFileObj], originFileObj.name, {\n              type: originFileObj.type,\n            }) as any as UploadFile;\n          } catch (e) {\n            clone = new Blob([originFileObj], {\n              type: originFileObj.type,\n            }) as any as UploadFile;\n            clone.name = originFileObj.name;\n            clone.lastModifiedDate = new Date();\n            clone.lastModified = new Date().getTime();\n          }\n\n          clone.uid = fileObj.uid;\n          triggerFileObj = clone;\n        } else {\n          // Inject `uploading` status\n          fileObj.status = 'uploading';\n        }\n\n        onInternalChange(triggerFileObj, newFileList);\n      });\n    };\n\n    const onSuccess = (response: any, file: FileType, xhr: any) => {\n      try {\n        if (typeof response === 'string') {\n          response = JSON.parse(response);\n        }\n      } catch (e) {\n        /* do nothing */\n      }\n\n      // removed\n      if (!getFileItem(file, mergedFileList.value)) {\n        return;\n      }\n\n      const targetItem = file2Obj(file);\n      targetItem.status = 'done';\n      targetItem.percent = 100;\n      targetItem.response = response;\n      targetItem.xhr = xhr;\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList);\n    };\n\n    const onProgress = (e: { percent: number }, file: FileType) => {\n      // removed\n      if (!getFileItem(file, mergedFileList.value)) {\n        return;\n      }\n\n      const targetItem = file2Obj(file);\n      targetItem.status = 'uploading';\n      targetItem.percent = e.percent;\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList, e);\n    };\n\n    const onError = (error: Error, response: any, file: FileType) => {\n      // removed\n      if (!getFileItem(file, mergedFileList.value)) {\n        return;\n      }\n\n      const targetItem = file2Obj(file);\n      targetItem.error = error;\n      targetItem.response = response;\n      targetItem.status = 'error';\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList);\n    };\n\n    const handleRemove = (file: UploadFile) => {\n      let currentFile: UploadFile;\n      const mergedRemove = props.onRemove || props.remove;\n      Promise.resolve(typeof mergedRemove === 'function' ? mergedRemove(file) : mergedRemove).then(\n        ret => {\n          // Prevent removing file\n          if (ret === false) {\n            return;\n          }\n\n          const removedFileList = removeFileItem(file, mergedFileList.value);\n\n          if (removedFileList) {\n            currentFile = { ...file, status: 'removed' };\n            mergedFileList.value?.forEach(item => {\n              const matchKey = currentFile.uid !== undefined ? 'uid' : 'name';\n              if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) {\n                item.status = 'removed';\n              }\n            });\n            upload.value?.abort(currentFile);\n\n            onInternalChange(currentFile, removedFileList);\n          }\n        },\n      );\n    };\n\n    const onFileDrop = (e: DragEvent) => {\n      dragState.value = e.type;\n      if (e.type === 'drop') {\n        props.onDrop?.(e);\n      }\n    };\n    expose({\n      onBatchStart,\n      onSuccess,\n      onProgress,\n      onError,\n      fileList: mergedFileList,\n      upload,\n    });\n\n    const [locale] = useLocaleReceiver(\n      'Upload',\n      defaultLocale.Upload,\n      computed(() => props.locale),\n    );\n    const renderUploadList = (button?: () => VueNode, buttonVisible?: boolean) => {\n      const {\n        removeIcon,\n        previewIcon,\n        downloadIcon,\n        previewFile,\n        onPreview,\n        onDownload,\n        isImageUrl,\n        progress,\n        itemRender,\n        iconRender,\n        showUploadList,\n      } = props;\n      const { showDownloadIcon, showPreviewIcon, showRemoveIcon } =\n        typeof showUploadList === 'boolean' ? ({} as ShowUploadListInterface) : showUploadList;\n      return showUploadList ? (\n        <UploadList\n          prefixCls={prefixCls.value}\n          listType={props.listType}\n          items={mergedFileList.value}\n          previewFile={previewFile}\n          onPreview={onPreview}\n          onDownload={onDownload}\n          onRemove={handleRemove}\n          showRemoveIcon={!mergedDisabled.value && showRemoveIcon}\n          showPreviewIcon={showPreviewIcon}\n          showDownloadIcon={showDownloadIcon}\n          removeIcon={removeIcon}\n          previewIcon={previewIcon}\n          downloadIcon={downloadIcon}\n          iconRender={iconRender}\n          locale={locale.value}\n          isImageUrl={isImageUrl}\n          progress={progress}\n          itemRender={itemRender}\n          appendActionVisible={buttonVisible}\n          appendAction={button}\n          v-slots={{ ...slots }}\n        />\n      ) : (\n        button?.()\n      );\n    };\n    return () => {\n      const { listType, type } = props;\n      const { class: className, style: styleName, ...transAttrs } = attrs;\n      const rcUploadProps = {\n        onBatchStart,\n        onError,\n        onProgress,\n        onSuccess,\n        ...transAttrs,\n        ...(props as RcUploadProps),\n        id: props.id ?? formItemContext.id.value,\n        prefixCls: prefixCls.value,\n        beforeUpload: mergedBeforeUpload,\n        onChange: undefined,\n        disabled: mergedDisabled.value,\n      };\n      delete (rcUploadProps as any).remove;\n\n      // Remove id to avoid open by label when trigger is hidden\n      // !children: https://github.com/ant-design/ant-design/issues/14298\n      // disabled: https://github.com/ant-design/ant-design/issues/16478\n      //           https://github.com/ant-design/ant-design/issues/24197\n      if (!slots.default || mergedDisabled.value) {\n        delete rcUploadProps.id;\n      }\n\n      const rtlCls = {\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      };\n\n      if (type === 'drag') {\n        const dragCls = classNames(\n          prefixCls.value,\n          {\n            [`${prefixCls.value}-drag`]: true,\n            [`${prefixCls.value}-drag-uploading`]: mergedFileList.value.some(\n              file => file.status === 'uploading',\n            ),\n            [`${prefixCls.value}-drag-hover`]: dragState.value === 'dragover',\n            [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n            [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          },\n          attrs.class,\n          hashId.value,\n        );\n\n        return wrapSSR(\n          <span\n            {...attrs}\n            class={classNames(`${prefixCls.value}-wrapper`, rtlCls, className, hashId.value)}\n          >\n            <div\n              class={dragCls}\n              onDrop={onFileDrop}\n              onDragover={onFileDrop}\n              onDragleave={onFileDrop}\n              style={attrs.style as CSSProperties}\n            >\n              <VcUpload\n                {...rcUploadProps}\n                ref={upload}\n                class={`${prefixCls.value}-btn`}\n                v-slots={slots}\n              >\n                <div class={`${prefixCls.value}-drag-container`}>{slots.default?.()}</div>\n              </VcUpload>\n            </div>\n            {renderUploadList()}\n          </span>,\n        );\n      }\n\n      const uploadButtonCls = classNames(prefixCls.value, {\n        [`${prefixCls.value}-select`]: true,\n        [`${prefixCls.value}-select-${listType}`]: true,\n        [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      });\n      const children = flattenChildren(slots.default?.());\n      const renderUploadButton = (uploadButtonStyle?: CSSProperties) => (\n        <div class={uploadButtonCls} style={uploadButtonStyle}>\n          <VcUpload {...rcUploadProps} ref={upload} v-slots={slots} />\n        </div>\n      );\n\n      if (listType === 'picture-card') {\n        return wrapSSR(\n          <span\n            {...attrs}\n            class={classNames(\n              `${prefixCls.value}-wrapper`,\n              `${prefixCls.value}-picture-card-wrapper`,\n              rtlCls,\n              attrs.class,\n              hashId.value,\n            )}\n          >\n            {renderUploadList(renderUploadButton, !!(children && children.length))}\n          </span>,\n        );\n      }\n      return wrapSSR(\n        <span\n          {...attrs}\n          class={classNames(`${prefixCls.value}-wrapper`, rtlCls, attrs.class, hashId.value)}\n        >\n          {renderUploadButton(children && children.length ? undefined : { display: 'none' })}\n          {renderUploadList()}\n        </span>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/upload/UploadList/ListItem.tsx",
    "content": "import {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  shallowRef,\n  watch,\n  Transition,\n} from 'vue';\nimport type { ExtractPropTypes, CSSProperties } from 'vue';\nimport EyeOutlined from '@ant-design/icons-vue/EyeOutlined';\nimport DeleteOutlined from '@ant-design/icons-vue/DeleteOutlined';\nimport DownloadOutlined from '@ant-design/icons-vue/DownloadOutlined';\nimport Tooltip from '../../tooltip';\nimport Progress from '../../progress';\n\nimport type {\n  ItemRender,\n  UploadFile,\n  UploadListProgressProps,\n  UploadListType,\n  UploadLocale,\n} from '../interface';\nimport type { VueNode } from '../../_util/type';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport { getTransitionProps } from '../../_util/transition';\nimport { booleanType, stringType, functionType, arrayType, objectType } from '../../_util/type';\n\nexport const listItemProps = () => {\n  return {\n    prefixCls: String,\n    locale: objectType<UploadLocale>(undefined as UploadLocale),\n    file: objectType<UploadFile>(),\n    items: arrayType<UploadFile[]>(),\n    listType: stringType<UploadListType>(),\n    isImgUrl: functionType<(file: UploadFile) => boolean>(),\n\n    showRemoveIcon: booleanType(),\n    showDownloadIcon: booleanType(),\n    showPreviewIcon: booleanType(),\n    removeIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    downloadIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    previewIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n\n    iconRender: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    actionIconRender:\n      functionType<\n        (opt: {\n          customIcon: VueNode;\n          callback: () => void;\n          prefixCls: string;\n          title?: string | undefined;\n        }) => VueNode\n      >(),\n    itemRender: functionType<ItemRender>(),\n    onPreview: functionType<(file: UploadFile, e: Event) => void>(),\n    onClose: functionType<(file: UploadFile) => void>(),\n    onDownload: functionType<(file: UploadFile) => void>(),\n    progress: objectType<UploadListProgressProps>(),\n  };\n};\n\nexport type ListItemProps = Partial<ExtractPropTypes<ReturnType<typeof listItemProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ListItem',\n  inheritAttrs: false,\n  props: listItemProps(),\n  setup(props, { slots, attrs }) {\n    const showProgress = shallowRef(false);\n    const progressRafRef = shallowRef();\n    onMounted(() => {\n      progressRafRef.value = setTimeout(() => {\n        showProgress.value = true;\n      }, 300);\n    });\n    onBeforeUnmount(() => {\n      clearTimeout(progressRafRef.value);\n    });\n    const mergedStatus = shallowRef(props.file?.status);\n    watch(\n      () => props.file?.status,\n      status => {\n        if (status !== 'removed') {\n          mergedStatus.value = status;\n        }\n      },\n    );\n    const { rootPrefixCls } = useConfigInject('upload', props);\n    const transitionProps = computed(() => getTransitionProps(`${rootPrefixCls.value}-fade`));\n    return () => {\n      const {\n        prefixCls,\n        locale,\n        listType,\n        file,\n        items,\n        progress: progressProps,\n        iconRender = slots.iconRender,\n        actionIconRender = slots.actionIconRender,\n        itemRender = slots.itemRender,\n        isImgUrl,\n        showPreviewIcon,\n        showRemoveIcon,\n        showDownloadIcon,\n        previewIcon: customPreviewIcon = slots.previewIcon,\n        removeIcon: customRemoveIcon = slots.removeIcon,\n        downloadIcon: customDownloadIcon = slots.downloadIcon,\n        onPreview,\n        onDownload,\n        onClose,\n      } = props;\n      const { class: className, style } = attrs;\n      // This is used for legacy span make scrollHeight the wrong value.\n      // We will force these to be `display: block` with non `picture-card`\n\n      const iconNode = iconRender({ file });\n      let icon = <div class={`${prefixCls}-text-icon`}>{iconNode}</div>;\n      if (listType === 'picture' || listType === 'picture-card') {\n        if (mergedStatus.value === 'uploading' || (!file.thumbUrl && !file.url)) {\n          const uploadingClassName = {\n            [`${prefixCls}-list-item-thumbnail`]: true,\n            [`${prefixCls}-list-item-file`]: mergedStatus.value !== 'uploading',\n          };\n          icon = <div class={uploadingClassName}>{iconNode}</div>;\n        } else {\n          const thumbnail = isImgUrl?.(file) ? (\n            <img\n              src={file.thumbUrl || file.url}\n              alt={file.name}\n              class={`${prefixCls}-list-item-image`}\n              crossorigin={file.crossOrigin}\n            />\n          ) : (\n            iconNode\n          );\n          const aClassName = {\n            [`${prefixCls}-list-item-thumbnail`]: true,\n            [`${prefixCls}-list-item-file`]: isImgUrl && !isImgUrl(file),\n          };\n          icon = (\n            <a\n              class={aClassName}\n              onClick={e => onPreview(file, e)}\n              href={file.url || file.thumbUrl}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              {thumbnail}\n            </a>\n          );\n        }\n      }\n\n      const infoUploadingClass = {\n        [`${prefixCls}-list-item`]: true,\n        [`${prefixCls}-list-item-${mergedStatus.value}`]: true,\n      };\n      const linkProps =\n        typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n\n      const removeIcon = showRemoveIcon\n        ? actionIconRender({\n            customIcon: customRemoveIcon ? customRemoveIcon({ file }) : <DeleteOutlined />,\n            callback: () => onClose(file),\n            prefixCls,\n            title: locale.removeFile,\n          })\n        : null;\n      const downloadIcon =\n        showDownloadIcon && mergedStatus.value === 'done'\n          ? actionIconRender({\n              customIcon: customDownloadIcon ? customDownloadIcon({ file }) : <DownloadOutlined />,\n              callback: () => onDownload(file),\n              prefixCls,\n              title: locale.downloadFile,\n            })\n          : null;\n      const downloadOrDelete = listType !== 'picture-card' && (\n        <span\n          key=\"download-delete\"\n          class={[\n            `${prefixCls}-list-item-actions`,\n            {\n              picture: listType === 'picture',\n            },\n          ]}\n        >\n          {downloadIcon}\n          {removeIcon}\n        </span>\n      );\n      const listItemNameClass = `${prefixCls}-list-item-name`;\n      const fileName = file.url\n        ? [\n            <a\n              key=\"view\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              class={listItemNameClass}\n              title={file.name}\n              {...linkProps}\n              href={file.url}\n              onClick={e => onPreview(file, e)}\n            >\n              {file.name}\n            </a>,\n            downloadOrDelete,\n          ]\n        : [\n            <span\n              key=\"view\"\n              class={listItemNameClass}\n              onClick={e => onPreview(file, e)}\n              title={file.name}\n            >\n              {file.name}\n            </span>,\n            downloadOrDelete,\n          ];\n      const previewStyle: CSSProperties = {\n        pointerEvents: 'none',\n        opacity: 0.5,\n      };\n      const previewIcon = showPreviewIcon ? (\n        <a\n          href={file.url || file.thumbUrl}\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          style={file.url || file.thumbUrl ? undefined : previewStyle}\n          onClick={e => onPreview(file, e)}\n          title={locale.previewFile}\n        >\n          {customPreviewIcon ? customPreviewIcon({ file }) : <EyeOutlined />}\n        </a>\n      ) : null;\n\n      const pictureCardActions = listType === 'picture-card' &&\n        mergedStatus.value !== 'uploading' && (\n          <span class={`${prefixCls}-list-item-actions`}>\n            {previewIcon}\n            {mergedStatus.value === 'done' && downloadIcon}\n            {removeIcon}\n          </span>\n        );\n\n      const dom = (\n        <div class={infoUploadingClass}>\n          {icon}\n          {fileName}\n          {pictureCardActions}\n          {showProgress.value && (\n            <Transition {...transitionProps.value}>\n              <div\n                v-show={mergedStatus.value === 'uploading'}\n                class={`${prefixCls}-list-item-progress`}\n              >\n                {'percent' in file ? (\n                  <Progress\n                    {...(progressProps as UploadListProgressProps)}\n                    type=\"line\"\n                    percent={file.percent}\n                  />\n                ) : null}\n              </div>\n            </Transition>\n          )}\n        </div>\n      );\n      const listContainerNameClass = {\n        [`${prefixCls}-list-item-container`]: true,\n        [`${className}`]: !!className,\n      };\n      const message =\n        file.response && typeof file.response === 'string'\n          ? file.response\n          : file.error?.statusText || file.error?.message || locale.uploadError;\n      const item =\n        mergedStatus.value === 'error' ? (\n          <Tooltip title={message} getPopupContainer={node => node.parentNode as HTMLElement}>\n            {dom}\n          </Tooltip>\n        ) : (\n          dom\n        );\n\n      return (\n        <div class={listContainerNameClass} style={style as CSSProperties}>\n          {itemRender\n            ? itemRender({\n                originNode: item,\n                file,\n                fileList: items,\n                actions: {\n                  download: onDownload.bind(null, file),\n                  preview: onPreview.bind(null, file),\n                  remove: onClose.bind(null, file),\n                },\n              })\n            : item}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/upload/UploadList/index.tsx",
    "content": "import LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';\nimport PaperClipOutlined from '@ant-design/icons-vue/PaperClipOutlined';\nimport PictureTwoTone from '@ant-design/icons-vue/PictureTwoTone';\nimport FileTwoTone from '@ant-design/icons-vue/FileTwoTone';\nimport type { InternalUploadFile, UploadFile } from '../interface';\nimport { uploadListProps } from '../interface';\nimport { previewImage, isImageUrl } from '../utils';\nimport type { ButtonProps } from '../../button';\nimport Button from '../../button';\nimport ListItem from './ListItem';\nimport type { HTMLAttributes } from 'vue';\nimport {\n  triggerRef,\n  watch,\n  computed,\n  defineComponent,\n  onMounted,\n  shallowRef,\n  watchEffect,\n  TransitionGroup,\n} from 'vue';\nimport { filterEmpty, initDefaultProps, isValidElement } from '../../_util/props-util';\nimport type { VueNode } from '../../_util/type';\nimport useConfigInject from '../../config-provider/hooks/useConfigInject';\nimport { getTransitionGroupProps } from '../../_util/transition';\nimport collapseMotion from '../../_util/collapseMotion';\n\nconst HackSlot = (_, { slots }) => {\n  return filterEmpty(slots.default?.())[0];\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AUploadList',\n  props: initDefaultProps(uploadListProps(), {\n    listType: 'text', // or picture\n    progress: {\n      strokeWidth: 2,\n      showInfo: false,\n    },\n    showRemoveIcon: true,\n    showDownloadIcon: false,\n    showPreviewIcon: true,\n    previewFile: previewImage,\n    isImageUrl,\n    items: [],\n    appendActionVisible: true,\n  }),\n  setup(props, { slots, expose }) {\n    const motionAppear = shallowRef(false);\n    onMounted(() => {\n      motionAppear.value == true;\n    });\n    const mergedItems = shallowRef([]);\n    watch(\n      () => props.items,\n      (val = []) => {\n        mergedItems.value = val.slice();\n      },\n      {\n        immediate: true,\n        deep: true,\n      },\n    );\n    watchEffect(() => {\n      if (props.listType !== 'picture' && props.listType !== 'picture-card') {\n        return;\n      }\n      let hasUpdate = false;\n      (props.items || []).forEach((file: InternalUploadFile, index) => {\n        if (\n          typeof document === 'undefined' ||\n          typeof window === 'undefined' ||\n          !(window as any).FileReader ||\n          !(window as any).File ||\n          !(file.originFileObj instanceof File || (file.originFileObj as Blob) instanceof Blob) ||\n          file.thumbUrl !== undefined\n        ) {\n          return;\n        }\n        file.thumbUrl = '';\n        if (props.previewFile) {\n          props.previewFile(file.originFileObj as File).then((previewDataUrl: string) => {\n            // Need append '' to avoid dead loop\n            const thumbUrl = previewDataUrl || '';\n            if (thumbUrl !== file.thumbUrl) {\n              mergedItems.value[index].thumbUrl = thumbUrl;\n              hasUpdate = true;\n            }\n          });\n        }\n      });\n      if (hasUpdate) {\n        triggerRef(mergedItems);\n      }\n    });\n\n    // ============================= Events =============================\n    const onInternalPreview = (file: UploadFile, e?: Event) => {\n      if (!props.onPreview) {\n        return;\n      }\n      e?.preventDefault();\n      return props.onPreview(file);\n    };\n\n    const onInternalDownload = (file: UploadFile) => {\n      if (typeof props.onDownload === 'function') {\n        props.onDownload(file);\n      } else if (file.url) {\n        window.open(file.url);\n      }\n    };\n\n    const onInternalClose = (file: UploadFile) => {\n      props.onRemove?.(file);\n    };\n\n    const internalIconRender = ({ file }: { file: UploadFile }) => {\n      const iconRender = props.iconRender || slots.iconRender;\n      if (iconRender) {\n        return iconRender({ file, listType: props.listType });\n      }\n      const isLoading = file.status === 'uploading';\n      const fileIcon =\n        props.isImageUrl && props.isImageUrl(file) ? <PictureTwoTone /> : <FileTwoTone />;\n      let icon: VueNode = isLoading ? <LoadingOutlined /> : <PaperClipOutlined />;\n      if (props.listType === 'picture') {\n        icon = isLoading ? <LoadingOutlined /> : fileIcon;\n      } else if (props.listType === 'picture-card') {\n        icon = isLoading ? props.locale.uploading : fileIcon;\n      }\n      return icon;\n    };\n\n    const actionIconRender = (opt: {\n      customIcon: VueNode;\n      callback: () => void;\n      prefixCls: string;\n      title?: string;\n    }) => {\n      const { customIcon, callback, prefixCls, title } = opt;\n      const btnProps: ButtonProps & HTMLAttributes = {\n        type: 'text',\n        size: 'small',\n        title,\n        onClick: () => {\n          callback();\n        },\n        class: `${prefixCls}-list-item-action`,\n      };\n      if (isValidElement(customIcon)) {\n        return <Button {...btnProps} v-slots={{ icon: () => customIcon }} />;\n      }\n      return (\n        <Button {...btnProps}>\n          <span>{customIcon}</span>\n        </Button>\n      );\n    };\n\n    expose({\n      handlePreview: onInternalPreview,\n      handleDownload: onInternalDownload,\n    });\n\n    const { prefixCls, rootPrefixCls } = useConfigInject('upload', props);\n\n    const listClassNames = computed(() => ({\n      [`${prefixCls.value}-list`]: true,\n      [`${prefixCls.value}-list-${props.listType}`]: true,\n    }));\n    const transitionGroupProps = computed(() => {\n      const motion = {\n        ...collapseMotion(`${rootPrefixCls.value}-motion-collapse`),\n      };\n      delete motion.onAfterAppear;\n      delete motion.onAfterEnter;\n      delete motion.onAfterLeave;\n      const motionConfig = {\n        ...getTransitionGroupProps(\n          `${prefixCls.value}-${props.listType === 'picture-card' ? 'animate-inline' : 'animate'}`,\n        ),\n        class: listClassNames.value,\n        appear: motionAppear.value,\n      };\n      return props.listType !== 'picture-card'\n        ? {\n            ...motion,\n            ...motionConfig,\n          }\n        : motionConfig;\n    });\n    return () => {\n      const {\n        listType,\n        locale,\n        isImageUrl: isImgUrl,\n        showPreviewIcon,\n        showRemoveIcon,\n        showDownloadIcon,\n        removeIcon,\n        previewIcon,\n        downloadIcon,\n        progress,\n        appendAction,\n        itemRender,\n        appendActionVisible,\n      } = props;\n      const appendActionDom = appendAction?.();\n      const items = mergedItems.value;\n      return (\n        <TransitionGroup {...transitionGroupProps.value} tag=\"div\">\n          {items.map(file => {\n            const { uid: key } = file;\n            return (\n              <ListItem\n                key={key}\n                locale={locale}\n                prefixCls={prefixCls.value}\n                file={file}\n                items={items}\n                progress={progress}\n                listType={listType}\n                isImgUrl={isImgUrl}\n                showPreviewIcon={showPreviewIcon}\n                showRemoveIcon={showRemoveIcon}\n                showDownloadIcon={showDownloadIcon}\n                onPreview={onInternalPreview}\n                onDownload={onInternalDownload}\n                onClose={onInternalClose}\n                removeIcon={removeIcon}\n                previewIcon={previewIcon}\n                downloadIcon={downloadIcon}\n                itemRender={itemRender}\n                v-slots={{\n                  ...slots,\n                  iconRender: internalIconRender,\n                  actionIconRender,\n                }}\n              />\n            );\n          })}\n          {appendAction ? (\n            <HackSlot\n              key=\"__ant_upload_appendAction\"\n              v-show={!!appendActionVisible}\n              v-slots={{ default: () => appendActionDom }}\n            ></HackSlot>\n          ) : null}\n        </TransitionGroup>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/upload/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/upload/demo/avatar.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper ant-upload-picture-card-wrapper avatar-uploader\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture-card\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><div><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span>\n<div class=\"ant-upload-text\">Upload</div>\n</div></span></div></span>\n`;\n\nexports[`renders ./components/upload/demo/basic.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Click to Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n`;\n\nexports[`renders ./components/upload/demo/custom-render.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Click to Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span style=\"\">xxx.png</span></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><a href=\"javascript:;\">download</a></div>\n      <!---->\n      <div class=\"ant-space-item\"><a href=\"javascript:;\">delete</a></div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span style=\"\">yyy.png</span></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><a href=\"javascript:;\">download</a></div>\n      <!---->\n      <div class=\"ant-space-item\"><a href=\"javascript:;\">delete</a></div>\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-space ant-space-horizontal ant-space-align-center\">\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><span style=\"color: red;\">zzz.png</span></div>\n      <!---->\n      <div class=\"ant-space-item\" style=\"margin-right: 8px;\"><a href=\"javascript:;\">download</a></div>\n      <!---->\n      <div class=\"ant-space-item\"><a href=\"javascript:;\">delete</a></div>\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n\nexports[`renders ./components/upload/demo/customize-progress-bar.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Click to Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n`;\n\nexports[`renders ./components/upload/demo/defaultFileList.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"http://www.baidu.com/xxx.png\">xxx.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"yyy.png\" href=\"http://www.baidu.com/yyy.png\">yyy.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <!---->\n    <div class=\"ant-upload-list-item ant-upload-list-item-error\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"zzz.png\" href=\"http://www.baidu.com/zzz.png\">zzz.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n\nexports[`renders ./components/upload/demo/directory.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\" directory=\"directory\" webkitdirectory=\"webkitdirectory\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload Directory</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n`;\n\nexports[`renders ./components/upload/demo/drag.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-drag\"><span tabindex=\"0\" class=\"ant-upload ant-upload-btn\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\" multiple=\"\"><p class=\"ant-upload-drag-icon\"><span role=\"img\" aria-label=\"inbox\" class=\"anticon anticon-inbox\"><svg focusable=\"false\" class=\"\" data-icon=\"inbox\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 1024 1024\"><path d=\"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z\"></path></svg></span></p>\n<p class=\"ant-upload-text\">Click or drag file to this area to upload</p>\n<p class=\"ant-upload-hint\"> Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files </p></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\"></div></span>\n`;\n\nexports[`renders ./components/upload/demo/fileList.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\" multiple=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"http://www.baidu.com/xxx.png\">xxx.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n\nexports[`renders ./components/upload/demo/max-count.vue correctly 1`] = `\n<div style=\"width: 100%;\" class=\"ant-space ant-space-vertical\">\n  <div class=\"ant-space-item\" style=\"margin-bottom: 24px;\"><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload (Max: 1)</span></button></span></div>\n  <div class=\"ant-upload-list ant-upload-list-picture\"></div></span>\n</div>\n<!---->\n<div class=\"ant-space-item\"><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload (Max: 3)</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-picture\"></div></span></div>\n<!---->\n</div>\n`;\n\nexports[`renders ./components/upload/demo/picture-card.vue correctly 1`] = `\n<div class=\"clearfix\"><span class=\"ant-upload-wrapper ant-upload-picture-card-wrapper\"><div class=\"ant-upload-list ant-upload-list-picture-card\"><div class=\"ant-upload-list-item-container\"><div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"image.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">image.png</a><!----><span class=\"ant-upload-list-item-actions\"><a href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Preview file\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span></a>\n  <!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n  <!---->\n</div>\n</div>\n<div class=\"ant-upload-list-item-container\">\n  <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"image.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">image.png</a>\n    <!----><span class=\"ant-upload-list-item-actions\"><a href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Preview file\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span></a>\n    <!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n    <!---->\n  </div>\n</div>\n<div class=\"ant-upload-list-item-container\">\n  <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"image.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">image.png</a>\n    <!----><span class=\"ant-upload-list-item-actions\"><a href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Preview file\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span></a>\n    <!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n    <!---->\n  </div>\n</div>\n<div class=\"ant-upload-list-item-container\">\n  <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"image.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">image.png</a>\n    <!----><span class=\"ant-upload-list-item-actions\"><a href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Preview file\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span></a>\n    <!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n    <!---->\n  </div>\n</div>\n<div class=\"ant-upload-list-item-container\">\n  <div class=\"ant-upload-list-item ant-upload-list-item-uploading\">\n    <div class=\"ant-upload-list-item-thumbnail\">Uploading...</div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">image.png</a>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n</div>\n<div class=\"ant-upload-list-item-container\">\n  <!---->\n  <div class=\"ant-upload-list-item ant-upload-list-item-error\">\n    <div class=\"ant-upload-list-item-thumbnail ant-upload-list-item-file\"><span role=\"img\" aria-label=\"picture\" class=\"anticon anticon-picture\"><svg focusable=\"false\" class=\"\" data-icon=\"picture\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\" fill=\"#1890ff\"></path><path d=\"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\" fill=\"#e6f7ff\"></path><path d=\"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z\" fill=\"#e6f7ff\"></path><path d=\"M276 368a28 28 0 1056 0 28 28 0 10-56 0z\" fill=\"#e6f7ff\"></path><path d=\"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\" fill=\"#1890ff\"></path></svg></span></div><span class=\"ant-upload-list-item-name\" title=\"image.png\">image.png</span>\n    <!----><span class=\"ant-upload-list-item-actions\"><a target=\"_blank\" rel=\"noopener noreferrer\" style=\"pointer-events: none; opacity: 0.5;\" title=\"Preview file\"><span role=\"img\" aria-label=\"eye\" class=\"anticon anticon-eye\"><svg focusable=\"false\" class=\"\" data-icon=\"eye\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"></path></svg></span></a>\n    <!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n    <!---->\n  </div>\n</div>\n<div class=\"ant-upload ant-upload-select ant-upload-select-picture-card\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><div><span role=\"img\" aria-label=\"plus\" class=\"anticon anticon-plus\"><svg focusable=\"false\" class=\"\" data-icon=\"plus\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><defs><style></style></defs><path d=\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\"></path><path d=\"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\"></path></svg></span>\n  <div style=\"margin-top: 8px;\">Upload</div>\n</div></span></div>\n</div></span>\n<!---->\n</div>\n`;\n\nexports[`renders ./components/upload/demo/picture-style.vue correctly 1`] = `\n<div><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-picture\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"xxx.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">xxx.png</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"yyy.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"yyy.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">yyy.png</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span><br><br><span class=\"ant-upload-wrapper upload-list-inline\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-picture\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"xxx.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">xxx.png</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\" alt=\"yyy.png\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"yyy.png\" href=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\">yyy.png</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span></div>\n`;\n\nexports[`renders ./components/upload/demo/preview-file.vue correctly 1`] = `\n<div><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-picture\"></div></span></div>\n`;\n\nexports[`renders ./components/upload/demo/transform-file.vue correctly 1`] = `\n<div><span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\"></div></span></div>\n`;\n\nexports[`renders ./components/upload/demo/upload-custom-action-icon.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"http://www.baidu.com/xxx.png\">xxx.png</a><span class=\"ant-upload-list-item-actions\"><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action\" title=\"Download file\" type=\"button\"><!----><span>download</span></button><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"star\" tabindex=\"-1\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"yyy.png\" href=\"http://www.baidu.com/yyy.png\">yyy.png</a><span class=\"ant-upload-list-item-actions\"><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action\" title=\"Download file\" type=\"button\"><!----><span>download</span></button><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"star\" tabindex=\"-1\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <!---->\n    <div class=\"ant-upload-list-item ant-upload-list-item-error\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"zzz.png\" href=\"http://www.baidu.com/zzz.png\">zzz.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"star\" tabindex=\"-1\" class=\"anticon anticon-star\"><svg focusable=\"false\" class=\"\" data-icon=\"star\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n\nexports[`renders ./components/upload/demo/upload-png-only.vue correctly 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button class=\"ant-btn ant-btn-default\" type=\"button\"><!----><span role=\"img\" aria-label=\"upload\" class=\"anticon anticon-upload\"><svg focusable=\"false\" class=\"\" data-icon=\"upload\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"></path></svg></span><span>Upload png only</span></button></span></div>\n<div class=\"ant-upload-list ant-upload-list-text\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"xxx.png\" href=\"http://www.baidu.com/xxx.png\">xxx.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"yyy.png\" href=\"http://www.baidu.com/yyy.png\">yyy.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <!---->\n    <div class=\"ant-upload-list-item ant-upload-list-item-error\">\n      <div class=\"ant-upload-text-icon\"><span role=\"img\" aria-label=\"paper-clip\" class=\"anticon anticon-paper-clip\"><svg focusable=\"false\" class=\"\" data-icon=\"paper-clip\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"></path></svg></span></div><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"zzz.png\" href=\"http://www.baidu.com/zzz.png\">zzz.png</a><span class=\"ant-upload-list-item-actions\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n"
  },
  {
    "path": "components/upload/__tests__/__snapshots__/uploadlist.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Upload List handle error 1`] = `\n<span><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span role=\"button\" tabindex=\"0\" class=\"ant-upload\"><input type=\"file\" accept=\"\" style=\"display: none;\"><button>upload</button></span></div><span tag=\"div\" class=\"ant-upload-list ant-upload-list-text\"><div class=\"\"><span><div class=\"ant-upload-list-item ant-upload-list-item-uploading ant-upload-list-item-list-type-text\"><div class=\"ant-upload-list-item-info\"><span><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg viewBox=\"0 0 1024 1024\" focusable=\"false\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" class=\"anticon-spin\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span><span title=\"foo.png\" class=\"ant-upload-list-item-name\">foo.png</span><span class=\"ant-upload-list-item-card-actions \"><a title=\"Remove file\"><span role=\"img\" aria-label=\"delete\" tabindex=\"-1\" title=\"Remove file\" class=\"anticon anticon-delete\"><svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" class=\"\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></a></span></span></div>\n<div class=\"ant-upload-list-item-progress\">\n  <div class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-default\">\n    <div>\n      <div class=\"ant-progress-outer\">\n        <div class=\"ant-progress-inner\">\n          <div class=\"ant-progress-bg\" style=\"width: 0%; height: 2px; border-radius: 100px;\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n</div></span></div></span></span>\n`;\n\nexports[`Upload List handle error 2`] = `\n<span><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span role=\"button\" tabindex=\"0\" class=\"ant-upload\"><input type=\"file\" accept=\"\" style=\"display: none;\"><button>upload</button></span></div><span tag=\"div\" class=\"ant-upload-list ant-upload-list-text\"><div class=\"\"><span><div class=\"ant-upload-list-item ant-upload-list-item-uploading ant-upload-list-item-list-type-text\"><div class=\"ant-upload-list-item-info\"><span><span role=\"img\" aria-label=\"loading\" class=\"anticon anticon-loading\"><svg viewBox=\"0 0 1024 1024\" focusable=\"false\" data-icon=\"loading\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" class=\"anticon-spin\"><path d=\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"></path></svg></span><span title=\"foo.png\" class=\"ant-upload-list-item-name\">foo.png</span><span class=\"ant-upload-list-item-card-actions \"><a title=\"Remove file\"><span role=\"img\" aria-label=\"delete\" tabindex=\"-1\" title=\"Remove file\" class=\"anticon anticon-delete\"><svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" class=\"\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></a></span></span></div>\n<div class=\"ant-upload-list-item-progress\">\n  <div class=\"ant-progress ant-progress-line ant-progress-status-normal ant-progress-default\">\n    <div>\n      <div class=\"ant-progress-outer\">\n        <div class=\"ant-progress-inner\">\n          <div class=\"ant-progress-bg\" style=\"width: 0%; height: 2px; border-radius: 100px;\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n</div></span></div></span></span>\n`;\n\nexports[`Upload List should be uploading when upload a file 1`] = `<span><div class=\"ant-upload ant-upload-select ant-upload-select-text\"><span role=\"button\" tabindex=\"0\" class=\"ant-upload\"><input type=\"file\" accept=\"\" style=\"display: none;\"><button>upload</button></span></div><span tag=\"div\" class=\"ant-upload-list ant-upload-list-text\"></span></span>`;\n\nexports[`Upload List should non-image format file preview 1`] = `\n<span class=\"ant-upload-wrapper\"><div class=\"ant-upload ant-upload-select ant-upload-select-picture\"><span tabindex=\"0\" class=\"ant-upload\" role=\"button\"><input type=\"file\" style=\"display: none;\" accept=\"\"><button>upload</button></span></div>\n<div class=\"ant-upload-list ant-upload-list-picture\">\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail ant-upload-list-item-file\" href=\"https://cdn.xxx.com/aaa.zip\" target=\"_blank\" rel=\"noopener noreferrer\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\" fill=\"#e6f7ff\"></path><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\" fill=\"#1890ff\"></path></svg></span></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"not-image\" href=\"https://cdn.xxx.com/aaa.zip\">not-image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/aaa\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://cdn.xxx.com/aaa\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/aaa\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail ant-upload-list-item-file\" href=\"https://cdn.xxx.com/aaa.xx\" target=\"_blank\" rel=\"noopener noreferrer\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\" fill=\"#e6f7ff\"></path><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\" fill=\"#1890ff\"></path></svg></span></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"not-image\" href=\"https://cdn.xxx.com/aaa.xx\">not-image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail ant-upload-list-item-file\" href=\"https://cdn.xxx.com/aaa.png/xx.xx\" target=\"_blank\" rel=\"noopener noreferrer\"><span role=\"img\" aria-label=\"file\" class=\"anticon anticon-file\"><svg focusable=\"false\" class=\"\" data-icon=\"file\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\" fill=\"#e6f7ff\"></path><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\" fill=\"#1890ff\"></path></svg></span></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"not-image\" href=\"https://cdn.xxx.com/aaa.png/xx.xx\">not-image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/xx.xx/aaa.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://cdn.xxx.com/xx.xx/aaa.png\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/xx.xx/aaa.png\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/xx.xx/aaa.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"data:image/png;base64,UEsDBAoAAAAAADYZYkwAAAAAAAAAAAAAAAAdAAk\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/xx.xx/aaa.png\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/xx.xx/aaa.png?query=123\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://cdn.xxx.com/xx.xx/aaa.png?query=123\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/xx.xx/aaa.png?query=123\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/xx.xx/aaa.png#anchor\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://cdn.xxx.com/xx.xx/aaa.png#anchor\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/xx.xx/aaa.png#anchor\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n  <div class=\"ant-upload-list-item-container\">\n    <div class=\"ant-upload-list-item ant-upload-list-item-done\"><a class=\"ant-upload-list-item-thumbnail\" href=\"https://cdn.xxx.com/xx.xx/aaa.png?query=some.query.with.dot\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://cdn.xxx.com/xx.xx/aaa.png?query=some.query.with.dot\" alt=\"image\" class=\"ant-upload-list-item-image\"></a><a target=\"_blank\" rel=\"noopener noreferrer\" class=\"ant-upload-list-item-name\" title=\"image\" href=\"https://cdn.xxx.com/xx.xx/aaa.png?query=some.query.with.dot\">image</a><span class=\"ant-upload-list-item-actions picture\"><!----><button class=\"ant-btn ant-btn-text ant-btn-sm ant-upload-list-item-action ant-btn-icon-only\" title=\"Remove file\" type=\"button\"><span role=\"img\" aria-label=\"delete\" class=\"anticon anticon-delete\"><svg focusable=\"false\" class=\"\" data-icon=\"delete\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"></path></svg></span></button></span>\n      <!---->\n      <!---->\n    </div>\n  </div>\n</div></span>\n`;\n"
  },
  {
    "path": "components/upload/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('upload', { skip: ['upload-manually'] });\n"
  },
  {
    "path": "components/upload/__tests__/mock.js",
    "content": "import mock from 'xhr-mock';\n\nexport function setup() {\n  mock.setup();\n  mock.post('http://upload.com/', (req, res) => {\n    req.headers({\n      'content-length': 100,\n    });\n    req.body('thisisbody');\n    return res;\n  });\n}\n\nexport const teardown = mock.teardown.bind(mock);\n"
  },
  {
    "path": "components/upload/__tests__/requests.js",
    "content": "export const successRequest = ({ onSuccess, file }) => {\n  setTimeout(() => {\n    onSuccess(null, file);\n  });\n};\n\nexport const errorRequest = ({ onError }) => {\n  setTimeout(() => {\n    onError();\n  });\n};\n"
  },
  {
    "path": "components/upload/__tests__/upload.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport Upload from '..';\nimport { getFileItem, removeFileItem } from '../utils';\nimport PropsTypes from '../../_util/vue-types';\nimport { uploadListProps } from '../interface';\nimport { setup, teardown } from './mock';\n\nuploadListProps.items = PropsTypes.any;\n\ndescribe('Upload', () => {\n  beforeEach(() => setup());\n  afterEach(() => teardown());\n  it('should get refs inside Upload in componentDidMount', () => {\n    let ref = null;\n    const APP = {\n      mounted() {\n        ref = this.$refs.input;\n      },\n      render() {\n        return (\n          <Upload supportServerRender={false} action=\"\">\n            <input ref=\"input\" />\n          </Upload>\n        );\n      },\n    };\n    mount(APP);\n    expect(ref).toBeDefined();\n  });\n\n  xit('return promise in beforeUpload', done => {\n    const data = jest.fn();\n    const props = {\n      props: {\n        action: 'http://upload.com',\n        beforeUpload: () => new Promise(resolve => setTimeout(() => resolve('success'), 100)),\n        data,\n      },\n      listeners: {\n        change: ({ file }) => {\n          if (file.status !== 'uploading') {\n            expect(data).toBeCalled();\n            done();\n          }\n        },\n      },\n      slots: {\n        default: () => <button>upload</button>,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      wrapper.findComponent('ajaxUploader').vm.onChange({\n        target: {\n          files: [{ file: 'foo.png' }],\n        },\n      });\n    }, 0);\n  });\n\n  xit('upload promise return file in beforeUpload', done => {\n    const data = jest.fn();\n    const props = {\n      action: 'http://upload.com',\n      beforeUpload: file =>\n        new Promise(resolve =>\n          setTimeout(() => {\n            const result = file;\n            result.name = 'test.png';\n            resolve(result);\n          }, 100),\n        ),\n      data,\n      onChange: ({ file }) => {\n        if (file.status !== 'uploading') {\n          expect(data).toBeCalled();\n          expect(file.name).toEqual('test.png');\n          done();\n        }\n      },\n      slots: {\n        default: () => <button>upload</button>,\n      },\n      sync: false,\n    };\n\n    const wrapper = mount(Upload, props);\n\n    setTimeout(() => {\n      wrapper.find({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [{ file: 'foo.png' }],\n        },\n      });\n    }, 0);\n  });\n\n  xit('should not stop upload when return value of beforeUpload is false', done => {\n    const data = jest.fn();\n    const props = {\n      action: 'http://upload.com',\n      beforeUpload: () => false,\n      data,\n      onChange: ({ file }) => {\n        expect(file instanceof File).toBe(true);\n        expect(data).not.toBeCalled();\n        done();\n      },\n      slots: {\n        default: () => <button>upload</button>,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.find({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n    }, 0);\n  });\n\n  xit('should increase percent automaticly when call autoUpdateProgress in IE', done => {\n    let uploadInstance;\n    let lastPercent = -1;\n    const props = {\n      props: {\n        action: 'http://upload.com',\n      },\n      listeners: {\n        change: ({ file }) => {\n          if (file.percent === 0 && file.status === 'uploading') {\n            // manually call it\n            uploadInstance.autoUpdateProgress(0, file);\n          }\n          if (file.status === 'uploading') {\n            expect(file.percent).toBeGreaterThan(lastPercent);\n            lastPercent = file.percent;\n          }\n          if (file.status === 'done' || file.status === 'error') {\n            done();\n          }\n        },\n      },\n      slots: {\n        default: '<button>upload</button>',\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.find({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n      uploadInstance = wrapper.vm;\n    }, 0);\n  });\n  xit('should not stop upload when return value of beforeUpload is not false', done => {\n    const data = jest.fn();\n    const props = {\n      props: {\n        action: 'http://upload.com',\n        beforeUpload() {},\n        data,\n      },\n      listeners: {\n        change: () => {\n          expect(data).toBeCalled();\n          done();\n        },\n      },\n      slots: {\n        default: '<button>upload</button>',\n      },\n      sync: false,\n    };\n\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.find({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n    }, 0);\n  });\n\n  describe('util', () => {\n    it('should be able to get fileItem', () => {\n      const file = { uid: '-1', name: 'item.jpg' };\n      const fileList = [\n        {\n          uid: '-1',\n          name: 'item.jpg',\n        },\n      ];\n      const targetItem = getFileItem(file, fileList);\n      expect(targetItem).toBe(fileList[0]);\n    });\n\n    it('should be able to remove fileItem', () => {\n      const file = { uid: '-1', name: 'item.jpg' };\n      const fileList = [\n        {\n          uid: '-1',\n          name: 'item.jpg',\n        },\n        {\n          uid: '-2',\n          name: 'item2.jpg',\n        },\n      ];\n      const targetItem = removeFileItem(file, fileList);\n      expect(targetItem).toEqual(fileList.slice(1));\n    });\n\n    it('should not be able to remove fileItem', () => {\n      const file = { uid: '-3', name: 'item.jpg' };\n      const fileList = [\n        {\n          uid: '-1',\n          name: 'item.jpg',\n        },\n        {\n          uid: '-2',\n          name: 'item2.jpg',\n        },\n      ];\n      const targetItem = removeFileItem(file, fileList);\n      expect(targetItem).toBe(null);\n    });\n  });\n\n  it('should support linkProps as object', () => {\n    const fileList = [\n      {\n        uid: '-1',\n        name: 'foo.png',\n        status: 'done',\n        url: 'http://www.baidu.com/xxx.png',\n        linkProps: {\n          download: 'image',\n          rel: 'noopener',\n        },\n      },\n    ];\n    const props = {\n      props: {\n        fileList,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const linkNode = wrapper.find('a.ant-upload-list-item-name');\n      expect(linkNode.props().download).toBe('image');\n      expect(linkNode.props().rel).toBe('noopener');\n    }, 0);\n  });\n\n  it('should support linkProps as json stringify', () => {\n    const linkPropsString = JSON.stringify({\n      download: 'image',\n      rel: 'noopener',\n    });\n    const fileList = [\n      {\n        uid: '-1',\n        name: 'foo.png',\n        status: 'done',\n        url: 'http://www.baidu.com/xxx.png',\n        linkProps: linkPropsString,\n      },\n    ];\n    const props = {\n      props: {\n        fileList,\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const linkNode = wrapper.find('a.ant-upload-list-item-name');\n      expect(linkNode.props().download).toBe('image');\n      expect(linkNode.props().rel).toBe('noopener');\n    }, 0);\n  });\n});\n"
  },
  {
    "path": "components/upload/__tests__/uploadlist.test.js",
    "content": "import { mount } from '@vue/test-utils';\nimport * as Vue from 'vue';\nimport Upload from '..';\nimport { errorRequest, successRequest } from './requests';\nimport PropsTypes from '../../_util/vue-types';\nimport { uploadListProps } from '../interface';\nimport { sleep } from '../../../tests/utils';\nimport { h } from 'vue';\n\nuploadListProps.items = PropsTypes.any;\n\nconst delay = timeout => new Promise(resolve => setTimeout(resolve, timeout));\nconst fileList = [\n  {\n    uid: -1,\n    name: 'xxx.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/IQKRngzUuFzJzGzRJXUs.png',\n  },\n  {\n    uid: -2,\n    name: 'yyy.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/IQKRngzUuFzJzGzRJXUs.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n];\n\ndescribe('Upload List', () => {\n  // jsdom not support `createObjectURL` yet. Let's handle this.\n  const originCreateObjectURL = window.URL.createObjectURL;\n  window.URL.createObjectURL = jest.fn(() => '');\n  const originHTMLCanvasElementGetContext = window.HTMLCanvasElement.prototype.getContext;\n  window.HTMLCanvasElement.prototype.getContext = jest.fn(() => '');\n  // https://github.com/ant-design/ant-design/issues/4653\n  afterAll(() => {\n    window.URL.createObjectURL = originCreateObjectURL;\n    window.HTMLCanvasElement.prototype.getContext = originHTMLCanvasElementGetContext;\n  });\n  it('should use file.thumbUrl for <img /> in priority', done => {\n    const props = {\n      props: {\n        defaultFileList: fileList,\n        listType: 'picture',\n        action: '',\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    Vue.nextTick(() => {\n      fileList.forEach((file, i) => {\n        const linkNode = wrapper.findAll('.ant-upload-list-item-thumbnail')[i];\n        const imgNode = wrapper.findAll('.ant-upload-list-item-thumbnail img')[i];\n        expect(linkNode.attributes().href).toBe(file.url);\n        expect(imgNode.attributes().src).toBe(file.thumbUrl);\n      });\n      done();\n    });\n  });\n\n  // https://github.com/ant-design/ant-design/issues/7269\n  it('should remove correct item when uid is 0', async () => {\n    const list = [\n      {\n        uid: 0,\n        name: 'xxx.png',\n        status: 'done',\n        url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n        thumbUrl: 'https://zos.alipayobjects.com/rmsportal/IQKRngzUuFzJzGzRJXUs.png',\n      },\n      {\n        uid: 1,\n        name: 'xxx.png',\n        status: 'done',\n        url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n        thumbUrl: 'https://zos.alipayobjects.com/rmsportal/IQKRngzUuFzJzGzRJXUs.png',\n      },\n    ];\n    const props = {\n      props: {\n        defaultFileList: list,\n        action: '',\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    await sleep();\n    expect(wrapper.findAll('.ant-upload-list-item').length).toBe(2);\n    wrapper.findAll('.ant-upload-list-item')[0].find('.anticon-delete').trigger('click');\n    await sleep(400);\n    // wrapper.update();\n    expect(wrapper.findAll('.ant-upload-list-item').length).toBe(1);\n  });\n\n  xit('should be uploading when upload a file', done => {\n    const props = {\n      props: {\n        action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',\n        customRequest: successRequest,\n        onChange: ({ file }) => {\n          if (file.status === 'uploading') {\n            expect(wrapper.html()).toMatchSnapshot();\n            done();\n          }\n          if (file.status === 'done') {\n            expect(wrapper.html()).toMatchSnapshot();\n            done();\n          }\n        },\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.findComponent({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n    }, 0);\n  });\n\n  xit('handle error', done => {\n    const props = {\n      props: {\n        action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',\n        customRequest: errorRequest,\n      },\n      listeners: {\n        change: ({ file }) => {\n          if (file.status !== 'uploading') {\n            expect(wrapper.html()).toMatchSnapshot();\n            done();\n          }\n        },\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.findComponent({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n    }, 0);\n  });\n\n  xit('does concat filelist when beforeUpload returns false', done => {\n    const handleChange = jest.fn();\n    const props = {\n      props: {\n        action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',\n        listType: 'picture',\n        defaultFileList: fileList,\n        beforeUpload: () => false,\n        onChange: handleChange,\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n\n    setTimeout(() => {\n      const mockFile = new File(['foo'], 'foo.png', {\n        type: 'image/png',\n      });\n      wrapper.findComponent({ name: 'ajaxUploader' }).vm.onChange({\n        target: {\n          files: [mockFile],\n        },\n      });\n      Vue.nextTick(() => {\n        expect(wrapper.vm.sFileList.length).toBe(fileList.length + 1);\n        expect(handleChange.mock.calls[0][0].fileList).toHaveLength(3);\n        done();\n      });\n    }, 0);\n  });\n\n  // https://github.com/ant-design/ant-design/issues/7762\n  // it('work with form validation', (done) => {\n  //   let errors\n  //   const TestForm = {\n  //     methods: {\n  //       handleSubmit () {\n  //         const { validateFields } = this.form\n  //         validateFields((err) => {\n  //           errors = err\n  //         })\n  //       },\n  //     },\n  //     render () {\n  //       const { getFieldDecorator } = this.form\n\n  //       return (\n  //         <Form onSubmit={this.handleSubmit}>\n  //           <Form.Item>\n  //             {getFieldDecorator('file', {\n  //               valuePropname: 'fileList',\n  //               getValueFromEvent: e => e.fileList,\n  //               rules: [\n  //                 {\n  //                   required: true,\n  //                   validator: (rule, value, callback) => {\n  //                     if (!value || value.length === 0) {\n  //                       callback('file required')\n  //                     } else {\n  //                       callback()\n  //                     }\n  //                   },\n  //                 },\n  //               ],\n  //             })(\n  //               <Upload\n  //                 beforeUpload={() => false}\n  //               >\n  //                 <button>upload</button>\n  //               </Upload>\n  //             )}\n  //           </Form.Item>\n  //         </Form>\n  //       )\n  //     },\n  //   }\n\n  //   const App = Form.create()(TestForm)\n  //   console.dir(App)\n  //   const wrapper = mount(() => {\n  //     return <App />\n  //   })\n  //   setTimeout(async () => {\n  //     wrapper.find(Form).trigger('submit')\n  //     expect(errors.file.errors).toEqual([{ message: 'file required', field: 'file' }])\n\n  //     const mockFile = new File(['foo'], 'foo.png', {\n  //       type: 'image/png',\n  //     })\n  //     wrapper.findComponent({ name: 'ajaxUploader' }).vm.onChange({\n  //       target: {\n  //         files: [mockFile],\n  //       },\n  //     })\n  //     wrapper.find(Form).trigger('submit')\n  //     expect(errors).toBeNull()\n  //     done()\n  //   }, 0)\n  // })\n\n  it('should support onPreview', async () => {\n    const handlePreview = jest.fn();\n    const props = {\n      props: {\n        defaultFileList: fileList,\n        listType: 'picture-card',\n        action: '',\n        onPreview: handlePreview,\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    await sleep(500);\n    wrapper.findAll('.anticon-eye')[0].trigger('click');\n    expect(handlePreview).toBeCalledWith(fileList[0]);\n    wrapper.findAll('.anticon-eye')[1].trigger('click');\n    expect(handlePreview).toBeCalledWith(fileList[1]);\n  });\n\n  it('should support onRemove', done => {\n    const handleRemove = jest.fn();\n    const handleChange = jest.fn();\n    const props = {\n      props: {\n        defaultFileList: fileList,\n        listType: 'picture-card',\n        action: '',\n        onRemove: handleRemove,\n        onChange: handleChange,\n      },\n\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    jest.setTimeout(300000);\n    setTimeout(async () => {\n      wrapper.findAll('.anticon-delete')[0].trigger('click');\n      expect(handleRemove).toBeCalledWith(fileList[0]);\n      wrapper.findAll('.anticon-delete')[1].trigger('click');\n      expect(handleRemove).toBeCalledWith(fileList[1]);\n      await delay(0);\n      expect(handleChange.mock.calls.length).toBe(2);\n      done();\n    }, 0);\n  });\n\n  xit('should generate thumbUrl from file', done => {\n    const handlePreview = jest.fn();\n    const newFileList = [...fileList];\n    const newFile = { ...fileList[0], uid: -3, originFileObj: new File([], 'xxx.png') };\n    delete newFile.thumbUrl;\n    newFileList.push(newFile);\n    const props = {\n      props: {\n        defaultFileList: newFileList,\n        listType: 'picture-card',\n        action: '',\n        onPreview: handlePreview,\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    setTimeout(async () => {\n      const newFile = { ...fileList[2], uid: -4, originFileObj: new File([], 'xxx.png') };\n      newFileList.push(newFile);\n      wrapper.setProps({\n        defaultFileList: [...newFileList],\n      });\n      await delay(200);\n      expect(wrapper.vm.sFileList[2].thumbUrl).not.toBe(undefined);\n      done();\n    }, 1000);\n  });\n\n  it('should non-image format file preview', done => {\n    const list = [\n      {\n        name: 'not-image',\n        status: 'done',\n        uid: -3,\n        url: 'https://cdn.xxx.com/aaa.zip',\n        thumbUrl: 'data:application/zip;base64,UEsDBAoAAAAAADYZYkwAAAAAAAAAAAAAAAAdAAk',\n        originFileObj: new File([], 'aaa.zip'),\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -4,\n        url: 'https://cdn.xxx.com/aaa',\n      },\n      {\n        name: 'not-image',\n        status: 'done',\n        uid: -5,\n        url: 'https://cdn.xxx.com/aaa.xx',\n      },\n      {\n        name: 'not-image',\n        status: 'done',\n        uid: -6,\n        url: 'https://cdn.xxx.com/aaa.png/xx.xx',\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -7,\n        url: 'https://cdn.xxx.com/xx.xx/aaa.png',\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -8,\n        url: 'https://cdn.xxx.com/xx.xx/aaa.png',\n        thumbUrl: 'data:image/png;base64,UEsDBAoAAAAAADYZYkwAAAAAAAAAAAAAAAAdAAk',\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -9,\n        url: 'https://cdn.xxx.com/xx.xx/aaa.png?query=123',\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -10,\n        url: 'https://cdn.xxx.com/xx.xx/aaa.png#anchor',\n      },\n      {\n        name: 'image',\n        status: 'done',\n        uid: -11,\n        url: 'https://cdn.xxx.com/xx.xx/aaa.png?query=some.query.with.dot',\n      },\n    ];\n    const props = {\n      props: {\n        defaultFileList: list,\n        listType: 'picture',\n        action: '',\n      },\n      slots: {\n        default: () => h('button', 'upload'),\n      },\n      sync: false,\n    };\n    const wrapper = mount(Upload, props);\n    Vue.nextTick(() => {\n      expect(wrapper.html()).toMatchSnapshot();\n      done();\n    });\n  });\n});\n"
  },
  {
    "path": "components/upload/demo/avatar.vue",
    "content": "<docs>\n---\norder: 1\ntitle:\n  zh-CN: 用户头像\n  en-US: Avatar\n---\n\n## zh-CN\n\n点击上传用户头像，并使用 `beforeUpload` 限制用户上传的图片格式和大小。\n\n> `beforeUpload` 的返回值可以是一个 Promise 以支持异步处理，如服务端校验等：可参考react版本[示例](http://react-component.github.io/upload/examples/beforeUpload.html)。\n\n## en-US\n\nClick to upload user's avatar, and validate size and format of picture with `beforeUpload`.\n\n> The return value of function `beforeUpload` can be a Promise to check asynchronously. [demo](http://react-component.github.io/upload/examples/beforeUpload.html)\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    name=\"avatar\"\n    list-type=\"picture-card\"\n    class=\"avatar-uploader\"\n    :show-upload-list=\"false\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :before-upload=\"beforeUpload\"\n    @change=\"handleChange\"\n  >\n    <img v-if=\"imageUrl\" :src=\"imageUrl\" alt=\"avatar\" />\n    <div v-else>\n      <loading-outlined v-if=\"loading\"></loading-outlined>\n      <plus-outlined v-else></plus-outlined>\n      <div class=\"ant-upload-text\">Upload</div>\n    </div>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue';\nimport { message } from 'ant-design-vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\n\nfunction getBase64(img: Blob, callback: (base64Url: string) => void) {\n  const reader = new FileReader();\n  reader.addEventListener('load', () => callback(reader.result as string));\n  reader.readAsDataURL(img);\n}\n\nconst fileList = ref([]);\nconst loading = ref<boolean>(false);\nconst imageUrl = ref<string>('');\n\nconst handleChange = (info: UploadChangeParam) => {\n  if (info.file.status === 'uploading') {\n    loading.value = true;\n    return;\n  }\n  if (info.file.status === 'done') {\n    // Get this url from response in real world.\n    getBase64(info.file.originFileObj, (base64Url: string) => {\n      imageUrl.value = base64Url;\n      loading.value = false;\n    });\n  }\n  if (info.file.status === 'error') {\n    loading.value = false;\n    message.error('upload error');\n  }\n};\n\nconst beforeUpload = (file: UploadProps['fileList'][number]) => {\n  const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';\n  if (!isJpgOrPng) {\n    message.error('You can only upload JPG file!');\n  }\n  const isLt2M = file.size / 1024 / 1024 < 2;\n  if (!isLt2M) {\n    message.error('Image must smaller than 2MB!');\n  }\n  return isJpgOrPng && isLt2M;\n};\n</script>\n<style scoped>\n.avatar-uploader > .ant-upload {\n  width: 128px;\n  height: 128px;\n}\n.ant-upload-select-picture-card i {\n  font-size: 32px;\n  color: #999;\n}\n\n.ant-upload-select-picture-card .ant-upload-text {\n  margin-top: 8px;\n  color: #666;\n}\n</style>\n"
  },
  {
    "path": "components/upload/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 点击上传\n  en-US: Upload by clicking\n---\n\n## zh-CN\n\n经典款式，用户点击按钮弹出文件选择框。\n\n## en-US\n\nClassic mode. File selection dialog pops up when upload button is clicked.\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    name=\"file\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :headers=\"headers\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Click to Upload\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { message } from 'ant-design-vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadChangeParam } from 'ant-design-vue';\n\nconst handleChange = (info: UploadChangeParam) => {\n  if (info.file.status !== 'uploading') {\n    console.log(info.file, info.fileList);\n  }\n  if (info.file.status === 'done') {\n    message.success(`${info.file.name} file uploaded successfully`);\n  } else if (info.file.status === 'error') {\n    message.error(`${info.file.name} file upload failed.`);\n  }\n};\n\nconst fileList = ref([]);\nconst headers = {\n  authorization: 'authorization-text',\n};\n</script>\n"
  },
  {
    "path": "components/upload/demo/custom-render.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 自定义上传列表\n  en-US: Custom Render\n---\n\n## zh-CN\n\n使用 `itemRender` 插槽进行完全自定义列表\n\n## en-US\n\nCustom render by using `itemRender` slot.\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    name=\"file\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :headers=\"headers\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Click to Upload\n    </a-button>\n    <template #itemRender=\"{ file, actions }\">\n      <a-space>\n        <span :style=\"file.status === 'error' ? 'color: red' : ''\">{{ file.name }}</span>\n        <a href=\"javascript:;\" @click=\"actions.download\">download</a>\n        <a href=\"javascript:;\" @click=\"actions.remove\">delete</a>\n      </a-space>\n    </template>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { message } from 'ant-design-vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\n\nconst handleChange = (info: UploadChangeParam) => {\n  if (info.file.status !== 'uploading') {\n    console.log(info.file, info.fileList);\n  }\n  if (info.file.status === 'done') {\n    message.success(`${info.file.name} file uploaded successfully`);\n  } else if (info.file.status === 'error') {\n    message.error(`${info.file.name} file upload failed.`);\n  }\n};\n\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '-1',\n    name: 'xxx.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '3',\n    name: 'zzz.png',\n    status: 'error',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/zzz.png',\n  },\n]);\nconst headers = { authorization: 'authorization-text' };\n</script>\n"
  },
  {
    "path": "components/upload/demo/customize-progress-bar.vue",
    "content": "<docs>\n---\norder: 15\ntitle:\n  zh-CN: 自定义进度条样式\n  en-US: Customize Progress Bar\n---\n\n## zh-CN\n\n使用 `progress` 属性自定义进度条样式。\n\n## en-US\n\nUse `progress` for customize progress bar.\n\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    name=\"file\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :headers=\"headers\"\n    :progress=\"progress\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Click to Upload\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { message } from 'ant-design-vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\nconst handleChange = (info: UploadChangeParam) => {\n  if (info.file.status !== 'uploading') {\n    console.log(info.file, info.fileList);\n  }\n  if (info.file.status === 'done') {\n    message.success(`${info.file.name} file uploaded successfully`);\n  } else if (info.file.status === 'error') {\n    message.error(`${info.file.name} file upload failed.`);\n  }\n};\n\nconst fileList = ref([]);\nconst progress: UploadProps['progress'] = {\n  strokeColor: {\n    '0%': '#108ee9',\n    '100%': '#87d068',\n  },\n  strokeWidth: 3,\n  format: percent => `${parseFloat(percent.toFixed(2))}%`,\n  class: 'test',\n};\nconst headers = { authorization: 'authorization-text' };\n</script>\n"
  },
  {
    "path": "components/upload/demo/defaultFileList.vue",
    "content": "<docs>\n---\norder: 2\ntitle:\n  zh-CN: 已上传的文件列表\n  en-US: Default Files\n---\n\n## zh-CN\n\n使用 `fileList` 设置已上传的内容。\n\n## en-US\n\nUse `fileList` for uploaded files when page init.\n</docs>\n\n<template>\n  <a-upload v-model:file-list=\"fileList\" action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\">\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Upload\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadProps } from 'ant-design-vue';\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '1',\n    name: 'xxx.png',\n    status: 'done',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/xxx.png',\n  },\n  {\n    uid: '2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'http://www.baidu.com/yyy.png',\n  },\n  {\n    uid: '3',\n    name: 'zzz.png',\n    status: 'error',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/zzz.png',\n  },\n]);\n</script>\n"
  },
  {
    "path": "components/upload/demo/directory.vue",
    "content": "<docs>\n---\norder: 8\ntitle:\n  zh-CN: 文件夹上传\n  en-US: Upload directory\n---\n\n## zh-CN\n\n支持上传一个文件夹里的所有文件。\n\n## en-US\n\nYou can select and upload a whole directory.\n</docs>\n\n<template>\n  <a-upload action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\" directory>\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Upload Directory\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { UploadOutlined } from '@ant-design/icons-vue';\n</script>\n"
  },
  {
    "path": "components/upload/demo/drag.vue",
    "content": "<docs>\n---\norder: 5\ntitle:\n  zh-CN: 拖拽上传\n  en-US: Drag and Drop\n---\n\n## zh-CN\n\n把文件拖入指定区域，完成上传，同样支持点击上传。\n\n设置 `multiple` 后，可以一次上传多个文件。\n\n## en-US\n\nYou can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.\n\nWe can upload serveral files at once by giving the input the `multiple` attribute.\n</docs>\n\n<template>\n  <a-upload-dragger\n    v-model:fileList=\"fileList\"\n    name=\"file\"\n    :multiple=\"true\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    @change=\"handleChange\"\n    @drop=\"handleDrop\"\n  >\n    <p class=\"ant-upload-drag-icon\">\n      <inbox-outlined></inbox-outlined>\n    </p>\n    <p class=\"ant-upload-text\">Click or drag file to this area to upload</p>\n    <p class=\"ant-upload-hint\">\n      Support for a single or bulk upload. Strictly prohibit from uploading company data or other\n      band files\n    </p>\n  </a-upload-dragger>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { InboxOutlined } from '@ant-design/icons-vue';\nimport { message } from 'ant-design-vue';\nimport type { UploadChangeParam } from 'ant-design-vue';\nconst fileList = ref([]);\nconst handleChange = (info: UploadChangeParam) => {\n  const status = info.file.status;\n  if (status !== 'uploading') {\n    console.log(info.file, info.fileList);\n  }\n  if (status === 'done') {\n    message.success(`${info.file.name} file uploaded successfully.`);\n  } else if (status === 'error') {\n    message.error(`${info.file.name} file upload failed.`);\n  }\n};\nfunction handleDrop(e: DragEvent) {\n  console.log(e);\n}\n</script>\n"
  },
  {
    "path": "components/upload/demo/fileList.vue",
    "content": "<docs>\n---\norder: 4\ntitle:\n  zh-CN: 完全控制的上传列表\n  en-US: Complete control over file list\n---\n\n## zh-CN\n\n使用 `fileList` 对列表进行完全控制，可以实现各种自定义功能，以下演示二种情况：\n\n1. 上传列表数量的限制。\n\n2. 读取远程路径并显示链接。\n\n## en-US\n\nYou can gain full control over filelist by configuring `fileList`. You can accomplish all kinds of customed functions. The following shows two circumstances:\n\n1. limit the number of uploaded files.\n\n2. read from response and show file link.\n</docs>\n\n<template>\n  <a-upload\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :multiple=\"true\"\n    :file-list=\"fileList\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Upload\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '-1',\n    name: 'xxx.png',\n    status: 'done',\n    url: 'http://www.baidu.com/xxx.png',\n  },\n]);\nconst handleChange = (info: UploadChangeParam) => {\n  let resFileList = [...info.fileList];\n\n  // 1. Limit the number of uploaded files\n  //    Only to show two recent uploaded files, and old ones will be replaced by the new\n  resFileList = resFileList.slice(-2);\n\n  // 2. read from response and show file link\n  resFileList = resFileList.map(file => {\n    if (file.response) {\n      // Component will show file.url as link\n      file.url = file.response.url;\n    }\n    return file;\n  });\n\n  fileList.value = resFileList;\n};\n</script>\n"
  },
  {
    "path": "components/upload/demo/index.vue",
    "content": "<template>\n  <demo-sort>\n    <Basic />\n    <Avatar />\n    <DefaultFileList />\n    <PictureCard />\n    <FileList />\n    <Drag />\n    <PictureStyle />\n    <UploadManually />\n    <Directory />\n    <PreviewFile />\n    <TransformFile />\n    <customizeProgressBarVue />\n    <maxCountVue />\n    <uploadCustomActionIconVue />\n    <uploadPngOnlyVue />\n    <customRenderVue />\n  </demo-sort>\n</template>\n<script lang=\"ts\">\nimport Basic from './basic.vue';\nimport Avatar from './avatar.vue';\nimport DefaultFileList from './defaultFileList.vue';\nimport PictureCard from './picture-card.vue';\nimport FileList from './fileList.vue';\nimport Drag from './drag.vue';\nimport PictureStyle from './picture-style.vue';\nimport UploadManually from './upload-manually.vue';\nimport Directory from './directory.vue';\nimport PreviewFile from './preview-file.vue';\nimport TransformFile from './transform-file.vue';\nimport customizeProgressBarVue from './customize-progress-bar.vue';\nimport maxCountVue from './max-count.vue';\nimport uploadCustomActionIconVue from './upload-custom-action-icon.vue';\nimport uploadPngOnlyVue from './upload-png-only.vue';\nimport customRenderVue from './custom-render.vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    Avatar,\n    DefaultFileList,\n    PictureCard,\n    FileList,\n    Drag,\n    PictureStyle,\n    UploadManually,\n    Directory,\n    PreviewFile,\n    TransformFile,\n    customizeProgressBarVue,\n    maxCountVue,\n    uploadCustomActionIconVue,\n    uploadPngOnlyVue,\n    customRenderVue,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n"
  },
  {
    "path": "components/upload/demo/max-count.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 限制数量\n  en-US: Max Count\n---\n\n## zh-CN\n\n通过 `maxCount` 限制上传数量。当为 `1` 时，始终用最新上传的代替当前。\n\n## en-US\n\nLimit files with `maxCount`. Will replace current one when `maxCount` is `1`.\n</docs>\n\n<template>\n  <a-space direction=\"vertical\" style=\"width: 100%\" size=\"large\">\n    <a-upload\n      v-model:file-list=\"fileList\"\n      list-type=\"picture\"\n      :max-count=\"1\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        Upload (Max: 1)\n      </a-button>\n    </a-upload>\n    <a-upload\n      v-model:file-list=\"fileList2\"\n      list-type=\"picture\"\n      :max-count=\"3\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        Upload (Max: 3)\n      </a-button>\n    </a-upload>\n  </a-space>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadProps } from 'ant-design-vue';\nconst fileList = ref<UploadProps['fileList']>([]);\nconst fileList2 = ref<UploadProps['fileList']>([]);\n</script>\n"
  },
  {
    "path": "components/upload/demo/picture-card.vue",
    "content": "<docs>\n---\norder: 3\ntitle:\n  zh-CN: 照片墙\n  en-US: Pictures Wall\n---\n\n## zh-CN\n\n用户可以上传图片并在列表中显示缩略图。当上传照片数到达限制后，上传按钮消失。\n\n## en-US\n\nAfter users upload picture, the thumbnail will be shown in list. The upload button will disappear when count meets limitation.\n</docs>\n\n<template>\n  <div class=\"clearfix\">\n    <a-upload\n      v-model:file-list=\"fileList\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n      list-type=\"picture-card\"\n      @preview=\"handlePreview\"\n    >\n      <div v-if=\"fileList.length < 8\">\n        <plus-outlined />\n        <div style=\"margin-top: 8px\">Upload</div>\n      </div>\n    </a-upload>\n    <a-modal :open=\"previewVisible\" :title=\"previewTitle\" :footer=\"null\" @cancel=\"handleCancel\">\n      <img alt=\"example\" style=\"width: 100%\" :src=\"previewImage\" />\n    </a-modal>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { PlusOutlined } from '@ant-design/icons-vue';\nimport { ref } from 'vue';\nimport type { UploadProps } from 'ant-design-vue';\n\nfunction getBase64(file: File) {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    reader.onload = () => resolve(reader.result);\n    reader.onerror = error => reject(error);\n  });\n}\n\nconst previewVisible = ref(false);\nconst previewImage = ref('');\nconst previewTitle = ref('');\n\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '-1',\n    name: 'image.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-2',\n    name: 'image.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-3',\n    name: 'image.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-4',\n    name: 'image.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-xxx',\n    percent: 50,\n    name: 'image.png',\n    status: 'uploading',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-5',\n    name: 'image.png',\n    status: 'error',\n  },\n]);\n\nconst handleCancel = () => {\n  previewVisible.value = false;\n  previewTitle.value = '';\n};\nconst handlePreview = async (file: UploadProps['fileList'][number]) => {\n  if (!file.url && !file.preview) {\n    file.preview = (await getBase64(file.originFileObj)) as string;\n  }\n  previewImage.value = file.url || file.preview;\n  previewVisible.value = true;\n  previewTitle.value = file.name || file.url.substring(file.url.lastIndexOf('/') + 1);\n};\n</script>\n<style scoped>\n/* you can make up upload button and sample style by using stylesheets */\n.ant-upload-select-picture-card i {\n  font-size: 32px;\n  color: #999;\n}\n\n.ant-upload-select-picture-card .ant-upload-text {\n  margin-top: 8px;\n  color: #666;\n}\n</style>\n"
  },
  {
    "path": "components/upload/demo/picture-style.vue",
    "content": "<docs>\n---\norder: 6\ntitle:\n  zh-CN: 图片列表样式\n  en-US: Pictures with list style\n---\n\n## zh-CN\n\n上传文件为图片，可展示本地缩略图。\n\n## en-US\n\nIf uploaded file is a picture, the thumbnail can be shown.\n</docs>\n\n<template>\n  <div>\n    <a-upload\n      v-model:file-list=\"fileList\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n      list-type=\"picture\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        upload\n      </a-button>\n    </a-upload>\n    <br />\n    <br />\n    <a-upload\n      v-model:file-list=\"fileList1\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n      list-type=\"picture\"\n      class=\"upload-list-inline\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        upload\n      </a-button>\n    </a-upload>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadProps } from 'ant-design-vue';\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '-1',\n    name: 'xxx.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n]);\nconst fileList1 = ref<UploadProps['fileList']>([\n  {\n    uid: '-1',\n    name: 'xxx.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n  {\n    uid: '-2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n    thumbUrl: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n  },\n]);\n</script>\n<style scoped>\n/* tile uploaded pictures */\n.upload-list-inline :deep(.ant-upload-list-item) {\n  float: left;\n  width: 200px;\n  margin-right: 8px;\n}\n.upload-list-inline [class*='-upload-list-rtl'] :deep(.ant-upload-list-item) {\n  float: right;\n}\n</style>\n"
  },
  {
    "path": "components/upload/demo/preview-file.vue",
    "content": "<docs>\n---\norder: 9\ntitle:\n  zh-CN: 自定义预览\n  en-US: Customize preview file\n---\n\n## zh-CN\n\n自定义本地预览，用于处理非图片格式文件（例如视频文件）。\n\n## en-US\n\nCustomize local preview. Can handle with non-image format files such as video.\n</docs>\n\n<template>\n  <div>\n    <a-upload\n      v-model:file-list=\"fileList\"\n      list-type=\"picture\"\n      action=\"//jsonplaceholder.typicode.com/posts/\"\n      :preview-file=\"previewFile\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        Upload\n      </a-button>\n    </a-upload>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadProps } from 'ant-design-vue';\n\nconst previewFile: UploadProps['previewFile'] = async file => {\n  console.log('Your upload file:', file);\n  // Your process logic. Here we just mock to the same file\n  const res = await fetch('https://next.json-generator.com/api/json/get/4ytyBoLK8', {\n    method: 'POST',\n    body: file,\n  });\n  const { thumbnail } = await res.json();\n  return thumbnail;\n};\nconst fileList = ref([]);\n</script>\n"
  },
  {
    "path": "components/upload/demo/transform-file.vue",
    "content": "<docs>\n---\norder: 10\ntitle:\n  zh-CN: 上传前转换文件\n  en-US: Transform file before request\n---\n\n## zh-CN\n\n使用 `beforeUpload` 转换上传的文件（例如添加水印）。\n\n## en-US\n\nUse `beforeUpload` for transform file before request such as add a watermark.\n</docs>\n\n<template>\n  <div>\n    <a-upload\n      v-model:file-list=\"fileList\"\n      action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n      :before-upload=\"beforeUpload\"\n    >\n      <a-button>\n        <upload-outlined></upload-outlined>\n        Upload\n      </a-button>\n    </a-upload>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadProps } from 'ant-design-vue';\n\nconst beforeUpload: UploadProps['beforeUpload'] = file => {\n  return new Promise(resolve => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    reader.onload = () => {\n      const img: HTMLImageElement = document.createElement('img');\n      img.src = reader.result as string;\n      img.onload = () => {\n        const canvas = document.createElement('canvas');\n        canvas.width = img.naturalWidth;\n        canvas.height = img.naturalHeight;\n        const ctx = canvas.getContext('2d');\n        ctx.drawImage(img, 0, 0);\n        ctx.fillStyle = 'red';\n        ctx.textBaseline = 'middle';\n        ctx.font = '33px Arial';\n        ctx.fillText('Ant Design Vue', 20, 20);\n        canvas.toBlob(resolve);\n      };\n    };\n  });\n};\n\nconst fileList = ref<UploadProps['fileList']>([]);\n</script>\n"
  },
  {
    "path": "components/upload/demo/upload-custom-action-icon.vue",
    "content": "<docs>\n---\norder: 12\ntitle:\n  zh-CN: 自定义交互图标\n  en-US: custom action icon\n---\n\n## zh-CN\n\n使用相应插槽设置列表交互图标。\n\n## en-US\n\nUse slot for custom action icons of files.\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :show-upload-list=\"{ showDownloadIcon: true, showRemoveIcon: true }\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Upload\n    </a-button>\n    <template #downloadIcon>download</template>\n    <template #removeIcon><StarOutlined @click=\"handleClick\"></StarOutlined></template>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined, StarOutlined } from '@ant-design/icons-vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\n\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '1',\n    name: 'xxx.png',\n    status: 'done',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/xxx.png',\n  },\n  {\n    uid: '2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'http://www.baidu.com/yyy.png',\n  },\n  {\n    uid: '3',\n    name: 'zzz.png',\n    status: 'error',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/zzz.png',\n  },\n]);\n\nconst handleChange = ({ file, fileList }: UploadChangeParam) => {\n  if (file.status !== 'uploading') {\n    console.log(file, fileList);\n  }\n};\nfunction handleClick(e: MouseEvent) {\n  console.log(e, 'custom removeIcon event');\n}\n</script>\n"
  },
  {
    "path": "components/upload/demo/upload-manually.vue",
    "content": "<docs>\n---\norder: 7\ntitle:\n  zh-CN: 手动上传\n  en-US: Upload manually\n---\n\n## zh-CN\n\n`beforeUpload` 返回 `false` 后，手动上传文件。\n\n## en-US\n\nUpload files manually after `beforeUpload` returns `false`.\n</docs>\n\n<template>\n  <div class=\"clearfix\">\n    <a-upload :file-list=\"fileList\" :before-upload=\"beforeUpload\" @remove=\"handleRemove\">\n      <a-button>\n        <upload-outlined></upload-outlined>\n        Select File\n      </a-button>\n    </a-upload>\n    <a-button\n      type=\"primary\"\n      :disabled=\"fileList.length === 0\"\n      :loading=\"uploading\"\n      style=\"margin-top: 16px\"\n      @click=\"handleUpload\"\n    >\n      {{ uploading ? 'Uploading' : 'Start Upload' }}\n    </a-button>\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport request from 'umi-request';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport { message } from 'ant-design-vue';\nimport type { UploadProps } from 'ant-design-vue';\n\nconst fileList = ref<UploadProps['fileList']>([]);\nconst uploading = ref<boolean>(false);\n\nconst handleRemove: UploadProps['onRemove'] = file => {\n  const index = fileList.value.indexOf(file);\n  const newFileList = fileList.value.slice();\n  newFileList.splice(index, 1);\n  fileList.value = newFileList;\n};\n\nconst beforeUpload: UploadProps['beforeUpload'] = file => {\n  fileList.value = [...(fileList.value || []), file];\n  return false;\n};\n\nconst handleUpload = () => {\n  const formData = new FormData();\n  fileList.value.forEach((file: UploadProps['fileList'][number]) => {\n    formData.append('files[]', file as any);\n  });\n  uploading.value = true;\n\n  // You can use any AJAX library you like\n  request('https://www.mocky.io/v2/5cc8019d300000980a055e76', {\n    method: 'post',\n    data: formData,\n  })\n    .then(() => {\n      fileList.value = [];\n      uploading.value = false;\n      message.success('upload successfully.');\n    })\n    .catch(() => {\n      uploading.value = false;\n      message.error('upload failed.');\n    });\n};\n</script>\n"
  },
  {
    "path": "components/upload/demo/upload-png-only.vue",
    "content": "<docs>\n---\norder: 7.1\ntitle:\n  zh-CN: 只上传 png 图片\n  en-US: Upload png file only\n---\n\n## zh-CN\n\n`beforeUpload` 返回 `false` 或 `Promise.reject` 时，只用于拦截上传行为，不会阻止文件进入上传列表（[原因](https://github.com/ant-design/ant-design/issues/15561#issuecomment-475108235)）。如果需要阻止列表展现，可以通过返回 `Upload.LIST_IGNORE` 实现。\n\n## en-US\n\n`beforeUpload` only prevent upload behavior when return false or reject promise, the prevented file would still show in file list. Here is the example you can keep prevented files out of list by return `UPLOAD.LIST_IGNORE`.\n\n</docs>\n\n<template>\n  <a-upload\n    v-model:file-list=\"fileList\"\n    action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n    :before-upload=\"beforeUpload\"\n    @change=\"handleChange\"\n  >\n    <a-button>\n      <upload-outlined></upload-outlined>\n      Upload png only\n    </a-button>\n  </a-upload>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport type { UploadChangeParam, UploadProps } from 'ant-design-vue';\nimport { message, Upload } from 'ant-design-vue';\nconst fileList = ref<UploadProps['fileList']>([\n  {\n    uid: '1',\n    name: 'xxx.png',\n    status: 'done',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/xxx.png',\n  },\n  {\n    uid: '2',\n    name: 'yyy.png',\n    status: 'done',\n    url: 'http://www.baidu.com/yyy.png',\n  },\n  {\n    uid: '3',\n    name: 'zzz.png',\n    status: 'error',\n    response: 'Server Error 500', // custom error message to show\n    url: 'http://www.baidu.com/zzz.png',\n  },\n]);\n\nconst handleChange = ({ file, fileList }: UploadChangeParam) => {\n  if (file.status !== 'uploading') {\n    console.log(file, fileList);\n  }\n};\nconst beforeUpload: UploadProps['beforeUpload'] = file => {\n  const isPNG = file.type === 'image/png';\n  if (!isPNG) {\n    message.error(`${file.name} is not a png file`);\n  }\n  return isPNG || Upload.LIST_IGNORE;\n};\n</script>\n"
  },
  {
    "path": "components/upload/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Data Entry\ntitle: Upload\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*93ymR4RD4S0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*l1nlSryXib8AAAAAAAAAAAAADrJ8AQ/original\n---\n\nUpload file by selecting or dragging.\n\n## When To Use\n\nUploading is the process of publishing information (web pages, text, pictures, video, etc.) to a remote server via a web page or upload tool.\n\n- When you need to upload one or more files.\n- When you need to show the process of uploading.\n- When you need to upload files by dragging and dropping.\n\n## API\n\n| Property | Description | Type | Default | Version |  |\n| --- | --- | --- | --- | --- | --- |\n| accept | File types that can be accepted. See [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept) | string | - |  |  |\n| action | Uploading URL | string\\|(file) => `Promise` | - |  |  |\n| beforeUpload | Hook function which will be executed before uploading. Uploading will be stopped with `false` or a rejected Promise returned. | (file, fileList) => `boolean` \\| `Promise` | - |  |\n| customRequest | override for the default xhr behavior allowing for additional customization and ability to implement your own XMLHttpRequest | function | - |  |  |\n| data | Uploading params or function which can return uploading params. | object\\|function(file) | - |  |  |\n| directory | Support upload whole directory（[caniuse](https://caniuse.com/#feat=input-file-directory)） | boolean | false | 3.0 |  |\n| disabled | disable upload button | boolean | - |  |  |\n| downloadIcon | custom download icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| fileList | List of files that have been uploaded (controlled). Here is a common issue [#2423](https://github.com/ant-design/ant-design/issues/2423) when using it | object\\[] | - |  |  |\n| headers | Set request headers, valid above IE10. | object | - |  |  |\n| iconRender | Custom show icon | v-slot:iconRender=\"{file: UploadFile, listType?: UploadListType}\" | - | 3.0 |  |\n| isImageUrl | Customize if render &lt;img /> in thumbnail | (file: UploadFile) => boolean | - | 3.0 |  |\n| itemRender | Custom item of uploadList | v-slot:itemRender=\"{originNode: VNode, file: UploadFile, fileList: object\\[], actions: { download: function, preview: function, remove: function }\" | - | 3.0 |  |\n| listType | Built-in stylesheets, support for three types: `text`, `picture` or `picture-card` | string | `text` |  |  |\n| maxCount | Limit the number of uploaded files. Will replace current one when `maxCount` is `1` | number | - | 3.0 |  |\n| method | http method of upload request | string | `post` | 1.5.0 |  |\n| multiple | Whether to support selected multiple file. `IE10+` supported. You can select multiple files with CTRL holding down while multiple is set to be true | boolean | false |  |  |\n| name | The name of uploading file | string | `file` |  |  |\n| openFileDialogOnClick | Click open file dialog | boolean | true | 3.0 |  |\n| previewFile | Customize preview file logic | (file: File \\| Blob) => Promise&lt;dataURL: string> | - | 1.5.0 |  |\n| previewIcon | custom preview icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| progress | Custom progress bar | [ProgressProps](/components/progress/#api) (support `type=\"line\"` only) | { strokeWidth: 2, showInfo: false } | 3.0 |  |\n| removeIcon | custom remove icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| showUploadList | Whether to show default upload list, could be an object to specify `showPreviewIcon`, `showRemoveIcon` and `showDownloadIcon` individually | boolean \\| { showPreviewIcon?: boolean, showRemoveIcon?: boolean, showDownloadIcon?: boolean } | true | showDownloadIcon(3.0) |  |\n| supportServerRender | Need to be turned on while the server side is rendering. | boolean | false |  |  |\n| withCredentials | ajax upload with cookie sent | boolean | false |  |  |\n\n### events\n\n| Events Name | Description | Arguments | Version |  |\n| --- | --- | --- | --- | --- |\n| change | A callback function, can be executed when uploading state is changing. See [change](#change) | function | - |  |\n| download | Click the method to download the file, pass the method to perform the method logic, do not pass the default jump to the new TAB. | function(file): void | Jump to new TAB | 1.5.0 |\n| drop | A callback function executed when files are dragged and dropped into upload area | (event: DragEvent) => void | - | 3.0 |\n| preview | A callback function, will be executed when file link or preview icon is clicked. | function(file) | - |  |\n| reject | A callback function, will be executed when drop files is not accept. | function(fileList) | - |  |\n| remove   | A callback function, will be executed when removing file button is clicked, remove event will be prevented when return value is false or a Promise which resolve(false) or reject | function(file): boolean \\| Promise | -   | 3.0 |\n\n### UploadFile\n\nExtends File with additional props.\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| crossOrigin | CORS settings attributes | `'anonymous'` \\| `'use-credentials'` \\| `''` | - | 3.3.0 |\n| name | File name | string | - |  |\n| percent | Upload progress percent | number | - |  |\n| status | Upload status. Show different style when configured | `error` \\| `success` \\| `done` \\| `uploading` \\| `removed` | - |  |\n| thumbUrl | Thumb image url | string | - |  |\n| uid | unique id. Will auto generate when not provided | string | - |  |\n| url | Download url | string | - |  |\n\n### change\n\n> The function will be called when uploading is in progress, completed or failed\n\nWhen uploading state change, it returns:\n\n```jsx\n{\n  file: { /* ... */ },\n  fileList: [ /* ... */ ],\n  event: { /* ... */ },\n}\n```\n\n1. `file` File object for the current operation.\n\n   ```jsx\n   {\n      uid: 'uid',   // unique identifier, negative is recommend, to prevent interference with internal generated id\n      name: 'xx.png',   // file name\n      status: 'done', // options：uploading, done, error, removed\n      response: '{\"status\": \"success\"}', // response from server\n      linkProps: '{\"download\": \"image\"}', // additional html props of file link\n      xhr: 'XMLHttpRequest{ ... }', // XMLHttpRequest Header\n   }\n   ```\n\n2. `fileList` current list of files\n\n3. `event` response from server, including uploading progress, supported by advanced browsers.\n\n## FAQ\n\n### How do I implement upload server side?\n\n- You can consult [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload/wiki#server-side) about how to implement server side upload interface.\n- There is a mock example of [express](https://github.com/react-component/upload/blob/master/server.js) in rc-upload.\n\n### How to select albums or folders on mobile devices?\n\nYou can set `:capture=\"null\"`\n\n### I want to display download links.\n\nPlease set property `url` of each item in `fileList` to control content of link.\n\n### How to use `customRequest`?\n\nSee <https://github.com/react-component/upload#customrequest>.\n\n### Why will the `fileList` that's in control not trigger `change` `status` update when the file is not in the list?\n\n`change` only trigger when file in the list, it will ignore left events when removed from the list. Please note that there exist bug which makes event still trigger even the file is not in the list before `3.0.0-beta.10`.\n\n### Why does `change` sometimes return File object and other times return { originFileObj: File }?\n\nFor compatible case, we return File object when `beforeUpload` return `false`. It will merge to `{ originFileObj: File }` in next major version. Current version is compatible to get origin file by `info.file.originFileObj`. You can change this before major release.\n\n### Why sometime Chrome can not upload?\n\nChrome update will also break native upload. Please restart chrome to finish the upload work. Ref:\n\n- [#32672](https://github.com/ant-design/ant-design/issues/32672)\n- [#32913](https://github.com/ant-design/ant-design/issues/32913)\n- [#33988](https://github.com/ant-design/ant-design/issues/33988)\n"
  },
  {
    "path": "components/upload/index.tsx",
    "content": "import type { App } from 'vue';\nimport Upload, { LIST_IGNORE } from './Upload';\nimport Dragger from './Dragger';\n\nexport type { UploadProps, UploadListProps, UploadChangeParam, UploadFile } from './interface';\n\n/* istanbul ignore next */\nexport const UploadDragger = Dragger;\n\nexport default Object.assign(Upload, {\n  Dragger,\n  LIST_IGNORE,\n  install(app: App) {\n    app.component(Upload.name, Upload);\n    app.component(Dragger.name, Dragger);\n    return app;\n  },\n});\n"
  },
  {
    "path": "components/upload/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 上传\ntype: 数据录入\ntitle: Upload\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*93ymR4RD4S0AAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*l1nlSryXib8AAAAAAAAAAAAADrJ8AQ/original\n---\n\n文件选择上传和拖拽上传控件。\n\n## 何时使用\n\n上传是将信息（网页、文字、图片、视频等）通过网页或者上传工具发布到远程服务器上的过程。\n\n- 当需要上传一个或一些文件时。\n- 当需要展现上传的进度时。\n- 当需要使用拖拽交互时。\n\n## API\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |  |\n| --- | --- | --- | --- | --- | --- |\n| accept | 接受上传的文件类型, 详见 [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept) | string | - |  |  |\n| action | 上传的地址 | string\\|(file) => `Promise` | - |  |  |\n| beforeUpload | 上传文件之前的钩子，参数为上传的文件，若返回 `false` 则停止上传。支持返回一个 Promise 对象，Promise 对象 reject 时则停止上传，resolve 时开始上传（ resolve 传入 `File` 或 `Blob` 对象则上传 resolve 传入对象）。 | (file, fileList) => `boolean` \\| `Promise` | - |  |\n| customRequest | 通过覆盖默认的上传行为，可以自定义自己的上传实现 | function | - |  |  |\n| data | 上传所需参数或返回上传参数的方法 | object\\|(file) => object | - |  |  |\n| directory | 支持上传文件夹（[caniuse](https://caniuse.com/#feat=input-file-directory)） | boolean | false | 3.0 |  |\n| disabled | 是否禁用 | boolean | - |  |  |\n| downloadIcon | 自定义下载 icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| fileList | 已经上传的文件列表（受控） | object\\[] | - |  |  |\n| headers | 设置上传的请求头部，IE10 以上有效 | object | - |  |  |\n| iconRender | 自定义显示 icon | v-slot:iconRender=\"{file: UploadFile, listType?: UploadListType}\" | - | 3.0 |  |\n| isImageUrl | 自定义缩略图是否使用 &lt;img /> 标签进行显示 | (file: UploadFile) => boolean | - | 3.0 |  |\n| itemRender | 自定义上传列表项 | v-slot:itemRender=\"{originNode: VNode, file: UploadFile, fileList: object\\[], actions: { download: function, preview: function, remove: function }\" | - | 3.0 |  |\n| listType | 上传列表的内建样式，支持三种基本样式 `text`, `picture` 和 `picture-card` | string | `text` |  |  |\n| maxCount | 限制上传数量。当为 1 时，始终用最新上传的文件代替当前文件 | number | - | 3.0 |  |\n| method | 上传请求的 http method | string | `post` | 1.5.0 |  |\n| multiple | 是否支持多选文件，`ie10+` 支持。开启后按住 ctrl 可选择多个文件。 | boolean | false |  |  |\n| name | 发到后台的文件参数名 | string | `file` |  |  |\n| openFileDialogOnClick | 点击打开文件对话框 | boolean | true | 3.0 |  |\n| previewFile | 自定义文件预览逻辑 | (file: File \\| Blob) => Promise&lt;dataURL: string> | - | 1.5.0 |  |\n| previewIcon | 自定义预览 icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| progress | 自定义进度条样式 | [ProgressProps](/components/progress/#api)（仅支持 `type=\"line\"`） | { strokeWidth: 2, showInfo: false } | 3.0 |  |\n| removeIcon | 自定义删除 icon | v-slot:iconRender=\"{file: UploadFile}\" | - | 3.0 |  |\n| showUploadList | 是否展示 uploadList, 可设为一个对象，用于单独设定 showPreviewIcon, showRemoveIcon 和 showDownloadIcon | boolean \\| { showPreviewIcon?: boolean, showRemoveIcon?: boolean, showDownloadIcon?: boolean } | true | showDownloadIcon(3.0) |  |\n| supportServerRender | 服务端渲染时需要打开这个 | boolean | false |  |  |\n| withCredentials | 上传请求时是否携带 cookie | boolean | false |  |  |\n\n### 事件\n\n| 事件名称 | 说明 | 回调参数 | 版本 |  |\n| --- | --- | --- | --- | --- |\n| change | 上传文件改变时的状态，详见 [change](#change) | function | - |  |\n| download | 点击下载文件时的回调，如果没有指定，则默认跳转到文件 url 对应的标签页。 | function(file): void | 跳转新标签页 | 1.5.0 |\n| drop | 当文件被拖入上传区域时执行的回调功能 | (event: DragEvent) => void | - | 3.0 |\n| preview | 点击文件链接或预览图标时的回调 | function(file) | - |  |\n| reject | 拖拽文件不符合 accept 类型时的回调 | function(fileList) | - |  |\n| remove   | 点击移除文件时的回调，返回值为 false 时不移除。支持返回一个 Promise 对象，Promise 对象 resolve(false) 或 reject 时不移除 | function(file): boolean \\| Promise | -   | 3.0 |\n\n### UploadFile\n\n继承自 File，附带额外属性用于渲染。\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| crossOrigin | CORS 属性设置 | `'anonymous'` \\| `'use-credentials'` \\| `''` | - | 3.3.0 |\n| name | 文件名 | string | - | - |\n| percent | 上传进度 | number | - | - |\n| status | 上传状态，不同状态展示颜色也会有所不同 | `error` \\| `success` \\| `done` \\| `uploading` \\| `removed` | - | - |\n| thumbUrl | 缩略图地址 | string | - | - |\n| uid | 唯一标识符，不设置时会自动生成 | string | - | - |\n| url | 下载地址 | string | - | - |\n\n### change\n\n> 上传中、完成、失败都会调用这个函数。\n\n文件状态改变的回调，返回为：\n\n```jsx\n{\n  file: { /* ... */ },\n  fileList: [ /* ... */ ],\n  event: { /* ... */ },\n}\n```\n\n1. `file` 当前操作的文件对象。\n\n   ```jsx\n   {\n      uid: 'uid',      // 文件唯一标识，建议设置为负数，防止和内部产生的 id 冲突\n      name: 'xx.png',   // 文件名\n      status: 'done', // 状态有：uploading done error removed\n      response: '{\"status\": \"success\"}', // 服务端响应内容\n      linkProps: '{\"download\": \"image\"}', // 下载链接额外的 HTML 属性\n      xhr: 'XMLHttpRequest{ ... }', // XMLHttpRequest Header\n   }\n   ```\n\n2. `fileList` 当前的文件列表。\n\n3. `event` 上传中的服务端响应内容，包含了上传进度等信息，高级浏览器支持。\n\n## FAQ\n\n### 服务端如何实现？\n\n- 服务端上传接口实现可以参考 [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload/wiki#server-side)。\n- 如果要做本地 mock 可以参考这个 [express 的例子](https://github.com/react-component/upload/blob/master/server.js)。\n\n### 手机设备如何选择相册或文件夹？\n\n你可以设置 `:capture=\"null\"`\n\n### 如何显示下载链接？\n\n请使用 fileList 属性设置数组项的 url 属性进行展示控制。\n\n### `customRequest` 怎么使用？\n\n请参考 <https://github.com/react-component/upload#customrequest>。\n\n### 为何 `fileList` 受控时，上传不在列表中的文件不会触发 `onChange` 后续的 `status` 更新事件？\n\n`onChange` 事件仅会作用于在列表中的文件，因而 `fileList` 不存在对应文件时后续事件会被忽略。请注意，在 `3.0.0-beta.10` 版本之前受控状态存在 bug 导致不在列表中的文件也会触发。\n\n### `onChange` 为什么有时候返回 File 有时候返回 { originFileObj: File }？\n\n历史原因，在 `beforeUpload` 返回 `false` 时，会返回 File 对象。在下个大版本我们会统一返回 `{ originFileObj: File }` 对象。当前版本已经兼容所有场景下 `info.file.originFileObj` 获取原 File 写法。你可以提前切换。\n\n### 为何有时 Chrome 点击 Upload 无法弹出文件选择框？\n\n与 antd 无关，原生上传也会失败。请重启 Chrome 浏览器，让其完成升级工作。相关 issue：\n\n- [#32672](https://github.com/ant-design/ant-design/issues/32672)\n- [#32913](https://github.com/ant-design/ant-design/issues/32913)\n- [#33988](https://github.com/ant-design/ant-design/issues/33988)\n"
  },
  {
    "path": "components/upload/interface.tsx",
    "content": "import type {\n  RcFile as OriRcFile,\n  UploadRequestOption as RcCustomRequestOptions,\n} from '../vc-upload/interface';\nimport type { ProgressProps } from '../progress';\nimport type { VueNode } from '../_util/type';\nimport type { ExtractPropTypes, CSSProperties, ImgHTMLAttributes } from 'vue';\nimport {\n  booleanType,\n  stringType,\n  functionType,\n  arrayType,\n  objectType,\n  someType,\n} from '../_util/type';\n\nexport interface FileType extends OriRcFile {\n  readonly lastModifiedDate: Date;\n}\n\nexport type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';\n\nexport interface HttpRequestHeader {\n  [key: string]: string;\n}\n\nexport interface UploadFile<T = any> {\n  uid: string;\n  size?: number;\n  name: string;\n  fileName?: string;\n  lastModified?: number;\n  lastModifiedDate?: Date;\n  url?: string;\n  status?: UploadFileStatus;\n  percent?: number;\n  thumbUrl?: string;\n  crossOrigin?: ImgHTMLAttributes['crossorigin'];\n  originFileObj?: FileType;\n  response?: T;\n  error?: any;\n  linkProps?: any;\n  type?: string;\n  xhr?: T;\n  preview?: string;\n}\n\nexport interface InternalUploadFile<T = any> extends UploadFile<T> {\n  originFileObj: FileType;\n}\n\nexport interface ShowUploadListInterface {\n  showRemoveIcon?: boolean;\n  showPreviewIcon?: boolean;\n  showDownloadIcon?: boolean;\n}\n\nexport interface UploadChangeParam<T = UploadFile> {\n  // https://github.com/ant-design/ant-design/issues/14420\n  file: T;\n  fileList: T[];\n  event?: { percent: number };\n}\n\nexport interface UploadLocale {\n  uploading?: string;\n  removeFile?: string;\n  downloadFile?: string;\n  uploadError?: string;\n  previewFile?: string;\n}\n\nexport type UploadType = 'drag' | 'select';\nexport type UploadListType = 'text' | 'picture' | 'picture-card';\nexport type UploadListProgressProps = Omit<ProgressProps, 'percent' | 'type'> & {\n  class?: string;\n  style?: CSSProperties;\n};\n\nexport type ItemRender<T = any> = (opt: {\n  originNode: VueNode;\n  file: UploadFile;\n  fileList: Array<UploadFile<T>>;\n  actions: {\n    download: () => void;\n    preview: () => void;\n    remove: () => void;\n  };\n}) => VueNode;\n\ntype PreviewFileHandler = (file: FileType | Blob) => PromiseLike<string>;\ntype TransformFileHandler = (\n  file: FileType,\n) => string | Blob | FileType | PromiseLike<string | Blob | FileType>;\ntype BeforeUploadValueType = void | boolean | string | Blob | FileType;\n\nfunction uploadProps<T = any>() {\n  return {\n    capture: someType<boolean | 'user' | 'environment'>([Boolean, String]),\n    type: stringType<UploadType>(),\n    name: String,\n    defaultFileList: arrayType<Array<UploadFile<T>>>(),\n    fileList: arrayType<Array<UploadFile<T>>>(),\n    action: someType<\n      string | ((file: FileType) => string) | ((file: FileType) => PromiseLike<string>)\n    >([String, Function]),\n    directory: booleanType(),\n    data: someType<\n      | Record<string, unknown>\n      | ((file: UploadFile<T>) => Record<string, unknown> | Promise<Record<string, unknown>>)\n    >([Object, Function]),\n    method: stringType<'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'>(),\n    headers: objectType<HttpRequestHeader>(),\n    showUploadList: someType<boolean | ShowUploadListInterface>([Boolean, Object]),\n    multiple: booleanType(),\n    accept: String,\n    beforeUpload:\n      functionType<\n        (\n          file: FileType,\n          FileList: FileType[],\n        ) => BeforeUploadValueType | Promise<BeforeUploadValueType>\n      >(),\n    onChange: functionType<(info: UploadChangeParam<UploadFile<T>>) => void>(),\n    'onUpdate:fileList':\n      functionType<(fileList: UploadChangeParam<UploadFile<T>>['fileList']) => void>(),\n    onDrop: functionType<(event: DragEvent) => void>(),\n    listType: stringType<UploadListType>(),\n    onPreview: functionType<(file: UploadFile<T>) => void>(),\n    onDownload: functionType<(file: UploadFile<T>) => void>(),\n    onReject: functionType<(fileList: FileType[]) => void>(),\n    onRemove: functionType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>(),\n    /** @deprecated Please use `onRemove` directly */\n    remove: functionType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>(),\n    supportServerRender: booleanType(),\n    disabled: booleanType(),\n    prefixCls: String,\n    customRequest: functionType<(options: RcCustomRequestOptions) => void>(),\n    withCredentials: booleanType(),\n    openFileDialogOnClick: booleanType(),\n    locale: objectType<UploadLocale>(),\n    id: String,\n    previewFile: functionType<PreviewFileHandler>(),\n    /** @deprecated Please use `beforeUpload` directly */\n    transformFile: functionType<TransformFileHandler>(),\n    iconRender:\n      functionType<(opt: { file: UploadFile<T>; listType?: UploadListType }) => VueNode>(),\n    isImageUrl: functionType<(file: UploadFile) => boolean>(),\n    progress: objectType<UploadListProgressProps>(),\n    itemRender: functionType<ItemRender<T>>(),\n    /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */\n    maxCount: Number,\n    height: someType([Number, String]),\n    removeIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    downloadIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    previewIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n  };\n}\n\nexport type UploadProps = Partial<ExtractPropTypes<ReturnType<typeof uploadProps>>>;\n\nexport interface UploadState<T = any> {\n  fileList: UploadFile<T>[];\n  dragState: string;\n}\n\nfunction uploadListProps<T = any>() {\n  return {\n    listType: stringType<UploadListType>(),\n    onPreview: functionType<(file: UploadFile<T>) => void>(),\n    onDownload: functionType<(file: UploadFile<T>) => void>(),\n    onRemove: functionType<(file: UploadFile<T>) => void | boolean>(),\n    items: arrayType<Array<UploadFile<T>>>(),\n    progress: objectType<UploadListProgressProps>(),\n    prefixCls: stringType<string>(),\n    showRemoveIcon: booleanType(),\n    showDownloadIcon: booleanType(),\n    showPreviewIcon: booleanType(),\n    removeIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    downloadIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    previewIcon: functionType<(opt: { file: UploadFile }) => VueNode>(),\n    locale: objectType<UploadLocale>(undefined as UploadLocale),\n    previewFile: functionType<PreviewFileHandler>(),\n    iconRender:\n      functionType<(opt: { file: UploadFile<T>; listType?: UploadListType }) => VueNode>(),\n    isImageUrl: functionType<(file: UploadFile) => boolean>(),\n    appendAction: functionType<() => VueNode>(),\n    appendActionVisible: booleanType(),\n    itemRender: functionType<ItemRender<T>>(),\n  };\n}\n\nexport type UploadListProps = Partial<ExtractPropTypes<ReturnType<typeof uploadListProps>>>;\nexport { uploadProps, uploadListProps };\n"
  },
  {
    "path": "components/upload/style/dragger.ts",
    "content": "import type { UploadToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst genDraggerStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls, iconCls } = token;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-drag`]: {\n        position: 'relative',\n        width: '100%',\n        height: '100%',\n        textAlign: 'center',\n        background: token.colorFillAlter,\n        border: `${token.lineWidth}px dashed ${token.colorBorder}`,\n        borderRadius: token.borderRadiusLG,\n        cursor: 'pointer',\n        transition: `border-color ${token.motionDurationSlow}`,\n\n        [componentCls]: {\n          padding: `${token.padding}px 0`,\n        },\n\n        [`${componentCls}-btn`]: {\n          display: 'table',\n          width: '100%',\n          height: '100%',\n          outline: 'none',\n        },\n\n        [`${componentCls}-drag-container`]: {\n          display: 'table-cell',\n          verticalAlign: 'middle',\n        },\n\n        [`&:not(${componentCls}-disabled):hover`]: {\n          borderColor: token.colorPrimaryHover,\n        },\n\n        [`p${componentCls}-drag-icon`]: {\n          marginBottom: token.margin,\n\n          [iconCls]: {\n            color: token.colorPrimary,\n            fontSize: token.uploadThumbnailSize,\n          },\n        },\n\n        [`p${componentCls}-text`]: {\n          margin: `0 0 ${token.marginXXS}px`,\n          color: token.colorTextHeading,\n          fontSize: token.fontSizeLG,\n        },\n\n        [`p${componentCls}-hint`]: {\n          color: token.colorTextDescription,\n          fontSize: token.fontSize,\n        },\n\n        // ===================== Disabled =====================\n        [`&${componentCls}-disabled`]: {\n          cursor: 'not-allowed',\n\n          [`p${componentCls}-drag-icon ${iconCls},\n            p${componentCls}-text,\n            p${componentCls}-hint\n          `]: {\n            color: token.colorTextDisabled,\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genDraggerStyle;\n"
  },
  {
    "path": "components/upload/style/index.ts",
    "content": "import type { FullToken, GenerateStyle } from '../../theme/internal';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genDraggerStyle from './dragger';\nimport genListStyle from './list';\nimport genMotionStyle from './motion';\nimport { genPictureCardStyle, genPictureStyle } from './picture';\nimport genRtlStyle from './rtl';\nimport { resetComponent } from '../../style';\nimport { genCollapseMotion } from '../../style/motion';\n\nexport interface ComponentToken {}\n\nexport interface UploadToken extends FullToken<'Upload'> {\n  uploadThumbnailSize: number;\n  uploadProgressOffset: number;\n  uploadPicCardSize: number;\n}\n\nconst genBaseStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls, colorTextDisabled } = token;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      ...resetComponent(token),\n\n      [componentCls]: {\n        outline: 0,\n        \"input[type='file']\": {\n          cursor: 'pointer',\n        },\n      },\n\n      [`${componentCls}-select`]: {\n        display: 'inline-block',\n      },\n\n      [`${componentCls}-disabled`]: {\n        color: colorTextDisabled,\n        cursor: 'not-allowed',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Upload', token => {\n  const { fontSizeHeading3, fontSize, lineHeight, lineWidth, controlHeightLG } = token;\n  const listItemHeightSM = Math.round(fontSize * lineHeight);\n\n  const uploadToken = mergeToken<UploadToken>(token, {\n    uploadThumbnailSize: fontSizeHeading3 * 2,\n    uploadProgressOffset: listItemHeightSM / 2 + lineWidth,\n    uploadPicCardSize: controlHeightLG * 2.55,\n  });\n\n  return [\n    genBaseStyle(uploadToken),\n    genDraggerStyle(uploadToken),\n    genPictureStyle(uploadToken),\n    genPictureCardStyle(uploadToken),\n    genListStyle(uploadToken),\n    genMotionStyle(uploadToken),\n    genRtlStyle(uploadToken),\n    genCollapseMotion(uploadToken),\n  ];\n});\n"
  },
  {
    "path": "components/upload/style/list.ts",
    "content": "import type { UploadToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\nimport { clearFix, textEllipsis } from '../../style';\n\nconst genListStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls, antCls, iconCls, fontSize, lineHeight } = token;\n  const itemCls = `${componentCls}-list-item`;\n  const actionsCls = `${itemCls}-actions`;\n  const actionCls = `${itemCls}-action`;\n  const listItemHeightSM = Math.round(fontSize * lineHeight);\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      [`${componentCls}-list`]: {\n        ...clearFix(),\n        lineHeight: token.lineHeight,\n\n        [itemCls]: {\n          position: 'relative',\n          height: token.lineHeight * fontSize,\n          marginTop: token.marginXS,\n          fontSize,\n          display: 'flex',\n          alignItems: 'center',\n          transition: `background-color ${token.motionDurationSlow}`,\n\n          '&:hover': {\n            backgroundColor: token.controlItemBgHover,\n          },\n\n          [`${itemCls}-name`]: {\n            ...textEllipsis,\n            padding: `0 ${token.paddingXS}px`,\n            lineHeight,\n            flex: 'auto',\n            transition: `all ${token.motionDurationSlow}`,\n          },\n\n          [actionsCls]: {\n            [actionCls]: {\n              opacity: 0,\n            },\n\n            [`${actionCls}${antCls}-btn-sm`]: {\n              height: listItemHeightSM,\n              border: 0,\n              lineHeight: 1,\n              // FIXME: should not override small button\n              '> span': {\n                transform: 'scale(1)',\n              },\n            },\n\n            [`\n              ${actionCls}:focus,\n              &.picture ${actionCls}\n            `]: {\n              opacity: 1,\n            },\n\n            [iconCls]: {\n              color: token.colorTextDescription,\n              transition: `all ${token.motionDurationSlow}`,\n            },\n\n            [`&:hover ${iconCls}`]: {\n              color: token.colorText,\n            },\n          },\n\n          [`${componentCls}-icon ${iconCls}`]: {\n            color: token.colorTextDescription,\n            fontSize,\n          },\n\n          [`${itemCls}-progress`]: {\n            position: 'absolute',\n            bottom: -token.uploadProgressOffset,\n            width: '100%',\n            paddingInlineStart: fontSize + token.paddingXS,\n            fontSize,\n            lineHeight: 0,\n            pointerEvents: 'none',\n\n            '> div': {\n              margin: 0,\n            },\n          },\n        },\n\n        [`${itemCls}:hover ${actionCls}`]: {\n          opacity: 1,\n          color: token.colorText,\n        },\n\n        [`${itemCls}-error`]: {\n          color: token.colorError,\n          [`${itemCls}-name, ${componentCls}-icon ${iconCls}`]: {\n            color: token.colorError,\n          },\n\n          [actionsCls]: {\n            [`${iconCls}, ${iconCls}:hover`]: {\n              color: token.colorError,\n            },\n\n            [actionCls]: {\n              opacity: 1,\n            },\n          },\n        },\n\n        [`${componentCls}-list-item-container`]: {\n          transition: `opacity ${token.motionDurationSlow}, height ${token.motionDurationSlow}`,\n\n          // For smooth removing animation\n          '&::before': {\n            display: 'table',\n            width: 0,\n            height: 0,\n            content: '\"\"',\n          },\n        },\n      },\n    },\n  };\n};\n\nexport default genListStyle;\n"
  },
  {
    "path": "components/upload/style/motion.ts",
    "content": "import { Keyframes } from '../../_util/cssinjs';\nimport type { UploadToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\nconst uploadAnimateInlineIn = new Keyframes('uploadAnimateInlineIn', {\n  from: {\n    width: 0,\n    height: 0,\n    margin: 0,\n    padding: 0,\n    opacity: 0,\n  },\n});\n\nconst uploadAnimateInlineOut = new Keyframes('uploadAnimateInlineOut', {\n  to: {\n    width: 0,\n    height: 0,\n    margin: 0,\n    padding: 0,\n    opacity: 0,\n  },\n});\n// =========================== Motion ===========================\nconst genMotionStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls } = token;\n  const inlineCls = `${componentCls}-animate-inline`;\n\n  return [\n    {\n      [`${componentCls}-wrapper`]: {\n        [`${inlineCls}-appear, ${inlineCls}-enter, ${inlineCls}-leave`]: {\n          animationDuration: token.motionDurationSlow,\n          animationTimingFunction: token.motionEaseInOutCirc,\n          animationFillMode: 'forwards',\n        },\n\n        [`${inlineCls}-appear, ${inlineCls}-enter`]: {\n          animationName: uploadAnimateInlineIn,\n        },\n\n        [`${inlineCls}-leave`]: {\n          animationName: uploadAnimateInlineOut,\n        },\n      },\n    },\n    uploadAnimateInlineIn,\n    uploadAnimateInlineOut,\n  ];\n};\n\nexport default genMotionStyle;\n"
  },
  {
    "path": "components/upload/style/picture.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport type { UploadToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\nimport { clearFix, textEllipsis } from '../../style';\n\nconst genPictureStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls, iconCls, uploadThumbnailSize, uploadProgressOffset } = token;\n  const listCls = `${componentCls}-list`;\n  const itemCls = `${listCls}-item`;\n\n  return {\n    [`${componentCls}-wrapper`]: {\n      // ${listCls} 增加优先级\n      [`${listCls}${listCls}-picture, ${listCls}${listCls}-picture-card`]: {\n        [itemCls]: {\n          position: 'relative',\n          height: uploadThumbnailSize + token.lineWidth * 2 + token.paddingXS * 2,\n          padding: token.paddingXS,\n          border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n          borderRadius: token.borderRadiusLG,\n\n          '&:hover': {\n            background: 'transparent',\n          },\n\n          [`${itemCls}-thumbnail`]: {\n            ...textEllipsis,\n            width: uploadThumbnailSize,\n            height: uploadThumbnailSize,\n            lineHeight: `${uploadThumbnailSize + token.paddingSM}px`,\n            textAlign: 'center',\n            flex: 'none',\n\n            [iconCls]: {\n              fontSize: token.fontSizeHeading2,\n              color: token.colorPrimary,\n            },\n\n            img: {\n              display: 'block',\n              width: '100%',\n              height: '100%',\n              overflow: 'hidden',\n            },\n          },\n\n          [`${itemCls}-progress`]: {\n            bottom: uploadProgressOffset,\n            width: `calc(100% - ${token.paddingSM * 2}px)`,\n            marginTop: 0,\n            paddingInlineStart: uploadThumbnailSize + token.paddingXS,\n          },\n        },\n\n        [`${itemCls}-error`]: {\n          borderColor: token.colorError,\n\n          // Adjust the color of the error icon : https://github.com/ant-design/ant-design/pull/24160\n          [`${itemCls}-thumbnail ${iconCls}`]: {\n            [`svg path[fill='#e6f7ff']`]: {\n              fill: token.colorErrorBg,\n            },\n            [`svg path[fill='#1890ff']`]: {\n              fill: token.colorError,\n            },\n          },\n        },\n\n        [`${itemCls}-uploading`]: {\n          borderStyle: 'dashed',\n\n          [`${itemCls}-name`]: {\n            marginBottom: uploadProgressOffset,\n          },\n        },\n      },\n    },\n  };\n};\n\nconst genPictureCardStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls, iconCls, fontSizeLG, colorTextLightSolid } = token;\n\n  const listCls = `${componentCls}-list`;\n  const itemCls = `${listCls}-item`;\n\n  const uploadPictureCardSize = token.uploadPicCardSize;\n\n  return {\n    [`${componentCls}-wrapper${componentCls}-picture-card-wrapper`]: {\n      ...clearFix(),\n      display: 'inline-block',\n      width: '100%',\n\n      [`${componentCls}${componentCls}-select`]: {\n        width: uploadPictureCardSize,\n        height: uploadPictureCardSize,\n        marginInlineEnd: token.marginXS,\n        marginBottom: token.marginXS,\n        textAlign: 'center',\n        verticalAlign: 'top',\n        backgroundColor: token.colorFillAlter,\n        border: `${token.lineWidth}px dashed ${token.colorBorder}`,\n        borderRadius: token.borderRadiusLG,\n        cursor: 'pointer',\n        transition: `border-color ${token.motionDurationSlow}`,\n\n        [`> ${componentCls}`]: {\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n          height: '100%',\n          textAlign: 'center',\n        },\n\n        [`&:not(${componentCls}-disabled):hover`]: {\n          borderColor: token.colorPrimary,\n        },\n      },\n\n      // list\n      [`${listCls}${listCls}-picture-card`]: {\n        [`${listCls}-item-container`]: {\n          display: 'inline-block',\n          width: uploadPictureCardSize,\n          height: uploadPictureCardSize,\n          marginBlock: `0 ${token.marginXS}px`,\n          marginInline: `0 ${token.marginXS}px`,\n          verticalAlign: 'top',\n        },\n\n        '&::after': {\n          display: 'none',\n        },\n\n        [itemCls]: {\n          height: '100%',\n          margin: 0,\n\n          '&::before': {\n            position: 'absolute',\n            zIndex: 1,\n            width: `calc(100% - ${token.paddingXS * 2}px)`,\n            height: `calc(100% - ${token.paddingXS * 2}px)`,\n            backgroundColor: token.colorBgMask,\n            opacity: 0,\n            transition: `all ${token.motionDurationSlow}`,\n            content: '\" \"',\n          },\n        },\n\n        [`${itemCls}:hover`]: {\n          [`&::before, ${itemCls}-actions`]: {\n            opacity: 1,\n          },\n        },\n\n        [`${itemCls}-actions`]: {\n          position: 'absolute',\n          insetInlineStart: 0,\n          zIndex: 10,\n          width: '100%',\n          whiteSpace: 'nowrap',\n          textAlign: 'center',\n          opacity: 0,\n          transition: `all ${token.motionDurationSlow}`,\n\n          [`${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: {\n            zIndex: 10,\n            width: fontSizeLG,\n            margin: `0 ${token.marginXXS}px`,\n            fontSize: fontSizeLG,\n            cursor: 'pointer',\n            transition: `all ${token.motionDurationSlow}`,\n          },\n        },\n\n        [`${itemCls}-actions, ${itemCls}-actions:hover`]: {\n          [`${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: {\n            color: new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString(),\n            '&:hover': {\n              color: colorTextLightSolid,\n            },\n          },\n        },\n\n        [`${itemCls}-thumbnail, ${itemCls}-thumbnail img`]: {\n          position: 'static',\n          display: 'block',\n          width: '100%',\n          height: '100%',\n          objectFit: 'contain',\n        },\n\n        [`${itemCls}-name`]: {\n          display: 'none',\n          textAlign: 'center',\n        },\n\n        [`${itemCls}-file + ${itemCls}-name`]: {\n          position: 'absolute',\n          bottom: token.margin,\n          display: 'block',\n          width: `calc(100% - ${token.paddingXS * 2}px)`,\n        },\n\n        [`${itemCls}-uploading`]: {\n          [`&${itemCls}`]: {\n            backgroundColor: token.colorFillAlter,\n          },\n\n          [`&::before, ${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: {\n            display: 'none',\n          },\n        },\n\n        [`${itemCls}-progress`]: {\n          bottom: token.marginXL,\n          width: `calc(100% - ${token.paddingXS * 2}px)`,\n          paddingInlineStart: 0,\n        },\n      },\n    },\n  };\n};\n\nexport { genPictureStyle, genPictureCardStyle };\n"
  },
  {
    "path": "components/upload/style/rtl.ts",
    "content": "import type { UploadToken } from '.';\nimport type { GenerateStyle } from '../../theme/internal';\n\n// =========================== Motion ===========================\nconst genRtlStyle: GenerateStyle<UploadToken> = token => {\n  const { componentCls } = token;\n\n  return {\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl',\n    },\n  };\n};\n\nexport default genRtlStyle;\n"
  },
  {
    "path": "components/upload/utils.tsx",
    "content": "import type { FileType, UploadFile, InternalUploadFile } from './interface';\n\nexport function file2Obj(file: FileType): InternalUploadFile {\n  return {\n    ...file,\n    lastModified: file.lastModified,\n    lastModifiedDate: file.lastModifiedDate,\n    name: file.name,\n    size: file.size,\n    type: file.type,\n    uid: file.uid,\n    percent: 0,\n    originFileObj: file,\n  };\n}\n\n/** Upload fileList. Replace file if exist or just push into it. */\nexport function updateFileList(file: UploadFile<any>, fileList: UploadFile<any>[]) {\n  const nextFileList = [...fileList];\n  const fileIndex = nextFileList.findIndex(({ uid }: UploadFile) => uid === file.uid);\n  if (fileIndex === -1) {\n    nextFileList.push(file);\n  } else {\n    nextFileList[fileIndex] = file;\n  }\n  return nextFileList;\n}\n\nexport function getFileItem(file: FileType, fileList: UploadFile[]) {\n  const matchKey = file.uid !== undefined ? 'uid' : 'name';\n  return fileList.filter(item => item[matchKey] === file[matchKey])[0];\n}\n\nexport function removeFileItem(file: UploadFile, fileList: UploadFile[]) {\n  const matchKey = file.uid !== undefined ? 'uid' : 'name';\n  const removed = fileList.filter(item => item[matchKey] !== file[matchKey]);\n  if (removed.length === fileList.length) {\n    return null;\n  }\n  return removed;\n}\n\n// ==================== Default Image Preview ====================\nconst extname = (url = '') => {\n  const temp = url.split('/');\n  const filename = temp[temp.length - 1];\n  const filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n  return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\n\nconst isImageFileType = (type: string): boolean => type.indexOf('image/') === 0;\n\nexport const isImageUrl = (file: UploadFile): boolean => {\n  if (file.type && !file.thumbUrl) {\n    return isImageFileType(file.type);\n  }\n  const url: string = (file.thumbUrl || file.url || '') as string;\n  const extension = extname(url);\n  if (\n    /^data:image\\//.test(url) ||\n    /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(extension)\n  ) {\n    return true;\n  }\n  if (/^data:/.test(url)) {\n    // other file types of base64\n    return false;\n  }\n  if (extension) {\n    // other file types which have extension\n    return false;\n  }\n  return true;\n};\n\nconst MEASURE_SIZE = 200;\nexport function previewImage(file: File | Blob): Promise<string> {\n  return new Promise(resolve => {\n    if (!file.type || !isImageFileType(file.type)) {\n      resolve('');\n      return;\n    }\n\n    const canvas = document.createElement('canvas');\n    canvas.width = MEASURE_SIZE;\n    canvas.height = MEASURE_SIZE;\n    canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`;\n    document.body.appendChild(canvas);\n    const ctx = canvas.getContext('2d');\n    const img = new Image();\n    img.onload = () => {\n      const { width, height } = img;\n\n      let drawWidth = MEASURE_SIZE;\n      let drawHeight = MEASURE_SIZE;\n      let offsetX = 0;\n      let offsetY = 0;\n\n      if (width > height) {\n        drawHeight = height * (MEASURE_SIZE / width);\n        offsetY = -(drawHeight - drawWidth) / 2;\n      } else {\n        drawWidth = width * (MEASURE_SIZE / height);\n        offsetX = -(drawWidth - drawHeight) / 2;\n      }\n\n      ctx!.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n      const dataURL = canvas.toDataURL();\n      document.body.removeChild(canvas);\n\n      resolve(dataURL);\n    };\n    img.crossOrigin = 'anonymous';\n    if (file.type.startsWith('image/svg+xml')) {\n      const reader = new FileReader();\n      reader.addEventListener('load', () => {\n        if (reader.result) img.src = reader.result as string;\n      });\n      reader.readAsDataURL(file);\n    } else {\n      img.src = window.URL.createObjectURL(file);\n    }\n  });\n}\n"
  },
  {
    "path": "components/vc-align/Align.tsx",
    "content": "import type { PropType } from 'vue';\nimport {\n  nextTick,\n  defineComponent,\n  ref,\n  computed,\n  onMounted,\n  onUpdated,\n  watch,\n  onUnmounted,\n} from 'vue';\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport { cloneElement } from '../_util/vnode';\nimport isVisible from '../vc-util/Dom/isVisible';\n\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport type { AlignType, AlignResult, TargetType, TargetPoint } from './interface';\nimport useBuffer from './hooks/useBuffer';\nimport isEqual from 'lodash-es/isEqual';\n\ntype OnAlign = (source: HTMLElement, result: AlignResult) => void;\n\nexport interface AlignProps {\n  align: AlignType;\n  target: TargetType;\n  onAlign?: OnAlign;\n  monitorBufferTime?: number;\n  monitorWindowResize?: boolean;\n  disabled?: boolean;\n}\n\nexport const alignProps = {\n  align: Object as PropType<AlignType>,\n  target: [Object, Function] as PropType<TargetType>,\n  onAlign: Function as PropType<OnAlign>,\n  monitorBufferTime: Number,\n  monitorWindowResize: Boolean,\n  disabled: Boolean,\n};\n\ninterface MonitorRef {\n  element?: HTMLElement;\n  cancel: () => void;\n}\n\nexport interface RefAlign {\n  forceAlign: () => void;\n}\n\nfunction getElement(func: TargetType) {\n  if (typeof func !== 'function') return null;\n  return func();\n}\n\nfunction getPoint(point: TargetType) {\n  if (typeof point !== 'object' || !point) return null;\n  return point;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Align',\n  props: alignProps,\n  emits: ['align'],\n  setup(props, { expose, slots }) {\n    const cacheRef = ref<{ element?: HTMLElement; point?: TargetPoint; align?: AlignType }>({});\n    const nodeRef = ref();\n    const [forceAlign, cancelForceAlign] = useBuffer(\n      () => {\n        const {\n          disabled: latestDisabled,\n          target: latestTarget,\n          align: latestAlign,\n          onAlign: latestOnAlign,\n        } = props;\n        if (!latestDisabled && latestTarget && nodeRef.value) {\n          const source = nodeRef.value;\n\n          let result: AlignResult;\n          const element = getElement(latestTarget);\n          const point = getPoint(latestTarget);\n\n          cacheRef.value.element = element;\n          cacheRef.value.point = point;\n          cacheRef.value.align = latestAlign;\n          // IE lose focus after element realign\n          // We should record activeElement and restore later\n          const { activeElement } = document;\n          // We only align when element is visible\n          if (element && isVisible(element)) {\n            result = alignElement(source, element, latestAlign);\n          } else if (point) {\n            result = alignPoint(source, point, latestAlign);\n          }\n          restoreFocus(activeElement, source);\n\n          if (latestOnAlign && result) {\n            latestOnAlign(source, result);\n          }\n\n          return true;\n        }\n\n        return false;\n      },\n      computed(() => props.monitorBufferTime),\n    );\n\n    // ===================== Effect =====================\n    // Listen for target updated\n    const resizeMonitor = ref<MonitorRef>({\n      cancel: () => {},\n    });\n    // Listen for source updated\n    const sourceResizeMonitor = ref<MonitorRef>({\n      cancel: () => {},\n    });\n\n    const goAlign = () => {\n      const target = props.target;\n      const element = getElement(target);\n      const point = getPoint(target);\n\n      if (nodeRef.value !== sourceResizeMonitor.value.element) {\n        sourceResizeMonitor.value.cancel();\n        sourceResizeMonitor.value.element = nodeRef.value;\n        sourceResizeMonitor.value.cancel = monitorResize(nodeRef.value, forceAlign);\n      }\n\n      if (\n        cacheRef.value.element !== element ||\n        !isSamePoint(cacheRef.value.point, point) ||\n        !isEqual(cacheRef.value.align, props.align)\n      ) {\n        forceAlign();\n\n        // Add resize observer\n        if (resizeMonitor.value.element !== element) {\n          resizeMonitor.value.cancel();\n          resizeMonitor.value.element = element;\n          resizeMonitor.value.cancel = monitorResize(element, forceAlign);\n        }\n      }\n    };\n\n    onMounted(() => {\n      nextTick(() => {\n        goAlign();\n      });\n    });\n\n    onUpdated(() => {\n      nextTick(() => {\n        goAlign();\n      });\n    });\n\n    // Listen for disabled change\n    watch(\n      () => props.disabled,\n      disabled => {\n        if (!disabled) {\n          forceAlign();\n        } else {\n          cancelForceAlign();\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // Listen for window resize\n    const winResizeRef = ref<{ remove: Function }>(null);\n\n    watch(\n      () => props.monitorWindowResize,\n      monitorWindowResize => {\n        if (monitorWindowResize) {\n          if (!winResizeRef.value) {\n            winResizeRef.value = addEventListener(window, 'resize', forceAlign);\n          }\n        } else if (winResizeRef.value) {\n          winResizeRef.value.remove();\n          winResizeRef.value = null;\n        }\n      },\n      { flush: 'post' },\n    );\n    onUnmounted(() => {\n      resizeMonitor.value.cancel();\n      sourceResizeMonitor.value.cancel();\n      if (winResizeRef.value) winResizeRef.value.remove();\n      cancelForceAlign();\n    });\n\n    expose({\n      forceAlign: () => forceAlign(true),\n    });\n\n    return () => {\n      const child = slots?.default();\n      if (child) {\n        return cloneElement(child[0], { ref: nodeRef }, true, true);\n      }\n      return null;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-align/hooks/useBuffer.tsx",
    "content": "import type { ComputedRef } from 'vue';\n\nexport default (callback: () => boolean, buffer: ComputedRef<number>) => {\n  let called = false;\n  let timeout = null;\n\n  function cancelTrigger() {\n    clearTimeout(timeout);\n  }\n\n  function trigger(force?: boolean) {\n    if (!called || force === true) {\n      if (callback() === false) {\n        // Not delay since callback cancelled self\n        return;\n      }\n\n      called = true;\n      cancelTrigger();\n      timeout = setTimeout(() => {\n        called = false;\n      }, buffer.value);\n    } else {\n      cancelTrigger();\n      timeout = setTimeout(() => {\n        called = false;\n        trigger();\n      }, buffer.value);\n    }\n  }\n\n  return [\n    trigger,\n    () => {\n      called = false;\n      cancelTrigger();\n    },\n  ];\n};\n"
  },
  {
    "path": "components/vc-align/index.ts",
    "content": "// based on rc-align 4.0.9\nimport Align from './Align';\nexport default Align;\n"
  },
  {
    "path": "components/vc-align/interface.ts",
    "content": "/** Two char of 't' 'b' 'c' 'l' 'r'. Example: 'lt' */\nexport type AlignPoint = string;\n\nexport interface AlignType {\n  /**\n   * move point of source node to align with point of target node.\n   * Such as ['tr','cc'], align top right point of source node with center point of target node.\n   * Point can be 't'(top), 'b'(bottom), 'c'(center), 'l'(left), 'r'(right) */\n  points?: AlignPoint[];\n  /**\n   * offset source node by offset[0] in x and offset[1] in y.\n   * If offset contains percentage string value, it is relative to sourceNode region.\n   */\n  offset?: number[];\n  /**\n   * offset target node by offset[0] in x and offset[1] in y.\n   * If targetOffset contains percentage string value, it is relative to targetNode region.\n   */\n  targetOffset?: number[];\n  /**\n   * If adjustX field is true, will adjust source node in x direction if source node is invisible.\n   * If adjustY field is true, will adjust source node in y direction if source node is invisible.\n   */\n  overflow?: {\n    adjustX?: boolean | number;\n    adjustY?: boolean | number;\n  };\n  /**\n   * Whether use css right instead of left to position\n   */\n  useCssRight?: boolean;\n  /**\n   * Whether use css bottom instead of top to position\n   */\n  useCssBottom?: boolean;\n  /**\n   * Whether use css transform instead of left/top/right/bottom to position if browser supports.\n   * Defaults to false.\n   */\n  useCssTransform?: boolean;\n}\n\nexport interface AlignResult {\n  points: AlignPoint[];\n  offset: number[];\n  targetOffset: number[];\n  overflow: {\n    adjustX: boolean | number;\n    adjustY: boolean | number;\n  };\n}\n\nexport interface TargetPoint {\n  clientX?: number;\n  clientY?: number;\n  pageX?: number;\n  pageY?: number;\n}\n\nexport type TargetType = (() => HTMLElement) | TargetPoint;\n"
  },
  {
    "path": "components/vc-align/util.ts",
    "content": "import contains from '../vc-util/Dom/contains';\nimport type { TargetPoint } from './interface';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nexport function isSamePoint(prev: TargetPoint, next: TargetPoint) {\n  if (prev === next) return true;\n  if (!prev || !next) return false;\n\n  if ('pageX' in next && 'pageY' in next) {\n    return prev.pageX === next.pageX && prev.pageY === next.pageY;\n  }\n\n  if ('clientX' in next && 'clientY' in next) {\n    return prev.clientX === next.clientX && prev.clientY === next.clientY;\n  }\n\n  return false;\n}\n\nexport function restoreFocus(activeElement, container) {\n  // Focus back if is in the container\n  if (\n    activeElement !== document.activeElement &&\n    contains(container, activeElement) &&\n    typeof activeElement.focus === 'function'\n  ) {\n    activeElement.focus();\n  }\n}\n\nexport function monitorResize(element: HTMLElement, callback: Function) {\n  let prevWidth: number = null;\n  let prevHeight: number = null;\n\n  function onResize([{ target }]: ResizeObserverEntry[]) {\n    if (!document.documentElement.contains(target)) return;\n    const { width, height } = target.getBoundingClientRect();\n    const fixedWidth = Math.floor(width);\n    const fixedHeight = Math.floor(height);\n\n    if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n      // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n      Promise.resolve().then(() => {\n        callback({ width: fixedWidth, height: fixedHeight });\n      });\n    }\n\n    prevWidth = fixedWidth;\n    prevHeight = fixedHeight;\n  }\n\n  const resizeObserver = new ResizeObserver(onResize);\n  if (element) {\n    resizeObserver.observe(element);\n  }\n\n  return () => {\n    resizeObserver.disconnect();\n  };\n}\n"
  },
  {
    "path": "components/vc-cascader/Cascader.tsx",
    "content": "import { computed, defineComponent, ref, toRef, toRefs, watchEffect } from 'vue';\nimport type { CSSProperties, ExtractPropTypes, PropType, Ref } from 'vue';\nimport type { BaseSelectRef, BaseSelectProps } from '../vc-select';\nimport type { DisplayValueType, Placement } from '../vc-select/BaseSelect';\nimport { baseSelectPropsWithoutPrivate } from '../vc-select/BaseSelect';\nimport omit from '../_util/omit';\nimport type { Key, VueNode } from '../_util/type';\nimport { objectType } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\nimport useId from '../vc-select/hooks/useId';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport { fillFieldNames, toPathKey, toPathKeys, SHOW_PARENT, SHOW_CHILD } from './utils/commonUtil';\nimport useEntities from './hooks/useEntities';\nimport useSearchConfig from './hooks/useSearchConfig';\nimport useSearchOptions from './hooks/useSearchOptions';\nimport useMissingValues from './hooks/useMissingValues';\nimport { formatStrategyValues, toPathOptions } from './utils/treeUtil';\nimport { conductCheck } from '../vc-tree/utils/conductUtil';\nimport useDisplayValues from './hooks/useDisplayValues';\nimport { useProvideCascader } from './context';\nimport OptionList from './OptionList';\nimport { BaseSelect } from '../vc-select';\nimport devWarning from '../vc-util/devWarning';\nimport useMaxLevel from '../vc-tree/useMaxLevel';\n\nexport { SHOW_PARENT, SHOW_CHILD };\nexport interface ShowSearchType<OptionType extends BaseOptionType = DefaultOptionType> {\n  filter?: (inputValue: string, options: OptionType[], fieldNames: FieldNames) => boolean;\n  render?: (arg?: {\n    inputValue: string;\n    path: OptionType[];\n    prefixCls: string;\n    fieldNames: FieldNames;\n  }) => any;\n  sort?: (a: OptionType[], b: OptionType[], inputValue: string, fieldNames: FieldNames) => number;\n  matchInputWidth?: boolean;\n  limit?: number | false;\n}\n\nexport interface FieldNames {\n  label?: string;\n  value?: string;\n  children?: string;\n}\n\nexport interface InternalFieldNames extends Required<FieldNames> {\n  key: string;\n}\n\nexport type SingleValueType = (string | number)[];\n\nexport type ValueType = SingleValueType | SingleValueType[];\nexport type ShowCheckedStrategy = typeof SHOW_PARENT | typeof SHOW_CHILD;\n\nexport interface BaseOptionType {\n  disabled?: boolean;\n  [name: string]: any;\n}\nexport interface DefaultOptionType extends BaseOptionType {\n  label?: any;\n  value?: string | number | null;\n  children?: DefaultOptionType[];\n}\n\nfunction baseCascaderProps<OptionType extends BaseOptionType = DefaultOptionType>() {\n  return {\n    ...omit(baseSelectPropsWithoutPrivate(), ['tokenSeparators', 'mode', 'showSearch']),\n    // MISC\n    id: String,\n    prefixCls: String,\n    fieldNames: objectType<FieldNames>(),\n    children: Array as PropType<VueNode[]>,\n\n    // Value\n    value: { type: [String, Number, Array] as PropType<ValueType> },\n    defaultValue: { type: [String, Number, Array] as PropType<ValueType> },\n    changeOnSelect: { type: Boolean, default: undefined },\n    displayRender: Function as PropType<\n      (opt: { labels: string[]; selectedOptions?: OptionType[] }) => any\n    >,\n    checkable: { type: Boolean, default: undefined },\n    showCheckedStrategy: { type: String as PropType<ShowCheckedStrategy>, default: SHOW_PARENT },\n    // Search\n    showSearch: {\n      type: [Boolean, Object] as PropType<boolean | ShowSearchType<OptionType>>,\n      default: undefined as boolean | ShowSearchType<OptionType>,\n    },\n    searchValue: String,\n    onSearch: Function as PropType<(value: string) => void>,\n\n    // Trigger\n    expandTrigger: String as PropType<'hover' | 'click'>,\n\n    // Options\n    options: Array as PropType<OptionType[]>,\n    /** @private Internal usage. Do not use in your production. */\n    dropdownPrefixCls: String,\n    loadData: Function as PropType<(selectOptions: OptionType[]) => void>,\n\n    // Open\n    /** @deprecated Use `open` instead */\n    popupVisible: { type: Boolean, default: undefined },\n\n    dropdownClassName: String,\n    dropdownMenuColumnStyle: {\n      type: Object as PropType<CSSProperties>,\n      default: undefined as CSSProperties,\n    },\n\n    /** @deprecated Use `dropdownStyle` instead */\n    popupStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    dropdownStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n\n    /** @deprecated Use `placement` instead */\n    popupPlacement: String as PropType<Placement>,\n    placement: String as PropType<Placement>,\n\n    /** @deprecated Use `onDropdownVisibleChange` instead */\n    onPopupVisibleChange: Function as PropType<(open: boolean) => void>,\n    onDropdownVisibleChange: Function as PropType<(open: boolean) => void>,\n\n    // Icon\n    expandIcon: PropTypes.any,\n    loadingIcon: PropTypes.any,\n  };\n}\n\nexport type BaseCascaderProps = Partial<ExtractPropTypes<ReturnType<typeof baseCascaderProps>>>;\n\ntype OnSingleChange<OptionType> = (value: SingleValueType, selectOptions: OptionType[]) => void;\ntype OnMultipleChange<OptionType> = (\n  value: SingleValueType[],\n  selectOptions: OptionType[][],\n) => void;\n\nexport function singleCascaderProps<OptionType extends BaseOptionType = DefaultOptionType>() {\n  return {\n    ...baseCascaderProps(),\n    checkable: Boolean as PropType<false>,\n    onChange: Function as PropType<OnSingleChange<OptionType>>,\n  };\n}\n\nexport type SingleCascaderProps = Partial<ExtractPropTypes<ReturnType<typeof singleCascaderProps>>>;\n\nexport function multipleCascaderProps<OptionType extends BaseOptionType = DefaultOptionType>() {\n  return {\n    ...baseCascaderProps(),\n    checkable: Boolean as PropType<true>,\n    onChange: Function as PropType<OnMultipleChange<OptionType>>,\n  };\n}\n\nexport type MultipleCascaderProps = Partial<\n  ExtractPropTypes<ReturnType<typeof singleCascaderProps>>\n>;\n\nexport function internalCascaderProps<OptionType extends BaseOptionType = DefaultOptionType>() {\n  return {\n    ...baseCascaderProps(),\n    onChange: Function as PropType<\n      (value: ValueType, selectOptions: OptionType[] | OptionType[][]) => void\n    >,\n    customSlots: Object as PropType<Record<string, Function>>,\n  };\n}\n\nexport type CascaderProps = Partial<ExtractPropTypes<ReturnType<typeof internalCascaderProps>>>;\nexport type CascaderRef = Omit<BaseSelectRef, 'scrollTo'>;\n\nfunction isMultipleValue(value: ValueType): value is SingleValueType[] {\n  return Array.isArray(value) && Array.isArray(value[0]);\n}\n\nfunction toRawValues(value: ValueType): SingleValueType[] {\n  if (!value) {\n    return [];\n  }\n\n  if (isMultipleValue(value)) {\n    return value;\n  }\n\n  return (value.length === 0 ? [] : [value]).map(val => (Array.isArray(val) ? val : [val]));\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Cascader',\n  inheritAttrs: false,\n  props: initDefaultProps(internalCascaderProps(), {}),\n  setup(props, { attrs, expose, slots }) {\n    const mergedId = useId(toRef(props, 'id'));\n    const multiple = computed(() => !!props.checkable);\n\n    // =========================== Values ===========================\n    const [rawValues, setRawValues] = useMergedState<ValueType, Ref<SingleValueType[]>>(\n      props.defaultValue,\n      {\n        value: computed(() => props.value),\n        postState: toRawValues,\n      },\n    );\n\n    // ========================= FieldNames =========================\n    const mergedFieldNames = computed(() => fillFieldNames(props.fieldNames));\n\n    // =========================== Option ===========================\n    const mergedOptions = computed(() => props.options || []);\n\n    // Only used in multiple mode, this fn will not call in single mode\n    const pathKeyEntities = useEntities(mergedOptions, mergedFieldNames);\n\n    /** Convert path key back to value format */\n    const getValueByKeyPath = (pathKeys: Key[]): SingleValueType[] => {\n      const keyPathEntities = pathKeyEntities.value;\n\n      return pathKeys.map(pathKey => {\n        const { nodes } = keyPathEntities[pathKey];\n\n        return nodes.map(node => node[mergedFieldNames.value.value]);\n      });\n    };\n\n    // =========================== Search ===========================\n    const [mergedSearchValue, setSearchValue] = useMergedState('', {\n      value: computed(() => props.searchValue),\n      postState: search => search || '',\n    });\n\n    const onInternalSearch: BaseSelectProps['onSearch'] = (searchText, info) => {\n      setSearchValue(searchText);\n\n      if (info.source !== 'blur' && props.onSearch) {\n        props.onSearch(searchText);\n      }\n    };\n\n    const { showSearch: mergedShowSearch, searchConfig: mergedSearchConfig } = useSearchConfig(\n      toRef(props, 'showSearch'),\n    );\n\n    const searchOptions = useSearchOptions(\n      mergedSearchValue,\n      mergedOptions,\n      mergedFieldNames,\n      computed(() => props.dropdownPrefixCls || props.prefixCls),\n      mergedSearchConfig,\n      toRef(props, 'changeOnSelect'),\n    );\n\n    // =========================== Values ===========================\n    const missingValuesInfo = useMissingValues(mergedOptions, mergedFieldNames, rawValues);\n\n    // Fill `rawValues` with checked conduction values\n    const [checkedValues, halfCheckedValues, missingCheckedValues] = [\n      ref<SingleValueType[]>([]),\n      ref<SingleValueType[]>([]),\n      ref<SingleValueType[]>([]),\n    ];\n\n    const { maxLevel, levelEntities } = useMaxLevel(pathKeyEntities);\n    watchEffect(() => {\n      const [existValues, missingValues] = missingValuesInfo.value;\n\n      if (!multiple.value || !rawValues.value.length) {\n        [checkedValues.value, halfCheckedValues.value, missingCheckedValues.value] = [\n          existValues,\n          [],\n          missingValues,\n        ];\n        return;\n      }\n\n      const keyPathValues = toPathKeys(existValues);\n      const keyPathEntities = pathKeyEntities.value;\n\n      const { checkedKeys, halfCheckedKeys } = conductCheck(\n        keyPathValues,\n        true,\n        keyPathEntities,\n        maxLevel.value,\n        levelEntities.value,\n      );\n\n      // Convert key back to value cells\n      [checkedValues.value, halfCheckedValues.value, missingCheckedValues.value] = [\n        getValueByKeyPath(checkedKeys),\n        getValueByKeyPath(halfCheckedKeys),\n        missingValues,\n      ];\n    });\n\n    const deDuplicatedValues = computed(() => {\n      const checkedKeys = toPathKeys(checkedValues.value);\n      const deduplicateKeys = formatStrategyValues(\n        checkedKeys,\n        pathKeyEntities.value,\n        props.showCheckedStrategy,\n      );\n      return [...missingCheckedValues.value, ...getValueByKeyPath(deduplicateKeys)];\n    });\n\n    const displayValues = useDisplayValues(\n      deDuplicatedValues,\n      mergedOptions,\n      mergedFieldNames,\n      multiple,\n      toRef(props, 'displayRender'),\n    );\n\n    // =========================== Change ===========================\n    const triggerChange = (nextValues: ValueType) => {\n      setRawValues(nextValues);\n\n      // Save perf if no need trigger event\n      if (props.onChange) {\n        const nextRawValues = toRawValues(nextValues);\n\n        const valueOptions = nextRawValues.map(valueCells =>\n          toPathOptions(valueCells, mergedOptions.value, mergedFieldNames.value).map(\n            valueOpt => valueOpt.option,\n          ),\n        );\n\n        const triggerValues = multiple.value ? nextRawValues : nextRawValues[0];\n        const triggerOptions = multiple.value ? valueOptions : valueOptions[0];\n\n        props.onChange(triggerValues, triggerOptions);\n      }\n    };\n\n    // =========================== Select ===========================\n    const onInternalSelect = (valuePath: SingleValueType) => {\n      setSearchValue('');\n      if (!multiple.value) {\n        triggerChange(valuePath);\n      } else {\n        // Prepare conduct required info\n        const pathKey = toPathKey(valuePath);\n        const checkedPathKeys = toPathKeys(checkedValues.value);\n        const halfCheckedPathKeys = toPathKeys(halfCheckedValues.value);\n\n        const existInChecked = checkedPathKeys.includes(pathKey);\n        const existInMissing = missingCheckedValues.value.some(\n          valueCells => toPathKey(valueCells) === pathKey,\n        );\n\n        // Do update\n        let nextCheckedValues = checkedValues.value;\n        let nextMissingValues = missingCheckedValues.value;\n\n        if (existInMissing && !existInChecked) {\n          // Missing value only do filter\n          nextMissingValues = missingCheckedValues.value.filter(\n            valueCells => toPathKey(valueCells) !== pathKey,\n          );\n        } else {\n          // Update checked key first\n          const nextRawCheckedKeys = existInChecked\n            ? checkedPathKeys.filter(key => key !== pathKey)\n            : [...checkedPathKeys, pathKey];\n\n          // Conduction by selected or not\n          let checkedKeys: Key[];\n          if (existInChecked) {\n            ({ checkedKeys } = conductCheck(\n              nextRawCheckedKeys,\n              { checked: false, halfCheckedKeys: halfCheckedPathKeys },\n              pathKeyEntities.value,\n              maxLevel.value,\n              levelEntities.value,\n            ));\n          } else {\n            ({ checkedKeys } = conductCheck(\n              nextRawCheckedKeys,\n              true,\n              pathKeyEntities.value,\n              maxLevel.value,\n              levelEntities.value,\n            ));\n          }\n\n          // Roll up to parent level keys\n          const deDuplicatedKeys = formatStrategyValues(\n            checkedKeys,\n            pathKeyEntities.value,\n            props.showCheckedStrategy,\n          );\n          nextCheckedValues = getValueByKeyPath(deDuplicatedKeys);\n        }\n\n        triggerChange([...nextMissingValues, ...nextCheckedValues]);\n      }\n    };\n\n    // Display Value change logic\n    const onDisplayValuesChange: BaseSelectProps['onDisplayValuesChange'] = (_, info) => {\n      if (info.type === 'clear') {\n        triggerChange([]);\n        return;\n      }\n\n      // Cascader do not support `add` type. Only support `remove`\n      const { valueCells } = info.values[0] as DisplayValueType & { valueCells: SingleValueType };\n      onInternalSelect(valueCells);\n    };\n\n    // ============================ Open ============================\n    if (process.env.NODE_ENV !== 'production') {\n      watchEffect(() => {\n        devWarning(\n          !props.onPopupVisibleChange,\n          'Cascader',\n          '`popupVisibleChange` is deprecated. Please use `dropdownVisibleChange` instead.',\n        );\n        devWarning(\n          props.popupVisible === undefined,\n          'Cascader',\n          '`popupVisible` is deprecated. Please use `open` instead.',\n        );\n        devWarning(\n          props.popupPlacement === undefined,\n          'Cascader',\n          '`popupPlacement` is deprecated. Please use `placement` instead.',\n        );\n        devWarning(\n          props.popupStyle === undefined,\n          'Cascader',\n          '`popupStyle` is deprecated. Please use `dropdownStyle` instead.',\n        );\n      });\n    }\n\n    const mergedOpen = computed(() => (props.open !== undefined ? props.open : props.popupVisible));\n\n    const mergedDropdownStyle = computed(() => props.dropdownStyle || props.popupStyle || {});\n\n    const mergedPlacement = computed(() => props.placement || props.popupPlacement);\n\n    const onInternalDropdownVisibleChange = (nextVisible: boolean) => {\n      props.onDropdownVisibleChange?.(nextVisible);\n      props.onPopupVisibleChange?.(nextVisible);\n    };\n    const {\n      changeOnSelect,\n      checkable,\n      dropdownPrefixCls,\n      loadData,\n      expandTrigger,\n      expandIcon,\n      loadingIcon,\n      dropdownMenuColumnStyle,\n      customSlots,\n      dropdownClassName,\n    } = toRefs(props);\n    useProvideCascader({\n      options: mergedOptions,\n      fieldNames: mergedFieldNames,\n      values: checkedValues,\n      halfValues: halfCheckedValues,\n      changeOnSelect,\n      onSelect: onInternalSelect,\n      checkable,\n      searchOptions,\n      dropdownPrefixCls,\n      loadData,\n      expandTrigger,\n      expandIcon,\n      loadingIcon,\n      dropdownMenuColumnStyle,\n      customSlots,\n    });\n    const selectRef = ref<BaseSelectRef>();\n\n    expose({\n      focus() {\n        selectRef.value?.focus();\n      },\n      blur() {\n        selectRef.value?.blur();\n      },\n      scrollTo(arg) {\n        selectRef.value?.scrollTo(arg);\n      },\n    } as BaseSelectRef);\n\n    const pickProps = computed(() => {\n      return omit(props, [\n        'id',\n        'prefixCls',\n        'fieldNames',\n\n        // Value\n        'defaultValue',\n        'value',\n        'changeOnSelect',\n        'onChange',\n        'displayRender',\n        'checkable',\n\n        // Search\n        'searchValue',\n        'onSearch',\n        'showSearch',\n\n        // Trigger\n        'expandTrigger',\n\n        // Options\n        'options',\n        'dropdownPrefixCls',\n        'loadData',\n\n        // Open\n        'popupVisible',\n        'open',\n\n        'dropdownClassName',\n        'dropdownMenuColumnStyle',\n\n        'popupPlacement',\n        'placement',\n\n        'onDropdownVisibleChange',\n        'onPopupVisibleChange',\n\n        // Icon\n        'expandIcon',\n        'loadingIcon',\n        'customSlots',\n\n        'showCheckedStrategy',\n        // Children\n        'children',\n      ]);\n    });\n    return () => {\n      const emptyOptions = !(mergedSearchValue.value ? searchOptions.value : mergedOptions.value)\n        .length;\n      const { dropdownMatchSelectWidth = false } = props;\n      const dropdownStyle: CSSProperties =\n        // Search to match width\n        (mergedSearchValue.value && mergedSearchConfig.value.matchInputWidth) ||\n        // Empty keep the width\n        emptyOptions\n          ? {}\n          : {\n              minWidth: 'auto',\n            };\n      return (\n        <BaseSelect\n          {...pickProps.value}\n          {...attrs}\n          // MISC\n          ref={selectRef}\n          id={mergedId}\n          prefixCls={props.prefixCls}\n          dropdownMatchSelectWidth={dropdownMatchSelectWidth}\n          dropdownStyle={{ ...mergedDropdownStyle.value, ...dropdownStyle }}\n          // Value\n          displayValues={displayValues.value}\n          onDisplayValuesChange={onDisplayValuesChange}\n          mode={multiple.value ? 'multiple' : undefined}\n          // Search\n          searchValue={mergedSearchValue.value}\n          onSearch={onInternalSearch}\n          showSearch={mergedShowSearch.value}\n          // Options\n          OptionList={OptionList}\n          emptyOptions={emptyOptions}\n          // Open\n          open={mergedOpen.value}\n          dropdownClassName={dropdownClassName.value}\n          placement={mergedPlacement.value}\n          onDropdownVisibleChange={onInternalDropdownVisibleChange}\n          // Children\n          getRawInputElement={() => slots.default?.()}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-cascader/OptionList/Checkbox.tsx",
    "content": "import type { MouseEventHandler } from '../../_util/EventInterface';\nimport { useInjectCascader } from '../context';\n\nexport interface CheckboxProps {\n  prefixCls: string;\n  checked?: boolean;\n  halfChecked?: boolean;\n  disabled?: boolean;\n  onClick?: MouseEventHandler;\n}\n\nexport default function Checkbox({\n  prefixCls,\n  checked,\n  halfChecked,\n  disabled,\n  onClick,\n}: CheckboxProps) {\n  const { customSlots, checkable } = useInjectCascader();\n\n  const mergedCheckable = checkable.value !== false ? customSlots.value.checkable : checkable.value;\n  const customCheckbox =\n    typeof mergedCheckable === 'function'\n      ? mergedCheckable()\n      : typeof mergedCheckable === 'boolean'\n      ? null\n      : mergedCheckable;\n  return (\n    <span\n      class={{\n        [prefixCls]: true,\n        [`${prefixCls}-checked`]: checked,\n        [`${prefixCls}-indeterminate`]: !checked && halfChecked,\n        [`${prefixCls}-disabled`]: disabled,\n      }}\n      onClick={onClick}\n    >\n      {customCheckbox}\n    </span>\n  );\n}\nCheckbox.props = ['prefixCls', 'checked', 'halfChecked', 'disabled', 'onClick'];\nCheckbox.displayName = 'Checkbox';\nCheckbox.inheritAttrs = false;\n"
  },
  {
    "path": "components/vc-cascader/OptionList/Column.tsx",
    "content": "import { isLeaf, toPathKey } from '../utils/commonUtil';\nimport Checkbox from './Checkbox';\nimport type { DefaultOptionType, SingleValueType } from '../Cascader';\nimport { SEARCH_MARK } from '../hooks/useSearchOptions';\nimport type { Key } from '../../_util/type';\nimport { useInjectCascader } from '../context';\nimport { cloneElement } from '../../_util/vnode';\nexport const FIX_LABEL = '__cascader_fix_label__';\nexport interface ColumnProps {\n  prefixCls: string;\n  multiple?: boolean;\n  options: DefaultOptionType[];\n  /** Current Column opened item key */\n  activeValue?: Key;\n  /** The value path before current column */\n  prevValuePath: Key[];\n  onToggleOpen: (open: boolean) => void;\n  onSelect: (valuePath: SingleValueType, leaf: boolean) => void;\n  onActive: (valuePath: SingleValueType) => void;\n  checkedSet: Set<Key>;\n  halfCheckedSet: Set<Key>;\n  loadingKeys: Key[];\n  isSelectable: (option: DefaultOptionType) => boolean;\n}\n\nexport default function Column({\n  prefixCls,\n  multiple,\n  options,\n  activeValue,\n  prevValuePath,\n  onToggleOpen,\n  onSelect,\n  onActive,\n  checkedSet,\n  halfCheckedSet,\n  loadingKeys,\n  isSelectable,\n}: ColumnProps) {\n  const menuPrefixCls = `${prefixCls}-menu`;\n  const menuItemPrefixCls = `${prefixCls}-menu-item`;\n\n  const {\n    fieldNames,\n    changeOnSelect,\n    expandTrigger,\n    expandIcon: expandIconRef,\n    loadingIcon: loadingIconRef,\n    dropdownMenuColumnStyle,\n    customSlots,\n  } = useInjectCascader();\n  const expandIcon = expandIconRef.value ?? customSlots.value.expandIcon?.();\n  const loadingIcon = loadingIconRef.value ?? customSlots.value.loadingIcon?.();\n\n  const hoverOpen = expandTrigger.value === 'hover';\n  // ============================ Render ============================\n  return (\n    <ul class={menuPrefixCls} role=\"menu\">\n      {options.map(option => {\n        const { disabled } = option;\n        const searchOptions = option[SEARCH_MARK];\n        const label = option[FIX_LABEL] ?? option[fieldNames.value.label];\n        const value = option[fieldNames.value.value];\n\n        const isMergedLeaf = isLeaf(option, fieldNames.value);\n\n        // Get real value of option. Search option is different way.\n        const fullPath = searchOptions\n          ? searchOptions.map(opt => opt[fieldNames.value.value])\n          : [...prevValuePath, value];\n        const fullPathKey = toPathKey(fullPath);\n\n        const isLoading = loadingKeys.includes(fullPathKey);\n\n        // >>>>> checked\n        const checked = checkedSet.has(fullPathKey);\n\n        // >>>>> halfChecked\n        const halfChecked = halfCheckedSet.has(fullPathKey);\n        // >>>>> Open\n        const triggerOpenPath = () => {\n          if (!disabled && (!hoverOpen || !isMergedLeaf)) {\n            onActive(fullPath);\n          }\n        };\n\n        // >>>>> Selection\n        const triggerSelect = () => {\n          if (isSelectable(option)) {\n            onSelect(fullPath, isMergedLeaf);\n          }\n        };\n\n        // >>>>> Title\n        let title: string;\n        if (typeof option.title === 'string') {\n          title = option.title;\n        } else if (typeof label === 'string') {\n          title = label;\n        }\n\n        // >>>>> Render\n        return (\n          <li\n            key={fullPathKey}\n            class={[\n              menuItemPrefixCls,\n              {\n                [`${menuItemPrefixCls}-expand`]: !isMergedLeaf,\n                [`${menuItemPrefixCls}-active`]: activeValue === value,\n                [`${menuItemPrefixCls}-disabled`]: disabled,\n                [`${menuItemPrefixCls}-loading`]: isLoading,\n              },\n            ]}\n            style={dropdownMenuColumnStyle.value}\n            role=\"menuitemcheckbox\"\n            title={title}\n            aria-checked={checked}\n            data-path-key={fullPathKey}\n            onClick={() => {\n              triggerOpenPath();\n              if (!multiple || isMergedLeaf) {\n                triggerSelect();\n              }\n            }}\n            onDblclick={() => {\n              if (changeOnSelect.value) {\n                onToggleOpen(false);\n              }\n            }}\n            onMouseenter={() => {\n              if (hoverOpen) {\n                triggerOpenPath();\n              }\n            }}\n            onMousedown={e => {\n              // Prevent selector from blurring\n              e.preventDefault();\n            }}\n          >\n            {multiple && (\n              <Checkbox\n                prefixCls={`${prefixCls}-checkbox`}\n                checked={checked}\n                halfChecked={halfChecked}\n                disabled={disabled}\n                onClick={(e: MouseEvent) => {\n                  e.stopPropagation();\n                  triggerSelect();\n                }}\n              />\n            )}\n            <div class={`${menuItemPrefixCls}-content`}>{label}</div>\n            {!isLoading && expandIcon && !isMergedLeaf && (\n              <div class={`${menuItemPrefixCls}-expand-icon`}>{cloneElement(expandIcon)}</div>\n            )}\n            {isLoading && loadingIcon && (\n              <div class={`${menuItemPrefixCls}-loading-icon`}>{cloneElement(loadingIcon)}</div>\n            )}\n          </li>\n        );\n      })}\n    </ul>\n  );\n}\nColumn.props = [\n  'prefixCls',\n  'multiple',\n  'options',\n  'activeValue',\n  'prevValuePath',\n  'onToggleOpen',\n  'onSelect',\n  'onActive',\n  'checkedSet',\n  'halfCheckedSet',\n  'loadingKeys',\n  'isSelectable',\n];\nColumn.displayName = 'Column';\nColumn.inheritAttrs = false;\n"
  },
  {
    "path": "components/vc-cascader/OptionList/index.tsx",
    "content": "/* eslint-disable default-case */\nimport type { DefaultOptionType, SingleValueType } from '../Cascader';\nimport {\n  isLeaf,\n  toPathKey,\n  toPathKeys,\n  toPathValueStr,\n  scrollIntoParentView,\n} from '../utils/commonUtil';\nimport useActive from './useActive';\nimport useKeyboard from './useKeyboard';\nimport { toPathOptions } from '../utils/treeUtil';\nimport { computed, defineComponent, onMounted, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { useBaseProps } from '../../vc-select';\nimport { useInjectCascader } from '../context';\nimport type { Key } from '../../_util/type';\nimport type { EventHandler } from '../../_util/EventInterface';\nimport Column, { FIX_LABEL } from './Column';\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OptionList',\n  inheritAttrs: false,\n  setup(_props, context) {\n    const { attrs, slots } = context;\n    const baseProps = useBaseProps();\n    const containerRef = ref<HTMLDivElement>();\n    const rtl = computed(() => baseProps.direction === 'rtl');\n    const {\n      options,\n      values,\n      halfValues,\n      fieldNames,\n      changeOnSelect,\n      onSelect,\n      searchOptions,\n      dropdownPrefixCls,\n      loadData,\n      expandTrigger,\n      customSlots,\n    } = useInjectCascader();\n\n    const mergedPrefixCls = computed(() => dropdownPrefixCls.value || baseProps.prefixCls);\n\n    // ========================= loadData =========================\n    const loadingKeys = shallowRef<string[]>([]);\n    const internalLoadData = (valueCells: Key[]) => {\n      // Do not load when search\n      if (!loadData.value || baseProps.searchValue) {\n        return;\n      }\n\n      const optionList = toPathOptions(valueCells, options.value, fieldNames.value);\n      const rawOptions = optionList.map(({ option }) => option);\n      const lastOption = rawOptions[rawOptions.length - 1];\n\n      if (lastOption && !isLeaf(lastOption, fieldNames.value)) {\n        const pathKey = toPathKey(valueCells);\n\n        loadingKeys.value = [...loadingKeys.value, pathKey];\n        loadData.value(rawOptions);\n      }\n    };\n\n    watchEffect(() => {\n      if (loadingKeys.value.length) {\n        loadingKeys.value.forEach(loadingKey => {\n          const valueStrCells = toPathValueStr(loadingKey);\n          const optionList = toPathOptions(\n            valueStrCells,\n            options.value,\n            fieldNames.value,\n            true,\n          ).map(({ option }) => option);\n          const lastOption = optionList[optionList.length - 1];\n\n          if (\n            !lastOption ||\n            lastOption[fieldNames.value.children] ||\n            isLeaf(lastOption, fieldNames.value)\n          ) {\n            loadingKeys.value = loadingKeys.value.filter(key => key !== loadingKey);\n          }\n        });\n      }\n    });\n\n    // ========================== Values ==========================\n    const checkedSet = computed(() => new Set(toPathKeys(values.value)));\n    const halfCheckedSet = computed(() => new Set(toPathKeys(halfValues.value)));\n\n    // ====================== Accessibility =======================\n    const [activeValueCells, setActiveValueCells] = useActive();\n\n    // =========================== Path ===========================\n    const onPathOpen = (nextValueCells: Key[]) => {\n      setActiveValueCells(nextValueCells);\n\n      // Trigger loadData\n      internalLoadData(nextValueCells);\n    };\n\n    const isSelectable = (option: DefaultOptionType) => {\n      const { disabled } = option;\n\n      const isMergedLeaf = isLeaf(option, fieldNames.value);\n      return !disabled && (isMergedLeaf || changeOnSelect.value || baseProps.multiple);\n    };\n\n    const onPathSelect = (valuePath: SingleValueType, leaf: boolean, fromKeyboard = false) => {\n      onSelect(valuePath);\n\n      if (\n        !baseProps.multiple &&\n        (leaf || (changeOnSelect.value && (expandTrigger.value === 'hover' || fromKeyboard)))\n      ) {\n        baseProps.toggleOpen(false);\n      }\n    };\n\n    // ========================== Option ==========================\n    const mergedOptions = computed(() => {\n      if (baseProps.searchValue) {\n        return searchOptions.value;\n      }\n\n      return options.value;\n    });\n\n    // ========================== Column ==========================\n    const optionColumns = computed(() => {\n      const optionList = [{ options: mergedOptions.value }];\n      let currentList = mergedOptions.value;\n      for (let i = 0; i < activeValueCells.value.length; i += 1) {\n        const activeValueCell = activeValueCells.value[i];\n        const currentOption = currentList.find(\n          option => option[fieldNames.value.value] === activeValueCell,\n        );\n\n        const subOptions = currentOption?.[fieldNames.value.children];\n        if (!subOptions?.length) {\n          break;\n        }\n\n        currentList = subOptions;\n        optionList.push({ options: subOptions });\n      }\n\n      return optionList;\n    });\n\n    // ========================= Keyboard =========================\n    const onKeyboardSelect = (selectValueCells: SingleValueType, option: DefaultOptionType) => {\n      if (isSelectable(option)) {\n        onPathSelect(selectValueCells, isLeaf(option, fieldNames.value), true);\n      }\n    };\n\n    useKeyboard(context, mergedOptions, fieldNames, activeValueCells, onPathOpen, onKeyboardSelect);\n    const onListMouseDown: EventHandler = event => {\n      event.preventDefault();\n    };\n    onMounted(() => {\n      watch(\n        activeValueCells,\n        cells => {\n          for (let i = 0; i < cells.length; i += 1) {\n            const cellPath = cells.slice(0, i + 1);\n            const cellKeyPath = toPathKey(cellPath);\n            const ele = containerRef.value?.querySelector<HTMLElement>(\n              `li[data-path-key=\"${cellKeyPath.replace(/\\\\{0,2}\"/g, '\\\\\"')}\"]`, // matches unescaped double quotes\n            );\n            if (ele) {\n              scrollIntoParentView(ele);\n            }\n          }\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n\n    return () => {\n      // ========================== Render ==========================\n      const {\n        notFoundContent = slots.notFoundContent?.() || customSlots.value.notFoundContent?.(),\n        multiple,\n        toggleOpen,\n      } = baseProps;\n      // >>>>> Empty\n      const isEmpty = !optionColumns.value[0]?.options?.length;\n\n      const emptyList: DefaultOptionType[] = [\n        {\n          [fieldNames.value.value as 'value']: '__EMPTY__',\n          [FIX_LABEL as 'label']: notFoundContent,\n          disabled: true,\n        },\n      ];\n      const columnProps = {\n        ...attrs,\n        multiple: !isEmpty && multiple,\n        onSelect: onPathSelect,\n        onActive: onPathOpen,\n        onToggleOpen: toggleOpen,\n        checkedSet: checkedSet.value,\n        halfCheckedSet: halfCheckedSet.value,\n        loadingKeys: loadingKeys.value,\n        isSelectable,\n      };\n\n      // >>>>> Columns\n      const mergedOptionColumns = isEmpty ? [{ options: emptyList }] : optionColumns.value;\n\n      const columnNodes = mergedOptionColumns.map((col, index) => {\n        const prevValuePath = activeValueCells.value.slice(0, index);\n        const activeValue = activeValueCells.value[index];\n\n        return (\n          <Column\n            key={index}\n            {...columnProps}\n            prefixCls={mergedPrefixCls.value}\n            options={col.options}\n            prevValuePath={prevValuePath}\n            activeValue={activeValue}\n          />\n        );\n      });\n      return (\n        <div\n          class={[\n            `${mergedPrefixCls.value}-menus`,\n            {\n              [`${mergedPrefixCls.value}-menu-empty`]: isEmpty,\n              [`${mergedPrefixCls.value}-rtl`]: rtl.value,\n            },\n          ]}\n          onMousedown={onListMouseDown}\n          ref={containerRef}\n        >\n          {columnNodes}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-cascader/OptionList/useActive.ts",
    "content": "import { useInjectCascader } from '../context';\nimport type { Ref } from 'vue';\nimport { watch } from 'vue';\nimport { useBaseProps } from '../../vc-select';\nimport type { Key } from '../../_util/type';\nimport useState from '../../_util/hooks/useState';\n\n/**\n * Control the active open options path.\n */\nexport default (): [Ref<Key[]>, (activeValueCells: Key[]) => void] => {\n  const baseProps = useBaseProps();\n  const { values } = useInjectCascader();\n\n  // Record current dropdown active options\n  // This also control the open status\n  const [activeValueCells, setActiveValueCells] = useState<Key[]>([]);\n\n  watch(\n    () => baseProps.open,\n    () => {\n      if (baseProps.open && !baseProps.multiple) {\n        const firstValueCells = values.value[0];\n        setActiveValueCells(firstValueCells || []);\n      }\n    },\n    { immediate: true },\n  );\n\n  return [activeValueCells, setActiveValueCells];\n};\n"
  },
  {
    "path": "components/vc-cascader/OptionList/useKeyboard.ts",
    "content": "import type { RefOptionListProps } from '../../vc-select/OptionList';\nimport type { Key } from '../../_util/type';\nimport type { Ref, SetupContext } from 'vue';\nimport { computed, ref, watchEffect } from 'vue';\nimport type { DefaultOptionType, InternalFieldNames, SingleValueType } from '../Cascader';\nimport { useBaseProps } from '../../vc-select';\nimport KeyCode from '../../_util/KeyCode';\nimport { SEARCH_MARK } from '../hooks/useSearchOptions';\n\nexport default (\n  context: SetupContext,\n  options: Ref<DefaultOptionType[]>,\n  fieldNames: Ref<InternalFieldNames>,\n  activeValueCells: Ref<Key[]>,\n  setActiveValueCells: (activeValueCells: Key[]) => void,\n  // containerRef: Ref<HTMLElement>,\n  onKeyBoardSelect: (valueCells: SingleValueType, option: DefaultOptionType) => void,\n) => {\n  const baseProps = useBaseProps();\n  const rtl = computed(() => baseProps.direction === 'rtl');\n  const [validActiveValueCells, lastActiveIndex, lastActiveOptions] = [\n    ref<Key[]>([]),\n    ref<number>(),\n    ref<DefaultOptionType[]>([]),\n  ];\n  watchEffect(() => {\n    let activeIndex = -1;\n    let currentOptions = options.value;\n\n    const mergedActiveIndexes: number[] = [];\n    const mergedActiveValueCells: Key[] = [];\n\n    const len = activeValueCells.value.length;\n    // Fill validate active value cells and index\n    for (let i = 0; i < len && currentOptions; i += 1) {\n      // Mark the active index for current options\n      const nextActiveIndex = currentOptions.findIndex(\n        option => option[fieldNames.value.value] === activeValueCells.value[i],\n      );\n\n      if (nextActiveIndex === -1) {\n        break;\n      }\n\n      activeIndex = nextActiveIndex;\n      mergedActiveIndexes.push(activeIndex);\n      mergedActiveValueCells.push(activeValueCells.value[i]);\n\n      currentOptions = currentOptions[activeIndex][fieldNames.value.children];\n    }\n\n    // Fill last active options\n    let activeOptions = options.value;\n    for (let i = 0; i < mergedActiveIndexes.length - 1; i += 1) {\n      activeOptions = activeOptions[mergedActiveIndexes[i]][fieldNames.value.children];\n    }\n\n    [validActiveValueCells.value, lastActiveIndex.value, lastActiveOptions.value] = [\n      mergedActiveValueCells,\n      activeIndex,\n      activeOptions,\n    ];\n  });\n\n  // Update active value cells and scroll to target element\n  const internalSetActiveValueCells = (next: Key[]) => {\n    setActiveValueCells(next);\n  };\n\n  // Same options offset\n  const offsetActiveOption = (offset: number) => {\n    const len = lastActiveOptions.value.length;\n\n    let currentIndex = lastActiveIndex.value;\n    if (currentIndex === -1 && offset < 0) {\n      currentIndex = len;\n    }\n\n    for (let i = 0; i < len; i += 1) {\n      currentIndex = (currentIndex + offset + len) % len;\n      const option = lastActiveOptions.value[currentIndex];\n\n      if (option && !option.disabled) {\n        const value = option[fieldNames.value.value];\n        const nextActiveCells = validActiveValueCells.value.slice(0, -1).concat(value);\n        internalSetActiveValueCells(nextActiveCells);\n        return;\n      }\n    }\n  };\n\n  // Different options offset\n  const prevColumn = () => {\n    if (validActiveValueCells.value.length > 1) {\n      const nextActiveCells = validActiveValueCells.value.slice(0, -1);\n      internalSetActiveValueCells(nextActiveCells);\n    } else {\n      baseProps.toggleOpen(false);\n    }\n  };\n\n  const nextColumn = () => {\n    const nextOptions: DefaultOptionType[] =\n      lastActiveOptions.value[lastActiveIndex.value]?.[fieldNames.value.children] || [];\n\n    const nextOption = nextOptions.find(option => !option.disabled);\n\n    if (nextOption) {\n      const nextActiveCells = [...validActiveValueCells.value, nextOption[fieldNames.value.value]];\n      internalSetActiveValueCells(nextActiveCells);\n    }\n  };\n\n  context.expose({\n    // scrollTo: treeRef.current?.scrollTo,\n    onKeydown: event => {\n      const { which } = event;\n\n      switch (which) {\n        // >>> Arrow keys\n        case KeyCode.UP:\n        case KeyCode.DOWN: {\n          let offset = 0;\n          if (which === KeyCode.UP) {\n            offset = -1;\n          } else if (which === KeyCode.DOWN) {\n            offset = 1;\n          }\n\n          if (offset !== 0) {\n            offsetActiveOption(offset);\n          }\n\n          break;\n        }\n\n        case KeyCode.LEFT: {\n          if (rtl.value) {\n            nextColumn();\n          } else {\n            prevColumn();\n          }\n          break;\n        }\n\n        case KeyCode.RIGHT: {\n          if (rtl.value) {\n            prevColumn();\n          } else {\n            nextColumn();\n          }\n          break;\n        }\n\n        case KeyCode.BACKSPACE: {\n          if (!baseProps.searchValue) {\n            prevColumn();\n          }\n          break;\n        }\n\n        // >>> Select\n        case KeyCode.ENTER: {\n          if (validActiveValueCells.value.length) {\n            const option = lastActiveOptions.value[lastActiveIndex.value];\n\n            // Search option should revert back of origin options\n            const originOptions: DefaultOptionType[] = option?.[SEARCH_MARK] || [];\n            if (originOptions.length) {\n              onKeyBoardSelect(\n                originOptions.map(opt => opt[fieldNames.value.value]),\n                originOptions[originOptions.length - 1],\n              );\n            } else {\n              onKeyBoardSelect(validActiveValueCells.value, option);\n            }\n          }\n          break;\n        }\n\n        // >>> Close\n        case KeyCode.ESC: {\n          baseProps.toggleOpen(false);\n\n          if (open) {\n            event.stopPropagation();\n          }\n        }\n      }\n    },\n    onKeyup: () => {},\n  } as RefOptionListProps);\n};\n"
  },
  {
    "path": "components/vc-cascader/context.ts",
    "content": "import type { CSSProperties, InjectionKey, Ref } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport type {\n  BaseCascaderProps,\n  InternalFieldNames,\n  DefaultOptionType,\n  SingleValueType,\n} from './Cascader';\n\nexport interface CascaderContextProps {\n  options: Ref<BaseCascaderProps['options']>;\n  fieldNames: Ref<InternalFieldNames>;\n  values: Ref<SingleValueType[]>;\n  halfValues: Ref<SingleValueType[]>;\n  changeOnSelect: Ref<boolean>;\n  onSelect: (valuePath: SingleValueType) => void;\n  checkable: Ref<boolean | VueNode>;\n  searchOptions: Ref<DefaultOptionType[]>;\n  dropdownPrefixCls?: Ref<string>;\n  loadData: Ref<(selectOptions: DefaultOptionType[]) => void>;\n  expandTrigger: Ref<'hover' | 'click'>;\n  expandIcon: Ref<VueNode>;\n  loadingIcon: Ref<VueNode>;\n  dropdownMenuColumnStyle: Ref<CSSProperties>;\n  customSlots: Ref<Record<string, Function>>;\n}\n\nconst CascaderContextKey: InjectionKey<CascaderContextProps> = Symbol('CascaderContextKey');\nexport const useProvideCascader = (props: CascaderContextProps) => {\n  provide(CascaderContextKey, props);\n};\n\nexport const useInjectCascader = () => {\n  return inject(CascaderContextKey);\n};\n"
  },
  {
    "path": "components/vc-cascader/hooks/useDisplayValues.ts",
    "content": "import { toPathOptions } from '../utils/treeUtil';\nimport type {\n  DefaultOptionType,\n  SingleValueType,\n  BaseCascaderProps,\n  InternalFieldNames,\n} from '../Cascader';\nimport { toPathKey } from '../utils/commonUtil';\nimport type { Ref, VNode } from 'vue';\nimport { computed } from 'vue';\nimport { isValidElement } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\n\nexport default (\n  rawValues: Ref<SingleValueType[]>,\n  options: Ref<DefaultOptionType[]>,\n  fieldNames: Ref<InternalFieldNames>,\n  multiple: Ref<boolean>,\n  displayRender: Ref<BaseCascaderProps['displayRender']>,\n) => {\n  return computed(() => {\n    const mergedDisplayRender =\n      displayRender.value ||\n      // Default displayRender\n      (({ labels }) => {\n        const mergedLabels = multiple.value ? labels.slice(-1) : labels;\n        const SPLIT = ' / ';\n\n        if (mergedLabels.every(label => ['string', 'number'].includes(typeof label))) {\n          return mergedLabels.join(SPLIT);\n        }\n\n        // If exist non-string value, use VueNode instead\n        return mergedLabels.reduce((list, label, index) => {\n          const keyedLabel = isValidElement(label)\n            ? cloneElement(label as unknown as VNode, { key: index })\n            : label;\n\n          if (index === 0) {\n            return [keyedLabel];\n          }\n\n          return [...list, SPLIT, keyedLabel];\n        }, []);\n      });\n\n    return rawValues.value.map(valueCells => {\n      const valueOptions = toPathOptions(valueCells, options.value, fieldNames.value);\n\n      const label = mergedDisplayRender({\n        labels: valueOptions.map(({ option, value }) => option?.[fieldNames.value.label] ?? value),\n        selectedOptions: valueOptions.map(({ option }) => option),\n      });\n      const value = toPathKey(valueCells);\n      return {\n        label,\n        value,\n        key: value,\n        valueCells,\n      };\n    });\n  });\n};\n"
  },
  {
    "path": "components/vc-cascader/hooks/useEntities.ts",
    "content": "import { convertDataToEntities } from '../../vc-tree/utils/treeUtil';\nimport type { DataEntity } from '../../vc-tree/interface';\nimport type { DefaultOptionType, InternalFieldNames } from '../Cascader';\nimport { VALUE_SPLIT } from '../utils/commonUtil';\nimport type { Ref } from 'vue';\nimport { computed } from 'vue';\n\nexport interface OptionsInfo {\n  keyEntities: Record<string, DataEntity>;\n  pathKeyEntities: Record<string, DataEntity>;\n}\n\n/** Lazy parse options data into conduct-able info to avoid perf issue in single mode */\nexport default (options: Ref<DefaultOptionType[]>, fieldNames: Ref<InternalFieldNames>) => {\n  const entities = computed(() => {\n    return (\n      convertDataToEntities(options.value as any, {\n        fieldNames: fieldNames.value,\n        initWrapper: wrapper => ({\n          ...wrapper,\n          pathKeyEntities: {},\n        }),\n        processEntity: (entity, wrapper: any) => {\n          const pathKey = entity.nodes.map(node => node[fieldNames.value.value]).join(VALUE_SPLIT);\n\n          wrapper.pathKeyEntities[pathKey] = entity;\n\n          // Overwrite origin key.\n          // this is very hack but we need let conduct logic work with connect path\n          entity.key = pathKey;\n        },\n      }) as any\n    ).pathKeyEntities;\n  });\n  return entities;\n};\n"
  },
  {
    "path": "components/vc-cascader/hooks/useMissingValues.ts",
    "content": "import type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { SingleValueType, DefaultOptionType, InternalFieldNames } from '../Cascader';\nimport { toPathOptions } from '../utils/treeUtil';\n\nexport default (\n  options: Ref<DefaultOptionType[]>,\n  fieldNames: Ref<InternalFieldNames>,\n  rawValues: Ref<SingleValueType[]>,\n) => {\n  return computed(() => {\n    const missingValues: SingleValueType[] = [];\n    const existsValues: SingleValueType[] = [];\n\n    rawValues.value.forEach(valueCell => {\n      const pathOptions = toPathOptions(valueCell, options.value, fieldNames.value);\n      if (pathOptions.every(opt => opt.option)) {\n        existsValues.push(valueCell);\n      } else {\n        missingValues.push(valueCell);\n      }\n    });\n\n    return [existsValues, missingValues];\n  });\n};\n"
  },
  {
    "path": "components/vc-cascader/hooks/useSearchConfig.ts",
    "content": "import type { BaseCascaderProps, ShowSearchType } from '../Cascader';\nimport type { Ref } from 'vue';\nimport { ref, shallowRef, watchEffect } from 'vue';\nimport { warning } from '../../vc-util/warning';\n\n// Convert `showSearch` to unique config\nexport default function useSearchConfig(showSearch?: Ref<BaseCascaderProps['showSearch']>) {\n  const mergedShowSearch = shallowRef(false);\n  const mergedSearchConfig = ref<ShowSearchType>({});\n  watchEffect(() => {\n    if (!showSearch.value) {\n      mergedShowSearch.value = false;\n      mergedSearchConfig.value = {};\n      return;\n    }\n\n    let searchConfig: ShowSearchType = {\n      matchInputWidth: true,\n      limit: 50,\n    };\n\n    if (showSearch.value && typeof showSearch.value === 'object') {\n      searchConfig = {\n        ...searchConfig,\n        ...showSearch.value,\n      };\n    }\n\n    if (searchConfig.limit <= 0) {\n      delete searchConfig.limit;\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, \"'limit' of showSearch should be positive number or false.\");\n      }\n    }\n    mergedShowSearch.value = true;\n    mergedSearchConfig.value = searchConfig;\n    return;\n  });\n  return { showSearch: mergedShowSearch, searchConfig: mergedSearchConfig };\n}\n"
  },
  {
    "path": "components/vc-cascader/hooks/useSearchOptions.ts",
    "content": "import type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { DefaultOptionType, ShowSearchType, InternalFieldNames } from '../Cascader';\n\nexport const SEARCH_MARK = '__rc_cascader_search_mark__';\n\nconst defaultFilter: ShowSearchType['filter'] = (search, options, { label }) =>\n  options.some(opt => String(opt[label]).toLowerCase().includes(search.toLowerCase()));\n\nconst defaultRender: ShowSearchType['render'] = ({ path, fieldNames }) =>\n  path.map(opt => opt[fieldNames.label]).join(' / ');\n\nexport default (\n  search: Ref<string>,\n  options: Ref<DefaultOptionType[]>,\n  fieldNames: Ref<InternalFieldNames>,\n  prefixCls: Ref<string>,\n  config: Ref<ShowSearchType>,\n  changeOnSelect: Ref<boolean>,\n) => {\n  return computed(() => {\n    const { filter = defaultFilter, render = defaultRender, limit = 50, sort } = config.value;\n    const filteredOptions: DefaultOptionType[] = [];\n    if (!search.value) {\n      return [];\n    }\n\n    function dig(list: DefaultOptionType[], pathOptions: DefaultOptionType[]) {\n      list.forEach(option => {\n        // Perf saving when `sort` is disabled and `limit` is provided\n        if (!sort && limit > 0 && filteredOptions.length >= limit) {\n          return;\n        }\n\n        const connectedPathOptions = [...pathOptions, option];\n        const children = option[fieldNames.value.children];\n\n        // If current option is filterable\n        if (\n          // If is leaf option\n          !children ||\n          children.length === 0 ||\n          // If is changeOnSelect\n          changeOnSelect.value\n        ) {\n          if (filter(search.value, connectedPathOptions, { label: fieldNames.value.label })) {\n            filteredOptions.push({\n              ...option,\n              [fieldNames.value.label as 'label']: render({\n                inputValue: search.value,\n                path: connectedPathOptions,\n                prefixCls: prefixCls.value,\n                fieldNames: fieldNames.value,\n              }),\n              [SEARCH_MARK]: connectedPathOptions,\n            });\n          }\n        }\n\n        if (children) {\n          dig(option[fieldNames.value.children] as DefaultOptionType[], connectedPathOptions);\n        }\n      });\n    }\n\n    dig(options.value, []);\n\n    // Do sort\n    if (sort) {\n      filteredOptions.sort((a, b) => {\n        return sort(a[SEARCH_MARK], b[SEARCH_MARK], search.value, fieldNames.value);\n      });\n    }\n\n    return limit > 0 ? filteredOptions.slice(0, limit as number) : filteredOptions;\n  });\n};\n"
  },
  {
    "path": "components/vc-cascader/index.tsx",
    "content": "// rc-cascader@3.4.2\nimport Cascader, {\n  internalCascaderProps as cascaderProps,\n  SHOW_PARENT,\n  SHOW_CHILD,\n} from './Cascader';\n\nexport type {\n  CascaderProps,\n  FieldNames,\n  ShowSearchType,\n  DefaultOptionType,\n  BaseOptionType,\n} from './Cascader';\nexport { cascaderProps, SHOW_PARENT, SHOW_CHILD };\nexport default Cascader;\n"
  },
  {
    "path": "components/vc-cascader/utils/commonUtil.ts",
    "content": "import type {\n  DefaultOptionType,\n  FieldNames,\n  InternalFieldNames,\n  SingleValueType,\n} from '../Cascader';\n\nexport const VALUE_SPLIT = '__RC_CASCADER_SPLIT__';\nexport const SHOW_PARENT = 'SHOW_PARENT';\nexport const SHOW_CHILD = 'SHOW_CHILD';\n\nexport function toPathKey(value: SingleValueType) {\n  return value.join(VALUE_SPLIT);\n}\n\nexport function toPathKeys(value: SingleValueType[]) {\n  return value.map(toPathKey);\n}\n\nexport function toPathValueStr(pathKey: string) {\n  return pathKey.split(VALUE_SPLIT);\n}\n\nexport function fillFieldNames(fieldNames?: FieldNames): InternalFieldNames {\n  const { label, value, children } = fieldNames || {};\n  const val = value || 'value';\n  return {\n    label: label || 'label',\n    value: val,\n    key: val,\n    children: children || 'children',\n  };\n}\n\nexport function isLeaf(option: DefaultOptionType, fieldNames: FieldNames) {\n  return option.isLeaf ?? !option[fieldNames.children]?.length;\n}\n\nexport function scrollIntoParentView(element: HTMLElement) {\n  const parent = element.parentElement;\n  if (!parent) {\n    return;\n  }\n\n  const elementToParent = element.offsetTop - parent.offsetTop; // offsetParent may not be parent.\n  if (elementToParent - parent.scrollTop < 0) {\n    parent.scrollTo({ top: elementToParent });\n  } else if (elementToParent + element.offsetHeight - parent.scrollTop > parent.offsetHeight) {\n    parent.scrollTo({ top: elementToParent + element.offsetHeight - parent.offsetHeight });\n  }\n}\n"
  },
  {
    "path": "components/vc-cascader/utils/treeUtil.ts",
    "content": "import type { Key } from '../../_util/type';\nimport type {\n  SingleValueType,\n  DefaultOptionType,\n  InternalFieldNames,\n  ShowCheckedStrategy,\n} from '../Cascader';\nimport type { OptionsInfo } from '../hooks/useEntities';\nimport { SHOW_CHILD } from './commonUtil';\n\nexport function formatStrategyValues(\n  pathKeys: Key[],\n  keyPathEntities: OptionsInfo['pathKeyEntities'],\n  showCheckedStrategy: ShowCheckedStrategy,\n) {\n  const valueSet = new Set(pathKeys);\n\n  return pathKeys.filter(key => {\n    const entity = keyPathEntities[key];\n    const parent = entity ? entity.parent : null;\n    const children = entity ? entity.children : null;\n    return showCheckedStrategy === SHOW_CHILD\n      ? !(children && children.some(child => child.key && valueSet.has(child.key)))\n      : !(parent && !parent.node.disabled && valueSet.has(parent.key));\n  });\n}\n\nexport function toPathOptions(\n  valueCells: SingleValueType,\n  options: DefaultOptionType[],\n  fieldNames: InternalFieldNames,\n  // Used for loadingKeys which saved loaded keys as string\n  stringMode = false,\n) {\n  let currentList = options;\n  const valueOptions: {\n    value: SingleValueType[number];\n    index: number;\n    option: DefaultOptionType;\n  }[] = [];\n\n  for (let i = 0; i < valueCells.length; i += 1) {\n    const valueCell = valueCells[i];\n    const foundIndex = currentList?.findIndex(option => {\n      const val = option[fieldNames.value];\n      return stringMode ? String(val) === String(valueCell) : val === valueCell;\n    });\n    const foundOption = foundIndex !== -1 ? currentList?.[foundIndex] : null;\n\n    valueOptions.push({\n      value: foundOption?.[fieldNames.value] ?? valueCell,\n      index: foundIndex,\n      option: foundOption,\n    });\n\n    currentList = foundOption?.[fieldNames.children];\n  }\n\n  return valueOptions;\n}\n"
  },
  {
    "path": "components/vc-checkbox/Checkbox.tsx",
    "content": "// based on rc-checkbox 2.3.2\nimport type { HTMLAttributes } from 'vue';\nimport { defineComponent, ref, watch } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\n\nexport const checkboxProps = {\n  prefixCls: String,\n  name: String,\n  id: String,\n  type: String,\n  defaultChecked: { type: [Boolean, Number], default: undefined },\n  checked: { type: [Boolean, Number], default: undefined },\n  disabled: Boolean,\n  tabindex: { type: [Number, String] },\n  readonly: Boolean,\n  autofocus: Boolean,\n  value: PropTypes.any,\n  required: Boolean,\n};\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Checkbox',\n  inheritAttrs: false,\n  props: initDefaultProps(checkboxProps, {\n    prefixCls: 'rc-checkbox',\n    type: 'checkbox',\n    defaultChecked: false,\n  }),\n  emits: ['click', 'change'],\n  setup(props, { attrs, emit, expose }) {\n    const checked = ref(props.checked === undefined ? props.defaultChecked : props.checked);\n    const inputRef = ref<HTMLInputElement>();\n    watch(\n      () => props.checked,\n      () => {\n        checked.value = props.checked;\n      },\n    );\n    expose({\n      focus() {\n        inputRef.value?.focus();\n      },\n\n      blur() {\n        inputRef.value?.blur();\n      },\n    });\n    const eventShiftKey = ref();\n    const handleChange = e => {\n      if (props.disabled) {\n        return;\n      }\n      if (props.checked === undefined) {\n        checked.value = e.target.checked;\n      }\n      e.shiftKey = eventShiftKey.value;\n      const eventObj = {\n        target: {\n          ...props,\n          checked: e.target.checked,\n        },\n        stopPropagation() {\n          e.stopPropagation();\n        },\n        preventDefault() {\n          e.preventDefault();\n        },\n        nativeEvent: e,\n      };\n\n      // fix https://github.com/vueComponent/ant-design-vue/issues/3047\n      // 受控模式下维持现有状态\n      if (props.checked !== undefined) {\n        inputRef.value.checked = !!props.checked;\n      }\n      emit('change', eventObj);\n      eventShiftKey.value = false;\n    };\n    const onClick = (e: MouseEvent) => {\n      emit('click', e);\n      // onChange没能获取到shiftKey，使用onClick hack\n      eventShiftKey.value = e.shiftKey;\n    };\n    return () => {\n      const {\n        prefixCls,\n        name,\n        id,\n        type,\n        disabled,\n        readonly,\n        tabindex,\n        autofocus,\n        value,\n        required,\n        ...others\n      } = props;\n      const {\n        class: className,\n        onFocus,\n        onBlur,\n        onKeydown,\n        onKeypress,\n        onKeyup,\n      } = attrs as HTMLAttributes;\n      const othersAndAttrs = { ...others, ...attrs };\n      const globalProps = Object.keys(othersAndAttrs).reduce((prev, key) => {\n        if (key.startsWith('data-') || key.startsWith('aria-') || key === 'role') {\n          prev[key] = othersAndAttrs[key];\n        }\n        return prev;\n      }, {});\n\n      const classString = classNames(prefixCls, className, {\n        [`${prefixCls}-checked`]: checked.value,\n        [`${prefixCls}-disabled`]: disabled,\n      });\n      const inputProps = {\n        name,\n        id,\n        type,\n        readonly,\n        disabled,\n        tabindex,\n        class: `${prefixCls}-input`,\n        checked: !!checked.value,\n        autofocus,\n        value,\n        ...globalProps,\n        onChange: handleChange,\n        onClick,\n        onFocus,\n        onBlur,\n        onKeydown,\n        onKeypress,\n        onKeyup,\n        required,\n      };\n\n      return (\n        <span class={classString}>\n          <input ref={inputRef} {...inputProps} />\n          <span class={`${prefixCls}-inner`} />\n        </span>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-dialog/Content.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { Transition, computed, ref, defineComponent, nextTick } from 'vue';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { getTransitionProps } from '../_util/transition';\nimport dialogPropTypes from './IDialogPropTypes';\nimport { offset } from './util';\nconst sentinelStyle = { width: 0, height: 0, overflow: 'hidden', outline: 'none' };\nconst entityStyle = { outline: 'none' };\nexport type ContentRef = {\n  focus: () => void;\n  changeActive: (next: boolean) => void;\n};\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DialogContent',\n  inheritAttrs: false,\n  props: {\n    ...dialogPropTypes(),\n    motionName: String,\n    ariaId: String,\n    onVisibleChanged: Function as PropType<(visible: boolean) => void>,\n    onMousedown: Function as PropType<MouseEventHandler>,\n    onMouseup: Function as PropType<MouseEventHandler>,\n  },\n  setup(props, { expose, slots, attrs }) {\n    const sentinelStartRef = ref<HTMLDivElement>();\n    const sentinelEndRef = ref<HTMLDivElement>();\n    const dialogRef = ref<HTMLDivElement>();\n    expose({\n      focus: () => {\n        sentinelStartRef.value?.focus({ preventScroll: true });\n      },\n      changeActive: next => {\n        const { activeElement } = document;\n        if (next && activeElement === sentinelEndRef.value) {\n          sentinelStartRef.value.focus({ preventScroll: true });\n        } else if (!next && activeElement === sentinelStartRef.value) {\n          sentinelEndRef.value.focus({ preventScroll: true });\n        }\n      },\n    });\n    const transformOrigin = ref<string>();\n    const contentStyleRef = computed(() => {\n      const { width, height } = props;\n      const contentStyle: CSSProperties = {};\n      if (width !== undefined) {\n        contentStyle.width = typeof width === 'number' ? `${width}px` : width;\n      }\n      if (height !== undefined) {\n        contentStyle.height = typeof height === 'number' ? `${height}px` : height;\n      }\n      if (transformOrigin.value) {\n        contentStyle.transformOrigin = transformOrigin.value;\n      }\n      return contentStyle;\n    });\n\n    const onPrepare = () => {\n      nextTick(() => {\n        if (dialogRef.value) {\n          const elementOffset = offset(dialogRef.value);\n          transformOrigin.value = props.mousePosition\n            ? `${props.mousePosition.x - elementOffset.left}px ${\n                props.mousePosition.y - elementOffset.top\n              }px`\n            : '';\n        }\n      });\n    };\n    const onVisibleChanged = (visible: boolean) => {\n      props.onVisibleChanged(visible);\n    };\n    return () => {\n      const {\n        prefixCls,\n        footer = slots.footer?.(),\n        title = slots.title?.(),\n        ariaId,\n        closable,\n        closeIcon = slots.closeIcon?.(),\n        onClose,\n        bodyStyle,\n        bodyProps,\n        onMousedown,\n        onMouseup,\n        visible,\n        modalRender = slots.modalRender,\n        destroyOnClose,\n        motionName,\n      } = props;\n      let footerNode: any;\n      if (footer) {\n        footerNode = <div class={`${prefixCls}-footer`}>{footer}</div>;\n      }\n\n      let headerNode: any;\n      if (title) {\n        headerNode = (\n          <div class={`${prefixCls}-header`}>\n            <div class={`${prefixCls}-title`} id={ariaId}>\n              {title}\n            </div>\n          </div>\n        );\n      }\n\n      let closer: any;\n      if (closable) {\n        closer = (\n          <button type=\"button\" onClick={onClose} aria-label=\"Close\" class={`${prefixCls}-close`}>\n            {closeIcon || <span class={`${prefixCls}-close-x`} />}\n          </button>\n        );\n      }\n\n      const content = (\n        <div class={`${prefixCls}-content`}>\n          {closer}\n          {headerNode}\n          <div class={`${prefixCls}-body`} style={bodyStyle} {...bodyProps}>\n            {slots.default?.()}\n          </div>\n          {footerNode}\n        </div>\n      );\n      const transitionProps = getTransitionProps(motionName);\n      return (\n        <Transition\n          {...transitionProps}\n          onBeforeEnter={onPrepare}\n          onAfterEnter={() => onVisibleChanged(true)}\n          onAfterLeave={() => onVisibleChanged(false)}\n        >\n          {visible || !destroyOnClose ? (\n            <div\n              {...attrs}\n              ref={dialogRef}\n              v-show={visible}\n              key=\"dialog-element\"\n              role=\"document\"\n              style={[contentStyleRef.value, attrs.style as CSSProperties]}\n              class={[prefixCls, attrs.class]}\n              onMousedown={onMousedown}\n              onMouseup={onMouseup}\n            >\n              <div tabindex={0} ref={sentinelStartRef} style={entityStyle}>\n                {modalRender ? modalRender({ originVNode: content }) : content}\n              </div>\n              <div tabindex={0} ref={sentinelEndRef} style={sentinelStyle} />\n            </div>\n          ) : null}\n        </Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-dialog/Dialog.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, onBeforeUnmount, shallowRef, watch, watchEffect } from 'vue';\nimport contains from '../vc-util/Dom/contains';\nimport type ScrollLocker from '../vc-util/Dom/scrollLocker';\nimport classNames from '../_util/classNames';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport KeyCode from '../_util/KeyCode';\nimport omit from '../_util/omit';\nimport pickAttrs from '../_util/pickAttrs';\nimport { initDefaultProps } from '../_util/props-util';\nimport type { ContentRef } from './Content';\nimport Content from './Content';\nimport dialogPropTypes from './IDialogPropTypes';\nimport Mask from './Mask';\nimport { getMotionName, getUUID } from './util';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VcDialog',\n  inheritAttrs: false,\n  props: initDefaultProps(\n    {\n      ...dialogPropTypes(),\n      getOpenCount: Function as PropType<() => number>,\n      scrollLocker: Object as PropType<ScrollLocker>,\n    },\n    {\n      mask: true,\n      visible: false,\n      keyboard: true,\n      closable: true,\n      maskClosable: true,\n      destroyOnClose: false,\n      prefixCls: 'rc-dialog',\n      getOpenCount: () => null,\n      focusTriggerAfterClose: true,\n    },\n  ),\n  setup(props, { attrs, slots }) {\n    const lastOutSideActiveElementRef = shallowRef<HTMLElement>();\n    const wrapperRef = shallowRef<HTMLDivElement>();\n    const contentRef = shallowRef<ContentRef>();\n    const animatedVisible = shallowRef(props.visible);\n    const ariaIdRef = shallowRef<string>(`vcDialogTitle${getUUID()}`);\n\n    // ========================= Events =========================\n    const onDialogVisibleChanged = (newVisible: boolean) => {\n      if (newVisible) {\n        // Try to focus\n        if (!contains(wrapperRef.value, document.activeElement as HTMLElement)) {\n          lastOutSideActiveElementRef.value = document.activeElement as HTMLElement;\n          contentRef.value?.focus();\n        }\n      } else {\n        const preAnimatedVisible = animatedVisible.value;\n        // Clean up scroll bar & focus back\n        animatedVisible.value = false;\n        if (props.mask && lastOutSideActiveElementRef.value && props.focusTriggerAfterClose) {\n          try {\n            lastOutSideActiveElementRef.value.focus({ preventScroll: true });\n          } catch (e) {\n            // Do nothing\n          }\n          lastOutSideActiveElementRef.value = null;\n        }\n\n        // Trigger afterClose only when change visible from true to false\n        if (preAnimatedVisible) {\n          props.afterClose?.();\n        }\n      }\n    };\n\n    const onInternalClose = (e: MouseEvent | KeyboardEvent) => {\n      props.onClose?.(e);\n    };\n\n    // >>> Content\n    const contentClickRef = shallowRef(false);\n    const contentTimeoutRef = shallowRef<any>();\n\n    // We need record content click incase content popup out of dialog\n    const onContentMouseDown: MouseEventHandler = () => {\n      clearTimeout(contentTimeoutRef.value);\n      contentClickRef.value = true;\n    };\n\n    const onContentMouseUp: MouseEventHandler = () => {\n      contentTimeoutRef.value = setTimeout(() => {\n        contentClickRef.value = false;\n      });\n    };\n\n    const onWrapperClick = (e: MouseEvent) => {\n      if (!props.maskClosable) return null;\n      if (contentClickRef.value) {\n        contentClickRef.value = false;\n      } else if (wrapperRef.value === e.target) {\n        onInternalClose(e);\n      }\n    };\n    const onWrapperKeyDown = (e: KeyboardEvent) => {\n      if (props.keyboard && e.keyCode === KeyCode.ESC) {\n        e.stopPropagation();\n        onInternalClose(e);\n        return;\n      }\n\n      // keep focus inside dialog\n      if (props.visible) {\n        if (e.keyCode === KeyCode.TAB) {\n          contentRef.value.changeActive(!e.shiftKey);\n        }\n      }\n    };\n\n    watch(\n      () => props.visible,\n      () => {\n        if (props.visible) {\n          animatedVisible.value = true;\n        }\n      },\n      { flush: 'post' },\n    );\n\n    onBeforeUnmount(() => {\n      clearTimeout(contentTimeoutRef.value);\n      props.scrollLocker?.unLock();\n    });\n    watchEffect(() => {\n      props.scrollLocker?.unLock();\n      if (animatedVisible.value) {\n        props.scrollLocker?.lock();\n      }\n    });\n\n    return () => {\n      const {\n        prefixCls,\n        mask,\n        visible,\n        maskTransitionName,\n        maskAnimation,\n        zIndex,\n        wrapClassName,\n        rootClassName,\n        wrapStyle,\n        closable,\n        maskProps,\n        maskStyle,\n        transitionName,\n        animation,\n        wrapProps,\n        title = slots.title,\n      } = props;\n      const { style, class: className } = attrs;\n      return (\n        <div class={[`${prefixCls}-root`, rootClassName]} {...pickAttrs(props, { data: true })}>\n          <Mask\n            prefixCls={prefixCls}\n            visible={mask && visible}\n            motionName={getMotionName(prefixCls, maskTransitionName, maskAnimation)}\n            style={{\n              zIndex,\n              ...maskStyle,\n            }}\n            maskProps={maskProps}\n          />\n          <div\n            tabIndex={-1}\n            onKeydown={onWrapperKeyDown}\n            class={classNames(`${prefixCls}-wrap`, wrapClassName)}\n            ref={wrapperRef}\n            onClick={onWrapperClick}\n            role=\"dialog\"\n            aria-labelledby={title ? ariaIdRef.value : null}\n            style={{ zIndex, ...wrapStyle, display: !animatedVisible.value ? 'none' : null }}\n            {...wrapProps}\n          >\n            <Content\n              {...omit(props, ['scrollLocker'])}\n              style={style}\n              class={className}\n              v-slots={slots}\n              onMousedown={onContentMouseDown}\n              onMouseup={onContentMouseUp}\n              ref={contentRef}\n              closable={closable}\n              ariaId={ariaIdRef.value}\n              prefixCls={prefixCls}\n              visible={visible}\n              onClose={onInternalClose}\n              onVisibleChanged={onDialogVisibleChanged}\n              motionName={getMotionName(prefixCls, transitionName, animation)}\n            />\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-dialog/DialogWrap.tsx",
    "content": "import Dialog from './Dialog';\nimport type { IDialogChildProps } from './IDialogPropTypes';\nimport getDialogPropTypes from './IDialogPropTypes';\nimport Portal from '../_util/PortalWrapper';\nimport { defineComponent, ref, watch } from 'vue';\nimport { useProvidePortal } from '../vc-trigger/context';\nimport { initDefaultProps } from '../_util/props-util';\nconst IDialogPropTypes = getDialogPropTypes();\nconst DialogWrap = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DialogWrap',\n  inheritAttrs: false,\n  props: initDefaultProps(IDialogPropTypes, {\n    visible: false,\n  }),\n  setup(props, { attrs, slots }) {\n    const animatedVisible = ref(props.visible);\n    useProvidePortal({}, { inTriggerContext: false });\n    watch(\n      () => props.visible,\n      () => {\n        if (props.visible) {\n          animatedVisible.value = true;\n        }\n      },\n      { flush: 'post' },\n    );\n    return () => {\n      const { visible, getContainer, forceRender, destroyOnClose = false, afterClose } = props;\n      let dialogProps = {\n        ...props,\n        ...attrs,\n        ref: '_component',\n        key: 'dialog',\n      } as IDialogChildProps;\n      // 渲染在当前 dom 里；\n      if (getContainer === false) {\n        return (\n          <Dialog\n            {...dialogProps}\n            getOpenCount={() => 2} // 不对 body 做任何操作。。\n            v-slots={slots}\n          ></Dialog>\n        );\n      }\n\n      // Destroy on close will remove wrapped div\n      if (!forceRender && destroyOnClose && !animatedVisible.value) {\n        return null;\n      }\n      return (\n        <Portal\n          autoLock\n          visible={visible}\n          forceRender={forceRender}\n          getContainer={getContainer}\n          v-slots={{\n            default: (childProps: IDialogChildProps) => {\n              dialogProps = {\n                ...dialogProps,\n                ...childProps,\n                afterClose: () => {\n                  afterClose?.();\n                  animatedVisible.value = false;\n                },\n              };\n              return <Dialog {...dialogProps} v-slots={slots}></Dialog>;\n            },\n          }}\n        />\n      );\n    };\n  },\n});\n\nexport default DialogWrap;\n"
  },
  {
    "path": "components/vc-dialog/IDialogPropTypes.ts",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\n\nexport function dialogPropTypes() {\n  return {\n    keyboard: { type: Boolean, default: undefined },\n    mask: { type: Boolean, default: undefined },\n    afterClose: Function,\n    closable: { type: Boolean, default: undefined },\n    maskClosable: { type: Boolean, default: undefined },\n    visible: { type: Boolean, default: undefined },\n    destroyOnClose: { type: Boolean, default: undefined },\n    mousePosition: PropTypes.shape({\n      x: Number,\n      y: Number,\n    }).loose,\n    title: PropTypes.any,\n    footer: PropTypes.any,\n    transitionName: String,\n    maskTransitionName: String,\n    animation: PropTypes.any,\n    maskAnimation: PropTypes.any,\n    wrapStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    bodyStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    maskStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    prefixCls: String,\n    wrapClassName: String,\n    rootClassName: String,\n    width: [String, Number],\n    height: [String, Number],\n    zIndex: Number,\n    bodyProps: PropTypes.any,\n    maskProps: PropTypes.any,\n    wrapProps: PropTypes.any,\n    getContainer: PropTypes.any,\n    dialogStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    dialogClass: String,\n    closeIcon: PropTypes.any,\n    forceRender: { type: Boolean, default: undefined },\n    getOpenCount: Function as PropType<() => number>,\n    // https://github.com/ant-design/ant-design/issues/19771\n    // https://github.com/react-component/dialog/issues/95\n    focusTriggerAfterClose: { type: Boolean, default: undefined },\n    onClose: Function as PropType<(e: MouseEvent | KeyboardEvent) => void>,\n    modalRender: Function,\n  };\n}\nexport type IDialogChildProps = Partial<ExtractPropTypes<ReturnType<typeof dialogPropTypes>>>;\nexport default dialogPropTypes;\n"
  },
  {
    "path": "components/vc-dialog/Mask.tsx",
    "content": "import { defineComponent, Transition } from 'vue';\nimport { getTransitionProps } from '../_util/transition';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DialogMask',\n  props: {\n    prefixCls: String,\n    visible: Boolean,\n    motionName: String,\n    maskProps: Object,\n  },\n  setup(props, {}) {\n    return () => {\n      const { prefixCls, visible, maskProps, motionName } = props;\n      const transitionProps = getTransitionProps(motionName);\n      return (\n        <Transition {...transitionProps}>\n          <div v-show={visible} class={`${prefixCls}-mask`} {...maskProps} />\n        </Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-dialog/index.ts",
    "content": "// based on vc-dialog 8.6.0\nimport DialogWrap from './DialogWrap';\nimport dialogProps from './IDialogPropTypes';\n\nexport { dialogProps };\n\nexport default DialogWrap;\n"
  },
  {
    "path": "components/vc-dialog/util.ts",
    "content": "// =============================== Motion ===============================\nexport function getMotionName(prefixCls: string, transitionName?: string, animationName?: string) {\n  let motionName = transitionName;\n  if (!motionName && animationName) {\n    motionName = `${prefixCls}-${animationName}`;\n  }\n  return motionName;\n}\n\n// ================================ UUID ================================\nlet uuid = -1;\nexport function getUUID() {\n  uuid += 1;\n  return uuid;\n}\n\n// =============================== Offset ===============================\nfunction getScroll(w: Window, top?: boolean): number {\n  let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n  const method = `scroll${top ? 'Top' : 'Left'}`;\n  if (typeof ret !== 'number') {\n    const d = w.document;\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\n\ntype CompatibleDocument = {\n  parentWindow?: Window;\n} & Document;\n\nexport function offset(el: Element) {\n  const rect = el.getBoundingClientRect();\n  const pos = {\n    left: rect.left,\n    top: rect.top,\n  };\n  const doc = el.ownerDocument as CompatibleDocument;\n  const w = doc.defaultView || doc.parentWindow;\n  pos.left += getScroll(w);\n  pos.top += getScroll(w, true);\n  return pos;\n}\n"
  },
  {
    "path": "components/vc-drawer/index.ts",
    "content": "// base rc-drawer 4.4.3\nimport Drawer from './src/DrawerWrapper';\n\nexport default Drawer;\n"
  },
  {
    "path": "components/vc-drawer/src/DrawerChild.tsx",
    "content": "import {\n  Transition,\n  defineComponent,\n  onMounted,\n  onUnmounted,\n  nextTick,\n  watch,\n  shallowRef,\n} from 'vue';\nimport classnames from '../../_util/classNames';\nimport KeyCode from '../../_util/KeyCode';\nimport omit from '../../_util/omit';\nimport { drawerChildProps } from './IDrawerPropTypes';\nimport { dataToArray, windowIsUndefined } from './utils';\n\nconst currentDrawer: Record<string, boolean> = {};\n\nexport interface scrollLockOptions {\n  container: HTMLElement;\n}\n\nconst DrawerChild = defineComponent({\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: drawerChildProps(),\n  emits: ['close', 'handleClick', 'change'],\n  setup(props, { emit, slots }) {\n    const contentWrapper = shallowRef<HTMLElement>();\n    const dom = shallowRef<HTMLElement>();\n    const maskDom = shallowRef<HTMLElement>();\n    const handlerDom = shallowRef<HTMLElement>();\n    const contentDom = shallowRef<HTMLElement>();\n    let levelDom = [];\n    const drawerId = `drawer_id_${Number(\n      (Date.now() + Math.random())\n        .toString()\n        .replace('.', Math.round(Math.random() * 9).toString()),\n    ).toString(16)}`;\n\n    onMounted(() => {\n      nextTick(() => {\n        const { open, getContainer, showMask, autofocus } = props;\n        const container = getContainer?.();\n        getLevelDom(props);\n        if (open) {\n          if (container && container.parentNode === document.body) {\n            currentDrawer[drawerId] = open;\n          }\n          nextTick(() => {\n            if (autofocus) {\n              domFocus();\n            }\n          });\n          if (showMask) {\n            props.scrollLocker?.lock();\n          }\n        }\n      });\n    });\n    watch(\n      () => props.level,\n      () => {\n        getLevelDom(props);\n      },\n      { flush: 'post' },\n    );\n    watch(\n      () => props.open,\n      () => {\n        const { open, getContainer, scrollLocker, showMask, autofocus } = props;\n        const container = getContainer?.();\n        if (container && container.parentNode === document.body) {\n          currentDrawer[drawerId] = !!open;\n        }\n        if (open) {\n          if (autofocus) {\n            domFocus();\n          }\n          if (showMask) {\n            scrollLocker?.lock();\n          }\n        } else {\n          scrollLocker?.unLock();\n        }\n      },\n      { flush: 'post' },\n    );\n\n    onUnmounted(() => {\n      const { open } = props;\n      delete currentDrawer[drawerId];\n      if (open) {\n        document.body.style.touchAction = '';\n      }\n      props.scrollLocker?.unLock();\n    });\n\n    watch(\n      () => props.placement,\n      val => {\n        if (val) {\n          // test 的 bug, 有动画过场，删除 dom\n          contentDom.value = null;\n        }\n      },\n    );\n\n    const domFocus = () => {\n      dom.value?.focus?.();\n    };\n\n    const onClose = (e: Event) => {\n      emit('close', e);\n    };\n\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === KeyCode.ESC) {\n        e.stopPropagation();\n        onClose(e);\n      }\n    };\n\n    const onAfterVisibleChange = () => {\n      const { open, afterVisibleChange } = props;\n      if (afterVisibleChange) {\n        afterVisibleChange(!!open);\n      }\n    };\n\n    const getLevelDom = ({ level, getContainer }) => {\n      if (windowIsUndefined) {\n        return;\n      }\n      const container = getContainer?.();\n      const parent = container ? (container.parentNode as HTMLElement) : null;\n      levelDom = [];\n      if (level === 'all') {\n        const children: HTMLElement[] = parent ? Array.prototype.slice.call(parent.children) : [];\n        children.forEach((child: HTMLElement) => {\n          if (\n            child.nodeName !== 'SCRIPT' &&\n            child.nodeName !== 'STYLE' &&\n            child.nodeName !== 'LINK' &&\n            child !== container\n          ) {\n            levelDom.push(child);\n          }\n        });\n      } else if (level) {\n        dataToArray(level).forEach(key => {\n          document.querySelectorAll(key).forEach(item => {\n            levelDom.push(item);\n          });\n        });\n      }\n    };\n\n    const onHandleClick = e => {\n      emit('handleClick', e);\n    };\n\n    const canOpen = shallowRef(false);\n    watch(dom, () => {\n      nextTick(() => {\n        canOpen.value = true;\n      });\n    });\n\n    return () => {\n      const {\n        width,\n        height,\n        open: $open,\n        prefixCls,\n        placement,\n        level,\n        levelMove,\n        ease,\n        duration,\n        getContainer,\n        onChange,\n        afterVisibleChange,\n        showMask,\n        maskClosable,\n        maskStyle,\n        keyboard,\n        getOpenCount,\n        scrollLocker,\n        contentWrapperStyle,\n        style,\n        class: className,\n        rootClassName,\n        rootStyle,\n        maskMotion,\n        motion,\n        inline,\n        ...otherProps\n      } = props;\n      // 首次渲染都将是关闭状态。\n      const open = $open && canOpen.value;\n      const wrapperClassName = classnames(prefixCls, {\n        [`${prefixCls}-${placement}`]: true,\n        [`${prefixCls}-open`]: open,\n        [`${prefixCls}-inline`]: inline,\n        'no-mask': !showMask,\n        [rootClassName]: true,\n      });\n\n      const motionProps = typeof motion === 'function' ? motion(placement) : motion;\n      return (\n        <div\n          {...omit(otherProps, ['autofocus'])}\n          tabindex={-1}\n          class={wrapperClassName}\n          style={rootStyle}\n          ref={dom}\n          onKeydown={open && keyboard ? onKeyDown : undefined}\n        >\n          <Transition {...maskMotion}>\n            {showMask && (\n              <div\n                v-show={open}\n                class={`${prefixCls}-mask`}\n                onClick={maskClosable ? onClose : undefined}\n                style={maskStyle}\n                ref={maskDom}\n              />\n            )}\n          </Transition>\n          <Transition\n            {...motionProps}\n            onAfterEnter={onAfterVisibleChange}\n            onAfterLeave={onAfterVisibleChange}\n          >\n            <div\n              v-show={open}\n              class={`${prefixCls}-content-wrapper`}\n              style={[contentWrapperStyle]}\n              ref={contentWrapper}\n            >\n              <div class={[`${prefixCls}-content`, className]} style={style} ref={contentDom}>\n                {slots.default?.()}\n              </div>\n              {slots.handler ? (\n                <div onClick={onHandleClick} ref={handlerDom}>\n                  {slots.handler?.()}\n                </div>\n              ) : null}\n            </div>\n          </Transition>\n        </div>\n      );\n    };\n  },\n});\n\nexport default DrawerChild;\n"
  },
  {
    "path": "components/vc-drawer/src/DrawerWrapper.tsx",
    "content": "import Child from './DrawerChild';\nimport { initDefaultProps } from '../../_util/props-util';\nimport { defineComponent, ref } from 'vue';\nimport { drawerProps } from './IDrawerPropTypes';\nimport PortalWrapper from '../../_util/PortalWrapper';\n\nconst DrawerWrapper = defineComponent({\n  compatConfig: { MODE: 3 },\n  inheritAttrs: false,\n  props: initDefaultProps(drawerProps(), {\n    prefixCls: 'drawer',\n    placement: 'left',\n    getContainer: 'body',\n    level: 'all',\n    duration: '.3s',\n    ease: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n    afterVisibleChange: () => {},\n    showMask: true,\n    maskClosable: true,\n    maskStyle: {},\n    wrapperClassName: '',\n    keyboard: true,\n    forceRender: false,\n    autofocus: true,\n  }),\n  emits: ['handleClick', 'close'],\n  setup(props, { emit, slots }) {\n    const dom = ref<HTMLElement>(null);\n\n    const onHandleClick = (e: MouseEvent | KeyboardEvent) => {\n      emit('handleClick', e);\n    };\n\n    const onClose = (e: MouseEvent | KeyboardEvent) => {\n      emit('close', e);\n    };\n\n    return () => {\n      const {\n        getContainer,\n        wrapperClassName,\n        rootClassName,\n        rootStyle,\n        forceRender,\n        ...otherProps\n      } = props;\n\n      let portal = null;\n      if (!getContainer) {\n        return (\n          <Child\n            v-slots={slots}\n            {...otherProps}\n            rootClassName={rootClassName}\n            rootStyle={rootStyle}\n            open={props.open}\n            onClose={onClose}\n            onHandleClick={onHandleClick}\n            inline={true}\n          ></Child>\n        );\n      }\n\n      // 如果有 handler 为内置强制渲染；\n      const $forceRender = !!slots.handler || forceRender;\n      if ($forceRender || props.open || dom.value) {\n        portal = (\n          <PortalWrapper\n            autoLock\n            visible={props.open}\n            forceRender={$forceRender}\n            getContainer={getContainer}\n            wrapperClassName={wrapperClassName}\n            v-slots={{\n              default: ({ visible, afterClose, ...rest }) => (\n                <Child\n                  ref={dom}\n                  v-slots={slots}\n                  {...otherProps}\n                  {...rest}\n                  rootClassName={rootClassName}\n                  rootStyle={rootStyle}\n                  open={visible !== undefined ? visible : props.open}\n                  afterVisibleChange={\n                    afterClose !== undefined ? afterClose : props.afterVisibleChange\n                  }\n                  onClose={onClose}\n                  onHandleClick={onHandleClick}\n                />\n              ),\n            }}\n          ></PortalWrapper>\n        );\n      }\n      return portal;\n    };\n  },\n});\n\nexport default DrawerWrapper;\n"
  },
  {
    "path": "components/vc-drawer/src/IDrawerPropTypes.ts",
    "content": "import PropTypes from '../../_util/vue-types';\nimport type { CSSProperties, PropType, TransitionProps } from 'vue';\nimport { arrayType, objectType, functionType } from '../../_util/type';\n\nexport type IPlacement = 'left' | 'top' | 'right' | 'bottom';\ntype ILevelMove = number | [number, number];\nconst props = () => ({\n  prefixCls: String,\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  style: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  class: String,\n  rootClassName: String,\n  rootStyle: objectType<CSSProperties>(),\n  placement: {\n    type: String as PropType<IPlacement>,\n  },\n  wrapperClassName: String,\n  level: { type: [String, Array] as PropType<string | string[]> },\n  levelMove: {\n    type: [Number, Function, Array] as PropType<\n      ILevelMove | ((e: { target: HTMLElement; open: boolean }) => ILevelMove)\n    >,\n  },\n  duration: String,\n  ease: String,\n  showMask: { type: Boolean, default: undefined },\n  maskClosable: { type: Boolean, default: undefined },\n  maskStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  afterVisibleChange: Function,\n  keyboard: { type: Boolean, default: undefined },\n  contentWrapperStyle: arrayType<CSSProperties[]>(),\n  autofocus: { type: Boolean, default: undefined },\n  open: { type: Boolean, default: undefined },\n\n  // Motion\n  motion: functionType<(placement: IPlacement) => TransitionProps>(),\n  maskMotion: objectType<TransitionProps>(),\n});\n\nconst drawerProps = () => ({\n  ...props(),\n  forceRender: { type: Boolean, default: undefined },\n  getContainer: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.object,\n    PropTypes.looseBool,\n  ]),\n});\n\nconst drawerChildProps = () => ({\n  ...props(),\n  getContainer: Function,\n  getOpenCount: Function as PropType<() => number>,\n  scrollLocker: PropTypes.any,\n  inline: Boolean,\n});\nexport { drawerProps, drawerChildProps };\n"
  },
  {
    "path": "components/vc-drawer/src/utils.ts",
    "content": "export function dataToArray(vars: any) {\n  if (Array.isArray(vars)) {\n    return vars;\n  }\n  return [vars];\n}\nconst transitionEndObject: Record<string, string> = {\n  transition: 'transitionend',\n  WebkitTransition: 'webkitTransitionEnd',\n  MozTransition: 'transitionend',\n  OTransition: 'oTransitionEnd otransitionend',\n};\nexport const transitionStr: string = Object.keys(transitionEndObject).filter(key => {\n  if (typeof document === 'undefined') {\n    return false;\n  }\n  const html = document.getElementsByTagName('html')[0];\n  return key in (html ? html.style : {});\n})[0];\nexport const transitionEndFun: string = transitionEndObject[transitionStr];\n\nexport function addEventListener(\n  target: HTMLElement,\n  eventType: string,\n  callback: (e: TouchEvent | Event) => void,\n  options?: any,\n) {\n  if (target.addEventListener) {\n    target.addEventListener(eventType, callback, options);\n  } else if ((target as any).attachEvent) {\n    // tslint:disable-line\n    (target as any).attachEvent(`on${eventType}`, callback); // tslint:disable-line\n  }\n}\n\nexport function removeEventListener(\n  target: HTMLElement,\n  eventType: string,\n  callback: (e: TouchEvent | Event) => void,\n  options?: any,\n) {\n  if (target.removeEventListener) {\n    target.removeEventListener(eventType, callback, options);\n  } else if ((target as any).attachEvent) {\n    // tslint:disable-line\n    (target as any).detachEvent(`on${eventType}`, callback); // tslint:disable-line\n  }\n}\n\nexport function transformArguments(arg: any, cb: any) {\n  const result = typeof arg === 'function' ? arg(cb) : arg;\n  if (Array.isArray(result)) {\n    if (result.length === 2) {\n      return result;\n    }\n    return [result[0], result[1]];\n  }\n  return [result];\n}\n\nexport const isNumeric = (value: string | number | undefined) =>\n  !isNaN(parseFloat(value as string)) && isFinite(value as number);\n\nexport const windowIsUndefined = !(\n  typeof window !== 'undefined' &&\n  window.document &&\n  window.document.createElement\n);\n\nexport const getTouchParentScroll = (\n  root: HTMLElement,\n  currentTarget: HTMLElement | Document | null,\n  differX: number,\n  differY: number,\n): boolean => {\n  if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {\n    return false;\n  }\n  // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动；\n  if (currentTarget === root.parentNode) {\n    return true;\n  }\n\n  const isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);\n  const isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);\n\n  const scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;\n  const scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;\n\n  const style = document.defaultView.getComputedStyle(currentTarget);\n  const overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';\n  const overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';\n\n  const y = scrollY && overflowY;\n  const x = scrollX && overflowX;\n\n  if (\n    (isY &&\n      (!y ||\n        (y &&\n          ((currentTarget.scrollTop >= scrollY && differY < 0) ||\n            (currentTarget.scrollTop <= 0 && differY > 0))))) ||\n    (isX &&\n      (!x ||\n        (x &&\n          ((currentTarget.scrollLeft >= scrollX && differX < 0) ||\n            (currentTarget.scrollLeft <= 0 && differX > 0)))))\n  ) {\n    return getTouchParentScroll(root, currentTarget.parentNode as HTMLElement, differX, differY);\n  }\n  return false;\n};\n"
  },
  {
    "path": "components/vc-dropdown/Dropdown.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { Fragment, computed, defineComponent, ref, watch } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport Trigger from '../vc-trigger';\nimport placements from './placements';\nimport { cloneElement } from '../_util/vnode';\nimport classNames from '../_util/classNames';\nimport { skipFlattenKey } from '../_util/props-util';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  props: {\n    minOverlayWidthMatchTrigger: { type: Boolean, default: undefined },\n    arrow: { type: Boolean, default: false },\n    prefixCls: PropTypes.string.def('rc-dropdown'),\n    transitionName: String,\n    overlayClassName: PropTypes.string.def(''),\n    openClassName: String,\n    animation: PropTypes.any,\n    align: PropTypes.object,\n    overlayStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    placement: PropTypes.string.def('bottomLeft'),\n    overlay: PropTypes.any,\n    trigger: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).def(\n      'hover',\n    ),\n    alignPoint: { type: Boolean, default: undefined },\n    showAction: PropTypes.array,\n    hideAction: PropTypes.array,\n    getPopupContainer: Function,\n    visible: { type: Boolean, default: undefined },\n    defaultVisible: { type: Boolean, default: false },\n    mouseEnterDelay: PropTypes.number.def(0.15),\n    mouseLeaveDelay: PropTypes.number.def(0.1),\n  },\n  emits: ['visibleChange', 'overlayClick'],\n  setup(props, { slots, emit, expose }) {\n    const triggerVisible = ref(!!props.visible);\n    watch(\n      () => props.visible,\n      val => {\n        if (val !== undefined) {\n          triggerVisible.value = val;\n        }\n      },\n    );\n    const triggerRef = ref();\n\n    expose({\n      triggerRef,\n    });\n\n    const onClick = (e: MouseEvent) => {\n      if (props.visible === undefined) {\n        triggerVisible.value = false;\n      }\n      emit('overlayClick', e);\n    };\n\n    const onVisibleChange = (visible: boolean) => {\n      if (props.visible === undefined) {\n        triggerVisible.value = visible;\n      }\n      emit('visibleChange', visible);\n    };\n\n    const getMenuElement = () => {\n      const overlayElement = slots.overlay?.();\n      const extraOverlayProps = {\n        prefixCls: `${props.prefixCls}-menu`,\n        onClick,\n      };\n      return (\n        <Fragment key={skipFlattenKey}>\n          {props.arrow && <div class={`${props.prefixCls}-arrow`} />}\n          {cloneElement(overlayElement, extraOverlayProps, false)}\n        </Fragment>\n      );\n    };\n\n    const minOverlayWidthMatchTrigger = computed(() => {\n      const { minOverlayWidthMatchTrigger: matchTrigger = !props.alignPoint } = props;\n      return matchTrigger;\n    });\n\n    const renderChildren = () => {\n      const children = slots.default?.();\n      return triggerVisible.value && children\n        ? cloneElement(\n            children[0],\n            { class: props.openClassName || `${props.prefixCls}-open` },\n            false,\n          )\n        : children;\n    };\n\n    const triggerHideAction = computed(() => {\n      if (!props.hideAction && props.trigger.indexOf('contextmenu') !== -1) {\n        return ['click'];\n      }\n      return props.hideAction;\n    });\n    return () => {\n      const {\n        prefixCls,\n        arrow,\n        showAction,\n        overlayStyle,\n        trigger,\n        placement,\n        align,\n        getPopupContainer,\n        transitionName,\n        animation,\n        overlayClassName,\n        ...otherProps\n      } = props;\n      return (\n        <Trigger\n          {...otherProps}\n          prefixCls={prefixCls}\n          ref={triggerRef}\n          popupClassName={classNames(overlayClassName, {\n            [`${prefixCls}-show-arrow`]: arrow,\n          })}\n          popupStyle={overlayStyle}\n          builtinPlacements={placements}\n          action={trigger}\n          showAction={showAction}\n          hideAction={triggerHideAction.value || []}\n          popupPlacement={placement}\n          popupAlign={align}\n          popupTransitionName={transitionName}\n          popupAnimation={animation}\n          popupVisible={triggerVisible.value}\n          stretch={minOverlayWidthMatchTrigger.value ? 'minWidth' : ''}\n          onPopupVisibleChange={onVisibleChange}\n          getPopupContainer={getPopupContainer}\n          v-slots={{ popup: getMenuElement, default: renderChildren }}\n        ></Trigger>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-dropdown/index.ts",
    "content": "// base in 3.2.0\nimport Dropdown from './Dropdown';\nexport default Dropdown;\n"
  },
  {
    "path": "components/vc-dropdown/placements.ts",
    "content": "const autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1,\n};\n\nconst targetOffset = [0, 0];\n\nconst placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  topCenter: {\n    points: ['bc', 'tc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n  bottomCenter: {\n    points: ['tc', 'bc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n};\n\nexport default placements;\n"
  },
  {
    "path": "components/vc-image/index.ts",
    "content": "// based on rc-image 4.3.2\nimport Image from './src/Image';\nexport * from './src/Image';\nexport default Image;\n"
  },
  {
    "path": "components/vc-image/src/Image.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { ref, watch, defineComponent, computed, onMounted, onUnmounted } from 'vue';\nimport isNumber from 'lodash-es/isNumber';\nimport cn from '../../_util/classNames';\nimport PropTypes from '../../_util/vue-types';\nimport { getOffset } from '../../vc-util/Dom/css';\nimport useMergedState from '../../_util/hooks/useMergedState';\nimport Preview from './Preview';\n\nimport type { MouseEventHandler } from '../../_util/EventInterface';\nimport PreviewGroup, { context } from './PreviewGroup';\nimport type { IDialogChildProps } from '../../vc-dialog/IDialogPropTypes';\nexport type GetContainer = string | HTMLElement | (() => HTMLElement);\nimport type { PreviewProps } from './Preview';\n\nexport type ImagePreviewType = Omit<\n  IDialogChildProps,\n  'mask' | 'visible' | 'closable' | 'prefixCls' | 'onClose' | 'afterClose' | 'wrapClassName'\n> & {\n  src?: string;\n  visible?: boolean;\n  onVisibleChange?: (value: boolean, prevValue: boolean) => void;\n  getContainer?: GetContainer | false;\n  maskClassName?: string;\n  icons?: PreviewProps['icons'];\n};\n\nexport const imageProps = () => ({\n  src: String,\n  wrapperClassName: String,\n  wrapperStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  rootClassName: String,\n  prefixCls: String,\n  previewPrefixCls: String,\n  width: [Number, String],\n  height: [Number, String],\n  previewMask: {\n    type: [Boolean, Function] as PropType<false | (() => any)>,\n    default: undefined,\n  },\n  placeholder: PropTypes.any,\n  fallback: String,\n  preview: {\n    type: [Boolean, Object] as PropType<boolean | ImagePreviewType>,\n    default: true as boolean | ImagePreviewType,\n  },\n  onClick: {\n    type: Function as PropType<MouseEventHandler>,\n  },\n  onError: {\n    type: Function as PropType<HTMLImageElement['onerror']>,\n  },\n});\nexport type ImageProps = Partial<ReturnType<typeof imageProps>>;\nexport type ImageStatus = 'normal' | 'error' | 'loading';\n\nexport const mergeDefaultValue = <T extends object>(obj: T, defaultValues: object): T => {\n  const res = { ...obj };\n  Object.keys(defaultValues).forEach(key => {\n    if (obj[key] === undefined) {\n      res[key] = defaultValues[key];\n    }\n  });\n  return res;\n};\nlet uuid = 0;\nconst ImageInternal = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VcImage',\n  inheritAttrs: false,\n  props: imageProps(),\n  emits: ['click', 'error'],\n  setup(props, { attrs, slots, emit }) {\n    const prefixCls = computed(() => props.prefixCls);\n    const previewPrefixCls = computed(() => `${prefixCls.value}-preview`);\n    const preview = computed<ImagePreviewType>(() => {\n      const defaultValues = {\n        visible: undefined,\n        onVisibleChange: () => {},\n        getContainer: undefined,\n      };\n      return typeof props.preview === 'object'\n        ? mergeDefaultValue(props.preview, defaultValues)\n        : defaultValues;\n    });\n    const src = computed(() => preview.value.src ?? props.src);\n    const isCustomPlaceholder = computed(\n      () => (props.placeholder && props.placeholder !== true) || slots.placeholder,\n    );\n    const previewVisible = computed(() => preview.value.visible);\n    const getPreviewContainer = computed(() => preview.value.getContainer);\n    const isControlled = computed(() => previewVisible.value !== undefined);\n\n    const onPreviewVisibleChange = (val, preval) => {\n      preview.value.onVisibleChange?.(val, preval);\n    };\n    const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible.value, {\n      value: previewVisible,\n      onChange: onPreviewVisibleChange,\n    });\n\n    const status = ref<ImageStatus>(isCustomPlaceholder.value ? 'loading' : 'normal');\n    watch(\n      () => props.src,\n      () => {\n        status.value = isCustomPlaceholder.value ? 'loading' : 'normal';\n      },\n    );\n    const mousePosition = ref<null | { x: number; y: number }>(null);\n    const isError = computed(() => status.value === 'error');\n    const groupContext = context.inject();\n    const {\n      isPreviewGroup,\n      setCurrent,\n      setShowPreview: setGroupShowPreview,\n      setMousePosition: setGroupMousePosition,\n      registerImage,\n    } = groupContext;\n    const currentId = ref(uuid++);\n    const canPreview = computed(() => props.preview && !isError.value);\n    const onLoad = () => {\n      status.value = 'normal';\n    };\n    const onError = (e: Event) => {\n      status.value = 'error';\n      emit('error', e);\n    };\n\n    const onPreview: MouseEventHandler = e => {\n      if (!isControlled.value) {\n        const { left, top } = getOffset(e.target);\n\n        if (isPreviewGroup.value) {\n          setCurrent(currentId.value);\n          setGroupMousePosition({\n            x: left,\n            y: top,\n          });\n        } else {\n          mousePosition.value = {\n            x: left,\n            y: top,\n          };\n        }\n      }\n      if (isPreviewGroup.value) {\n        setGroupShowPreview(true);\n      } else {\n        setShowPreview(true);\n      }\n      emit('click', e);\n    };\n\n    const onPreviewClose = () => {\n      setShowPreview(false);\n      if (!isControlled.value) {\n        mousePosition.value = null;\n      }\n    };\n\n    const img = ref<HTMLImageElement>(null);\n    watch(\n      () => img,\n      () => {\n        if (status.value !== 'loading') return;\n        if (img.value.complete && (img.value.naturalWidth || img.value.naturalHeight)) {\n          onLoad();\n        }\n      },\n    );\n    let unRegister = () => {};\n    onMounted(() => {\n      watch(\n        [src, canPreview],\n        () => {\n          unRegister();\n          if (!isPreviewGroup.value) {\n            return () => {};\n          }\n\n          unRegister = registerImage(currentId.value, src.value, canPreview.value);\n\n          if (!canPreview.value) {\n            unRegister();\n          }\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n    onUnmounted(() => {\n      unRegister();\n    });\n    const toSizePx = (l: number | string) => {\n      if (isNumber(l)) return l + 'px';\n      return l;\n    };\n    return () => {\n      const {\n        prefixCls,\n        wrapperClassName,\n        fallback,\n        src: imgSrc,\n        placeholder,\n        wrapperStyle,\n        rootClassName,\n        width,\n        height,\n        crossorigin,\n        decoding,\n        alt,\n        sizes,\n        srcset,\n        usemap,\n        class: cls,\n        style,\n      } = { ...props, ...attrs } as any;\n      const { icons, maskClassName, ...dialogProps } = preview.value;\n\n      const wrappperClass = cn(prefixCls, wrapperClassName, rootClassName, {\n        [`${prefixCls}-error`]: isError.value,\n      });\n      const mergedSrc = isError.value && fallback ? fallback : src.value;\n      const imgCommonProps = {\n        crossorigin,\n        decoding,\n        alt,\n        sizes,\n        srcset,\n        usemap,\n        width,\n        height,\n        class: cn(\n          `${prefixCls}-img`,\n          {\n            [`${prefixCls}-img-placeholder`]: placeholder === true,\n          },\n          cls,\n        ),\n        style: {\n          height: toSizePx(height),\n          ...(style as CSSProperties),\n        },\n      };\n\n      return (\n        <>\n          <div\n            class={wrappperClass}\n            onClick={\n              canPreview.value\n                ? onPreview\n                : e => {\n                    emit('click', e);\n                  }\n            }\n            style={{\n              width: toSizePx(width),\n              height: toSizePx(height),\n              ...wrapperStyle,\n            }}\n          >\n            <img\n              {...imgCommonProps}\n              {...(isError.value && fallback\n                ? {\n                    src: fallback,\n                  }\n                : { onLoad, onError, src: imgSrc })}\n              ref={img}\n            />\n\n            {status.value === 'loading' && (\n              <div aria-hidden=\"true\" class={`${prefixCls}-placeholder`}>\n                {placeholder || (slots.placeholder && slots.placeholder())}\n              </div>\n            )}\n            {/* Preview Click Mask */}\n            {slots.previewMask && canPreview.value && (\n              <div class={[`${prefixCls}-mask`, maskClassName]}>{slots.previewMask()}</div>\n            )}\n          </div>\n          {!isPreviewGroup.value && canPreview.value && (\n            <Preview\n              {...dialogProps}\n              aria-hidden={!isShowPreview.value}\n              visible={isShowPreview.value}\n              prefixCls={previewPrefixCls.value}\n              onClose={onPreviewClose}\n              mousePosition={mousePosition.value}\n              src={mergedSrc}\n              alt={alt}\n              getContainer={getPreviewContainer.value}\n              icons={icons}\n              rootClassName={rootClassName}\n            />\n          )}\n        </>\n      );\n    };\n  },\n});\nImageInternal.PreviewGroup = PreviewGroup;\n\nexport default ImageInternal as typeof ImageInternal & {\n  readonly PreviewGroup: typeof PreviewGroup;\n};\n"
  },
  {
    "path": "components/vc-image/src/Preview.tsx",
    "content": "import {\n  computed,\n  defineComponent,\n  onMounted,\n  onUnmounted,\n  reactive,\n  shallowRef,\n  watch,\n  cloneVNode,\n} from 'vue';\nimport type { VNode, PropType } from 'vue';\n\nimport classnames from '../../_util/classNames';\nimport Dialog from '../../vc-dialog';\nimport { type IDialogChildProps, dialogPropTypes } from '../../vc-dialog/IDialogPropTypes';\nimport { getOffset } from '../../vc-util/Dom/css';\nimport addEventListener from '../../vc-util/Dom/addEventListener';\nimport KeyCode from '../../_util/KeyCode';\nimport { warning } from '../../vc-util/warning';\nimport useFrameSetState from './hooks/useFrameSetState';\nimport getFixScaleEleTransPosition from './getFixScaleEleTransPosition';\nimport type { MouseEventHandler, WheelEventHandler } from '../../_util/EventInterface';\n\nimport { context } from './PreviewGroup';\n\nexport interface PreviewProps extends Omit<IDialogChildProps, 'onClose' | 'mask'> {\n  onClose?: (e: Element) => void;\n  src?: string;\n  alt?: string;\n  rootClassName?: string;\n  icons?: {\n    rotateLeft?: VNode;\n    rotateRight?: VNode;\n    zoomIn?: VNode;\n    zoomOut?: VNode;\n    close?: VNode;\n    left?: VNode;\n    right?: VNode;\n    flipX?: VNode;\n    flipY?: VNode;\n  };\n}\n\nconst initialPosition = {\n  x: 0,\n  y: 0,\n};\nexport const previewProps = {\n  ...dialogPropTypes(),\n  src: String,\n  alt: String,\n  rootClassName: String,\n  icons: {\n    type: Object as PropType<PreviewProps['icons']>,\n    default: () => ({} as PreviewProps['icons']),\n  },\n};\nconst Preview = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Preview',\n  inheritAttrs: false,\n  props: previewProps,\n  emits: ['close', 'afterClose'],\n  setup(props, { emit, attrs }) {\n    const { rotateLeft, rotateRight, zoomIn, zoomOut, close, left, right, flipX, flipY } = reactive(\n      props.icons,\n    );\n\n    const scale = shallowRef(1);\n    const rotate = shallowRef(0);\n    const flip = reactive({ x: 1, y: 1 });\n    const [position, setPosition] = useFrameSetState<{\n      x: number;\n      y: number;\n    }>(initialPosition);\n\n    const onClose = () => emit('close');\n    const imgRef = shallowRef<HTMLImageElement>();\n    const originPositionRef = reactive<{\n      originX: number;\n      originY: number;\n      deltaX: number;\n      deltaY: number;\n    }>({\n      originX: 0,\n      originY: 0,\n      deltaX: 0,\n      deltaY: 0,\n    });\n    const isMoving = shallowRef(false);\n    const groupContext = context.inject();\n    const { previewUrls, current, isPreviewGroup, setCurrent } = groupContext;\n    const previewGroupCount = computed(() => previewUrls.value.size);\n    const previewUrlsKeys = computed(() => Array.from(previewUrls.value.keys()));\n    const currentPreviewIndex = computed(() => previewUrlsKeys.value.indexOf(current.value));\n    const combinationSrc = computed(() => {\n      return isPreviewGroup.value ? previewUrls.value.get(current.value) : props.src;\n    });\n    const showLeftOrRightSwitches = computed(\n      () => isPreviewGroup.value && previewGroupCount.value > 1,\n    );\n    const lastWheelZoomDirection = shallowRef({ wheelDirection: 0 });\n\n    const onAfterClose = () => {\n      scale.value = 1;\n      rotate.value = 0;\n      flip.x = 1;\n      flip.y = 1;\n      setPosition(initialPosition);\n      emit('afterClose');\n    };\n\n    const onZoomIn = (isWheel?: boolean) => {\n      if (!isWheel) {\n        scale.value++;\n      } else {\n        scale.value += 0.5;\n      }\n\n      setPosition(initialPosition);\n    };\n    const onZoomOut = (isWheel?: boolean) => {\n      if (scale.value > 1) {\n        if (!isWheel) {\n          scale.value--;\n        } else {\n          scale.value -= 0.5;\n        }\n      }\n      setPosition(initialPosition);\n    };\n\n    const onRotateRight = () => {\n      rotate.value += 90;\n    };\n\n    const onRotateLeft = () => {\n      rotate.value -= 90;\n    };\n\n    const onFlipX = () => {\n      flip.x = -flip.x;\n    };\n\n    const onFlipY = () => {\n      flip.y = -flip.y;\n    };\n\n    const onSwitchLeft: MouseEventHandler = event => {\n      event.preventDefault();\n      // Without this mask close will abnormal\n      event.stopPropagation();\n      if (currentPreviewIndex.value > 0) {\n        setCurrent(previewUrlsKeys.value[currentPreviewIndex.value - 1]);\n      }\n    };\n\n    const onSwitchRight: MouseEventHandler = event => {\n      event.preventDefault();\n      // Without this mask close will abnormal\n      event.stopPropagation();\n      if (currentPreviewIndex.value < previewGroupCount.value - 1) {\n        setCurrent(previewUrlsKeys.value[currentPreviewIndex.value + 1]);\n      }\n    };\n\n    const wrapClassName = classnames({\n      [`${props.prefixCls}-moving`]: isMoving.value,\n    });\n    const toolClassName = `${props.prefixCls}-operations-operation`;\n    const iconClassName = `${props.prefixCls}-operations-icon`;\n    const tools = [\n      {\n        icon: close,\n        onClick: onClose,\n        type: 'close',\n      },\n      {\n        icon: zoomIn,\n        onClick: () => onZoomIn(),\n        type: 'zoomIn',\n      },\n      {\n        icon: zoomOut,\n        onClick: () => onZoomOut(),\n        type: 'zoomOut',\n        disabled: computed(() => scale.value === 1),\n      },\n      {\n        icon: rotateRight,\n        onClick: onRotateRight,\n        type: 'rotateRight',\n      },\n      {\n        icon: rotateLeft,\n        onClick: onRotateLeft,\n        type: 'rotateLeft',\n      },\n      {\n        icon: flipX,\n        onClick: onFlipX,\n        type: 'flipX',\n      },\n      {\n        icon: flipY,\n        onClick: onFlipY,\n        type: 'flipY',\n      },\n    ];\n\n    const onMouseUp: MouseEventHandler = () => {\n      if (props.visible && isMoving.value) {\n        const width = imgRef.value.offsetWidth * scale.value;\n        const height = imgRef.value.offsetHeight * scale.value;\n        const { left, top } = getOffset(imgRef.value);\n        const isRotate = rotate.value % 180 !== 0;\n\n        isMoving.value = false;\n\n        const fixState = getFixScaleEleTransPosition(\n          isRotate ? height : width,\n          isRotate ? width : height,\n          left,\n          top,\n        );\n        if (fixState) {\n          setPosition({ ...fixState });\n        }\n      }\n    };\n\n    const onMouseDown: MouseEventHandler = event => {\n      // Only allow main button\n      if (event.button !== 0) return;\n      event.preventDefault();\n      // Without this mask close will abnormal\n      event.stopPropagation();\n      originPositionRef.deltaX = event.pageX - position.x;\n      originPositionRef.deltaY = event.pageY - position.y;\n      originPositionRef.originX = position.x;\n      originPositionRef.originY = position.y;\n      isMoving.value = true;\n    };\n\n    const onMouseMove: MouseEventHandler = event => {\n      if (props.visible && isMoving.value) {\n        setPosition({\n          x: event.pageX - originPositionRef.deltaX,\n          y: event.pageY - originPositionRef.deltaY,\n        });\n      }\n    };\n\n    const onWheelMove: WheelEventHandler = event => {\n      if (!props.visible) return;\n      event.preventDefault();\n      const wheelDirection = event.deltaY;\n      lastWheelZoomDirection.value = { wheelDirection };\n    };\n\n    const onKeyDown = (event: KeyboardEvent) => {\n      if (!props.visible || !showLeftOrRightSwitches.value) return;\n\n      event.preventDefault();\n      if (event.keyCode === KeyCode.LEFT) {\n        if (currentPreviewIndex.value > 0) {\n          setCurrent(previewUrlsKeys.value[currentPreviewIndex.value - 1]);\n        }\n      } else if (event.keyCode === KeyCode.RIGHT) {\n        if (currentPreviewIndex.value < previewGroupCount.value - 1) {\n          setCurrent(previewUrlsKeys.value[currentPreviewIndex.value + 1]);\n        }\n      }\n    };\n\n    const onDoubleClick = () => {\n      if (props.visible) {\n        if (scale.value !== 1) {\n          scale.value = 1;\n        }\n        if (position.x !== initialPosition.x || position.y !== initialPosition.y) {\n          setPosition(initialPosition);\n        }\n      }\n    };\n\n    let removeListeners = () => {};\n    onMounted(() => {\n      watch(\n        [() => props.visible, isMoving],\n        () => {\n          removeListeners();\n          let onTopMouseUpListener: { remove: any };\n          let onTopMouseMoveListener: { remove: any };\n\n          const onMouseUpListener = addEventListener(window, 'mouseup', onMouseUp, false);\n          const onMouseMoveListener = addEventListener(window, 'mousemove', onMouseMove, false);\n          const onScrollWheelListener = addEventListener(window, 'wheel', onWheelMove, {\n            passive: false,\n          });\n          const onKeyDownListener = addEventListener(window, 'keydown', onKeyDown, false);\n\n          try {\n            // Resolve if in iframe lost event\n            /* istanbul ignore next */\n            if (window.top !== window.self) {\n              onTopMouseUpListener = addEventListener(window.top, 'mouseup', onMouseUp, false);\n              onTopMouseMoveListener = addEventListener(\n                window.top,\n                'mousemove',\n                onMouseMove,\n                false,\n              );\n            }\n          } catch (error) {\n            /* istanbul ignore next */\n            warning(false, `[vc-image] ${error}`);\n          }\n\n          removeListeners = () => {\n            onMouseUpListener.remove();\n            onMouseMoveListener.remove();\n            onScrollWheelListener.remove();\n            onKeyDownListener.remove();\n\n            /* istanbul ignore next */\n            if (onTopMouseUpListener) onTopMouseUpListener.remove();\n            /* istanbul ignore next */\n            if (onTopMouseMoveListener) onTopMouseMoveListener.remove();\n          };\n        },\n        { flush: 'post', immediate: true },\n      );\n      watch([lastWheelZoomDirection], () => {\n        const { wheelDirection } = lastWheelZoomDirection.value;\n        if (wheelDirection > 0) {\n          onZoomOut(true);\n        } else if (wheelDirection < 0) {\n          onZoomIn(true);\n        }\n      });\n    });\n    onUnmounted(() => {\n      removeListeners();\n    });\n\n    return () => {\n      const { visible, prefixCls, rootClassName } = props;\n      return (\n        <Dialog\n          {...attrs}\n          transitionName={props.transitionName}\n          maskTransitionName={props.maskTransitionName}\n          closable={false}\n          keyboard\n          prefixCls={prefixCls}\n          onClose={onClose}\n          afterClose={onAfterClose}\n          visible={visible}\n          wrapClassName={wrapClassName}\n          rootClassName={rootClassName}\n          getContainer={props.getContainer}\n        >\n          <div class={[`${props.prefixCls}-operations-wrapper`, rootClassName]}>\n            <ul class={`${props.prefixCls}-operations`}>\n              {tools.map(({ icon: IconType, onClick, type, disabled }) => (\n                <li\n                  class={classnames(toolClassName, {\n                    [`${props.prefixCls}-operations-operation-disabled`]:\n                      disabled && disabled?.value,\n                  })}\n                  onClick={onClick}\n                  key={type}\n                >\n                  {cloneVNode(IconType, { class: iconClassName })}\n                </li>\n              ))}\n            </ul>\n          </div>\n          <div\n            class={`${props.prefixCls}-img-wrapper`}\n            style={{\n              transform: `translate3d(${position.x}px, ${position.y}px, 0)`,\n            }}\n          >\n            <img\n              onMousedown={onMouseDown}\n              onDblclick={onDoubleClick}\n              ref={imgRef}\n              class={`${props.prefixCls}-img`}\n              src={combinationSrc.value}\n              alt={props.alt}\n              style={{\n                transform: `scale3d(${flip.x * scale.value}, ${flip.y * scale.value}, 1) rotate(${\n                  rotate.value\n                }deg)`,\n              }}\n            />\n          </div>\n          {showLeftOrRightSwitches.value && (\n            <div\n              class={classnames(`${props.prefixCls}-switch-left`, {\n                [`${props.prefixCls}-switch-left-disabled`]: currentPreviewIndex.value <= 0,\n              })}\n              onClick={onSwitchLeft}\n            >\n              {left}\n            </div>\n          )}\n          {showLeftOrRightSwitches.value && (\n            <div\n              class={classnames(`${props.prefixCls}-switch-right`, {\n                [`${props.prefixCls}-switch-right-disabled`]:\n                  currentPreviewIndex.value >= previewGroupCount.value - 1,\n              })}\n              onClick={onSwitchRight}\n            >\n              {right}\n            </div>\n          )}\n        </Dialog>\n      );\n    };\n  },\n});\n\nexport default Preview;\n"
  },
  {
    "path": "components/vc-image/src/PreviewGroup.tsx",
    "content": "import type { PropType, Ref, ComputedRef } from 'vue';\nimport {\n  ref,\n  shallowRef,\n  provide,\n  defineComponent,\n  inject,\n  watch,\n  reactive,\n  computed,\n  watchEffect,\n} from 'vue';\nimport { type ImagePreviewType, mergeDefaultValue } from './Image';\nimport Preview from './Preview';\nimport type { PreviewProps } from './Preview';\nimport useMergedState from '../../_util/hooks/useMergedState';\n\nexport interface PreviewGroupPreview\n  extends Omit<ImagePreviewType, 'icons' | 'mask' | 'maskClassName'> {\n  /**\n   * If Preview the show img index\n   * @default 0\n   */\n  current?: number;\n}\n\nexport interface GroupConsumerProps {\n  previewPrefixCls?: string;\n  icons?: PreviewProps['icons'];\n  preview?: boolean | PreviewGroupPreview;\n}\n\ninterface PreviewUrl {\n  url: string;\n  canPreview: boolean;\n}\n\nexport interface GroupConsumerValue extends GroupConsumerProps {\n  isPreviewGroup?: Ref<boolean | undefined>;\n  previewUrls: ComputedRef<Map<number, string>>;\n  setPreviewUrls: (id: number, url: string, canPreview?: boolean) => void;\n  current: Ref<number>;\n  setCurrent: (current: number) => void;\n  setShowPreview: (isShowPreview: boolean) => void;\n  setMousePosition: (mousePosition: null | { x: number; y: number }) => void;\n  registerImage: (id: number, url: string, canPreview?: boolean) => () => void;\n  rootClassName?: string;\n}\nconst previewGroupContext = Symbol('previewGroupContext');\nexport const context = {\n  provide: (val: GroupConsumerValue) => {\n    provide(previewGroupContext, val);\n  },\n  inject: () => {\n    return inject<GroupConsumerValue>(previewGroupContext, {\n      isPreviewGroup: shallowRef(false),\n      previewUrls: computed(() => new Map()),\n      setPreviewUrls: () => {},\n      current: ref(null),\n      setCurrent: () => {},\n      setShowPreview: () => {},\n      setMousePosition: () => {},\n      registerImage: null,\n      rootClassName: '',\n    });\n  },\n};\n\nexport const imageGroupProps = () => ({\n  previewPrefixCls: String,\n  preview: {\n    type: [Boolean, Object] as PropType<boolean | ImagePreviewType>,\n    default: true as boolean | ImagePreviewType,\n  },\n  icons: {\n    type: Object as PropType<PreviewProps['icons']>,\n    default: () => ({}),\n  },\n});\n\nconst Group = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PreviewGroup',\n  inheritAttrs: false,\n  props: imageGroupProps(),\n  setup(props, { slots }) {\n    const preview = computed<PreviewGroupPreview>(() => {\n      const defaultValues = {\n        visible: undefined,\n        onVisibleChange: () => {},\n        getContainer: undefined,\n        current: 0,\n      };\n      return typeof props.preview === 'object'\n        ? mergeDefaultValue(props.preview, defaultValues)\n        : defaultValues;\n    });\n    const previewUrls = reactive(new Map<number, PreviewUrl>());\n    const current = ref<number>();\n\n    const previewVisible = computed(() => preview.value.visible);\n    const getPreviewContainer = computed(() => preview.value.getContainer);\n    const onPreviewVisibleChange = (val, preval) => {\n      preview.value.onVisibleChange?.(val, preval);\n    };\n    const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible.value, {\n      value: previewVisible,\n      onChange: onPreviewVisibleChange,\n    });\n\n    const mousePosition = ref<{ x: number; y: number }>(null);\n    const isControlled = computed(() => previewVisible.value !== undefined);\n    const previewUrlsKeys = computed(() => Array.from(previewUrls.keys()));\n    const currentControlledKey = computed(() => previewUrlsKeys.value[preview.value.current]);\n    const canPreviewUrls = computed(\n      () =>\n        new Map<number, string>(\n          Array.from(previewUrls)\n            .filter(([, { canPreview }]) => !!canPreview)\n            .map(([id, { url }]) => [id, url]),\n        ),\n    );\n\n    const setPreviewUrls = (id: number, url: string, canPreview = true) => {\n      previewUrls.set(id, {\n        url,\n        canPreview,\n      });\n    };\n    const setCurrent = (val: number) => {\n      current.value = val;\n    };\n    const setMousePosition = (val: null | { x: number; y: number }) => {\n      mousePosition.value = val;\n    };\n\n    const registerImage = (id: number, url: string, canPreview = true) => {\n      const unRegister = () => {\n        previewUrls.delete(id);\n      };\n      previewUrls.set(id, {\n        url,\n        canPreview,\n      });\n      return unRegister;\n    };\n\n    const onPreviewClose = (e: any) => {\n      e?.stopPropagation();\n      setShowPreview(false);\n      setMousePosition(null);\n    };\n\n    watch(\n      currentControlledKey,\n      val => {\n        setCurrent(val);\n      },\n      {\n        immediate: true,\n        flush: 'post',\n      },\n    );\n    watchEffect(\n      () => {\n        if (isShowPreview.value && isControlled.value) {\n          setCurrent(currentControlledKey.value);\n        }\n      },\n      {\n        flush: 'post',\n      },\n    );\n\n    context.provide({\n      isPreviewGroup: shallowRef(true),\n      previewUrls: canPreviewUrls,\n      setPreviewUrls,\n      current,\n      setCurrent,\n      setShowPreview,\n      setMousePosition,\n      registerImage,\n    });\n\n    return () => {\n      const { ...dialogProps } = preview.value;\n      return (\n        <>\n          {slots.default && slots.default()}\n          <Preview\n            {...dialogProps}\n            ria-hidden={!isShowPreview.value}\n            visible={isShowPreview.value}\n            prefixCls={props.previewPrefixCls}\n            onClose={onPreviewClose}\n            mousePosition={mousePosition.value}\n            src={canPreviewUrls.value.get(current.value)}\n            icons={props.icons}\n            getContainer={getPreviewContainer.value}\n          />\n        </>\n      );\n    };\n  },\n});\n\nexport default Group;\n"
  },
  {
    "path": "components/vc-image/src/getFixScaleEleTransPosition.ts",
    "content": "import { getClientSize } from '../../vc-util/Dom/css';\n\nfunction fixPoint(key: 'x' | 'y', start: number, width: number, clientWidth: number) {\n  const startAddWidth = start + width;\n  const offsetStart = (width - clientWidth) / 2;\n\n  if (width > clientWidth) {\n    if (start > 0) {\n      return {\n        [key]: offsetStart,\n      };\n    }\n    if (start < 0 && startAddWidth < clientWidth) {\n      return {\n        [key]: -offsetStart,\n      };\n    }\n  } else if (start < 0 || startAddWidth > clientWidth) {\n    return {\n      [key]: start < 0 ? offsetStart : -offsetStart,\n    };\n  }\n  return {};\n}\n\n/**\n * Fix positon x,y point when\n *\n * Ele width && height < client\n * - Back origin\n *\n * - Ele width | height > clientWidth | clientHeight\n * - left | top > 0 -> Back 0\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * Regardless of other\n */\nexport default function getFixScaleEleTransPosition(\n  width: number,\n  height: number,\n  left: number,\n  top: number,\n): null | { x: number; y: number } {\n  const { width: clientWidth, height: clientHeight } = getClientSize();\n\n  let fixPos = null;\n\n  if (width <= clientWidth && height <= clientHeight) {\n    fixPos = {\n      x: 0,\n      y: 0,\n    };\n  } else if (width > clientWidth || height > clientHeight) {\n    fixPos = {\n      ...fixPoint('x', left, width, clientWidth),\n      ...fixPoint('y', top, height, clientHeight),\n    };\n  }\n\n  return fixPos;\n}\n"
  },
  {
    "path": "components/vc-image/src/hooks/useFrameSetState.ts",
    "content": "import raf from '../../../_util/raf';\nimport { onMounted, reactive, ref } from 'vue';\n\ntype SetActionType<T> = Partial<T> | ((state: T) => Partial<T>);\nexport default function useFrameSetState<T extends object>(\n  initial: T,\n): [Record<string, any>, (newState: SetActionType<T>) => void] {\n  const frame = ref<number>(null);\n  const state = reactive({ ...initial });\n  const queue = ref<SetActionType<T>[]>([]);\n\n  const setFrameState = (newState: SetActionType<T>) => {\n    if (frame.value === null) {\n      queue.value = [];\n      frame.value = raf(() => {\n        let memoState: any;\n        queue.value.forEach((queueState: object) => {\n          memoState = { ...memoState, ...queueState };\n        });\n        Object.assign(state, memoState);\n        frame.value = null;\n      });\n    }\n\n    queue.value.push(newState as any);\n  };\n  onMounted(() => {\n    frame.value && raf.cancel(frame.value);\n  });\n  return [state, setFrameState];\n}\n"
  },
  {
    "path": "components/vc-input/BaseInput.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport { cloneElement } from '../_util/vnode';\nimport { baseInputProps } from './inputProps';\nimport { hasAddon, hasPrefixSuffix } from './utils/commonUtils';\n\nexport default defineComponent({\n  name: 'BaseInput',\n  inheritAttrs: false,\n  props: baseInputProps(),\n  setup(props, { slots, attrs }) {\n    const containerRef = ref();\n    const onInputMouseDown: MouseEventHandler = e => {\n      if (containerRef.value?.contains(e.target as Element)) {\n        const { triggerFocus } = props;\n        triggerFocus?.();\n      }\n    };\n    const getClearIcon = () => {\n      const {\n        allowClear,\n        value,\n        disabled,\n        readonly,\n        handleReset,\n        suffix = slots.suffix,\n        prefixCls,\n      } = props;\n      if (!allowClear) {\n        return null;\n      }\n      const needClear = !disabled && !readonly && value;\n      const className = `${prefixCls}-clear-icon`;\n      const iconNode = slots.clearIcon?.() || '*';\n      return (\n        <span\n          onClick={handleReset}\n          // Do not trigger onBlur when clear input\n          onMousedown={e => e.preventDefault()}\n          class={classNames(\n            {\n              [`${className}-hidden`]: !needClear,\n              [`${className}-has-suffix`]: !!suffix,\n            },\n            className,\n          )}\n          role=\"button\"\n          tabindex={-1}\n        >\n          {iconNode}\n        </span>\n      );\n    };\n\n    return () => {\n      const {\n        focused,\n        value,\n\n        disabled,\n        allowClear,\n        readonly,\n        hidden,\n        prefixCls,\n        prefix = slots.prefix?.(),\n        suffix = slots.suffix?.(),\n        addonAfter = slots.addonAfter,\n        addonBefore = slots.addonBefore,\n        inputElement,\n        affixWrapperClassName,\n        wrapperClassName,\n        groupClassName,\n      } = props;\n      let element = cloneElement(inputElement, {\n        value,\n        hidden,\n      });\n      // ================== Prefix & Suffix ================== //\n      if (hasPrefixSuffix({ prefix, suffix, allowClear })) {\n        const affixWrapperPrefixCls = `${prefixCls}-affix-wrapper`;\n        const affixWrapperCls = classNames(\n          affixWrapperPrefixCls,\n          {\n            [`${affixWrapperPrefixCls}-disabled`]: disabled,\n            [`${affixWrapperPrefixCls}-focused`]: focused,\n            [`${affixWrapperPrefixCls}-readonly`]: readonly,\n            [`${affixWrapperPrefixCls}-input-with-clear-btn`]: suffix && allowClear && value,\n          },\n          !hasAddon({ addonAfter, addonBefore }) && attrs.class,\n          affixWrapperClassName,\n        );\n\n        const suffixNode = (suffix || allowClear) && (\n          <span class={`${prefixCls}-suffix`}>\n            {getClearIcon()}\n            {suffix}\n          </span>\n        );\n\n        element = (\n          <span\n            class={affixWrapperCls}\n            style={attrs.style as CSSProperties}\n            hidden={!hasAddon({ addonAfter, addonBefore }) && hidden}\n            onMousedown={onInputMouseDown}\n            ref={containerRef}\n          >\n            {prefix && <span class={`${prefixCls}-prefix`}>{prefix}</span>}\n            {cloneElement(inputElement, {\n              style: null,\n              value,\n              hidden: null,\n            })}\n            {suffixNode}\n          </span>\n        );\n      }\n      // ================== Addon ================== //\n      if (hasAddon({ addonAfter, addonBefore })) {\n        const wrapperCls = `${prefixCls}-group`;\n        const addonCls = `${wrapperCls}-addon`;\n\n        const mergedWrapperClassName = classNames(\n          `${prefixCls}-wrapper`,\n          wrapperCls,\n          wrapperClassName,\n        );\n\n        const mergedGroupClassName = classNames(\n          `${prefixCls}-group-wrapper`,\n          attrs.class,\n          groupClassName,\n        );\n\n        // Need another wrapper for changing display:table to display:inline-block\n        // and put style prop in wrapper\n        return (\n          <span class={mergedGroupClassName} style={attrs.style as CSSProperties} hidden={hidden}>\n            <span class={mergedWrapperClassName}>\n              {addonBefore && <span class={addonCls}>{addonBefore}</span>}\n              {cloneElement(element, { style: null, hidden: null })}\n              {addonAfter && <span class={addonCls}>{addonAfter}</span>}\n            </span>\n          </span>\n        );\n      }\n      return element;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-input/Input.tsx",
    "content": "// base 0.0.1-alpha.7\nimport type { ComponentPublicInstance } from 'vue';\nimport { computed, onMounted, defineComponent, nextTick, shallowRef, watch } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { ChangeEvent, FocusEventHandler } from '../_util/EventInterface';\nimport omit from '../_util/omit';\nimport type { InputProps } from './inputProps';\nimport { inputProps } from './inputProps';\nimport type { InputFocusOptions } from './utils/commonUtils';\nimport {\n  fixControlledValue,\n  hasAddon,\n  hasPrefixSuffix,\n  resolveOnChange,\n  triggerFocus,\n} from './utils/commonUtils';\nimport BaseInput from './BaseInput';\nimport BaseInputCore, { type BaseInputExpose } from '../_util/BaseInput';\n\nexport default defineComponent({\n  name: 'VCInput',\n  inheritAttrs: false,\n  props: inputProps(),\n  setup(props, { slots, attrs, expose, emit }) {\n    const stateValue = shallowRef(props.value === undefined ? props.defaultValue : props.value);\n    const focused = shallowRef(false);\n    const inputRef = shallowRef<BaseInputExpose>();\n    const rootRef = shallowRef<ComponentPublicInstance>();\n    watch(\n      () => props.value,\n      () => {\n        stateValue.value = props.value;\n      },\n    );\n    watch(\n      () => props.disabled,\n      () => {\n        if (props.disabled) {\n          focused.value = false;\n        }\n      },\n    );\n    const focus = (option?: InputFocusOptions) => {\n      if (inputRef.value) {\n        triggerFocus(inputRef.value.input, option);\n      }\n    };\n\n    const blur = () => {\n      inputRef.value.input?.blur();\n    };\n\n    const setSelectionRange = (\n      start: number,\n      end: number,\n      direction?: 'forward' | 'backward' | 'none',\n    ) => {\n      inputRef.value.input?.setSelectionRange(start, end, direction);\n    };\n\n    const select = () => {\n      inputRef.value.input?.select();\n    };\n\n    expose({\n      focus,\n      blur,\n      input: computed(() => (inputRef.value.input as any)?.input),\n      stateValue,\n      setSelectionRange,\n      select,\n    });\n    const triggerChange = (e: Event) => {\n      emit('change', e);\n    };\n    const setValue = (value: string | number, callback?: Function) => {\n      if (stateValue.value === value) {\n        return;\n      }\n      if (props.value === undefined) {\n        stateValue.value = value;\n      } else {\n        nextTick(() => {\n          if (inputRef.value.input.value !== stateValue.value) {\n            rootRef.value?.$forceUpdate();\n          }\n        });\n      }\n      nextTick(() => {\n        callback && callback();\n      });\n    };\n    const handleChange = (e: ChangeEvent) => {\n      const { value } = e.target as any;\n      if (stateValue.value === value) return;\n      const newVal = e.target.value;\n      resolveOnChange(inputRef.value.input as HTMLInputElement, e, triggerChange);\n      setValue(newVal);\n    };\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === 13) {\n        emit('pressEnter', e);\n      }\n      emit('keydown', e);\n    };\n\n    const handleFocus: FocusEventHandler = e => {\n      focused.value = true;\n      emit('focus', e);\n    };\n\n    const handleBlur: FocusEventHandler = e => {\n      focused.value = false;\n      emit('blur', e);\n    };\n\n    const handleReset = (e: MouseEvent) => {\n      resolveOnChange(inputRef.value.input as HTMLInputElement, e, triggerChange);\n      setValue('', () => {\n        focus();\n      });\n    };\n\n    const getInputElement = () => {\n      const {\n        addonBefore = slots.addonBefore,\n        addonAfter = slots.addonAfter,\n        disabled,\n        valueModifiers = {},\n        htmlSize,\n        autocomplete,\n        prefixCls,\n        inputClassName,\n        prefix = slots.prefix?.(),\n        suffix = slots.suffix?.(),\n        allowClear,\n        type = 'text',\n      } = props;\n      const otherProps = omit(props as InputProps & { placeholder: string }, [\n        'prefixCls',\n        'onPressEnter',\n        'addonBefore',\n        'addonAfter',\n        'prefix',\n        'suffix',\n        'allowClear',\n        // Input elements must be either controlled or uncontrolled,\n        // specify either the value prop, or the defaultValue prop, but not both.\n        'defaultValue',\n        'size',\n        'bordered',\n        'htmlSize',\n        'lazy',\n        'showCount',\n        'valueModifiers',\n        'showCount',\n        'affixWrapperClassName',\n        'groupClassName',\n        'inputClassName',\n        'wrapperClassName',\n      ]);\n      const inputProps = {\n        ...otherProps,\n        ...attrs,\n        autocomplete,\n        onChange: handleChange,\n        onInput: handleChange,\n        onFocus: handleFocus,\n        onBlur: handleBlur,\n        onKeydown: handleKeyDown,\n        class: classNames(\n          prefixCls,\n          {\n            [`${prefixCls}-disabled`]: disabled,\n          },\n          inputClassName,\n          !hasAddon({ addonAfter, addonBefore }) &&\n            !hasPrefixSuffix({ prefix, suffix, allowClear }) &&\n            attrs.class,\n        ),\n        ref: inputRef,\n        key: 'ant-input',\n        size: htmlSize,\n        type,\n        lazy: props.lazy,\n      };\n      if (valueModifiers.lazy) {\n        delete inputProps.onInput;\n      }\n      if (!inputProps.autofocus) {\n        delete inputProps.autofocus;\n      }\n      const inputNode = <BaseInputCore {...omit(inputProps, ['size'])} />;\n      return inputNode;\n    };\n    const getSuffix = () => {\n      const { maxlength, suffix = slots.suffix?.(), showCount, prefixCls } = props;\n      // Max length value\n      const hasMaxLength = Number(maxlength) > 0;\n\n      if (suffix || showCount) {\n        const valueLength = [...fixControlledValue(stateValue.value)].length;\n        const dataCount =\n          typeof showCount === 'object'\n            ? showCount.formatter({ count: valueLength, maxlength })\n            : `${valueLength}${hasMaxLength ? ` / ${maxlength}` : ''}`;\n\n        return (\n          <>\n            {!!showCount && (\n              <span\n                class={classNames(`${prefixCls}-show-count-suffix`, {\n                  [`${prefixCls}-show-count-has-suffix`]: !!suffix,\n                })}\n              >\n                {dataCount}\n              </span>\n            )}\n            {suffix}\n          </>\n        );\n      }\n      return null;\n    };\n    onMounted(() => {\n      if (process.env.NODE_ENV === 'test') {\n        if (props.autofocus) {\n          focus();\n        }\n      }\n    });\n    return () => {\n      const { prefixCls, disabled, ...rest } = props;\n      return (\n        <BaseInput\n          {...rest}\n          {...attrs}\n          ref={rootRef}\n          prefixCls={prefixCls}\n          inputElement={getInputElement()}\n          handleReset={handleReset}\n          value={fixControlledValue(stateValue.value)}\n          focused={focused.value}\n          triggerFocus={focus}\n          suffix={getSuffix()}\n          disabled={disabled}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-input/inputProps.ts",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport type { SizeType } from '../config-provider';\nimport type { VueNode } from '../_util/type';\nimport { stringType } from '../_util/type';\nimport type {\n  ChangeEventHandler,\n  CompositionEventHandler,\n  FocusEventHandler,\n  KeyboardEventHandler,\n  MouseEventHandler,\n} from '../_util/EventInterface';\nimport type { InputStatus } from '../_util/statusUtils';\nimport type { InputFocusOptions } from './utils/commonUtils';\nexport const inputDefaultValue = Symbol() as unknown as string;\nexport const commonInputProps = () => {\n  return {\n    addonBefore: PropTypes.any,\n    addonAfter: PropTypes.any,\n    prefix: PropTypes.any,\n    suffix: PropTypes.any,\n    clearIcon: PropTypes.any,\n    affixWrapperClassName: String,\n    groupClassName: String,\n    wrapperClassName: String,\n    inputClassName: String,\n    allowClear: { type: Boolean, default: undefined },\n  };\n};\nexport const baseInputProps = () => {\n  return {\n    ...commonInputProps(),\n    value: {\n      type: [String, Number, Symbol] as PropType<string | number>,\n      default: undefined,\n    },\n    defaultValue: {\n      type: [String, Number, Symbol] as PropType<string | number>,\n      default: undefined,\n    },\n    inputElement: PropTypes.any,\n    prefixCls: String,\n    disabled: { type: Boolean, default: undefined },\n    focused: { type: Boolean, default: undefined },\n    triggerFocus: Function as PropType<() => void>,\n    readonly: { type: Boolean, default: undefined },\n    handleReset: Function as PropType<MouseEventHandler>,\n    hidden: { type: Boolean, default: undefined },\n  };\n};\nexport const inputProps = () => ({\n  ...baseInputProps(),\n  id: String,\n  placeholder: {\n    type: [String, Number] as PropType<string | number>,\n  },\n  autocomplete: String,\n  type: stringType<\n    | 'button'\n    | 'checkbox'\n    | 'color'\n    | 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'file'\n    | 'hidden'\n    | 'image'\n    | 'month'\n    | 'number'\n    | 'password'\n    | 'radio'\n    | 'range'\n    | 'reset'\n    | 'search'\n    | 'submit'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'\n    | 'week'\n  >('text'),\n  name: String,\n  size: { type: String as PropType<SizeType> },\n  autofocus: { type: Boolean, default: undefined },\n  lazy: { type: Boolean, default: true },\n  maxlength: Number,\n  loading: { type: Boolean, default: undefined },\n  bordered: { type: Boolean, default: undefined },\n  showCount: { type: [Boolean, Object] as PropType<boolean | ShowCountProps> },\n  htmlSize: Number,\n  onPressEnter: Function as PropType<KeyboardEventHandler>,\n  onKeydown: Function as PropType<KeyboardEventHandler>,\n  onKeyup: Function as PropType<KeyboardEventHandler>,\n  onFocus: Function as PropType<FocusEventHandler>,\n  onBlur: Function as PropType<FocusEventHandler>,\n  onChange: Function as PropType<ChangeEventHandler>,\n  onInput: Function as PropType<ChangeEventHandler>,\n  'onUpdate:value': Function as PropType<(val: string) => void>,\n  onCompositionstart: Function as PropType<CompositionEventHandler>,\n  onCompositionend: Function as PropType<CompositionEventHandler>,\n  valueModifiers: Object,\n  hidden: { type: Boolean, default: undefined },\n  status: String as PropType<InputStatus>,\n});\nexport type InputProps = Partial<ExtractPropTypes<ReturnType<typeof inputProps>>>;\n\nexport interface ShowCountProps {\n  formatter: (args: { count: number; maxlength?: number; value?: string }) => VueNode;\n}\n\nexport interface InputRef {\n  focus: (options?: InputFocusOptions) => void;\n  blur: () => void;\n  setSelectionRange: (\n    start: number,\n    end: number,\n    direction?: 'forward' | 'backward' | 'none',\n  ) => void;\n  select: () => void;\n  input: HTMLInputElement | null;\n}\n"
  },
  {
    "path": "components/vc-input/utils/commonUtils.ts",
    "content": "import { filterEmpty } from '../../_util/props-util';\nconst isValid = (value: any) => {\n  return (\n    value !== undefined &&\n    value !== null &&\n    (Array.isArray(value) ? filterEmpty(value).length : true)\n  );\n};\n\nexport function hasPrefixSuffix(propsAndSlots: any) {\n  return (\n    isValid(propsAndSlots.prefix) ||\n    isValid(propsAndSlots.suffix) ||\n    isValid(propsAndSlots.allowClear)\n  );\n}\n\nexport function hasAddon(propsAndSlots: any) {\n  return isValid(propsAndSlots.addonBefore) || isValid(propsAndSlots.addonAfter);\n}\n\nexport function fixControlledValue(value: string | number) {\n  if (typeof value === 'undefined' || value === null) {\n    return '';\n  }\n  return String(value);\n}\n\nexport function resolveOnChange(\n  target: HTMLInputElement,\n  e: Event,\n  onChange: Function,\n  targetValue?: string,\n) {\n  if (!onChange) {\n    return;\n  }\n  const event: any = e;\n\n  if (e.type === 'click') {\n    Object.defineProperty(event, 'target', {\n      writable: true,\n    });\n    Object.defineProperty(event, 'currentTarget', {\n      writable: true,\n    });\n    // click clear icon\n    //event = Object.create(e);\n    const currentTarget = target.cloneNode(true);\n\n    event.target = currentTarget;\n    event.currentTarget = currentTarget;\n    // change target ref value cause e.target.value should be '' when clear input\n    (currentTarget as any).value = '';\n    onChange(event);\n    return;\n  }\n  // Trigger by composition event, this means we need force change the input value\n  if (targetValue !== undefined) {\n    Object.defineProperty(event, 'target', {\n      writable: true,\n    });\n    Object.defineProperty(event, 'currentTarget', {\n      writable: true,\n    });\n    event.target = target;\n    event.currentTarget = target;\n    target.value = targetValue;\n    onChange(event);\n    return;\n  }\n  onChange(event);\n}\nexport interface InputFocusOptions extends FocusOptions {\n  cursor?: 'start' | 'end' | 'all';\n}\n\nexport function triggerFocus(\n  element?: HTMLInputElement | HTMLTextAreaElement,\n  option?: InputFocusOptions,\n) {\n  if (!element) return;\n\n  element.focus(option);\n\n  // Selection content\n  const { cursor } = option || {};\n  if (cursor) {\n    const len = element.value.length;\n\n    switch (cursor) {\n      case 'start':\n        element.setSelectionRange(0, 0);\n        break;\n\n      case 'end':\n        element.setSelectionRange(len, len);\n        break;\n\n      default:\n        element.setSelectionRange(0, len);\n    }\n  }\n}\n"
  },
  {
    "path": "components/vc-input/utils/types.ts",
    "content": "/** https://github.com/Microsoft/TypeScript/issues/29729 */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type LiteralUnion<T extends U, U> = T | (U & {});\n"
  },
  {
    "path": "components/vc-mentions/index.ts",
    "content": "// base rc-mentions .6.2\nimport Mentions from './src/Mentions';\nimport Option from './src/Option';\n\nexport { Option };\nexport default Mentions;\n"
  },
  {
    "path": "components/vc-mentions/src/DropdownMenu.tsx",
    "content": "import Menu, { Item as MenuItem } from '../../menu';\nimport type { PropType } from 'vue';\nimport { onBeforeUnmount, defineComponent, inject, shallowRef } from 'vue';\nimport type { OptionProps } from './Option';\nimport MentionsContextKey from './MentionsContext';\nimport Spin from '../../spin';\n\nfunction noop() {}\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DropdownMenu',\n  props: {\n    prefixCls: String,\n    options: {\n      type: Array as PropType<OptionProps[]>,\n      default: () => [],\n    },\n  },\n  setup(props, { slots }) {\n    const {\n      activeIndex,\n      setActiveIndex,\n      selectOption,\n      onFocus = noop,\n      loading,\n    } = inject(MentionsContextKey, {\n      activeIndex: shallowRef(),\n      loading: shallowRef(false),\n    });\n    let timeoutId: any;\n    const onMousedown = (e: MouseEvent) => {\n      clearTimeout(timeoutId);\n      timeoutId = setTimeout(() => {\n        onFocus(e);\n      });\n    };\n    onBeforeUnmount(() => {\n      clearTimeout(timeoutId);\n    });\n    return () => {\n      const { prefixCls, options } = props;\n      const activeOption = options[activeIndex.value] || {};\n\n      return (\n        <Menu\n          prefixCls={`${prefixCls}-menu`}\n          activeKey={activeOption.value}\n          onSelect={({ key }) => {\n            const option = options.find(({ value }) => value === key);\n            selectOption(option);\n          }}\n          onMousedown={onMousedown}\n        >\n          {!loading.value &&\n            options.map((option, index) => {\n              const { value, disabled, label = option.value, class: className, style } = option;\n              return (\n                <MenuItem\n                  key={value}\n                  disabled={disabled}\n                  onMouseenter={() => {\n                    setActiveIndex(index);\n                  }}\n                  class={className}\n                  style={style}\n                >\n                  {slots.option?.(option) ?? (typeof label === 'function' ? label(option) : label)}\n                </MenuItem>\n              );\n            })}\n          {!loading.value && options.length === 0 ? (\n            <MenuItem key=\"notFoundContent\" disabled>\n              {slots.notFoundContent?.()}\n            </MenuItem>\n          ) : null}\n          {loading.value && (\n            <MenuItem key=\"loading\" disabled>\n              <Spin size=\"small\" />\n            </MenuItem>\n          )}\n        </Menu>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-mentions/src/KeywordTrigger.tsx",
    "content": "import Trigger from '../../vc-trigger';\nimport DropdownMenu from './DropdownMenu';\nimport type { PropType } from 'vue';\nimport { computed, defineComponent } from 'vue';\nimport type { OptionProps } from './Option';\n\nconst BUILT_IN_PLACEMENTS = {\n  bottomRight: {\n    points: ['tl', 'br'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n  bottomLeft: {\n    points: ['tr', 'bl'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n  topRight: {\n    points: ['bl', 'tr'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n  topLeft: {\n    points: ['br', 'tl'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'KeywordTrigger',\n  props: {\n    loading: { type: Boolean, default: undefined },\n    options: {\n      type: Array as PropType<OptionProps[]>,\n      default: () => [],\n    },\n    prefixCls: String,\n    placement: String,\n    visible: { type: Boolean, default: undefined },\n    transitionName: String,\n    getPopupContainer: Function,\n    direction: String,\n    dropdownClassName: String,\n  },\n  setup(props, { slots }) {\n    const getDropdownPrefix = () => {\n      return `${props.prefixCls}-dropdown`;\n    };\n    const getDropdownElement = () => {\n      const { options } = props;\n      return (\n        <DropdownMenu\n          prefixCls={getDropdownPrefix()}\n          options={options}\n          v-slots={{ notFoundContent: slots.notFoundContent, option: slots.option }}\n        />\n      );\n    };\n\n    const popupPlacement = computed(() => {\n      const { placement, direction } = props;\n      let popupPlacement = 'topRight';\n      if (direction === 'rtl') {\n        popupPlacement = placement === 'top' ? 'topLeft' : 'bottomLeft';\n      } else {\n        popupPlacement = placement === 'top' ? 'topRight' : 'bottomRight';\n      }\n      return popupPlacement;\n    });\n    return () => {\n      const { visible, transitionName, getPopupContainer } = props;\n      return (\n        <Trigger\n          prefixCls={getDropdownPrefix()}\n          popupVisible={visible}\n          popup={getDropdownElement()}\n          popupClassName={props.dropdownClassName}\n          popupPlacement={popupPlacement.value}\n          popupTransitionName={transitionName}\n          builtinPlacements={BUILT_IN_PLACEMENTS}\n          getPopupContainer={getPopupContainer}\n          v-slots={{ default: slots.default }}\n        ></Trigger>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-mentions/src/Mentions.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes } from 'vue';\nimport {\n  toRef,\n  watchEffect,\n  defineComponent,\n  provide,\n  ref,\n  reactive,\n  onUpdated,\n  nextTick,\n  computed,\n} from 'vue';\nimport classNames from '../../_util/classNames';\nimport KeyCode from '../../_util/KeyCode';\nimport { initDefaultProps } from '../../_util/props-util';\nimport {\n  getBeforeSelectionText,\n  getLastMeasureIndex,\n  replaceWithMeasure,\n  setInputSelection,\n} from './util';\nimport KeywordTrigger from './KeywordTrigger';\nimport { vcMentionsProps, defaultProps } from './mentionsProps';\nimport type { OptionProps } from './Option';\nimport MentionsContextKey from './MentionsContext';\nimport omit from '../../_util/omit';\nimport type { EventHandler } from '../../_util/EventInterface';\nimport type { BaseInputExpose } from '../../_util/BaseInput';\nimport BaseInput from '../../_util/BaseInput';\n\nexport type MentionsProps = Partial<ExtractPropTypes<typeof vcMentionsProps>>;\n\nfunction noop() {}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Mentions',\n  inheritAttrs: false,\n  props: initDefaultProps(vcMentionsProps, defaultProps),\n  emits: ['change', 'select', 'search', 'focus', 'blur', 'pressenter'],\n  setup(props, { emit, attrs, expose, slots }) {\n    const measure = ref(null);\n    const textarea = ref<BaseInputExpose>(null);\n    const focusId = ref();\n    const state = reactive({\n      value: props.value || '',\n      measuring: false,\n      measureLocation: 0,\n      measureText: null,\n      measurePrefix: '',\n      activeIndex: 0,\n      isFocus: false,\n    });\n\n    watchEffect(() => {\n      state.value = props.value;\n    });\n\n    const triggerChange = (val: string) => {\n      emit('change', val);\n    };\n\n    const onChange: EventHandler = ({ target: { value } }) => {\n      triggerChange(value);\n    };\n\n    const startMeasure = (measureText: string, measurePrefix: string, measureLocation: number) => {\n      Object.assign(state, {\n        measuring: true,\n        measureText,\n        measurePrefix,\n        measureLocation,\n        activeIndex: 0,\n      });\n    };\n    const stopMeasure = (callback?: () => void) => {\n      Object.assign(state, {\n        measuring: false,\n        measureLocation: 0,\n        measureText: null,\n      });\n      callback?.();\n    };\n\n    const onKeyDown = (event: KeyboardEvent) => {\n      const { which } = event;\n      // Skip if not measuring\n      if (!state.measuring) {\n        return;\n      }\n\n      if (which === KeyCode.UP || which === KeyCode.DOWN) {\n        // Control arrow function\n        const optionLen = options.value.length;\n        const offset = which === KeyCode.UP ? -1 : 1;\n        const newActiveIndex = (state.activeIndex + offset + optionLen) % optionLen;\n        state.activeIndex = newActiveIndex;\n        event.preventDefault();\n      } else if (which === KeyCode.ESC) {\n        stopMeasure();\n      } else if (which === KeyCode.ENTER) {\n        // Measure hit\n        event.preventDefault();\n        if (!options.value.length) {\n          stopMeasure();\n          return;\n        }\n        const option = options.value[state.activeIndex];\n        selectOption(option);\n      }\n    };\n\n    const onKeyUp = (event: KeyboardEvent) => {\n      const { key, which } = event;\n      const { measureText: prevMeasureText, measuring } = state;\n      const { prefix, validateSearch } = props;\n      const target = event.target as HTMLTextAreaElement;\n      if ((target as any).composing) {\n        return;\n      }\n      const selectionStartText = getBeforeSelectionText(target);\n      const { location: measureIndex, prefix: measurePrefix } = getLastMeasureIndex(\n        selectionStartText,\n        prefix,\n      );\n\n      // Skip if match the white key list\n      if ([KeyCode.ESC, KeyCode.UP, KeyCode.DOWN, KeyCode.ENTER].indexOf(which) !== -1) {\n        return;\n      }\n\n      if (measureIndex !== -1) {\n        const measureText = selectionStartText.slice(measureIndex + measurePrefix.length);\n        const validateMeasure = validateSearch(measureText, props);\n        const matchOption = !!getOptions(measureText).length;\n\n        if (validateMeasure) {\n          if (\n            key === measurePrefix ||\n            key === 'Shift' ||\n            measuring ||\n            (measureText !== prevMeasureText && matchOption)\n          ) {\n            startMeasure(measureText, measurePrefix, measureIndex);\n          }\n        } else if (measuring) {\n          // Stop if measureText is invalidate\n          stopMeasure();\n        }\n\n        /**\n         * We will trigger `onSearch` to developer since they may use for async update.\n         * If met `space` means user finished searching.\n         */\n        if (validateMeasure) {\n          emit('search', measureText, measurePrefix);\n        }\n      } else if (measuring) {\n        stopMeasure();\n      }\n    };\n    const onPressEnter = event => {\n      if (!state.measuring) {\n        emit('pressenter', event);\n      }\n    };\n\n    const onInputFocus = (event: Event) => {\n      onFocus(event);\n    };\n    const onInputBlur = (event: Event) => {\n      onBlur(event);\n    };\n    const onFocus = (event: Event) => {\n      clearTimeout(focusId.value);\n      const { isFocus } = state;\n      if (!isFocus && event) {\n        emit('focus', event);\n      }\n      state.isFocus = true;\n    };\n    const onBlur = (event: Event) => {\n      focusId.value = setTimeout(() => {\n        state.isFocus = false;\n        stopMeasure();\n        emit('blur', event);\n      }, 100);\n    };\n    const selectOption = (option: OptionProps) => {\n      const { split } = props;\n      const { value: mentionValue = '' } = option;\n      const { text, selectionLocation } = replaceWithMeasure(state.value, {\n        measureLocation: state.measureLocation,\n        targetText: mentionValue,\n        prefix: state.measurePrefix,\n        selectionStart: textarea.value.getSelectionStart(),\n        split,\n      });\n      triggerChange(text);\n      stopMeasure(() => {\n        // We need restore the selection position\n        setInputSelection(textarea.value.input as HTMLTextAreaElement, selectionLocation);\n      });\n\n      emit('select', option, state.measurePrefix);\n    };\n    const setActiveIndex = (activeIndex: number) => {\n      state.activeIndex = activeIndex;\n    };\n\n    const getOptions = (measureText?: string) => {\n      const targetMeasureText = measureText || state.measureText || '';\n      const { filterOption } = props;\n      const list = props.options.filter((option: OptionProps) => {\n        /** Return all result if `filterOption` is false. */\n        if (!!filterOption === false) {\n          return true;\n        }\n        return (filterOption as Function)(targetMeasureText, option);\n      });\n      return list;\n    };\n    const options = computed(() => {\n      return getOptions();\n    });\n\n    const focus = () => {\n      textarea.value.focus();\n    };\n    const blur = () => {\n      textarea.value.blur();\n    };\n    expose({ blur, focus });\n    provide(MentionsContextKey, {\n      activeIndex: toRef(state, 'activeIndex'),\n      setActiveIndex,\n      selectOption,\n      onFocus,\n      onBlur,\n      loading: toRef(props, 'loading'),\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        if (state.measuring) {\n          measure.value.scrollTop = textarea.value.getScrollTop();\n        }\n      });\n    });\n    return () => {\n      const { measureLocation, measurePrefix, measuring } = state;\n      const { prefixCls, placement, transitionName, getPopupContainer, direction, ...restProps } =\n        props;\n\n      const { class: className, style, ...otherAttrs } = attrs;\n\n      const inputProps = omit(restProps, [\n        'value',\n        'prefix',\n        'split',\n        'validateSearch',\n        'filterOption',\n        'options',\n        'loading',\n      ]);\n\n      const textareaProps = {\n        ...inputProps,\n        ...otherAttrs,\n        onChange: noop,\n        onSelect: noop,\n        value: state.value,\n        onInput: onChange,\n        onBlur: onInputBlur,\n        onKeydown: onKeyDown,\n        onKeyup: onKeyUp,\n        onFocus: onInputFocus,\n        onPressenter: onPressEnter,\n      };\n      return (\n        <div class={classNames(prefixCls, className)} style={style as CSSProperties}>\n          <BaseInput {...textareaProps} ref={textarea} tag=\"textarea\"></BaseInput>\n          {measuring && (\n            <div ref={measure} class={`${prefixCls}-measure`}>\n              {state.value.slice(0, measureLocation)}\n              <KeywordTrigger\n                prefixCls={prefixCls}\n                transitionName={transitionName}\n                dropdownClassName={props.dropdownClassName}\n                placement={placement}\n                options={measuring ? options.value : []}\n                visible\n                direction={direction}\n                getPopupContainer={getPopupContainer}\n                v-slots={{ notFoundContent: slots.notFoundContent, option: slots.option }}\n              >\n                <span>{measurePrefix}</span>\n              </KeywordTrigger>\n              {state.value.slice(measureLocation + measurePrefix.length)}\n            </div>\n          )}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-mentions/src/MentionsContext.ts",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport type { OptionProps } from './Option';\n\nexport interface MentionsContext {\n  activeIndex: Ref<number>;\n  setActiveIndex?: (index: number) => void;\n  selectOption?: (option: OptionProps) => void;\n  onFocus?: EventListener;\n  onBlur?: EventListener;\n  loading?: Ref<boolean>;\n}\n\nconst MentionsContextKey: InjectionKey<MentionsContext> = Symbol('MentionsContextKey');\n\nexport default MentionsContextKey;\n"
  },
  {
    "path": "components/vc-mentions/src/Option.tsx",
    "content": "import type { VueNode } from '../../_util/type';\nimport { objectType, anyType } from '../../_util/type';\nimport type { ExtractPropTypes, HTMLAttributes } from 'vue';\nimport { defineComponent } from 'vue';\n\nexport const baseOptionsProps = {\n  value: String,\n  disabled: Boolean,\n  payload: objectType<Record<string, any>>(),\n};\nexport const optionProps = {\n  ...baseOptionsProps,\n  label: anyType<VueNode | ((o: BaseOptionsProps) => VueNode)>([]),\n};\nexport type BaseOptionsProps = Partial<ExtractPropTypes<typeof baseOptionsProps>> &\n  Partial<HTMLAttributes>;\n\nexport type OptionProps = Partial<ExtractPropTypes<typeof optionProps>> & Partial<HTMLAttributes>;\n\nexport const optionOptions = {\n  name: 'Option',\n  props: optionProps,\n  render(_props: any, { slots }: any) {\n    return slots.default?.();\n  },\n};\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  ...optionOptions,\n});\n"
  },
  {
    "path": "components/vc-mentions/src/mentionsProps.ts",
    "content": "import type { PropType } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport { initDefaultProps } from '../../_util/props-util';\nimport {\n  filterOption as defaultFilterOption,\n  validateSearch as defaultValidateSearch,\n} from './util';\nimport { arrayType, tuple } from '../../_util/type';\nimport type { OptionProps } from './Option';\n\nexport const PlaceMent = tuple('top', 'bottom');\nexport type Direction = 'ltr' | 'rtl';\n\nexport const mentionsProps = {\n  autofocus: { type: Boolean, default: undefined },\n  prefix: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n  prefixCls: String,\n  value: String,\n  disabled: { type: Boolean, default: undefined },\n  split: String,\n  transitionName: String,\n  placement: PropTypes.oneOf(PlaceMent),\n  character: PropTypes.any,\n  characterRender: Function,\n  filterOption: {\n    type: [Boolean, Function] as PropType<typeof defaultFilterOption | false>,\n  },\n  validateSearch: Function,\n  getPopupContainer: {\n    type: Function as PropType<() => HTMLElement>,\n  },\n  options: arrayType<OptionProps[]>(),\n  loading: { type: Boolean, default: undefined },\n  rows: [Number, String],\n  direction: { type: String as PropType<Direction> },\n};\n\nexport const vcMentionsProps = {\n  ...mentionsProps,\n  dropdownClassName: String,\n};\n\nexport const defaultProps = {\n  prefix: '@',\n  split: ' ',\n  rows: 1,\n  validateSearch: defaultValidateSearch,\n  filterOption: (() => defaultFilterOption) as any,\n};\n\nexport default initDefaultProps(vcMentionsProps, defaultProps);\n"
  },
  {
    "path": "components/vc-mentions/src/util.ts",
    "content": "import type { MentionsProps } from './Mentions';\nimport type { OptionProps } from './Option';\n\n/**\n * Cut input selection into 2 part and return text before selection start\n */\nexport function getBeforeSelectionText(input: HTMLTextAreaElement) {\n  const { selectionStart } = input;\n  return input.value.slice(0, selectionStart);\n}\n\ninterface MeasureIndex {\n  location: number;\n  prefix: string;\n}\n/**\n * Find the last match prefix index\n */\nexport function getLastMeasureIndex(text: string, prefix: string | string[] = ''): MeasureIndex {\n  const prefixList: string[] = Array.isArray(prefix) ? prefix : [prefix];\n  return prefixList.reduce(\n    (lastMatch: MeasureIndex, prefixStr): MeasureIndex => {\n      const lastIndex = text.lastIndexOf(prefixStr);\n      if (lastIndex > lastMatch.location) {\n        return {\n          location: lastIndex,\n          prefix: prefixStr,\n        };\n      }\n      return lastMatch;\n    },\n    { location: -1, prefix: '' },\n  );\n}\n\ninterface MeasureConfig {\n  measureLocation: number;\n  prefix: string;\n  targetText: string;\n  selectionStart: number;\n  split: string;\n}\n\nfunction lower(char: string | undefined): string {\n  return (char || '').toLowerCase();\n}\n\nfunction reduceText(text: string, targetText: string, split: string) {\n  const firstChar = text[0];\n  if (!firstChar || firstChar === split) {\n    return text;\n  }\n\n  // Reuse rest text as it can\n  let restText = text;\n  const targetTextLen = targetText.length;\n  for (let i = 0; i < targetTextLen; i += 1) {\n    if (lower(restText[i]) !== lower(targetText[i])) {\n      restText = restText.slice(i);\n      break;\n    } else if (i === targetTextLen - 1) {\n      restText = restText.slice(targetTextLen);\n    }\n  }\n\n  return restText;\n}\n\n/**\n * Paint targetText into current text:\n *  text: little@litest\n *  targetText: light\n *  => little @light test\n */\nexport function replaceWithMeasure(text: string, measureConfig: MeasureConfig) {\n  const { measureLocation, prefix, targetText, selectionStart, split } = measureConfig;\n\n  // Before text will append one space if have other text\n  let beforeMeasureText = text.slice(0, measureLocation);\n  if (beforeMeasureText[beforeMeasureText.length - split.length] === split) {\n    beforeMeasureText = beforeMeasureText.slice(0, beforeMeasureText.length - split.length);\n  }\n  if (beforeMeasureText) {\n    beforeMeasureText = `${beforeMeasureText}${split}`;\n  }\n\n  // Cut duplicate string with current targetText\n  let restText = reduceText(\n    text.slice(selectionStart),\n    targetText.slice(selectionStart - measureLocation - prefix.length),\n    split,\n  );\n  if (restText.slice(0, split.length) === split) {\n    restText = restText.slice(split.length);\n  }\n\n  const connectedStartText = `${beforeMeasureText}${prefix}${targetText}${split}`;\n\n  return {\n    text: `${connectedStartText}${restText}`,\n    selectionLocation: connectedStartText.length,\n  };\n}\n\nexport function setInputSelection(input: HTMLTextAreaElement, location: number) {\n  input.setSelectionRange(location, location);\n\n  /**\n   * Reset caret into view.\n   * Since this function always called by user control, it's safe to focus element.\n   */\n  input.blur();\n  input.focus();\n}\n\nexport function validateSearch(text: string, props: MentionsProps) {\n  const { split } = props;\n  return !split || text.indexOf(split) === -1;\n}\n\nexport function filterOption(input: string, { value = '' }: OptionProps): boolean {\n  const lowerCase = input.toLowerCase();\n  return value.toLowerCase().indexOf(lowerCase) !== -1;\n}\n"
  },
  {
    "path": "components/vc-notification/HookNotification.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { watch, computed, defineComponent, ref, TransitionGroup } from 'vue';\nimport type { NoticeProps } from './Notice';\nimport Notice from './Notice';\nimport type { CSSMotionProps } from '../_util/transition';\nimport { getTransitionGroupProps } from '../_util/transition';\nimport type { Key, VueNode } from '../_util/type';\nimport classNames from '../_util/classNames';\nimport Portal from '../_util/Portal';\n\nlet seed = 0;\nconst now = Date.now();\n\nexport function getUuid() {\n  const id = seed;\n  seed += 1;\n  return `rcNotification_${now}_${id}`;\n}\n\nexport type Placement = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n\nexport interface OpenConfig extends NoticeProps {\n  key: Key;\n  placement?: Placement;\n  content?: VueNode;\n  duration?: number | null;\n}\n\nexport type Placements = Partial<Record<Placement, OpenConfig[]>>;\n\nexport interface NoticeContent extends Omit<NoticeProps, 'prefixCls' | 'noticeKey' | 'onClose'> {\n  prefixCls?: string;\n  key?: Key;\n  updateMark?: string;\n  content?: any;\n  onClose?: () => void;\n  style?: CSSProperties;\n  class?: String;\n  placement?: Placement;\n}\n\nexport type NoticeFunc = (noticeProps: NoticeContent) => void;\nexport type HolderReadyCallback = (\n  div: HTMLDivElement,\n  noticeProps: NoticeProps & { key: Key },\n) => void;\n\nexport interface NotificationInstance {\n  notice: NoticeFunc;\n  removeNotice: (key: Key) => void;\n  destroy: () => void;\n  add: (noticeProps: NoticeContent) => void;\n  component: Notification;\n}\n\nexport interface HookNotificationProps {\n  prefixCls?: string;\n  transitionName?: string;\n  animation?: string | CSSMotionProps | ((placement?: Placement) => CSSMotionProps);\n  maxCount?: number;\n  closeIcon?: any;\n  hashId?: string;\n  // Hook Notification\n  remove: (key: Key) => void;\n  notices: NotificationState;\n  getStyles?: (placement?: Placement) => CSSProperties;\n  getClassName?: (placement?: Placement) => string;\n  onAllRemoved?: VoidFunction;\n  getContainer?: () => HTMLElement;\n}\n\ntype NotificationState = {\n  notice: NoticeContent & {\n    userPassKey?: Key;\n  };\n  holderCallback?: HolderReadyCallback;\n}[];\n\nconst Notification = defineComponent<HookNotificationProps>({\n  name: 'HookNotification',\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'transitionName',\n    'animation',\n    'maxCount',\n    'closeIcon',\n    'hashId',\n    'remove',\n    'notices',\n    'getStyles',\n    'getClassName',\n    'onAllRemoved',\n    'getContainer',\n  ] as any,\n  setup(props, { attrs, slots }) {\n    const hookRefs = new Map<Key, HTMLDivElement>();\n    const notices = computed(() => props.notices);\n    const transitionProps = computed(() => {\n      let name = props.transitionName;\n      if (!name && props.animation) {\n        switch (typeof props.animation) {\n          case 'string':\n            name = props.animation;\n            break;\n          case 'function':\n            name = props.animation().name;\n            break;\n          case 'object':\n            name = props.animation.name;\n            break;\n          default:\n            name = `${props.prefixCls}-fade`;\n            break;\n        }\n      }\n      return getTransitionGroupProps(name);\n    });\n\n    const remove = (key: Key) => props.remove(key);\n    const placements = ref({} as Record<Placement, NotificationState>);\n    watch(notices, () => {\n      const nextPlacements = {} as any;\n      // init placements with animation\n      Object.keys(placements.value).forEach(placement => {\n        nextPlacements[placement] = [];\n      });\n      props.notices.forEach(config => {\n        const { placement = 'topRight' } = config.notice;\n        if (placement) {\n          nextPlacements[placement] = nextPlacements[placement] || [];\n          nextPlacements[placement].push(config);\n        }\n      });\n      placements.value = nextPlacements;\n    });\n\n    const placementList = computed(() => Object.keys(placements.value) as Placement[]);\n\n    return () => {\n      const { prefixCls, closeIcon = slots.closeIcon?.({ prefixCls }) } = props;\n      const noticeNodes = placementList.value.map(placement => {\n        const noticesForPlacement = placements.value[placement];\n        const classes = props.getClassName?.(placement);\n        const styles = props.getStyles?.(placement);\n        const noticeNodesForPlacement = noticesForPlacement.map(\n          ({ notice, holderCallback }, index) => {\n            const updateMark = index === notices.value.length - 1 ? notice.updateMark : undefined;\n            const { key, userPassKey } = notice;\n            const { content } = notice;\n            const noticeProps = {\n              prefixCls,\n              closeIcon: typeof closeIcon === 'function' ? closeIcon({ prefixCls }) : closeIcon,\n              ...(notice as any),\n              ...notice.props,\n              key,\n              noticeKey: userPassKey || key,\n              updateMark,\n              onClose: (noticeKey: Key) => {\n                remove(noticeKey);\n                notice.onClose?.();\n              },\n              onClick: notice.onClick,\n            };\n\n            if (holderCallback) {\n              return (\n                <div\n                  key={key}\n                  class={`${prefixCls}-hook-holder`}\n                  ref={(div: HTMLDivElement) => {\n                    if (typeof key === 'undefined') {\n                      return;\n                    }\n                    if (div) {\n                      hookRefs.set(key, div);\n                      holderCallback(div, noticeProps);\n                    } else {\n                      hookRefs.delete(key);\n                    }\n                  }}\n                />\n              );\n            }\n\n            return (\n              <Notice {...noticeProps} class={classNames(noticeProps.class, props.hashId)}>\n                {typeof content === 'function' ? content({ prefixCls }) : content}\n              </Notice>\n            );\n          },\n        );\n        const className = {\n          [prefixCls]: 1,\n          [`${prefixCls}-${placement}`]: 1,\n          [attrs.class as string]: !!attrs.class,\n          [props.hashId]: true,\n          [classes]: !!classes,\n        };\n        function onAfterLeave() {\n          if (noticesForPlacement.length > 0) {\n            return;\n          }\n          Reflect.deleteProperty(placements.value, placement);\n          props.onAllRemoved?.();\n        }\n        return (\n          <div\n            key={placement}\n            class={className}\n            style={\n              (attrs.style as CSSProperties) ||\n              styles || {\n                top: '65px',\n                left: '50%',\n              }\n            }\n          >\n            <TransitionGroup tag=\"div\" {...transitionProps.value} onAfterLeave={onAfterLeave}>\n              {noticeNodesForPlacement}\n            </TransitionGroup>\n          </div>\n        );\n      });\n      return <Portal getContainer={props.getContainer}>{noticeNodes}</Portal>;\n    };\n  },\n});\n\nexport default Notification;\n"
  },
  {
    "path": "components/vc-notification/Notice.tsx",
    "content": "import type { Key } from '../_util/type';\nimport { Teleport, computed, defineComponent, onMounted, watch, onUnmounted } from 'vue';\nimport type { HTMLAttributes, CSSProperties } from 'vue';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport classNames from '../_util/classNames';\n\ninterface DivProps extends HTMLAttributes {\n  // Ideally we would allow all data-* props but this would depend on https://github.com/microsoft/TypeScript/issues/28960\n  'data-testid'?: string;\n}\n\nexport interface NoticeProps {\n  prefixCls: string;\n  duration?: number | null;\n  updateMark?: string;\n  /** Mark as final key since set maxCount may keep the key but user pass key is different */\n  noticeKey: Key;\n  closeIcon?: any;\n  closable?: boolean;\n  props?: DivProps;\n  onClick?: MouseEventHandler;\n  onClose?: (key: Key) => void;\n\n  /** @private Only for internal usage. We don't promise that we will refactor this */\n  holder?: HTMLDivElement;\n\n  /** @private Provided by CSSMotionList */\n  visible?: boolean;\n}\n\nexport default defineComponent<NoticeProps>({\n  name: 'Notice',\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'duration',\n    'updateMark',\n    'noticeKey',\n    'closeIcon',\n    'closable',\n    'props',\n    'onClick',\n    'onClose',\n    'holder',\n    'visible',\n  ] as any,\n  setup(props, { attrs, slots }) {\n    let closeTimer: any;\n    let isUnMounted = false;\n    const duration = computed(() => (props.duration === undefined ? 4.5 : props.duration));\n    const startCloseTimer = () => {\n      if (duration.value && !isUnMounted) {\n        closeTimer = setTimeout(() => {\n          close();\n        }, duration.value * 1000);\n      }\n    };\n\n    const clearCloseTimer = () => {\n      if (closeTimer) {\n        clearTimeout(closeTimer);\n        closeTimer = null;\n      }\n    };\n    const close = (e?: MouseEvent) => {\n      if (e) {\n        e.stopPropagation();\n      }\n      clearCloseTimer();\n      const { onClose, noticeKey } = props;\n      if (onClose) {\n        onClose(noticeKey);\n      }\n    };\n    const restartCloseTimer = () => {\n      clearCloseTimer();\n      startCloseTimer();\n    };\n    onMounted(() => {\n      startCloseTimer();\n    });\n    onUnmounted(() => {\n      isUnMounted = true;\n      clearCloseTimer();\n    });\n\n    watch(\n      [duration, () => props.updateMark, () => props.visible],\n      ([preDuration, preUpdateMark, preVisible], [newDuration, newUpdateMark, newVisible]) => {\n        if (\n          preDuration !== newDuration ||\n          preUpdateMark !== newUpdateMark ||\n          (preVisible !== newVisible && newVisible)\n        ) {\n          restartCloseTimer();\n        }\n      },\n      { flush: 'post' },\n    );\n    return () => {\n      const { prefixCls, closable, closeIcon = slots.closeIcon?.(), onClick, holder } = props;\n      const { class: className, style } = attrs;\n      const componentClass = `${prefixCls}-notice`;\n      const dataOrAriaAttributeProps = Object.keys(attrs).reduce(\n        (acc: Record<string, string>, key: string) => {\n          if (key.startsWith('data-') || key.startsWith('aria-') || key === 'role') {\n            acc[key] = (attrs as any)[key];\n          }\n          return acc;\n        },\n        {},\n      );\n      const node = (\n        <div\n          class={classNames(componentClass, className, {\n            [`${componentClass}-closable`]: closable,\n          })}\n          style={style as CSSProperties}\n          onMouseenter={clearCloseTimer}\n          onMouseleave={startCloseTimer}\n          onClick={onClick}\n          {...dataOrAriaAttributeProps}\n        >\n          <div class={`${componentClass}-content`}>{slots.default?.()}</div>\n          {closable ? (\n            <a tabindex={0} onClick={close} class={`${componentClass}-close`}>\n              {closeIcon || <span class={`${componentClass}-close-x`} />}\n            </a>\n          ) : null}\n        </div>\n      );\n\n      if (holder) {\n        return <Teleport to={holder} v-slots={{ default: () => node }}></Teleport>;\n      }\n\n      return node;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-notification/Notification.tsx",
    "content": "import { getTransitionGroupProps } from '../_util/transition';\nimport type { Key, VueNode } from '../_util/type';\nimport type { CSSProperties } from 'vue';\nimport {\n  toRaw,\n  shallowRef,\n  createVNode,\n  computed,\n  defineComponent,\n  ref,\n  TransitionGroup,\n  onMounted,\n  render as vueRender,\n} from 'vue';\nimport type { NoticeProps } from './Notice';\nimport Notice from './Notice';\nimport ConfigProvider, { globalConfigForApi } from '../config-provider';\nimport classNames from '../_util/classNames';\n\nlet seed = 0;\nconst now = Date.now();\n\nfunction getUuid() {\n  const id = seed;\n  seed += 1;\n  return `rcNotification_${now}_${id}`;\n}\n\nexport interface NoticeContent extends Omit<NoticeProps, 'prefixCls' | 'noticeKey' | 'onClose'> {\n  prefixCls?: string;\n  key?: Key;\n  updateMark?: string;\n  content?: string | ((arg: { prefixCls: string }) => VueNode) | VueNode;\n  onClose?: () => void;\n  style?: CSSProperties;\n  class?: String;\n}\nexport type Placement = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n\nexport interface OpenConfig extends NoticeProps {\n  key: Key;\n  placement?: Placement;\n  content?: string | (() => VueNode) | VueNode;\n  duration?: number | null;\n}\n\nexport type NoticeFunc = (noticeProps: NoticeContent) => void;\nexport type HolderReadyCallback = (\n  div: HTMLDivElement,\n  noticeProps: NoticeProps & { key: Key },\n) => void;\n\nexport interface NotificationInstance {\n  notice: NoticeFunc;\n  removeNotice: (key: Key) => void;\n  destroy: () => void;\n  component: Notification;\n}\n\nexport interface NotificationProps {\n  prefixCls?: string;\n  transitionName?: string;\n  animation?: string | object;\n  maxCount?: number;\n  closeIcon?: any;\n  hashId?: string;\n}\n\ntype NotificationState = {\n  notice: NoticeContent & {\n    userPassKey?: Key;\n  };\n  holderCallback?: HolderReadyCallback;\n}[];\n\nconst Notification = defineComponent({\n  name: 'Notification',\n  inheritAttrs: false,\n  props: ['prefixCls', 'transitionName', 'animation', 'maxCount', 'closeIcon', 'hashId'],\n  setup(props, { attrs, expose, slots }) {\n    const hookRefs = new Map<Key, HTMLDivElement>();\n    const notices = ref<NotificationState>([]);\n    const transitionProps = computed(() => {\n      const { prefixCls, animation = 'fade' } = props;\n      let name = props.transitionName;\n      if (!name && animation) {\n        name = `${prefixCls}-${animation}`;\n      }\n      return getTransitionGroupProps(name);\n    });\n\n    const add = (originNotice: NoticeContent, holderCallback?: HolderReadyCallback) => {\n      const key = originNotice.key || getUuid();\n      const notice: NoticeContent & { key: Key; userPassKey?: Key } = {\n        ...originNotice,\n        key,\n      };\n      const { maxCount } = props;\n      const noticeIndex = notices.value.map(v => v.notice.key).indexOf(key);\n      const updatedNotices = notices.value.concat();\n      if (noticeIndex !== -1) {\n        updatedNotices.splice(noticeIndex, 1, { notice, holderCallback } as any);\n      } else {\n        if (maxCount && notices.value.length >= maxCount) {\n          // XXX, use key of first item to update new added (let React to move exsiting\n          // instead of remove and mount). Same key was used before for both a) external\n          // manual control and b) internal react 'key' prop , which is not that good.\n          // eslint-disable-next-line no-param-reassign\n\n          // zombieJ: Not know why use `updateKey`. This makes Notice infinite loop in jest.\n          // Change to `updateMark` for compare instead.\n          // https://github.com/react-component/notification/commit/32299e6be396f94040bfa82517eea940db947ece\n          notice.key = updatedNotices[0].notice.key as Key;\n          notice.updateMark = getUuid();\n\n          // zombieJ: That's why. User may close by key directly.\n          // We need record this but not re-render to avoid upper issue\n          // https://github.com/react-component/notification/issues/129\n          notice.userPassKey = key;\n\n          updatedNotices.shift();\n        }\n        updatedNotices.push({ notice, holderCallback } as any);\n      }\n      notices.value = updatedNotices;\n    };\n\n    const remove = (removeKey: Key) => {\n      notices.value = toRaw(notices.value as any).filter(({ notice: { key, userPassKey } }) => {\n        const mergedKey = userPassKey || key;\n        return mergedKey !== removeKey;\n      });\n    };\n    expose({\n      add,\n      remove,\n      notices,\n    });\n    return () => {\n      const { prefixCls, closeIcon = slots.closeIcon?.({ prefixCls }) } = props;\n      const noticeNodes = notices.value.map(({ notice, holderCallback }, index) => {\n        const updateMark = index === notices.value.length - 1 ? notice.updateMark : undefined;\n        const { key, userPassKey } = notice;\n\n        const { content } = notice;\n        const noticeProps = {\n          prefixCls,\n          closeIcon: typeof closeIcon === 'function' ? closeIcon({ prefixCls }) : closeIcon,\n          ...(notice as any),\n          ...notice.props,\n          key,\n          noticeKey: userPassKey || key,\n          updateMark,\n          onClose: (noticeKey: Key) => {\n            remove(noticeKey);\n            notice.onClose?.();\n          },\n          onClick: notice.onClick,\n        };\n        if (holderCallback) {\n          return (\n            <div\n              key={key}\n              class={`${prefixCls}-hook-holder`}\n              ref={(div: HTMLDivElement) => {\n                if (typeof key === 'undefined') {\n                  return;\n                }\n\n                if (div) {\n                  hookRefs.set(key, div);\n                  holderCallback(div, noticeProps);\n                } else {\n                  hookRefs.delete(key);\n                }\n              }}\n            />\n          );\n        }\n        return (\n          <Notice {...noticeProps} class={classNames(noticeProps.class, props.hashId)}>\n            {typeof content === 'function' ? content({ prefixCls }) : content}\n          </Notice>\n        );\n      });\n      const className = {\n        [prefixCls]: 1,\n        [attrs.class as string]: !!attrs.class,\n        [props.hashId]: true,\n      };\n      return (\n        <div\n          class={className}\n          style={\n            (attrs.style as CSSProperties) || {\n              top: '65px',\n              left: '50%',\n            }\n          }\n        >\n          <TransitionGroup tag=\"div\" {...transitionProps.value}>\n            {noticeNodes}\n          </TransitionGroup>\n        </div>\n      );\n    };\n  },\n});\n\nNotification.newInstance = function newNotificationInstance(properties, callback) {\n  const {\n    name = 'notification',\n    getContainer,\n    appContext,\n    prefixCls: customizePrefixCls,\n    rootPrefixCls: customRootPrefixCls,\n    transitionName: customTransitionName,\n    hasTransitionName,\n    useStyle,\n    ...props\n  } = properties || {};\n  const div = document.createElement('div');\n  if (getContainer) {\n    const root = getContainer();\n    root.appendChild(div);\n  } else {\n    document.body.appendChild(div);\n  }\n  const Wrapper = defineComponent({\n    compatConfig: { MODE: 3 },\n    name: 'NotificationWrapper',\n    setup(_props, { attrs }) {\n      const notiRef = shallowRef();\n      const prefixCls = computed(() => globalConfigForApi.getPrefixCls(name, customizePrefixCls));\n      const [, hashId] = useStyle(prefixCls);\n      onMounted(() => {\n        callback({\n          notice(noticeProps: NoticeContent) {\n            notiRef.value?.add(noticeProps);\n          },\n          removeNotice(key: Key) {\n            notiRef.value?.remove(key);\n          },\n          destroy() {\n            vueRender(null, div);\n            if (div.parentNode) {\n              div.parentNode.removeChild(div);\n            }\n          },\n          component: notiRef,\n        });\n      });\n      return () => {\n        const global = globalConfigForApi;\n        const rootPrefixCls = global.getRootPrefixCls(customRootPrefixCls, prefixCls.value);\n        const transitionName = hasTransitionName\n          ? customTransitionName\n          : `${prefixCls.value}-${customTransitionName}`;\n        return (\n          <ConfigProvider {...global} prefixCls={rootPrefixCls}>\n            <Notification\n              ref={notiRef}\n              {...attrs}\n              prefixCls={prefixCls.value}\n              transitionName={transitionName}\n              hashId={hashId.value}\n            />\n          </ConfigProvider>\n        );\n      };\n    },\n  });\n\n  const vm = createVNode(Wrapper, props);\n  vm.appContext = appContext || vm.appContext;\n  vueRender(vm, div);\n};\n\nexport default Notification;\n"
  },
  {
    "path": "components/vc-notification/index.ts",
    "content": "import Notification from './Notification';\nimport useNotification from './useNotification';\nimport type { NotificationAPI } from './useNotification';\nexport { useNotification, NotificationAPI };\nexport default Notification;\n"
  },
  {
    "path": "components/vc-notification/useNotification.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { shallowRef, watch } from 'vue';\nimport HookNotification, { getUuid } from './HookNotification';\nimport type { NotificationInstance, OpenConfig, Placement } from './Notification';\nimport type { CSSMotionProps } from '../_util/transition';\nimport type { Key, VueNode } from '../_util/type';\nimport type { HolderReadyCallback, NoticeContent } from './HookNotification';\n\nconst defaultGetContainer = () => document.body;\n\ntype OptionalConfig = Partial<OpenConfig>;\n\nexport interface NotificationConfig {\n  prefixCls?: string;\n  /** Customize container. It will repeat call which means you should return same container element. */\n  getContainer?: () => HTMLElement;\n  motion?: CSSMotionProps | ((placement?: Placement) => CSSMotionProps);\n  closeIcon?: VueNode;\n  closable?: boolean;\n  maxCount?: number;\n  duration?: number;\n  /** @private. Config for notification holder style. Safe to remove if refactor */\n  getClassName?: (placement?: Placement) => string;\n  /** @private. Config for notification holder style. Safe to remove if refactor */\n  getStyles?: (placement?: Placement) => CSSProperties;\n  /** @private Trigger when all the notification closed. */\n  onAllRemoved?: VoidFunction;\n  hashId?: string;\n}\n\nexport interface NotificationAPI {\n  open: (config: OptionalConfig) => void;\n  close: (key: Key) => void;\n  destroy: () => void;\n}\n\ninterface OpenTask {\n  type: 'open';\n  config: OpenConfig;\n}\n\ninterface CloseTask {\n  type: 'close';\n  key: Key;\n}\n\ninterface DestroyTask {\n  type: 'destroy';\n}\n\ntype Task = OpenTask | CloseTask | DestroyTask;\n\nlet uniqueKey = 0;\n\nfunction mergeConfig<T>(...objList: Partial<T>[]): T {\n  const clone: T = {} as T;\n\n  objList.forEach(obj => {\n    if (obj) {\n      Object.keys(obj).forEach(key => {\n        const val = obj[key];\n\n        if (val !== undefined) {\n          clone[key] = val;\n        }\n      });\n    }\n  });\n\n  return clone;\n}\n\nexport default function useNotification(rootConfig: NotificationConfig = {}) {\n  const {\n    getContainer = defaultGetContainer,\n    motion,\n    prefixCls,\n    maxCount,\n    getClassName,\n    getStyles,\n    onAllRemoved,\n    ...shareConfig\n  } = rootConfig;\n\n  const notices = shallowRef([]);\n  const notificationsRef = shallowRef<NotificationInstance>();\n  const add = (originNotice: NoticeContent, holderCallback?: HolderReadyCallback) => {\n    const key = originNotice.key || getUuid();\n    const notice: NoticeContent & { key: Key; userPassKey?: Key } = {\n      ...originNotice,\n      key,\n    };\n    const noticeIndex = notices.value.map(v => v.notice.key).indexOf(key);\n    const updatedNotices = notices.value.concat();\n    if (noticeIndex !== -1) {\n      updatedNotices.splice(noticeIndex, 1, { notice, holderCallback } as any);\n    } else {\n      if (maxCount && notices.value.length >= maxCount) {\n        notice.key = updatedNotices[0].notice.key as Key;\n        notice.updateMark = getUuid();\n        notice.userPassKey = key;\n        updatedNotices.shift();\n      }\n      updatedNotices.push({ notice, holderCallback } as any);\n    }\n    notices.value = updatedNotices;\n  };\n  const removeNotice = (removeKey: Key) => {\n    notices.value = notices.value.filter(({ notice: { key, userPassKey } }) => {\n      const mergedKey = userPassKey || key;\n      return mergedKey !== removeKey;\n    });\n  };\n\n  const destroy = () => {\n    notices.value = [];\n  };\n\n  const contextHolder = () => (\n    <HookNotification\n      ref={notificationsRef}\n      prefixCls={prefixCls}\n      maxCount={maxCount}\n      notices={notices.value}\n      remove={removeNotice}\n      getClassName={getClassName}\n      getStyles={getStyles}\n      animation={motion}\n      hashId={rootConfig.hashId}\n      onAllRemoved={onAllRemoved}\n      getContainer={getContainer}\n    ></HookNotification>\n  );\n\n  const taskQueue = shallowRef([] as Task[]);\n  // ========================= Refs =========================\n  const api = {\n    open: (config: OpenConfig) => {\n      const mergedConfig = mergeConfig(shareConfig, config);\n      //@ts-ignore\n      if (mergedConfig.key === null || mergedConfig.key === undefined) {\n        //@ts-ignore\n        mergedConfig.key = `vc-notification-${uniqueKey}`;\n        uniqueKey += 1;\n      }\n\n      taskQueue.value = [...taskQueue.value, { type: 'open', config: mergedConfig as any }];\n    },\n    close: key => {\n      taskQueue.value = [...taskQueue.value, { type: 'close', key }];\n    },\n    destroy: () => {\n      taskQueue.value = [...taskQueue.value, { type: 'destroy' }];\n    },\n  };\n\n  // ======================== Effect ========================\n  watch(taskQueue, () => {\n    // Flush task when node ready\n    if (taskQueue.value.length) {\n      taskQueue.value.forEach(task => {\n        switch (task.type) {\n          case 'open':\n            // @ts-ignore\n            add(task.config);\n            break;\n\n          case 'close':\n            removeNotice(task.key);\n            break;\n          case 'destroy':\n            destroy();\n            break;\n        }\n      });\n      taskQueue.value = [];\n    }\n  });\n\n  // ======================== Return ========================\n  return [api, contextHolder] as const;\n}\n"
  },
  {
    "path": "components/vc-overflow/Item.tsx",
    "content": "import type { CSSProperties, HTMLAttributes, PropType } from 'vue';\nimport { computed, defineComponent, onUnmounted, ref } from 'vue';\nimport ResizeObserver from '../vc-resize-observer';\nimport classNames from '../_util/classNames';\nimport type { Key, VueNode } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\n\nconst UNDEFINED = undefined;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Item',\n  props: {\n    prefixCls: String,\n    item: PropTypes.any,\n    renderItem: Function as PropType<(item: any) => VueNode>,\n    responsive: Boolean,\n    itemKey: { type: [String, Number] as PropType<string | number> },\n    registerSize: Function as PropType<(key: Key, width: number | null) => void>,\n    display: Boolean,\n    order: Number,\n    component: PropTypes.any,\n    invalidate: Boolean,\n  },\n  setup(props, { slots, expose }) {\n    const mergedHidden = computed(() => props.responsive && !props.display);\n    const itemNodeRef = ref();\n\n    expose({ itemNodeRef });\n\n    // ================================ Effect ================================\n    function internalRegisterSize(width: number | null) {\n      props.registerSize(props.itemKey, width);\n    }\n\n    onUnmounted(() => {\n      internalRegisterSize(null);\n    });\n\n    return () => {\n      const {\n        prefixCls,\n        invalidate,\n        item,\n        renderItem,\n        responsive,\n        registerSize,\n        itemKey,\n        display,\n        order,\n        component: Component = 'div',\n        ...restProps\n      } = props;\n      const children = slots.default?.();\n      // ================================ Render ================================\n      const childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n\n      let overflowStyle: CSSProperties | undefined;\n      if (!invalidate) {\n        overflowStyle = {\n          opacity: mergedHidden.value ? 0 : 1,\n          height: mergedHidden.value ? 0 : UNDEFINED,\n          overflowY: mergedHidden.value ? 'hidden' : UNDEFINED,\n          order: responsive ? order : UNDEFINED,\n          pointerEvents: mergedHidden.value ? 'none' : UNDEFINED,\n          position: mergedHidden.value ? 'absolute' : UNDEFINED,\n        };\n      }\n\n      const overflowProps: HTMLAttributes = {};\n      if (mergedHidden.value) {\n        overflowProps['aria-hidden'] = true;\n      }\n\n      // 使用 disabled  避免结构不一致 导致子组件 rerender\n      return (\n        <ResizeObserver\n          disabled={!responsive}\n          onResize={({ offsetWidth }) => {\n            internalRegisterSize(offsetWidth);\n          }}\n          v-slots={{\n            default: () => (\n              <Component\n                class={classNames(!invalidate && prefixCls)}\n                style={overflowStyle}\n                {...overflowProps}\n                {...restProps}\n                ref={itemNodeRef}\n              >\n                {childNode}\n              </Component>\n            ),\n          }}\n        ></ResizeObserver>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-overflow/Overflow.tsx",
    "content": "import type { CSSProperties, ExtractPropTypes, HTMLAttributes, PropType } from 'vue';\nimport { computed, defineComponent, shallowRef, watch } from 'vue';\nimport ResizeObserver from '../vc-resize-observer';\nimport classNames from '../_util/classNames';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport type { Key, VueNode } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\nimport { OverflowContextProvider } from './context';\nimport Item from './Item';\nimport RawItem from './RawItem';\n\nconst RESPONSIVE = 'responsive' as const;\nconst INVALIDATE = 'invalidate' as const;\n\nfunction defaultRenderRest<ItemType>(omittedItems: ItemType[]) {\n  return `+ ${omittedItems.length} ...`;\n}\n\nconst overflowProps = () => {\n  return {\n    id: String,\n    prefixCls: String,\n    data: Array,\n    itemKey: [String, Number, Function] as PropType<Key | ((item: any) => Key)>,\n    /** Used for `responsive`. It will limit render node to avoid perf issue */\n    itemWidth: { type: Number, default: 10 },\n    renderItem: Function as PropType<(item: any) => VueNode>,\n    /** @private Do not use in your production. Render raw node that need wrap Item by developer self */\n    renderRawItem: Function as PropType<(item: any, index: number) => VueNode>,\n    maxCount: [Number, String] as PropType<number | typeof RESPONSIVE | typeof INVALIDATE>,\n    renderRest: Function as PropType<(items: any[]) => VueNode>,\n    /** @private Do not use in your production. Render raw node that need wrap Item by developer self */\n    renderRawRest: Function as PropType<(items: any[]) => VueNode>,\n    suffix: PropTypes.any,\n    component: String,\n    itemComponent: PropTypes.any,\n    /** @private This API may be refactor since not well design */\n    onVisibleChange: Function as PropType<(visibleCount: number) => void>,\n    /** When set to `full`, ssr will render full items by default and remove at client side */\n    ssr: String as PropType<'full'>,\n    onMousedown: Function as PropType<MouseEventHandler>,\n    role: String,\n  };\n};\ntype InterOverflowProps = Partial<ExtractPropTypes<ReturnType<typeof overflowProps>>>;\nexport type OverflowProps = HTMLAttributes & InterOverflowProps;\nconst Overflow = defineComponent({\n  name: 'Overflow',\n  inheritAttrs: false,\n  props: overflowProps(),\n  emits: ['visibleChange'],\n  setup(props, { attrs, emit, slots }) {\n    const fullySSR = computed(() => props.ssr === 'full');\n\n    const containerWidth = shallowRef<number>(null);\n    const mergedContainerWidth = computed(() => containerWidth.value || 0);\n    const itemWidths = shallowRef<Map<Key, number>>(new Map<Key, number>());\n    const prevRestWidth = shallowRef(0);\n    const restWidth = shallowRef(0);\n    const suffixWidth = shallowRef(0);\n    const suffixFixedStart = shallowRef<number>(null);\n    const displayCount = shallowRef<number>(null);\n\n    const mergedDisplayCount = computed(() => {\n      if (displayCount.value === null && fullySSR.value) {\n        return Number.MAX_SAFE_INTEGER;\n      }\n\n      return displayCount.value || 0;\n    });\n\n    const restReady = shallowRef(false);\n\n    const itemPrefixCls = computed(() => `${props.prefixCls}-item`);\n\n    // Always use the max width to avoid blink\n    const mergedRestWidth = computed(() => Math.max(prevRestWidth.value, restWidth.value));\n\n    // ================================= Data =================================\n    const isResponsive = computed(() => !!(props.data.length && props.maxCount === RESPONSIVE));\n    const invalidate = computed(() => props.maxCount === INVALIDATE);\n\n    /**\n     * When is `responsive`, we will always render rest node to get the real width of it for calculation\n     */\n    const showRest = computed(\n      () =>\n        isResponsive.value ||\n        (typeof props.maxCount === 'number' && props.data.length > props.maxCount),\n    );\n\n    const mergedData = computed(() => {\n      let items = props.data;\n\n      if (isResponsive.value) {\n        if (containerWidth.value === null && fullySSR.value) {\n          items = props.data;\n        } else {\n          items = props.data.slice(\n            0,\n            Math.min(props.data.length, mergedContainerWidth.value / props.itemWidth),\n          );\n        }\n      } else if (typeof props.maxCount === 'number') {\n        items = props.data.slice(0, props.maxCount);\n      }\n\n      return items;\n    });\n\n    const omittedItems = computed(() => {\n      if (isResponsive.value) {\n        return props.data.slice(mergedDisplayCount.value + 1);\n      }\n      return props.data.slice(mergedData.value.length);\n    });\n\n    // ================================= Item =================================\n    const getKey = (item: any, index: number) => {\n      if (typeof props.itemKey === 'function') {\n        return props.itemKey(item);\n      }\n      return (props.itemKey && (item as any)?.[props.itemKey]) ?? index;\n    };\n\n    const mergedRenderItem = computed(() => props.renderItem || ((item: any) => item));\n\n    const updateDisplayCount = (count: number, notReady?: boolean) => {\n      displayCount.value = count;\n      if (!notReady) {\n        restReady.value = count < props.data.length - 1;\n\n        emit('visibleChange', count);\n      }\n    };\n\n    // ================================= Size =================================\n    const onOverflowResize = (_: object, element: HTMLElement) => {\n      containerWidth.value = element.clientWidth;\n    };\n\n    const registerSize = (key: Key, width: number | null) => {\n      const clone = new Map(itemWidths.value);\n\n      if (width === null) {\n        clone.delete(key);\n      } else {\n        clone.set(key, width);\n      }\n      itemWidths.value = clone;\n    };\n\n    const registerOverflowSize = (_: Key, width: number | null) => {\n      prevRestWidth.value = restWidth.value;\n      restWidth.value = width!;\n    };\n\n    const registerSuffixSize = (_: Key, width: number | null) => {\n      suffixWidth.value = width!;\n    };\n\n    // ================================ Effect ================================\n    const getItemWidth = (index: number) => {\n      return itemWidths.value.get(getKey(mergedData.value[index], index));\n    };\n\n    watch(\n      [mergedContainerWidth, itemWidths, restWidth, suffixWidth, () => props.itemKey, mergedData],\n      () => {\n        if (mergedContainerWidth.value && mergedRestWidth.value && mergedData.value) {\n          let totalWidth = suffixWidth.value;\n\n          const len = mergedData.value.length;\n          const lastIndex = len - 1;\n\n          // When data count change to 0, reset this since not loop will reach\n          if (!len) {\n            updateDisplayCount(0);\n            suffixFixedStart.value = null;\n            return;\n          }\n\n          for (let i = 0; i < len; i += 1) {\n            const currentItemWidth = getItemWidth(i);\n\n            // Break since data not ready\n            if (currentItemWidth === undefined) {\n              updateDisplayCount(i - 1, true);\n              break;\n            }\n\n            // Find best match\n            totalWidth += currentItemWidth;\n\n            if (\n              // Only one means `totalWidth` is the final width\n              (lastIndex === 0 && totalWidth <= mergedContainerWidth.value) ||\n              // Last two width will be the final width\n              (i === lastIndex - 1 &&\n                totalWidth + getItemWidth(lastIndex)! <= mergedContainerWidth.value)\n            ) {\n              // Additional check if match the end\n              updateDisplayCount(lastIndex);\n              suffixFixedStart.value = null;\n              break;\n            } else if (totalWidth + mergedRestWidth.value > mergedContainerWidth.value) {\n              // Can not hold all the content to show rest\n              updateDisplayCount(i - 1);\n              suffixFixedStart.value =\n                totalWidth - currentItemWidth - suffixWidth.value + restWidth.value;\n              break;\n            }\n          }\n\n          if (props.suffix && getItemWidth(0) + suffixWidth.value > mergedContainerWidth.value) {\n            suffixFixedStart.value = null;\n          }\n        }\n      },\n    );\n\n    return () => {\n      // ================================ Render ================================\n      const displayRest = restReady.value && !!omittedItems.value.length;\n      const {\n        itemComponent,\n        renderRawItem,\n        renderRawRest,\n        renderRest,\n        prefixCls = 'rc-overflow',\n        suffix,\n        component: Component = 'div' as any,\n        id,\n        onMousedown,\n      } = props;\n      const { class: className, style, ...restAttrs } = attrs;\n      let suffixStyle: CSSProperties = {};\n      if (suffixFixedStart.value !== null && isResponsive.value) {\n        suffixStyle = {\n          position: 'absolute',\n          left: `${suffixFixedStart.value}px`,\n          top: 0,\n        };\n      }\n\n      const itemSharedProps = {\n        prefixCls: itemPrefixCls.value,\n        responsive: isResponsive.value,\n        component: itemComponent,\n        invalidate: invalidate.value,\n      };\n\n      // >>>>> Choice render fun by `renderRawItem`\n      const internalRenderItemNode = renderRawItem\n        ? (item: any, index: number) => {\n            const key = getKey(item, index);\n\n            return (\n              <OverflowContextProvider\n                key={key}\n                value={{\n                  ...itemSharedProps,\n                  order: index,\n                  item,\n                  itemKey: key,\n                  registerSize,\n                  display: index <= mergedDisplayCount.value,\n                }}\n              >\n                {renderRawItem(item, index)}\n              </OverflowContextProvider>\n            );\n          }\n        : (item: any, index: number) => {\n            const key = getKey(item, index);\n\n            return (\n              <Item\n                {...itemSharedProps}\n                order={index}\n                key={key}\n                item={item}\n                renderItem={mergedRenderItem.value}\n                itemKey={key}\n                registerSize={registerSize}\n                display={index <= mergedDisplayCount.value}\n              />\n            );\n          };\n\n      // >>>>> Rest node\n      let restNode = () => null;\n      const restContextProps = {\n        order: displayRest ? mergedDisplayCount.value : Number.MAX_SAFE_INTEGER,\n        className: `${itemPrefixCls.value} ${itemPrefixCls.value}-rest`,\n        registerSize: registerOverflowSize,\n        display: displayRest,\n      };\n\n      if (!renderRawRest) {\n        const mergedRenderRest = renderRest || defaultRenderRest;\n\n        restNode = () => (\n          <Item\n            {...itemSharedProps}\n            // When not show, order should be the last\n            {...restContextProps}\n            v-slots={{\n              default: () =>\n                typeof mergedRenderRest === 'function'\n                  ? mergedRenderRest(omittedItems.value)\n                  : mergedRenderRest,\n            }}\n          ></Item>\n        );\n      } else if (renderRawRest) {\n        restNode = () => (\n          <OverflowContextProvider\n            value={{\n              ...itemSharedProps,\n              ...restContextProps,\n            }}\n          >\n            {renderRawRest(omittedItems.value)}\n          </OverflowContextProvider>\n        );\n      }\n\n      const overflowNode = () => (\n        <Component\n          id={id}\n          class={classNames(!invalidate.value && prefixCls, className)}\n          style={style}\n          onMousedown={onMousedown}\n          role={props.role}\n          {...restAttrs}\n        >\n          {mergedData.value.map(internalRenderItemNode)}\n\n          {/* Rest Count Item */}\n          {showRest.value ? restNode() : null}\n\n          {/* Suffix Node */}\n          {suffix && (\n            <Item\n              {...itemSharedProps}\n              order={mergedDisplayCount.value}\n              class={`${itemPrefixCls.value}-suffix`}\n              registerSize={registerSuffixSize}\n              display\n              style={suffixStyle}\n              v-slots={{ default: () => suffix }}\n            ></Item>\n          )}\n          {slots.default?.()}\n        </Component>\n      );\n      // 使用 disabled  避免结构不一致 导致子组件 rerender\n      return (\n        <ResizeObserver\n          disabled={!isResponsive.value}\n          onResize={onOverflowResize}\n          v-slots={{ default: overflowNode }}\n        ></ResizeObserver>\n      );\n    };\n  },\n});\n\nOverflow.Item = RawItem;\nOverflow.RESPONSIVE = RESPONSIVE;\nOverflow.INVALIDATE = INVALIDATE;\n\nexport default Overflow as typeof Overflow & {\n  readonly Item: typeof RawItem;\n  readonly RESPONSIVE: typeof RESPONSIVE;\n  readonly INVALIDATE: typeof INVALIDATE;\n};\n"
  },
  {
    "path": "components/vc-overflow/RawItem.tsx",
    "content": "import { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { OverflowContextProvider, useInjectOverflowContext } from './context';\nimport Item from './Item';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'RawItem',\n  inheritAttrs: false,\n  props: {\n    component: PropTypes.any,\n    title: PropTypes.any,\n    id: String,\n    onMouseenter: { type: Function },\n    onMouseleave: { type: Function },\n    onClick: { type: Function },\n    onKeydown: { type: Function },\n    onFocus: { type: Function },\n    role: String,\n    tabindex: Number,\n  },\n  setup(props, { slots, attrs }) {\n    const context = useInjectOverflowContext();\n\n    return () => {\n      // Render directly when context not provided\n      if (!context.value) {\n        const { component: Component = 'div', ...restProps } = props;\n        return (\n          <Component {...restProps} {...attrs}>\n            {slots.default?.()}\n          </Component>\n        );\n      }\n\n      const { className: contextClassName, ...restContext } = context.value;\n      const { class: className, ...restProps } = attrs;\n      // Do not pass context to sub item to avoid multiple measure\n      return (\n        <OverflowContextProvider value={null}>\n          <Item\n            class={classNames(contextClassName, className)}\n            {...restContext}\n            {...restProps}\n            {...props}\n            v-slots={slots}\n          ></Item>\n        </OverflowContextProvider>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-overflow/context.ts",
    "content": "import type { ComputedRef, InjectionKey, PropType } from 'vue';\nimport { computed, defineComponent, inject, provide } from 'vue';\nimport type { Key } from '../_util/type';\n\nexport interface OverflowContextProviderValueType {\n  prefixCls: string;\n  responsive: boolean;\n  order: number;\n  registerSize: (key: Key, width: number | null) => void;\n  display: boolean;\n\n  invalidate: boolean;\n\n  // Item Usage\n  item?: any;\n  itemKey?: Key;\n\n  // Rest Usage\n  className?: string;\n}\n\nconst OverflowContextProviderKey: InjectionKey<\n  ComputedRef<OverflowContextProviderValueType | null>\n> = Symbol('OverflowContextProviderKey');\n\nexport const OverflowContextProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OverflowContextProvider',\n  inheritAttrs: false,\n  props: {\n    value: { type: Object as PropType<OverflowContextProviderValueType> },\n  },\n  setup(props, { slots }) {\n    provide(\n      OverflowContextProviderKey,\n      computed(() => props.value),\n    );\n    return () => slots.default?.();\n  },\n});\n\nexport const useInjectOverflowContext =\n  (): ComputedRef<OverflowContextProviderValueType | null> => {\n    return inject(\n      OverflowContextProviderKey,\n      computed(() => null),\n    );\n  };\n"
  },
  {
    "path": "components/vc-overflow/index.ts",
    "content": "import type { OverflowProps } from './Overflow';\nimport Overflow from './Overflow';\n\nexport type { OverflowProps };\n\nexport default Overflow;\n"
  },
  {
    "path": "components/vc-pagination/KeyCode.ts",
    "content": "export default {\n  ZERO: 48,\n  NINE: 57,\n\n  NUMPAD_ZERO: 96,\n  NUMPAD_NINE: 105,\n\n  BACKSPACE: 8,\n  DELETE: 46,\n  ENTER: 13,\n\n  ARROW_UP: 38,\n  ARROW_DOWN: 40,\n};\n"
  },
  {
    "path": "components/vc-pagination/Options.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport KEYCODE from './KeyCode';\nimport { computed, defineComponent, ref } from 'vue';\nimport type { EventHandler } from '../_util/EventInterface';\nimport BaseInput from '../_util/BaseInput';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  props: {\n    disabled: { type: Boolean, default: undefined },\n    changeSize: Function,\n    quickGo: Function,\n    selectComponentClass: PropTypes.any,\n    current: Number,\n    pageSizeOptions: PropTypes.array.def(['10', '20', '50', '100']),\n    pageSize: Number,\n    buildOptionText: Function,\n    locale: PropTypes.object,\n    rootPrefixCls: String,\n    selectPrefixCls: String,\n    goButton: PropTypes.any,\n  },\n  setup(props) {\n    const goInputText = ref('');\n    const validValue = computed(() => {\n      return !goInputText.value || isNaN(goInputText.value as any)\n        ? undefined\n        : Number(goInputText.value);\n    });\n\n    const defaultBuildOptionText = opt => {\n      return `${opt.value} ${props.locale.items_per_page}`;\n    };\n    const handleChange: EventHandler = e => {\n      const { value } = e.target;\n      if (goInputText.value === value) return;\n      goInputText.value = value;\n    };\n    const handleBlur: EventHandler = e => {\n      const { goButton, quickGo, rootPrefixCls } = props;\n\n      if (goButton || goInputText.value === '') {\n        return;\n      }\n      if (\n        e.relatedTarget &&\n        (e.relatedTarget.className.indexOf(`${rootPrefixCls}-item-link`) >= 0 ||\n          e.relatedTarget.className.indexOf(`${rootPrefixCls}-item`) >= 0)\n      ) {\n        goInputText.value = '';\n        return;\n      } else {\n        quickGo(validValue.value);\n        goInputText.value = '';\n      }\n    };\n    const go: EventHandler = e => {\n      if (goInputText.value === '') {\n        return;\n      }\n      if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n        // https://github.com/vueComponent/ant-design-vue/issues/1316\n        props.quickGo(validValue.value);\n\n        goInputText.value = '';\n      }\n    };\n\n    const pageSizeOptions = computed(() => {\n      const { pageSize, pageSizeOptions } = props;\n      if (pageSizeOptions.some(option => option.toString() === pageSize.toString())) {\n        return pageSizeOptions;\n      }\n      return pageSizeOptions.concat([pageSize.toString()]).sort((a, b) => {\n        // eslint-disable-next-line no-restricted-globals\n        const numberA = isNaN(Number(a)) ? 0 : Number(a);\n        // eslint-disable-next-line no-restricted-globals\n        const numberB = isNaN(Number(b)) ? 0 : Number(b);\n        return numberA - numberB;\n      });\n    });\n\n    return () => {\n      const {\n        rootPrefixCls,\n        locale,\n        changeSize,\n        quickGo,\n        goButton,\n        selectComponentClass: Select,\n        selectPrefixCls,\n        pageSize,\n        disabled,\n      } = props;\n      const prefixCls = `${rootPrefixCls}-options`;\n      let changeSelect = null;\n      let goInput = null;\n      let gotoButton = null;\n\n      if (!changeSize && !quickGo) {\n        return null;\n      }\n\n      if (changeSize && Select) {\n        const buildOptionText = props.buildOptionText || defaultBuildOptionText;\n        const options = pageSizeOptions.value.map((opt, i) => (\n          <Select.Option key={i} value={opt}>\n            {buildOptionText({ value: opt })}\n          </Select.Option>\n        ));\n\n        changeSelect = (\n          <Select\n            disabled={disabled}\n            prefixCls={selectPrefixCls}\n            showSearch={false}\n            class={`${prefixCls}-size-changer`}\n            optionLabelProp=\"children\"\n            value={(pageSize || pageSizeOptions.value[0]).toString()}\n            onChange={value => changeSize(Number(value))}\n            getPopupContainer={triggerNode => triggerNode.parentNode}\n          >\n            {options}\n          </Select>\n        );\n      }\n\n      if (quickGo) {\n        if (goButton) {\n          gotoButton =\n            typeof goButton === 'boolean' ? (\n              <button\n                type=\"button\"\n                onClick={go}\n                onKeyup={go}\n                disabled={disabled}\n                class={`${prefixCls}-quick-jumper-button`}\n              >\n                {locale.jump_to_confirm}\n              </button>\n            ) : (\n              <span onClick={go} onKeyup={go}>\n                {goButton}\n              </span>\n            );\n        }\n        goInput = (\n          <div class={`${prefixCls}-quick-jumper`}>\n            {locale.jump_to}\n            <BaseInput\n              disabled={disabled}\n              type=\"text\"\n              value={goInputText.value}\n              onInput={handleChange}\n              onChange={handleChange}\n              onKeyup={go}\n              onBlur={handleBlur}\n            ></BaseInput>\n            {locale.page}\n            {gotoButton}\n          </div>\n        );\n      }\n\n      return (\n        <li class={`${prefixCls}`}>\n          {changeSelect}\n          {goInput}\n        </li>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-pagination/Pager.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Pager',\n  inheritAttrs: false,\n  props: {\n    rootPrefixCls: String,\n    page: Number,\n    active: { type: Boolean, default: undefined },\n    last: { type: Boolean, default: undefined },\n    locale: PropTypes.object,\n    showTitle: { type: Boolean, default: undefined },\n    itemRender: {\n      type: Function,\n      default: () => {},\n    },\n    onClick: {\n      type: Function,\n    },\n    onKeypress: {\n      type: Function,\n    },\n  },\n  eimt: ['click', 'keypress'],\n  setup(props, { emit, attrs }) {\n    const handleClick = () => {\n      emit('click', props.page);\n    };\n    const handleKeyPress = (event: KeyboardEvent) => {\n      emit('keypress', event, handleClick, props.page);\n    };\n    return () => {\n      const { showTitle, page, itemRender } = props;\n      const { class: _cls, style } = attrs;\n      const prefixCls = `${props.rootPrefixCls}-item`;\n      const cls = classNames(\n        prefixCls,\n        `${prefixCls}-${props.page}`,\n        {\n          [`${prefixCls}-active`]: props.active,\n          [`${prefixCls}-disabled`]: !props.page,\n        },\n        _cls,\n      );\n\n      return (\n        <li\n          onClick={handleClick}\n          onKeypress={handleKeyPress}\n          title={showTitle ? String(page) : null}\n          tabindex=\"0\"\n          class={cls}\n          style={style as CSSProperties}\n        >\n          {itemRender({\n            page,\n            type: 'page',\n            originalElement: <a rel=\"nofollow\">{page}</a>,\n          })}\n        </li>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-pagination/Pagination.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { hasProp, getComponent, splitAttrs, isValidElement } from '../_util/props-util';\nimport Pager from './Pager';\nimport Options from './Options';\nimport LOCALE from './locale/zh_CN';\nimport KEYCODE from './KeyCode';\nimport classNames from '../_util/classNames';\nimport { defineComponent } from 'vue';\nimport { cloneElement } from '../_util/vnode';\nimport firstNotUndefined from '../_util/firstNotUndefined';\nimport BaseInput from '../_util/BaseInput';\n\n// 是否是正整数\nfunction isInteger(value) {\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction defaultItemRender({ originalElement }) {\n  return originalElement;\n}\n\nfunction calculatePage(p, state, props) {\n  const pageSize = typeof p === 'undefined' ? state.statePageSize : p;\n  return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Pagination',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: {\n    disabled: { type: Boolean, default: undefined },\n    prefixCls: PropTypes.string.def('rc-pagination'),\n    selectPrefixCls: PropTypes.string.def('rc-select'),\n    current: Number,\n    defaultCurrent: PropTypes.number.def(1),\n    total: PropTypes.number.def(0),\n    pageSize: Number,\n    defaultPageSize: PropTypes.number.def(10),\n    hideOnSinglePage: { type: Boolean, default: false },\n    showSizeChanger: { type: Boolean, default: undefined },\n    showLessItems: { type: Boolean, default: false },\n    // showSizeChange: PropTypes.func.def(noop),\n    selectComponentClass: PropTypes.any,\n    showPrevNextJumpers: { type: Boolean, default: true },\n    showQuickJumper: PropTypes.oneOfType([PropTypes.looseBool, PropTypes.object]).def(false),\n    showTitle: { type: Boolean, default: true },\n    pageSizeOptions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n    buildOptionText: Function,\n    showTotal: Function,\n    simple: { type: Boolean, default: undefined },\n    locale: PropTypes.object.def(LOCALE),\n    itemRender: PropTypes.func.def(defaultItemRender),\n    prevIcon: PropTypes.any,\n    nextIcon: PropTypes.any,\n    jumpPrevIcon: PropTypes.any,\n    jumpNextIcon: PropTypes.any,\n    totalBoundaryShowSizeChanger: PropTypes.number.def(50),\n  },\n  data() {\n    const props = this.$props;\n    let current = firstNotUndefined([this.current, this.defaultCurrent]);\n\n    const pageSize = firstNotUndefined([this.pageSize, this.defaultPageSize]);\n\n    current = Math.min(current, calculatePage(pageSize, undefined, props));\n\n    return {\n      stateCurrent: current,\n      stateCurrentInputValue: current,\n      statePageSize: pageSize,\n    };\n  },\n  watch: {\n    current(val) {\n      this.setState({\n        stateCurrent: val,\n        stateCurrentInputValue: val,\n      });\n    },\n    pageSize(val) {\n      const newState: any = {};\n      let current = this.stateCurrent;\n      const newCurrent = calculatePage(val, this.$data, this.$props);\n      current = current > newCurrent ? newCurrent : current;\n      if (!hasProp(this, 'current')) {\n        newState.stateCurrent = current;\n        newState.stateCurrentInputValue = current;\n      }\n      newState.statePageSize = val;\n      this.setState(newState);\n    },\n    stateCurrent(_val, oldValue) {\n      // When current page change, fix focused style of prev item\n      // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n      this.$nextTick(() => {\n        if (this.$refs.paginationNode) {\n          const lastCurrentNode = this.$refs.paginationNode.querySelector(\n            `.${this.prefixCls}-item-${oldValue}`,\n          );\n          if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n            lastCurrentNode.blur();\n          }\n        }\n      });\n    },\n    total() {\n      const newState: any = {};\n      const newCurrent = calculatePage(this.pageSize, this.$data, this.$props);\n      if (hasProp(this, 'current')) {\n        const current = Math.min(this.current, newCurrent);\n        newState.stateCurrent = current;\n        newState.stateCurrentInputValue = current;\n      } else {\n        let current = this.stateCurrent;\n        if (current === 0 && newCurrent > 0) {\n          current = 1;\n        } else {\n          current = Math.min(this.stateCurrent, newCurrent);\n        }\n        newState.stateCurrent = current;\n      }\n      this.setState(newState);\n    },\n  },\n  methods: {\n    getJumpPrevPage() {\n      return Math.max(1, this.stateCurrent - (this.showLessItems ? 3 : 5));\n    },\n    getJumpNextPage() {\n      return Math.min(\n        calculatePage(undefined, this.$data, this.$props),\n        this.stateCurrent + (this.showLessItems ? 3 : 5),\n      );\n    },\n    getItemIcon(icon, label) {\n      const { prefixCls } = this.$props;\n      const iconNode = getComponent(this, icon, this.$props) || (\n        <button type=\"button\" aria-label={label} class={`${prefixCls}-item-link`} />\n      );\n      return iconNode;\n    },\n    getValidValue(e) {\n      const inputValue = e.target.value;\n      const allPages = calculatePage(undefined, this.$data, this.$props);\n      const { stateCurrentInputValue } = this.$data;\n      let value;\n      if (inputValue === '') {\n        value = inputValue;\n      } else if (isNaN(Number(inputValue))) {\n        value = stateCurrentInputValue;\n      } else if (inputValue >= allPages) {\n        value = allPages;\n      } else {\n        value = Number(inputValue);\n      }\n      return value;\n    },\n    isValid(page) {\n      return isInteger(page) && page !== this.stateCurrent;\n    },\n    shouldDisplayQuickJumper() {\n      const { showQuickJumper, pageSize, total } = this.$props;\n      if (total <= pageSize) {\n        return false;\n      }\n      return showQuickJumper;\n    },\n    // calculatePage (p) {\n    //   let pageSize = p\n    //   if (typeof pageSize === 'undefined') {\n    //     pageSize = this.statePageSize\n    //   }\n    //   return Math.floor((this.total - 1) / pageSize) + 1\n    // },\n    handleKeyDown(event) {\n      if (event.keyCode === KEYCODE.ARROW_UP || event.keyCode === KEYCODE.ARROW_DOWN) {\n        event.preventDefault();\n      }\n    },\n    handleKeyUp(e) {\n      const value = this.getValidValue(e);\n      const stateCurrentInputValue = this.stateCurrentInputValue;\n\n      if (value !== stateCurrentInputValue) {\n        this.setState({\n          stateCurrentInputValue: value,\n        });\n      }\n\n      if (e.keyCode === KEYCODE.ENTER) {\n        this.handleChange(value);\n      } else if (e.keyCode === KEYCODE.ARROW_UP) {\n        this.handleChange(value - 1);\n      } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n        this.handleChange(value + 1);\n      }\n    },\n    changePageSize(size) {\n      let current = this.stateCurrent;\n      const preCurrent = current;\n      const newCurrent = calculatePage(size, this.$data, this.$props);\n      current = current > newCurrent ? newCurrent : current;\n      // fix the issue:\n      // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n      if (newCurrent === 0) {\n        current = this.stateCurrent;\n      }\n      if (typeof size === 'number') {\n        if (!hasProp(this, 'pageSize')) {\n          this.setState({\n            statePageSize: size,\n          });\n        }\n        if (!hasProp(this, 'current')) {\n          this.setState({\n            stateCurrent: current,\n            stateCurrentInputValue: current,\n          });\n        }\n      }\n      this.__emit('update:pageSize', size);\n      if (current !== preCurrent) {\n        this.__emit('update:current', current);\n      }\n      this.__emit('showSizeChange', current, size);\n      this.__emit('change', current, size);\n    },\n    handleChange(p) {\n      const { disabled } = this.$props;\n      let page = p;\n      if (this.isValid(page) && !disabled) {\n        const currentPage = calculatePage(undefined, this.$data, this.$props);\n        if (page > currentPage) {\n          page = currentPage;\n        } else if (page < 1) {\n          page = 1;\n        }\n        if (!hasProp(this, 'current')) {\n          this.setState({\n            stateCurrent: page,\n            stateCurrentInputValue: page,\n          });\n        }\n        // this.__emit('input', page)\n        this.__emit('update:current', page);\n        this.__emit('change', page, this.statePageSize);\n        return page;\n      }\n      return this.stateCurrent;\n    },\n    prev() {\n      if (this.hasPrev()) {\n        this.handleChange(this.stateCurrent - 1);\n      }\n    },\n    next() {\n      if (this.hasNext()) {\n        this.handleChange(this.stateCurrent + 1);\n      }\n    },\n    jumpPrev() {\n      this.handleChange(this.getJumpPrevPage());\n    },\n    jumpNext() {\n      this.handleChange(this.getJumpNextPage());\n    },\n    hasPrev() {\n      return this.stateCurrent > 1;\n    },\n    hasNext() {\n      return this.stateCurrent < calculatePage(undefined, this.$data, this.$props);\n    },\n    getShowSizeChanger() {\n      const { showSizeChanger, total, totalBoundaryShowSizeChanger } = this.$props;\n      if (typeof showSizeChanger !== 'undefined') {\n        return showSizeChanger;\n      }\n      return total > totalBoundaryShowSizeChanger;\n    },\n    runIfEnter(event, callback, ...restParams) {\n      if (event.key === 'Enter' || event.charCode === 13) {\n        event.preventDefault();\n        callback(...restParams);\n      }\n    },\n    runIfEnterPrev(event) {\n      this.runIfEnter(event, this.prev);\n    },\n    runIfEnterNext(event) {\n      this.runIfEnter(event, this.next);\n    },\n    runIfEnterJumpPrev(event) {\n      this.runIfEnter(event, this.jumpPrev);\n    },\n    runIfEnterJumpNext(event) {\n      this.runIfEnter(event, this.jumpNext);\n    },\n    handleGoTO(event) {\n      if (event.keyCode === KEYCODE.ENTER || event.type === 'click') {\n        this.handleChange(this.stateCurrentInputValue);\n      }\n    },\n\n    renderPrev(prevPage) {\n      const { itemRender } = this.$props;\n\n      const prevButton = itemRender({\n        page: prevPage,\n        type: 'prev',\n        originalElement: this.getItemIcon('prevIcon', 'prev page'),\n      });\n      const disabled = !this.hasPrev();\n      return isValidElement(prevButton)\n        ? cloneElement(prevButton, disabled ? { disabled } : {})\n        : prevButton;\n    },\n\n    renderNext(nextPage) {\n      const { itemRender } = this.$props;\n      const nextButton = itemRender({\n        page: nextPage,\n        type: 'next',\n        originalElement: this.getItemIcon('nextIcon', 'next page'),\n      });\n      const disabled = !this.hasNext();\n      return isValidElement(nextButton)\n        ? cloneElement(nextButton, disabled ? { disabled } : {})\n        : nextButton;\n    },\n  },\n  render() {\n    const {\n      prefixCls,\n      disabled,\n      hideOnSinglePage,\n      total,\n      locale,\n      showQuickJumper,\n      showLessItems,\n      showTitle,\n      showTotal,\n      simple,\n      itemRender,\n      showPrevNextJumpers,\n      jumpPrevIcon,\n      jumpNextIcon,\n      selectComponentClass,\n      selectPrefixCls,\n      pageSizeOptions,\n    } = this.$props;\n    const { stateCurrent, statePageSize } = this;\n    const { class: className, ...restAttrs } = splitAttrs(this.$attrs).extraAttrs;\n    // When hideOnSinglePage is true and there is only 1 page, hide the pager\n    if (hideOnSinglePage === true && this.total <= statePageSize) {\n      return null;\n    }\n\n    const allPages = calculatePage(undefined, this.$data, this.$props);\n    const pagerList = [];\n    let jumpPrev = null;\n    let jumpNext = null;\n    let firstPager = null;\n    let lastPager = null;\n    let gotoButton = null;\n    const goButton = showQuickJumper && showQuickJumper.goButton;\n    const pageBufferSize = showLessItems ? 1 : 2;\n\n    const prevPage = stateCurrent - 1 > 0 ? stateCurrent - 1 : 0;\n    const nextPage = stateCurrent + 1 < allPages ? stateCurrent + 1 : allPages;\n    const hasPrev = this.hasPrev();\n    const hasNext = this.hasNext();\n    if (simple) {\n      if (goButton) {\n        if (typeof goButton === 'boolean') {\n          gotoButton = (\n            <button type=\"button\" onClick={this.handleGoTO} onKeyup={this.handleGoTO}>\n              {locale.jump_to_confirm}\n            </button>\n          );\n        } else {\n          gotoButton = (\n            <span onClick={this.handleGoTO} onKeyup={this.handleGoTO}>\n              {goButton}\n            </span>\n          );\n        }\n        gotoButton = (\n          <li\n            title={showTitle ? `${locale.jump_to}${stateCurrent}/${allPages}` : null}\n            class={`${prefixCls}-simple-pager`}\n          >\n            {gotoButton}\n          </li>\n        );\n      }\n\n      return (\n        <ul\n          class={classNames(\n            `${prefixCls} ${prefixCls}-simple`,\n            { [`${prefixCls}-disabled`]: disabled },\n            className,\n          )}\n          {...restAttrs}\n        >\n          <li\n            title={showTitle ? locale.prev_page : null}\n            onClick={this.prev}\n            tabindex={hasPrev ? 0 : null}\n            onKeypress={this.runIfEnterPrev}\n            class={classNames(`${prefixCls}-prev`, {\n              [`${prefixCls}-disabled`]: !hasPrev,\n            })}\n            aria-disabled={!hasPrev}\n          >\n            {this.renderPrev(prevPage)}\n          </li>\n          <li\n            title={showTitle ? `${stateCurrent}/${allPages}` : null}\n            class={`${prefixCls}-simple-pager`}\n          >\n            <BaseInput\n              type=\"text\"\n              value={this.stateCurrentInputValue}\n              disabled={disabled}\n              onKeydown={this.handleKeyDown}\n              onKeyup={this.handleKeyUp}\n              onInput={this.handleKeyUp}\n              onChange={this.handleKeyUp}\n              size=\"3\"\n            ></BaseInput>\n            <span class={`${prefixCls}-slash`}>／</span>\n            {allPages}\n          </li>\n          <li\n            title={showTitle ? locale.next_page : null}\n            onClick={this.next}\n            tabindex={hasNext ? 0 : null}\n            onKeypress={this.runIfEnterNext}\n            class={classNames(`${prefixCls}-next`, {\n              [`${prefixCls}-disabled`]: !hasNext,\n            })}\n            aria-disabled={!hasNext}\n          >\n            {this.renderNext(nextPage)}\n          </li>\n          {gotoButton}\n        </ul>\n      );\n    }\n    if (allPages <= 3 + pageBufferSize * 2) {\n      const pagerProps = {\n        locale,\n        rootPrefixCls: prefixCls,\n        showTitle,\n        itemRender,\n        onClick: this.handleChange,\n        onKeypress: this.runIfEnter,\n      };\n      if (!allPages) {\n        pagerList.push(\n          <Pager {...pagerProps} key=\"noPager\" page={1} class={`${prefixCls}-item-disabled`} />,\n        );\n      }\n      for (let i = 1; i <= allPages; i += 1) {\n        const active = stateCurrent === i;\n        pagerList.push(<Pager {...pagerProps} key={i} page={i} active={active} />);\n      }\n    } else {\n      const prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n      const nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n      if (showPrevNextJumpers) {\n        jumpPrev = (\n          <li\n            title={this.showTitle ? prevItemTitle : null}\n            key=\"prev\"\n            onClick={this.jumpPrev}\n            tabindex=\"0\"\n            onKeypress={this.runIfEnterJumpPrev}\n            class={classNames(`${prefixCls}-jump-prev`, {\n              [`${prefixCls}-jump-prev-custom-icon`]: !!jumpPrevIcon,\n            })}\n          >\n            {itemRender({\n              page: this.getJumpPrevPage(),\n              type: 'jump-prev',\n              originalElement: this.getItemIcon('jumpPrevIcon', 'prev page'),\n            })}\n          </li>\n        );\n\n        jumpNext = (\n          <li\n            title={this.showTitle ? nextItemTitle : null}\n            key=\"next\"\n            tabindex=\"0\"\n            onClick={this.jumpNext}\n            onKeypress={this.runIfEnterJumpNext}\n            class={classNames(`${prefixCls}-jump-next`, {\n              [`${prefixCls}-jump-next-custom-icon`]: !!jumpNextIcon,\n            })}\n          >\n            {itemRender({\n              page: this.getJumpNextPage(),\n              type: 'jump-next',\n              originalElement: this.getItemIcon('jumpNextIcon', 'next page'),\n            })}\n          </li>\n        );\n      }\n\n      lastPager = (\n        <Pager\n          locale={locale}\n          last\n          rootPrefixCls={prefixCls}\n          onClick={this.handleChange}\n          onKeypress={this.runIfEnter}\n          key={allPages}\n          page={allPages}\n          active={false}\n          showTitle={showTitle}\n          itemRender={itemRender}\n        />\n      );\n      firstPager = (\n        <Pager\n          locale={locale}\n          rootPrefixCls={prefixCls}\n          onClick={this.handleChange}\n          onKeypress={this.runIfEnter}\n          key={1}\n          page={1}\n          active={false}\n          showTitle={showTitle}\n          itemRender={itemRender}\n        />\n      );\n\n      let left = Math.max(1, stateCurrent - pageBufferSize);\n      let right = Math.min(stateCurrent + pageBufferSize, allPages);\n\n      if (stateCurrent - 1 <= pageBufferSize) {\n        right = 1 + pageBufferSize * 2;\n      }\n\n      if (allPages - stateCurrent <= pageBufferSize) {\n        left = allPages - pageBufferSize * 2;\n      }\n\n      for (let i = left; i <= right; i += 1) {\n        const active = stateCurrent === i;\n        pagerList.push(\n          <Pager\n            locale={locale}\n            rootPrefixCls={prefixCls}\n            onClick={this.handleChange}\n            onKeypress={this.runIfEnter}\n            key={i}\n            page={i}\n            active={active}\n            showTitle={showTitle}\n            itemRender={itemRender}\n          />,\n        );\n      }\n\n      if (stateCurrent - 1 >= pageBufferSize * 2 && stateCurrent !== 1 + 2) {\n        pagerList[0] = (\n          <Pager\n            locale={locale}\n            rootPrefixCls={prefixCls}\n            onClick={this.handleChange}\n            onKeypress={this.runIfEnter}\n            key={left}\n            page={left}\n            class={`${prefixCls}-item-after-jump-prev`}\n            active={false}\n            showTitle={this.showTitle}\n            itemRender={itemRender}\n          />\n        );\n        pagerList.unshift(jumpPrev);\n      }\n      if (allPages - stateCurrent >= pageBufferSize * 2 && stateCurrent !== allPages - 2) {\n        pagerList[pagerList.length - 1] = (\n          <Pager\n            locale={locale}\n            rootPrefixCls={prefixCls}\n            onClick={this.handleChange}\n            onKeypress={this.runIfEnter}\n            key={right}\n            page={right}\n            class={`${prefixCls}-item-before-jump-next`}\n            active={false}\n            showTitle={this.showTitle}\n            itemRender={itemRender}\n          />\n        );\n        pagerList.push(jumpNext);\n      }\n\n      if (left !== 1) {\n        pagerList.unshift(firstPager);\n      }\n      if (right !== allPages) {\n        pagerList.push(lastPager);\n      }\n    }\n\n    let totalText = null;\n\n    if (showTotal) {\n      totalText = (\n        <li class={`${prefixCls}-total-text`}>\n          {showTotal(total, [\n            total === 0 ? 0 : (stateCurrent - 1) * statePageSize + 1,\n            stateCurrent * statePageSize > total ? total : stateCurrent * statePageSize,\n          ])}\n        </li>\n      );\n    }\n    const prevDisabled = !hasPrev || !allPages;\n    const nextDisabled = !hasNext || !allPages;\n    const buildOptionText = this.buildOptionText || this.$slots.buildOptionText;\n    return (\n      <ul\n        unselectable=\"on\"\n        ref=\"paginationNode\"\n        {...restAttrs}\n        class={classNames(\n          { [`${prefixCls}`]: true, [`${prefixCls}-disabled`]: disabled },\n          className,\n        )}\n      >\n        {totalText}\n        <li\n          title={showTitle ? locale.prev_page : null}\n          onClick={this.prev}\n          tabindex={prevDisabled ? null : 0}\n          onKeypress={this.runIfEnterPrev}\n          class={classNames(`${prefixCls}-prev`, {\n            [`${prefixCls}-disabled`]: prevDisabled,\n          })}\n          aria-disabled={prevDisabled}\n        >\n          {this.renderPrev(prevPage)}\n        </li>\n        {pagerList}\n        <li\n          title={showTitle ? locale.next_page : null}\n          onClick={this.next}\n          tabindex={nextDisabled ? null : 0}\n          onKeypress={this.runIfEnterNext}\n          class={classNames(`${prefixCls}-next`, {\n            [`${prefixCls}-disabled`]: nextDisabled,\n          })}\n          aria-disabled={nextDisabled}\n        >\n          {this.renderNext(nextPage)}\n        </li>\n        <Options\n          disabled={disabled}\n          locale={locale}\n          rootPrefixCls={prefixCls}\n          selectComponentClass={selectComponentClass}\n          selectPrefixCls={selectPrefixCls}\n          changeSize={this.getShowSizeChanger() ? this.changePageSize : null}\n          current={stateCurrent}\n          pageSize={statePageSize}\n          pageSizeOptions={pageSizeOptions}\n          buildOptionText={buildOptionText || null}\n          quickGo={this.shouldDisplayQuickJumper() ? this.handleChange : null}\n          goButton={goButton}\n        />\n      </ul>\n    );\n  },\n});\n"
  },
  {
    "path": "components/vc-pagination/index.ts",
    "content": "// based on rc-pagination 3.1.9\nexport { default } from './Pagination';\n"
  },
  {
    "path": "components/vc-pagination/locale/ar_EG.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ الصفحة',\n  jump_to: 'الذهاب إلى',\n  jump_to_confirm: 'تأكيد',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'الصفحة السابقة',\n  next_page: 'الصفحة التالية',\n  prev_5: 'خمس صفحات سابقة',\n  next_5: 'خمس صفحات تالية',\n  prev_3: 'ثلاث صفحات سابقة',\n  next_3: 'ثلاث صفحات تالية',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/az_AZ.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ səhifə',\n  jump_to: 'Get',\n  jump_to_confirm: 'təsdiqlə',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Əvvəlki Səhifə',\n  next_page: 'Növbəti Səhifə',\n  prev_5: 'Əvvəlki 5 Səhifə',\n  next_5: 'Növbəti 5 Səhifə',\n  prev_3: 'Əvvəlki 3 Səhifə',\n  next_3: 'Növbəti 3 Səhifə',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/bg_BG.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ страница',\n  jump_to: 'Към',\n  jump_to_confirm: 'потвърждавам',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Предишна страница',\n  next_page: 'Следваща страница',\n  prev_5: 'Предишни 5 страници',\n  next_5: 'Следващи 5 страници',\n  prev_3: 'Предишни 3 страници',\n  next_3: 'Следващи 3 страници',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/bn_BD.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ পৃষ্ঠা',\n  jump_to: 'যাও',\n  jump_to_confirm: 'নিশ্চিত',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'আগের পৃষ্ঠা',\n  next_page: 'পরের পৃষ্ঠা',\n  prev_5: 'পূর্ববর্তী ৫ পৃষ্ঠা',\n  next_5: 'পরবর্তী ৫ পৃষ্ঠা',\n  prev_3: 'পূর্ববর্তী ৩ পৃষ্ঠা',\n  next_3: 'পরবর্তী ৩ পৃষ্ঠা',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/by_BY.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/старонка',\n  jump_to: 'Перайсці',\n  jump_to_confirm: 'Пацвердзіць',\n  page: '',\n  // Pagination.jsx\n  prev_page: 'Назад',\n  next_page: 'Наперад',\n  prev_5: 'Папярэднія 5',\n  next_5: 'Наступныя 5',\n  prev_3: 'Папярэднія 3',\n  next_3: 'Наступныя 3',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ca_ES.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ pàgina',\n  jump_to: 'Anar a',\n  jump_to_confirm: 'Confirma',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Pàgina prèvia',\n  next_page: 'Pàgina següent',\n  prev_5: '5 pàgines prèvies',\n  next_5: '5 pàgines següents',\n  prev_3: '3 pàgines prèvies',\n  next_3: '3 pàgines següents',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ckb_IQ.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ لاپەڕە',\n  jump_to: 'بڕۆ بۆ',\n  jump_to_confirm: 'دڵنیاکردنەوە',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'لاپەڕەی پێشوو',\n  next_page: 'لاپەڕەی دواتر',\n  prev_5: '5 لاپەڕەی پێشوو',\n  next_5: '5 لاپەڕەی دواتر',\n  prev_3: '3 لاپەڕەی پێشوو',\n  next_3: '3 لاپەڕەی دواتر',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/cs_CZ.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ strana',\n  jump_to: 'Přejít',\n  jump_to_confirm: 'potvrdit',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Předchozí strana',\n  next_page: 'Následující strana',\n  prev_5: 'Předchozích 5 stran',\n  next_5: 'Následujících 5 stran',\n  prev_3: 'Předchozí 3 strany',\n  next_3: 'Následující 3 strany',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/da_DK.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ side',\n  jump_to: 'Gå til',\n  jump_to_confirm: 'bekræft',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Forrige Side',\n  next_page: 'Næste Side',\n  prev_5: 'Forrige 5 Sider',\n  next_5: 'Næste 5 Sider',\n  prev_3: 'Forrige 3 Sider',\n  next_3: 'Næste 3 Sider',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/de_DE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ Seite',\n  jump_to: 'Gehe zu',\n  jump_to_confirm: 'bestätigen',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Vorherige Seite',\n  next_page: 'Nächste Seite',\n  prev_5: '5 Seiten zurück',\n  next_5: '5 Seiten vor',\n  prev_3: '3 Seiten zurück',\n  next_3: '3 Seiten vor',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/el_GR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ σελίδα',\n  jump_to: 'Μετάβαση',\n  jump_to_confirm: 'επιβεβαιώνω',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Προηγούμενη Σελίδα',\n  next_page: 'Επόμενη Σελίδα',\n  prev_5: 'Προηγούμενες 5 Σελίδες',\n  next_5: 'Επόμενες 5 σελίδες',\n  prev_3: 'Προηγούμενες 3 Σελίδες',\n  next_3: 'Επόμενες 3 Σελίδες',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/en_GB.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Go to',\n  jump_to_confirm: 'confirm',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/en_US.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Go to',\n  jump_to_confirm: 'confirm',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/es_ES.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ página',\n  jump_to: 'Ir a',\n  jump_to_confirm: 'confirmar',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Página anterior',\n  next_page: 'Página siguiente',\n  prev_5: '5 páginas previas',\n  next_5: '5 páginas siguientes',\n  prev_3: '3 páginas previas',\n  next_3: '3 páginas siguientes',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/et_EE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ leheküljel',\n  jump_to: 'Hüppa',\n  jump_to_confirm: 'Kinnitage',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Eelmine leht',\n  next_page: 'Järgmine leht',\n  prev_5: 'Eelmised 5 lehekülge',\n  next_5: 'Järgmised 5 lehekülge',\n  prev_3: 'Eelmised 3 lehekülge',\n  next_3: 'Järgmised 3 lehekülge',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/fa_IR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ صفحه',\n  jump_to: 'برو به',\n  jump_to_confirm: 'تایید',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'صفحه قبلی',\n  next_page: 'صفحه بعدی',\n  prev_5: '۵ صفحه قبلی',\n  next_5: '۵ صفحه بعدی',\n  prev_3: '۳ صفحه قبلی',\n  next_3: '۳ صفحه بعدی',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/fi_FI.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ sivu',\n  jump_to: 'Mene',\n  jump_to_confirm: 'Potvrdite',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Edellinen sivu',\n  next_page: 'Seuraava sivu',\n  prev_5: 'Edelliset 5 sivua',\n  next_5: 'Seuraavat 5 sivua',\n  prev_3: 'Edelliset 3 sivua',\n  next_3: 'Seuraavat 3 sivua',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/fr_BE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Aller à',\n  jump_to_confirm: 'confirmer',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Page précédente',\n  next_page: 'Page suivante',\n  prev_5: '5 Pages précédentes',\n  next_5: '5 Pages suivantes',\n  prev_3: '3 Pages précédentes',\n  next_3: '3 Pages suivantes',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/fr_CA.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Aller à',\n  jump_to_confirm: 'confirmer',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Page précédente',\n  next_page: 'Page suivante',\n  prev_5: '5 Pages précédentes',\n  next_5: '5 Pages suivantes',\n  prev_3: '3 Pages précédentes',\n  next_3: '3 Pages suivantes',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/fr_FR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Aller à',\n  jump_to_confirm: 'confirmer',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Page précédente',\n  next_page: 'Page suivante',\n  prev_5: '5 Pages précédentes',\n  next_5: '5 Pages suivantes',\n  prev_3: '3 Pages précédentes',\n  next_3: '3 Pages suivantes',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ga_IE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ leathanach',\n  jump_to: 'Téigh',\n  jump_to_confirm: 'dheimhnigh',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Leathanach Roimhe Seo',\n  next_page: 'An chéad leathanach eile',\n  prev_5: '5 leathanach roimhe seo',\n  next_5: 'Ar Aghaidh 5 Leathanaigh',\n  prev_3: '3 leathanach roimhe seo',\n  next_3: 'Ar Aghaidh 3 Leathanaigh',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/gl_ES.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ páxina',\n  jump_to: 'Ir a',\n  jump_to_confirm: 'confirmar',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Páxina anterior',\n  next_page: 'Páxina seguinte',\n  prev_5: '5 páxinas previas',\n  next_5: '5 páxinas seguintes',\n  prev_3: '3 páxinas previas',\n  next_3: '3 páxinas seguintes',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/he_IL.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ עמוד',\n  jump_to: 'עבור אל',\n  jump_to_confirm: 'אישור',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'העמוד הקודם',\n  next_page: 'העמוד הבא',\n  prev_5: '5 עמודים קודמים',\n  next_5: '5 עמודים הבאים',\n  prev_3: '3 עמודים קודמים',\n  next_3: '3 עמודים הבאים',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/hi_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ पृष्ठ',\n  jump_to: 'इस पर चलें',\n  jump_to_confirm: 'पुष्टि करें',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'पिछला पृष्ठ',\n  next_page: 'अगला पृष्ठ',\n  prev_5: 'पिछले 5 पृष्ठ',\n  next_5: 'अगले 5 पृष्ठ',\n  prev_3: 'पिछले 3 पृष्ठ',\n  next_3: 'अगले 3 पेज',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/hr_HR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ str',\n  jump_to: 'Idi na',\n  jump_to_confirm: 'potvrdi',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Prijašnja stranica',\n  next_page: 'Sljedeća stranica',\n  prev_5: 'Prijašnjih 5 stranica',\n  next_5: 'Sljedećih 5 stranica',\n  prev_3: 'Prijašnje 3 stranice',\n  next_3: 'Sljedeće 3 stranice',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/hu_HU.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ oldal', // '/ page',\n  jump_to: 'Ugrás', // 'Goto',\n  jump_to_confirm: 'megerősít', // 'confirm',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Előző oldal', // 'Previous Page',\n  next_page: 'Következő oldal', // 'Next Page',\n  prev_5: 'Előző 5 oldal', // 'Previous 5 Pages',\n  next_5: 'Következő 5 oldal', // 'Next 5 Pages',\n  prev_3: 'Előző 3 oldal', // 'Previous 3 Pages',\n  next_3: 'Következő 3 oldal', // 'Next 3 Pages',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/id_ID.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ halaman',\n  jump_to: 'Menuju',\n  jump_to_confirm: 'konfirmasi',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Halaman Sebelumnya',\n  next_page: 'Halaman Berikutnya',\n  prev_5: '5 Halaman Sebelumnya',\n  next_5: '5 Halaman Berikutnya',\n  prev_3: '3 Halaman Sebelumnya',\n  next_3: '3 Halaman Berikutnya',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/is_IS.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ síðu',\n  jump_to: 'Síða',\n  jump_to_confirm: 'staðfest',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Fyrri síða',\n  next_page: 'Næsta síða',\n  prev_5: 'Til baka 5 síður',\n  next_5: 'Áfram 5 síður',\n  prev_3: 'Til baka 3 síður',\n  next_3: 'Áfram 3 síður',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/it_IT.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ pagina',\n  jump_to: 'vai a',\n  jump_to_confirm: 'Conferma',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Pagina precedente',\n  next_page: 'Pagina successiva',\n  prev_5: 'Precedente 5 pagine',\n  next_5: 'Prossime 5 pagine',\n  prev_3: 'Precedente 3 pagine',\n  next_3: 'Prossime 3 pagine',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ja_JP.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '件 / ページ',\n  jump_to: '移動',\n  jump_to_confirm: '確認する',\n  page: 'ページ',\n\n  // Pagination.jsx\n  prev_page: '前のページ',\n  next_page: '次のページ',\n  prev_5: '前 5ページ',\n  next_5: '次 5ページ',\n  prev_3: '前 3ページ',\n  next_3: '次 3ページ',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ka_GE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ გვერდი.',\n  jump_to: 'გადასვლა',\n  jump_to_confirm: 'დადასტურება',\n  page: '',\n  // Pagination.jsx\n  prev_page: 'წინა გვერდი',\n  next_page: 'შემდეგი გვერდი',\n  prev_5: 'წინა 5 გვერდი',\n  next_5: 'შემდეგი 5 გვერდი',\n  prev_3: 'წინა 3 გვერდი',\n  next_3: 'შემდეგი 3 გვერდი',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/kk_KZ.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ бет',\n  jump_to: 'Секіру',\n  jump_to_confirm: 'Растау',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Артқа',\n  next_page: 'Алға',\n  prev_5: 'Алдыңғы 5',\n  next_5: 'Келесі 5',\n  prev_3: 'Алдыңғы 3',\n  next_3: 'Келесі 3',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/km_KH.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ ទំព័រ',\n  jump_to: 'លោត​ទៅ',\n  jump_to_confirm: 'បញ្ជាក់',\n  page: 'ទំព័រ',\n\n  // Pagination.jsx\n  prev_page: 'ទំព័រ​មុន',\n  next_page: 'ទំព័រ​​បន្ទាប់',\n  prev_5: '៥ ទំព័រថយក្រោយ',\n  next_5: '៥ ទំព័រទៅមុខ',\n  prev_3: '៣ ទំព័រថយក្រោយ',\n  next_3: '៣ ទំព័រទៅមុខ',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/kmr_IQ.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ rûpel',\n  jump_to: 'Biçe',\n  jump_to_confirm: 'piştrast bike',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Rûpelê Pêş',\n  next_page: 'Rûpelê Paş',\n  prev_5: '5 Rûpelên Pêş',\n  next_5: '5 Rûpelên Paş',\n  prev_3: '3 Rûpelên Pêş',\n  next_3: '3 Rûpelên Paş',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/kn_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ ಪುಟ',\n  jump_to: 'ಜಿಗಿತವನ್ನು',\n  jump_to_confirm: 'ಖಚಿತಪಡಿಸಲು ಜಿಗಿತವನ್ನು',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'ಹಿಂದಿನ ಪುಟ',\n  next_page: 'ಮುಂದಿನ ಪುಟ',\n  prev_5: 'ಹಿಂದಿನ 5 ಪುಟಗಳು',\n  next_5: 'ಮುಂದಿನ 5 ಪುಟಗಳು',\n  prev_3: 'ಹಿಂದಿನ 3 ಪುಟಗಳು',\n  next_3: 'ಮುಂದಿನ 3 ಪುಟಗಳು',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ko_KR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ 쪽',\n  jump_to: '이동하기',\n  jump_to_confirm: '확인하다',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: '이전 페이지',\n  next_page: '다음 페이지',\n  prev_5: '이전 5 페이지',\n  next_5: '다음 5 페이지',\n  prev_3: '이전 3 페이지',\n  next_3: '다음 3 페이지',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/lt_LT.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ psl.',\n  jump_to: 'Pereiti',\n  jump_to_confirm: 'patvirtinti',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Atgal',\n  next_page: 'Pirmyn',\n  prev_5: 'Grįžti 5 pls.',\n  next_5: 'Peršokti 5 pls.',\n  prev_3: 'Grįžti 3 pls.',\n  next_3: 'Peršokti 3 pls.',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/lv_LV.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ lappuse',\n  jump_to: 'iet uz',\n  jump_to_confirm: 'apstiprināt',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Iepriekšējā lapa',\n  next_page: 'Nākamā lapaspuse',\n  prev_5: 'Iepriekšējās 5 lapas',\n  next_5: 'Nākamās 5 lapas',\n  prev_3: 'Iepriekšējās 3 lapas',\n  next_3: 'Nākamās 3 lapas',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/mk_MK.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ стр',\n  jump_to: 'Оди на',\n  jump_to_confirm: 'потврди',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Претходна страница',\n  next_page: 'Наредна страница',\n  prev_5: 'Претходни 5 страници',\n  next_5: 'Наредни 5 страници',\n  prev_3: 'Претходни 3 страници',\n  next_3: 'Наредни 3 страници',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ml_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ പേജ്',\n  jump_to: 'അടുത്തത്',\n  jump_to_confirm: 'ഉറപ്പാക്കുക',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'മുൻപുള്ള പേജ്',\n  next_page: 'അടുത്ത പേജ്',\n  prev_5: 'മുൻപുള്ള 5 പേജുകൾ',\n  next_5: 'അടുത്ത 5 പേജുകൾ',\n  prev_3: 'മുൻപുള്ള 3 പേജുകൾ',\n  next_3: 'അടുത്ത 3 പേജുകൾ',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/mm_MM.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ စာမျက်နှာ',\n  jump_to: 'သွားရန်',\n  jump_to_confirm: 'သေချာပြီ',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'ယခင်စာမျက်နှာ',\n  next_page: 'နောက်စာမျက်နှာ',\n  prev_5: 'ယခင် ၅ခုမြောက်',\n  next_5: 'နောက် ၅ခုမြောက်',\n  prev_3: 'ယခင် ၃ခုမြောက်',\n  next_3: 'နောက် ၃ခုမြောက်',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/mn_MN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ хуудас',\n  jump_to: 'Шилжих',\n  jump_to_confirm: 'сонгох',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Өмнөх хуудас',\n  next_page: 'Дараагийн хуудас',\n  prev_5: 'Дараагийн 5 хуудас',\n  next_5: 'Дараагийн 5 хуудас',\n  prev_3: 'Дараагийн 3 хуудас',\n  next_3: 'Дараагийн 3 хуудас',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ms_MY.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ halaman',\n  jump_to: 'Lompat ke',\n  jump_to_confirm: 'Sahkan',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Halaman sebelumnya',\n  next_page: 'Halam seterusnya',\n  prev_5: '5 halaman sebelum',\n  next_5: '5 halaman seterusnya',\n  prev_3: '3 halaman sebelumnya',\n  next_3: '3 halaman seterusnya',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/nb_NO.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ side',\n  jump_to: 'Gå til side',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Forrige side',\n  next_page: 'Neste side',\n  prev_5: '5 forrige',\n  next_5: '5 neste',\n  prev_3: '3 forrige',\n  next_3: '3 neste',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/nl_BE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ pagina',\n  jump_to: 'Ga naar',\n  jump_to_confirm: 'bevestigen',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Vorige pagina',\n  next_page: 'Volgende pagina',\n  prev_5: \"Vorige 5 pagina's\",\n  next_5: \"Volgende 5 pagina's\",\n  prev_3: \"Vorige 3 pagina's\",\n  next_3: \"Volgende 3 pagina's\",\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/nl_NL.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ pagina',\n  jump_to: 'Ga naar',\n  jump_to_confirm: 'bevestigen',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Vorige pagina',\n  next_page: 'Volgende pagina',\n  prev_5: \"Vorige 5 pagina's\",\n  next_5: \"Volgende 5 pagina's\",\n  prev_3: \"Vorige 3 pagina's\",\n  next_3: \"Volgende 3 pagina's\",\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/pa_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ ਪੰਨਾ',\n  jump_to: 'Goto',\n  jump_to_confirm: 'ਪੁਸ਼ਟੀ ਕਰੋ',\n  page: 'ਪੰਨਾ',\n\n  // Pagination.jsx\n  prev_page: 'ਪਿਛਲਾ ਪੰਨਾ',\n  next_page: 'ਅਗਲਾ ਪੰਨਾ',\n  prev_5: 'ਪਿਛਲੇ 5 ਪੰਨੇ',\n  next_5: 'ਅਗਲੇ 5 ਪੰਨੇ',\n  prev_3: 'ਪਿਛਲੇ 3 ਪੰਨੇ',\n  next_3: 'ਅਗਲੇ 3 ਪੰਨੇ',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/pb_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ ਪੰਨਾ',\n  jump_to: 'Goto',\n  jump_to_confirm: 'ਪੁਸ਼ਟੀ ਕਰੋ',\n  page: 'ਪੰਨਾ',\n\n  // Pagination.jsx\n  prev_page: 'ਪਿਛਲਾ ਪੰਨਾ',\n  next_page: 'ਅਗਲਾ ਪੰਨਾ',\n  prev_5: 'ਪਿਛਲੇ 5 ਪੰਨੇ',\n  next_5: 'ਅਗਲੇ 5 ਪੰਨੇ',\n  prev_3: 'ਪਿਛਲੇ 3 ਪੰਨੇ',\n  next_3: 'ਅਗਲੇ 3 ਪੰਨੇ',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/pl_PL.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: 'na stronę',\n  jump_to: 'Idź do',\n  jump_to_confirm: 'potwierdź',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Poprzednia strona',\n  next_page: 'Następna strona',\n  prev_5: 'Poprzednie 5 stron',\n  next_5: 'Następne 5 stron',\n  prev_3: 'Poprzednie 3 strony',\n  next_3: 'Następne 3 strony',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/pt_BR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ página',\n  jump_to: 'Vá até',\n  jump_to_confirm: 'confirme',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Página anterior',\n  next_page: 'Próxima página',\n  prev_5: '5 páginas anteriores',\n  next_5: '5 próximas páginas',\n  prev_3: '3 páginas anteriores',\n  next_3: '3 próximas páginas',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/pt_PT.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ página',\n  jump_to: 'Saltar',\n  jump_to_confirm: 'confirmar',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Página Anterior',\n  next_page: 'Página Seguinte',\n  prev_5: 'Recuar 5 Páginas',\n  next_5: 'Avançar 5 Páginas',\n  prev_3: 'Recuar 3 Páginas',\n  next_3: 'Avançar 3 Páginas',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ro_RO.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ pagină',\n  jump_to: 'Mergi la',\n  jump_to_confirm: 'confirm',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Pagina Anterioară',\n  next_page: 'Pagina Următoare',\n  prev_5: '5 Pagini Anterioare',\n  next_5: '5 Pagini Următoare',\n  prev_3: '3 Pagini Anterioare',\n  next_3: '3 Pagini Următoare',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ru_RU.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ стр.',\n  jump_to: 'Перейти',\n  jump_to_confirm: 'подтвердить',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Назад',\n  next_page: 'Вперед',\n  prev_5: 'Предыдущие 5',\n  next_5: 'Следующие 5',\n  prev_3: 'Предыдущие 3',\n  next_3: 'Следующие 3',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/sk_SK.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ strana',\n  jump_to: 'Choď na',\n  jump_to_confirm: 'potvrdit',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Predchádzajúca strana',\n  next_page: 'Nasledujúca strana',\n  prev_5: 'Predchádzajúcich 5 strán',\n  next_5: 'Nasledujúcich 5 strán',\n  prev_3: 'Predchádzajúce 3 strany',\n  next_3: 'Nasledujúce 3 strany',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/sl_SI.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ strani',\n  jump_to: 'Pojdi na',\n  jump_to_confirm: 'potrdi',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Prejšnja stran',\n  next_page: 'Naslednja stran',\n  prev_5: 'Prejšnjih 5 strani',\n  next_5: 'Naslednjih 5 strani',\n  prev_3: 'Prejšnje 3 strani',\n  next_3: 'Naslednje 3 strani',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/sr_RS.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ strani',\n  jump_to: 'Idi na',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Prethodna strana',\n  next_page: 'Sledeća strana',\n  prev_5: 'Prethodnih 5 Strana',\n  next_5: 'Sledećih 5 Strana',\n  prev_3: 'Prethodnih 3 Strane',\n  next_3: 'Sledećih 3 Strane',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/sv_SE.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ sida',\n  jump_to: 'Gå till',\n  jump_to_confirm: 'bekräfta',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Föreg sida',\n  next_page: 'Nästa sida',\n  prev_5: 'Föreg 5 sidor',\n  next_5: 'Nästa 5 sidor',\n  prev_3: 'Föreg 3 sidor',\n  next_3: 'Nästa 3 sidor',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ta_IN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ பக்கம்',\n  jump_to: 'அடுத்த',\n  jump_to_confirm: 'உறுதிப்படுத்தவும்',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'முந்தைய பக்கம்',\n  next_page: 'அடுத்த பக்கம்',\n  prev_5: 'முந்தைய 5 பக்கங்கள்',\n  next_5: 'அடுத்த 5 பக்கங்கள்',\n  prev_3: 'முந்தைய 3 பக்கங்கள்',\n  next_3: 'அடுத்த 3 பக்கங்கள்',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/th_TH.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ หน้า',\n  jump_to: 'ไปยัง',\n  jump_to_confirm: 'ยืนยัน',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'หน้าก่อนหน้า',\n  next_page: 'หน้าถัดไป',\n  prev_5: 'ย้อนกลับ 5 หน้า',\n  next_5: 'ถัดไป 5 หน้า',\n  prev_3: 'ย้อนกลับ 3 หน้า',\n  next_3: 'ถัดไป 3 หน้า',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/tr_TR.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ sayfa',\n  jump_to: 'Git',\n  jump_to_confirm: 'onayla',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Önceki Sayfa',\n  next_page: 'Sonraki Sayfa',\n  prev_5: 'Önceki 5 Sayfa',\n  next_5: 'Sonraki 5 Sayfa',\n  prev_3: 'Önceki 3 Sayfa',\n  next_3: 'Sonraki 3 Sayfa',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ug_CN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: 'تال/ھەر بەت',\n  jump_to: 'بەتكە سەكرەش',\n  jump_to_confirm: 'مۇقىملاشتۇرۇش',\n  page: 'بەت',\n  // Pagination.jsx\n  prev_page: 'ئالدىنقى',\n  next_page: 'كېيىنكى',\n  prev_5: 'ئالدىغا 5 بەت',\n  next_5: 'كەينىگە 5 بەت',\n  prev_3: 'ئالدىغا 3 بەت',\n  next_3: 'كەينىگە 3 بەت',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/uk_UA.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ сторінці',\n  jump_to: 'Перейти',\n  jump_to_confirm: 'підтвердити',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Попередня сторінка',\n  next_page: 'Наступна сторінка',\n  prev_5: 'Попередні 5 сторінок',\n  next_5: 'Наступні 5 сторінок',\n  prev_3: 'Попередні 3 сторінки',\n  next_3: 'Наступні 3 сторінки',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/ur_PK.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ صفحہ',\n  jump_to: 'پاس جاؤ',\n  jump_to_confirm: 'تصدیق کریں',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'پچھلا صفحہ',\n  next_page: 'اگلا صفحہ',\n  prev_5: 'پچھلے 5 صفحات',\n  next_5: 'اگلے 5 صفحات',\n  prev_3: 'پچھلے 3 صفحات',\n  next_3: 'اگلے 3 صفحات',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/vi_VN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '/ trang',\n  jump_to: 'Đến',\n  jump_to_confirm: 'xác nhận',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Trang Trước',\n  next_page: 'Trang Kế',\n  prev_5: 'Về 5 Trang Trước',\n  next_5: 'Đến 5 Trang Kế',\n  prev_3: 'Về 3 Trang Trước',\n  next_3: 'Đến 3 Trang Kế',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/zh_CN.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n\n  // Pagination.jsx\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页',\n};\n"
  },
  {
    "path": "components/vc-pagination/locale/zh_TW.ts",
    "content": "export default {\n  // Options.jsx\n  items_per_page: '條/頁',\n  jump_to: '跳至',\n  jump_to_confirm: '確定',\n  page: '頁',\n\n  // Pagination.jsx\n  prev_page: '上一頁',\n  next_page: '下一頁',\n  prev_5: '向前 5 頁',\n  next_5: '向後 5 頁',\n  prev_3: '向前 3 頁',\n  next_3: '向後 3 頁',\n};\n"
  },
  {
    "path": "components/vc-picker/PanelContext.tsx",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { OnSelect, PanelMode } from './interface';\n\nexport type ContextOperationRefProps = {\n  onKeydown?: (e: KeyboardEvent) => boolean;\n  onClose?: () => void;\n};\n\nexport type PanelContextProps = {\n  operationRef?: Ref<ContextOperationRefProps | null>;\n  /** Only work with time panel */\n  hideHeader?: Ref<boolean>;\n  panelRef?: Ref<HTMLDivElement>;\n  hidePrevBtn?: Ref<boolean>;\n  hideNextBtn?: Ref<boolean>;\n  onDateMouseenter?: (date: any) => void;\n  onDateMouseleave?: (date: any) => void;\n  onSelect?: OnSelect<any>;\n  hideRanges?: Ref<boolean>;\n  open?: Ref<boolean>;\n  mode?: Ref<PanelMode>;\n\n  /** Only used for TimePicker and this is a deprecated prop */\n  defaultOpenValue?: Ref<any>;\n};\n\nconst PanelContextKey: InjectionKey<PanelContextProps> = Symbol('PanelContextProps');\n\nexport const useProvidePanel = (props: PanelContextProps) => {\n  provide(PanelContextKey, props);\n};\n\nexport const useInjectPanel = () => {\n  return inject(PanelContextKey, {});\n};\n\nexport default PanelContextKey;\n"
  },
  {
    "path": "components/vc-picker/Picker.tsx",
    "content": "/**\n * Removed:\n *  - getCalendarContainer: use `getPopupContainer` instead\n *  - onOk\n *\n * New Feature:\n *  - picker\n *  - allowEmpty\n *  - selectable\n *\n * Tips: Should add faq about `datetime` mode with `defaultValue`\n */\n\nimport type {\n  PickerPanelBaseProps,\n  PickerPanelDateProps,\n  PickerPanelTimeProps,\n} from './PickerPanel';\nimport PickerPanel from './PickerPanel';\nimport PickerTrigger from './PickerTrigger';\nimport PresetPanel from './PresetPanel';\nimport { formatValue, isEqual, parseValue } from './utils/dateUtil';\nimport getDataOrAriaProps, { toArray } from './utils/miscUtil';\nimport type { ContextOperationRefProps } from './PanelContext';\nimport { useProvidePanel } from './PanelContext';\nimport type { CustomFormat, PanelMode, PickerMode, PresetDate, RangeValue } from './interface';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport usePickerInput from './hooks/usePickerInput';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport useValueTexts from './hooks/useValueTexts';\nimport useHoverValue from './hooks/useHoverValue';\nimport usePresets from './hooks/usePresets';\nimport type { CSSProperties, HTMLAttributes, Ref } from 'vue';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\nimport type { ChangeEvent, FocusEventHandler, MouseEventHandler } from '../_util/EventInterface';\nimport type { VueNode } from '../_util/type';\nimport type { AlignType } from '../vc-align/interface';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport { warning } from '../vc-util/warning';\nimport classNames from '../_util/classNames';\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport { legacyPropsWarning } from './utils/warnUtil';\n\nexport type PickerRefConfig = {\n  focus: () => void;\n  blur: () => void;\n};\n\nexport type PickerSharedProps<DateType> = {\n  dropdownClassName?: string;\n  dropdownAlign?: AlignType;\n  popupStyle?: CSSProperties;\n  transitionName?: string;\n  placeholder?: string;\n  allowClear?: boolean;\n  autofocus?: boolean;\n  disabled?: boolean;\n  tabindex?: number;\n  open?: boolean;\n  defaultOpen?: boolean;\n  /** Make input readOnly to avoid popup keyboard in mobile */\n  inputReadOnly?: boolean;\n  id?: string;\n\n  presets?: PresetDate<DateType>[];\n\n  // Value\n  format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];\n\n  // Render\n  suffixIcon?: VueNode;\n  clearIcon?: VueNode;\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n  getPopupContainer?: (node: HTMLElement) => HTMLElement;\n  panelRender?: (originPanel: VueNode) => VueNode;\n  inputRender?: (props: HTMLAttributes) => VueNode;\n\n  // Events\n  onChange?: (value: DateType | null, dateString: string) => void;\n  onOpenChange?: (open: boolean) => void;\n  onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n  onMousedown?: MouseEventHandler;\n  onMouseup?: MouseEventHandler;\n  onMouseenter?: MouseEventHandler;\n  onMouseleave?: MouseEventHandler;\n  onClick?: MouseEventHandler;\n  onContextmenu?: MouseEventHandler;\n  onKeydown?: (event: KeyboardEvent, preventDefault: () => void) => void;\n\n  // WAI-ARIA\n  role?: string;\n  name?: string;\n\n  autocomplete?: string;\n  direction?: 'ltr' | 'rtl';\n  showToday?: boolean;\n  showTime?: boolean | SharedTimeProps<DateType>;\n};\n\ntype OmitPanelProps<Props> = Omit<\n  Props,\n  'onChange' | 'hideHeader' | 'pickerValue' | 'onPickerValueChange'\n>;\n\nexport type PickerBaseProps<DateType> = {} & PickerSharedProps<DateType> &\n  OmitPanelProps<PickerPanelBaseProps<DateType>>;\n\nexport type PickerDateProps<DateType> = {} & PickerSharedProps<DateType> &\n  OmitPanelProps<PickerPanelDateProps<DateType>>;\n\nexport type PickerTimeProps<DateType> = {\n  picker: 'time';\n  /**\n   * @deprecated Please use `defaultValue` directly instead\n   * since `defaultOpenValue` will confuse user of current value status\n   */\n  defaultOpenValue?: DateType;\n} & PickerSharedProps<DateType> &\n  Omit<OmitPanelProps<PickerPanelTimeProps<DateType>>, 'format'>;\n\nexport type PickerProps<DateType> =\n  | PickerBaseProps<DateType>\n  | PickerDateProps<DateType>\n  | PickerTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<PickerBaseProps<DateType>, 'picker'> &\n  Omit<PickerDateProps<DateType>, 'picker'> &\n  Omit<PickerTimeProps<DateType>, 'picker'>;\ntype MergedPickerProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\n\nfunction Picker<DateType>() {\n  return defineComponent<MergedPickerProps<DateType>>({\n    name: 'Picker',\n    inheritAttrs: false,\n    props: [\n      'prefixCls',\n      'id',\n      'tabindex',\n      'dropdownClassName',\n      'dropdownAlign',\n      'popupStyle',\n      'transitionName',\n      'generateConfig',\n      'locale',\n      'inputReadOnly',\n      'allowClear',\n      'autofocus',\n      'showTime',\n      'showNow',\n      'showHour',\n      'showMinute',\n      'showSecond',\n      'picker',\n      'format',\n      'use12Hours',\n      'value',\n      'defaultValue',\n      'open',\n      'defaultOpen',\n      'defaultOpenValue',\n      'suffixIcon',\n      'presets',\n      'clearIcon',\n      'disabled',\n      'disabledDate',\n      'placeholder',\n      'getPopupContainer',\n      'panelRender',\n      'inputRender',\n      'onChange',\n      'onOpenChange',\n      'onPanelChange',\n      'onFocus',\n      'onBlur',\n      'onMousedown',\n      'onMouseup',\n      'onMouseenter',\n      'onMouseleave',\n      'onContextmenu',\n      'onClick',\n      'onKeydown',\n      'onSelect',\n      'direction',\n      'autocomplete',\n      'showToday',\n      'renderExtraFooter',\n      'dateRender',\n      'minuteStep',\n      'hourStep',\n      'secondStep',\n      'hideDisabledOptions',\n    ] as any,\n    setup(props, { attrs, expose }) {\n      const inputRef = ref(null);\n      const presets = computed(() => props.presets);\n      const presetList = usePresets(presets);\n      const picker = computed(() => props.picker ?? 'date');\n      const needConfirmButton = computed(\n        () => (picker.value === 'date' && !!props.showTime) || picker.value === 'time',\n      );\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production') {\n        legacyPropsWarning(props);\n      }\n      // ============================= State =============================\n      const formatList = computed(() =>\n        toArray(getDefaultFormat(props.format, picker.value, props.showTime, props.use12Hours)),\n      );\n\n      // Panel ref\n      const panelDivRef = ref<HTMLDivElement>(null);\n      const inputDivRef = ref<HTMLDivElement>(null);\n      const containerRef = ref<HTMLDivElement>(null);\n\n      // Real value\n      const [mergedValue, setInnerValue] = useMergedState<DateType>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n      });\n      const selectedValue = ref(mergedValue.value) as Ref<DateType>;\n      const setSelectedValue = (val: DateType) => {\n        selectedValue.value = val;\n      };\n\n      // Operation ref\n      const operationRef = ref<ContextOperationRefProps>(null);\n\n      // Open\n      const [mergedOpen, triggerInnerOpen] = useMergedState(false, {\n        value: toRef(props, 'open'),\n        defaultValue: props.defaultOpen,\n        postState: postOpen => (props.disabled ? false : postOpen),\n        onChange: newOpen => {\n          if (props.onOpenChange) {\n            props.onOpenChange(newOpen);\n          }\n\n          if (!newOpen && operationRef.value && operationRef.value.onClose) {\n            operationRef.value.onClose();\n          }\n        },\n      });\n\n      // ============================= Text ==============================\n      const [valueTexts, firstValueText] = useValueTexts(selectedValue, {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      });\n      const [text, triggerTextChange, resetText] = useTextValueMapping({\n        valueTexts,\n        onTextChange: newText => {\n          const inputDate = parseValue(newText, {\n            locale: props.locale,\n            formatList: formatList.value,\n            generateConfig: props.generateConfig,\n          });\n          if (inputDate && (!props.disabledDate || !props.disabledDate(inputDate))) {\n            setSelectedValue(inputDate);\n          }\n        },\n      });\n\n      // ============================ Trigger ============================\n      const triggerChange = (newValue: DateType | null) => {\n        const { onChange, generateConfig, locale } = props;\n        setSelectedValue(newValue);\n        setInnerValue(newValue);\n\n        if (onChange && !isEqual(generateConfig, mergedValue.value, newValue)) {\n          onChange(\n            newValue,\n            newValue\n              ? formatValue(newValue, { generateConfig, locale, format: formatList.value[0] })\n              : '',\n          );\n        }\n      };\n\n      const triggerOpen = (newOpen: boolean) => {\n        if (props.disabled && newOpen) {\n          return;\n        }\n        triggerInnerOpen(newOpen);\n      };\n\n      const forwardKeydown = (e: KeyboardEvent) => {\n        if (mergedOpen.value && operationRef.value && operationRef.value.onKeydown) {\n          // Let popup panel handle keyboard\n          return operationRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Picker not correct forward Keydown operation. Please help to fire issue about this.',\n          );\n          return false;\n        }\n      };\n\n      const onInternalMouseup: MouseEventHandler = (...args) => {\n        if (props.onMouseup) {\n          props.onMouseup(...args);\n        }\n\n        if (inputRef.value) {\n          inputRef.value.focus();\n          triggerOpen(true);\n        }\n      };\n\n      // ============================= Input =============================\n      const [inputProps, { focused, typing }] = usePickerInput({\n        blurToCancel: needConfirmButton,\n        open: mergedOpen,\n        value: text,\n        triggerOpen,\n        forwardKeydown,\n        isClickOutside: target =>\n          !elementsContains(\n            [panelDivRef.value, inputDivRef.value, containerRef.value],\n            target as HTMLElement,\n          ),\n        onSubmit: () => {\n          if (\n            // When user typing disabledDate with keyboard and enter, this value will be empty\n            !selectedValue.value ||\n            // Normal disabled check\n            (props.disabledDate && props.disabledDate(selectedValue.value))\n          ) {\n            return false;\n          }\n\n          triggerChange(selectedValue.value);\n          triggerOpen(false);\n          resetText();\n          return true;\n        },\n        onCancel: () => {\n          triggerOpen(false);\n          setSelectedValue(mergedValue.value);\n          resetText();\n        },\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n        onFocus: (e: FocusEvent) => {\n          props.onFocus?.(e);\n        },\n        onBlur: (e: FocusEvent) => {\n          props.onBlur?.(e);\n        },\n      });\n\n      // ============================= Sync ==============================\n      // Close should sync back with text value\n      watch([mergedOpen, valueTexts], () => {\n        if (!mergedOpen.value) {\n          setSelectedValue(mergedValue.value);\n\n          if (!valueTexts.value.length || valueTexts.value[0] === '') {\n            triggerTextChange('');\n          } else if (firstValueText.value !== text.value) {\n            resetText();\n          }\n        }\n      });\n\n      // Change picker should sync back with text value\n      watch(picker, () => {\n        if (!mergedOpen.value) {\n          resetText();\n        }\n      });\n\n      // Sync innerValue with control mode\n      watch(mergedValue, () => {\n        // Sync select value\n        setSelectedValue(mergedValue.value);\n      });\n\n      const [hoverValue, onEnter, onLeave] = useHoverValue(text, {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      });\n\n      const onContextSelect = (date: DateType, type: 'key' | 'mouse' | 'submit') => {\n        if (type === 'submit' || (type !== 'key' && !needConfirmButton.value)) {\n          // triggerChange will also update selected values\n          triggerChange(date);\n          triggerOpen(false);\n        }\n      };\n\n      useProvidePanel({\n        operationRef,\n        hideHeader: computed(() => picker.value === 'time'),\n        onSelect: onContextSelect,\n        open: mergedOpen,\n        defaultOpenValue: toRef(props, 'defaultOpenValue'),\n        onDateMouseenter: onEnter,\n        onDateMouseleave: onLeave,\n      });\n\n      expose({\n        focus: () => {\n          if (inputRef.value) {\n            inputRef.value.focus();\n          }\n        },\n        blur: () => {\n          if (inputRef.value) {\n            inputRef.value.blur();\n          }\n        },\n      });\n\n      return () => {\n        const {\n          prefixCls = 'rc-picker',\n          id,\n          tabindex,\n          dropdownClassName,\n          dropdownAlign,\n          popupStyle,\n          transitionName,\n          generateConfig,\n          locale,\n          inputReadOnly,\n          allowClear,\n          autofocus,\n          picker = 'date',\n          defaultOpenValue,\n          suffixIcon,\n          clearIcon,\n          disabled,\n          placeholder,\n          getPopupContainer,\n          panelRender,\n          onMousedown,\n          onMouseenter,\n          onMouseleave,\n          onContextmenu,\n          onClick,\n          onSelect,\n          direction,\n          autocomplete = 'off',\n        } = props;\n        // ============================= Panel =============================\n        const panelProps = {\n          // Remove `picker` & `format` here since TimePicker is little different with other panel\n          ...(props as Omit<MergedPickerProps<DateType>, 'picker' | 'format'>),\n          ...attrs,\n          class: classNames({\n            [`${prefixCls}-panel-focused`]: !typing.value,\n          }),\n          style: undefined,\n          pickerValue: undefined,\n          onPickerValueChange: undefined,\n          onChange: null,\n        };\n\n        let panelNode: VueNode = (\n          <div class={`${prefixCls}-panel-layout`}>\n            <PresetPanel\n              prefixCls={prefixCls}\n              presets={presetList.value}\n              onClick={nextValue => {\n                triggerChange(nextValue);\n                triggerOpen(false);\n              }}\n            />\n            <PickerPanel\n              {...panelProps}\n              generateConfig={generateConfig}\n              value={selectedValue.value}\n              locale={locale}\n              tabindex={-1}\n              onSelect={date => {\n                onSelect?.(date);\n                setSelectedValue(date);\n              }}\n              direction={direction}\n              onPanelChange={(viewDate, mode) => {\n                const { onPanelChange } = props;\n                onLeave(true);\n                onPanelChange?.(viewDate, mode);\n              }}\n            />\n          </div>\n        );\n\n        if (panelRender) {\n          panelNode = panelRender(panelNode);\n        }\n\n        const panel = (\n          <div\n            class={`${prefixCls}-panel-container`}\n            ref={panelDivRef}\n            onMousedown={e => {\n              e.preventDefault();\n            }}\n          >\n            {panelNode}\n          </div>\n        );\n\n        let suffixNode: VueNode;\n        if (suffixIcon) {\n          suffixNode = <span class={`${prefixCls}-suffix`}>{suffixIcon}</span>;\n        }\n\n        let clearNode: VueNode;\n        if (allowClear && mergedValue.value && !disabled) {\n          clearNode = (\n            <span\n              onMousedown={e => {\n                e.preventDefault();\n                e.stopPropagation();\n              }}\n              onMouseup={e => {\n                e.preventDefault();\n                e.stopPropagation();\n                triggerChange(null);\n                triggerOpen(false);\n              }}\n              class={`${prefixCls}-clear`}\n              role=\"button\"\n            >\n              {clearIcon || <span class={`${prefixCls}-clear-btn`} />}\n            </span>\n          );\n        }\n\n        const mergedInputProps: HTMLAttributes = {\n          id,\n          tabindex,\n          disabled,\n          readonly: inputReadOnly || typeof formatList.value[0] === 'function' || !typing.value,\n          value: hoverValue.value || text.value,\n          onInput: (e: ChangeEvent) => {\n            triggerTextChange(e.target.value);\n          },\n          autofocus,\n          placeholder,\n          ref: inputRef,\n          title: text.value,\n          ...inputProps.value,\n          size: getInputSize(picker, formatList.value[0], generateConfig),\n          ...getDataOrAriaProps(props),\n          autocomplete,\n        };\n\n        const inputNode = props.inputRender ? (\n          props.inputRender(mergedInputProps)\n        ) : (\n          <input {...mergedInputProps} />\n        );\n\n        // ============================ Warning ============================\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            !defaultOpenValue,\n            '`defaultOpenValue` may confuse user for the current value status. Please use `defaultValue` instead.',\n          );\n        }\n\n        // ============================ Return =============================\n\n        const popupPlacement = direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n        return (\n          <div\n            ref={containerRef}\n            class={classNames(prefixCls, attrs.class, {\n              [`${prefixCls}-disabled`]: disabled,\n              [`${prefixCls}-focused`]: focused.value,\n              [`${prefixCls}-rtl`]: direction === 'rtl',\n            })}\n            style={attrs.style as CSSProperties}\n            onMousedown={onMousedown}\n            onMouseup={onInternalMouseup}\n            onMouseenter={onMouseenter}\n            onMouseleave={onMouseleave}\n            onContextmenu={onContextmenu}\n            onClick={onClick}\n          >\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-placeholder`]: !!hoverValue.value,\n              })}\n              ref={inputDivRef}\n            >\n              {inputNode}\n              {suffixNode}\n              {clearNode}\n            </div>\n            <PickerTrigger\n              visible={mergedOpen.value}\n              popupStyle={popupStyle}\n              prefixCls={prefixCls}\n              dropdownClassName={dropdownClassName}\n              dropdownAlign={dropdownAlign}\n              getPopupContainer={getPopupContainer}\n              transitionName={transitionName}\n              popupPlacement={popupPlacement}\n              direction={direction}\n              v-slots={{\n                popupElement: () => panel,\n              }}\n            >\n              <div\n                style={{\n                  pointerEvents: 'none',\n                  position: 'absolute',\n                  top: 0,\n                  bottom: 0,\n                  left: 0,\n                  right: 0,\n                }}\n              ></div>\n            </PickerTrigger>\n          </div>\n        );\n      };\n    },\n  });\n}\nexport default Picker<any>();\n"
  },
  {
    "path": "components/vc-picker/PickerPanel.tsx",
    "content": "/**\n * Logic:\n *  When `mode` === `picker`,\n *  click will trigger `onSelect` (if value changed trigger `onChange` also).\n *  Panel change will not trigger `onSelect` but trigger `onPanelChange`\n */\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport TimePanel from './panels/TimePanel';\nimport DatetimePanel from './panels/DatetimePanel';\nimport DatePanel from './panels/DatePanel';\nimport WeekPanel from './panels/WeekPanel';\nimport MonthPanel from './panels/MonthPanel';\nimport QuarterPanel from './panels/QuarterPanel';\nimport YearPanel from './panels/YearPanel';\nimport DecadePanel from './panels/DecadePanel';\nimport type { GenerateConfig } from './generate';\nimport type {\n  Locale,\n  PanelMode,\n  PanelRefProps,\n  PickerMode,\n  DisabledTime,\n  OnPanelChange,\n  Components,\n} from './interface';\nimport { isEqual } from './utils/dateUtil';\nimport { useInjectPanel, useProvidePanel } from './PanelContext';\nimport type { DateRender } from './panels/DatePanel/DateBody';\nimport { PickerModeMap } from './utils/uiUtil';\nimport type { MonthCellRender } from './panels/MonthPanel/MonthBody';\nimport { useInjectRange } from './RangeContext';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport { getLowerBoundTime, setDateTime, setTime } from './utils/timeUtil';\nimport type { VueNode } from '../_util/type';\nimport type { CSSProperties } from 'vue';\nimport { computed, createVNode, defineComponent, ref, toRef, watch, watchEffect } from 'vue';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport { warning } from '../vc-util/warning';\nimport KeyCode from '../_util/KeyCode';\nimport classNames from '../_util/classNames';\n\nexport type PickerPanelSharedProps<DateType> = {\n  prefixCls?: string;\n  // className?: string;\n  // style?: React.CSSProperties;\n  /** @deprecated Will be removed in next big version. Please use `mode` instead */\n  mode?: PanelMode;\n  tabindex?: number;\n\n  // Locale\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n\n  // Value\n  value?: DateType | null;\n  defaultValue?: DateType;\n  /** [Legacy] Set default display picker view date */\n  pickerValue?: DateType;\n  /** [Legacy] Set default display picker view date */\n  defaultPickerValue?: DateType;\n\n  // Date\n  disabledDate?: (date: DateType) => boolean;\n\n  // Render\n  dateRender?: DateRender<DateType>;\n  monthCellRender?: MonthCellRender<DateType>;\n  renderExtraFooter?: (mode: PanelMode) => VueNode;\n\n  // Event\n  onSelect?: (value: DateType) => void;\n  onChange?: (value: DateType) => void;\n  onPanelChange?: OnPanelChange<DateType>;\n  onMousedown?: (e: MouseEvent) => void;\n  onOk?: (date: DateType) => void;\n\n  direction?: 'ltr' | 'rtl';\n\n  /** @private This is internal usage. Do not use in your production env */\n  hideHeader?: boolean;\n  /** @private This is internal usage. Do not use in your production env */\n  onPickerValueChange?: (date: DateType) => void;\n\n  /** @private Internal usage. Do not use in your production env */\n  components?: Components;\n};\n\nexport type PickerPanelBaseProps<DateType> = {\n  picker: Exclude<PickerMode, 'date' | 'time'>;\n} & PickerPanelSharedProps<DateType>;\n\nexport type PickerPanelDateProps<DateType> = {\n  picker?: 'date';\n  showToday?: boolean;\n  showNow?: boolean;\n\n  // Time\n  showTime?: boolean | SharedTimeProps<DateType>;\n  disabledTime?: DisabledTime<DateType>;\n} & PickerPanelSharedProps<DateType>;\n\nexport type PickerPanelTimeProps<DateType> = {\n  picker: 'time';\n} & PickerPanelSharedProps<DateType> &\n  SharedTimeProps<DateType>;\n\nexport type PickerPanelProps<DateType> =\n  | PickerPanelBaseProps<DateType>\n  | PickerPanelDateProps<DateType>\n  | PickerPanelTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<PickerPanelBaseProps<DateType>, 'picker'> &\n  Omit<PickerPanelDateProps<DateType>, 'picker'> &\n  Omit<PickerPanelTimeProps<DateType>, 'picker'>;\ntype MergedPickerPanelProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\n\nfunction PickerPanel<DateType>() {\n  return defineComponent<MergedPickerPanelProps<DateType>>({\n    name: 'PickerPanel',\n    inheritAttrs: false,\n    props: {\n      prefixCls: String,\n      locale: Object,\n      generateConfig: Object,\n      value: Object,\n      defaultValue: Object,\n      pickerValue: Object,\n      defaultPickerValue: Object,\n      disabledDate: Function,\n      mode: String,\n      picker: { type: String, default: 'date' },\n      tabindex: { type: [Number, String], default: 0 },\n      showNow: { type: Boolean, default: undefined },\n      showTime: [Boolean, Object],\n      showToday: Boolean,\n      renderExtraFooter: Function,\n      dateRender: Function,\n      hideHeader: { type: Boolean, default: undefined },\n      onSelect: Function,\n      onChange: Function,\n      onPanelChange: Function,\n      onMousedown: Function,\n      onPickerValueChange: Function,\n      onOk: Function,\n      components: Object,\n      direction: String,\n      hourStep: { type: Number, default: 1 },\n      minuteStep: { type: Number, default: 1 },\n      secondStep: { type: Number, default: 1 },\n    } as any,\n    setup(props, { attrs }) {\n      const needConfirmButton = computed(\n        () => (props.picker === 'date' && !!props.showTime) || props.picker === 'time',\n      );\n\n      const isHourStepValid = computed(() => 24 % props.hourStep === 0);\n      const isMinuteStepValid = computed(() => 60 % props.minuteStep === 0);\n      const isSecondStepValid = computed(() => 60 % props.secondStep === 0);\n      if (process.env.NODE_ENV !== 'production') {\n        watchEffect(() => {\n          const { generateConfig, value, hourStep = 1, minuteStep = 1, secondStep = 1 } = props;\n          warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `value`.');\n          warning(\n            !value || generateConfig.isValidate(value),\n            'Invalidate date pass to `defaultValue`.',\n          );\n          warning(\n            isHourStepValid.value,\n            `\\`hourStep\\` ${hourStep} is invalid. It should be a factor of 24.`,\n          );\n          warning(\n            isMinuteStepValid.value,\n            `\\`minuteStep\\` ${minuteStep} is invalid. It should be a factor of 60.`,\n          );\n          warning(\n            isSecondStepValid.value,\n            `\\`secondStep\\` ${secondStep} is invalid. It should be a factor of 60.`,\n          );\n        });\n      }\n\n      const panelContext = useInjectPanel();\n      const {\n        operationRef,\n        onSelect: onContextSelect,\n        hideRanges,\n        defaultOpenValue,\n      } = panelContext;\n      const { inRange, panelPosition, rangedValue, hoverRangedValue } = useInjectRange();\n      const panelRef = ref<PanelRefProps>({});\n      // Value\n      const [mergedValue, setInnerValue] = useMergedState<DateType | null>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n        postState: val => {\n          if (!val && defaultOpenValue?.value && props.picker === 'time') {\n            return defaultOpenValue.value;\n          }\n          return val;\n        },\n      });\n\n      // View date control\n      const [viewDate, setInnerViewDate] = useMergedState<DateType | null>(null, {\n        value: toRef(props, 'pickerValue'),\n        defaultValue: props.defaultPickerValue || mergedValue.value,\n        postState: date => {\n          const { generateConfig, showTime, defaultValue } = props;\n          const now = generateConfig.getNow();\n          if (!date) return now;\n          // When value is null and set showTime\n          if (!mergedValue.value && props.showTime) {\n            if (typeof showTime === 'object') {\n              return setDateTime(\n                generateConfig,\n                Array.isArray(date) ? date[0] : date,\n                showTime.defaultValue || now,\n              );\n            }\n            if (defaultValue) {\n              return setDateTime(\n                generateConfig,\n                Array.isArray(date) ? date[0] : date,\n                defaultValue,\n              );\n            }\n            return setDateTime(generateConfig, Array.isArray(date) ? date[0] : date, now);\n          }\n          return date;\n        },\n      });\n\n      const setViewDate = (date: DateType) => {\n        setInnerViewDate(date);\n        if (props.onPickerValueChange) {\n          props.onPickerValueChange(date);\n        }\n      };\n\n      // Panel control\n      const getInternalNextMode = (nextMode: PanelMode): PanelMode => {\n        const getNextMode = PickerModeMap[props.picker!];\n        if (getNextMode) {\n          return getNextMode(nextMode);\n        }\n\n        return nextMode;\n      };\n\n      // Save panel is changed from which panel\n      const [mergedMode, setInnerMode] = useMergedState(\n        () => {\n          if (props.picker === 'time') {\n            return 'time';\n          }\n          return getInternalNextMode('date');\n        },\n        {\n          value: toRef(props, 'mode'),\n        },\n      );\n      watch(\n        () => props.picker,\n        () => {\n          setInnerMode(props.picker);\n        },\n      );\n\n      const sourceMode = ref(mergedMode.value);\n      const setSourceMode = (val: PanelMode) => {\n        sourceMode.value = val;\n      };\n\n      const onInternalPanelChange = (newMode: PanelMode | null, viewValue: DateType) => {\n        const { onPanelChange, generateConfig } = props;\n        const nextMode = getInternalNextMode(newMode || mergedMode.value);\n        setSourceMode(mergedMode.value);\n        setInnerMode(nextMode);\n\n        if (\n          onPanelChange &&\n          (mergedMode.value !== nextMode || isEqual(generateConfig, viewDate.value, viewDate.value))\n        ) {\n          onPanelChange(viewValue, nextMode);\n        }\n      };\n\n      const triggerSelect = (\n        date: DateType,\n        type: 'key' | 'mouse' | 'submit',\n        forceTriggerSelect = false,\n      ) => {\n        const { picker, generateConfig, onSelect, onChange, disabledDate } = props;\n        if (mergedMode.value === picker || forceTriggerSelect) {\n          setInnerValue(date);\n\n          if (onSelect) {\n            onSelect(date);\n          }\n\n          if (onContextSelect) {\n            onContextSelect(date, type);\n          }\n\n          if (\n            onChange &&\n            !isEqual(generateConfig, date, mergedValue.value) &&\n            !disabledDate?.(date)\n          ) {\n            onChange(date);\n          }\n        }\n      };\n\n      // ========================= Interactive ==========================\n      const onInternalKeydown = (e: KeyboardEvent) => {\n        if (panelRef.value && panelRef.value.onKeydown) {\n          if (\n            [\n              KeyCode.LEFT,\n              KeyCode.RIGHT,\n              KeyCode.UP,\n              KeyCode.DOWN,\n              KeyCode.PAGE_UP,\n              KeyCode.PAGE_DOWN,\n              KeyCode.ENTER,\n            ].includes(e.which)\n          ) {\n            e.preventDefault();\n          }\n          return panelRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Panel not correct handle keyDown event. Please help to fire issue about this.',\n          );\n          return false;\n        }\n        /* eslint-enable no-lone-blocks */\n      };\n\n      const onInternalBlur = (e: FocusEvent) => {\n        if (panelRef.value && panelRef.value.onBlur) {\n          panelRef.value.onBlur(e);\n        }\n      };\n      const onNow = () => {\n        const { generateConfig, hourStep, minuteStep, secondStep } = props;\n        const now = generateConfig.getNow();\n        const lowerBoundTime = getLowerBoundTime(\n          generateConfig.getHour(now),\n          generateConfig.getMinute(now),\n          generateConfig.getSecond(now),\n          isHourStepValid.value ? hourStep : 1,\n          isMinuteStepValid.value ? minuteStep : 1,\n          isSecondStepValid.value ? secondStep : 1,\n        );\n        const adjustedNow = setTime(\n          generateConfig,\n          now,\n          lowerBoundTime[0], // hour\n          lowerBoundTime[1], // minute\n          lowerBoundTime[2], // second\n        );\n        triggerSelect(adjustedNow, 'submit');\n      };\n\n      const classString = computed(() => {\n        const { prefixCls, direction } = props;\n        return classNames(`${prefixCls}-panel`, {\n          [`${prefixCls}-panel-has-range`]:\n            rangedValue && rangedValue.value && rangedValue.value[0] && rangedValue.value[1],\n          [`${prefixCls}-panel-has-range-hover`]:\n            hoverRangedValue &&\n            hoverRangedValue.value &&\n            hoverRangedValue.value[0] &&\n            hoverRangedValue.value[1],\n          [`${prefixCls}-panel-rtl`]: direction === 'rtl',\n        });\n      });\n      useProvidePanel({\n        ...panelContext,\n        mode: mergedMode,\n        hideHeader: computed(() =>\n          props.hideHeader !== undefined ? props.hideHeader : panelContext.hideHeader?.value,\n        ),\n        hidePrevBtn: computed(() => inRange.value && panelPosition.value === 'right'),\n        hideNextBtn: computed(() => inRange.value && panelPosition.value === 'left'),\n      });\n\n      watch(\n        () => props.value,\n        () => {\n          if (props.value) {\n            setInnerViewDate(props.value);\n          }\n        },\n      );\n\n      return () => {\n        const {\n          prefixCls = 'ant-picker',\n          locale,\n          generateConfig,\n          disabledDate,\n          picker = 'date',\n          tabindex = 0,\n          showNow,\n          showTime,\n          showToday,\n          renderExtraFooter,\n          onMousedown,\n          onOk,\n          components,\n        } = props;\n        if (operationRef && panelPosition.value !== 'right') {\n          operationRef.value = {\n            onKeydown: onInternalKeydown,\n            onClose: () => {\n              if (panelRef.value && panelRef.value.onClose) {\n                panelRef.value.onClose();\n              }\n            },\n          };\n        }\n\n        // ============================ Panels ============================\n        let panelNode: VueNode;\n        const pickerProps = {\n          ...attrs,\n          ...(props as MergedPickerPanelProps<DateType>),\n          operationRef: panelRef,\n          prefixCls,\n          viewDate: viewDate.value,\n          value: mergedValue.value,\n          onViewDateChange: setViewDate,\n          sourceMode: sourceMode.value,\n          onPanelChange: onInternalPanelChange,\n          disabledDate,\n        };\n        delete pickerProps.onChange;\n        delete pickerProps.onSelect;\n        switch (mergedMode.value) {\n          case 'decade':\n            panelNode = (\n              <DecadePanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'year':\n            panelNode = (\n              <YearPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'month':\n            panelNode = (\n              <MonthPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'quarter':\n            panelNode = (\n              <QuarterPanel<DateType>\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'week':\n            panelNode = (\n              <WeekPanel\n                {...pickerProps}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          case 'time':\n            delete pickerProps.showTime;\n            panelNode = (\n              <TimePanel<DateType>\n                {...pickerProps}\n                {...(typeof showTime === 'object' ? showTime : null)}\n                onSelect={(date, type) => {\n                  setViewDate(date);\n                  triggerSelect(date, type);\n                }}\n              />\n            );\n            break;\n\n          default:\n            if (showTime) {\n              panelNode = (\n                <DatetimePanel\n                  {...pickerProps}\n                  onSelect={(date, type) => {\n                    setViewDate(date);\n                    triggerSelect(date, type);\n                  }}\n                />\n              );\n            } else {\n              panelNode = (\n                <DatePanel<DateType>\n                  {...pickerProps}\n                  onSelect={(date, type) => {\n                    setViewDate(date);\n                    triggerSelect(date, type);\n                  }}\n                />\n              );\n            }\n        }\n\n        // ============================ Footer ============================\n        let extraFooter: VueNode;\n        let rangesNode: VueNode;\n\n        if (!hideRanges?.value) {\n          extraFooter = getExtraFooter(prefixCls, mergedMode.value, renderExtraFooter);\n          rangesNode = getRanges({\n            prefixCls,\n            components,\n            needConfirmButton: needConfirmButton.value,\n            okDisabled: !mergedValue.value || (disabledDate && disabledDate(mergedValue.value)),\n            locale,\n            showNow,\n            onNow: needConfirmButton.value && onNow,\n            onOk: () => {\n              if (mergedValue.value) {\n                triggerSelect(mergedValue.value, 'submit', true);\n                if (onOk) {\n                  onOk(mergedValue.value);\n                }\n              }\n            },\n          });\n        }\n\n        let todayNode: VueNode;\n\n        if (showToday && mergedMode.value === 'date' && picker === 'date' && !showTime) {\n          const now = generateConfig.getNow();\n          const todayCls = `${prefixCls}-today-btn`;\n          const disabled = disabledDate && disabledDate(now);\n          todayNode = (\n            <a\n              class={classNames(todayCls, disabled && `${todayCls}-disabled`)}\n              aria-disabled={disabled}\n              onClick={() => {\n                if (!disabled) {\n                  triggerSelect(now, 'mouse', true);\n                }\n              }}\n            >\n              {locale.today}\n            </a>\n          );\n        }\n        return (\n          <div\n            tabindex={tabindex}\n            class={classNames(classString.value, attrs.class)}\n            style={attrs.style as CSSProperties}\n            onKeydown={onInternalKeydown}\n            onBlur={onInternalBlur}\n            onMousedown={onMousedown}\n          >\n            {panelNode}\n            {extraFooter || rangesNode || todayNode ? (\n              <div class={`${prefixCls}-footer`}>\n                {extraFooter}\n                {rangesNode}\n                {todayNode}\n              </div>\n            ) : null}\n          </div>\n        );\n      };\n    },\n  });\n}\nconst InterPickerPanel = PickerPanel<any>();\nexport default <DateType,>(props: MergedPickerPanelProps<DateType>) =>\n  createVNode(InterPickerPanel, props);\n"
  },
  {
    "path": "components/vc-picker/PickerTrigger.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport type { AlignType } from '../vc-align/interface';\nimport Trigger from '../vc-trigger';\nimport classNames from '../_util/classNames';\nimport useMergeProps from './hooks/useMergeProps';\n\nconst BUILT_IN_PLACEMENTS = {\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 1,\n      adjustY: 1,\n    },\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 1,\n      adjustY: 1,\n    },\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1,\n    },\n  },\n};\n\ntype Placement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n\nexport type PickerTriggerProps = {\n  prefixCls: string;\n  visible: boolean;\n  popupStyle?: CSSProperties;\n  dropdownClassName?: string;\n  transitionName?: string;\n  getPopupContainer?: (node: HTMLElement) => HTMLElement;\n  dropdownAlign?: AlignType;\n  range?: boolean;\n  popupPlacement?: Placement;\n  direction?: 'ltr' | 'rtl';\n};\n\nfunction PickerTrigger(props: PickerTriggerProps, { slots }) {\n  const {\n    prefixCls,\n    popupStyle,\n    visible,\n    dropdownClassName,\n    dropdownAlign,\n    transitionName,\n    getPopupContainer,\n    range,\n    popupPlacement,\n    direction,\n  } = useMergeProps(props);\n  const dropdownPrefixCls = `${prefixCls}-dropdown`;\n\n  const getPopupPlacement = () => {\n    if (popupPlacement !== undefined) {\n      return popupPlacement;\n    }\n    return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n  };\n\n  return (\n    <Trigger\n      showAction={[]}\n      hideAction={[]}\n      popupPlacement={getPopupPlacement()}\n      builtinPlacements={BUILT_IN_PLACEMENTS}\n      prefixCls={dropdownPrefixCls}\n      popupTransitionName={transitionName}\n      popupAlign={dropdownAlign}\n      popupVisible={visible}\n      popupClassName={classNames(dropdownClassName, {\n        [`${dropdownPrefixCls}-range`]: range,\n        [`${dropdownPrefixCls}-rtl`]: direction === 'rtl',\n      })}\n      popupStyle={popupStyle}\n      getPopupContainer={getPopupContainer}\n      v-slots={{\n        default: slots.default,\n        popup: slots.popupElement,\n      }}\n    ></Trigger>\n  );\n}\n\nexport default PickerTrigger;\n"
  },
  {
    "path": "components/vc-picker/PresetPanel.tsx",
    "content": "import { defineComponent } from 'vue';\n\nexport default defineComponent({\n  name: 'PresetPanel',\n  props: {\n    prefixCls: String,\n    presets: {\n      type: Array,\n      default: () => [],\n    },\n    onClick: Function,\n    onHover: Function,\n  },\n  setup(props) {\n    return () => {\n      if (!props.presets.length) {\n        return null;\n      }\n      return (\n        <div class={`${props.prefixCls}-presets`}>\n          <ul>\n            {props.presets.map(({ label, value }, index) => (\n              <li\n                key={index}\n                onClick={e => {\n                  e.stopPropagation();\n                  props.onClick(value);\n                }}\n                onMouseenter={() => {\n                  props.onHover?.(value);\n                }}\n                onMouseleave={() => {\n                  props.onHover?.(null);\n                }}\n              >\n                {label}\n              </li>\n            ))}\n          </ul>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-picker/RangeContext.tsx",
    "content": "import type { InjectionKey, PropType, Ref } from 'vue';\nimport { defineComponent, inject, provide, ref, toRef, watch } from 'vue';\nimport type { NullableDateType, RangeValue } from './interface';\n\nexport type RangeContextProps = {\n  /**\n   * Set displayed range value style.\n   * Panel only has one value, this is only style effect.\n   */\n  rangedValue?: Ref<[NullableDateType<any>, NullableDateType<any>] | null>;\n  hoverRangedValue?: Ref<RangeValue<any>>;\n  inRange?: Ref<boolean>;\n  panelPosition?: Ref<'left' | 'right' | false>;\n};\n\ntype RangeContextProviderValue = {\n  /**\n   * Set displayed range value style.\n   * Panel only has one value, this is only style effect.\n   */\n  rangedValue?: [NullableDateType<any>, NullableDateType<any>] | null;\n  hoverRangedValue?: RangeValue<any>;\n  inRange?: boolean;\n  panelPosition?: 'left' | 'right' | false;\n};\n\nconst RangeContextKey: InjectionKey<RangeContextProps> = Symbol('RangeContextProps');\n\nexport const useProvideRange = (props: RangeContextProps) => {\n  provide(RangeContextKey, props);\n};\n\nexport const useInjectRange = () => {\n  return inject(RangeContextKey, {\n    rangedValue: ref(),\n    hoverRangedValue: ref(),\n    inRange: ref(),\n    panelPosition: ref(),\n  });\n};\n\nexport const RangeContextProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PanelContextProvider',\n  inheritAttrs: false,\n  props: {\n    value: {\n      type: Object as PropType<RangeContextProviderValue>,\n      default: () => ({} as RangeContextProviderValue),\n    },\n  },\n  setup(props, { slots }) {\n    const value: RangeContextProps = {\n      rangedValue: ref(props.value.rangedValue),\n      hoverRangedValue: ref(props.value.hoverRangedValue),\n      inRange: ref(props.value.inRange),\n      panelPosition: ref(props.value.panelPosition),\n    };\n    useProvideRange(value);\n    toRef;\n    watch(\n      () => props.value,\n      () => {\n        Object.keys(props.value).forEach(key => {\n          if (value[key]) {\n            value[key].value = props.value[key];\n          }\n        });\n      },\n    );\n    return () => slots.default?.();\n  },\n});\n\nexport default RangeContextKey;\n"
  },
  {
    "path": "components/vc-picker/RangePicker.tsx",
    "content": "import type {\n  DisabledTimes,\n  PanelMode,\n  PickerMode,\n  RangeValue,\n  EventValue,\n  PresetDate,\n} from './interface';\nimport type { PickerBaseProps, PickerDateProps, PickerTimeProps } from './Picker';\nimport type { SharedTimeProps } from './panels/TimePanel';\nimport PickerTrigger from './PickerTrigger';\nimport PickerPanel from './PickerPanel';\nimport usePickerInput from './hooks/usePickerInput';\nimport PresetPanel from './PresetPanel';\nimport getDataOrAriaProps, { toArray, getValue, updateValues } from './utils/miscUtil';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport type { ContextOperationRefProps } from './PanelContext';\nimport { useProvidePanel } from './PanelContext';\nimport {\n  isEqual,\n  getClosingViewDate,\n  isSameDate,\n  isSameWeek,\n  isSameQuarter,\n  formatValue,\n  parseValue,\n} from './utils/dateUtil';\nimport useValueTexts from './hooks/useValueTexts';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport usePresets from './hooks/usePresets';\nimport type { GenerateConfig } from './generate';\nimport type { PickerPanelProps } from '.';\nimport { RangeContextProvider } from './RangeContext';\nimport useRangeDisabled from './hooks/useRangeDisabled';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport useRangeViewDates from './hooks/useRangeViewDates';\nimport type { DateRender } from './panels/DatePanel/DateBody';\nimport useHoverValue from './hooks/useHoverValue';\nimport type { VueNode } from '../_util/type';\nimport type { ChangeEvent, FocusEventHandler, MouseEventHandler } from '../_util/EventInterface';\nimport { computed, defineComponent, ref, toRef, watch, watchEffect } from 'vue';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport { warning } from '../vc-util/warning';\nimport useState from '../_util/hooks/useState';\nimport classNames from '../_util/classNames';\nimport { legacyPropsWarning } from './utils/warnUtil';\nimport { useElementSize } from '../_util/hooks/_vueuse/useElementSize';\n\nfunction reorderValues<DateType>(\n  values: RangeValue<DateType>,\n  generateConfig: GenerateConfig<DateType>,\n): RangeValue<DateType> {\n  if (values && values[0] && values[1] && generateConfig.isAfter(values[0], values[1])) {\n    return [values[1], values[0]];\n  }\n\n  return values;\n}\n\nfunction canValueTrigger<DateType>(\n  value: EventValue<DateType>,\n  index: number,\n  disabled: [boolean, boolean],\n  allowEmpty?: [boolean, boolean] | null,\n): boolean {\n  if (value) {\n    return true;\n  }\n\n  if (allowEmpty && allowEmpty[index]) {\n    return true;\n  }\n\n  if (disabled[(index + 1) % 2]) {\n    return true;\n  }\n\n  return false;\n}\n\nexport type RangeType = 'start' | 'end';\n\nexport type RangeInfo = {\n  range: RangeType;\n};\n\nexport type RangeDateRender<DateType> = (props: {\n  current: DateType;\n  today: DateType;\n  info: RangeInfo;\n}) => VueNode;\n\nexport type RangePickerSharedProps<DateType> = {\n  id?: string;\n  value?: RangeValue<DateType>;\n  defaultValue?: RangeValue<DateType>;\n  defaultPickerValue?: [DateType, DateType];\n  placeholder?: [string, string];\n  disabled?: boolean | [boolean, boolean];\n  disabledTime?: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;\n  presets?: PresetDate<RangeValue<DateType>>[];\n  /** @deprecated Please use `presets` instead */\n  ranges?: Record<\n    string,\n    Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)\n  >;\n  separator?: VueNode;\n  allowEmpty?: [boolean, boolean];\n  mode?: [PanelMode, PanelMode];\n  onChange?: (values: RangeValue<DateType>, formatString: [string, string]) => void;\n  onCalendarChange?: (\n    values: RangeValue<DateType>,\n    formatString: [string, string],\n    info: RangeInfo,\n  ) => void;\n  onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n  onMousedown?: MouseEventHandler;\n  onMouseup?: MouseEventHandler;\n  onMouseenter?: MouseEventHandler;\n  onMouseleave?: MouseEventHandler;\n  onClick?: MouseEventHandler;\n  onOk?: (dates: RangeValue<DateType>) => void;\n  direction?: 'ltr' | 'rtl';\n  autocomplete?: string;\n  /** @private Internal control of active picker. Do not use since it's private usage */\n  activePickerIndex?: 0 | 1;\n  dateRender?: RangeDateRender<DateType>;\n  panelRender?: (originPanel: VueNode) => VueNode;\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n};\n\ntype OmitPickerProps<Props> = Omit<\n  Props,\n  | 'value'\n  | 'defaultValue'\n  | 'defaultPickerValue'\n  | 'placeholder'\n  | 'disabled'\n  | 'disabledTime'\n  | 'showToday'\n  | 'showTime'\n  | 'mode'\n  | 'onChange'\n  | 'onSelect'\n  | 'onPanelChange'\n  | 'pickerValue'\n  | 'onPickerValueChange'\n  | 'onOk'\n  | 'dateRender'\n  | 'presets'\n>;\n\ntype RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultValue'> & {\n  defaultValue?: DateType[];\n};\n\nexport type RangePickerBaseProps<DateType> = {} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerBaseProps<DateType>>;\n\nexport type RangePickerDateProps<DateType> = {\n  showTime?: boolean | RangeShowTimeObject<DateType>;\n} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerDateProps<DateType>>;\n\nexport type RangePickerTimeProps<DateType> = {\n  order?: boolean;\n} & RangePickerSharedProps<DateType> &\n  OmitPickerProps<PickerTimeProps<DateType>>;\n\nexport type RangePickerProps<DateType> =\n  | RangePickerBaseProps<DateType>\n  | RangePickerDateProps<DateType>\n  | RangePickerTimeProps<DateType>;\n\n// TMP type to fit for ts 3.9.2\ntype OmitType<DateType> = Omit<RangePickerBaseProps<DateType>, 'picker'> &\n  Omit<RangePickerDateProps<DateType>, 'picker'> &\n  Omit<RangePickerTimeProps<DateType>, 'picker'>;\n\ntype MergedRangePickerProps<DateType> = {\n  picker?: PickerMode;\n} & OmitType<DateType>;\nfunction RangerPicker<DateType>() {\n  return defineComponent<MergedRangePickerProps<DateType>>({\n    name: 'RangerPicker',\n    inheritAttrs: false,\n    props: [\n      'prefixCls',\n      'id',\n      'popupStyle',\n      'dropdownClassName',\n      'transitionName',\n      'dropdownAlign',\n      'getPopupContainer',\n      'generateConfig',\n      'locale',\n      'placeholder',\n      'autofocus',\n      'disabled',\n      'format',\n      'picker',\n      'showTime',\n      'showNow',\n      'showHour',\n      'showMinute',\n      'showSecond',\n      'use12Hours',\n      'separator',\n      'value',\n      'defaultValue',\n      'defaultPickerValue',\n      'open',\n      'defaultOpen',\n      'disabledDate',\n      'disabledTime',\n      'dateRender',\n      'panelRender',\n      'ranges',\n      'allowEmpty',\n      'allowClear',\n      'suffixIcon',\n      'clearIcon',\n      'pickerRef',\n      'inputReadOnly',\n      'mode',\n      'renderExtraFooter',\n      'onChange',\n      'onOpenChange',\n      'onPanelChange',\n      'onCalendarChange',\n      'onFocus',\n      'onBlur',\n      'onMousedown',\n      'onMouseup',\n      'onMouseenter',\n      'onMouseleave',\n      'onClick',\n      'onOk',\n      'onKeydown',\n      'components',\n      'order',\n      'direction',\n      'activePickerIndex',\n      'autocomplete',\n      'minuteStep',\n      'hourStep',\n      'secondStep',\n      'hideDisabledOptions',\n      'disabledMinutes',\n      'presets',\n      'prevIcon',\n      'nextIcon',\n      'superPrevIcon',\n      'superNextIcon',\n    ] as any,\n    setup(props, { attrs, expose }) {\n      const needConfirmButton = computed(\n        () => (props.picker === 'date' && !!props.showTime) || props.picker === 'time',\n      );\n      const presets = computed(() => props.presets);\n      const ranges = computed(() => props.ranges);\n      const presetList = usePresets(presets, ranges);\n      // We record oqqpened status here in case repeat open with picker\n      const openRecordsRef = ref<Record<number, boolean>>({});\n\n      const containerRef = ref<HTMLDivElement>(null);\n      const panelDivRef = ref<HTMLDivElement>(null);\n      const startInputDivRef = ref<HTMLDivElement>(null);\n      const endInputDivRef = ref<HTMLDivElement>(null);\n      const separatorRef = ref<HTMLDivElement>(null);\n      const startInputRef = ref<HTMLInputElement>(null);\n      const endInputRef = ref<HTMLInputElement>(null);\n      const arrowRef = ref<HTMLDivElement>(null);\n\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production') {\n        legacyPropsWarning(props);\n      }\n\n      // ============================= Misc ==============================\n      const formatList = computed(() =>\n        toArray(\n          getDefaultFormat<DateType>(props.format, props.picker, props.showTime, props.use12Hours),\n        ),\n      );\n\n      // Active picker\n      const [mergedActivePickerIndex, setMergedActivePickerIndex] = useMergedState<0 | 1>(0, {\n        value: toRef(props, 'activePickerIndex'),\n      });\n\n      // Operation ref\n      const operationRef = ref<ContextOperationRefProps>(null);\n\n      const mergedDisabled = computed<[boolean, boolean]>(() => {\n        const { disabled } = props;\n        if (Array.isArray(disabled)) {\n          return disabled;\n        }\n\n        return [disabled || false, disabled || false];\n      });\n\n      // ============================= Value =============================\n      const [mergedValue, setInnerValue] = useMergedState<RangeValue<DateType>>(null, {\n        value: toRef(props, 'value'),\n        defaultValue: props.defaultValue,\n        postState: values =>\n          props.picker === 'time' && !props.order\n            ? values\n            : reorderValues(values, props.generateConfig),\n      });\n\n      // =========================== View Date ===========================\n      // Config view panel\n      const [startViewDate, endViewDate, setViewDate] = useRangeViewDates({\n        values: mergedValue,\n        picker: toRef(props, 'picker'),\n        defaultDates: props.defaultPickerValue,\n        generateConfig: toRef(props, 'generateConfig'),\n      });\n\n      // ========================= Select Values =========================\n      const [selectedValue, setSelectedValue] = useMergedState(mergedValue.value, {\n        postState: values => {\n          let postValues = values;\n\n          if (mergedDisabled.value[0] && mergedDisabled.value[1]) {\n            return postValues;\n          }\n\n          // Fill disabled unit\n          for (let i = 0; i < 2; i += 1) {\n            if (\n              mergedDisabled.value[i] &&\n              !getValue(postValues, i) &&\n              !getValue(props.allowEmpty, i)\n            ) {\n              postValues = updateValues(postValues, props.generateConfig.getNow(), i);\n            }\n          }\n          return postValues;\n        },\n      });\n\n      // ============================= Modes =============================\n      const [mergedModes, setInnerModes] = useMergedState<[PanelMode, PanelMode]>(\n        [props.picker, props.picker],\n        {\n          value: toRef(props, 'mode'),\n        },\n      );\n\n      watch(\n        () => props.picker,\n        () => {\n          setInnerModes([props.picker, props.picker]);\n        },\n      );\n\n      const triggerModesChange = (modes: [PanelMode, PanelMode], values: RangeValue<DateType>) => {\n        setInnerModes(modes);\n        props.onPanelChange?.(values, modes);\n      };\n\n      // ========================= Disable Date ==========================\n      const [disabledStartDate, disabledEndDate] = useRangeDisabled(\n        {\n          picker: toRef(props, 'picker'),\n          selectedValue,\n          locale: toRef(props, 'locale'),\n          disabled: mergedDisabled,\n          disabledDate: toRef(props, 'disabledDate'),\n          generateConfig: toRef(props, 'generateConfig'),\n        },\n        openRecordsRef,\n      );\n\n      // ============================= Open ==============================\n      const [mergedOpen, triggerInnerOpen] = useMergedState(false, {\n        value: toRef(props, 'open'),\n        defaultValue: props.defaultOpen,\n        postState: postOpen =>\n          mergedDisabled.value[mergedActivePickerIndex.value] ? false : postOpen,\n        onChange: newOpen => {\n          props.onOpenChange?.(newOpen);\n\n          if (!newOpen && operationRef.value && operationRef.value.onClose) {\n            operationRef.value.onClose();\n          }\n        },\n      });\n\n      const startOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 0);\n      const endOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 1);\n      const panelLeft = ref(0);\n      const arrowLeft = ref(0);\n      // ============================= Popup =============================\n      // Popup min width\n      const popupMinWidth = ref(0);\n      const { width: containerWidth } = useElementSize(containerRef);\n      watch([mergedOpen, containerWidth], () => {\n        if (!mergedOpen.value && containerRef.value) {\n          popupMinWidth.value = containerWidth.value;\n        }\n      });\n      const { width: panelDivWidth } = useElementSize(panelDivRef);\n      const { width: arrowWidth } = useElementSize(arrowRef);\n      const { width: startInputDivWidth } = useElementSize(startInputDivRef);\n      const { width: separatorWidth } = useElementSize(separatorRef);\n      watch(\n        [\n          mergedActivePickerIndex,\n          mergedOpen,\n          panelDivWidth,\n          arrowWidth,\n          startInputDivWidth,\n          separatorWidth,\n          () => props.direction,\n        ],\n        () => {\n          arrowLeft.value = 0;\n          if (mergedActivePickerIndex.value) {\n            if (startInputDivRef.value && separatorRef.value) {\n              arrowLeft.value = startInputDivWidth.value + separatorWidth.value;\n              if (\n                panelDivWidth.value &&\n                arrowWidth.value &&\n                arrowLeft.value >\n                  panelDivWidth.value -\n                    arrowWidth.value -\n                    (props.direction === 'rtl' || arrowRef.value.offsetLeft > arrowLeft.value\n                      ? 0\n                      : arrowRef.value.offsetLeft)\n              ) {\n                panelLeft.value = arrowLeft.value;\n              }\n            }\n          } else if (mergedActivePickerIndex.value === 0) {\n            panelLeft.value = 0;\n          }\n        },\n        { immediate: true },\n      );\n\n      // ============================ Trigger ============================\n      const triggerRef = ref<any>();\n\n      function triggerOpen(newOpen: boolean, index: 0 | 1) {\n        if (newOpen) {\n          clearTimeout(triggerRef.value);\n          openRecordsRef.value[index] = true;\n\n          setMergedActivePickerIndex(index);\n          triggerInnerOpen(newOpen);\n\n          // Open to reset view date\n          if (!mergedOpen.value) {\n            setViewDate(null, index);\n          }\n        } else if (mergedActivePickerIndex.value === index) {\n          triggerInnerOpen(newOpen);\n\n          // Clean up async\n          // This makes ref not quick refresh in case user open another input with blur trigger\n          const openRecords = openRecordsRef.value;\n          triggerRef.value = setTimeout(() => {\n            if (openRecords === openRecordsRef.value) {\n              openRecordsRef.value = {};\n            }\n          });\n        }\n      }\n\n      function triggerOpenAndFocus(index: 0 | 1) {\n        triggerOpen(true, index);\n        // Use setTimeout to make sure panel DOM exists\n        setTimeout(() => {\n          const inputRef = [startInputRef, endInputRef][index];\n          if (inputRef.value) {\n            inputRef.value.focus();\n          }\n        }, 0);\n      }\n\n      function triggerChange(newValue: RangeValue<DateType>, sourceIndex: 0 | 1) {\n        let values = newValue;\n        let startValue = getValue(values, 0);\n        let endValue = getValue(values, 1);\n        const {\n          generateConfig,\n          locale,\n          picker,\n          order,\n          onCalendarChange,\n          allowEmpty,\n          onChange,\n          showTime,\n        } = props;\n\n        // >>>>> Format start & end values\n        if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {\n          if (\n            // WeekPicker only compare week\n            (picker === 'week' &&\n              !isSameWeek(generateConfig, locale.locale, startValue, endValue)) ||\n            // QuotaPicker only compare week\n            (picker === 'quarter' && !isSameQuarter(generateConfig, startValue, endValue)) ||\n            // Other non-TimePicker compare date\n            (picker !== 'week' &&\n              picker !== 'quarter' &&\n              picker !== 'time' &&\n              !(showTime\n                ? isEqual(generateConfig, startValue, endValue)\n                : isSameDate(generateConfig, startValue, endValue)))\n          ) {\n            // Clean up end date when start date is after end date\n            if (sourceIndex === 0) {\n              values = [startValue, null];\n              endValue = null;\n            } else {\n              startValue = null;\n              values = [null, endValue];\n            }\n\n            // Clean up cache since invalidate\n            openRecordsRef.value = {\n              [sourceIndex]: true,\n            };\n          } else if (picker !== 'time' || order !== false) {\n            // Reorder when in same date\n            values = reorderValues(values, generateConfig);\n          }\n        }\n\n        setSelectedValue(values);\n\n        const startStr =\n          values && values[0]\n            ? formatValue(values[0], { generateConfig, locale, format: formatList.value[0] })\n            : '';\n        const endStr =\n          values && values[1]\n            ? formatValue(values[1], { generateConfig, locale, format: formatList.value[0] })\n            : '';\n        if (onCalendarChange) {\n          const info: RangeInfo = { range: sourceIndex === 0 ? 'start' : 'end' };\n\n          onCalendarChange(values, [startStr, endStr], info);\n        }\n\n        // >>>>> Trigger `onChange` event\n        const canStartValueTrigger = canValueTrigger(\n          startValue,\n          0,\n          mergedDisabled.value,\n          allowEmpty,\n        );\n        const canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled.value, allowEmpty);\n\n        const canTrigger = values === null || (canStartValueTrigger && canEndValueTrigger);\n\n        if (canTrigger) {\n          // Trigger onChange only when value is validate\n          setInnerValue(values);\n\n          if (\n            onChange &&\n            (!isEqual(generateConfig, getValue(mergedValue.value, 0), startValue) ||\n              !isEqual(generateConfig, getValue(mergedValue.value, 1), endValue))\n          ) {\n            onChange(values, [startStr, endStr]);\n          }\n        }\n\n        // >>>>> Open picker when\n\n        // Always open another picker if possible\n        let nextOpenIndex: 0 | 1 = null;\n        if (sourceIndex === 0 && !mergedDisabled.value[1]) {\n          nextOpenIndex = 1;\n        } else if (sourceIndex === 1 && !mergedDisabled.value[0]) {\n          nextOpenIndex = 0;\n        }\n\n        if (\n          nextOpenIndex !== null &&\n          nextOpenIndex !== mergedActivePickerIndex.value &&\n          (!openRecordsRef.value[nextOpenIndex] || !getValue(values, nextOpenIndex)) &&\n          getValue(values, sourceIndex)\n        ) {\n          // Delay to focus to avoid input blur trigger expired selectedValues\n          triggerOpenAndFocus(nextOpenIndex);\n        } else {\n          triggerOpen(false, sourceIndex);\n        }\n      }\n\n      const forwardKeydown = (e: KeyboardEvent) => {\n        if (mergedOpen && operationRef.value && operationRef.value.onKeydown) {\n          // Let popup panel handle keyboard\n          return operationRef.value.onKeydown(e);\n        }\n\n        /* istanbul ignore next */\n        /* eslint-disable no-lone-blocks */\n        {\n          warning(\n            false,\n            'Picker not correct forward Keydown operation. Please help to fire issue about this.',\n          );\n          return false;\n        }\n      };\n\n      // ============================= Text ==============================\n      const sharedTextHooksProps = {\n        formatList,\n        generateConfig: toRef(props, 'generateConfig'),\n        locale: toRef(props, 'locale'),\n      };\n\n      const [startValueTexts, firstStartValueText] = useValueTexts<DateType>(\n        computed(() => getValue(selectedValue.value, 0)),\n        sharedTextHooksProps,\n      );\n\n      const [endValueTexts, firstEndValueText] = useValueTexts<DateType>(\n        computed(() => getValue(selectedValue.value, 1)),\n        sharedTextHooksProps,\n      );\n\n      const onTextChange = (newText: string, index: 0 | 1) => {\n        const inputDate = parseValue(newText, {\n          locale: props.locale,\n          formatList: formatList.value,\n          generateConfig: props.generateConfig,\n        });\n\n        const disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;\n\n        if (inputDate && !disabledFunc(inputDate)) {\n          setSelectedValue(updateValues(selectedValue.value, inputDate, index));\n          setViewDate(inputDate, index);\n        }\n      };\n\n      const [startText, triggerStartTextChange, resetStartText] = useTextValueMapping({\n        valueTexts: startValueTexts,\n        onTextChange: newText => onTextChange(newText, 0),\n      });\n\n      const [endText, triggerEndTextChange, resetEndText] = useTextValueMapping({\n        valueTexts: endValueTexts,\n        onTextChange: newText => onTextChange(newText, 1),\n      });\n\n      const [rangeHoverValue, setRangeHoverValue] = useState<RangeValue<DateType>>(null);\n\n      // ========================== Hover Range ==========================\n      const [hoverRangedValue, setHoverRangedValue] = useState<RangeValue<DateType>>(null);\n\n      const [startHoverValue, onStartEnter, onStartLeave] = useHoverValue(\n        startText,\n        sharedTextHooksProps,\n      );\n\n      const [endHoverValue, onEndEnter, onEndLeave] = useHoverValue(endText, sharedTextHooksProps);\n\n      const onDateMouseenter = (date: DateType) => {\n        setHoverRangedValue(updateValues(selectedValue.value, date, mergedActivePickerIndex.value));\n        if (mergedActivePickerIndex.value === 0) {\n          onStartEnter(date);\n        } else {\n          onEndEnter(date);\n        }\n      };\n\n      const onDateMouseleave = () => {\n        setHoverRangedValue(updateValues(selectedValue.value, null, mergedActivePickerIndex.value));\n        if (mergedActivePickerIndex.value === 0) {\n          onStartLeave();\n        } else {\n          onEndLeave();\n        }\n      };\n\n      // ============================= Input =============================\n      const getSharedInputHookProps = (index: 0 | 1, resetText: () => void) => ({\n        forwardKeydown,\n        onBlur: (e: FocusEvent) => {\n          props.onBlur?.(e);\n        },\n        isClickOutside: (target: EventTarget | null) =>\n          !elementsContains(\n            [panelDivRef.value, startInputDivRef.value, endInputDivRef.value, containerRef.value],\n            target as HTMLElement,\n          ),\n        onFocus: (e: FocusEvent) => {\n          setMergedActivePickerIndex(index);\n          props.onFocus?.(e);\n        },\n        triggerOpen: (newOpen: boolean) => {\n          triggerOpen(newOpen, index);\n        },\n        onSubmit: () => {\n          if (\n            // When user typing disabledDate with keyboard and enter, this value will be empty\n            !selectedValue.value ||\n            // Normal disabled check\n            (props.disabledDate && props.disabledDate(selectedValue.value[index]))\n          ) {\n            return false;\n          }\n          triggerChange(selectedValue.value, index);\n          resetText();\n        },\n        onCancel: () => {\n          triggerOpen(false, index);\n          setSelectedValue(mergedValue.value);\n          resetText();\n        },\n      });\n\n      const [startInputProps, { focused: startFocused, typing: startTyping }] = usePickerInput({\n        ...getSharedInputHookProps(0, resetStartText),\n        blurToCancel: needConfirmButton,\n        open: startOpen,\n        value: startText,\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n      });\n\n      const [endInputProps, { focused: endFocused, typing: endTyping }] = usePickerInput({\n        ...getSharedInputHookProps(1, resetEndText),\n        blurToCancel: needConfirmButton,\n        open: endOpen,\n        value: endText,\n        onKeydown: (e, preventDefault) => {\n          props.onKeydown?.(e, preventDefault);\n        },\n      });\n\n      // ========================== Click Picker ==========================\n      const onPickerClick = (e: MouseEvent) => {\n        // When click inside the picker & outside the picker's input elements\n        // the panel should still be opened\n        props.onClick?.(e);\n        if (\n          !mergedOpen.value &&\n          !startInputRef.value.contains(e.target as Node) &&\n          !endInputRef.value.contains(e.target as Node)\n        ) {\n          if (!mergedDisabled.value[0]) {\n            triggerOpenAndFocus(0);\n          } else if (!mergedDisabled.value[1]) {\n            triggerOpenAndFocus(1);\n          }\n        }\n      };\n\n      const onPickerMousedown = (e: MouseEvent) => {\n        // shouldn't affect input elements if picker is active\n        props.onMousedown?.(e);\n        if (\n          mergedOpen.value &&\n          (startFocused.value || endFocused.value) &&\n          !startInputRef.value.contains(e.target as Node) &&\n          !endInputRef.value.contains(e.target as Node)\n        ) {\n          e.preventDefault();\n        }\n      };\n\n      // ============================= Sync ==============================\n      // Close should sync back with text value\n      const startStr = computed(() =>\n        mergedValue.value?.[0]\n          ? formatValue(mergedValue.value[0], {\n              locale: props.locale,\n              format: 'YYYYMMDDHHmmss',\n              generateConfig: props.generateConfig,\n            })\n          : '',\n      );\n      const endStr = computed(() =>\n        mergedValue.value?.[1]\n          ? formatValue(mergedValue.value[1], {\n              locale: props.locale,\n              format: 'YYYYMMDDHHmmss',\n              generateConfig: props.generateConfig,\n            })\n          : '',\n      );\n\n      watch([mergedOpen, startValueTexts, endValueTexts], () => {\n        if (!mergedOpen.value) {\n          setSelectedValue(mergedValue.value);\n\n          if (!startValueTexts.value.length || startValueTexts.value[0] === '') {\n            triggerStartTextChange('');\n          } else if (firstStartValueText.value !== startText.value) {\n            resetStartText();\n          }\n          if (!endValueTexts.value.length || endValueTexts.value[0] === '') {\n            triggerEndTextChange('');\n          } else if (firstEndValueText.value !== endText.value) {\n            resetEndText();\n          }\n        }\n      });\n\n      // Sync innerValue with control mode\n      watch([startStr, endStr], () => {\n        setSelectedValue(mergedValue.value);\n      });\n\n      // ============================ Warning ============================\n      if (process.env.NODE_ENV !== 'production') {\n        watchEffect(() => {\n          const { value, disabled } = props;\n          if (\n            value &&\n            Array.isArray(disabled) &&\n            ((getValue(disabled, 0) && !getValue(value, 0)) ||\n              (getValue(disabled, 1) && !getValue(value, 1)))\n          ) {\n            warning(\n              false,\n              '`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead.',\n            );\n          }\n        });\n      }\n\n      expose({\n        focus: () => {\n          if (startInputRef.value) {\n            startInputRef.value.focus();\n          }\n        },\n        blur: () => {\n          if (startInputRef.value) {\n            startInputRef.value.blur();\n          }\n          if (endInputRef.value) {\n            endInputRef.value.blur();\n          }\n        },\n      });\n\n      // ============================= Panel =============================\n      const panelHoverRangedValue = computed(() => {\n        if (\n          mergedOpen.value &&\n          hoverRangedValue.value &&\n          hoverRangedValue.value[0] &&\n          hoverRangedValue.value[1] &&\n          props.generateConfig.isAfter(hoverRangedValue.value[1], hoverRangedValue.value[0])\n        ) {\n          return hoverRangedValue.value;\n        } else {\n          return null;\n        }\n      });\n      function renderPanel(\n        panelPosition: 'left' | 'right' | false = false,\n        panelProps: Partial<PickerPanelProps<DateType>> = {},\n      ) {\n        const { generateConfig, showTime, dateRender, direction, disabledTime, prefixCls, locale } =\n          props;\n\n        let panelShowTime: boolean | SharedTimeProps<DateType> | undefined =\n          showTime as SharedTimeProps<DateType>;\n        if (showTime && typeof showTime === 'object' && showTime.defaultValue) {\n          const timeDefaultValues: DateType[] = showTime.defaultValue!;\n          panelShowTime = {\n            ...showTime,\n            defaultValue: getValue(timeDefaultValues, mergedActivePickerIndex.value) || undefined,\n          };\n        }\n\n        let panelDateRender: DateRender<DateType> | null = null;\n        if (dateRender) {\n          panelDateRender = ({ current: date, today }) =>\n            dateRender({\n              current: date,\n              today,\n              info: {\n                range: mergedActivePickerIndex.value ? 'end' : 'start',\n              },\n            });\n        }\n\n        return (\n          <RangeContextProvider\n            value={{\n              inRange: true,\n              panelPosition,\n              rangedValue: rangeHoverValue.value || selectedValue.value,\n              hoverRangedValue: panelHoverRangedValue.value,\n            }}\n          >\n            <PickerPanel<DateType>\n              {...(props as any)}\n              {...panelProps}\n              dateRender={panelDateRender}\n              showTime={panelShowTime}\n              mode={mergedModes.value[mergedActivePickerIndex.value]}\n              generateConfig={generateConfig}\n              style={undefined}\n              direction={direction}\n              disabledDate={\n                mergedActivePickerIndex.value === 0 ? disabledStartDate : disabledEndDate\n              }\n              disabledTime={date => {\n                if (disabledTime) {\n                  return disabledTime(date, mergedActivePickerIndex.value === 0 ? 'start' : 'end');\n                }\n                return false;\n              }}\n              class={classNames({\n                [`${prefixCls}-panel-focused`]:\n                  mergedActivePickerIndex.value === 0 ? !startTyping.value : !endTyping.value,\n              })}\n              value={getValue(selectedValue.value, mergedActivePickerIndex.value)}\n              locale={locale}\n              tabIndex={-1}\n              onPanelChange={(date, newMode) => {\n                // clear hover value when panel change\n                if (mergedActivePickerIndex.value === 0) {\n                  onStartLeave(true);\n                }\n                if (mergedActivePickerIndex.value === 1) {\n                  onEndLeave(true);\n                }\n                triggerModesChange(\n                  updateValues(mergedModes.value, newMode, mergedActivePickerIndex.value),\n                  updateValues(selectedValue.value, date, mergedActivePickerIndex.value),\n                );\n\n                let viewDate = date;\n                if (\n                  panelPosition === 'right' &&\n                  mergedModes.value[mergedActivePickerIndex.value] === newMode\n                ) {\n                  viewDate = getClosingViewDate(viewDate, newMode as any, generateConfig, -1);\n                }\n                setViewDate(viewDate, mergedActivePickerIndex.value);\n              }}\n              onOk={null}\n              onSelect={undefined}\n              onChange={undefined}\n              defaultValue={\n                mergedActivePickerIndex.value === 0\n                  ? getValue(selectedValue.value, 1)\n                  : getValue(selectedValue.value, 0)\n              }\n            />\n          </RangeContextProvider>\n        );\n      }\n\n      const onContextSelect = (date: DateType, type: 'key' | 'mouse' | 'submit') => {\n        const values = updateValues(selectedValue.value, date, mergedActivePickerIndex.value);\n\n        if (type === 'submit' || (type !== 'key' && !needConfirmButton.value)) {\n          // triggerChange will also update selected values\n          triggerChange(values, mergedActivePickerIndex.value);\n          // clear hover value style\n          if (mergedActivePickerIndex.value === 0) {\n            onStartLeave();\n          } else {\n            onEndLeave();\n          }\n        } else {\n          setSelectedValue(values);\n        }\n      };\n\n      useProvidePanel({\n        operationRef,\n        hideHeader: computed(() => props.picker === 'time'),\n        onDateMouseenter,\n        onDateMouseleave,\n        hideRanges: computed(() => true),\n        onSelect: onContextSelect,\n        open: mergedOpen,\n      });\n\n      return () => {\n        const {\n          prefixCls = 'rc-picker',\n          id,\n          popupStyle,\n          dropdownClassName,\n          transitionName,\n          dropdownAlign,\n          getPopupContainer,\n          generateConfig,\n          locale,\n          placeholder,\n          autofocus,\n          picker = 'date',\n          showTime,\n          separator = '~',\n          disabledDate,\n          panelRender,\n          allowClear,\n          suffixIcon,\n          clearIcon,\n          inputReadOnly,\n          renderExtraFooter,\n          onMouseenter,\n          onMouseleave,\n          onMouseup,\n          onOk,\n          components,\n          direction,\n          autocomplete = 'off',\n        } = props;\n\n        const arrowPositionStyle =\n          direction === 'rtl'\n            ? { right: `${arrowLeft.value}px` }\n            : { left: `${arrowLeft.value}px` };\n\n        function renderPanels() {\n          let panels: VueNode;\n          const extraNode = getExtraFooter(\n            prefixCls,\n            mergedModes.value[mergedActivePickerIndex.value],\n            renderExtraFooter,\n          );\n\n          const rangesNode = getRanges({\n            prefixCls,\n            components,\n            needConfirmButton: needConfirmButton.value,\n            okDisabled:\n              !getValue(selectedValue.value, mergedActivePickerIndex.value) ||\n              (disabledDate && disabledDate(selectedValue.value[mergedActivePickerIndex.value])),\n            locale,\n            onOk: () => {\n              if (getValue(selectedValue.value, mergedActivePickerIndex.value)) {\n                // triggerChangeOld(selectedValue.value);\n                triggerChange(selectedValue.value, mergedActivePickerIndex.value);\n                if (onOk) {\n                  onOk(selectedValue.value);\n                }\n              }\n            },\n          });\n\n          if (picker !== 'time' && !showTime) {\n            const viewDate =\n              mergedActivePickerIndex.value === 0 ? startViewDate.value : endViewDate.value;\n            const nextViewDate = getClosingViewDate(viewDate, picker, generateConfig);\n            const currentMode = mergedModes.value[mergedActivePickerIndex.value];\n\n            const showDoublePanel = currentMode === picker;\n            const leftPanel = renderPanel(showDoublePanel ? 'left' : false, {\n              pickerValue: viewDate,\n              onPickerValueChange: newViewDate => {\n                setViewDate(newViewDate, mergedActivePickerIndex.value);\n              },\n            });\n            const rightPanel = renderPanel('right', {\n              pickerValue: nextViewDate,\n              onPickerValueChange: newViewDate => {\n                setViewDate(\n                  getClosingViewDate(newViewDate, picker, generateConfig, -1),\n                  mergedActivePickerIndex.value,\n                );\n              },\n            });\n\n            if (direction === 'rtl') {\n              panels = (\n                <>\n                  {rightPanel}\n                  {showDoublePanel && leftPanel}\n                </>\n              );\n            } else {\n              panels = (\n                <>\n                  {leftPanel}\n                  {showDoublePanel && rightPanel}\n                </>\n              );\n            }\n          } else {\n            panels = renderPanel();\n          }\n\n          let mergedNodes: VueNode = (\n            <div class={`${prefixCls}-panel-layout`}>\n              <PresetPanel\n                prefixCls={prefixCls}\n                presets={presetList.value}\n                onClick={nextValue => {\n                  triggerChange(nextValue, null);\n                  triggerOpen(false, mergedActivePickerIndex.value);\n                }}\n                onHover={hoverValue => {\n                  setRangeHoverValue(hoverValue);\n                }}\n              />\n              <div>\n                <div class={`${prefixCls}-panels`}>{panels}</div>\n                {(extraNode || rangesNode) && (\n                  <div class={`${prefixCls}-footer`}>\n                    {extraNode}\n                    {rangesNode}\n                  </div>\n                )}\n              </div>\n            </div>\n          );\n\n          if (panelRender) {\n            mergedNodes = panelRender(mergedNodes);\n          }\n\n          return (\n            <div\n              class={`${prefixCls}-panel-container`}\n              style={{ marginLeft: `${panelLeft.value}px` }}\n              ref={panelDivRef}\n              onMousedown={e => {\n                e.preventDefault();\n              }}\n            >\n              {mergedNodes}\n            </div>\n          );\n        }\n\n        const rangePanel = (\n          <div\n            class={classNames(`${prefixCls}-range-wrapper`, `${prefixCls}-${picker}-range-wrapper`)}\n            style={{ minWidth: `${popupMinWidth.value}px` }}\n          >\n            <div ref={arrowRef} class={`${prefixCls}-range-arrow`} style={arrowPositionStyle} />\n            {renderPanels()}\n          </div>\n        );\n\n        // ============================= Icons =============================\n        let suffixNode: VueNode;\n        if (suffixIcon) {\n          suffixNode = <span class={`${prefixCls}-suffix`}>{suffixIcon}</span>;\n        }\n\n        let clearNode: VueNode;\n        if (\n          allowClear &&\n          ((getValue(mergedValue.value, 0) && !mergedDisabled.value[0]) ||\n            (getValue(mergedValue.value, 1) && !mergedDisabled.value[1]))\n        ) {\n          clearNode = (\n            <span\n              onMousedown={e => {\n                e.preventDefault();\n                e.stopPropagation();\n              }}\n              onMouseup={e => {\n                e.preventDefault();\n                e.stopPropagation();\n                let values = mergedValue.value;\n\n                if (!mergedDisabled.value[0]) {\n                  values = updateValues(values, null, 0);\n                }\n                if (!mergedDisabled.value[1]) {\n                  values = updateValues(values, null, 1);\n                }\n\n                triggerChange(values, null);\n                triggerOpen(false, mergedActivePickerIndex.value);\n              }}\n              class={`${prefixCls}-clear`}\n            >\n              {clearIcon || <span class={`${prefixCls}-clear-btn`} />}\n            </span>\n          );\n        }\n\n        const inputSharedProps = {\n          size: getInputSize(picker, formatList.value[0], generateConfig),\n        };\n\n        let activeBarLeft = 0;\n        let activeBarWidth = 0;\n        if (startInputDivRef.value && endInputDivRef.value && separatorRef.value) {\n          if (mergedActivePickerIndex.value === 0) {\n            activeBarWidth = startInputDivRef.value.offsetWidth;\n          } else {\n            activeBarLeft = arrowLeft.value;\n            activeBarWidth = endInputDivRef.value.offsetWidth;\n          }\n        }\n        const activeBarPositionStyle =\n          direction === 'rtl' ? { right: `${activeBarLeft}px` } : { left: `${activeBarLeft}px` };\n        // ============================ Return =============================\n\n        return (\n          <div\n            ref={containerRef}\n            class={classNames(prefixCls, `${prefixCls}-range`, attrs.class, {\n              [`${prefixCls}-disabled`]: mergedDisabled.value[0] && mergedDisabled.value[1],\n              [`${prefixCls}-focused`]:\n                mergedActivePickerIndex.value === 0 ? startFocused.value : endFocused.value,\n              [`${prefixCls}-rtl`]: direction === 'rtl',\n            })}\n            style={attrs.style}\n            onClick={onPickerClick}\n            onMouseenter={onMouseenter}\n            onMouseleave={onMouseleave}\n            onMousedown={onPickerMousedown}\n            onMouseup={onMouseup}\n            {...getDataOrAriaProps(props)}\n          >\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 0,\n                [`${prefixCls}-input-placeholder`]: !!startHoverValue.value,\n              })}\n              ref={startInputDivRef}\n            >\n              <input\n                id={id}\n                disabled={mergedDisabled.value[0]}\n                readonly={\n                  inputReadOnly || typeof formatList.value[0] === 'function' || !startTyping.value\n                }\n                value={startHoverValue.value || startText.value}\n                onInput={(e: ChangeEvent) => {\n                  triggerStartTextChange(e.target.value);\n                }}\n                autofocus={autofocus}\n                placeholder={getValue(placeholder, 0) || ''}\n                ref={startInputRef}\n                {...startInputProps.value}\n                {...inputSharedProps}\n                autocomplete={autocomplete}\n              />\n            </div>\n            <div class={`${prefixCls}-range-separator`} ref={separatorRef}>\n              {separator}\n            </div>\n            <div\n              class={classNames(`${prefixCls}-input`, {\n                [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 1,\n                [`${prefixCls}-input-placeholder`]: !!endHoverValue.value,\n              })}\n              ref={endInputDivRef}\n            >\n              <input\n                disabled={mergedDisabled.value[1]}\n                readonly={\n                  inputReadOnly || typeof formatList.value[0] === 'function' || !endTyping.value\n                }\n                value={endHoverValue.value || endText.value}\n                onInput={(e: ChangeEvent) => {\n                  triggerEndTextChange(e.target.value);\n                }}\n                placeholder={getValue(placeholder, 1) || ''}\n                ref={endInputRef}\n                {...endInputProps.value}\n                {...inputSharedProps}\n                autocomplete={autocomplete}\n              />\n            </div>\n            <div\n              class={`${prefixCls}-active-bar`}\n              style={{\n                ...activeBarPositionStyle,\n                width: `${activeBarWidth}px`,\n                position: 'absolute',\n              }}\n            />\n            {suffixNode}\n            {clearNode}\n            <PickerTrigger\n              visible={mergedOpen.value}\n              popupStyle={popupStyle}\n              prefixCls={prefixCls}\n              dropdownClassName={dropdownClassName}\n              dropdownAlign={dropdownAlign}\n              getPopupContainer={getPopupContainer}\n              transitionName={transitionName}\n              range\n              direction={direction}\n              v-slots={{\n                popupElement: () => rangePanel,\n              }}\n            >\n              <div\n                style={{\n                  pointerEvents: 'none',\n                  position: 'absolute',\n                  top: 0,\n                  bottom: 0,\n                  left: 0,\n                  right: 0,\n                }}\n              ></div>\n            </PickerTrigger>\n          </div>\n        );\n      };\n    },\n  });\n}\n\nconst InterRangerPicker = RangerPicker<any>();\nexport default InterRangerPicker;\n"
  },
  {
    "path": "components/vc-picker/generate/dateFns.ts",
    "content": "import {\n  getDay,\n  getYear,\n  getMonth,\n  getDate,\n  endOfMonth,\n  getHours,\n  getMinutes,\n  getSeconds,\n  addYears,\n  addMonths,\n  addDays,\n  setYear,\n  setMonth,\n  setDate,\n  setHours,\n  setMinutes,\n  setSeconds,\n  isAfter,\n  isValid,\n  getWeek,\n  startOfWeek,\n  format as formatDate,\n  parse as parseDate,\n  isDate,\n  isMatch,\n} from 'date-fns';\nimport * as Locale from 'date-fns/locale';\nimport type { GenerateConfig } from '.';\n\nconst dealLocal = (str: string) => {\n  return str.replace(/_/g, '');\n};\n\nconst localeParse = (format: string) => {\n  return format\n    .replace(/Y/g, 'y')\n    .replace(/D/g, 'd')\n    .replace(/gggg/, 'yyyy')\n    .replace(/g/g, 'G')\n    .replace(/([Ww])o/g, 'wo');\n};\n\nconst generateConfig: GenerateConfig<Date> = {\n  // get\n  getNow: () => new Date(),\n  getFixedDate: string => new Date(string),\n  getEndDate: date => endOfMonth(date),\n  getWeekDay: date => getDay(date),\n  getYear: date => getYear(date),\n  getMonth: date => getMonth(date),\n  getDate: date => getDate(date),\n  getHour: date => getHours(date),\n  getMinute: date => getMinutes(date),\n  getSecond: date => getSeconds(date),\n\n  // set\n  addYear: (date, diff) => addYears(date, diff),\n  addMonth: (date, diff) => addMonths(date, diff),\n  addDate: (date, diff) => addDays(date, diff),\n  setYear: (date, year) => setYear(date, year),\n  setMonth: (date, month) => setMonth(date, month),\n  setDate: (date, num) => setDate(date, num),\n  setHour: (date, hour) => setHours(date, hour),\n  setMinute: (date, minute) => setMinutes(date, minute),\n  setSecond: (date, second) => setSeconds(date, second),\n\n  // Compare\n  isAfter: (date1, date2) => isAfter(date1, date2),\n  isValidate: date => isValid(date),\n\n  locale: {\n    getWeekFirstDay: locale => {\n      const clone = Locale[dealLocal(locale)];\n      return clone.options.weekStartsOn;\n    },\n    getWeekFirstDate: (locale, date) => {\n      return startOfWeek(date, { locale: Locale[dealLocal(locale)] });\n    },\n    getWeek: (locale, date) => {\n      return getWeek(date, { locale: Locale[dealLocal(locale)] });\n    },\n    getShortWeekDays: locale => {\n      const clone = Locale[dealLocal(locale)];\n      return Array.from({ length: 7 }).map((_, i) => clone.localize.day(i, { width: 'short' }));\n    },\n    getShortMonths: locale => {\n      const clone = Locale[dealLocal(locale)];\n      return Array.from({ length: 12 }).map((_, i) =>\n        clone.localize.month(i, { width: 'abbreviated' }),\n      );\n    },\n    format: (locale, date, format) => {\n      if (!isValid(date)) {\n        return null;\n      }\n      return formatDate(date, localeParse(format), {\n        locale: Locale[dealLocal(locale)],\n      });\n    },\n    parse: (locale, text, formats) => {\n      for (let i = 0; i < formats.length; i += 1) {\n        const format = localeParse(formats[i]);\n        const formatText = text;\n        const date = parseDate(formatText, format, new Date(), {\n          locale: Locale[dealLocal(locale)],\n        });\n        if (isValid(date) && formatText.length === format.length && isMatch(formatText, format)) {\n          return date;\n        }\n      }\n      return null;\n    },\n  },\n  toDate: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) =>\n        typeof val === 'string' && val ? parseDate(val, valueFormat, new Date()) : val || null,\n      ) as Date[];\n    } else {\n      return (\n        typeof value === 'string' && value\n          ? parseDate(value, valueFormat, new Date())\n          : value || null\n      ) as Date;\n    }\n  },\n  toString: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) =>\n        isDate(val) ? formatDate(val as Date, valueFormat) : val,\n      ) as string[];\n    } else {\n      return (isDate(value) ? formatDate(value as Date, valueFormat) : value) as string;\n    }\n  },\n};\n\nexport default generateConfig;\n"
  },
  {
    "path": "components/vc-picker/generate/dayjs.ts",
    "content": "import type { Dayjs } from 'dayjs';\nimport dayjs from 'dayjs';\nimport weekday from 'dayjs/plugin/weekday';\nimport localeData from 'dayjs/plugin/localeData';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport weekYear from 'dayjs/plugin/weekYear';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport type { GenerateConfig } from '.';\nimport { noteOnce } from '../../vc-util/warning';\n\ndayjs.extend(customParseFormat);\ndayjs.extend(advancedFormat);\ndayjs.extend(weekday);\ndayjs.extend(localeData);\ndayjs.extend(weekOfYear);\ndayjs.extend(weekYear);\ndayjs.extend(quarterOfYear);\n\ndayjs.extend((_o, c) => {\n  // todo support Wo (ISO week)\n  const proto = c.prototype;\n  const oldFormat = proto.format;\n  proto.format = function f(formatStr: string) {\n    const str = (formatStr || '').replace('Wo', 'wo');\n    return oldFormat.bind(this)(str);\n  };\n});\n\ntype IlocaleMapObject = Record<string, string>;\nconst localeMap: IlocaleMapObject = {\n  // ar_EG:\n  // az_AZ:\n  // bg_BG:\n  bn_BD: 'bn-bd',\n  by_BY: 'be',\n  // ca_ES:\n  // cs_CZ:\n  // da_DK:\n  // de_DE:\n  // el_GR:\n  en_GB: 'en-gb',\n  en_US: 'en',\n  // es_ES:\n  // et_EE:\n  // fa_IR:\n  // fi_FI:\n  fr_BE: 'fr', // todo: dayjs has no fr_BE locale, use fr at present\n  fr_CA: 'fr-ca',\n  // fr_FR:\n  // ga_IE:\n  // gl_ES:\n  // he_IL:\n  // hi_IN:\n  // hr_HR:\n  // hu_HU:\n  hy_AM: 'hy-am',\n  // id_ID:\n  // is_IS:\n  // it_IT:\n  // ja_JP:\n  // ka_GE:\n  // kk_KZ:\n  // km_KH:\n  kmr_IQ: 'ku',\n  // kn_IN:\n  // ko_KR:\n  // ku_IQ: // previous ku in antd\n  // lt_LT:\n  // lv_LV:\n  // mk_MK:\n  // ml_IN:\n  // mn_MN:\n  // ms_MY:\n  // nb_NO:\n  // ne_NP:\n  nl_BE: 'nl-be',\n  // nl_NL:\n  // pl_PL:\n  pt_BR: 'pt-br',\n  // pt_PT:\n  // ro_RO:\n  // ru_RU:\n  // sk_SK:\n  // sl_SI:\n  // sr_RS:\n  // sv_SE:\n  // ta_IN:\n  // th_TH:\n  // tr_TR:\n  // uk_UA:\n  // ur_PK:\n  // vi_VN:\n  zh_CN: 'zh-cn',\n  zh_HK: 'zh-hk',\n  zh_TW: 'zh-tw',\n};\n\nconst parseLocale = (locale: string) => {\n  const mapLocale = localeMap[locale];\n  return mapLocale || locale.split('_')[0];\n};\n\nconst parseNoMatchNotice = () => {\n  /* istanbul ignore next */\n  noteOnce(false, 'Not match any format. Please help to fire a issue about this.');\n};\n\nconst advancedFormatRegex = /\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|k{1,2}|S/g;\n\nfunction findTargetStr(val: string, index: number, segmentation: string) {\n  const items = [...new Set(val.split(segmentation))];\n  let idx = 0;\n  for (let i = 0; i < items.length; i++) {\n    const item = items[i];\n    idx += item.length;\n    if (idx > index) {\n      return item;\n    }\n    idx += segmentation.length;\n  }\n}\n\nconst toDateWithValueFormat = (val: string | Dayjs, valueFormat: string) => {\n  if (!val) return null;\n  if (dayjs.isDayjs(val)) {\n    return val;\n  }\n  const matchs = valueFormat.matchAll(advancedFormatRegex);\n  let baseDate = dayjs(val, valueFormat);\n  if (matchs === null) {\n    return baseDate;\n  }\n  for (const match of matchs) {\n    const origin = match[0];\n    const index = match['index'];\n\n    if (origin === 'Q') {\n      const segmentation = val.slice(index - 1, index);\n      const quarterStr = findTargetStr(val, index, segmentation).match(/\\d+/)[0];\n      baseDate = baseDate.quarter(parseInt(quarterStr));\n    }\n\n    if (origin.toLowerCase() === 'wo') {\n      const segmentation = val.slice(index - 1, index);\n      const weekStr = findTargetStr(val, index, segmentation).match(/\\d+/)[0];\n      baseDate = baseDate.week(parseInt(weekStr));\n    }\n\n    if (origin.toLowerCase() === 'ww') {\n      baseDate = baseDate.week(parseInt(val.slice(index, index + origin.length)));\n    }\n\n    if (origin.toLowerCase() === 'w') {\n      baseDate = baseDate.week(parseInt(val.slice(index, index + origin.length + 1)));\n    }\n  }\n\n  return baseDate;\n};\n\nconst generateConfig: GenerateConfig<Dayjs> = {\n  // get\n  getNow: () => dayjs(),\n  getFixedDate: string => dayjs(string, ['YYYY-M-DD', 'YYYY-MM-DD']),\n  getEndDate: date => date.endOf('month'),\n  getWeekDay: date => {\n    const clone = date.locale('en');\n    return clone.weekday() + clone.localeData().firstDayOfWeek();\n  },\n  getYear: date => date.year(),\n  getMonth: date => date.month(),\n  getDate: date => date.date(),\n  getHour: date => date.hour(),\n  getMinute: date => date.minute(),\n  getSecond: date => date.second(),\n\n  // set\n  addYear: (date, diff) => date.add(diff, 'year'),\n  addMonth: (date, diff) => date.add(diff, 'month'),\n  addDate: (date, diff) => date.add(diff, 'day'),\n  setYear: (date, year) => date.year(year),\n  setMonth: (date, month) => date.month(month),\n  setDate: (date, num) => date.date(num),\n  setHour: (date, hour) => date.hour(hour),\n  setMinute: (date, minute) => date.minute(minute),\n  setSecond: (date, second) => date.second(second),\n\n  // Compare\n  isAfter: (date1, date2) => date1.isAfter(date2),\n  isValidate: date => date.isValid(),\n\n  locale: {\n    getWeekFirstDay: locale => dayjs().locale(parseLocale(locale)).localeData().firstDayOfWeek(),\n    getWeekFirstDate: (locale, date) => date.locale(parseLocale(locale)).weekday(0),\n    getWeek: (locale, date) => date.locale(parseLocale(locale)).week(),\n    getShortWeekDays: locale => dayjs().locale(parseLocale(locale)).localeData().weekdaysMin(),\n    getShortMonths: locale => dayjs().locale(parseLocale(locale)).localeData().monthsShort(),\n    format: (locale, date, format) => date.locale(parseLocale(locale)).format(format),\n    parse: (locale, text, formats) => {\n      const localeStr = parseLocale(locale);\n      for (let i = 0; i < formats.length; i += 1) {\n        const format = formats[i];\n        const formatText = text;\n        if (format.includes('wo') || format.includes('Wo')) {\n          // parse Wo\n          const year = formatText.split('-')[0];\n          const weekStr = formatText.split('-')[1];\n          const firstWeek = dayjs(year, 'YYYY').startOf('year').locale(localeStr);\n          for (let j = 0; j <= 52; j += 1) {\n            const nextWeek = firstWeek.add(j, 'week');\n            if (nextWeek.format('Wo') === weekStr) {\n              return nextWeek;\n            }\n          }\n          parseNoMatchNotice();\n          return null;\n        }\n        const date = dayjs(formatText, format, true).locale(localeStr);\n        if (date.isValid()) {\n          return date;\n        }\n      }\n\n      if (!text) {\n        parseNoMatchNotice();\n      }\n      return null;\n    },\n  },\n\n  toDate: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) => toDateWithValueFormat(val, valueFormat)) as Dayjs[];\n    } else {\n      return toDateWithValueFormat(value, valueFormat) as Dayjs;\n    }\n  },\n  toString: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) => (dayjs.isDayjs(val) ? val.format(valueFormat) : val));\n    } else {\n      return dayjs.isDayjs(value) ? value.format(valueFormat) : value;\n    }\n  },\n};\n\nexport default generateConfig;\n"
  },
  {
    "path": "components/vc-picker/generate/index.ts",
    "content": "export type GenerateConfig<DateType> = {\n  // Get\n  getWeekDay: (value: DateType) => number;\n  getSecond: (value: DateType) => number;\n  getMinute: (value: DateType) => number;\n  getHour: (value: DateType) => number;\n  getDate: (value: DateType) => number;\n  getMonth: (value: DateType) => number;\n  getYear: (value: DateType) => number;\n  getNow: () => DateType;\n  getFixedDate: (fixed: string) => DateType;\n  getEndDate: (value: DateType) => DateType;\n\n  // Set\n  addYear: (value: DateType, diff: number) => DateType;\n  addMonth: (value: DateType, diff: number) => DateType;\n  addDate: (value: DateType, diff: number) => DateType;\n  setYear: (value: DateType, year: number) => DateType;\n  setMonth: (value: DateType, month: number) => DateType;\n  setDate: (value: DateType, date: number) => DateType;\n  setHour: (value: DateType, hour: number) => DateType;\n  setMinute: (value: DateType, minute: number) => DateType;\n  setSecond: (value: DateType, second: number) => DateType;\n\n  // Compare\n  isAfter: (date1: DateType, date2: DateType) => boolean;\n  isValidate: (date: DateType) => boolean;\n\n  toDate: (\n    value: string | string[] | DateType | DateType[],\n    valueFormat: string,\n  ) => DateType | DateType[];\n  toString: (\n    value: string | string[] | DateType | DateType[],\n    valueFormat: string,\n  ) => string | string[];\n  locale: {\n    getWeekFirstDay: (locale: string) => number;\n    getWeekFirstDate: (locale: string, value: DateType) => DateType;\n    getWeek: (locale: string, value: DateType) => number;\n\n    format: (locale: string, date: DateType, format: string) => string;\n\n    /** Should only return validate date instance */\n    parse: (locale: string, text: string, formats: string[]) => DateType | null;\n\n    /** A proxy for getting locale with moment or other locale library */\n    getShortWeekDays?: (locale: string) => string[];\n    /** A proxy for getting locale with moment or other locale library */\n    getShortMonths?: (locale: string) => string[];\n  };\n};\n"
  },
  {
    "path": "components/vc-picker/generate/moment.ts",
    "content": "import { noteOnce } from '../../vc-util/warning';\nimport type { Moment } from 'moment';\nimport moment from 'moment';\nimport type { GenerateConfig } from '.';\n\nconst generateConfig: GenerateConfig<Moment> = {\n  // get\n  getNow: () => moment(),\n  getFixedDate: string => moment(string, 'YYYY-MM-DD'),\n  getEndDate: date => {\n    const clone = date.clone();\n    return clone.endOf('month');\n  },\n  getWeekDay: date => {\n    const clone = date.clone().locale('en_US');\n    return clone.weekday() + clone.localeData().firstDayOfWeek();\n  },\n  getYear: date => date.year(),\n  getMonth: date => date.month(),\n  getDate: date => date.date(),\n  getHour: date => date.hour(),\n  getMinute: date => date.minute(),\n  getSecond: date => date.second(),\n\n  // set\n  addYear: (date, diff) => {\n    const clone = date.clone();\n    return clone.add(diff, 'year');\n  },\n  addMonth: (date, diff) => {\n    const clone = date.clone();\n    return clone.add(diff, 'month');\n  },\n  addDate: (date, diff) => {\n    const clone = date.clone();\n    return clone.add(diff, 'day');\n  },\n  setYear: (date, year) => {\n    const clone = date.clone();\n    return clone.year(year);\n  },\n  setMonth: (date, month) => {\n    const clone = date.clone();\n    return clone.month(month);\n  },\n  setDate: (date, num) => {\n    const clone = date.clone();\n    return clone.date(num);\n  },\n  setHour: (date, hour) => {\n    const clone = date.clone();\n    return clone.hour(hour);\n  },\n  setMinute: (date, minute) => {\n    const clone = date.clone();\n    return clone.minute(minute);\n  },\n  setSecond: (date, second) => {\n    const clone = date.clone();\n    return clone.second(second);\n  },\n\n  // Compare\n  isAfter: (date1, date2) => date1.isAfter(date2),\n  isValidate: date => date.isValid(),\n\n  locale: {\n    getWeekFirstDay: locale => {\n      const date = moment().locale(locale);\n      return date.localeData().firstDayOfWeek();\n    },\n    getWeekFirstDate: (locale, date) => {\n      const clone = date.clone();\n      const result = clone.locale(locale);\n      return result.weekday(0);\n    },\n    getWeek: (locale, date) => {\n      const clone = date.clone();\n      const result = clone.locale(locale);\n      return result.week();\n    },\n    getShortWeekDays: locale => {\n      const date = moment().locale(locale);\n      return date.localeData().weekdaysMin();\n    },\n    getShortMonths: locale => {\n      const date = moment().locale(locale);\n      return date.localeData().monthsShort();\n    },\n    format: (locale, date, format) => {\n      const clone = date.clone();\n      const result = clone.locale(locale);\n      return result.format(format);\n    },\n    parse: (locale, text, formats) => {\n      const fallbackFormatList: string[] = [];\n\n      for (let i = 0; i < formats.length; i += 1) {\n        let format = formats[i];\n        let formatText = text;\n\n        if (format.includes('wo') || format.includes('Wo')) {\n          format = format.replace(/wo/g, 'w').replace(/Wo/g, 'W');\n          const matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g);\n          const matchText = formatText.match(/[-\\d]+/g);\n\n          if (matchFormat && matchText) {\n            format = matchFormat.join('');\n            formatText = matchText.join('');\n          } else {\n            fallbackFormatList.push(format.replace(/o/g, ''));\n          }\n        }\n\n        const date = moment(formatText, format, locale, true);\n        if (date.isValid()) {\n          return date;\n        }\n      }\n\n      // Fallback to fuzzy matching, this should always not reach match or need fire a issue\n      for (let i = 0; i < fallbackFormatList.length; i += 1) {\n        const date = moment(text, fallbackFormatList[i], locale, false);\n\n        /* istanbul ignore next */\n        if (date.isValid()) {\n          noteOnce(\n            false,\n            'Not match any format strictly and fallback to fuzzy match. Please help to fire a issue about this.',\n          );\n          return date;\n        }\n      }\n\n      return null;\n    },\n  },\n  toDate: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) =>\n        typeof val === 'string' && val ? moment(val, valueFormat) : val || null,\n      ) as Moment[];\n    } else {\n      return (\n        typeof value === 'string' && value ? moment(value, valueFormat) : value || null\n      ) as Moment;\n    }\n  },\n  toString: (value, valueFormat) => {\n    if (Array.isArray(value)) {\n      return value.map((val: any) => (moment.isMoment(val) ? val.format(valueFormat) : val));\n    } else {\n      return moment.isMoment(value) ? value.format(valueFormat) : value;\n    }\n  },\n};\n\nexport default generateConfig;\n"
  },
  {
    "path": "components/vc-picker/hooks/useCellClassName.ts",
    "content": "import { isInRange } from '../utils/dateUtil';\nimport type { GenerateConfig } from '../generate';\nimport type { RangeValue, NullableDateType } from '../interface';\nimport { getValue } from '../utils/miscUtil';\n\nexport default function useCellClassName<DateType>({\n  cellPrefixCls,\n  generateConfig,\n  rangedValue,\n  hoverRangedValue,\n  isInView,\n  isSameCell,\n  offsetCell,\n  today,\n  value,\n}: {\n  cellPrefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  isSameCell: (current: NullableDateType<DateType>, target: NullableDateType<DateType>) => boolean;\n  offsetCell: (date: DateType, offset: number) => DateType;\n  isInView: (date: DateType) => boolean;\n  rangedValue?: RangeValue<DateType>;\n  hoverRangedValue?: RangeValue<DateType>;\n  today?: NullableDateType<DateType>;\n  value?: NullableDateType<DateType>;\n}) {\n  function getClassName(currentDate: DateType) {\n    const prevDate = offsetCell(currentDate, -1);\n    const nextDate = offsetCell(currentDate, 1);\n\n    const rangeStart = getValue(rangedValue, 0);\n    const rangeEnd = getValue(rangedValue, 1);\n\n    const hoverStart = getValue(hoverRangedValue, 0);\n    const hoverEnd = getValue(hoverRangedValue, 1);\n\n    const isRangeHovered = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);\n\n    function isRangeStart(date: DateType) {\n      return isSameCell(rangeStart, date);\n    }\n    function isRangeEnd(date: DateType) {\n      return isSameCell(rangeEnd, date);\n    }\n    const isHoverStart = isSameCell(hoverStart, currentDate);\n    const isHoverEnd = isSameCell(hoverEnd, currentDate);\n\n    const isHoverEdgeStart =\n      (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate));\n    const isHoverEdgeEnd =\n      (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate));\n\n    return {\n      // In view\n      [`${cellPrefixCls}-in-view`]: isInView(currentDate),\n\n      // Range\n      [`${cellPrefixCls}-in-range`]: isInRange<DateType>(\n        generateConfig,\n        rangeStart,\n        rangeEnd,\n        currentDate,\n      ),\n      [`${cellPrefixCls}-range-start`]: isRangeStart(currentDate),\n      [`${cellPrefixCls}-range-end`]: isRangeEnd(currentDate),\n      [`${cellPrefixCls}-range-start-single`]: isRangeStart(currentDate) && !rangeEnd,\n      [`${cellPrefixCls}-range-end-single`]: isRangeEnd(currentDate) && !rangeStart,\n      [`${cellPrefixCls}-range-start-near-hover`]:\n        isRangeStart(currentDate) &&\n        (isSameCell(prevDate, hoverStart) ||\n          isInRange(generateConfig, hoverStart, hoverEnd, prevDate)),\n      [`${cellPrefixCls}-range-end-near-hover`]:\n        isRangeEnd(currentDate) &&\n        (isSameCell(nextDate, hoverEnd) ||\n          isInRange(generateConfig, hoverStart, hoverEnd, nextDate)),\n\n      // Range Hover\n      [`${cellPrefixCls}-range-hover`]: isRangeHovered,\n      [`${cellPrefixCls}-range-hover-start`]: isHoverStart,\n      [`${cellPrefixCls}-range-hover-end`]: isHoverEnd,\n\n      // Range Edge\n      [`${cellPrefixCls}-range-hover-edge-start`]: isHoverEdgeStart,\n      [`${cellPrefixCls}-range-hover-edge-end`]: isHoverEdgeEnd,\n      [`${cellPrefixCls}-range-hover-edge-start-near-range`]:\n        isHoverEdgeStart && isSameCell(prevDate, rangeEnd),\n      [`${cellPrefixCls}-range-hover-edge-end-near-range`]:\n        isHoverEdgeEnd && isSameCell(nextDate, rangeStart),\n\n      // Others\n      [`${cellPrefixCls}-today`]: isSameCell(today, currentDate),\n      [`${cellPrefixCls}-selected`]: isSameCell(value, currentDate),\n    };\n  }\n\n  return getClassName;\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useHoverValue.ts",
    "content": "import raf from '../../_util/raf';\nimport type { ComputedRef, Ref, UnwrapRef } from 'vue';\nimport { ref, onBeforeUnmount, watch } from 'vue';\nimport type { ValueTextConfig } from './useValueTexts';\nimport useValueTexts from './useValueTexts';\n\nexport default function useHoverValue<DateType>(\n  valueText: Ref<string>,\n  { formatList, generateConfig, locale }: ValueTextConfig<DateType>,\n): [ComputedRef<string>, (date: DateType) => void, (immediately?: boolean) => void] {\n  const innerValue = ref<DateType>(null);\n  let rafId: number;\n\n  function setValue(val: DateType, immediately = false) {\n    raf.cancel(rafId);\n    if (immediately) {\n      innerValue.value = val as UnwrapRef<DateType>;\n      return;\n    }\n    rafId = raf(() => {\n      innerValue.value = val as UnwrapRef<DateType>;\n    });\n  }\n\n  const [, firstText] = useValueTexts(innerValue as Ref<DateType>, {\n    formatList,\n    generateConfig,\n    locale,\n  });\n  function onEnter(date: DateType) {\n    setValue(date);\n  }\n\n  function onLeave(immediately = false) {\n    setValue(null, immediately);\n  }\n\n  watch(valueText, () => {\n    onLeave(true);\n  });\n  onBeforeUnmount(() => {\n    raf.cancel(rafId);\n  });\n\n  return [firstText, onEnter, onLeave];\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useMergeProps.ts",
    "content": "import type { HTMLAttributes } from 'vue';\nimport { useAttrs } from 'vue';\n\n// 仅用在函数式组件中，不用考虑响应式问题\nexport default function useMergeProps<T>(props: T) {\n  const attrs: HTMLAttributes = useAttrs();\n  return { ...props, ...attrs };\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/usePickerInput.ts",
    "content": "import type { ComputedRef, HTMLAttributes, Ref } from 'vue';\nimport { onBeforeUnmount, onMounted, watch, shallowRef, computed } from 'vue';\nimport type { FocusEventHandler } from '../../_util/EventInterface';\nimport KeyCode from '../../_util/KeyCode';\nimport { addGlobalMousedownEvent, getTargetFromEvent } from '../utils/uiUtil';\nimport raf from '../../_util/raf';\n\nexport default function usePickerInput({\n  open,\n  value,\n  isClickOutside,\n  triggerOpen,\n  forwardKeydown,\n  onKeydown,\n  blurToCancel,\n  onSubmit,\n  onCancel,\n  onFocus,\n  onBlur,\n}: {\n  open: Ref<boolean>;\n  value: Ref<string>;\n  isClickOutside: (clickElement: EventTarget | null) => boolean;\n  triggerOpen: (open: boolean) => void;\n  forwardKeydown: (e: KeyboardEvent) => boolean;\n  onKeydown: (e: KeyboardEvent, preventDefault: () => void) => void;\n  blurToCancel?: ComputedRef<boolean>;\n  onSubmit: () => void | boolean;\n  onCancel: () => void;\n  onFocus?: FocusEventHandler;\n  onBlur?: FocusEventHandler;\n}): [ComputedRef<HTMLAttributes>, { focused: Ref<boolean>; typing: Ref<boolean> }] {\n  const typing = shallowRef(false);\n  const focused = shallowRef(false);\n\n  /**\n   * We will prevent blur to handle open event when user click outside,\n   * since this will repeat trigger `onOpenChange` event.\n   */\n  const preventBlurRef = shallowRef<boolean>(false);\n\n  const valueChangedRef = shallowRef<boolean>(false);\n\n  const preventDefaultRef = shallowRef<boolean>(false);\n\n  const inputProps = computed<HTMLAttributes>(() => ({\n    onMousedown: () => {\n      typing.value = true;\n      triggerOpen(true);\n    },\n    onKeydown: e => {\n      const preventDefault = (): void => {\n        preventDefaultRef.value = true;\n      };\n\n      onKeydown(e, preventDefault);\n\n      if (preventDefaultRef.value) return;\n\n      switch (e.which) {\n        case KeyCode.ENTER: {\n          if (!open.value) {\n            triggerOpen(true);\n          } else if (onSubmit() !== false) {\n            typing.value = true;\n          }\n\n          e.preventDefault();\n          return;\n        }\n\n        case KeyCode.TAB: {\n          if (typing.value && open.value && !e.shiftKey) {\n            typing.value = false;\n            e.preventDefault();\n          } else if (!typing.value && open.value) {\n            if (!forwardKeydown(e) && e.shiftKey) {\n              typing.value = true;\n              e.preventDefault();\n            }\n          }\n          return;\n        }\n\n        case KeyCode.ESC: {\n          typing.value = true;\n          onCancel();\n          return;\n        }\n      }\n\n      if (!open.value && ![KeyCode.SHIFT].includes(e.which)) {\n        triggerOpen(true);\n      } else if (!typing.value) {\n        // Let popup panel handle keyboard\n        forwardKeydown(e);\n      }\n    },\n\n    onFocus: e => {\n      typing.value = true;\n      focused.value = true;\n\n      if (onFocus) {\n        onFocus(e);\n      }\n    },\n\n    onBlur: e => {\n      if (preventBlurRef.value || !isClickOutside(document.activeElement)) {\n        preventBlurRef.value = false;\n        return;\n      }\n\n      if (blurToCancel.value) {\n        setTimeout(() => {\n          let { activeElement } = document;\n          while (activeElement && activeElement.shadowRoot) {\n            activeElement = activeElement.shadowRoot.activeElement;\n          }\n\n          if (isClickOutside(activeElement)) {\n            onCancel();\n          }\n        }, 0);\n      } else if (open.value) {\n        triggerOpen(false);\n\n        if (valueChangedRef.value) {\n          onSubmit();\n        }\n      }\n      focused.value = false;\n\n      if (onBlur) {\n        onBlur(e);\n      }\n    },\n  }));\n\n  // check if value changed\n  watch(open, () => {\n    valueChangedRef.value = false;\n  });\n\n  watch(value, () => {\n    valueChangedRef.value = true;\n  });\n  const globalMousedownEvent = shallowRef();\n  // Global click handler\n  onMounted(() => {\n    globalMousedownEvent.value = addGlobalMousedownEvent((e: MouseEvent) => {\n      const target = getTargetFromEvent(e);\n\n      if (open.value) {\n        const clickedOutside = isClickOutside(target);\n\n        if (!clickedOutside) {\n          preventBlurRef.value = true;\n\n          // Always set back in case `onBlur` prevented by user\n          raf(() => {\n            preventBlurRef.value = false;\n          });\n        } else if (!focused.value || clickedOutside) {\n          triggerOpen(false);\n        }\n      }\n    });\n  });\n  onBeforeUnmount(() => {\n    globalMousedownEvent.value && globalMousedownEvent.value();\n  });\n\n  return [inputProps, { focused, typing }];\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/usePresets.ts",
    "content": "import type { ComputedRef } from 'vue';\nimport { computed } from 'vue';\n\nimport warning from '../../vc-util/warning';\nimport type { PresetDate } from '../interface';\n\nexport default function usePresets<T>(\n  presets?: ComputedRef<PresetDate<T>[]>,\n  legacyRanges?: ComputedRef<Record<string, T | (() => T)>>,\n): ComputedRef<PresetDate<T>[]> {\n  return computed(() => {\n    if (presets?.value) {\n      return presets.value;\n    }\n    if (legacyRanges?.value) {\n      warning(false, '`ranges` is deprecated. Please use `presets` instead.');\n\n      const rangeLabels = Object.keys(legacyRanges.value);\n      return rangeLabels.map(label => {\n        const range = legacyRanges.value[label];\n        const newValues = typeof range === 'function' ? (range as any)() : range;\n        return {\n          label,\n          value: newValues,\n        };\n      });\n    }\n    return [] as unknown as PresetDate<T>[];\n  });\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useRangeDisabled.ts",
    "content": "import type { RangeValue, PickerMode, Locale } from '../interface';\nimport { getValue } from '../utils/miscUtil';\nimport type { GenerateConfig } from '../generate';\nimport { isSameDate, getQuarter } from '../utils/dateUtil';\nimport type { ComputedRef, Ref } from 'vue';\nimport { computed } from 'vue';\n\nexport default function useRangeDisabled<DateType>(\n  {\n    picker,\n    locale,\n    selectedValue,\n    disabledDate,\n    disabled,\n    generateConfig,\n  }: {\n    picker: Ref<PickerMode>;\n    selectedValue: Ref<RangeValue<DateType>>;\n    disabledDate?: Ref<(date: DateType) => boolean>;\n    disabled: ComputedRef<[boolean, boolean]>;\n    locale: Ref<Locale>;\n    generateConfig: Ref<GenerateConfig<DateType>>;\n  },\n  openRecordsRef: Ref<{\n    [x: number]: boolean;\n  }>,\n) {\n  const startDate = computed(() => getValue(selectedValue.value, 0));\n  const endDate = computed(() => getValue(selectedValue.value, 1));\n\n  function weekFirstDate(date: DateType) {\n    return generateConfig.value.locale.getWeekFirstDate(locale.value.locale, date);\n  }\n\n  function monthNumber(date: DateType) {\n    const year = generateConfig.value.getYear(date);\n    const month = generateConfig.value.getMonth(date);\n    return year * 100 + month;\n  }\n\n  function quarterNumber(date: DateType) {\n    const year = generateConfig.value.getYear(date);\n    const quarter = getQuarter(generateConfig.value, date);\n    return year * 10 + quarter;\n  }\n\n  const disabledStartDate = (date: DateType) => {\n    if (disabledDate && disabledDate?.value?.(date)) {\n      return true;\n    }\n\n    // Disabled range\n    if (disabled[1] && endDate) {\n      return (\n        !isSameDate(generateConfig.value, date, endDate.value) &&\n        generateConfig.value.isAfter(date, endDate.value)\n      );\n    }\n\n    // Disabled part\n    if (openRecordsRef.value[1] && endDate.value) {\n      switch (picker.value) {\n        case 'quarter':\n          return quarterNumber(date) > quarterNumber(endDate.value);\n        case 'month':\n          return monthNumber(date) > monthNumber(endDate.value);\n        case 'week':\n          return weekFirstDate(date) > weekFirstDate(endDate.value);\n        default:\n          return (\n            !isSameDate(generateConfig.value, date, endDate.value) &&\n            generateConfig.value.isAfter(date, endDate.value)\n          );\n      }\n    }\n\n    return false;\n  };\n\n  const disabledEndDate = (date: DateType) => {\n    if (disabledDate.value?.(date)) {\n      return true;\n    }\n\n    // Disabled range\n    if (disabled[0] && startDate) {\n      return (\n        !isSameDate(generateConfig.value, date, endDate.value) &&\n        generateConfig.value.isAfter(startDate.value, date)\n      );\n    }\n\n    // Disabled part\n    if (openRecordsRef.value[0] && startDate.value) {\n      switch (picker.value) {\n        case 'quarter':\n          return quarterNumber(date) < quarterNumber(startDate.value);\n        case 'month':\n          return monthNumber(date) < monthNumber(startDate.value);\n        case 'week':\n          return weekFirstDate(date) < weekFirstDate(startDate.value);\n        default:\n          return (\n            !isSameDate(generateConfig.value, date, startDate.value) &&\n            generateConfig.value.isAfter(startDate.value, date)\n          );\n      }\n    }\n\n    return false;\n  };\n\n  return [disabledStartDate, disabledEndDate];\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useRangeViewDates.ts",
    "content": "import type { RangeValue, PickerMode } from '../interface';\nimport type { GenerateConfig } from '../generate';\nimport { getValue, updateValues } from '../utils/miscUtil';\nimport { getClosingViewDate, isSameYear, isSameMonth, isSameDecade } from '../utils/dateUtil';\nimport type { Ref } from 'vue';\nimport { watchEffect, computed, ref } from 'vue';\n\nfunction getStartEndDistance<DateType>(\n  startDate: DateType,\n  endDate: DateType,\n  picker: PickerMode,\n  generateConfig: GenerateConfig<DateType>,\n): 'same' | 'closing' | 'far' {\n  const startNext = getClosingViewDate(startDate, picker, generateConfig, 1);\n\n  function getDistance(compareFunc: (start: DateType | null, end: DateType | null) => boolean) {\n    if (compareFunc(startDate, endDate)) {\n      return 'same';\n    }\n    if (compareFunc(startNext, endDate)) {\n      return 'closing';\n    }\n    return 'far';\n  }\n\n  switch (picker) {\n    case 'year':\n      return getDistance((start, end) => isSameDecade(generateConfig, start, end));\n    case 'quarter':\n    case 'month':\n      return getDistance((start, end) => isSameYear(generateConfig, start, end));\n    default:\n      return getDistance((start, end) => isSameMonth(generateConfig, start, end));\n  }\n}\n\nfunction getRangeViewDate<DateType>(\n  values: RangeValue<DateType>,\n  index: 0 | 1,\n  picker: PickerMode,\n  generateConfig: GenerateConfig<DateType>,\n): DateType | null {\n  const startDate = getValue(values, 0);\n  const endDate = getValue(values, 1);\n\n  if (index === 0) {\n    return startDate;\n  }\n\n  if (startDate && endDate) {\n    const distance = getStartEndDistance(startDate, endDate, picker, generateConfig);\n    switch (distance) {\n      case 'same':\n        return startDate;\n      case 'closing':\n        return startDate;\n      default:\n        return getClosingViewDate(endDate, picker, generateConfig, -1);\n    }\n  }\n\n  return startDate;\n}\n\nexport default function useRangeViewDates<DateType>({\n  values,\n  picker,\n  defaultDates,\n  generateConfig,\n}: {\n  values: Ref<RangeValue<DateType>>;\n  picker: Ref<PickerMode>;\n  defaultDates: RangeValue<DateType> | undefined;\n  generateConfig: Ref<GenerateConfig<DateType>>;\n}): [Ref<DateType>, Ref<DateType>, (viewDate: DateType | null, index: 0 | 1) => void] {\n  const defaultViewDates = ref<[DateType | null, DateType | null]>([\n    getValue(defaultDates, 0),\n    getValue(defaultDates, 1),\n  ]);\n  const viewDates = ref<RangeValue<DateType>>(null);\n  const startDate = computed(() => getValue(values.value, 0));\n  const endDate = computed(() => getValue(values.value, 1));\n\n  const getViewDate = (index: 0 | 1): DateType => {\n    // If set default view date, use it\n    if (defaultViewDates.value[index]) {\n      return defaultViewDates.value[index]! as DateType;\n    }\n\n    return (\n      (getValue(viewDates.value, index) as any) ||\n      getRangeViewDate(values.value, index, picker.value, generateConfig.value) ||\n      startDate.value ||\n      endDate.value ||\n      generateConfig.value.getNow()\n    );\n  };\n\n  const startViewDate = ref(null);\n\n  const endViewDate = ref(null);\n  watchEffect(() => {\n    startViewDate.value = getViewDate(0);\n    endViewDate.value = getViewDate(1);\n  });\n\n  function setViewDate(viewDate: DateType | null, index: 0 | 1) {\n    if (viewDate) {\n      let newViewDates = updateValues(viewDates.value, viewDate as any, index);\n      // Set view date will clean up default one\n      // Should always be an array\n      defaultViewDates.value = updateValues(defaultViewDates.value, null, index) || [null, null];\n\n      // Reset another one when not have value\n      const anotherIndex = (index + 1) % 2;\n      if (!getValue(values.value, anotherIndex)) {\n        newViewDates = updateValues(newViewDates, viewDate, anotherIndex);\n      }\n\n      viewDates.value = newViewDates;\n    } else if (startDate.value || endDate.value) {\n      // Reset all when has values when `viewDate` is `null` which means from open trigger\n      viewDates.value = null;\n    }\n  }\n\n  return [startViewDate, endViewDate, setViewDate];\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useTextValueMapping.ts",
    "content": "import type { ComputedRef, Ref } from 'vue';\nimport { ref, watch } from 'vue';\n\nexport default function useTextValueMapping({\n  valueTexts,\n  onTextChange,\n}: {\n  /** Must useMemo, to assume that `valueTexts` only match on the first change */\n  valueTexts: ComputedRef<string[]>;\n  onTextChange: (text: string) => void;\n}): [Ref<string>, (text: string) => void, () => void] {\n  const text = ref('');\n\n  function triggerTextChange(value: string) {\n    text.value = value;\n    onTextChange(value);\n  }\n\n  function resetText() {\n    text.value = valueTexts.value[0];\n  }\n\n  watch(\n    () => [...valueTexts.value],\n    (cur, pre = []) => {\n      if (\n        cur.join('||') !== pre.join('||') &&\n        valueTexts.value.every(valText => valText !== text.value)\n      ) {\n        resetText();\n      }\n    },\n    { immediate: true },\n  );\n\n  return [text, triggerTextChange, resetText];\n}\n"
  },
  {
    "path": "components/vc-picker/hooks/useValueTexts.ts",
    "content": "import type { ComputedRef, Ref } from 'vue';\nimport { computed } from 'vue';\nimport useMemo from '../../_util/hooks/useMemo';\nimport shallowequal from '../../_util/shallowequal';\nimport type { GenerateConfig } from '../generate';\nimport type { CustomFormat, Locale } from '../interface';\nimport { formatValue } from '../utils/dateUtil';\n\nexport type ValueTextConfig<DateType> = {\n  formatList: ComputedRef<(string | CustomFormat<DateType>)[]>;\n  generateConfig: Ref<GenerateConfig<DateType>>;\n  locale: Ref<Locale>;\n};\n\nexport default function useValueTexts<DateType>(\n  value: Ref<DateType | null>,\n  { formatList, generateConfig, locale }: ValueTextConfig<DateType>,\n): [ComputedRef<string[]>, ComputedRef<string>] {\n  const texts = useMemo<[string[], string]>(\n    () => {\n      if (!value.value) {\n        return [[''], ''];\n      }\n\n      // We will convert data format back to first format\n      let firstValueText = '';\n      const fullValueTexts: string[] = [];\n\n      for (let i = 0; i < formatList.value.length; i += 1) {\n        const format = formatList.value[i];\n        const formatStr = formatValue(value.value, {\n          generateConfig: generateConfig.value,\n          locale: locale.value,\n          format,\n        });\n        fullValueTexts.push(formatStr);\n\n        if (i === 0) {\n          firstValueText = formatStr;\n        }\n      }\n\n      return [fullValueTexts, firstValueText];\n    },\n    [value, formatList],\n    (next, prev) => prev[0] !== next[0] || !shallowequal(prev[1], next[1]),\n  );\n  const fullValueTexts = computed(() => texts.value[0]);\n  const firstValueText = computed(() => texts.value[1]);\n  return [fullValueTexts, firstValueText];\n}\n"
  },
  {
    "path": "components/vc-picker/index.tsx",
    "content": "// 2.6.7\nimport type { PickerProps } from './Picker';\nimport Picker from './Picker';\nimport PickerPanel from './PickerPanel';\nimport RangePicker from './RangePicker';\nimport type { PickerPanelProps } from './PickerPanel';\nimport type { RangePickerProps } from './RangePicker';\n\nexport { PickerPanel, RangePicker };\nexport type { PickerProps, PickerPanelProps, RangePickerProps };\n\nexport default Picker;\n"
  },
  {
    "path": "components/vc-picker/interface.ts",
    "content": "import type { Ref } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport type { GenerateConfig } from './generate';\n\nexport type Locale = {\n  locale: string;\n\n  // ===================== Date Panel =====================\n  /** Display month before year in date panel header */\n  monthBeforeYear?: boolean;\n  yearFormat: string;\n  monthFormat?: string;\n  quarterFormat?: string;\n\n  today: string;\n  now: string;\n  backToToday: string;\n  ok: string;\n  timeSelect: string;\n  dateSelect: string;\n  weekSelect?: string;\n  clear: string;\n  month: string;\n  year: string;\n  previousMonth: string;\n  nextMonth: string;\n  monthSelect: string;\n  yearSelect: string;\n  decadeSelect: string;\n\n  dayFormat: string;\n  dateFormat: string;\n  dateTimeFormat: string;\n  previousYear: string;\n  nextYear: string;\n  previousDecade: string;\n  nextDecade: string;\n  previousCentury: string;\n  nextCentury: string;\n\n  shortWeekDays?: string[];\n  shortMonths?: string[];\n};\n\nexport type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade';\n\nexport type PickerMode = Exclude<PanelMode, 'datetime' | 'decade'>;\n\nexport type PanelRefProps = {\n  onKeydown?: (e: KeyboardEvent) => boolean;\n  onBlur?: (e: FocusEvent) => void;\n  onClose?: () => void;\n};\n\nexport type NullableDateType<DateType> = DateType | null | undefined;\n\nexport type OnSelect<DateType> = (value: DateType, type: 'key' | 'mouse' | 'submit') => void;\n\nexport type PanelSharedProps<DateType> = {\n  prefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  value?: NullableDateType<DateType>;\n  viewDate: DateType;\n  /** [Legacy] Set default display picker view date */\n  defaultPickerValue?: DateType;\n  locale: Locale;\n  disabledDate?: (date: DateType) => boolean;\n\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n\n  // /**\n  //  * Typescript can not handle generic type so we can not use `forwardRef` here.\n  //  * Thus, move ref into operationRef.\n  //  * This is little hack which should refactor after typescript support.\n  //  */\n  operationRef: Ref<PanelRefProps>;\n\n  onSelect: OnSelect<DateType>;\n  onViewDateChange: (value: DateType) => void;\n  onPanelChange: (mode: PanelMode | null, viewValue: DateType) => void;\n};\n\nexport type DisabledTimes = {\n  disabledHours?: () => number[];\n  disabledMinutes?: (hour: number) => number[];\n  disabledSeconds?: (hour: number, minute: number) => number[];\n};\n\nexport type DisabledTime<DateType> = (date: DateType | null) => DisabledTimes;\n\nexport type OnPanelChange<DateType> = (value: DateType, mode: PanelMode) => void;\n\nexport type EventValue<DateType> = DateType | null;\nexport type RangeValue<DateType> = [EventValue<DateType>, EventValue<DateType>] | null;\n\nexport type Components = {\n  button?: any;\n};\n\nexport type RangeList = {\n  label: VueNode;\n  onClick: () => void;\n  onMouseenter: () => void;\n  onMouseleave: () => void;\n}[];\n\nexport type CustomFormat<DateType> = (value: DateType) => string;\n\nexport interface PresetDate<T> {\n  label: VueNode;\n  value: T;\n}\n"
  },
  {
    "path": "components/vc-picker/locale/ar_EG.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ar_EG',\n  today: 'اليوم',\n  now: 'الأن',\n  backToToday: 'العودة إلى اليوم',\n  ok: 'تأكيد',\n  clear: 'مسح',\n  month: 'الشهر',\n  year: 'السنة',\n  timeSelect: 'اختيار الوقت',\n  dateSelect: 'اختيار التاريخ',\n  monthSelect: 'اختيار الشهر',\n  yearSelect: 'اختيار السنة',\n  decadeSelect: 'اختيار العقد',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'الشهر السابق (PageUp)',\n  nextMonth: 'الشهر التالى(PageDown)',\n  previousYear: 'العام السابق (Control + left)',\n  nextYear: 'العام التالى (Control + right)',\n  previousDecade: 'العقد السابق',\n  nextDecade: 'العقد التالى',\n  previousCentury: 'القرن السابق',\n  nextCentury: 'القرن التالى',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/az_AZ.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'az_AZ',\n  today: 'Bugün',\n  now: 'İndi',\n  backToToday: 'Bugünə qayıt',\n  ok: 'Təsdiq',\n  clear: 'Təmizlə',\n  month: 'Ay',\n  year: 'İl',\n  timeSelect: 'vaxtı seç',\n  dateSelect: 'tarixi seç',\n  weekSelect: 'Həftə seç',\n  monthSelect: 'Ay seç',\n  yearSelect: 'il seç',\n  decadeSelect: 'Onillik seçin',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Əvvəlki ay (PageUp)',\n  nextMonth: 'Növbəti ay (PageDown)',\n  previousYear: 'Sonuncu il (Control + left)',\n  nextYear: 'Növbəti il (Control + right)',\n  previousDecade: 'Sonuncu onillik',\n  nextDecade: 'Növbəti onillik',\n  previousCentury: 'Sonuncu əsr',\n  nextCentury: 'Növbəti əsr',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/bg_BG.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'bg_BG',\n  today: 'Днес',\n  now: 'Сега',\n  backToToday: 'Към днес',\n  ok: 'Добре',\n  clear: 'Изчистване',\n  month: 'Месец',\n  year: 'Година',\n  timeSelect: 'Избор на час',\n  dateSelect: 'Избор на дата',\n  monthSelect: 'Избор на месец',\n  yearSelect: 'Избор на година',\n  decadeSelect: 'Десетилетие',\n  yearFormat: 'YYYY',\n  dateFormat: 'D M YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D M YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Предишен месец (PageUp)',\n  nextMonth: 'Следващ месец (PageDown)',\n  previousYear: 'Последна година (Control + left)',\n  nextYear: 'Следваща година (Control + right)',\n  previousDecade: 'Предишно десетилетие',\n  nextDecade: 'Следващо десетилетие',\n  previousCentury: 'Последен век',\n  nextCentury: 'Следващ век',\n};\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/bn_BD.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'bn_BD',\n  today: 'আজ',\n  now: 'এখন',\n  backToToday: 'আজকে ফিরে চলুন',\n  ok: 'ওকে',\n  clear: 'পরিস্কার',\n  month: 'মাস',\n  year: 'বছর',\n  timeSelect: 'সময় নির্বাচন',\n  dateSelect: 'তারিখ নির্বাচন',\n  weekSelect: 'সপ্তাহ পছন্দ করুন',\n  monthSelect: 'মাস পছন্দ করুন',\n  yearSelect: 'বছর পছন্দ করুন',\n  decadeSelect: 'একটি দশক পছন্দ করুন',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'গত মাস (PageUp)',\n  nextMonth: 'আগামী মাস (PageDown)',\n  previousYear: 'গত বছর (Control + left)',\n  nextYear: 'আগামী বছর (Control + right)',\n  previousDecade: 'গত দশক',\n  nextDecade: 'পরের দশক',\n  previousCentury: 'গত শতাব্দী',\n  nextCentury: 'পরের শতাব্দী',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/by_BY.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'by_BY',\n  today: 'Сёння',\n  now: 'Зараз',\n  backToToday: 'Дадзеная дата',\n  ok: 'Ok',\n  clear: 'Ачысціць',\n  month: 'Месяц',\n  year: 'Год',\n  timeSelect: 'Выбраць час',\n  dateSelect: 'Выбраць дату',\n  weekSelect: 'Выбраць тыдзень',\n  monthSelect: 'Выбраць месяц',\n  yearSelect: 'Выбраць год',\n  decadeSelect: 'Выбраць дзесяцігоддзе',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Папярэдні месяц (PageUp)',\n  nextMonth: 'Наступны месяц (PageDown)',\n  previousYear: 'Папярэдні год (Control + left)',\n  nextYear: 'Наступны год (Control + right)',\n  previousDecade: 'Папярэдняе дзесяцігоддзе',\n  nextDecade: 'Наступнае дзесяцігоддзе',\n  previousCentury: 'Папярэдні век',\n  nextCentury: 'Наступны век',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ca_ES.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ca_ES',\n  today: 'Avui',\n  now: 'Ara',\n  backToToday: 'Tornar a avui',\n  ok: 'Acceptar',\n  clear: 'Netejar',\n  month: 'Mes',\n  year: 'Any',\n  timeSelect: 'Seleccionar hora',\n  dateSelect: 'Seleccionar data',\n  monthSelect: 'Escollir un mes',\n  yearSelect: 'Escollir un any',\n  decadeSelect: 'Escollir una dècada',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mes anterior (PageUp)',\n  nextMonth: 'Mes següent (PageDown)',\n  previousYear: 'Any anterior (Control + left)',\n  nextYear: 'Mes següent (Control + right)',\n  previousDecade: 'Dècada anterior',\n  nextDecade: 'Dècada següent',\n  previousCentury: 'Segle anterior',\n  nextCentury: 'Segle següent',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ckb_IQ.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ckb_IQ',\n  today: 'ئەمڕۆ',\n  now: 'ئێستا',\n  backToToday: 'بگەڕێوە بۆ ئەمڕۆ',\n  ok: 'باشە',\n  clear: 'پاککردنەوە',\n  month: 'مانگ',\n  year: 'ساڵ',\n  timeSelect: 'کات هەڵبژێرە',\n  dateSelect: 'بەروار هەڵبژێرە',\n  monthSelect: 'مانگێک هەڵبژێرە',\n  yearSelect: 'ساڵێک هەڵبژێرە',\n  decadeSelect: 'دەیەیەک هەڵبژێرە',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'مانگی پێشوو (PageUp)',\n  nextMonth: 'مانگی داهاتوو (PageDown)',\n  previousYear: 'ساڵی ڕابردوو (Control + left)',\n  nextYear: 'ساڵی داهاتوو (Control + right)',\n  previousDecade: 'دەیەی ڕابردوو',\n  nextDecade: 'دەیەی داهاتوو',\n  previousCentury: 'سەدەی ڕابردوو',\n  nextCentury: 'سەدەی داهاتوو',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/cs_CZ.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'cs_CZ',\n  today: 'Dnes',\n  now: 'Nyní',\n  backToToday: 'Zpět na dnešek',\n  ok: 'Ok',\n  clear: 'Vymazat',\n  month: 'Měsíc',\n  year: 'Rok',\n  timeSelect: 'Vybrat čas',\n  dateSelect: 'Vybrat datum',\n  monthSelect: 'Vyberte měsíc',\n  yearSelect: 'Vyberte rok',\n  decadeSelect: 'Vyberte dekádu',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Předchozí měsíc (PageUp)',\n  nextMonth: 'Následující (PageDown)',\n  previousYear: 'Předchozí rok (Control + left)',\n  nextYear: 'Následující rok (Control + right)',\n  previousDecade: 'Předchozí dekáda',\n  nextDecade: 'Následující dekáda',\n  previousCentury: 'Předchozí století',\n  nextCentury: 'Následující století',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/da_DK.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'da_DK',\n  today: 'I dag',\n  now: 'Nu',\n  backToToday: 'Gå til i dag',\n  ok: 'Ok',\n  clear: 'Ryd',\n  month: 'Måned',\n  year: 'År',\n  timeSelect: 'Vælg tidspunkt',\n  dateSelect: 'Vælg dato',\n  monthSelect: 'Vælg måned',\n  yearSelect: 'Vælg år',\n  decadeSelect: 'Vælg årti',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Forrige måned (Page Up)',\n  nextMonth: 'Næste måned (Page Down)',\n  previousYear: 'Forrige år (Ctrl-venstre pil)',\n  nextYear: 'Næste år (Ctrl-højre pil)',\n  previousDecade: 'Forrige årti',\n  nextDecade: 'Næste årti',\n  previousCentury: 'Forrige århundrede',\n  nextCentury: 'Næste århundrede',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/de_DE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'de_DE',\n  today: 'Heute',\n  now: 'Jetzt',\n  backToToday: 'Zurück zu Heute',\n  ok: 'OK',\n  clear: 'Zurücksetzen',\n  month: 'Monat',\n  year: 'Jahr',\n  timeSelect: 'Zeit wählen',\n  dateSelect: 'Datum wählen',\n  monthSelect: 'Wähle einen Monat',\n  yearSelect: 'Wähle ein Jahr',\n  decadeSelect: 'Wähle ein Jahrzehnt',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Vorheriger Monat (PageUp)',\n  nextMonth: 'Nächster Monat (PageDown)',\n  previousYear: 'Vorheriges Jahr (Ctrl + left)',\n  nextYear: 'Nächstes Jahr (Ctrl + right)',\n  previousDecade: 'Vorheriges Jahrzehnt',\n  nextDecade: 'Nächstes Jahrzehnt',\n  previousCentury: 'Vorheriges Jahrhundert',\n  nextCentury: 'Nächstes Jahrhundert',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/el_GR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'el_GR',\n  today: 'Σήμερα',\n  now: 'Τώρα',\n  backToToday: 'Πίσω στη σημερινή μέρα',\n  ok: 'Ok',\n  clear: 'Καθαρισμός',\n  month: 'Μήνας',\n  year: 'Έτος',\n  timeSelect: 'Επιλογή ώρας',\n  dateSelect: 'Επιλογή ημερομηνίας',\n  monthSelect: 'Επιλογή μήνα',\n  yearSelect: 'Επιλογή έτους',\n  decadeSelect: 'Επιλογή δεκαετίας',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Προηγούμενος μήνας (PageUp)',\n  nextMonth: 'Επόμενος μήνας (PageDown)',\n  previousYear: 'Προηγούμενο έτος (Control + αριστερά)',\n  nextYear: 'Επόμενο έτος (Control + δεξιά)',\n  previousDecade: 'Προηγούμενη δεκαετία',\n  nextDecade: 'Επόμενη δεκαετία',\n  previousCentury: 'Προηγούμενος αιώνας',\n  nextCentury: 'Επόμενος αιώνας',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/en_GB.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'en_GB',\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'Ok',\n  clear: 'Clear',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'Select time',\n  dateSelect: 'Select date',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/en_US.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'en_US',\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'Ok',\n  clear: 'Clear',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'select time',\n  dateSelect: 'select date',\n  weekSelect: 'Choose a week',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/es_ES.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'es_ES',\n  today: 'Hoy',\n  now: 'Ahora',\n  backToToday: 'Volver a hoy',\n  ok: 'Aceptar',\n  clear: 'Limpiar',\n  month: 'Mes',\n  year: 'Año',\n  timeSelect: 'Seleccionar hora',\n  dateSelect: 'Seleccionar fecha',\n  monthSelect: 'Elegir un mes',\n  yearSelect: 'Elegir un año',\n  decadeSelect: 'Elegir una década',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mes anterior (PageUp)',\n  nextMonth: 'Mes siguiente (PageDown)',\n  previousYear: 'Año anterior (Control + left)',\n  nextYear: 'Año siguiente (Control + right)',\n  previousDecade: 'Década anterior',\n  nextDecade: 'Década siguiente',\n  previousCentury: 'Siglo anterior',\n  nextCentury: 'Siglo siguiente',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/es_MX.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'es_MX',\n  today: 'Hoy',\n  now: 'Ahora',\n  backToToday: 'Volver a hoy',\n  ok: 'Aceptar',\n  clear: 'Limpiar',\n  month: 'Mes',\n  year: 'Año',\n  timeSelect: 'elegir hora',\n  dateSelect: 'elegir fecha',\n  weekSelect: 'elegir semana',\n  monthSelect: 'Seleccionar mes',\n  yearSelect: 'Seleccionar año',\n  decadeSelect: 'Seleccionar década',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mes anterior (PageUp)',\n  nextMonth: 'Mes siguiente (PageDown)',\n  previousYear: 'Año anterior (Control + Left)',\n  nextYear: 'Año siguiente (Control + Right)',\n  previousDecade: 'Década anterior',\n  nextDecade: 'Década siguiente',\n  previousCentury: 'Siglo anterior',\n  nextCentury: 'Siglo siguiente',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/et_EE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'et_EE',\n  today: 'Täna',\n  now: 'Praegu',\n  backToToday: 'Tagasi tänase juurde',\n  ok: 'Ok',\n  clear: 'Tühista',\n  month: 'Kuu',\n  year: 'Aasta',\n  timeSelect: 'Vali aeg',\n  dateSelect: 'Vali kuupäev',\n  monthSelect: 'Vali kuu',\n  yearSelect: 'Vali aasta',\n  decadeSelect: 'Vali dekaad',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Eelmine kuu (PageUp)',\n  nextMonth: 'Järgmine kuu (PageDown)',\n  previousYear: 'Eelmine aasta (Control + left)',\n  nextYear: 'Järgmine aasta (Control + right)',\n  previousDecade: 'Eelmine dekaad',\n  nextDecade: 'Järgmine dekaad',\n  previousCentury: 'Eelmine sajand',\n  nextCentury: 'Järgmine sajand',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/fa_IR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'fa_IR',\n  today: 'امروز',\n  now: 'اکنون',\n  backToToday: 'بازگشت به روز',\n  ok: 'باشه',\n  clear: 'پاک کردن',\n  month: 'ماه',\n  year: 'سال',\n  timeSelect: 'انتخاب زمان',\n  dateSelect: 'انتخاب تاریخ',\n  monthSelect: 'یک ماه را انتخاب کنید',\n  yearSelect: 'یک سال را انتخاب کنید',\n  decadeSelect: 'یک دهه را انتخاب کنید',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'ماه قبل (PageUp)',\n  nextMonth: 'ماه بعد (PageDown)',\n  previousYear: 'سال قبل (Control + left)',\n  nextYear: 'سال بعد (Control + right)',\n  previousDecade: 'دهه قبل',\n  nextDecade: 'دهه بعد',\n  previousCentury: 'قرن قبل',\n  nextCentury: 'قرن بعد',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/fi_FI.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'fi_FI',\n  today: 'Tänään',\n  now: 'Nyt',\n  backToToday: 'Tämä päivä',\n  ok: 'Ok',\n  clear: 'Tyhjennä',\n  month: 'Kuukausi',\n  year: 'Vuosi',\n  timeSelect: 'Valise aika',\n  dateSelect: 'Valitse päivä',\n  monthSelect: 'Valitse kuukausi',\n  yearSelect: 'Valitse vuosi',\n  decadeSelect: 'Valitse vuosikymmen',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Edellinen kuukausi (PageUp)',\n  nextMonth: 'Seuraava kuukausi (PageDown)',\n  previousYear: 'Edellinen vuosi (Control + left)',\n  nextYear: 'Seuraava vuosi (Control + right)',\n  previousDecade: 'Edellinen vuosikymmen',\n  nextDecade: 'Seuraava vuosikymmen',\n  previousCentury: 'Edellinen vuosisata',\n  nextCentury: 'Seuraava vuosisata',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/fr_BE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'fr_BE',\n  today: \"Aujourd'hui\",\n  now: 'Maintenant',\n  backToToday: \"Aujourd'hui\",\n  ok: 'Ok',\n  clear: 'Rétablir',\n  month: 'Mois',\n  year: 'Année',\n  timeSelect: \"Sélectionner l'heure\",\n  dateSelect: \"Sélectionner l'heure\",\n  monthSelect: 'Choisissez un mois',\n  yearSelect: 'Choisissez une année',\n  decadeSelect: 'Choisissez une décennie',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mois précédent (PageUp)',\n  nextMonth: 'Mois suivant (PageDown)',\n  previousYear: 'Année précédente (Ctrl + gauche)',\n  nextYear: 'Année prochaine (Ctrl + droite)',\n  previousDecade: 'Décennie précédente',\n  nextDecade: 'Décennie suivante',\n  previousCentury: 'Siècle précédent',\n  nextCentury: 'Siècle suivant',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/fr_CA.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'fr_CA',\n  today: \"Aujourd'hui\",\n  now: 'Maintenant',\n  backToToday: \"Aujourd'hui\",\n  ok: 'Ok',\n  clear: 'Rétablir',\n  month: 'Mois',\n  year: 'Année',\n  timeSelect: \"Sélectionner l'heure\",\n  dateSelect: 'Sélectionner la date',\n  monthSelect: 'Choisissez un mois',\n  yearSelect: 'Choisissez une année',\n  decadeSelect: 'Choisissez une décennie',\n  yearFormat: 'YYYY',\n  dateFormat: 'DD/MM/YYYY',\n  dayFormat: 'DD',\n  dateTimeFormat: 'DD/MM/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mois précédent (PageUp)',\n  nextMonth: 'Mois suivant (PageDown)',\n  previousYear: 'Année précédente (Ctrl + gauche)',\n  nextYear: 'Année prochaine (Ctrl + droite)',\n  previousDecade: 'Décennie précédente',\n  nextDecade: 'Décennie suivante',\n  previousCentury: 'Siècle précédent',\n  nextCentury: 'Siècle suivant',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/fr_FR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'fr_FR',\n  today: \"Aujourd'hui\",\n  now: 'Maintenant',\n  backToToday: \"Aujourd'hui\",\n  ok: 'Ok',\n  clear: 'Rétablir',\n  month: 'Mois',\n  year: 'Année',\n  timeSelect: \"Sélectionner l'heure\",\n  dateSelect: 'Sélectionner la date',\n  monthSelect: 'Choisissez un mois',\n  yearSelect: 'Choisissez une année',\n  decadeSelect: 'Choisissez une décennie',\n  yearFormat: 'YYYY',\n  dateFormat: 'DD/MM/YYYY',\n  dayFormat: 'DD',\n  dateTimeFormat: 'DD/MM/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mois précédent (PageUp)',\n  nextMonth: 'Mois suivant (PageDown)',\n  previousYear: 'Année précédente (Ctrl + gauche)',\n  nextYear: 'Année prochaine (Ctrl + droite)',\n  previousDecade: 'Décennie précédente',\n  nextDecade: 'Décennie suivante',\n  previousCentury: 'Siècle précédent',\n  nextCentury: 'Siècle suivant',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ga_IE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ga_IE',\n  today: 'inniu',\n  now: 'anois',\n  backToToday: 'Ar ais inniu',\n  ok: 'ceart go leor',\n  clear: 'soiléir',\n  month: 'mhí',\n  year: 'bhliain',\n  timeSelect: 'roghnaigh am',\n  dateSelect: 'roghnaigh dáta',\n  weekSelect: 'Roghnaigh seachtain',\n  monthSelect: 'Roghnaigh mí',\n  yearSelect: 'Roghnaigh bliain',\n  decadeSelect: 'Roghnaigh deich mbliana',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'An mhí roimhe seo (PageUp)',\n  nextMonth: 'An mhí seo chugainn (PageDown)',\n  previousYear: 'Anuraidh (Control + left)',\n  nextYear: 'An bhliain seo chugainn (Control + right)',\n  previousDecade: 'Le deich mbliana anuas',\n  nextDecade: 'Deich mbliana amach romhainn',\n  previousCentury: 'An chéid seo caite',\n  nextCentury: 'An chéad aois eile',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/gl_ES.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'gl_ES',\n  today: 'Hoxe',\n  now: 'Agora',\n  backToToday: 'Voltar a hoxe',\n  ok: 'Aceptar',\n  clear: 'Limpar',\n  month: 'Mes',\n  year: 'Ano',\n  timeSelect: 'Seleccionar hora',\n  dateSelect: 'Seleccionar data',\n  monthSelect: 'Elexir un mes',\n  yearSelect: 'Elexir un año',\n  decadeSelect: 'Elexir unha década',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mes anterior (PageUp)',\n  nextMonth: 'Mes seguinte (PageDown)',\n  previousYear: 'Ano anterior (Control + left)',\n  nextYear: 'Ano seguinte (Control + right)',\n  previousDecade: 'Década anterior',\n  nextDecade: 'Década seguinte',\n  previousCentury: 'Século anterior',\n  nextCentury: 'Século seguinte',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/he_IL.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'he_IL',\n  today: 'היום',\n  now: 'עכשיו',\n  backToToday: 'חזור להיום',\n  ok: 'אישור',\n  clear: 'איפוס',\n  month: 'חודש',\n  year: 'שנה',\n  timeSelect: 'בחר שעה',\n  dateSelect: 'בחר תאריך',\n  weekSelect: 'בחר שבוע',\n  monthSelect: 'בחר חודש',\n  yearSelect: 'בחר שנה',\n  decadeSelect: 'בחר עשור',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'חודש קודם (PageUp)',\n  nextMonth: 'חודש הבא (PageDown)',\n  previousYear: 'שנה שעברה (Control + left)',\n  nextYear: 'שנה הבאה (Control + right)',\n  previousDecade: 'העשור הקודם',\n  nextDecade: 'העשור הבא',\n  previousCentury: 'המאה הקודמת',\n  nextCentury: 'המאה הבאה',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/hi_IN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'hi_IN',\n  today: 'आज',\n  now: 'अभी',\n  backToToday: 'आज तक',\n  ok: 'ठीक',\n  clear: 'स्पष्ट',\n  month: 'महीना',\n  year: 'साल',\n  timeSelect: 'समय का चयन करें',\n  dateSelect: 'तारीख़ चुनें',\n  weekSelect: 'एक सप्ताह चुनें',\n  monthSelect: 'एक महीना चुनें',\n  yearSelect: 'एक वर्ष चुनें',\n  decadeSelect: 'एक दशक चुनें',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'पिछला महीना (पेजअप)',\n  nextMonth: 'अगले महीने (पेजडाउन)',\n  previousYear: 'पिछले साल (Ctrl + बाएं)',\n  nextYear: 'अगले साल (Ctrl + दाहिना)',\n  previousDecade: 'पिछला दशक',\n  nextDecade: 'अगले दशक',\n  previousCentury: 'पीछ्ली शताब्दी',\n  nextCentury: 'अगली सदी',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/hr_HR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'hr_HR',\n  today: 'Danas',\n  now: 'Sad',\n  backToToday: 'Natrag na danas',\n  ok: 'Ok',\n  clear: 'Očisti',\n  month: 'Mjesec',\n  year: 'Godina',\n  timeSelect: 'odaberite vrijeme',\n  dateSelect: 'odaberite datum',\n  weekSelect: 'Odaberite tjedan',\n  monthSelect: 'Odaberite mjesec',\n  yearSelect: 'Odaberite godinu',\n  decadeSelect: 'Odaberite desetljeće',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Prošli mjesec (PageUp)',\n  nextMonth: 'Sljedeći mjesec (PageDown)',\n  previousYear: 'Prošla godina (Control + left)',\n  nextYear: 'Sljedeća godina (Control + right)',\n  previousDecade: 'Prošlo desetljeće',\n  nextDecade: 'Sljedeće desetljeće',\n  previousCentury: 'Prošlo stoljeće',\n  nextCentury: 'Sljedeće stoljeće',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/hu_HU.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'hu_HU',\n  today: 'Ma', // 'Today',\n  now: 'Most', // 'Now',\n  backToToday: 'Vissza a mai napra', // 'Back to today',\n  ok: 'Ok',\n  clear: 'Törlés', // 'Clear',\n  month: 'Hónap', // 'Month',\n  year: 'Év', // 'Year',\n  timeSelect: 'Időpont kiválasztása', // 'Select time',\n  dateSelect: 'Dátum kiválasztása', // 'Select date',\n  monthSelect: 'Hónap kiválasztása', // 'Choose a month',\n  yearSelect: 'Év kiválasztása', // 'Choose a year',\n  decadeSelect: 'Évtized kiválasztása', // 'Choose a decade',\n  yearFormat: 'YYYY',\n  dateFormat: 'YYYY/MM/DD', // 'M/D/YYYY',\n  dayFormat: 'DD', // 'D',\n  dateTimeFormat: 'YYYY/MM/DD HH:mm:ss', // 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Előző hónap (PageUp)', // 'Previous month (PageUp)',\n  nextMonth: 'Következő hónap (PageDown)', // 'Next month (PageDown)',\n  previousYear: 'Múlt év (Control + left)', // 'Last year (Control + left)',\n  nextYear: 'Jövő év (Control + right)', // 'Next year (Control + right)',\n  previousDecade: 'Előző évtized', // 'Last decade',\n  nextDecade: 'Következő évtized', // 'Next decade',\n  previousCentury: 'Múlt évszázad', // 'Last century',\n  nextCentury: 'Jövő évszázad', // 'Next century',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/id_ID.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'id_ID',\n  today: 'Hari ini',\n  now: 'Sekarang',\n  backToToday: 'Kembali ke hari ini',\n  ok: 'Baik',\n  clear: 'Bersih',\n  month: 'Bulan',\n  year: 'Tahun',\n  timeSelect: 'pilih waktu',\n  dateSelect: 'pilih tanggal',\n  weekSelect: 'Pilih satu minggu',\n  monthSelect: 'Pilih satu bulan',\n  yearSelect: 'Pilih satu tahun',\n  decadeSelect: 'Pilih satu dekade',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Bulan sebelumnya (PageUp)',\n  nextMonth: 'Bulan selanjutnya (PageDown)',\n  previousYear: 'Tahun lalu (Control + kiri)',\n  nextYear: 'Tahun selanjutnya (Kontrol + kanan)',\n  previousDecade: 'Dekade terakhir',\n  nextDecade: 'Dekade berikutnya',\n  previousCentury: 'Abad terakhir',\n  nextCentury: 'Abad berikutnya',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/is_IS.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'is_IS',\n  today: 'Í dag',\n  now: 'Núna',\n  backToToday: 'Til baka til dagsins í dag',\n  ok: 'Í lagi',\n  clear: 'Hreinsa',\n  month: 'Mánuður',\n  year: 'Ár',\n  timeSelect: 'Velja tíma',\n  dateSelect: 'Velja dag',\n  monthSelect: 'Velja mánuð',\n  yearSelect: 'Velja ár',\n  decadeSelect: 'Velja áratug',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Fyrri mánuður (PageUp)',\n  nextMonth: 'Næsti mánuður (PageDown)',\n  previousYear: 'Fyrra ár (Control + left)',\n  nextYear: 'Næsta ár (Control + right)',\n  previousDecade: 'Fyrri áratugur',\n  nextDecade: 'Næsti áratugur',\n  previousCentury: 'Fyrri öld',\n  nextCentury: 'Næsta öld',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/it_IT.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'it_IT',\n  today: 'Oggi',\n  now: 'Adesso',\n  backToToday: 'Torna ad oggi',\n  ok: 'Ok',\n  clear: 'Cancella',\n  month: 'Mese',\n  year: 'Anno',\n  timeSelect: \"Seleziona l'ora\",\n  dateSelect: 'Seleziona la data',\n  monthSelect: 'Seleziona il mese',\n  yearSelect: \"Seleziona l'anno\",\n  decadeSelect: 'Seleziona il decennio',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Il mese scorso (PageUp)',\n  nextMonth: 'Il prossimo mese (PageDown)',\n  previousYear: \"L'anno scorso (Control + sinistra)\",\n  nextYear: \"L'anno prossimo (Control + destra)\",\n  previousDecade: 'Ultimo decennio',\n  nextDecade: 'Prossimo decennio',\n  previousCentury: 'Secolo precedente',\n  nextCentury: 'Prossimo secolo',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ja_JP.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ja_JP',\n  today: '今日',\n  now: '現在時刻',\n  backToToday: '今日に戻る',\n  ok: '決定',\n  timeSelect: '時間を選択',\n  dateSelect: '日時を選択',\n  weekSelect: '週を選択',\n  clear: 'クリア',\n  month: '月',\n  year: '年',\n  previousMonth: '前月 (ページアップキー)',\n  nextMonth: '翌月 (ページダウンキー)',\n  monthSelect: '月を選択',\n  yearSelect: '年を選択',\n  decadeSelect: '年代を選択',\n  yearFormat: 'YYYY年',\n  dayFormat: 'D日',\n  dateFormat: 'YYYY年M月D日',\n  dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',\n  previousYear: '前年 (Controlを押しながら左キー)',\n  nextYear: '翌年 (Controlを押しながら右キー)',\n  previousDecade: '前の年代',\n  nextDecade: '次の年代',\n  previousCentury: '前の世紀',\n  nextCentury: '次の世紀',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ka_GE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ka_GE',\n  today: 'დღეს',\n  now: 'ახლა',\n  backToToday: 'მიმდინარე თარიღი',\n  ok: 'Ok',\n  clear: 'გასუფთავება',\n  month: 'თვე',\n  year: 'წელი',\n  timeSelect: 'დროის არჩევა',\n  dateSelect: 'თარიღის არჩევა',\n  weekSelect: 'კვირის არჩევა',\n  monthSelect: 'თვის არჩევა',\n  yearSelect: 'წლის არჩევა',\n  decadeSelect: 'ათწლეულის არჩევა',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'წინა თვე (PageUp)',\n  nextMonth: 'მომდევნო თვე (PageDown)',\n  previousYear: 'წინა წელი (Control + left)',\n  nextYear: 'მომდევნო წელი (Control + right)',\n  previousDecade: 'წინა ათწლეული',\n  nextDecade: 'მომდევნო ათწლეული',\n  previousCentury: 'გასული საუკუნე',\n  nextCentury: 'მომდევნო საუკუნე',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/kk_KZ.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'kk_KZ',\n  today: 'Бүгін',\n  now: 'Қазір',\n  backToToday: 'Ағымдағы күн',\n  ok: 'Таңдау',\n  clear: 'Таза',\n  month: 'Ай',\n  year: 'Жыл',\n  timeSelect: 'Уақытты таңдау',\n  dateSelect: 'Күнді таңдау',\n  monthSelect: 'Айды таңдаңыз',\n  yearSelect: 'Жылды таңдаңыз',\n  decadeSelect: 'Онжылды таңдаңыз',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Алдыңғы ай (PageUp)',\n  nextMonth: 'Келесі ай (PageDown)',\n  previousYear: 'Алдыңғы жыл (Control + left)',\n  nextYear: 'Келесі жыл (Control + right)',\n  previousDecade: 'Алдыңғы онжылдық',\n  nextDecade: 'Келесі онжылдық',\n  previousCentury: 'Алдыңғы ғасыр',\n  nextCentury: 'Келесі ғасыр',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/km_KH.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'km',\n  today: 'ថ្ងៃនេះ',\n  now: 'ឥឡូវ​នេះ',\n  backToToday: 'ត្រលប់ទៅថ្ងៃនេះ',\n  ok: 'កំណត់',\n  timeSelect: 'រយៈពេលជ្រើសរើស',\n  dateSelect: 'ជ្រើសរើសកាលបរិច្ឆេទ',\n  weekSelect: 'ជ្រើសរើសសប្តាហ៍',\n  clear: 'ច្បាស់',\n  month: 'ខែ',\n  year: 'ឆ្នាំ',\n  previousMonth: 'ខែមុន (ឡើងទំព័រ)',\n  nextMonth: 'ខែបន្ទាប់ (ប៊ូតុងចុះទំព័រ)',\n  monthSelect: 'ជ្រើសរើសខែ',\n  yearSelect: 'ជ្រើសរើសឆ្នាំ',\n  decadeSelect: 'ជ្រើសរើសអាយុ',\n  yearFormat: 'YYYY',\n  dayFormat: 'D',\n  dateFormat: 'YYYY-M-D',\n  dateTimeFormat: 'YYYY-M-D HH:mm:ss',\n  previousYear: 'ឆ្នាំមុន (Controlគ្រាប់ចុចបូកព្រួញខាងឆ្វេង)',\n  nextYear: 'ឆ្នាំក្រោយ (Control គ្រាប់ចុចបូកព្រួញស្ដាំ)',\n  previousDecade: 'ជំនាន់ចុងក្រោយ',\n  nextDecade: 'ជំនាន់​ក្រោយ',\n  previousCentury: 'សតវត្សចុងក្រោយ',\n  nextCentury: 'សតវត្សរ៍បន្ទាប់',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/kmr_IQ.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ku',\n  today: 'Îro',\n  now: 'Niha',\n  backToToday: 'Vegere îro',\n  ok: 'Temam',\n  clear: 'Paqij bike',\n  month: 'Meh',\n  year: 'Sal',\n  timeSelect: 'Demê hilbijêre',\n  dateSelect: 'Dîrok hilbijêre',\n  monthSelect: 'Meh hilbijêre',\n  yearSelect: 'Sal hilbijêre',\n  decadeSelect: 'Dehsal hilbijêre',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Meha peş (PageUp))',\n  nextMonth: 'Meha paş (PageDown)',\n  previousYear: 'Sala peş (Control + şep)',\n  nextYear: 'Sala paş (Control + rast)',\n  previousDecade: 'Dehsalen peş',\n  nextDecade: 'Dehsalen paş',\n  previousCentury: 'Sedsalen peş',\n  nextCentury: 'Sedsalen paş',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/kn_IN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'kn_IN',\n  today: 'ಇಂದು',\n  now: 'ಈಗ',\n  backToToday: 'ಇಂದು ಹಿಂದಿರುಗಿ',\n  ok: 'ಸರಿ',\n  clear: 'ಸ್ಪಷ್ಟ',\n  month: 'ತಿಂಗಳು',\n  year: 'ವರ್ಷ',\n  timeSelect: 'ಸಮಯ ಆಯ್ಕೆಮಾಡಿ',\n  dateSelect: 'ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ',\n  weekSelect: 'ಒಂದು ವಾರದ ಆರಿಸಿ',\n  monthSelect: 'ಒಂದು ತಿಂಗಳು ಆಯ್ಕೆಮಾಡಿ',\n  yearSelect: 'ಒಂದು ವರ್ಷ ಆರಿಸಿ',\n  decadeSelect: 'ಒಂದು ದಶಕದ ಆಯ್ಕೆಮಾಡಿ',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'ಹಿಂದಿನ ತಿಂಗಳು (ಪೇಜ್ಅಪ್)',\n  nextMonth: 'ಮುಂದಿನ ತಿಂಗಳು (ಪೇಜ್ಡೌನ್)',\n  previousYear: 'ಕಳೆದ ವರ್ಷ (Ctrl + ಎಡ)',\n  nextYear: 'ಮುಂದಿನ ವರ್ಷ (Ctrl + ಬಲ)',\n  previousDecade: 'ಕಳೆದ ದಶಕ',\n  nextDecade: 'ಮುಂದಿನ ದಶಕ',\n  previousCentury: 'ಕಳೆದ ಶತಮಾನ',\n  nextCentury: 'ಮುಂದಿನ ಶತಮಾನ',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ko_KR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ko_KR',\n  today: '오늘',\n  now: '현재 시각',\n  backToToday: '오늘로 돌아가기',\n  ok: '확인',\n  clear: '지우기',\n  month: '월',\n  year: '년',\n  timeSelect: '시간 선택',\n  dateSelect: '날짜 선택',\n  monthSelect: '달 선택',\n  yearSelect: '연 선택',\n  decadeSelect: '연대 선택',\n  yearFormat: 'YYYY년',\n  dateFormat: 'YYYY-MM-DD',\n  dayFormat: 'Do',\n  dateTimeFormat: 'YYYY-MM-DD HH:mm:ss',\n  monthBeforeYear: false,\n  previousMonth: '이전 달 (PageUp)',\n  nextMonth: '다음 달 (PageDown)',\n  previousYear: '이전 해 (Control + left)',\n  nextYear: '다음 해 (Control + right)',\n  previousDecade: '이전 연대',\n  nextDecade: '다음 연대',\n  previousCentury: '이전 세기',\n  nextCentury: '다음 세기',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/lt_LT.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'lt_LT',\n  today: 'Šiandien',\n  now: 'Dabar',\n  backToToday: 'Rodyti šiandien',\n  ok: 'Gerai',\n  clear: 'Išvalyti',\n  month: 'Mėnesis',\n  year: 'Metai',\n  timeSelect: 'Pasirinkti laiką',\n  dateSelect: 'Pasirinkti datą',\n  monthSelect: 'Pasirinkti mėnesį',\n  yearSelect: 'Pasirinkti metus',\n  decadeSelect: 'Pasirinkti dešimtmetį',\n  yearFormat: 'YYYY',\n  dateFormat: 'YYYY-MM-DD',\n  dayFormat: 'DD',\n  dateTimeFormat: 'YYYY-MM-DD HH:MM:SS',\n  monthBeforeYear: true,\n  previousMonth: 'Buvęs mėnesis (PageUp)',\n  nextMonth: 'Sekantis mėnesis (PageDown)',\n  previousYear: 'Buvę metai (Control + left)',\n  nextYear: 'Sekantis metai (Control + right)',\n  previousDecade: 'Buvęs dešimtmetis',\n  nextDecade: 'Sekantis dešimtmetis',\n  previousCentury: 'Buvęs amžius',\n  nextCentury: 'Sekantis amžius',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/lv_LV.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'lv_LV',\n  today: 'Šodien',\n  now: 'Tagad',\n  backToToday: 'Atpakaļ pie šodienas',\n  ok: 'Ok',\n  clear: 'Skaidrs',\n  month: 'Mēnesis',\n  year: 'Gads',\n  timeSelect: 'Izvēlieties laiku',\n  dateSelect: 'Izvēlieties datumu',\n  monthSelect: 'Izvēlieties mēnesi',\n  yearSelect: 'Izvēlieties gadu',\n  decadeSelect: 'Izvēlieties desmit gadus',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Iepriekšējais mēnesis (PageUp)',\n  nextMonth: 'Nākammēnes (PageDown)',\n  previousYear: 'Pagājušais gads (Control + left)',\n  nextYear: 'Nākamgad (Control + right)',\n  previousDecade: 'Pēdējā desmitgadē',\n  nextDecade: 'Nākamā desmitgade',\n  previousCentury: 'Pagājušajā gadsimtā',\n  nextCentury: 'Nākamajā gadsimtā',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/mk_MK.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'mk_MK',\n  today: 'Денес',\n  now: 'Сега',\n  backToToday: 'Назад до денес',\n  ok: 'ОК',\n  clear: 'Избриши',\n  month: 'Месец',\n  year: 'Година',\n  timeSelect: 'Избери време',\n  dateSelect: 'Избери датум',\n  monthSelect: 'Избери месец',\n  yearSelect: 'Избери година',\n  decadeSelect: 'Избери деценија',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Претходен месец (PageUp)',\n  nextMonth: 'Нареден месец (PageDown)',\n  previousYear: 'Претходна година (Control + left)',\n  nextYear: 'Наредна година (Control + right)',\n  previousDecade: 'Претходна деценија',\n  nextDecade: 'Наредна деценија',\n  previousCentury: 'Претходен век',\n  nextCentury: 'Нареден век',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ml_IN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ml_IN',\n  today: 'ഇന്ന്',\n  now: 'ഇപ്പോൾ',\n  backToToday: 'ഇന്നത്തെ ദിവസത്തിലേക്ക് തിരിച്ചു പോകുക',\n  ok: 'ശരിയാണ്',\n  clear: 'നീക്കം ചെയ്യുക',\n  month: 'മാസം',\n  year: 'വർഷം',\n  timeSelect: 'സമയം തിരഞ്ഞെടുക്കുക',\n  dateSelect: 'ദിവസം തിരഞ്ഞെടുക്കുക',\n  weekSelect: 'വാരം തിരഞ്ഞെടുക്കുക',\n  monthSelect: 'മാസം തിരഞ്ഞെടുക്കുക',\n  yearSelect: 'വർഷം തിരഞ്ഞെടുക്കുക',\n  decadeSelect: 'ദശാബ്ദം തിരഞ്ഞെടുക്കുക',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'കഴിഞ്ഞ മാസം (PageUp)',\n  nextMonth: 'അടുത്ത മാസം (PageDown)',\n  previousYear: 'കഴിഞ്ഞ വർഷം (Control + left)',\n  nextYear: 'അടുത്ത വർഷം (Control + right)',\n  previousDecade: 'കഴിഞ്ഞ ദശാബ്ദം',\n  nextDecade: 'അടുത്ത ദശാബ്ദം',\n  previousCentury: 'കഴിഞ്ഞ നൂറ്റാണ്ട്',\n  nextCentury: 'അടുത്ത നൂറ്റാണ്ട്',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/mm_MM.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'mm_MM',\n  today: 'ယနေ့',\n  now: 'ယခု',\n  backToToday: 'ယနေ့ မတိုင်ခင် သို့',\n  ok: 'Ok',\n  clear: 'ရှင်းမည်',\n  month: 'လ',\n  year: 'နှစ်',\n  timeSelect: 'အချိန်ကို ရွေး',\n  dateSelect: 'နေ့ကို ရွေး',\n  weekSelect: 'အပတ်ကို ရွေး',\n  monthSelect: 'လကို ရွေး',\n  yearSelect: 'နှစ်ကို ရွေး',\n  decadeSelect: 'ဆယ်စုနှစ်ကို ရွေး',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'ယခင် လ (PageUp)',\n  nextMonth: 'နောက် လ (PageDown)',\n  previousYear: 'ယခင် နှစ် (Control + left)',\n  nextYear: 'နောက် နှစ် (Control + right)',\n  previousDecade: 'ယခင် ဆယ်စုနှစ်',\n  nextDecade: 'နောက် ဆယ်စုနှစ်',\n  previousCentury: 'ယခင် ရာစုနှစ်',\n  nextCentury: 'နောက် ရာစုနှစ်',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/mn_MN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'mn_MN',\n  today: 'Өнөөдөр',\n  now: 'Одоо',\n  backToToday: 'Өнөөдөрлүү буцах',\n  ok: 'Ok',\n  clear: 'Цэвэрлэх',\n  month: 'Сар',\n  year: 'Жил',\n  timeSelect: 'Цаг сонгох',\n  dateSelect: 'Огноо сонгох',\n  weekSelect: '7 хоног сонгох',\n  monthSelect: 'Сар сонгох',\n  yearSelect: 'Жил сонгох',\n  decadeSelect: 'Арван сонгох',\n  yearFormat: 'YYYY',\n  dateFormat: 'YYYY/MM/DD',\n  dayFormat: 'DD',\n  dateTimeFormat: 'YYYY/MM/DD HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Өмнөх сар (PageUp)',\n  nextMonth: 'Дараа сар (PageDown)',\n  previousYear: 'Өмнөх жил (Control + left)',\n  nextYear: 'Дараа жил (Control + right)',\n  previousDecade: 'Өмнөх арван',\n  nextDecade: 'Дараа арван',\n  previousCentury: 'Өмнөх зуун',\n  nextCentury: 'Дараа зуун',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ms_MY.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ms_MY',\n  today: 'Hari ini',\n  now: 'Sekarang',\n  backToToday: 'Kembali ke hari ini',\n  ok: 'Ok',\n  timeSelect: 'Pilih masa',\n  dateSelect: 'Pilih tarikh',\n  weekSelect: 'Pilih minggu',\n  clear: 'Padam',\n  month: 'Bulan',\n  year: 'Tahun',\n  previousMonth: 'Bulan lepas',\n  nextMonth: 'Bulan depan',\n  monthSelect: 'Pilih bulan',\n  yearSelect: 'Pilih tahun',\n  decadeSelect: 'Pilih dekad',\n  yearFormat: 'YYYY',\n  dayFormat: 'D',\n  dateFormat: 'M/D/YYYY',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  previousYear: 'Tahun lepas (Ctrl+left)',\n  nextYear: 'Tahun depan (Ctrl+right)',\n  previousDecade: 'Dekad lepas',\n  nextDecade: 'Dekad depan',\n  previousCentury: 'Abad lepas',\n  nextCentury: 'Abad depan',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/nb_NO.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'nb_NO',\n  today: 'I dag',\n  now: 'Nå',\n  backToToday: 'Gå til i dag',\n  ok: 'Ok',\n  clear: 'Annuller',\n  month: 'Måned',\n  year: 'År',\n  timeSelect: 'Velg tidspunkt',\n  dateSelect: 'Velg dato',\n  weekSelect: 'Velg uke',\n  monthSelect: 'Velg måned',\n  yearSelect: 'Velg år',\n  decadeSelect: 'Velg tiår',\n  yearFormat: 'YYYY',\n  dateFormat: 'DD.MM.YYYY',\n  dayFormat: 'DD',\n  dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Forrige måned (PageUp)',\n  nextMonth: 'Neste måned (PageDown)',\n  previousYear: 'Forrige år (Control + venstre)',\n  nextYear: 'Neste år (Control + høyre)',\n  previousDecade: 'Forrige tiår',\n  nextDecade: 'Neste tiår',\n  previousCentury: 'Forrige århundre',\n  nextCentury: 'Neste århundre',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/nl_BE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'nl_BE',\n  today: 'Vandaag',\n  now: 'Nu',\n  backToToday: 'Terug naar vandaag',\n  ok: 'Ok',\n  clear: 'Reset',\n  month: 'Maand',\n  year: 'Jaar',\n  timeSelect: 'Selecteer tijd',\n  dateSelect: 'Selecteer datum',\n  monthSelect: 'Kies een maand',\n  yearSelect: 'Kies een jaar',\n  decadeSelect: 'Kies een decennium',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Vorige maand (PageUp)',\n  nextMonth: 'Volgende maand (PageDown)',\n  previousYear: 'Vorig jaar (Control + left)',\n  nextYear: 'Volgend jaar (Control + right)',\n  previousDecade: 'Vorig decennium',\n  nextDecade: 'Volgend decennium',\n  previousCentury: 'Vorige eeuw',\n  nextCentury: 'Volgende eeuw',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/nl_NL.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'nl_NL',\n  today: 'Vandaag',\n  now: 'Nu',\n  backToToday: 'Terug naar vandaag',\n  ok: 'Ok',\n  clear: 'Reset',\n  month: 'Maand',\n  year: 'Jaar',\n  timeSelect: 'Selecteer tijd',\n  dateSelect: 'Selecteer datum',\n  monthSelect: 'Kies een maand',\n  yearSelect: 'Kies een jaar',\n  decadeSelect: 'Kies een decennium',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Vorige maand (PageUp)',\n  nextMonth: 'Volgende maand (PageDown)',\n  previousYear: 'Vorig jaar (Control + left)',\n  nextYear: 'Volgend jaar (Control + right)',\n  previousDecade: 'Vorig decennium',\n  nextDecade: 'Volgend decennium',\n  previousCentury: 'Vorige eeuw',\n  nextCentury: 'Volgende eeuw',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/pl_PL.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'pl_PL',\n  today: 'Dzisiaj',\n  now: 'Teraz',\n  backToToday: 'Ustaw dzisiaj',\n  ok: 'Ok',\n  clear: 'Wyczyść',\n  month: 'Miesiąc',\n  year: 'Rok',\n  timeSelect: 'Ustaw czas',\n  dateSelect: 'Ustaw datę',\n  monthSelect: 'Wybierz miesiąc',\n  yearSelect: 'Wybierz rok',\n  decadeSelect: 'Wybierz dekadę',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Poprzedni miesiąc (PageUp)',\n  nextMonth: 'Następny miesiąc (PageDown)',\n  previousYear: 'Ostatni rok (Ctrl + left)',\n  nextYear: 'Następny rok (Ctrl + right)',\n  previousDecade: 'Ostatnia dekada',\n  nextDecade: 'Następna dekada',\n  previousCentury: 'Ostatni wiek',\n  nextCentury: 'Następny wiek',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/pt_BR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'pt_BR',\n  today: 'Hoje',\n  now: 'Agora',\n  backToToday: 'Voltar para hoje',\n  ok: 'Ok',\n  clear: 'Limpar',\n  month: 'Mês',\n  year: 'Ano',\n  timeSelect: 'Selecionar hora',\n  dateSelect: 'Selecionar data',\n  monthSelect: 'Escolher mês',\n  yearSelect: 'Escolher ano',\n  decadeSelect: 'Escolher década',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: false,\n  previousMonth: 'Mês anterior (PageUp)',\n  nextMonth: 'Próximo mês (PageDown)',\n  previousYear: 'Ano anterior (Control + esquerda)',\n  nextYear: 'Próximo ano (Control + direita)',\n  previousDecade: 'Década anterior',\n  nextDecade: 'Próxima década',\n  previousCentury: 'Século anterior',\n  nextCentury: 'Próximo século',\n  shortWeekDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n  shortMonths: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/pt_PT.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'pt_PT',\n  today: 'Hoje',\n  now: 'Agora',\n  backToToday: 'Hoje',\n  ok: 'Ok',\n  clear: 'Limpar',\n  month: 'Mês',\n  year: 'Ano',\n  timeSelect: 'Selecionar hora',\n  dateSelect: 'Selecionar data',\n  monthSelect: 'Selecionar mês',\n  yearSelect: 'Selecionar ano',\n  decadeSelect: 'Selecionar década',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Mês anterior (PageUp)',\n  nextMonth: 'Mês seguinte (PageDown)',\n  previousYear: 'Ano anterior (Control + left)',\n  nextYear: 'Ano seguinte (Control + right)',\n  previousDecade: 'Década anterior',\n  nextDecade: 'Década seguinte',\n  previousCentury: 'Século anterior',\n  nextCentury: 'Século seguinte',\n  shortWeekDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n  shortMonths: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ro_RO.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ro_RO',\n  today: 'Azi',\n  now: 'Acum',\n  backToToday: 'Înapoi la azi',\n  ok: 'Ok',\n  clear: 'Șterge',\n  month: 'Lună',\n  year: 'An',\n  timeSelect: 'selectează timpul',\n  dateSelect: 'selectează data',\n  weekSelect: 'Alege o săptămână',\n  monthSelect: 'Alege o lună',\n  yearSelect: 'Alege un an',\n  decadeSelect: 'Alege un deceniu',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Luna anterioară (PageUp)',\n  nextMonth: 'Luna următoare (PageDown)',\n  previousYear: 'Anul anterior (Control + stânga)',\n  nextYear: 'Anul următor (Control + dreapta)',\n  previousDecade: 'Deceniul anterior',\n  nextDecade: 'Deceniul următor',\n  previousCentury: 'Secolul anterior',\n  nextCentury: 'Secolul următor',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ru_RU.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ru_RU',\n  today: 'Сегодня',\n  now: 'Сейчас',\n  backToToday: 'Текущая дата',\n  ok: 'ОК',\n  clear: 'Очистить',\n  month: 'Месяц',\n  year: 'Год',\n  timeSelect: 'Выбрать время',\n  dateSelect: 'Выбрать дату',\n  monthSelect: 'Выбрать месяц',\n  yearSelect: 'Выбрать год',\n  decadeSelect: 'Выбрать десятилетие',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Предыдущий месяц (PageUp)',\n  nextMonth: 'Следующий месяц (PageDown)',\n  previousYear: 'Предыдущий год (Control + left)',\n  nextYear: 'Следующий год (Control + right)',\n  previousDecade: 'Предыдущее десятилетие',\n  nextDecade: 'Следущее десятилетие',\n  previousCentury: 'Предыдущий век',\n  nextCentury: 'Следующий век',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/sk_SK.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'sk_SK',\n  today: 'Dnes',\n  now: 'Teraz',\n  backToToday: 'Späť na dnes',\n  ok: 'Ok',\n  clear: 'Vymazať',\n  month: 'Mesiac',\n  year: 'Rok',\n  timeSelect: 'Vybrať čas',\n  dateSelect: 'Vybrať dátum',\n  monthSelect: 'Vybrať mesiac',\n  yearSelect: 'Vybrať rok',\n  decadeSelect: 'Vybrať dekádu',\n  yearFormat: 'YYYY',\n  dateFormat: 'D.M.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D.M.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Predchádzajúci mesiac (PageUp)',\n  nextMonth: 'Nasledujúci mesiac (PageDown)',\n  previousYear: 'Predchádzajúci rok (Control + left)',\n  nextYear: 'Nasledujúci rok (Control + right)',\n  previousDecade: 'Predchádzajúca dekáda',\n  nextDecade: 'Nasledujúca dekáda',\n  previousCentury: 'Predchádzajúce storočie',\n  nextCentury: 'Nasledujúce storočie',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/sl_SI.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'sl_SI',\n  today: 'Danes',\n  now: 'Trenutno',\n  backToToday: 'Nazaj na danes',\n  ok: 'V redu',\n  clear: 'Počisti',\n  month: 'Mesec',\n  year: 'Leto',\n  timeSelect: 'Izberite čas',\n  dateSelect: 'Izberite datum',\n  monthSelect: 'Izberite mesec',\n  yearSelect: 'Izberite leto',\n  decadeSelect: 'Izberite desetletje',\n  yearFormat: 'YYYY',\n  dateFormat: 'DD.MM.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Prejšnji mesec (PageUp)',\n  nextMonth: 'Naslednji mesec (PageDown)',\n  previousYear: 'Prejšnje leto (Control + left)',\n  nextYear: 'Naslednje leto (Control + right)',\n  previousDecade: 'Prejšnje desetletje',\n  nextDecade: 'Naslednje desetletje',\n  previousCentury: 'Prejšnje stoletje',\n  nextCentury: 'Naslednje stoletje',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/sr_RS.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'sr_RS',\n  today: 'Danas',\n  now: 'Sada',\n  backToToday: 'Vrati se na danas',\n  ok: 'U redu',\n  clear: 'Obriši',\n  month: 'Mesec',\n  year: 'Godina',\n  timeSelect: 'Izaberi vreme',\n  dateSelect: 'Izaberi datum',\n  monthSelect: 'Izaberi mesec',\n  yearSelect: 'Izaberi godinu',\n  decadeSelect: 'Izaberi deceniju',\n  yearFormat: 'YYYY',\n  dateFormat: 'DD.MM.YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'DD.MM.YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Prethodni mesec (PageUp)',\n  nextMonth: 'Sledeći mesec (PageDown)',\n  previousYear: 'Prethodna godina (Control + left)',\n  nextYear: 'Sledeća godina (Control + right)',\n  previousDecade: 'Prethodna decenija',\n  nextDecade: 'Sledeća decenija',\n  previousCentury: 'Prethodni vek',\n  nextCentury: 'Sledeći vek',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/sv_SE.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'sv_SE',\n  today: 'I dag',\n  now: 'Nu',\n  backToToday: 'Till idag',\n  ok: 'Ok',\n  clear: 'Avbryt',\n  month: 'Månad',\n  year: 'År',\n  timeSelect: 'Välj tidpunkt',\n  dateSelect: 'Välj datum',\n  monthSelect: 'Välj månad',\n  yearSelect: 'Välj år',\n  decadeSelect: 'Välj årtionde',\n  yearFormat: 'YYYY',\n  dateFormat: 'YYYY-MM-DD',\n  dayFormat: 'D',\n  dateTimeFormat: 'YYYY-MM-DD H:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Förra månaden (PageUp)',\n  nextMonth: 'Nästa månad (PageDown)',\n  previousYear: 'Föreg år (Control + left)',\n  nextYear: 'Nästa år (Control + right)',\n  previousDecade: 'Föreg årtionde',\n  nextDecade: 'Nästa årtionde',\n  previousCentury: 'Föreg århundrade',\n  nextCentury: 'Nästa århundrade',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ta_IN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ta_IN',\n  today: 'இன்று',\n  now: 'இப்போது',\n  backToToday: 'இன்றுக்கு திரும்பு',\n  ok: 'சரி',\n  clear: 'அழி',\n  month: 'மாதம்',\n  year: 'வருடம்',\n  timeSelect: 'நேரத்தைத் தேர்ந்தெடு',\n  dateSelect: 'தேதியைத் தேர்ந்தெடு',\n  weekSelect: 'வாரத்தைத் தேர்வுசெய்க',\n  monthSelect: 'மாதத்தைத் தேர்வுசெய்க',\n  yearSelect: 'வருடத்தைத் தேர்வுசெய்க',\n  decadeSelect: 'தசாப்தத்தைத் தேர்வுசெய்க',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'முந்தைய மாதம் (PageUp)',\n  nextMonth: 'அடுத்த மாதம் (PageDown)',\n  previousYear: 'முந்தைய வருடம் (Control + left)',\n  nextYear: 'அடுத்த வருடம் (Control + right)',\n  previousDecade: 'முந்தைய தசாப்தம்',\n  nextDecade: 'அடுத்த தசாப்தம்',\n  previousCentury: 'முந்தைய நூற்றாண்டு',\n  nextCentury: 'அடுத்த நூற்றாண்டு',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/th_TH.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'th_TH',\n  today: 'วันนี้',\n  now: 'ตอนนี้',\n  backToToday: 'กลับไปยังวันนี้',\n  ok: 'ตกลง',\n  clear: 'ลบล้าง',\n  month: 'เดือน',\n  year: 'ปี',\n  timeSelect: 'เลือกเวลา',\n  dateSelect: 'เลือกวัน',\n  monthSelect: 'เลือกเดือน',\n  yearSelect: 'เลือกปี',\n  decadeSelect: 'เลือกทศวรรษ',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'เดือนก่อนหน้า (PageUp)',\n  nextMonth: 'เดือนถัดไป (PageDown)',\n  previousYear: 'ปีก่อนหน้า (Control + left)',\n  nextYear: 'ปีถัดไป (Control + right)',\n  previousDecade: 'ทศวรรษก่อนหน้า',\n  nextDecade: 'ทศวรรษถัดไป',\n  previousCentury: 'ศตวรรษก่อนหน้า',\n  nextCentury: 'ศตวรรษถัดไป',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/tr_TR.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'tr_TR',\n  today: 'Bugün',\n  now: 'Şimdi',\n  backToToday: 'Bugüne Geri Dön',\n  ok: 'tamam',\n  clear: 'Temizle',\n  month: 'Ay',\n  year: 'Yıl',\n  timeSelect: 'Zaman Seç',\n  dateSelect: 'Tarih Seç',\n  monthSelect: 'Ay Seç',\n  yearSelect: 'Yıl Seç',\n  decadeSelect: 'On Yıl Seç',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Önceki Ay (PageUp)',\n  nextMonth: 'Sonraki Ay (PageDown)',\n  previousYear: 'Önceki Yıl (Control + Sol)',\n  nextYear: 'Sonraki Yıl (Control + Sağ)',\n  previousDecade: 'Önceki On Yıl',\n  nextDecade: 'Sonraki On Yıl',\n  previousCentury: 'Önceki Yüzyıl',\n  nextCentury: 'Sonraki Yüzyıl',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ug_CN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ug_CN',\n  today: 'بۈگۈن',\n  now: 'ھازىر',\n  backToToday: 'بۈگۈنگە قايتىش',\n  ok: 'مۇقىملاشتۇرۇش',\n  timeSelect: 'ۋاقىت تاللاش',\n  dateSelect: 'كۈن تاللاش',\n  clear: 'تازىلاش',\n  month: 'ئاي',\n  year: 'يىل',\n  previousMonth: 'ئالدىنقى ئاي(ئالدىنقى بەت )',\n  nextMonth: 'كېلەركى ئاي (كېلەركى بەت)',\n  monthSelect: 'ئاي تاللاش',\n  yearSelect: 'يىل تاللاش',\n  decadeSelect: 'يىللارنى تاللاش',\n  yearFormat: 'YYYY-يىلى',\n  dayFormat: 'D-كۈنى',\n  dateFormat: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n  dateTimeFormat: 'YYYY-يىلىM—ئاينىڭD-كۈنى، HH:mm:ss',\n  previousYear: 'ئالدىنقى يىلى (Controlبىلەن يۆنىلىش كونۇپكىسى)',\n  nextYear: 'كېلەركى يىلى (Controlبىلەن يۆنىلىش كونۇپكىسى)',\n  previousDecade: 'ئالدىنقى يىللار',\n  nextDecade: 'كېيىنكى يىللار',\n  previousCentury: 'ئالدىنقى ئەسىر',\n  nextCentury: 'كېيىنكى ئەسىر',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/uk_UA.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'uk_UA',\n  today: 'Сьогодні',\n  now: 'Зараз',\n  backToToday: 'Поточна дата',\n  ok: 'Ok',\n  clear: 'Очистити',\n  month: 'Місяць',\n  year: 'Рік',\n  timeSelect: 'Обрати час',\n  dateSelect: 'Обрати дату',\n  monthSelect: 'Обрати місяць',\n  yearSelect: 'Обрати рік',\n  decadeSelect: 'Обрати десятиріччя',\n  yearFormat: 'YYYY',\n  dateFormat: 'D-M-YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D-M-YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Попередній місяць (PageUp)',\n  nextMonth: 'Наступний місяць (PageDown)',\n  previousYear: 'Попередній рік (Control + left)',\n  nextYear: 'Наступний рік (Control + right)',\n  previousDecade: 'Попереднє десятиріччя',\n  nextDecade: 'Наступне десятиріччя',\n  previousCentury: 'Попереднє століття',\n  nextCentury: 'Наступне століття',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/ur_PK.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'ur_PK',\n  today: 'آج',\n  now: 'ابھی',\n  backToToday: 'آج واپس',\n  ok: 'ٹھیک ہے',\n  clear: 'صاف',\n  month: 'مہینہ',\n  year: 'سال',\n  timeSelect: 'وقت منتخب کریں',\n  dateSelect: 'تاریخ منتخب کریں',\n  weekSelect: 'ایک ہفتہ کا انتخاب کریں',\n  monthSelect: 'ایک مہینہ کا انتخاب کریں',\n  yearSelect: 'ایک سال کا انتخاب کریں',\n  decadeSelect: 'ایک دہائی کا انتخاب کریں',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'پچھلے مہینے (PageUp)',\n  nextMonth: 'اگلے مہینے (PageDown)',\n  previousYear: 'گزشتہ سال (Control + left)',\n  nextYear: 'اگلے سال (Control + right)',\n  previousDecade: 'پچھلی دہائی',\n  nextDecade: 'اگلی دہائی',\n  previousCentury: 'پچھلی صدی',\n  nextCentury: 'اگلی صدی',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/vi_VN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'vi_VN',\n  today: 'Hôm nay',\n  now: 'Bây giờ',\n  backToToday: 'Trở về hôm nay',\n  ok: 'Ok',\n  clear: 'Xóa',\n  month: 'Tháng',\n  year: 'Năm',\n  timeSelect: 'Chọn thời gian',\n  dateSelect: 'Chọn ngày',\n  weekSelect: 'Chọn tuần',\n  monthSelect: 'Chọn tháng',\n  yearSelect: 'Chọn năm',\n  decadeSelect: 'Chọn thập kỷ',\n  yearFormat: 'YYYY',\n  dateFormat: 'D/M/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'D/M/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Tháng trước (PageUp)',\n  nextMonth: 'Tháng sau (PageDown)',\n  previousYear: 'Năm trước (Control + left)',\n  nextYear: 'Năm sau (Control + right)',\n  previousDecade: 'Thập kỷ trước',\n  nextDecade: 'Thập kỷ sau',\n  previousCentury: 'Thế kỷ trước',\n  nextCentury: 'Thế kỷ sau',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/zh_CN.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'zh_CN',\n  today: '今天',\n  now: '此刻',\n  backToToday: '返回今天',\n  ok: '确定',\n  timeSelect: '选择时间',\n  dateSelect: '选择日期',\n  weekSelect: '选择周',\n  clear: '清除',\n  month: '月',\n  year: '年',\n  previousMonth: '上个月 (翻页上键)',\n  nextMonth: '下个月 (翻页下键)',\n  monthSelect: '选择月份',\n  yearSelect: '选择年份',\n  decadeSelect: '选择年代',\n  yearFormat: 'YYYY年',\n  dayFormat: 'D日',\n  dateFormat: 'YYYY年M月D日',\n  dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',\n  previousYear: '上一年 (Control键加左方向键)',\n  nextYear: '下一年 (Control键加右方向键)',\n  previousDecade: '上一年代',\n  nextDecade: '下一年代',\n  previousCentury: '上一世纪',\n  nextCentury: '下一世纪',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/locale/zh_TW.ts",
    "content": "import type { Locale } from '../interface';\n\nconst locale: Locale = {\n  locale: 'zh_TW',\n\n  today: '今天',\n  now: '此刻',\n  backToToday: '返回今天',\n  ok: '確定',\n  timeSelect: '選擇時間',\n  dateSelect: '選擇日期',\n  weekSelect: '選擇周',\n  clear: '清除',\n  month: '月',\n  year: '年',\n  previousMonth: '上個月 (翻頁上鍵)',\n  nextMonth: '下個月 (翻頁下鍵)',\n  monthSelect: '選擇月份',\n  yearSelect: '選擇年份',\n  decadeSelect: '選擇年代',\n  yearFormat: 'YYYY年',\n  dayFormat: 'D日',\n  dateFormat: 'YYYY年M月D日',\n  dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',\n  previousYear: '上一年 (Control鍵加左方向鍵)',\n  nextYear: '下一年 (Control鍵加右方向鍵)',\n  previousDecade: '上一年代',\n  nextDecade: '下一年代',\n  previousCentury: '上一世紀',\n  nextCentury: '下一世紀',\n};\n\nexport default locale;\n"
  },
  {
    "path": "components/vc-picker/panels/DatePanel/DateBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport {\n  WEEK_DAY_COUNT,\n  getWeekStartDate,\n  isSameDate,\n  isSameMonth,\n  formatValue,\n} from '../../utils/dateUtil';\nimport type { Locale } from '../../interface';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nimport type { VueNode } from '../../../_util/type';\nimport { useInjectRange } from '../../RangeContext';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type DateRender<DateType> = (props: { current: DateType; today: DateType }) => VueNode;\n\nexport type DateBodyPassProps<DateType> = {\n  dateRender?: DateRender<DateType>;\n  disabledDate?: (date: DateType) => boolean;\n\n  // Used for week panel\n  prefixColumn?: (date: DateType) => VueNode;\n  rowClassName?: (date: DateType) => string;\n};\n\nexport type DateBodyProps<DateType> = {\n  prefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  viewDate: DateType;\n  locale: Locale;\n  rowCount: number;\n  onSelect: (value: DateType) => void;\n} & DateBodyPassProps<DateType>;\n\nfunction DateBody<DateType>(_props: DateBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, prefixColumn, locale, rowCount, viewDate, value, dateRender } =\n    props;\n\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate);\n  const cellPrefixCls = `${prefixCls}-cell`;\n  const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);\n  const today = generateConfig.getNow();\n\n  // ============================== Header ==============================\n  const headerCells: VueNode[] = [];\n  const weekDaysLocale: string[] =\n    locale.shortWeekDays ||\n    (generateConfig.locale.getShortWeekDays\n      ? generateConfig.locale.getShortWeekDays(locale.locale)\n      : []);\n\n  if (prefixColumn) {\n    headerCells.push(<th key=\"empty\" aria-label=\"empty cell\" />);\n  }\n  for (let i = 0; i < WEEK_DAY_COUNT; i += 1) {\n    headerCells.push(<th key={i}>{weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]}</th>);\n  }\n\n  // =============================== Body ===============================\n  const getCellClassName = useCellClassName({\n    cellPrefixCls,\n    today,\n    value,\n    generateConfig,\n    rangedValue: prefixColumn ? null : rangedValue.value,\n    hoverRangedValue: prefixColumn ? null : hoverRangedValue.value,\n    isSameCell: (current, target) => isSameDate(generateConfig, current, target),\n    isInView: date => isSameMonth(generateConfig, date, viewDate),\n    offsetCell: (date, offset) => generateConfig.addDate(date, offset),\n  });\n\n  const getCellNode = dateRender\n    ? (date: DateType) => dateRender({ current: date, today })\n    : undefined;\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={rowCount}\n      colNum={WEEK_DAY_COUNT}\n      baseDate={baseDate}\n      getCellNode={getCellNode}\n      getCellText={generateConfig.getDate}\n      getCellClassName={getCellClassName}\n      getCellDate={generateConfig.addDate}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY-MM-DD',\n          generateConfig,\n        })\n      }\n      headerCells={headerCells}\n    />\n  );\n}\n\nDateBody.displayName = 'DateBody';\nDateBody.inheritAttrs = false;\nDateBody.props = [\n  'prefixCls',\n  'generateConfig',\n  'value?',\n  'viewDate',\n  'locale',\n  'rowCount',\n  'onSelect',\n  'dateRender?',\n  'disabledDate?',\n  // Used for week panel\n  'prefixColumn?',\n  'rowClassName?',\n];\nexport default DateBody;\n"
  },
  {
    "path": "components/vc-picker/panels/DatePanel/DateHeader.tsx",
    "content": "import Header from '../Header';\nimport type { Locale } from '../../interface';\nimport type { GenerateConfig } from '../../generate';\nimport { useInjectPanel } from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nimport type { VueNode } from '../../../_util/type';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type DateHeaderProps<DateType> = {\n  prefixCls: string;\n  viewDate: DateType;\n  value?: DateType | null;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n\n  onPrevYear: () => void;\n  onNextYear: () => void;\n  onPrevMonth: () => void;\n  onNextMonth: () => void;\n  onYearClick: () => void;\n  onMonthClick: () => void;\n};\n\nfunction DateHeader<DateType>(_props: DateHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    generateConfig,\n    locale,\n    viewDate,\n    onNextMonth,\n    onPrevMonth,\n    onNextYear,\n    onPrevYear,\n    onYearClick,\n    onMonthClick,\n  } = props;\n\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader.value) {\n    return null;\n  }\n\n  const headerPrefixCls = `${prefixCls}-header`;\n\n  const monthsLocale: string[] =\n    locale.shortMonths ||\n    (generateConfig.locale.getShortMonths\n      ? generateConfig.locale.getShortMonths(locale.locale)\n      : []);\n\n  const month = generateConfig.getMonth(viewDate);\n\n  // =================== Month & Year ===================\n  const yearNode: VueNode = (\n    <button\n      type=\"button\"\n      key=\"year\"\n      onClick={onYearClick}\n      tabindex={-1}\n      class={`${prefixCls}-year-btn`}\n    >\n      {formatValue(viewDate, {\n        locale,\n        format: locale.yearFormat,\n        generateConfig,\n      })}\n    </button>\n  );\n  const monthNode: VueNode = (\n    <button\n      type=\"button\"\n      key=\"month\"\n      onClick={onMonthClick}\n      tabindex={-1}\n      class={`${prefixCls}-month-btn`}\n    >\n      {locale.monthFormat\n        ? formatValue(viewDate, {\n            locale,\n            format: locale.monthFormat,\n            generateConfig,\n          })\n        : monthsLocale[month]}\n    </button>\n  );\n\n  const monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];\n\n  return (\n    <Header\n      {...props}\n      prefixCls={headerPrefixCls}\n      onSuperPrev={onPrevYear}\n      onPrev={onPrevMonth}\n      onNext={onNextMonth}\n      onSuperNext={onNextYear}\n    >\n      {monthYearNodes}\n    </Header>\n  );\n}\n\nDateHeader.displayName = 'DateHeader';\nDateHeader.inheritAttrs = false;\nexport default DateHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/DatePanel/index.tsx",
    "content": "import type { DateBodyPassProps, DateRender } from './DateBody';\nimport DateBody from './DateBody';\nimport DateHeader from './DateHeader';\nimport type { PanelSharedProps } from '../../interface';\nimport { WEEK_DAY_COUNT } from '../../utils/dateUtil';\nimport type { KeyboardConfig } from '../../utils/uiUtil';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport classNames from '../../../_util/classNames';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nconst DATE_ROW_COUNT = 6;\n\nexport type DatePanelProps<DateType> = {\n  active?: boolean;\n  dateRender?: DateRender<DateType>;\n\n  // Used for week panel\n  panelName?: string;\n  keyboardConfig?: KeyboardConfig;\n} & PanelSharedProps<DateType> &\n  DateBodyPassProps<DateType>;\n\nfunction DatePanel<DateType>(_props: DatePanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    panelName = 'date',\n    keyboardConfig,\n    active,\n    operationRef,\n    generateConfig,\n    value,\n    viewDate,\n    onViewDateChange,\n    onPanelChange,\n    onSelect,\n  } = props;\n  const panelPrefixCls = `${prefixCls}-${panelName}-panel`;\n  // ======================= Keyboard =======================\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          onSelect(generateConfig.addDate(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: diff => {\n          onSelect(generateConfig.addDate(value || viewDate, diff * WEEK_DAY_COUNT), 'key');\n        },\n        onPageUpDown: diff => {\n          onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n        },\n        ...keyboardConfig,\n      }),\n  };\n\n  // ==================== View Operation ====================\n  const onYearChange = (diff: number) => {\n    const newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  const onMonthChange = (diff: number) => {\n    const newDate = generateConfig.addMonth(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n\n  return (\n    <div\n      class={classNames(panelPrefixCls, {\n        [`${panelPrefixCls}-active`]: active,\n      })}\n    >\n      <DateHeader\n        {...props}\n        prefixCls={prefixCls}\n        value={value}\n        viewDate={viewDate}\n        // View Operation\n        onPrevYear={() => {\n          onYearChange(-1);\n        }}\n        onNextYear={() => {\n          onYearChange(1);\n        }}\n        onPrevMonth={() => {\n          onMonthChange(-1);\n        }}\n        onNextMonth={() => {\n          onMonthChange(1);\n        }}\n        onMonthClick={() => {\n          onPanelChange('month', viewDate);\n        }}\n        onYearClick={() => {\n          onPanelChange('year', viewDate);\n        }}\n      />\n      <DateBody\n        {...props}\n        onSelect={date => onSelect(date, 'mouse')}\n        prefixCls={prefixCls}\n        value={value}\n        viewDate={viewDate}\n        rowCount={DATE_ROW_COUNT}\n      />\n    </div>\n  );\n}\n\nDatePanel.displayName = 'DatePanel';\nDatePanel.inheritAttrs = false;\n\nexport default DatePanel;\n"
  },
  {
    "path": "components/vc-picker/panels/DatetimePanel/index.tsx",
    "content": "import type { DatePanelProps } from '../DatePanel';\nimport DatePanel from '../DatePanel';\nimport type { SharedTimeProps } from '../TimePanel';\nimport TimePanel from '../TimePanel';\nimport { tuple } from '../../utils/miscUtil';\nimport { setDateTime as setTime } from '../../utils/timeUtil';\nimport type { PanelRefProps, DisabledTime } from '../../interface';\nimport KeyCode from '../../../_util/KeyCode';\nimport classNames from '../../../_util/classNames';\nimport { ref } from 'vue';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type DatetimePanelProps<DateType> = {\n  disabledTime?: DisabledTime<DateType>;\n  showTime?: boolean | SharedTimeProps<DateType>;\n  defaultValue?: DateType;\n} & Omit<DatePanelProps<DateType>, 'disabledHours' | 'disabledMinutes' | 'disabledSeconds'>;\n\nconst ACTIVE_PANEL = tuple('date', 'time');\ntype ActivePanelType = (typeof ACTIVE_PANEL)[number];\n\nfunction DatetimePanel<DateType>(_props: DatetimePanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    operationRef,\n    generateConfig,\n    value,\n    defaultValue,\n    disabledTime,\n    showTime,\n    onSelect,\n  } = props;\n  const panelPrefixCls = `${prefixCls}-datetime-panel`;\n  const activePanel = ref<ActivePanelType | null>(null);\n\n  const dateOperationRef = ref<PanelRefProps>({});\n  const timeOperationRef = ref<PanelRefProps>({});\n\n  const timeProps = typeof showTime === 'object' ? { ...showTime } : {};\n\n  // ======================= Keyboard =======================\n  function getNextActive(offset: number) {\n    const activeIndex = ACTIVE_PANEL.indexOf(activePanel.value!) + offset;\n    const nextActivePanel = ACTIVE_PANEL[activeIndex] || null;\n    return nextActivePanel;\n  }\n\n  const onBlur = (e?: FocusEvent) => {\n    if (timeOperationRef.value.onBlur) {\n      timeOperationRef.value.onBlur(e!);\n    }\n    activePanel.value = null;\n  };\n\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) => {\n      // Switch active panel\n      if (event.which === KeyCode.TAB) {\n        const nextActivePanel = getNextActive(event.shiftKey ? -1 : 1);\n        activePanel.value = nextActivePanel;\n\n        if (nextActivePanel) {\n          event.preventDefault();\n        }\n\n        return true;\n      }\n\n      // Operate on current active panel\n      if (activePanel.value) {\n        const ref = activePanel.value === 'date' ? dateOperationRef : timeOperationRef;\n\n        if (ref.value && ref.value.onKeydown) {\n          ref.value.onKeydown(event);\n        }\n\n        return true;\n      }\n\n      // Switch first active panel if operate without panel\n      if ([KeyCode.LEFT, KeyCode.RIGHT, KeyCode.UP, KeyCode.DOWN].includes(event.which)) {\n        activePanel.value = 'date';\n        return true;\n      }\n\n      return false;\n    },\n    onBlur,\n    onClose: onBlur,\n  };\n\n  // ======================== Events ========================\n  const onInternalSelect = (date: DateType, source: 'date' | 'time') => {\n    let selectedDate = date;\n\n    if (source === 'date' && !value && timeProps.defaultValue) {\n      // Date with time defaultValue\n      selectedDate = generateConfig.setHour(\n        selectedDate,\n        generateConfig.getHour(timeProps.defaultValue),\n      );\n      selectedDate = generateConfig.setMinute(\n        selectedDate,\n        generateConfig.getMinute(timeProps.defaultValue),\n      );\n      selectedDate = generateConfig.setSecond(\n        selectedDate,\n        generateConfig.getSecond(timeProps.defaultValue),\n      );\n    } else if (source === 'time' && !value && defaultValue) {\n      selectedDate = generateConfig.setYear(selectedDate, generateConfig.getYear(defaultValue));\n      selectedDate = generateConfig.setMonth(selectedDate, generateConfig.getMonth(defaultValue));\n      selectedDate = generateConfig.setDate(selectedDate, generateConfig.getDate(defaultValue));\n    }\n\n    if (onSelect) {\n      onSelect(selectedDate, 'mouse');\n    }\n  };\n\n  // ======================== Render ========================\n  const disabledTimes = disabledTime ? disabledTime(value || null) : {};\n\n  return (\n    <div\n      class={classNames(panelPrefixCls, {\n        [`${panelPrefixCls}-active`]: activePanel.value,\n      })}\n    >\n      <DatePanel\n        {...props}\n        operationRef={dateOperationRef}\n        active={activePanel.value === 'date'}\n        onSelect={date => {\n          onInternalSelect(\n            setTime(\n              generateConfig,\n              date,\n              !value && typeof showTime === 'object' ? showTime.defaultValue : null,\n            ),\n            'date',\n          );\n        }}\n      />\n      <TimePanel\n        {...props}\n        format={undefined}\n        {...timeProps}\n        {...disabledTimes}\n        disabledTime={null}\n        defaultValue={undefined}\n        operationRef={timeOperationRef}\n        active={activePanel.value === 'time'}\n        onSelect={date => {\n          onInternalSelect(date, 'time');\n        }}\n      />\n    </div>\n  );\n}\n\nDatetimePanel.displayName = 'DatetimePanel';\nDatetimePanel.inheritAttrs = false;\n\nexport default DatetimePanel;\n"
  },
  {
    "path": "components/vc-picker/panels/DecadePanel/DecadeBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport { DECADE_DISTANCE_COUNT, DECADE_UNIT_DIFF } from '.';\nimport PanelBody from '../PanelBody';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport const DECADE_COL_COUNT = 3;\nconst DECADE_ROW_COUNT = 4;\n\nexport type YearBodyProps<DateType> = {\n  prefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  viewDate: DateType;\n  disabledDate?: (date: DateType) => boolean;\n  onSelect: (value: DateType) => void;\n};\n\nfunction DecadeBody<DateType>(_props: YearBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const DECADE_UNIT_DIFF_DES = DECADE_UNIT_DIFF - 1;\n  const { prefixCls, viewDate, generateConfig } = props;\n\n  const cellPrefixCls = `${prefixCls}-cell`;\n\n  const yearNumber = generateConfig.getYear(viewDate);\n  const decadeYearNumber = Math.floor(yearNumber / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n\n  const startDecadeYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n  const endDecadeYear = startDecadeYear + DECADE_DISTANCE_COUNT - 1;\n\n  const baseDecadeYear = generateConfig.setYear(\n    viewDate,\n    startDecadeYear -\n      Math.ceil(\n        (DECADE_COL_COUNT * DECADE_ROW_COUNT * DECADE_UNIT_DIFF - DECADE_DISTANCE_COUNT) / 2,\n      ),\n  );\n\n  const getCellClassName = (date: DateType) => {\n    const startDecadeNumber = generateConfig.getYear(date);\n    const endDecadeNumber = startDecadeNumber + DECADE_UNIT_DIFF_DES;\n\n    return {\n      [`${cellPrefixCls}-in-view`]:\n        startDecadeYear <= startDecadeNumber && endDecadeNumber <= endDecadeYear,\n      [`${cellPrefixCls}-selected`]: startDecadeNumber === decadeYearNumber,\n    };\n  };\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={DECADE_ROW_COUNT}\n      colNum={DECADE_COL_COUNT}\n      baseDate={baseDecadeYear}\n      getCellText={date => {\n        const startDecadeNumber = generateConfig.getYear(date);\n        return `${startDecadeNumber}-${startDecadeNumber + DECADE_UNIT_DIFF_DES}`;\n      }}\n      getCellClassName={getCellClassName}\n      getCellDate={(date, offset) => generateConfig.addYear(date, offset * DECADE_UNIT_DIFF)}\n    />\n  );\n}\n\nDecadeBody.displayName = 'DecadeBody';\nDecadeBody.inheritAttrs = false;\n\nexport default DecadeBody;\n"
  },
  {
    "path": "components/vc-picker/panels/DecadePanel/DecadeHeader.tsx",
    "content": "import Header from '../Header';\nimport type { GenerateConfig } from '../../generate';\nimport { DECADE_DISTANCE_COUNT } from '.';\nimport { useInjectPanel } from '../../PanelContext';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type YearHeaderProps<DateType> = {\n  prefixCls: string;\n  viewDate: DateType;\n  generateConfig: GenerateConfig<DateType>;\n\n  onPrevDecades: () => void;\n  onNextDecades: () => void;\n};\n\nfunction DecadeHeader<DateType>(_props: YearHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, viewDate, onPrevDecades, onNextDecades } = props;\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader) {\n    return null;\n  }\n\n  const headerPrefixCls = `${prefixCls}-header`;\n\n  const yearNumber = generateConfig.getYear(viewDate);\n  const startYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n  const endYear = startYear + DECADE_DISTANCE_COUNT - 1;\n\n  return (\n    <Header\n      {...props}\n      prefixCls={headerPrefixCls}\n      onSuperPrev={onPrevDecades}\n      onSuperNext={onNextDecades}\n    >\n      {startYear}-{endYear}\n    </Header>\n  );\n}\n\nDecadeHeader.displayName = 'DecadeHeader';\nDecadeHeader.inheritAttrs = false;\n\nexport default DecadeHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/DecadePanel/index.tsx",
    "content": "import DecadeHeader from './DecadeHeader';\nimport DecadeBody, { DECADE_COL_COUNT } from './DecadeBody';\nimport type { PanelSharedProps } from '../../interface';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type DecadePanelProps<DateType> = PanelSharedProps<DateType>;\n\nexport const DECADE_UNIT_DIFF = 10;\nexport const DECADE_DISTANCE_COUNT = DECADE_UNIT_DIFF * 10;\n\nfunction DecadePanel<DateType>(_props: DecadePanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    onViewDateChange,\n    generateConfig,\n    viewDate,\n    operationRef,\n    onSelect,\n    onPanelChange,\n  } = props;\n\n  const panelPrefixCls = `${prefixCls}-decade-panel`;\n\n  // ======================= Keyboard =======================\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          onSelect(generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF), 'key');\n        },\n        onCtrlLeftRight: diff => {\n          onSelect(generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT), 'key');\n        },\n        onUpDown: diff => {\n          onSelect(\n            generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF * DECADE_COL_COUNT),\n            'key',\n          );\n        },\n        onEnter: () => {\n          onPanelChange('year', viewDate);\n        },\n      }),\n  };\n\n  // ==================== View Operation ====================\n  const onDecadesChange = (diff: number) => {\n    const newDate = generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n\n  const onInternalSelect = (date: DateType) => {\n    onSelect(date, 'mouse');\n    onPanelChange('year', date);\n  };\n\n  return (\n    <div class={panelPrefixCls}>\n      <DecadeHeader\n        {...props}\n        prefixCls={prefixCls}\n        onPrevDecades={() => {\n          onDecadesChange(-1);\n        }}\n        onNextDecades={() => {\n          onDecadesChange(1);\n        }}\n      />\n      <DecadeBody {...props} prefixCls={prefixCls} onSelect={onInternalSelect} />\n    </div>\n  );\n}\n\nDecadePanel.displayName = 'DecadePanel';\nDecadePanel.inheritAttrs = false;\n\nexport default DecadePanel;\n"
  },
  {
    "path": "components/vc-picker/panels/Header.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport type { VueNode } from '../../_util/type';\nimport useMergeProps from '../hooks/useMergeProps';\nimport { useInjectPanel } from '../PanelContext';\n\nconst HIDDEN_STYLE: CSSProperties = {\n  visibility: 'hidden',\n};\n\nexport type HeaderProps = {\n  prefixCls: string;\n\n  // Icons\n  prevIcon?: VueNode;\n  nextIcon?: VueNode;\n  superPrevIcon?: VueNode;\n  superNextIcon?: VueNode;\n\n  /** Last one step */\n  onPrev?: () => void;\n  /** Next one step */\n  onNext?: () => void;\n  /** Last multiple steps */\n  onSuperPrev?: () => void;\n  /** Next multiple steps */\n  onSuperNext?: () => void;\n\n  children?: VueNode;\n};\n\nfunction Header(_props: HeaderProps, { slots }) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    prevIcon = '\\u2039',\n    nextIcon = '\\u203A',\n    superPrevIcon = '\\u00AB',\n    superNextIcon = '\\u00BB',\n    onSuperPrev,\n    onSuperNext,\n    onPrev,\n    onNext,\n  } = props;\n  const { hideNextBtn, hidePrevBtn } = useInjectPanel();\n\n  return (\n    <div class={prefixCls}>\n      {onSuperPrev && (\n        <button\n          type=\"button\"\n          onClick={onSuperPrev}\n          tabindex={-1}\n          class={`${prefixCls}-super-prev-btn`}\n          style={hidePrevBtn.value ? HIDDEN_STYLE : {}}\n        >\n          {superPrevIcon}\n        </button>\n      )}\n      {onPrev && (\n        <button\n          type=\"button\"\n          onClick={onPrev}\n          tabindex={-1}\n          class={`${prefixCls}-prev-btn`}\n          style={hidePrevBtn.value ? HIDDEN_STYLE : {}}\n        >\n          {prevIcon}\n        </button>\n      )}\n      <div class={`${prefixCls}-view`}>{slots.default?.()}</div>\n      {onNext && (\n        <button\n          type=\"button\"\n          onClick={onNext}\n          tabindex={-1}\n          class={`${prefixCls}-next-btn`}\n          style={hideNextBtn.value ? HIDDEN_STYLE : {}}\n        >\n          {nextIcon}\n        </button>\n      )}\n      {onSuperNext && (\n        <button\n          type=\"button\"\n          onClick={onSuperNext}\n          tabindex={-1}\n          class={`${prefixCls}-super-next-btn`}\n          style={hideNextBtn.value ? HIDDEN_STYLE : {}}\n        >\n          {superNextIcon}\n        </button>\n      )}\n    </div>\n  );\n}\n\nHeader.displayName = 'Header';\nHeader.inheritAttrs = false;\n\nexport default Header;\n"
  },
  {
    "path": "components/vc-picker/panels/MonthPanel/MonthBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport type { Locale } from '../../interface';\nimport { formatValue, isSameMonth } from '../../utils/dateUtil';\nimport { useInjectRange } from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nimport type { VueNode } from '../../../_util/type';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport const MONTH_COL_COUNT = 3;\nconst MONTH_ROW_COUNT = 4;\n\nexport type MonthCellRender<DateType> = (obj: { current: DateType; locale: Locale }) => VueNode;\n\nexport type MonthBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  viewDate: DateType;\n  disabledDate?: (date: DateType) => boolean;\n  monthCellRender?: MonthCellRender<DateType>;\n  onSelect: (value: DateType) => void;\n};\n\nfunction MonthBody<DateType>(_props: MonthBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, locale, value, viewDate, generateConfig, monthCellRender } = props;\n\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const cellPrefixCls = `${prefixCls}-cell`;\n\n  const getCellClassName = useCellClassName({\n    cellPrefixCls,\n    value,\n    generateConfig,\n    rangedValue: rangedValue.value,\n    hoverRangedValue: hoverRangedValue.value,\n    isSameCell: (current, target) => isSameMonth(generateConfig, current, target),\n    isInView: () => true,\n    offsetCell: (date, offset) => generateConfig.addMonth(date, offset),\n  });\n\n  const monthsLocale: string[] =\n    locale.shortMonths ||\n    (generateConfig.locale.getShortMonths\n      ? generateConfig.locale.getShortMonths(locale.locale)\n      : []);\n\n  const baseMonth = generateConfig.setMonth(viewDate, 0);\n\n  const getCellNode = monthCellRender\n    ? (date: DateType) => monthCellRender({ current: date, locale })\n    : undefined;\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={MONTH_ROW_COUNT}\n      colNum={MONTH_COL_COUNT}\n      baseDate={baseMonth}\n      getCellNode={getCellNode}\n      getCellText={date =>\n        locale.monthFormat\n          ? formatValue(date, {\n              locale,\n              format: locale.monthFormat,\n              generateConfig,\n            })\n          : monthsLocale[generateConfig.getMonth(date)]\n      }\n      getCellClassName={getCellClassName}\n      getCellDate={generateConfig.addMonth}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY-MM',\n          generateConfig,\n        })\n      }\n    />\n  );\n}\n\nMonthBody.displayName = 'MonthBody';\nMonthBody.inheritAttrs = false;\n\nexport default MonthBody;\n"
  },
  {
    "path": "components/vc-picker/panels/MonthPanel/MonthHeader.tsx",
    "content": "import Header from '../Header';\nimport type { Locale } from '../../interface';\nimport type { GenerateConfig } from '../../generate';\nimport { useInjectPanel } from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type MonthHeaderProps<DateType> = {\n  prefixCls: string;\n  viewDate: DateType;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n\n  onPrevYear: () => void;\n  onNextYear: () => void;\n  onYearClick: () => void;\n};\n\nfunction MonthHeader<DateType>(_props: MonthHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, locale, viewDate, onNextYear, onPrevYear, onYearClick } =\n    props;\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader.value) {\n    return null;\n  }\n\n  const headerPrefixCls = `${prefixCls}-header`;\n\n  return (\n    <Header\n      {...props}\n      prefixCls={headerPrefixCls}\n      onSuperPrev={onPrevYear}\n      onSuperNext={onNextYear}\n    >\n      <button type=\"button\" onClick={onYearClick} class={`${prefixCls}-year-btn`}>\n        {formatValue(viewDate, {\n          locale,\n          format: locale.yearFormat,\n          generateConfig,\n        })}\n      </button>\n    </Header>\n  );\n}\n\nMonthHeader.displayName = 'MonthHeader';\nMonthHeader.inheritAttrs = false;\n\nexport default MonthHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/MonthPanel/index.tsx",
    "content": "import MonthHeader from './MonthHeader';\nimport type { MonthCellRender } from './MonthBody';\nimport MonthBody, { MONTH_COL_COUNT } from './MonthBody';\nimport type { PanelSharedProps } from '../../interface';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type MonthPanelProps<DateType> = {\n  monthCellContentRender?: MonthCellRender<DateType>;\n} & PanelSharedProps<DateType>;\n\nfunction MonthPanel<DateType>(_props: MonthPanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    operationRef,\n    onViewDateChange,\n    generateConfig,\n    value,\n    viewDate,\n    onPanelChange,\n    onSelect,\n  } = props;\n\n  const panelPrefixCls = `${prefixCls}-month-panel`;\n\n  // ======================= Keyboard =======================\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: diff => {\n          onSelect(generateConfig.addMonth(value || viewDate, diff * MONTH_COL_COUNT), 'key');\n        },\n        onEnter: () => {\n          onPanelChange('date', value || viewDate);\n        },\n      }),\n  };\n\n  // ==================== View Operation ====================\n  const onYearChange = (diff: number) => {\n    const newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n\n  return (\n    <div class={panelPrefixCls}>\n      <MonthHeader\n        {...props}\n        prefixCls={prefixCls}\n        onPrevYear={() => {\n          onYearChange(-1);\n        }}\n        onNextYear={() => {\n          onYearChange(1);\n        }}\n        onYearClick={() => {\n          onPanelChange('year', viewDate);\n        }}\n      />\n      <MonthBody<DateType>\n        {...props}\n        prefixCls={prefixCls}\n        onSelect={date => {\n          onSelect(date, 'mouse');\n          onPanelChange('date', date);\n        }}\n      />\n    </div>\n  );\n}\n\nMonthPanel.displayName = 'MonthPanel';\nMonthPanel.inheritAttrs = false;\n\nexport default MonthPanel;\n"
  },
  {
    "path": "components/vc-picker/panels/PanelBody.tsx",
    "content": "import { useInjectPanel } from '../PanelContext';\nimport type { GenerateConfig } from '../generate';\nimport { getLastDay } from '../utils/timeUtil';\nimport type { PanelMode } from '../interface';\nimport { getCellDateDisabled } from '../utils/dateUtil';\nimport type { VueNode } from '../../_util/type';\nimport classNames from '../../_util/classNames';\nimport useMergeProps from '../hooks/useMergeProps';\n\nexport type PanelBodyProps<DateType> = {\n  prefixCls: string;\n  disabledDate?: (date: DateType) => boolean;\n  onSelect: (value: DateType) => void;\n  picker?: PanelMode;\n\n  // By panel\n  headerCells?: VueNode[];\n  rowNum: number;\n  colNum: number;\n  baseDate: DateType;\n  getCellClassName: (date: DateType) => Record<string, boolean | undefined>;\n  getCellDate: (date: DateType, offset: number) => DateType;\n  getCellText: (date: DateType) => VueNode;\n  getCellNode?: (date: DateType) => VueNode;\n  titleCell?: (date: DateType) => string;\n  generateConfig: GenerateConfig<DateType>;\n\n  // Used for week panel\n  prefixColumn?: (date: DateType) => VueNode;\n  rowClassName?: (date: DateType) => string;\n};\n\nfunction PanelBody<DateType>(_props: PanelBodyProps<DateType>) {\n  const {\n    prefixCls,\n    disabledDate,\n    onSelect,\n    picker,\n    rowNum,\n    colNum,\n    prefixColumn,\n    rowClassName,\n    baseDate,\n    getCellClassName,\n    getCellText,\n    getCellNode,\n    getCellDate,\n    generateConfig,\n    titleCell,\n    headerCells,\n  } = useMergeProps(_props);\n  const { onDateMouseenter, onDateMouseleave, mode } = useInjectPanel();\n\n  const cellPrefixCls = `${prefixCls}-cell`;\n\n  // =============================== Body ===============================\n  const rows: VueNode[] = [];\n\n  for (let i = 0; i < rowNum; i += 1) {\n    const row: VueNode[] = [];\n    let rowStartDate: DateType;\n\n    for (let j = 0; j < colNum; j += 1) {\n      const offset = i * colNum + j;\n      const currentDate = getCellDate(baseDate, offset);\n      const disabled = getCellDateDisabled({\n        cellDate: currentDate,\n        mode: mode.value,\n        disabledDate,\n        generateConfig,\n      });\n\n      if (j === 0) {\n        rowStartDate = currentDate;\n\n        if (prefixColumn) {\n          row.push(prefixColumn(rowStartDate));\n        }\n      }\n\n      const title = titleCell && titleCell(currentDate);\n\n      row.push(\n        <td\n          key={j}\n          title={title}\n          class={classNames(cellPrefixCls, {\n            [`${cellPrefixCls}-disabled`]: disabled,\n            [`${cellPrefixCls}-start`]:\n              getCellText(currentDate) === 1 || (picker === 'year' && Number(title) % 10 === 0),\n            [`${cellPrefixCls}-end`]:\n              title === getLastDay(generateConfig, currentDate) ||\n              (picker === 'year' && Number(title) % 10 === 9),\n            ...getCellClassName(currentDate),\n          })}\n          onClick={e => {\n            e.stopPropagation();\n            if (!disabled) {\n              onSelect(currentDate);\n            }\n          }}\n          onMouseenter={() => {\n            if (!disabled && onDateMouseenter) {\n              onDateMouseenter(currentDate);\n            }\n          }}\n          onMouseleave={() => {\n            if (!disabled && onDateMouseleave) {\n              onDateMouseleave(currentDate);\n            }\n          }}\n        >\n          {getCellNode ? (\n            getCellNode(currentDate)\n          ) : (\n            <div class={`${cellPrefixCls}-inner`}>{getCellText(currentDate)}</div>\n          )}\n        </td>,\n      );\n    }\n\n    rows.push(\n      <tr key={i} class={rowClassName && rowClassName(rowStartDate!)}>\n        {row}\n      </tr>,\n    );\n  }\n\n  return (\n    <div class={`${prefixCls}-body`}>\n      <table class={`${prefixCls}-content`}>\n        {headerCells && (\n          <thead>\n            <tr>{headerCells}</tr>\n          </thead>\n        )}\n        <tbody>{rows}</tbody>\n      </table>\n    </div>\n  );\n}\n\nPanelBody.displayName = 'PanelBody';\nPanelBody.inheritAttrs = false;\n\nexport default PanelBody;\n"
  },
  {
    "path": "components/vc-picker/panels/QuarterPanel/QuarterBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport type { Locale } from '../../interface';\nimport { formatValue, isSameQuarter } from '../../utils/dateUtil';\nimport { useInjectRange } from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport const QUARTER_COL_COUNT = 4;\nconst QUARTER_ROW_COUNT = 1;\n\nexport type QuarterBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  viewDate: DateType;\n  disabledDate?: (date: DateType) => boolean;\n  onSelect: (value: DateType) => void;\n};\n\nfunction QuarterBody<DateType>(_props: QuarterBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, locale, value, viewDate, generateConfig } = props;\n\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const cellPrefixCls = `${prefixCls}-cell`;\n\n  const getCellClassName = useCellClassName({\n    cellPrefixCls,\n    value,\n    generateConfig,\n    rangedValue: rangedValue.value,\n    hoverRangedValue: hoverRangedValue.value,\n    isSameCell: (current, target) => isSameQuarter(generateConfig, current, target),\n    isInView: () => true,\n    offsetCell: (date, offset) => generateConfig.addMonth(date, offset * 3),\n  });\n\n  const baseQuarter = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={QUARTER_ROW_COUNT}\n      colNum={QUARTER_COL_COUNT}\n      baseDate={baseQuarter}\n      getCellText={date =>\n        formatValue(date, {\n          locale,\n          format: locale.quarterFormat || '[Q]Q',\n          generateConfig,\n        })\n      }\n      getCellClassName={getCellClassName}\n      getCellDate={(date, offset) => generateConfig.addMonth(date, offset * 3)}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY-[Q]Q',\n          generateConfig,\n        })\n      }\n    />\n  );\n}\n\nQuarterBody.displayName = 'QuarterBody';\nQuarterBody.inheritAttrs = false;\nexport default QuarterBody;\n"
  },
  {
    "path": "components/vc-picker/panels/QuarterPanel/QuarterHeader.tsx",
    "content": "import Header from '../Header';\nimport type { Locale } from '../../interface';\nimport type { GenerateConfig } from '../../generate';\nimport { useInjectPanel } from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type QuarterHeaderProps<DateType> = {\n  prefixCls: string;\n  viewDate: DateType;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n\n  onPrevYear: () => void;\n  onNextYear: () => void;\n  onYearClick: () => void;\n};\n\nfunction QuarterHeader<DateType>(_props: QuarterHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, locale, viewDate, onNextYear, onPrevYear, onYearClick } =\n    props;\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader.value) {\n    return null;\n  }\n\n  const headerPrefixCls = `${prefixCls}-header`;\n  return (\n    <Header\n      {...props}\n      prefixCls={headerPrefixCls}\n      onSuperPrev={onPrevYear}\n      onSuperNext={onNextYear}\n    >\n      <button type=\"button\" onClick={onYearClick} class={`${prefixCls}-year-btn`}>\n        {formatValue(viewDate, {\n          locale,\n          format: locale.yearFormat,\n          generateConfig,\n        })}\n      </button>\n    </Header>\n  );\n}\n\nQuarterHeader.displayName = 'QuarterHeader';\nQuarterHeader.inheritAttrs = false;\n\nexport default QuarterHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/QuarterPanel/index.tsx",
    "content": "import QuarterHeader from './QuarterHeader';\nimport QuarterBody from './QuarterBody';\nimport type { PanelSharedProps } from '../../interface';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type QuarterPanelProps<DateType> = {} & PanelSharedProps<DateType>;\n\nfunction QuarterPanel<DateType>(_props: QuarterPanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    operationRef,\n    onViewDateChange,\n    generateConfig,\n    value,\n    viewDate,\n    onPanelChange,\n    onSelect,\n  } = props;\n\n  const panelPrefixCls = `${prefixCls}-quarter-panel`;\n\n  // ======================= Keyboard =======================\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          onSelect(generateConfig.addMonth(value || viewDate, diff * 3), 'key');\n        },\n        onCtrlLeftRight: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n      }),\n  };\n\n  // ==================== View Operation ====================\n  const onYearChange = (diff: number) => {\n    const newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n\n  return (\n    <div class={panelPrefixCls}>\n      <QuarterHeader\n        {...props}\n        prefixCls={prefixCls}\n        onPrevYear={() => {\n          onYearChange(-1);\n        }}\n        onNextYear={() => {\n          onYearChange(1);\n        }}\n        onYearClick={() => {\n          onPanelChange('year', viewDate);\n        }}\n      />\n      <QuarterBody<DateType>\n        {...props}\n        prefixCls={prefixCls}\n        onSelect={date => {\n          onSelect(date, 'mouse');\n        }}\n      />\n    </div>\n  );\n}\n\nQuarterPanel.displayName = 'QuarterPanel';\nQuarterPanel.inheritAttrs = false;\n\nexport default QuarterPanel;\n"
  },
  {
    "path": "components/vc-picker/panels/TimePanel/TimeBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport type { Locale, OnSelect } from '../../interface';\nimport type { Unit } from './TimeUnitColumn';\nimport TimeUnitColumn from './TimeUnitColumn';\nimport { leftPad } from '../../utils/miscUtil';\nimport type { SharedTimeProps } from '.';\nimport { setTime as utilSetTime } from '../../utils/timeUtil';\nimport { cloneElement } from '../../../_util/vnode';\nimport type { VueNode } from '../../../_util/type';\nimport type { Ref, VNode } from 'vue';\nimport { onBeforeUpdate, ref, watchEffect, computed, defineComponent } from 'vue';\n\nfunction generateUnits(\n  start: number,\n  end: number,\n  step: number,\n  disabledUnits: number[] | undefined,\n) {\n  const units: Unit[] = [];\n  for (let i = start; i <= end; i += step) {\n    units.push({\n      label: leftPad(i, 2),\n      value: i,\n      disabled: (disabledUnits || []).includes(i),\n    });\n  }\n  return units;\n}\n\nexport type BodyOperationRef = {\n  onUpDown: (diff: number) => void;\n};\n\nexport type TimeBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  onSelect: OnSelect<DateType>;\n  activeColumnIndex: number;\n  operationRef: Ref<BodyOperationRef | undefined>;\n} & SharedTimeProps<DateType>;\n\nconst TimeBody = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TimeBody',\n  inheritAttrs: false,\n  props: [\n    'generateConfig',\n    'prefixCls',\n    'operationRef',\n    'activeColumnIndex',\n    'value',\n    'showHour',\n    'showMinute',\n    'showSecond',\n    'use12Hours',\n    'hourStep',\n    'minuteStep',\n    'secondStep',\n    'disabledHours',\n    'disabledMinutes',\n    'disabledSeconds',\n    'disabledTime',\n    'hideDisabledOptions',\n    'onSelect',\n  ],\n  setup(props) {\n    const originHour = computed(() =>\n      props.value ? props.generateConfig.getHour(props.value) : -1,\n    );\n    const isPM = computed(() => {\n      if (props.use12Hours) {\n        return originHour.value >= 12; // -1 means should display AM\n      } else {\n        return false;\n      }\n    });\n    const hour = computed(() => {\n      // Should additional logic to handle 12 hours\n      if (props.use12Hours) {\n        return originHour.value % 12;\n      } else {\n        return originHour.value;\n      }\n    });\n    const minute = computed(() => (props.value ? props.generateConfig.getMinute(props.value) : -1));\n    const second = computed(() => (props.value ? props.generateConfig.getSecond(props.value) : -1));\n\n    const now = ref(props.generateConfig.getNow());\n    const mergedDisabledHours = ref();\n    const mergedDisabledMinutes = ref();\n    const mergedDisabledSeconds = ref();\n    onBeforeUpdate(() => {\n      now.value = props.generateConfig.getNow();\n    });\n    watchEffect(() => {\n      if (props.disabledTime) {\n        const disabledConfig = props.disabledTime(now);\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          disabledConfig.disabledHours,\n          disabledConfig.disabledMinutes,\n          disabledConfig.disabledSeconds,\n        ];\n      } else {\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          props.disabledHours,\n          props.disabledMinutes,\n          props.disabledSeconds,\n        ];\n      }\n    });\n    const setTime = (\n      isNewPM: boolean | undefined,\n      newHour: number,\n      newMinute: number,\n      newSecond: number,\n    ) => {\n      let newDate = props.value || props.generateConfig.getNow();\n\n      const mergedHour = Math.max(0, newHour);\n      const mergedMinute = Math.max(0, newMinute);\n      const mergedSecond = Math.max(0, newSecond);\n\n      newDate = utilSetTime(\n        props.generateConfig,\n        newDate,\n        !props.use12Hours || !isNewPM ? mergedHour : mergedHour + 12,\n        mergedMinute,\n        mergedSecond,\n      );\n\n      return newDate;\n    };\n\n    // ========================= Unit =========================\n    const rawHours = computed(() =>\n      generateUnits(\n        0,\n        23,\n        props.hourStep ?? 1,\n        mergedDisabledHours.value && mergedDisabledHours.value(),\n      ),\n    );\n\n    // const memorizedRawHours = useMemo(() => rawHours, rawHours, shouldUnitsUpdate);\n\n    const AMPMDisabled = computed(() => {\n      if (!props.use12Hours) {\n        return [false, false];\n      }\n      const AMPMDisabled = [true, true];\n      rawHours.value.forEach(({ disabled, value: hourValue }) => {\n        if (disabled) return;\n        if (hourValue >= 12) {\n          AMPMDisabled[1] = false;\n        } else {\n          AMPMDisabled[0] = false;\n        }\n      });\n      return AMPMDisabled;\n    });\n\n    const hours = computed(() => {\n      if (!props.use12Hours) return rawHours.value;\n      return rawHours.value\n        .filter(isPM.value ? hourMeta => hourMeta.value >= 12 : hourMeta => hourMeta.value < 12)\n        .map(hourMeta => {\n          const hourValue = hourMeta.value % 12;\n          const hourLabel = hourValue === 0 ? '12' : leftPad(hourValue, 2);\n          return {\n            ...hourMeta,\n            label: hourLabel,\n            value: hourValue,\n          };\n        });\n    });\n\n    const minutes = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.minuteStep ?? 1,\n        mergedDisabledMinutes.value && mergedDisabledMinutes.value(originHour.value),\n      ),\n    );\n\n    const seconds = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.secondStep ?? 1,\n        mergedDisabledSeconds.value && mergedDisabledSeconds.value(originHour.value, minute.value),\n      ),\n    );\n\n    return () => {\n      const {\n        prefixCls,\n        operationRef,\n        activeColumnIndex,\n        showHour,\n        showMinute,\n        showSecond,\n        use12Hours,\n        hideDisabledOptions,\n        onSelect,\n      } = props;\n      const columns: {\n        node: VueNode;\n        value: number;\n        units: Unit[];\n        onSelect: (diff: number) => void;\n      }[] = [];\n      const contentPrefixCls = `${prefixCls}-content`;\n      const columnPrefixCls = `${prefixCls}-time-panel`;\n\n      // ====================== Operations ======================\n      operationRef.value = {\n        onUpDown: (diff: number) => {\n          const column = columns[activeColumnIndex];\n          if (column) {\n            const valueIndex = column.units.findIndex(unit => unit.value === column.value);\n\n            const unitLen = column.units.length;\n            for (let i = 1; i < unitLen; i += 1) {\n              const nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];\n\n              if (nextUnit.disabled !== true) {\n                column.onSelect(nextUnit.value);\n                break;\n              }\n            }\n          }\n        },\n      };\n\n      // ======================== Render ========================\n      function addColumnNode(\n        condition: boolean | undefined,\n        node: VueNode,\n        columnValue: number,\n        units: Unit[],\n        onColumnSelect: (diff: number) => void,\n      ) {\n        if (condition !== false) {\n          columns.push({\n            node: cloneElement(node as unknown as VNode, {\n              prefixCls: columnPrefixCls,\n              value: columnValue,\n              active: activeColumnIndex === columns.length,\n              onSelect: onColumnSelect,\n              units,\n              hideDisabledOptions,\n            }),\n            onSelect: onColumnSelect,\n            value: columnValue,\n            units,\n          });\n        }\n      }\n\n      // Hour\n      addColumnNode(showHour, <TimeUnitColumn key=\"hour\" />, hour.value, hours.value, num => {\n        onSelect(setTime(isPM.value, num, minute.value, second.value), 'mouse');\n      });\n\n      // Minute\n      addColumnNode(\n        showMinute,\n        <TimeUnitColumn key=\"minute\" />,\n        minute.value,\n        minutes.value,\n        num => {\n          onSelect(setTime(isPM.value, hour.value, num, second.value), 'mouse');\n        },\n      );\n\n      // Second\n      addColumnNode(\n        showSecond,\n        <TimeUnitColumn key=\"second\" />,\n        second.value,\n        seconds.value,\n        num => {\n          onSelect(setTime(isPM.value, hour.value, minute.value, num), 'mouse');\n        },\n      );\n\n      // 12 Hours\n      let PMIndex = -1;\n      if (typeof isPM.value === 'boolean') {\n        PMIndex = isPM.value ? 1 : 0;\n      }\n\n      addColumnNode(\n        use12Hours === true,\n        <TimeUnitColumn key=\"12hours\" />,\n        PMIndex,\n        [\n          { label: 'AM', value: 0, disabled: AMPMDisabled.value[0] },\n          { label: 'PM', value: 1, disabled: AMPMDisabled.value[1] },\n        ],\n        num => {\n          onSelect(setTime(!!num, hour.value, minute.value, second.value), 'mouse');\n        },\n      );\n\n      return <div class={contentPrefixCls}>{columns.map(({ node }) => node)}</div>;\n    };\n  },\n});\n\nexport default TimeBody;\n"
  },
  {
    "path": "components/vc-picker/panels/TimePanel/TimeHeader.tsx",
    "content": "import Header from '../Header';\nimport type { Locale } from '../../interface';\nimport type { GenerateConfig } from '../../generate';\nimport { useInjectPanel } from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type TimeHeaderProps<DateType> = {\n  prefixCls: string;\n  value?: DateType | null;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  format: string;\n};\n\nfunction TimeHeader<DateType>(_props: TimeHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader.value) {\n    return null;\n  }\n\n  const { prefixCls, generateConfig, locale, value, format } = props;\n  const headerPrefixCls = `${prefixCls}-header`;\n\n  return (\n    <Header prefixCls={headerPrefixCls}>\n      {value\n        ? formatValue(value, {\n            locale,\n            format,\n            generateConfig,\n          })\n        : '\\u00A0'}\n    </Header>\n  );\n}\n\nTimeHeader.displayName = 'TimeHeader';\nTimeHeader.inheritAttrs = false;\n\nexport default TimeHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/TimePanel/TimeUnitColumn.tsx",
    "content": "import { scrollTo, waitElementReady } from '../../utils/uiUtil';\nimport { useInjectPanel } from '../../PanelContext';\nimport classNames from '../../../_util/classNames';\nimport { ref, onBeforeUnmount, watch, defineComponent, nextTick, shallowRef } from 'vue';\n\nexport type Unit = {\n  label: any;\n  value: number;\n  disabled: boolean;\n};\n\nexport type TimeUnitColumnProps = {\n  prefixCls?: string;\n  units?: Unit[];\n  value?: number;\n  active?: boolean;\n  hideDisabledOptions?: boolean;\n  onSelect?: (value: number) => void;\n};\n\nexport default defineComponent({\n  name: 'TimeUnitColumn',\n  props: ['prefixCls', 'units', 'onSelect', 'value', 'active', 'hideDisabledOptions'],\n  setup(props) {\n    const { open } = useInjectPanel();\n\n    const ulRef = shallowRef<HTMLElement>(null);\n    const liRefs = ref(new Map<number, HTMLElement | null>());\n    const scrollRef = ref<Function>();\n\n    watch(\n      () => props.value,\n      () => {\n        const li = liRefs.value.get(props.value!);\n        if (li && open.value !== false) {\n          scrollTo(ulRef.value, li.offsetTop, 120);\n        }\n      },\n    );\n    onBeforeUnmount(() => {\n      scrollRef.value?.();\n    });\n\n    watch(\n      open,\n      () => {\n        scrollRef.value?.();\n        nextTick(() => {\n          if (open.value) {\n            const li = liRefs.value.get(props.value!);\n            if (li) {\n              scrollRef.value = waitElementReady(li, () => {\n                scrollTo(ulRef.value!, li.offsetTop, 0);\n              });\n            }\n          }\n        });\n      },\n      { immediate: true, flush: 'post' },\n    );\n    return () => {\n      const { prefixCls, units, onSelect, value, active, hideDisabledOptions } = props;\n      const cellPrefixCls = `${prefixCls}-cell`;\n      return (\n        <ul\n          class={classNames(`${prefixCls}-column`, {\n            [`${prefixCls}-column-active`]: active,\n          })}\n          ref={ulRef}\n          style={{ position: 'relative' }}\n        >\n          {units!.map(unit => {\n            if (hideDisabledOptions && unit.disabled) {\n              return null;\n            }\n\n            return (\n              <li\n                key={unit.value}\n                ref={element => {\n                  liRefs.value.set(unit.value, element as HTMLElement);\n                }}\n                class={classNames(cellPrefixCls, {\n                  [`${cellPrefixCls}-disabled`]: unit.disabled,\n                  [`${cellPrefixCls}-selected`]: value === unit.value,\n                })}\n                onClick={() => {\n                  if (unit.disabled) {\n                    return;\n                  }\n                  onSelect!(unit.value);\n                }}\n              >\n                <div class={`${cellPrefixCls}-inner`}>{unit.label}</div>\n              </li>\n            );\n          })}\n        </ul>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-picker/panels/TimePanel/index.tsx",
    "content": "import TimeHeader from './TimeHeader';\nimport type { BodyOperationRef } from './TimeBody';\nimport TimeBody from './TimeBody';\nimport type { PanelSharedProps, DisabledTimes } from '../../interface';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport classNames from '../../../_util/classNames';\nimport { ref } from 'vue';\nimport useMergeProps from '../../hooks/useMergeProps';\n// import type { RangeType } from '../../RangePicker';\n\nexport type SharedTimeProps<DateType> = {\n  format?: string;\n  showNow?: boolean;\n  showHour?: boolean;\n  showMinute?: boolean;\n  showSecond?: boolean;\n  use12Hours?: boolean;\n  hourStep?: number;\n  minuteStep?: number;\n  secondStep?: number;\n  hideDisabledOptions?: boolean;\n  defaultValue?: DateType;\n\n  /** @deprecated Please use `disabledTime` instead. */\n  disabledHours?: DisabledTimes['disabledHours'];\n  /** @deprecated Please use `disabledTime` instead. */\n  disabledMinutes?: DisabledTimes['disabledMinutes'];\n  /** @deprecated Please use `disabledTime` instead. */\n  disabledSeconds?: DisabledTimes['disabledSeconds'];\n\n  disabledTime?: (date: DateType) => DisabledTimes;\n};\n\nexport type TimePanelProps<DateType> = {\n  format?: string;\n  active?: boolean;\n} & PanelSharedProps<DateType> &\n  SharedTimeProps<DateType>;\n\nconst countBoolean = (boolList: (boolean | undefined)[]) =>\n  boolList.filter(bool => bool !== false).length;\n\nfunction TimePanel<DateType>(_props: TimePanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    generateConfig,\n    format = 'HH:mm:ss',\n    prefixCls,\n    active,\n    operationRef,\n    showHour,\n    showMinute,\n    showSecond,\n    use12Hours = false,\n    onSelect,\n    value,\n  } = props;\n  const panelPrefixCls = `${prefixCls}-time-panel`;\n  const bodyOperationRef = ref<BodyOperationRef>();\n\n  // ======================= Keyboard =======================\n  const activeColumnIndex = ref(-1);\n  const columnsCount = countBoolean([showHour, showMinute, showSecond, use12Hours]);\n\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          activeColumnIndex.value = (activeColumnIndex.value + diff + columnsCount) % columnsCount;\n        },\n        onUpDown: diff => {\n          if (activeColumnIndex.value === -1) {\n            activeColumnIndex.value = 0;\n          } else if (bodyOperationRef.value) {\n            bodyOperationRef.value.onUpDown(diff);\n          }\n        },\n        onEnter: () => {\n          onSelect(value || generateConfig.getNow(), 'key');\n          activeColumnIndex.value = -1;\n        },\n      }),\n\n    onBlur: () => {\n      activeColumnIndex.value = -1;\n    },\n  };\n\n  return (\n    <div\n      class={classNames(panelPrefixCls, {\n        [`${panelPrefixCls}-active`]: active,\n      })}\n    >\n      <TimeHeader {...props} format={format} prefixCls={prefixCls} />\n      <TimeBody\n        {...props}\n        prefixCls={prefixCls}\n        activeColumnIndex={activeColumnIndex.value}\n        operationRef={bodyOperationRef}\n      />\n    </div>\n  );\n}\n\nTimePanel.displayName = 'TimePanel';\nTimePanel.inheritAttrs = false;\n\nexport default TimePanel;\n"
  },
  {
    "path": "components/vc-picker/panels/WeekPanel/index.tsx",
    "content": "import DatePanel from '../DatePanel';\nimport type { PanelSharedProps } from '../../interface';\nimport { isSameWeek } from '../../utils/dateUtil';\nimport classNames from '../../../_util/classNames';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type WeekPanelProps<DateType> = PanelSharedProps<DateType>;\n\nfunction WeekPanel<DateType>(_props: WeekPanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, locale, value } = props;\n\n  // Render additional column\n  const cellPrefixCls = `${prefixCls}-cell`;\n  const prefixColumn = (date: DateType) => (\n    <td key=\"week\" class={classNames(cellPrefixCls, `${cellPrefixCls}-week`)}>\n      {generateConfig.locale.getWeek(locale.locale, date)}\n    </td>\n  );\n\n  // Add row className\n  const rowPrefixCls = `${prefixCls}-week-panel-row`;\n  const rowClassName = (date: DateType) =>\n    classNames(rowPrefixCls, {\n      [`${rowPrefixCls}-selected`]: isSameWeek(generateConfig, locale.locale, value, date),\n    });\n\n  return (\n    <DatePanel\n      {...props}\n      panelName=\"week\"\n      prefixColumn={prefixColumn}\n      rowClassName={rowClassName}\n      keyboardConfig={{\n        onLeftRight: null,\n      }}\n    />\n  );\n}\n\nWeekPanel.displayName = 'WeekPanel';\nWeekPanel.inheritAttrs = false;\n\nexport default WeekPanel;\n"
  },
  {
    "path": "components/vc-picker/panels/YearPanel/YearBody.tsx",
    "content": "import type { GenerateConfig } from '../../generate';\nimport { YEAR_DECADE_COUNT } from '.';\nimport type { Locale, NullableDateType } from '../../interface';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport { formatValue, isSameYear } from '../../utils/dateUtil';\nimport { useInjectRange } from '../../RangeContext';\nimport PanelBody from '../PanelBody';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport const YEAR_COL_COUNT = 3;\nconst YEAR_ROW_COUNT = 4;\n\nexport type YearBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: NullableDateType<DateType>;\n  viewDate: DateType;\n  disabledDate?: (date: DateType) => boolean;\n  onSelect: (value: DateType) => void;\n};\n\nfunction YearBody<DateType>(_props: YearBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, value, viewDate, locale, generateConfig } = props;\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const yearPrefixCls = `${prefixCls}-cell`;\n\n  // =============================== Year ===============================\n  const yearNumber = generateConfig.getYear(viewDate);\n  const startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n  const endYear = startYear + YEAR_DECADE_COUNT - 1;\n  const baseYear = generateConfig.setYear(\n    viewDate,\n    startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2),\n  );\n\n  const isInView = (date: DateType) => {\n    const currentYearNumber = generateConfig.getYear(date);\n    return startYear <= currentYearNumber && currentYearNumber <= endYear;\n  };\n\n  const getCellClassName = useCellClassName<DateType>({\n    cellPrefixCls: yearPrefixCls,\n    value,\n    generateConfig,\n    rangedValue: rangedValue.value,\n    hoverRangedValue: hoverRangedValue.value,\n    isSameCell: (current, target) => isSameYear(generateConfig, current, target),\n    isInView,\n    offsetCell: (date, offset) => generateConfig.addYear(date, offset),\n  });\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={YEAR_ROW_COUNT}\n      colNum={YEAR_COL_COUNT}\n      baseDate={baseYear}\n      getCellText={generateConfig.getYear}\n      getCellClassName={getCellClassName}\n      getCellDate={generateConfig.addYear}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY',\n          generateConfig,\n        })\n      }\n    />\n  );\n}\n\nYearBody.displayName = 'YearBody';\nYearBody.inheritAttrs = false;\n\nexport default YearBody;\n"
  },
  {
    "path": "components/vc-picker/panels/YearPanel/YearHeader.tsx",
    "content": "import Header from '../Header';\nimport type { GenerateConfig } from '../../generate';\nimport { YEAR_DECADE_COUNT } from '.';\nimport { useInjectPanel } from '../../PanelContext';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type YearHeaderProps<DateType> = {\n  prefixCls: string;\n  viewDate: DateType;\n  value?: DateType | null;\n  generateConfig: GenerateConfig<DateType>;\n\n  onPrevDecade: () => void;\n  onNextDecade: () => void;\n  onDecadeClick: () => void;\n};\n\nfunction YearHeader<DateType>(_props: YearHeaderProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, viewDate, onPrevDecade, onNextDecade, onDecadeClick } = props;\n  const { hideHeader } = useInjectPanel();\n  if (hideHeader.value) {\n    return null;\n  }\n\n  const headerPrefixCls = `${prefixCls}-header`;\n\n  const yearNumber = generateConfig.getYear(viewDate);\n  const startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n  const endYear = startYear + YEAR_DECADE_COUNT - 1;\n\n  return (\n    <Header\n      {...props}\n      prefixCls={headerPrefixCls}\n      onSuperPrev={onPrevDecade}\n      onSuperNext={onNextDecade}\n    >\n      <button type=\"button\" onClick={onDecadeClick} class={`${prefixCls}-decade-btn`}>\n        {startYear}-{endYear}\n      </button>\n    </Header>\n  );\n}\n\nYearHeader.displayName = 'YearHeader';\nYearHeader.inheritAttrs = false;\n\nexport default YearHeader;\n"
  },
  {
    "path": "components/vc-picker/panels/YearPanel/index.tsx",
    "content": "import YearHeader from './YearHeader';\nimport YearBody, { YEAR_COL_COUNT } from './YearBody';\nimport type { PanelSharedProps, PanelMode } from '../../interface';\nimport { createKeydownHandler } from '../../utils/uiUtil';\nimport useMergeProps from '../../hooks/useMergeProps';\n\nexport type YearPanelProps<DateType> = {\n  sourceMode: PanelMode;\n} & PanelSharedProps<DateType>;\n\nexport const YEAR_DECADE_COUNT = 10;\n\nfunction YearPanel<DateType>(_props: YearPanelProps<DateType>) {\n  const props = useMergeProps(_props);\n  const {\n    prefixCls,\n    operationRef,\n    onViewDateChange,\n    generateConfig,\n    value,\n    viewDate,\n    sourceMode,\n    onSelect,\n    onPanelChange,\n  } = props;\n\n  const panelPrefixCls = `${prefixCls}-year-panel`;\n\n  // ======================= Keyboard =======================\n  operationRef.value = {\n    onKeydown: (event: KeyboardEvent) =>\n      createKeydownHandler(event, {\n        onLeftRight: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_DECADE_COUNT), 'key');\n        },\n        onUpDown: diff => {\n          onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_COL_COUNT), 'key');\n        },\n        onEnter: () => {\n          onPanelChange(sourceMode === 'date' ? 'date' : 'month', value || viewDate);\n        },\n      }),\n  };\n\n  // ==================== View Operation ====================\n  const onDecadeChange = (diff: number) => {\n    const newDate = generateConfig.addYear(viewDate, diff * 10);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n\n  return (\n    <div class={panelPrefixCls}>\n      <YearHeader\n        {...props}\n        prefixCls={prefixCls}\n        onPrevDecade={() => {\n          onDecadeChange(-1);\n        }}\n        onNextDecade={() => {\n          onDecadeChange(1);\n        }}\n        onDecadeClick={() => {\n          onPanelChange('decade', viewDate);\n        }}\n      />\n      <YearBody\n        {...props}\n        prefixCls={prefixCls}\n        onSelect={date => {\n          onPanelChange(sourceMode === 'date' ? 'date' : 'month', date);\n          onSelect(date, 'mouse');\n        }}\n      />\n    </div>\n  );\n}\n\nYearPanel.displayName = 'YearPanel';\nYearPanel.inheritAttrs = false;\n\nexport default YearPanel;\n"
  },
  {
    "path": "components/vc-picker/utils/dateUtil.ts",
    "content": "import { DECADE_UNIT_DIFF } from '../panels/DecadePanel/index';\nimport type { PanelMode, NullableDateType, PickerMode, Locale, CustomFormat } from '../interface';\nimport type { GenerateConfig } from '../generate';\n\nexport const WEEK_DAY_COUNT = 7;\n\nexport function isNullEqual<T>(value1: T, value2: T): boolean | undefined {\n  if (!value1 && !value2) {\n    return true;\n  }\n  if (!value1 || !value2) {\n    return false;\n  }\n  return undefined;\n}\n\nexport function isSameDecade<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  decade1: NullableDateType<DateType>,\n  decade2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(decade1, decade2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  const num1 = Math.floor(generateConfig.getYear(decade1!) / 10);\n  const num2 = Math.floor(generateConfig.getYear(decade2!) / 10);\n  return num1 === num2;\n}\n\nexport function isSameYear<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  year1: NullableDateType<DateType>,\n  year2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(year1, year2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return generateConfig.getYear(year1!) === generateConfig.getYear(year2!);\n}\n\nexport function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType) {\n  const quota = Math.floor(generateConfig.getMonth(date) / 3);\n  return quota + 1;\n}\n\nexport function isSameQuarter<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  quarter1: NullableDateType<DateType>,\n  quarter2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(quarter1, quarter2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return (\n    isSameYear(generateConfig, quarter1, quarter2) &&\n    getQuarter(generateConfig, quarter1!) === getQuarter(generateConfig, quarter2!)\n  );\n}\n\nexport function isSameMonth<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  month1: NullableDateType<DateType>,\n  month2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(month1, month2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return (\n    isSameYear(generateConfig, month1, month2) &&\n    generateConfig.getMonth(month1!) === generateConfig.getMonth(month2!)\n  );\n}\n\nexport function isSameDate<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  date1: NullableDateType<DateType>,\n  date2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return (\n    generateConfig.getYear(date1!) === generateConfig.getYear(date2!) &&\n    generateConfig.getMonth(date1!) === generateConfig.getMonth(date2!) &&\n    generateConfig.getDate(date1!) === generateConfig.getDate(date2!)\n  );\n}\n\nexport function isSameTime<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  time1: NullableDateType<DateType>,\n  time2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(time1, time2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return (\n    generateConfig.getHour(time1!) === generateConfig.getHour(time2!) &&\n    generateConfig.getMinute(time1!) === generateConfig.getMinute(time2!) &&\n    generateConfig.getSecond(time1!) === generateConfig.getSecond(time2!)\n  );\n}\n\nexport function isSameWeek<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  locale: string,\n  date1: NullableDateType<DateType>,\n  date2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n\n  return (\n    generateConfig.locale.getWeek(locale, date1!) === generateConfig.locale.getWeek(locale, date2!)\n  );\n}\n\nexport function isEqual<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  value1: NullableDateType<DateType>,\n  value2: NullableDateType<DateType>,\n) {\n  return isSameDate(generateConfig, value1, value2) && isSameTime(generateConfig, value1, value2);\n}\n\n/** Between in date but not equal of date */\nexport function isInRange<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  startDate: NullableDateType<DateType>,\n  endDate: NullableDateType<DateType>,\n  current: NullableDateType<DateType>,\n) {\n  if (!startDate || !endDate || !current) {\n    return false;\n  }\n\n  return (\n    !isSameDate(generateConfig, startDate, current) &&\n    !isSameDate(generateConfig, endDate, current) &&\n    generateConfig.isAfter(current, startDate) &&\n    generateConfig.isAfter(endDate, current)\n  );\n}\n\nexport function getWeekStartDate<DateType>(\n  locale: string,\n  generateConfig: GenerateConfig<DateType>,\n  value: DateType,\n) {\n  const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale);\n  const monthStartDate = generateConfig.setDate(value, 1);\n  const startDateWeekDay = generateConfig.getWeekDay(monthStartDate);\n\n  let alignStartDate = generateConfig.addDate(monthStartDate, weekFirstDay - startDateWeekDay);\n\n  if (\n    generateConfig.getMonth(alignStartDate) === generateConfig.getMonth(value) &&\n    generateConfig.getDate(alignStartDate) > 1\n  ) {\n    alignStartDate = generateConfig.addDate(alignStartDate, -7);\n  }\n\n  return alignStartDate;\n}\n\nexport function getClosingViewDate<DateType>(\n  viewDate: DateType,\n  picker: PickerMode,\n  generateConfig: GenerateConfig<DateType>,\n  offset = 1,\n): DateType {\n  switch (picker) {\n    case 'year':\n      return generateConfig.addYear(viewDate, offset * 10);\n    case 'quarter':\n    case 'month':\n      return generateConfig.addYear(viewDate, offset);\n    default:\n      return generateConfig.addMonth(viewDate, offset);\n  }\n}\n\nexport function formatValue<DateType>(\n  value: DateType,\n  {\n    generateConfig,\n    locale,\n    format,\n  }: {\n    generateConfig: GenerateConfig<DateType>;\n    locale: Locale;\n    format: string | CustomFormat<DateType>;\n  },\n) {\n  return typeof format === 'function'\n    ? format(value)\n    : generateConfig.locale.format(locale.locale, value, format);\n}\n\nexport function parseValue<DateType>(\n  value: string,\n  {\n    generateConfig,\n    locale,\n    formatList,\n  }: {\n    generateConfig: GenerateConfig<DateType>;\n    locale: Locale;\n    formatList: (string | CustomFormat<DateType>)[];\n  },\n) {\n  if (!value || typeof formatList[0] === 'function') {\n    return null;\n  }\n\n  return generateConfig.locale.parse(locale.locale, value, formatList as string[]);\n}\n\n// eslint-disable-next-line consistent-return\nexport function getCellDateDisabled<DateType>({\n  cellDate,\n  mode,\n  disabledDate,\n  generateConfig,\n}: {\n  cellDate: DateType;\n  mode: Omit<PanelMode, 'time'>;\n  generateConfig: GenerateConfig<DateType>;\n  disabledDate?: (date: DateType) => boolean;\n}): boolean {\n  if (!disabledDate) return false;\n  // Whether cellDate is disabled in range\n  const getDisabledFromRange = (\n    currentMode: 'date' | 'month' | 'year',\n    start: number,\n    end: number,\n  ) => {\n    let current = start;\n    while (current <= end) {\n      let date: DateType;\n      switch (currentMode) {\n        case 'date': {\n          date = generateConfig.setDate(cellDate, current);\n          if (!disabledDate(date)) {\n            return false;\n          }\n          break;\n        }\n        case 'month': {\n          date = generateConfig.setMonth(cellDate, current);\n          if (\n            !getCellDateDisabled({\n              cellDate: date,\n              mode: 'month',\n              generateConfig,\n              disabledDate,\n            })\n          ) {\n            return false;\n          }\n          break;\n        }\n        case 'year': {\n          date = generateConfig.setYear(cellDate, current);\n          if (\n            !getCellDateDisabled({\n              cellDate: date,\n              mode: 'year',\n              generateConfig,\n              disabledDate,\n            })\n          ) {\n            return false;\n          }\n          break;\n        }\n      }\n      current += 1;\n    }\n    return true;\n  };\n  switch (mode) {\n    case 'date':\n    case 'week': {\n      return disabledDate(cellDate);\n    }\n    case 'month': {\n      const startDate = 1;\n      const endDate = generateConfig.getDate(generateConfig.getEndDate(cellDate));\n      return getDisabledFromRange('date', startDate, endDate);\n    }\n    case 'quarter': {\n      const startMonth = Math.floor(generateConfig.getMonth(cellDate) / 3) * 3;\n      const endMonth = startMonth + 2;\n      return getDisabledFromRange('month', startMonth, endMonth);\n    }\n    case 'year': {\n      return getDisabledFromRange('month', 0, 11);\n    }\n    case 'decade': {\n      const year = generateConfig.getYear(cellDate);\n      const startYear = Math.floor(year / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n      const endYear = startYear + DECADE_UNIT_DIFF - 1;\n      return getDisabledFromRange('year', startYear, endYear);\n    }\n  }\n}\n"
  },
  {
    "path": "components/vc-picker/utils/getExtraFooter.tsx",
    "content": "import type { PanelMode } from '../interface';\n\nexport default function getExtraFooter(\n  prefixCls: string,\n  mode: PanelMode,\n  renderExtraFooter?: (mode: PanelMode) => any,\n) {\n  if (!renderExtraFooter) {\n    return null;\n  }\n\n  return <div class={`${prefixCls}-footer-extra`}>{renderExtraFooter(mode)}</div>;\n}\n"
  },
  {
    "path": "components/vc-picker/utils/getRanges.tsx",
    "content": "import type { VueNode } from '../../_util/type';\nimport type { Components, Locale } from '../interface';\n\nexport type RangesProps = {\n  prefixCls: string;\n  components?: Components;\n  needConfirmButton: boolean;\n  onNow?: null | (() => void) | false;\n  onOk?: null | (() => void) | false;\n  okDisabled?: boolean;\n  showNow?: boolean;\n  locale: Locale;\n};\n\nexport default function getRanges({\n  prefixCls,\n  components = {},\n  needConfirmButton,\n  onNow,\n  onOk,\n  okDisabled,\n  showNow,\n  locale,\n}: RangesProps) {\n  let presetNode: VueNode;\n  let okNode: VueNode;\n\n  if (needConfirmButton) {\n    const Button = (components.button || 'button') as any;\n\n    if (onNow && showNow !== false) {\n      presetNode = (\n        <li class={`${prefixCls}-now`}>\n          <a class={`${prefixCls}-now-btn`} onClick={onNow}>\n            {locale.now}\n          </a>\n        </li>\n      );\n    }\n\n    okNode = needConfirmButton && (\n      <li class={`${prefixCls}-ok`}>\n        <Button\n          disabled={okDisabled}\n          onClick={e => {\n            e.stopPropagation();\n            onOk && onOk();\n          }}\n        >\n          {locale.ok}\n        </Button>\n      </li>\n    );\n  }\n\n  if (!presetNode && !okNode) {\n    return null;\n  }\n\n  return (\n    <ul class={`${prefixCls}-ranges`}>\n      {presetNode}\n      {okNode}\n    </ul>\n  );\n}\n"
  },
  {
    "path": "components/vc-picker/utils/miscUtil.ts",
    "content": "export function leftPad(str: string | number, length: number, fill = '0') {\n  let current = String(str);\n  while (current.length < length) {\n    current = `${fill}${str}`;\n  }\n  return current;\n}\n\nexport const tuple = <T extends string[]>(...args: T) => args;\n\nexport function toArray<T>(val: T | T[]): T[] {\n  if (val === null || val === undefined) {\n    return [];\n  }\n\n  return Array.isArray(val) ? val : [val];\n}\n\nexport default function getDataOrAriaProps(props: any) {\n  const retProps: any = {};\n\n  Object.keys(props).forEach(key => {\n    if (\n      (key.startsWith('data-') || key.startsWith('aria-') || key === 'role' || key === 'name') &&\n      !key.startsWith('data-__')\n    ) {\n      retProps[key] = props[key];\n    }\n  });\n\n  return retProps;\n}\n\nexport function getValue<T>(values: null | undefined | (T | null)[], index: number): T | null {\n  return values ? values[index] : null;\n}\n\ntype UpdateValue<T> = (prev: T) => T;\n\nexport function updateValues<T, R = [T | null, T | null] | null>(\n  values: [T | null, T | null] | null,\n  value: T | UpdateValue<T>,\n  index: number,\n): R {\n  const newValues: [T | null, T | null] = [getValue(values, 0), getValue(values, 1)];\n\n  newValues[index] =\n    typeof value === 'function' ? (value as UpdateValue<T | null>)(newValues[index]) : value;\n\n  if (!newValues[0] && !newValues[1]) {\n    return null as unknown as R;\n  }\n\n  return newValues as unknown as R;\n}\n"
  },
  {
    "path": "components/vc-picker/utils/timeUtil.ts",
    "content": "import type { NullableDateType } from '../interface';\nimport type { GenerateConfig } from '../generate';\n\nexport function setTime<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  date: DateType,\n  hour: number,\n  minute: number,\n  second: number,\n): DateType {\n  let nextTime = generateConfig.setHour(date, hour);\n  nextTime = generateConfig.setMinute(nextTime, minute);\n  nextTime = generateConfig.setSecond(nextTime, second);\n  return nextTime;\n}\n\nexport function setDateTime<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  date: DateType,\n  defaultDate: NullableDateType<DateType>,\n) {\n  if (!defaultDate) {\n    return date;\n  }\n\n  let newDate = date;\n  newDate = generateConfig.setHour(newDate, generateConfig.getHour(defaultDate));\n  newDate = generateConfig.setMinute(newDate, generateConfig.getMinute(defaultDate));\n  newDate = generateConfig.setSecond(newDate, generateConfig.getSecond(defaultDate));\n  return newDate;\n}\n\nexport function getLowerBoundTime(\n  hour: number,\n  minute: number,\n  second: number,\n  hourStep: number,\n  minuteStep: number,\n  secondStep: number,\n): [number, number, number] {\n  const lowerBoundHour = Math.floor(hour / hourStep) * hourStep;\n  if (lowerBoundHour < hour) {\n    return [lowerBoundHour, 60 - minuteStep, 60 - secondStep];\n  }\n  const lowerBoundMinute = Math.floor(minute / minuteStep) * minuteStep;\n  if (lowerBoundMinute < minute) {\n    return [lowerBoundHour, lowerBoundMinute, 60 - secondStep];\n  }\n  const lowerBoundSecond = Math.floor(second / secondStep) * secondStep;\n  return [lowerBoundHour, lowerBoundMinute, lowerBoundSecond];\n}\n\nexport function getLastDay<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType) {\n  const year = generateConfig.getYear(date);\n  const month = generateConfig.getMonth(date) + 1;\n  const endDate = generateConfig.getEndDate(generateConfig.getFixedDate(`${year}-${month}-01`));\n  const lastDay = generateConfig.getDate(endDate);\n  const monthShow = month < 10 ? `0${month}` : `${month}`;\n  return `${year}-${monthShow}-${lastDay}`;\n}\n"
  },
  {
    "path": "components/vc-picker/utils/uiUtil.ts",
    "content": "import isVisible from '../../vc-util/Dom/isVisible';\nimport KeyCode from '../../_util/KeyCode';\nimport raf from '../../_util/raf';\nimport type { GenerateConfig } from '../generate';\nimport type { CustomFormat, PanelMode, PickerMode } from '../interface';\n\nconst scrollIds = new Map<HTMLElement, number>();\n\n/** Trigger when element is visible in view */\nexport function waitElementReady(element: HTMLElement, callback: () => void): () => void {\n  let id: number;\n\n  function tryOrNextFrame() {\n    if (isVisible(element)) {\n      callback();\n    } else {\n      id = raf(() => {\n        tryOrNextFrame();\n      });\n    }\n  }\n\n  tryOrNextFrame();\n\n  return () => {\n    raf.cancel(id);\n  };\n}\n\n/* eslint-disable no-param-reassign */\nexport function scrollTo(element: HTMLElement, to: number, duration: number) {\n  if (scrollIds.get(element)) {\n    raf.cancel(scrollIds.get(element)!);\n  }\n\n  // jump to target if duration zero\n  if (duration <= 0) {\n    scrollIds.set(\n      element,\n      raf(() => {\n        element.scrollTop = to;\n      }),\n    );\n\n    return;\n  }\n  const difference = to - element.scrollTop;\n  const perTick = (difference / duration) * 10;\n\n  scrollIds.set(\n    element,\n    raf(() => {\n      element.scrollTop += perTick;\n      if (element.scrollTop !== to) {\n        scrollTo(element, to, duration - 10);\n      }\n    }),\n  );\n}\n/* eslint-enable */\n\nexport type KeyboardConfig = {\n  onLeftRight?: ((diff: number) => void) | null;\n  onCtrlLeftRight?: ((diff: number) => void) | null;\n  onUpDown?: ((diff: number) => void) | null;\n  onPageUpDown?: ((diff: number) => void) | null;\n  onEnter?: (() => void) | null;\n};\nexport function createKeydownHandler(\n  event: KeyboardEvent,\n  { onLeftRight, onCtrlLeftRight, onUpDown, onPageUpDown, onEnter }: KeyboardConfig,\n): boolean {\n  const { which, ctrlKey, metaKey } = event;\n\n  switch (which) {\n    case KeyCode.LEFT:\n      if (ctrlKey || metaKey) {\n        if (onCtrlLeftRight) {\n          onCtrlLeftRight(-1);\n          return true;\n        }\n      } else if (onLeftRight) {\n        onLeftRight(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.RIGHT:\n      if (ctrlKey || metaKey) {\n        if (onCtrlLeftRight) {\n          onCtrlLeftRight(1);\n          return true;\n        }\n      } else if (onLeftRight) {\n        onLeftRight(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.UP:\n      if (onUpDown) {\n        onUpDown(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.DOWN:\n      if (onUpDown) {\n        onUpDown(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.PAGE_UP:\n      if (onPageUpDown) {\n        onPageUpDown(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.PAGE_DOWN:\n      if (onPageUpDown) {\n        onPageUpDown(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n\n    case KeyCode.ENTER:\n      if (onEnter) {\n        onEnter();\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n  }\n\n  return false;\n}\n\n// ===================== Format =====================\nexport function getDefaultFormat<DateType>(\n  format: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[] | undefined,\n  picker: PickerMode | undefined,\n  showTime: boolean | object | undefined,\n  use12Hours: boolean | undefined,\n) {\n  let mergedFormat = format;\n  if (!mergedFormat) {\n    switch (picker) {\n      case 'time':\n        mergedFormat = use12Hours ? 'hh:mm:ss a' : 'HH:mm:ss';\n        break;\n\n      case 'week':\n        mergedFormat = 'gggg-wo';\n        break;\n\n      case 'month':\n        mergedFormat = 'YYYY-MM';\n        break;\n\n      case 'quarter':\n        mergedFormat = 'YYYY-[Q]Q';\n        break;\n\n      case 'year':\n        mergedFormat = 'YYYY';\n        break;\n\n      default:\n        mergedFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD';\n    }\n  }\n\n  return mergedFormat;\n}\n\nexport function getInputSize<DateType>(\n  picker: PickerMode | undefined,\n  format: string | CustomFormat<DateType>,\n  generateConfig: GenerateConfig<DateType>,\n) {\n  const defaultSize = picker === 'time' ? 8 : 10;\n  const length =\n    typeof format === 'function' ? format(generateConfig.getNow()).length : format.length;\n  return Math.max(defaultSize, length) + 2;\n}\n\n// ===================== Window =====================\ntype ClickEventHandler = (event: MouseEvent) => void;\nlet globalClickFunc: ClickEventHandler | null = null;\nconst clickCallbacks = new Set<ClickEventHandler>();\n\nexport function addGlobalMousedownEvent(callback: ClickEventHandler) {\n  if (!globalClickFunc && typeof window !== 'undefined' && window.addEventListener) {\n    globalClickFunc = (e: MouseEvent) => {\n      // Clone a new list to avoid repeat trigger events\n      [...clickCallbacks].forEach(queueFunc => {\n        queueFunc(e);\n      });\n    };\n    window.addEventListener('mousedown', globalClickFunc);\n  }\n\n  clickCallbacks.add(callback);\n\n  return () => {\n    clickCallbacks.delete(callback);\n    if (clickCallbacks.size === 0) {\n      window.removeEventListener('mousedown', globalClickFunc!);\n      globalClickFunc = null;\n    }\n  };\n}\n\nexport function getTargetFromEvent(e: Event) {\n  const target = e.target as HTMLElement;\n\n  // get target if in shadow dom\n  if (e.composed && target.shadowRoot) {\n    return (e.composedPath?.()[0] || target) as HTMLElement;\n  }\n\n  return target;\n}\n\n// ====================== Mode ======================\nconst getYearNextMode = (next: PanelMode): PanelMode => {\n  if (next === 'month' || next === 'date') {\n    return 'year';\n  }\n  return next;\n};\n\nconst getMonthNextMode = (next: PanelMode): PanelMode => {\n  if (next === 'date') {\n    return 'month';\n  }\n  return next;\n};\n\nconst getQuarterNextMode = (next: PanelMode): PanelMode => {\n  if (next === 'month' || next === 'date') {\n    return 'quarter';\n  }\n  return next;\n};\n\nconst getWeekNextMode = (next: PanelMode): PanelMode => {\n  if (next === 'date') {\n    return 'week';\n  }\n  return next;\n};\n\nexport const PickerModeMap: Record<PickerMode, ((next: PanelMode) => PanelMode) | null> = {\n  year: getYearNextMode,\n  month: getMonthNextMode,\n  quarter: getQuarterNextMode,\n  week: getWeekNextMode,\n  time: null,\n  date: null,\n};\n\nexport function elementsContains(\n  elements: (HTMLElement | undefined | null)[],\n  target: HTMLElement,\n) {\n  if (process.env.NODE_ENV === 'test') {\n    return false;\n  }\n  return elements.some(ele => ele && ele.contains(target));\n}\n"
  },
  {
    "path": "components/vc-picker/utils/warnUtil.ts",
    "content": "import { warning } from '../../vc-util/warning';\nimport type { DisabledTimes, PickerMode } from '../interface';\n\nexport interface WarningProps extends DisabledTimes {\n  picker?: PickerMode;\n}\n\nexport function legacyPropsWarning(props: WarningProps) {\n  const { picker, disabledHours, disabledMinutes, disabledSeconds } = props;\n\n  if (picker === 'time' && (disabledHours || disabledMinutes || disabledSeconds)) {\n    warning(\n      false,\n      `'disabledHours', 'disabledMinutes', 'disabledSeconds' will be removed in the next major version, please use 'disabledTime' instead.`,\n    );\n  }\n}\n"
  },
  {
    "path": "components/vc-progress/index.ts",
    "content": "// based on rc-progress 3.1.4\nimport Progress, { Line, Circle } from './src';\n\nimport type { ProgressProps } from './src';\nexport { Line, Circle };\n\nexport type { ProgressProps };\n\nexport default Progress;\n"
  },
  {
    "path": "components/vc-progress/src/Circle.tsx",
    "content": "import { useTransitionDuration, defaultProps } from './common';\nimport type { GapPositionType } from './types';\nimport { propTypes } from './types';\nimport { computed, defineComponent, ref } from 'vue';\nimport initDefaultProps from '../../_util/props-util/initDefaultProps';\nimport useRefs from '../../_util/hooks/useRefs';\n\nlet gradientSeed = 0;\n\nfunction stripPercentToNumber(percent: string) {\n  return +percent.replace('%', '');\n}\n\nfunction toArray(value: any) {\n  return Array.isArray(value) ? value : [value];\n}\n\nfunction getPathStyles(\n  offset: number,\n  percent: number,\n  strokeColor: string,\n  strokeWidth: number,\n  gapDegree = 0,\n  gapPosition: GapPositionType,\n) {\n  const radius = 50 - strokeWidth / 2;\n  let beginPositionX = 0;\n  let beginPositionY = -radius;\n  let endPositionX = 0;\n  let endPositionY = -2 * radius;\n  switch (gapPosition) {\n    case 'left':\n      beginPositionX = -radius;\n      beginPositionY = 0;\n      endPositionX = 2 * radius;\n      endPositionY = 0;\n      break;\n    case 'right':\n      beginPositionX = radius;\n      beginPositionY = 0;\n      endPositionX = -2 * radius;\n      endPositionY = 0;\n      break;\n    case 'bottom':\n      beginPositionY = radius;\n      endPositionY = 2 * radius;\n      break;\n    default:\n  }\n  const pathString = `M 50,50 m ${beginPositionX},${beginPositionY}\n   a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY}\n   a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;\n  const len = Math.PI * 2 * radius;\n\n  const pathStyle = {\n    stroke: strokeColor,\n    strokeDasharray: `${(percent / 100) * (len - gapDegree)}px ${len}px`,\n    strokeDashoffset: `-${gapDegree / 2 + (offset / 100) * (len - gapDegree)}px`,\n    transition:\n      'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s', // eslint-disable-line\n  };\n\n  return {\n    pathString,\n    pathStyle,\n  };\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VCCircle',\n  props: initDefaultProps(propTypes, defaultProps),\n  setup(props) {\n    gradientSeed += 1;\n    const gradientId = ref(gradientSeed);\n    const percentList = computed(() => toArray(props.percent));\n    const strokeColorList = computed(() => toArray(props.strokeColor));\n\n    const [setRef, paths] = useRefs();\n    useTransitionDuration(paths);\n\n    const getStokeList = () => {\n      const { prefixCls, strokeWidth, strokeLinecap, gapDegree, gapPosition } = props;\n\n      let stackPtg = 0;\n      return percentList.value.map((ptg, index) => {\n        const color =\n          strokeColorList.value[index] || strokeColorList.value[strokeColorList.value.length - 1];\n        const stroke =\n          Object.prototype.toString.call(color) === '[object Object]'\n            ? `url(#${prefixCls}-gradient-${gradientId.value})`\n            : '';\n        const { pathString, pathStyle } = getPathStyles(\n          stackPtg,\n          ptg,\n          color,\n          strokeWidth,\n          gapDegree,\n          gapPosition,\n        );\n\n        stackPtg += ptg;\n\n        const pathProps = {\n          key: index,\n          d: pathString,\n          stroke,\n          'stroke-linecap': strokeLinecap,\n          'stroke-width': strokeWidth,\n          opacity: ptg === 0 ? 0 : 1,\n          'fill-opacity': '0',\n          class: `${prefixCls}-circle-path`,\n          style: pathStyle,\n        };\n        return <path ref={setRef(index)} {...pathProps} />;\n      });\n    };\n\n    return () => {\n      const {\n        prefixCls,\n        strokeWidth,\n        trailWidth,\n        gapDegree,\n        gapPosition,\n        trailColor,\n        strokeLinecap,\n        strokeColor,\n        ...restProps\n      } = props;\n      const { pathString, pathStyle } = getPathStyles(\n        0,\n        100,\n        trailColor,\n        strokeWidth,\n        gapDegree,\n        gapPosition,\n      );\n      delete restProps.percent;\n      const gradient = strokeColorList.value.find(\n        color => Object.prototype.toString.call(color) === '[object Object]',\n      );\n      const pathFirst = {\n        d: pathString,\n        stroke: trailColor,\n        'stroke-linecap': strokeLinecap,\n        'stroke-width': trailWidth || strokeWidth,\n        'fill-opacity': '0',\n        class: `${prefixCls}-circle-trail`,\n        style: pathStyle,\n      };\n      return (\n        <svg class={`${prefixCls}-circle`} viewBox=\"0 0 100 100\" {...restProps}>\n          {gradient && (\n            <defs>\n              <linearGradient\n                id={`${prefixCls}-gradient-${gradientId.value}`}\n                x1=\"100%\"\n                y1=\"0%\"\n                x2=\"0%\"\n                y2=\"0%\"\n              >\n                {Object.keys(gradient)\n                  .sort((a, b) => stripPercentToNumber(a) - stripPercentToNumber(b))\n                  .map((key, index) => (\n                    <stop key={index} offset={key} stop-color={gradient[key]} />\n                  ))}\n              </linearGradient>\n            </defs>\n          )}\n          <path {...pathFirst} />\n          {getStokeList().reverse()}\n        </svg>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-progress/src/Line.tsx",
    "content": "import useRefs from '../../_util/hooks/useRefs';\nimport { computed, defineComponent } from 'vue';\nimport initDefaultProps from '../../_util/props-util/initDefaultProps';\nimport { useTransitionDuration, defaultProps } from './common';\nimport { propTypes } from './types';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ProgressLine',\n  props: initDefaultProps(propTypes, defaultProps),\n  setup(props) {\n    const percentList = computed(() => {\n      const { percent } = props;\n      return Array.isArray(percent) ? percent : [percent];\n    });\n    const percentListProps = computed(() => {\n      const { prefixCls, strokeLinecap, strokeWidth, transition } = props;\n      let stackPtg = 0;\n      return percentList.value.map((ptg, index) => {\n        let dashPercent = 1;\n        switch (strokeLinecap) {\n          case 'round':\n            dashPercent = 1 - strokeWidth / 100;\n            break;\n          case 'square':\n            dashPercent = 1 - strokeWidth / 2 / 100;\n            break;\n          default:\n            dashPercent = 1;\n            break;\n        }\n        const pathStyle = {\n          strokeDasharray: `${ptg * dashPercent}px, 100px`,\n          strokeDashoffset: `-${stackPtg}px`,\n          transition:\n            transition ||\n            'stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear',\n        };\n        const color =\n          strokeColorList.value[index] || strokeColorList.value[strokeColorList.value.length - 1];\n\n        stackPtg += ptg;\n\n        const pathProps = {\n          key: index,\n          d: pathString.value,\n          'stroke-linecap': strokeLinecap,\n          stroke: color as string,\n          'stroke-width': strokeWidth,\n          'fill-opacity': '0',\n          class: `${prefixCls}-line-path`,\n          style: pathStyle,\n        };\n\n        return pathProps;\n      });\n    });\n    const strokeColorList = computed(() => {\n      const { strokeColor } = props;\n      return Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n    });\n    const [setRef, paths] = useRefs();\n    useTransitionDuration(paths);\n    const center = computed(() => props.strokeWidth / 2);\n    const right = computed(() => 100 - props.strokeWidth / 2);\n\n    const pathString = computed(\n      () => `M ${props.strokeLinecap === 'round' ? center.value : 0},${center.value}\n    L ${props.strokeLinecap === 'round' ? right.value : 100},${center.value}`,\n    );\n\n    const viewBoxString = computed(() => `0 0 100 ${props.strokeWidth}`);\n\n    const pathFirst = computed(() => ({\n      d: pathString.value,\n      'stroke-linecap': props.strokeLinecap,\n      stroke: props.trailColor,\n      'stroke-width': props.trailWidth || props.strokeWidth,\n      'fill-opacity': '0',\n      class: `${props.prefixCls}-line-trail`,\n    }));\n\n    return () => {\n      const {\n        percent,\n        prefixCls,\n        strokeColor,\n        strokeLinecap,\n        strokeWidth,\n        trailColor,\n        trailWidth,\n        transition,\n        ...restProps\n      } = props;\n\n      delete restProps.gapPosition;\n\n      return (\n        <svg\n          class={`${prefixCls}-line`}\n          viewBox={viewBoxString.value}\n          preserveAspectRatio=\"none\"\n          {...restProps}\n        >\n          <path {...pathFirst.value} />\n          {percentListProps.value.map((pathProps, index) => {\n            return <path ref={setRef(index)} {...pathProps} />;\n          })}\n        </svg>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-progress/src/common.ts",
    "content": "import type { RefsValue } from '../../_util/hooks/useRefs';\nimport type { Ref } from 'vue';\nimport { ref, onUpdated } from 'vue';\nimport type { ProgressProps } from './types';\n\nexport const defaultProps: Partial<ProgressProps> = {\n  percent: 0,\n  prefixCls: 'vc-progress',\n  strokeColor: '#2db7f5',\n  strokeLinecap: 'round',\n  strokeWidth: 1,\n  trailColor: '#D9D9D9',\n  trailWidth: 1,\n};\n\nexport const useTransitionDuration = (paths: Ref<RefsValue>) => {\n  const prevTimeStamp = ref(null);\n\n  onUpdated(() => {\n    const now = Date.now();\n    let updated = false;\n\n    paths.value.forEach(val => {\n      const path = (val as any)?.$el || val;\n      if (!path) {\n        return;\n      }\n      updated = true;\n      const pathStyle = path.style;\n      pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n\n      if (prevTimeStamp.value && now - prevTimeStamp.value < 100) {\n        pathStyle.transitionDuration = '0s, 0s';\n      }\n    });\n\n    if (updated) {\n      prevTimeStamp.value = Date.now();\n    }\n  });\n\n  return paths;\n};\n"
  },
  {
    "path": "components/vc-progress/src/index.ts",
    "content": "import Line from './Line';\nimport Circle from './Circle';\nimport type { ProgressProps } from './types';\n\nexport { Line, Circle };\n\nexport type { ProgressProps };\n\nexport default {\n  Line,\n  Circle,\n};\n"
  },
  {
    "path": "components/vc-progress/src/types.ts",
    "content": "import type { PropType, ExtractPropTypes } from 'vue';\n\nexport type StrokeColorType = string | string[] | object;\n\nexport type GapPositionType = 'top' | 'right' | 'bottom' | 'left';\n\nexport type StrokeLinecapType = 'round' | 'butt' | 'square';\n\nexport const propTypes = {\n  gapDegree: Number,\n  gapPosition: {\n    type: String as PropType<GapPositionType>,\n  },\n  percent: {\n    type: [Array, Number] as PropType<number | number[]>,\n  },\n  prefixCls: String,\n  strokeColor: {\n    type: [Object, String, Array] as PropType<StrokeColorType>,\n  },\n  strokeLinecap: {\n    type: String as PropType<StrokeLinecapType>,\n  },\n  strokeWidth: Number,\n  trailColor: String,\n  trailWidth: Number,\n  transition: String,\n};\n\nexport type ProgressProps = Partial<ExtractPropTypes<typeof propTypes>>;\n"
  },
  {
    "path": "components/vc-resize-observer/index.tsx",
    "content": "// based on rc-resize-observer 1.0.0\nimport type { PropType } from 'vue';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport {\n  defineComponent,\n  getCurrentInstance,\n  onMounted,\n  onUnmounted,\n  onUpdated,\n  reactive,\n  watch,\n} from 'vue';\nimport { findDOMNode } from '../_util/props-util';\n\ninterface ResizeObserverState {\n  height: number;\n  width: number;\n  offsetHeight: number;\n  offsetWidth: number;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ResizeObserver',\n  props: {\n    disabled: Boolean,\n    onResize: Function as PropType<\n      (\n        size: {\n          width: number;\n          height: number;\n          offsetWidth: number;\n          offsetHeight: number;\n        },\n        element: HTMLElement,\n      ) => void\n    >,\n  },\n  emits: ['resize'],\n  setup(props, { slots }) {\n    const state = reactive<ResizeObserverState>({\n      width: 0,\n      height: 0,\n      offsetHeight: 0,\n      offsetWidth: 0,\n    });\n    let currentElement: Element | null = null;\n    let resizeObserver: ResizeObserver | null = null;\n\n    const destroyObserver = () => {\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n        resizeObserver = null;\n      }\n    };\n\n    const onResize: ResizeObserverCallback = (entries: ResizeObserverEntry[]) => {\n      const { onResize } = props;\n\n      const target = entries[0].target as HTMLElement;\n\n      const { width, height } = target.getBoundingClientRect();\n      const { offsetWidth, offsetHeight } = target;\n\n      /**\n       * Resize observer trigger when content size changed.\n       * In most case we just care about element size,\n       * let's use `boundary` instead of `contentRect` here to avoid shaking.\n       */\n      const fixedWidth = Math.floor(width);\n      const fixedHeight = Math.floor(height);\n\n      if (\n        state.width !== fixedWidth ||\n        state.height !== fixedHeight ||\n        state.offsetWidth !== offsetWidth ||\n        state.offsetHeight !== offsetHeight\n      ) {\n        const size = { width: fixedWidth, height: fixedHeight, offsetWidth, offsetHeight };\n\n        Object.assign(state, size);\n        if (onResize) {\n          // defer the callback but not defer to next frame\n          Promise.resolve().then(() => {\n            onResize(\n              {\n                ...size,\n                offsetWidth,\n                offsetHeight,\n              },\n              target,\n            );\n          });\n        }\n      }\n    };\n    const instance = getCurrentInstance();\n    const registerObserver = () => {\n      const { disabled } = props;\n\n      // Unregister if disabled\n      if (disabled) {\n        destroyObserver();\n        return;\n      }\n      // Unregister if element changed\n      const element = findDOMNode(instance) as Element;\n      const elementChanged = element !== currentElement;\n      if (elementChanged) {\n        destroyObserver();\n        currentElement = element;\n      }\n\n      if (!resizeObserver && element) {\n        resizeObserver = new ResizeObserver(onResize);\n        resizeObserver.observe(element);\n      }\n    };\n    onMounted(() => {\n      registerObserver();\n    });\n    onUpdated(() => {\n      registerObserver();\n    });\n    onUnmounted(() => {\n      destroyObserver();\n    });\n    watch(\n      () => props.disabled,\n      () => {\n        registerObserver();\n      },\n      { flush: 'post' },\n    );\n    return () => {\n      return slots.default?.()[0];\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-select/BaseSelect.tsx",
    "content": "import { getSeparatedContent } from './utils/valueUtil';\nimport type { RefTriggerProps } from './SelectTrigger';\nimport SelectTrigger from './SelectTrigger';\nimport type { RefSelectorProps } from './Selector';\nimport Selector from './Selector';\nimport useSelectTriggerControl from './hooks/useSelectTriggerControl';\nimport useDelayReset from './hooks/useDelayReset';\nimport TransBtn from './TransBtn';\nimport useLock from './hooks/useLock';\nimport type { BaseSelectContextProps } from './hooks/useBaseProps';\nimport { useProvideBaseSelectProps } from './hooks/useBaseProps';\nimport type { Key, VueNode } from '../_util/type';\nimport type {\n  FocusEventHandler,\n  KeyboardEventHandler,\n  MouseEventHandler,\n} from '../_util/EventInterface';\nimport type { ScrollConfig, ScrollTo } from '../vc-virtual-list/List';\nimport {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  shallowRef,\n  toRefs,\n  watch,\n  watchEffect,\n  ref,\n} from 'vue';\nimport type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, isValidElement } from '../_util/props-util';\nimport isMobile from '../vc-util/isMobile';\nimport KeyCode from '../_util/KeyCode';\nimport { toReactive } from '../_util/toReactive';\nimport classNames from '../_util/classNames';\nimport createRef from '../_util/createRef';\nimport type { BaseOptionType } from './Select';\nimport useInjectLegacySelectContext from '../vc-tree-select/LegacyContext';\nimport { cloneElement } from '../_util/vnode';\nimport type { AlignType } from '../vc-trigger/interface';\n\nconst DEFAULT_OMIT_PROPS = [\n  'value',\n  'onChange',\n  'removeIcon',\n  'placeholder',\n  'autofocus',\n  'maxTagCount',\n  'maxTagTextLength',\n  'maxTagPlaceholder',\n  'choiceTransitionName',\n  'onInputKeyDown',\n  'onPopupScroll',\n  'tabindex',\n  'OptionList',\n  'notFoundContent',\n] as const;\n\nexport type RenderNode = VueNode | ((props: any) => VueNode);\n\nexport type RenderDOMFunc = (props: any) => HTMLElement;\n\nexport type Mode = 'multiple' | 'tags' | 'combobox';\n\nexport type Placement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n\nexport type RawValueType = string | number;\n\nexport interface RefOptionListProps {\n  onKeydown: KeyboardEventHandler;\n  onKeyup: KeyboardEventHandler;\n  scrollTo?: (index: number | ScrollConfig) => void;\n}\n\nexport type CustomTagProps = {\n  label: any;\n  value: any;\n  disabled: boolean;\n  onClose: (event?: MouseEvent) => void;\n  closable: boolean;\n  option: BaseOptionType;\n};\n\nexport interface DisplayValueType {\n  key?: Key;\n  value?: RawValueType;\n  label?: any;\n  disabled?: boolean;\n  option?: BaseOptionType;\n}\n\nexport type BaseSelectRef = {\n  focus: () => void;\n  blur: () => void;\n  scrollTo: ScrollTo;\n};\n\nconst baseSelectPrivateProps = () => {\n  return {\n    prefixCls: String,\n    id: String,\n    omitDomProps: Array as PropType<string[]>,\n\n    // >>> Value\n    displayValues: Array as PropType<DisplayValueType[]>,\n    onDisplayValuesChange: Function as PropType<\n      (\n        values: DisplayValueType[],\n        info: {\n          type: 'add' | 'remove' | 'clear';\n          values: DisplayValueType[];\n        },\n      ) => void\n    >,\n\n    // >>> Active\n    /** Current dropdown list active item string value */\n    activeValue: String,\n    /** Link search input with target element */\n    activeDescendantId: String,\n    onActiveValueChange: Function as PropType<(value: string | null) => void>,\n\n    // >>> Search\n    searchValue: String,\n    /** Trigger onSearch, return false to prevent trigger open event */\n    onSearch: Function as PropType<\n      (\n        searchValue: string,\n        info: {\n          source:\n            | 'typing' //User typing\n            | 'effect' // Code logic trigger\n            | 'submit' // tag mode only\n            | 'blur'; // Not trigger event\n        },\n      ) => void\n    >,\n    /** Trigger when search text match the `tokenSeparators`. Will provide split content */\n    onSearchSplit: Function as PropType<(words: string[]) => void>,\n    maxLength: Number,\n\n    OptionList: PropTypes.any,\n\n    /** Tell if provided `options` is empty */\n    emptyOptions: Boolean,\n  };\n};\n\nexport type DropdownObject = {\n  menuNode?: VueNode;\n  props?: Record<string, any>;\n};\n\nexport type DropdownRender = (opt?: DropdownObject) => VueNode;\nexport const baseSelectPropsWithoutPrivate = () => {\n  return {\n    showSearch: { type: Boolean, default: undefined },\n    tagRender: { type: Function as PropType<(props: CustomTagProps) => any> },\n    optionLabelRender: { type: Function as PropType<(option: Record<string, any>) => any> },\n    direction: { type: String as PropType<'ltr' | 'rtl'> },\n\n    // MISC\n    tabindex: Number,\n    autofocus: Boolean,\n    notFoundContent: PropTypes.any,\n    placeholder: PropTypes.any,\n    onClear: Function as PropType<() => void>,\n\n    choiceTransitionName: String,\n\n    // >>> Mode\n    mode: String as PropType<Mode>,\n\n    // >>> Status\n    disabled: { type: Boolean, default: undefined },\n    loading: { type: Boolean, default: undefined },\n\n    // >>> Open\n    open: { type: Boolean, default: undefined },\n    defaultOpen: { type: Boolean, default: undefined },\n    onDropdownVisibleChange: { type: Function as PropType<(open: boolean) => void> },\n\n    // >>> Customize Input\n    /** @private Internal usage. Do not use in your production. */\n    getInputElement: { type: Function as PropType<() => any> },\n    /** @private Internal usage. Do not use in your production. */\n    getRawInputElement: { type: Function as PropType<() => any> },\n\n    // >>> Selector\n    maxTagTextLength: Number,\n    maxTagCount: { type: [String, Number] as PropType<number | 'responsive'> },\n    maxTagPlaceholder: PropTypes.any,\n\n    // >>> Search\n    tokenSeparators: { type: Array as PropType<string[]> },\n\n    // >>> Icons\n    allowClear: { type: Boolean, default: undefined },\n    showArrow: { type: Boolean, default: undefined },\n    inputIcon: PropTypes.any,\n    /** Clear all icon */\n    clearIcon: PropTypes.any,\n    /** Selector remove icon */\n    removeIcon: PropTypes.any,\n\n    // >>> Dropdown\n    animation: String,\n    transitionName: String,\n    dropdownStyle: { type: Object as PropType<CSSProperties> },\n    dropdownClassName: String,\n    dropdownMatchSelectWidth: {\n      type: [Boolean, Number] as PropType<boolean | number>,\n      default: undefined,\n    },\n    dropdownRender: { type: Function as PropType<DropdownRender> },\n    dropdownAlign: Object as PropType<AlignType>,\n    placement: {\n      type: String as PropType<Placement>,\n    },\n    getPopupContainer: { type: Function as PropType<RenderDOMFunc> },\n\n    // >>> Focus\n    showAction: { type: Array as PropType<('focus' | 'click')[]> },\n    onBlur: { type: Function as PropType<(e: FocusEvent) => void> },\n    onFocus: { type: Function as PropType<(e: FocusEvent) => void> },\n\n    // >>> Rest Events\n    onKeyup: Function as PropType<(e: KeyboardEvent) => void>,\n    onKeydown: Function as PropType<(e: KeyboardEvent) => void>,\n    onMousedown: Function as PropType<(e: MouseEvent) => void>,\n    onPopupScroll: Function as PropType<(e: UIEvent) => void>,\n    onInputKeyDown: Function as PropType<(e: KeyboardEvent) => void>,\n    onMouseenter: Function as PropType<(e: MouseEvent) => void>,\n    onMouseleave: Function as PropType<(e: MouseEvent) => void>,\n    onClick: Function as PropType<(e: MouseEvent) => void>,\n  };\n};\nconst baseSelectProps = () => {\n  return {\n    ...baseSelectPrivateProps(),\n    ...baseSelectPropsWithoutPrivate(),\n  };\n};\n\nexport type BaseSelectPrivateProps = Partial<\n  ExtractPropTypes<ReturnType<typeof baseSelectPrivateProps>>\n>;\n\nexport type BaseSelectProps = Partial<ExtractPropTypes<ReturnType<typeof baseSelectProps>>>;\n\nexport type BaseSelectPropsWithoutPrivate = Omit<BaseSelectProps, keyof BaseSelectPrivateProps>;\n\nexport function isMultiple(mode: Mode) {\n  return mode === 'tags' || mode === 'multiple';\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'BaseSelect',\n  inheritAttrs: false,\n  props: initDefaultProps(baseSelectProps(), { showAction: [], notFoundContent: 'Not Found' }),\n  setup(props, { attrs, expose, slots }) {\n    const multiple = computed(() => isMultiple(props.mode));\n\n    const mergedShowSearch = computed(() =>\n      props.showSearch !== undefined\n        ? props.showSearch\n        : multiple.value || props.mode === 'combobox',\n    );\n    const mobile = shallowRef(false);\n    onMounted(() => {\n      mobile.value = isMobile();\n    });\n    const legacyTreeSelectContext = useInjectLegacySelectContext();\n    // ============================== Refs ==============================\n    const containerRef = shallowRef<HTMLDivElement>(null);\n    const selectorDomRef = createRef();\n    const triggerRef = shallowRef<RefTriggerProps>(null);\n    const selectorRef = shallowRef<RefSelectorProps>(null);\n    const listRef = shallowRef<RefOptionListProps>(null);\n    const blurRef = ref<boolean>(false);\n\n    /** Used for component focused management */\n    const [mockFocused, setMockFocused, cancelSetMockFocused] = useDelayReset();\n\n    const focus = () => {\n      selectorRef.value?.focus();\n    };\n    const blur = () => {\n      selectorRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n      scrollTo: arg => listRef.value?.scrollTo(arg),\n    });\n\n    const mergedSearchValue = computed(() => {\n      if (props.mode !== 'combobox') {\n        return props.searchValue;\n      }\n\n      const val = props.displayValues[0]?.value;\n\n      return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n    });\n\n    // ============================== Open ==============================\n    const initOpen = props.open !== undefined ? props.open : props.defaultOpen;\n    const innerOpen = shallowRef(initOpen);\n    const mergedOpen = shallowRef(initOpen);\n    const setInnerOpen = (val: boolean) => {\n      innerOpen.value = props.open !== undefined ? props.open : val;\n      mergedOpen.value = innerOpen.value;\n    };\n    watch(\n      () => props.open,\n      () => {\n        setInnerOpen(props.open);\n      },\n    );\n\n    // Not trigger `open` in `combobox` when `notFoundContent` is empty\n    const emptyListContent = computed(() => !props.notFoundContent && props.emptyOptions);\n\n    watchEffect(() => {\n      mergedOpen.value = innerOpen.value;\n      if (\n        props.disabled ||\n        (emptyListContent.value && mergedOpen.value && props.mode === 'combobox')\n      ) {\n        mergedOpen.value = false;\n      }\n    });\n\n    const triggerOpen = computed(() => (emptyListContent.value ? false : mergedOpen.value));\n\n    const onToggleOpen = (newOpen?: boolean) => {\n      const nextOpen = newOpen !== undefined ? newOpen : !mergedOpen.value;\n\n      if (mergedOpen.value !== nextOpen && !props.disabled) {\n        setInnerOpen(nextOpen);\n        props.onDropdownVisibleChange && props.onDropdownVisibleChange(nextOpen);\n\n        if (!nextOpen && popupFocused.value) {\n          popupFocused.value = false;\n          setMockFocused(false, () => {\n            focusRef.value = false;\n            blurRef.value = false;\n          });\n        }\n      }\n    };\n\n    const tokenWithEnter = computed(() =>\n      (props.tokenSeparators || []).some(tokenSeparator => ['\\n', '\\r\\n'].includes(tokenSeparator)),\n    );\n\n    const onInternalSearch = (searchText: string, fromTyping: boolean, isCompositing: boolean) => {\n      let ret = true;\n      let newSearchText = searchText;\n      props.onActiveValueChange?.(null);\n\n      // Check if match the `tokenSeparators`\n      const patchLabels: string[] = isCompositing\n        ? null\n        : getSeparatedContent(searchText, props.tokenSeparators);\n\n      // Ignore combobox since it's not split-able\n      if (props.mode !== 'combobox' && patchLabels) {\n        newSearchText = '';\n\n        props.onSearchSplit?.(patchLabels);\n\n        // Should close when paste finish\n        onToggleOpen(false);\n\n        // Tell Selector that break next actions\n        ret = false;\n      }\n\n      if (props.onSearch && mergedSearchValue.value !== newSearchText) {\n        props.onSearch(newSearchText, {\n          source: fromTyping ? 'typing' : 'effect',\n        });\n      }\n\n      return ret;\n    };\n\n    // Only triggered when menu is closed & mode is tags\n    // If menu is open, OptionList will take charge\n    // If mode isn't tags, press enter is not meaningful when you can't see any option\n    const onInternalSearchSubmit = (searchText: string) => {\n      // prevent empty tags from appearing when you click the Enter button\n      if (!searchText || !searchText.trim()) {\n        return;\n      }\n      props.onSearch?.(searchText, { source: 'submit' });\n    };\n\n    // Close will clean up single mode search text\n    watch(\n      mergedOpen,\n      () => {\n        if (!mergedOpen.value && !multiple.value && props.mode !== 'combobox') {\n          onInternalSearch('', false, false);\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // ============================ Disabled ============================\n    // Close dropdown & remove focus state when disabled change\n    watch(\n      () => props.disabled,\n      () => {\n        if (innerOpen.value && !!props.disabled) {\n          setInnerOpen(false);\n        }\n        if (props.disabled && !blurRef.value) {\n          setMockFocused(false);\n        }\n      },\n      { immediate: true },\n    );\n\n    // ============================ Keyboard ============================\n    /**\n     * We record input value here to check if can press to clean up by backspace\n     * - null: Key is not down, this is reset by key up\n     * - true: Search text is empty when first time backspace down\n     * - false: Search text is not empty when first time backspace down\n     */\n    const [getClearLock, setClearLock] = useLock();\n\n    // KeyDown\n    const onInternalKeyDown: KeyboardEventHandler = (event, ...rest) => {\n      const clearLock = getClearLock();\n      const { which } = event;\n\n      if (which === KeyCode.ENTER) {\n        // Do not submit form when type in the input\n        if (props.mode !== 'combobox') {\n          event.preventDefault();\n        }\n\n        // We only manage open state here, close logic should handle by list component\n        if (!mergedOpen.value) {\n          onToggleOpen(true);\n        }\n      }\n\n      setClearLock(!!mergedSearchValue.value);\n\n      // Remove value by `backspace`\n      if (\n        which === KeyCode.BACKSPACE &&\n        !clearLock &&\n        multiple.value &&\n        !mergedSearchValue.value &&\n        props.displayValues.length\n      ) {\n        const cloneDisplayValues = [...props.displayValues];\n        let removedDisplayValue = null;\n\n        for (let i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n          const current = cloneDisplayValues[i];\n\n          if (!current.disabled) {\n            cloneDisplayValues.splice(i, 1);\n            removedDisplayValue = current;\n            break;\n          }\n        }\n\n        if (removedDisplayValue) {\n          props.onDisplayValuesChange(cloneDisplayValues, {\n            type: 'remove',\n            values: [removedDisplayValue],\n          });\n        }\n      }\n\n      if (mergedOpen.value && listRef.value) {\n        listRef.value.onKeydown(event, ...rest);\n      }\n\n      props.onKeydown?.(event, ...rest);\n    };\n\n    // KeyUp\n    const onInternalKeyUp: KeyboardEventHandler = (event: KeyboardEvent, ...rest) => {\n      if (mergedOpen.value && listRef.value) {\n        listRef.value.onKeyup(event, ...rest);\n      }\n\n      if (props.onKeyup) {\n        props.onKeyup(event, ...rest);\n      }\n    };\n\n    // ============================ Selector ============================\n    const onSelectorRemove = (val: DisplayValueType) => {\n      const newValues = props.displayValues.filter(i => i !== val);\n\n      props.onDisplayValuesChange(newValues, {\n        type: 'remove',\n        values: [val],\n      });\n    };\n\n    // ========================== Focus / Blur ==========================\n    /** Record real focus status */\n    const focusRef = shallowRef(false);\n    const onContainerFocus: FocusEventHandler = (...args) => {\n      setMockFocused(true);\n\n      if (!props.disabled) {\n        if (props.onFocus && !focusRef.value) {\n          props.onFocus(...args);\n        }\n\n        // `showAction` should handle `focus` if set\n        if (props.showAction && props.showAction.includes('focus')) {\n          onToggleOpen(true);\n        }\n      }\n\n      focusRef.value = true;\n    };\n    const popupFocused = ref(false);\n    const onContainerBlur: FocusEventHandler = (...args) => {\n      if (popupFocused.value) {\n        return;\n      }\n      blurRef.value = true;\n      setMockFocused(false, () => {\n        focusRef.value = false;\n        blurRef.value = false;\n        onToggleOpen(false);\n      });\n\n      if (props.disabled) {\n        return;\n      }\n      const searchVal = mergedSearchValue.value;\n      if (searchVal) {\n        // `tags` mode should move `searchValue` into values\n        if (props.mode === 'tags') {\n          props.onSearch(searchVal, { source: 'submit' });\n        } else if (props.mode === 'multiple') {\n          // `multiple` mode only clean the search value but not trigger event\n          props.onSearch('', {\n            source: 'blur',\n          });\n        }\n      }\n\n      if (props.onBlur) {\n        props.onBlur(...args);\n      }\n    };\n    const onPopupFocusin = () => {\n      popupFocused.value = true;\n    };\n    const onPopupFocusout = () => {\n      popupFocused.value = false;\n    };\n    provide('VCSelectContainerEvent', {\n      focus: onContainerFocus,\n      blur: onContainerBlur,\n    });\n\n    // Give focus back of Select\n    const activeTimeoutIds: any[] = [];\n\n    onMounted(() => {\n      activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    });\n    onBeforeUnmount(() => {\n      activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    });\n\n    const onInternalMouseDown: MouseEventHandler = (event, ...restArgs) => {\n      const { target } = event;\n      const popupElement: HTMLDivElement = triggerRef.value?.getPopupElement();\n\n      // We should give focus back to selector if clicked item is not focusable\n      if (popupElement && popupElement.contains(target as HTMLElement)) {\n        const timeoutId: any = setTimeout(() => {\n          const index = activeTimeoutIds.indexOf(timeoutId);\n          if (index !== -1) {\n            activeTimeoutIds.splice(index, 1);\n          }\n\n          cancelSetMockFocused();\n\n          if (!mobile.value && !popupElement.contains(document.activeElement)) {\n            selectorRef.value?.focus();\n          }\n        });\n\n        activeTimeoutIds.push(timeoutId);\n      }\n\n      props.onMousedown?.(event, ...restArgs);\n    };\n\n    // ============================= Dropdown ==============================\n    const containerWidth = shallowRef<number>(null);\n    // const instance = getCurrentInstance();\n    const onPopupMouseEnter = () => {\n      // We need force update here since popup dom is render async\n      // instance.update();\n    };\n    onMounted(() => {\n      watch(\n        triggerOpen,\n        () => {\n          if (triggerOpen.value) {\n            const newWidth = Math.ceil(containerRef.value?.offsetWidth);\n            if (containerWidth.value !== newWidth && !Number.isNaN(newWidth)) {\n              containerWidth.value = newWidth;\n            }\n          }\n        },\n        { immediate: true, flush: 'post' },\n      );\n    });\n\n    // Close when click on non-select element\n    useSelectTriggerControl([containerRef, triggerRef], triggerOpen, onToggleOpen);\n    useProvideBaseSelectProps(\n      toReactive({\n        ...toRefs(props),\n        open: mergedOpen,\n        triggerOpen,\n        showSearch: mergedShowSearch,\n        multiple,\n        toggleOpen: onToggleOpen,\n      } as unknown as BaseSelectContextProps),\n    );\n    return () => {\n      const {\n        prefixCls,\n        id,\n\n        open,\n        defaultOpen,\n\n        mode,\n\n        // Search related\n        showSearch,\n        searchValue,\n        onSearch,\n\n        // Icons\n        allowClear,\n        clearIcon,\n        showArrow,\n        inputIcon,\n\n        // Others\n        disabled,\n        loading,\n        getInputElement,\n        getPopupContainer,\n        placement,\n\n        // Dropdown\n        animation,\n        transitionName,\n        dropdownStyle,\n        dropdownClassName,\n        dropdownMatchSelectWidth,\n        dropdownRender,\n        dropdownAlign,\n        showAction,\n        direction,\n\n        // Tags\n        tokenSeparators,\n        tagRender,\n        optionLabelRender,\n\n        // Events\n        onPopupScroll,\n        onDropdownVisibleChange,\n        onFocus,\n        onBlur,\n        onKeyup,\n        onKeydown,\n        onMousedown,\n\n        onClear,\n        omitDomProps,\n        getRawInputElement,\n        displayValues,\n        onDisplayValuesChange,\n        emptyOptions,\n        activeDescendantId,\n        activeValue,\n        OptionList,\n\n        ...restProps\n      } = { ...props, ...attrs } as BaseSelectProps;\n      // ============================= Input ==============================\n      // Only works in `combobox`\n      const customizeInputElement: any =\n        (mode === 'combobox' && getInputElement && getInputElement()) || null;\n\n      // Used for customize replacement for `vc-cascader`\n      const customizeRawInputElement: any =\n        typeof getRawInputElement === 'function' && getRawInputElement();\n      const domProps = {\n        ...restProps,\n      } as Omit<keyof typeof restProps, (typeof DEFAULT_OMIT_PROPS)[number]>;\n\n      // Used for raw custom input trigger\n      let onTriggerVisibleChange: null | ((newOpen: boolean) => void);\n      if (customizeRawInputElement) {\n        onTriggerVisibleChange = (newOpen: boolean) => {\n          onToggleOpen(newOpen);\n        };\n      }\n\n      DEFAULT_OMIT_PROPS.forEach(propName => {\n        delete domProps[propName];\n      });\n\n      omitDomProps?.forEach(propName => {\n        delete domProps[propName];\n      });\n\n      // ============================= Arrow ==============================\n      const mergedShowArrow =\n        showArrow !== undefined ? showArrow : loading || (!multiple.value && mode !== 'combobox');\n      let arrowNode: VueNode;\n\n      if (mergedShowArrow) {\n        arrowNode = (\n          <TransBtn\n            class={classNames(`${prefixCls}-arrow`, {\n              [`${prefixCls}-arrow-loading`]: loading,\n            })}\n            customizeIcon={inputIcon}\n            customizeIconProps={{\n              loading,\n              searchValue: mergedSearchValue.value,\n              open: mergedOpen.value,\n              focused: mockFocused.value,\n              showSearch: mergedShowSearch.value,\n            }}\n          />\n        );\n      }\n\n      // ============================= Clear ==============================\n      let clearNode: VueNode;\n      const onClearMouseDown: MouseEventHandler = () => {\n        onClear?.();\n\n        onDisplayValuesChange([], {\n          type: 'clear',\n          values: displayValues,\n        });\n        onInternalSearch('', false, false);\n      };\n\n      if (!disabled && allowClear && (displayValues.length || mergedSearchValue.value)) {\n        clearNode = (\n          <TransBtn\n            class={`${prefixCls}-clear`}\n            onMousedown={onClearMouseDown}\n            customizeIcon={clearIcon}\n          >\n            ×\n          </TransBtn>\n        );\n      }\n\n      // =========================== OptionList ===========================\n      const optionList = (\n        <OptionList\n          ref={listRef}\n          v-slots={{ ...legacyTreeSelectContext.customSlots, option: slots.option }}\n        />\n      );\n\n      // ============================= Select =============================\n      const mergedClassName = classNames(prefixCls, attrs.class, {\n        [`${prefixCls}-focused`]: mockFocused.value,\n        [`${prefixCls}-multiple`]: multiple.value,\n        [`${prefixCls}-single`]: !multiple.value,\n        [`${prefixCls}-allow-clear`]: allowClear,\n        [`${prefixCls}-show-arrow`]: mergedShowArrow,\n        [`${prefixCls}-disabled`]: disabled,\n        [`${prefixCls}-loading`]: loading,\n        [`${prefixCls}-open`]: mergedOpen.value,\n        [`${prefixCls}-customize-input`]: customizeInputElement,\n        [`${prefixCls}-show-search`]: mergedShowSearch.value,\n      });\n\n      // >>> Selector\n      const selectorNode = (\n        <SelectTrigger\n          ref={triggerRef}\n          disabled={disabled}\n          prefixCls={prefixCls}\n          visible={triggerOpen.value}\n          popupElement={optionList}\n          containerWidth={containerWidth.value}\n          animation={animation}\n          transitionName={transitionName}\n          dropdownStyle={dropdownStyle}\n          dropdownClassName={dropdownClassName}\n          direction={direction}\n          dropdownMatchSelectWidth={dropdownMatchSelectWidth}\n          dropdownRender={dropdownRender}\n          dropdownAlign={dropdownAlign}\n          placement={placement}\n          getPopupContainer={getPopupContainer}\n          empty={emptyOptions}\n          getTriggerDOMNode={() => selectorDomRef.current}\n          onPopupVisibleChange={onTriggerVisibleChange}\n          onPopupMouseEnter={onPopupMouseEnter}\n          onPopupFocusin={onPopupFocusin}\n          onPopupFocusout={onPopupFocusout}\n          v-slots={{\n            default: () => {\n              return customizeRawInputElement ? (\n                isValidElement(customizeRawInputElement) &&\n                  cloneElement(\n                    customizeRawInputElement,\n                    {\n                      ref: selectorDomRef,\n                      tabindex: 0,\n                    },\n                    false,\n                    true,\n                  )\n              ) : (\n                <Selector\n                  {...props}\n                  domRef={selectorDomRef}\n                  prefixCls={prefixCls}\n                  inputElement={customizeInputElement}\n                  ref={selectorRef}\n                  id={id}\n                  showSearch={mergedShowSearch.value}\n                  mode={mode}\n                  activeDescendantId={activeDescendantId}\n                  tagRender={tagRender}\n                  optionLabelRender={optionLabelRender}\n                  values={displayValues}\n                  open={mergedOpen.value}\n                  onToggleOpen={onToggleOpen}\n                  activeValue={activeValue}\n                  searchValue={mergedSearchValue.value}\n                  onSearch={onInternalSearch}\n                  onSearchSubmit={onInternalSearchSubmit}\n                  onRemove={onSelectorRemove}\n                  tokenWithEnter={tokenWithEnter.value}\n                />\n              );\n            },\n          }}\n        ></SelectTrigger>\n      );\n      // >>> Render\n      let renderNode: VueNode;\n\n      // Render raw\n      if (customizeRawInputElement) {\n        renderNode = (\n          <div onKeydown={onInternalKeyDown} onKeyup={onInternalKeyUp}>\n            {selectorNode}\n          </div>\n        );\n      } else {\n        renderNode = (\n          <div\n            {...domProps}\n            class={mergedClassName}\n            ref={containerRef}\n            onMousedown={onInternalMouseDown}\n            onKeydown={onInternalKeyDown}\n            onKeyup={onInternalKeyUp}\n            // onFocus={onContainerFocus}\n            // onBlur={onContainerBlur}\n          >\n            {mockFocused.value && !mergedOpen.value && (\n              <span\n                style={{\n                  width: 0,\n                  height: 0,\n                  position: 'absolute',\n                  overflow: 'hidden',\n                  opacity: 0,\n                }}\n                aria-live=\"polite\"\n              >\n                {/* Merge into one string to make screen reader work as expect */}\n                {`${displayValues\n                  .map(({ label, value }) =>\n                    ['number', 'string'].includes(typeof label) ? label : value,\n                  )\n                  .join(', ')}`}\n              </span>\n            )}\n            {selectorNode}\n\n            {arrowNode}\n            {clearNode}\n          </div>\n        );\n      }\n      return renderNode;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-select/OptGroup.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\n\nimport type { DefaultOptionType } from './Select';\n\nexport type OptGroupProps = Omit<DefaultOptionType, 'options'>;\n\nexport interface OptionGroupFC extends FunctionalComponent<OptGroupProps> {\n  /** Legacy for check if is a Option Group */\n  isSelectOptGroup: boolean;\n}\n\nconst OptGroup: OptionGroupFC = () => null;\nOptGroup.isSelectOptGroup = true;\nOptGroup.displayName = 'ASelectOptGroup';\nexport default OptGroup;\n"
  },
  {
    "path": "components/vc-select/Option.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\n\nimport type { DefaultOptionType } from './Select';\n\nexport interface OptionProps extends Omit<DefaultOptionType, 'label'> {\n  /** Save for customize data */\n  [prop: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n\nexport interface OptionFC extends FunctionalComponent<OptionProps> {\n  /** Legacy for check if is a Option Group */\n  isSelectOption: boolean;\n}\n\nconst Option: OptionFC = () => null;\nOption.isSelectOption = true;\nOption.displayName = 'ASelectOption';\nexport default Option;\n"
  },
  {
    "path": "components/vc-select/OptionList.tsx",
    "content": "import TransBtn from './TransBtn';\n\nimport KeyCode from '../_util/KeyCode';\nimport classNames from '../_util/classNames';\nimport pickAttrs from '../_util/pickAttrs';\nimport { isValidElement } from '../_util/props-util';\nimport createRef from '../_util/createRef';\nimport { computed, defineComponent, nextTick, reactive, toRaw, watch } from 'vue';\nimport List from '../vc-virtual-list';\nimport useMemo from '../_util/hooks/useMemo';\nimport { isPlatformMac } from './utils/platformUtil';\n\nimport type { EventHandler } from '../_util/EventInterface';\nimport omit from '../_util/omit';\nimport useBaseProps from './hooks/useBaseProps';\nimport type { RawValueType } from './Select';\nimport useSelectProps from './SelectContext';\nimport type { ScrollConfig } from '../vc-virtual-list/List';\n\nexport interface RefOptionListProps {\n  onKeydown: (e?: KeyboardEvent) => void;\n  onKeyup: (e?: KeyboardEvent) => void;\n  scrollTo?: (index: number | ScrollConfig) => void;\n}\nfunction isTitleType(content: any) {\n  return typeof content === 'string' || typeof content === 'number';\n}\n\n// export interface OptionListProps<OptionsType extends object[]> {\nexport type OptionListProps = Record<string, never>;\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nconst OptionList = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OptionList',\n  inheritAttrs: false,\n  setup(_, { expose, slots }) {\n    const baseProps = useBaseProps();\n    const props = useSelectProps();\n    const itemPrefixCls = computed(() => `${baseProps.prefixCls}-item`);\n\n    const memoFlattenOptions = useMemo(\n      () => props.flattenOptions,\n      [() => baseProps.open, () => props.flattenOptions],\n      next => next[0],\n    );\n\n    // =========================== List ===========================\n    const listRef = createRef();\n\n    const onListMouseDown: EventHandler = event => {\n      event.preventDefault();\n    };\n\n    const scrollIntoView = (args: number | ScrollConfig) => {\n      if (listRef.current) {\n        listRef.current.scrollTo(typeof args === 'number' ? { index: args } : args);\n      }\n    };\n\n    // ========================== Active ==========================\n    const getEnabledActiveIndex = (index: number, offset = 1) => {\n      const len = memoFlattenOptions.value.length;\n\n      for (let i = 0; i < len; i += 1) {\n        const current = (index + i * offset + len) % len;\n\n        const { group, data } = memoFlattenOptions.value[current];\n        if (!group && !data.disabled) {\n          return current;\n        }\n      }\n\n      return -1;\n    };\n    const state = reactive({\n      activeIndex: getEnabledActiveIndex(0),\n    });\n\n    const setActive = (index: number, fromKeyboard = false) => {\n      state.activeIndex = index;\n      const info = { source: fromKeyboard ? ('keyboard' as const) : ('mouse' as const) };\n\n      // Trigger active event\n      const flattenItem = memoFlattenOptions.value[index];\n      if (!flattenItem) {\n        props.onActiveValue(null, -1, info);\n        return;\n      }\n\n      props.onActiveValue(flattenItem.value, index, info);\n    };\n\n    // Auto active first item when list length or searchValue changed\n\n    watch(\n      [() => memoFlattenOptions.value.length, () => baseProps.searchValue],\n      () => {\n        setActive(props.defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n      },\n      { immediate: true },\n    );\n\n    // https://github.com/ant-design/ant-design/issues/34975\n    const isSelected = (value: RawValueType) =>\n      props.rawValues.has(value) && baseProps.mode !== 'combobox';\n\n    // Auto scroll to item position in single mode\n    watch(\n      [() => baseProps.open, () => baseProps.searchValue],\n      () => {\n        if (!baseProps.multiple && baseProps.open && props.rawValues.size === 1) {\n          const value = Array.from(props.rawValues)[0];\n          const index = toRaw(memoFlattenOptions.value).findIndex(\n            ({ data }) => data[props.fieldNames.value] === value,\n          );\n          if (index !== -1) {\n            setActive(index);\n            nextTick(() => {\n              scrollIntoView(index);\n            });\n          }\n        }\n        // Force trigger scrollbar visible when open\n        if (baseProps.open) {\n          nextTick(() => {\n            listRef.current?.scrollTo(undefined);\n          });\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // ========================== Values ==========================\n    const onSelectValue = (value?: RawValueType) => {\n      if (value !== undefined) {\n        props.onSelect(value, { selected: !props.rawValues.has(value) });\n      }\n\n      // Single mode should always close by select\n      if (!baseProps.multiple) {\n        baseProps.toggleOpen(false);\n      }\n    };\n    const getLabel = (item: Record<string, any>) =>\n      typeof item.label === 'function' ? item.label() : item.label;\n    function renderItem(index: number) {\n      const item = memoFlattenOptions.value[index];\n      if (!item) return null;\n\n      const itemData = item.data || {};\n      const { value } = itemData;\n      const { group } = item;\n      const attrs = pickAttrs(itemData, true);\n      const mergedLabel = getLabel(item);\n      return item ? (\n        <div\n          aria-label={typeof mergedLabel === 'string' && !group ? mergedLabel : null}\n          {...attrs}\n          key={index}\n          role={group ? 'presentation' : 'option'}\n          id={`${baseProps.id}_list_${index}`}\n          aria-selected={isSelected(value)}\n        >\n          {value}\n        </div>\n      ) : null;\n    }\n    const onKeydown = (event: KeyboardEvent) => {\n      const { which, ctrlKey } = event;\n      switch (which) {\n        // >>> Arrow keys & ctrl + n/p on Mac\n        case KeyCode.N:\n        case KeyCode.P:\n        case KeyCode.UP:\n        case KeyCode.DOWN: {\n          let offset = 0;\n          if (which === KeyCode.UP) {\n            offset = -1;\n          } else if (which === KeyCode.DOWN) {\n            offset = 1;\n          } else if (isPlatformMac() && ctrlKey) {\n            if (which === KeyCode.N) {\n              offset = 1;\n            } else if (which === KeyCode.P) {\n              offset = -1;\n            }\n          }\n\n          if (offset !== 0) {\n            const nextActiveIndex = getEnabledActiveIndex(state.activeIndex + offset, offset);\n            scrollIntoView(nextActiveIndex);\n            setActive(nextActiveIndex, true);\n          }\n\n          break;\n        }\n\n        // >>> Select\n        case KeyCode.ENTER: {\n          // value\n          const item = memoFlattenOptions.value[state.activeIndex];\n          if (item && !item.data.disabled) {\n            onSelectValue(item.value);\n          } else {\n            onSelectValue(undefined);\n          }\n\n          if (baseProps.open) {\n            event.preventDefault();\n          }\n\n          break;\n        }\n\n        // >>> Close\n        case KeyCode.ESC: {\n          baseProps.toggleOpen(false);\n          if (baseProps.open) {\n            event.stopPropagation();\n          }\n        }\n      }\n    };\n    const onKeyup = () => {};\n\n    const scrollTo = (index: number) => {\n      scrollIntoView(index);\n    };\n    expose({\n      onKeydown,\n      onKeyup,\n      scrollTo,\n    });\n    return () => {\n      // const {\n      //   renderItem,\n      //   listRef,\n      //   onListMouseDown,\n      //   itemPrefixCls,\n      //   setActive,\n      //   onSelectValue,\n      //   memoFlattenOptions,\n      //   $slots,\n      // } = this as any;\n      const { id, notFoundContent, onPopupScroll } = baseProps;\n      const { menuItemSelectedIcon, fieldNames, virtual, listHeight, listItemHeight } = props;\n\n      const renderOption = slots.option;\n      const { activeIndex } = state;\n      const omitFieldNameList = Object.keys(fieldNames).map(key => fieldNames[key]);\n      // ========================== Render ==========================\n      if (memoFlattenOptions.value.length === 0) {\n        return (\n          <div\n            role=\"listbox\"\n            id={`${id}_list`}\n            class={`${itemPrefixCls.value}-empty`}\n            onMousedown={onListMouseDown}\n          >\n            {notFoundContent}\n          </div>\n        );\n      }\n      return (\n        <>\n          <div role=\"listbox\" id={`${id}_list`} style={{ height: 0, width: 0, overflow: 'hidden' }}>\n            {renderItem(activeIndex - 1)}\n            {renderItem(activeIndex)}\n            {renderItem(activeIndex + 1)}\n          </div>\n          <List\n            itemKey=\"key\"\n            ref={listRef}\n            data={memoFlattenOptions.value}\n            height={listHeight}\n            itemHeight={listItemHeight}\n            fullHeight={false}\n            onMousedown={onListMouseDown}\n            onScroll={onPopupScroll}\n            virtual={virtual}\n            v-slots={{\n              default: (item, itemIndex) => {\n                const { group, groupOption, data, value } = item;\n                const { key } = data;\n                const label = typeof item.label === 'function' ? item.label() : item.label;\n                // Group\n                if (group) {\n                  const groupTitle = data.title ?? (isTitleType(label) && label);\n                  return (\n                    <div\n                      class={classNames(itemPrefixCls.value, `${itemPrefixCls.value}-group`)}\n                      title={groupTitle}\n                    >\n                      {renderOption ? renderOption(data) : label !== undefined ? label : key}\n                    </div>\n                  );\n                }\n\n                const {\n                  disabled,\n                  title,\n                  children,\n                  style,\n                  class: cls,\n                  className,\n                  ...otherProps\n                } = data;\n                const passedProps = omit(otherProps, omitFieldNameList);\n                // Option\n                const selected = isSelected(value);\n\n                const optionPrefixCls = `${itemPrefixCls.value}-option`;\n                const optionClassName = classNames(\n                  itemPrefixCls.value,\n                  optionPrefixCls,\n                  cls,\n                  className,\n                  {\n                    [`${optionPrefixCls}-grouped`]: groupOption,\n                    [`${optionPrefixCls}-active`]: activeIndex === itemIndex && !disabled,\n                    [`${optionPrefixCls}-disabled`]: disabled,\n                    [`${optionPrefixCls}-selected`]: selected,\n                  },\n                );\n\n                const mergedLabel = getLabel(item);\n\n                const iconVisible =\n                  !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n                // https://github.com/ant-design/ant-design/issues/34145\n                const content =\n                  typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n                // https://github.com/ant-design/ant-design/issues/26717\n                let optionTitle = isTitleType(content) ? content.toString() : undefined;\n                if (title !== undefined) {\n                  optionTitle = title;\n                }\n\n                return (\n                  <div\n                    {...passedProps}\n                    aria-selected={selected}\n                    class={optionClassName}\n                    title={optionTitle}\n                    onMousemove={e => {\n                      if (otherProps.onMousemove) {\n                        otherProps.onMousemove(e);\n                      }\n                      if (activeIndex === itemIndex || disabled) {\n                        return;\n                      }\n                      setActive(itemIndex);\n                    }}\n                    onClick={e => {\n                      if (!disabled) {\n                        onSelectValue(value);\n                      }\n                      if (otherProps.onClick) {\n                        otherProps.onClick(e);\n                      }\n                    }}\n                    style={style}\n                  >\n                    <div class={`${optionPrefixCls}-content`}>\n                      {renderOption ? renderOption(data) : content}\n                    </div>\n                    {isValidElement(menuItemSelectedIcon) || selected}\n                    {iconVisible && (\n                      <TransBtn\n                        class={`${itemPrefixCls.value}-option-state`}\n                        customizeIcon={menuItemSelectedIcon}\n                        customizeIconProps={{ isSelected: selected }}\n                      >\n                        {selected ? '✓' : null}\n                      </TransBtn>\n                    )}\n                  </div>\n                );\n              },\n            }}\n          ></List>\n        </>\n      );\n    };\n  },\n});\n\nexport default OptionList;\n"
  },
  {
    "path": "components/vc-select/Select.tsx",
    "content": "/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabindex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport BaseSelect, { baseSelectPropsWithoutPrivate, isMultiple } from './BaseSelect';\nimport type { DisplayValueType, BaseSelectRef, BaseSelectProps } from './BaseSelect';\nimport OptionList from './OptionList';\nimport useOptions from './hooks/useOptions';\nimport type { SelectContextProps } from './SelectContext';\nimport { useProvideSelectProps } from './SelectContext';\nimport useId from './hooks/useId';\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from './utils/valueUtil';\nimport warningProps from './utils/warningPropsUtil';\nimport { toArray } from './utils/commonUtil';\nimport useFilterOptions from './hooks/useFilterOptions';\nimport useCache from './hooks/useCache';\nimport type { Key, VueNode } from '../_util/type';\nimport { computed, defineComponent, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport useState from '../_util/hooks/useState';\nimport { toReactive } from '../_util/toReactive';\nimport omit from '../_util/omit';\n\nconst OMIT_DOM_PROPS = ['inputValue'];\n\ntype ArrayElementType<T> = T extends (infer E)[] ? E : T;\nexport type OnActiveValue = (\n  active: RawValueType,\n  index: number,\n  info?: { source?: 'keyboard' | 'mouse' },\n) => void;\n\nexport type OnInternalSelect = (value: RawValueType, info: { selected: boolean }) => void;\n\nexport type RawValueType = string | number;\nexport interface LabelInValueType {\n  label: any;\n  originLabel?: any;\n  value: RawValueType;\n  /** @deprecated `key` is useless since it should always same as `value` */\n  key?: Key;\n}\n\nexport type DraftValueType =\n  | RawValueType\n  | LabelInValueType\n  | DisplayValueType\n  | (RawValueType | LabelInValueType | DisplayValueType)[];\n\nexport type FilterFunc<OptionType> = (inputValue: string, option?: OptionType) => boolean;\n\nexport interface FieldNames {\n  value?: string;\n  label?: string;\n  options?: string;\n}\n\nexport interface BaseOptionType {\n  disabled?: boolean;\n  [name: string]: any;\n}\n\nexport interface DefaultOptionType extends BaseOptionType {\n  label?: any;\n  value?: string | number | null;\n  children?: Omit<DefaultOptionType, 'children'>[];\n}\n\nexport type SelectHandler<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> =\n  | ((value: RawValueType | LabelInValueType, option: OptionType) => void)\n  | ((value: ValueType, option: OptionType) => void);\n\nexport function selectProps<\n  ValueType = any,\n  OptionType extends BaseOptionType = DefaultOptionType,\n>() {\n  return {\n    ...baseSelectPropsWithoutPrivate(),\n    prefixCls: String,\n    id: String,\n\n    backfill: { type: Boolean, default: undefined },\n\n    // >>> Field Names\n    fieldNames: Object as PropType<FieldNames>,\n\n    // >>> Search\n    /** @deprecated Use `searchValue` instead */\n    inputValue: String,\n    searchValue: String,\n    onSearch: Function as PropType<(value: string) => void>,\n    autoClearSearchValue: { type: Boolean, default: undefined },\n\n    // >>> Select\n    onSelect: Function as PropType<SelectHandler<ArrayElementType<ValueType>, OptionType>>,\n    onDeselect: Function as PropType<SelectHandler<ArrayElementType<ValueType>, OptionType>>,\n\n    // >>> Options\n    /**\n     * In Select, `false` means do nothing.\n     * In TreeSelect, `false` will highlight match item.\n     * It's by design.\n     */\n    filterOption: {\n      type: [Boolean, Function] as PropType<boolean | FilterFunc<OptionType>>,\n      default: undefined,\n    },\n    filterSort: Function as PropType<(optionA: OptionType, optionB: OptionType) => number>,\n    optionFilterProp: String,\n    optionLabelProp: String,\n    options: Array as PropType<OptionType[]>,\n    defaultActiveFirstOption: { type: Boolean, default: undefined },\n    virtual: { type: Boolean, default: undefined },\n    listHeight: Number,\n    listItemHeight: Number,\n\n    // >>> Icon\n    menuItemSelectedIcon: PropTypes.any,\n\n    mode: String as PropType<'combobox' | 'multiple' | 'tags'>,\n    labelInValue: { type: Boolean, default: undefined },\n    value: PropTypes.any,\n    defaultValue: PropTypes.any,\n    onChange: Function as PropType<(value: ValueType, option: OptionType | OptionType[]) => void>,\n    children: Array as PropType<VueNode[]>,\n  };\n}\n\nexport type SelectProps = Partial<ExtractPropTypes<ReturnType<typeof selectProps>>>;\n\nfunction isRawValue(value: DraftValueType): value is RawValueType {\n  return !value || typeof value !== 'object';\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VcSelect',\n  inheritAttrs: false,\n  props: initDefaultProps(selectProps(), {\n    prefixCls: 'vc-select',\n    autoClearSearchValue: true,\n    listHeight: 200,\n    listItemHeight: 20,\n    dropdownMatchSelectWidth: true,\n  }),\n  setup(props, { expose, attrs, slots }) {\n    const mergedId = useId(toRef(props, 'id'));\n    const multiple = computed(() => isMultiple(props.mode));\n    const childrenAsData = computed(() => !!(!props.options && props.children));\n\n    const mergedFilterOption = computed(() => {\n      if (props.filterOption === undefined && props.mode === 'combobox') {\n        return false;\n      }\n      return props.filterOption;\n    });\n\n    // ========================= FieldNames =========================\n    const mergedFieldNames = computed(() => fillFieldNames(props.fieldNames, childrenAsData.value));\n\n    // =========================== Search ===========================\n    const [mergedSearchValue, setSearchValue] = useMergedState('', {\n      value: computed(() =>\n        props.searchValue !== undefined ? props.searchValue : props.inputValue,\n      ),\n      postState: search => search || '',\n    });\n\n    // =========================== Option ===========================\n    const parsedOptions = useOptions(\n      toRef(props, 'options'),\n      toRef(props, 'children'),\n      mergedFieldNames,\n    );\n    const { valueOptions, labelOptions, options: mergedOptions } = parsedOptions;\n\n    // ========================= Wrap Value =========================\n    const convert2LabelValues = (draftValues: DraftValueType) => {\n      // Convert to array\n      const valueList = toArray(draftValues);\n\n      // Convert to labelInValue type\n      return valueList.map(val => {\n        let rawValue: RawValueType;\n        let rawLabel: any;\n        let rawKey: Key;\n        let rawDisabled: boolean | undefined;\n\n        // Fill label & value\n        if (isRawValue(val)) {\n          rawValue = val;\n        } else {\n          rawKey = val.key;\n          rawLabel = val.label;\n          rawValue = val.value ?? rawKey;\n        }\n\n        const option = valueOptions.value.get(rawValue);\n        if (option) {\n          // Fill missing props\n          if (rawLabel === undefined)\n            rawLabel = option?.[props.optionLabelProp || mergedFieldNames.value.label];\n          if (rawKey === undefined) rawKey = option?.key ?? rawValue;\n          rawDisabled = option?.disabled;\n\n          // Warning if label not same as provided\n          // if (process.env.NODE_ENV !== 'production' && !isRawValue(val)) {\n          //   const optionLabel = option?.[mergedFieldNames.value.label];\n          //   if (optionLabel !== undefined && optionLabel !== rawLabel) {\n          //     warning(false, '`label` of `value` is not same as `label` in Select options.');\n          //   }\n          // }\n        }\n\n        return {\n          label: rawLabel,\n          value: rawValue,\n          key: rawKey,\n          disabled: rawDisabled,\n          option,\n        };\n      });\n    };\n\n    // =========================== Values ===========================\n    const [internalValue, setInternalValue] = useMergedState(props.defaultValue, {\n      value: toRef(props, 'value'),\n    });\n\n    // Merged value with LabelValueType\n    const rawLabeledValues = computed(() => {\n      const values = convert2LabelValues(internalValue.value);\n\n      // combobox no need save value when it's empty\n      if (props.mode === 'combobox' && !values[0]?.value) {\n        return [];\n      }\n\n      return values;\n    });\n\n    // Fill label with cache to avoid option remove\n    const [mergedValues, getMixedOption] = useCache(rawLabeledValues, valueOptions);\n\n    const displayValues = computed(() => {\n      // `null` need show as placeholder instead\n      // https://github.com/ant-design/ant-design/issues/25057\n      if (!props.mode && mergedValues.value.length === 1) {\n        const firstValue = mergedValues.value[0];\n        if (\n          firstValue.value === null &&\n          (firstValue.label === null || firstValue.label === undefined)\n        ) {\n          return [];\n        }\n      }\n\n      return mergedValues.value.map(item => ({\n        ...item,\n        label: (typeof item.label === 'function' ? item.label() : item.label) ?? item.value,\n      }));\n    });\n\n    /** Convert `displayValues` to raw value type set */\n    const rawValues = computed(() => new Set(mergedValues.value.map(val => val.value)));\n\n    watchEffect(\n      () => {\n        if (props.mode === 'combobox') {\n          const strValue = mergedValues.value[0]?.value;\n\n          if (strValue !== undefined && strValue !== null) {\n            setSearchValue(String(strValue));\n          }\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // ======================= Display Option =======================\n    // Create a placeholder item if not exist in `options`\n    const createTagOption = (val: RawValueType, label?: any) => {\n      const mergedLabel = label ?? val;\n      return {\n        [mergedFieldNames.value.value]: val,\n        [mergedFieldNames.value.label]: mergedLabel,\n      } as DefaultOptionType;\n    };\n\n    // Fill tag as option if mode is `tags`\n    const filledTagOptions = shallowRef();\n    watchEffect(() => {\n      if (props.mode !== 'tags') {\n        filledTagOptions.value = mergedOptions.value;\n        return;\n      }\n\n      // >>> Tag mode\n      const cloneOptions = mergedOptions.value.slice();\n\n      // Check if value exist in options (include new patch item)\n      const existOptions = (val: RawValueType) => valueOptions.value.has(val);\n\n      // Fill current value as option\n      [...mergedValues.value]\n        .sort((a, b) => (a.value < b.value ? -1 : 1))\n        .forEach(item => {\n          const val = item.value;\n\n          if (!existOptions(val)) {\n            cloneOptions.push(createTagOption(val, item.label));\n          }\n        });\n\n      filledTagOptions.value = cloneOptions;\n    });\n\n    const filteredOptions = useFilterOptions(\n      filledTagOptions,\n      mergedFieldNames,\n      mergedSearchValue,\n      mergedFilterOption,\n      toRef(props, 'optionFilterProp'),\n    );\n\n    // Fill options with search value if needed\n    const filledSearchOptions = computed(() => {\n      if (\n        props.mode !== 'tags' ||\n        !mergedSearchValue.value ||\n        filteredOptions.value.some(\n          item => item[props.optionFilterProp || 'value'] === mergedSearchValue.value,\n        )\n      ) {\n        return filteredOptions.value;\n      }\n\n      // Fill search value as option\n      return [createTagOption(mergedSearchValue.value), ...filteredOptions.value];\n    });\n\n    const orderedFilteredOptions = computed(() => {\n      if (!props.filterSort) {\n        return filledSearchOptions.value;\n      }\n\n      return [...filledSearchOptions.value].sort((a, b) => props.filterSort(a, b));\n    });\n\n    const displayOptions = computed(() =>\n      flattenOptions(orderedFilteredOptions.value, {\n        fieldNames: mergedFieldNames.value,\n        childrenAsData: childrenAsData.value,\n      }),\n    );\n\n    // =========================== Change ===========================\n    const triggerChange = (values: DraftValueType) => {\n      const labeledValues = convert2LabelValues(values);\n      setInternalValue(labeledValues);\n\n      if (\n        props.onChange &&\n        // Trigger event only when value changed\n        (labeledValues.length !== mergedValues.value.length ||\n          labeledValues.some((newVal, index) => mergedValues.value[index]?.value !== newVal?.value))\n      ) {\n        const returnValues = props.labelInValue\n          ? labeledValues.map(v => {\n              return {\n                ...v,\n                originLabel: v.label,\n                label: typeof v.label === 'function' ? v.label() : v.label,\n              };\n            })\n          : labeledValues.map(v => v.value);\n        const returnOptions = labeledValues.map(v =>\n          injectPropsWithOption(getMixedOption(v.value)),\n        );\n\n        props.onChange(\n          // Value\n          multiple.value ? returnValues : returnValues[0],\n          // Option\n          multiple.value ? returnOptions : returnOptions[0],\n        );\n      }\n    };\n\n    // ======================= Accessibility ========================\n    const [activeValue, setActiveValue] = useState<string>(null);\n    const [accessibilityIndex, setAccessibilityIndex] = useState(0);\n    const mergedDefaultActiveFirstOption = computed(() =>\n      props.defaultActiveFirstOption !== undefined\n        ? props.defaultActiveFirstOption\n        : props.mode !== 'combobox',\n    );\n\n    const onActiveValue: OnActiveValue = (active, index, { source = 'keyboard' } = {}) => {\n      setAccessibilityIndex(index);\n\n      if (props.backfill && props.mode === 'combobox' && active !== null && source === 'keyboard') {\n        setActiveValue(String(active));\n      }\n    };\n\n    // ========================= OptionList =========================\n    const triggerSelect = (val: RawValueType, selected: boolean) => {\n      const getSelectEnt = (): [RawValueType | LabelInValueType, DefaultOptionType] => {\n        const option = getMixedOption(val);\n        const originLabel = option?.[mergedFieldNames.value.label];\n        return [\n          props.labelInValue\n            ? {\n                label: typeof originLabel === 'function' ? originLabel() : originLabel,\n                originLabel,\n                value: val,\n                key: option?.key ?? val,\n              }\n            : val,\n          injectPropsWithOption(option),\n        ];\n      };\n\n      if (selected && props.onSelect) {\n        const [wrappedValue, option] = getSelectEnt();\n        props.onSelect(wrappedValue, option);\n      } else if (!selected && props.onDeselect) {\n        const [wrappedValue, option] = getSelectEnt();\n        props.onDeselect(wrappedValue, option);\n      }\n    };\n\n    // Used for OptionList selection\n    const onInternalSelect = (val, info) => {\n      let cloneValues: (RawValueType | DisplayValueType)[];\n\n      // Single mode always trigger select only with option list\n      const mergedSelect = multiple.value ? info.selected : true;\n\n      if (mergedSelect) {\n        cloneValues = multiple.value ? [...mergedValues.value, val] : [val];\n      } else {\n        cloneValues = mergedValues.value.filter(v => v.value !== val);\n      }\n\n      triggerChange(cloneValues);\n      triggerSelect(val, mergedSelect);\n\n      // Clean search value if single or configured\n      if (props.mode === 'combobox') {\n        // setSearchValue(String(val));\n        setActiveValue('');\n      } else if (!multiple.value || props.autoClearSearchValue) {\n        setSearchValue('');\n        setActiveValue('');\n      }\n    };\n\n    // ======================= Display Change =======================\n    // BaseSelect display values change\n    const onDisplayValuesChange: BaseSelectProps['onDisplayValuesChange'] = (nextValues, info) => {\n      triggerChange(nextValues);\n\n      if (info.type === 'remove' || info.type === 'clear') {\n        info.values.forEach(item => {\n          triggerSelect(item.value, false);\n        });\n      }\n    };\n\n    // =========================== Search ===========================\n    const onInternalSearch: BaseSelectProps['onSearch'] = (searchText, info) => {\n      setSearchValue(searchText);\n      setActiveValue(null);\n\n      // [Submit] Tag mode should flush input\n      if (info.source === 'submit') {\n        const formatted = (searchText || '').trim();\n        // prevent empty tags from appearing when you click the Enter button\n        if (formatted) {\n          const newRawValues = Array.from(new Set<RawValueType>([...rawValues.value, formatted]));\n          triggerChange(newRawValues);\n          triggerSelect(formatted, true);\n          setSearchValue('');\n        }\n\n        return;\n      }\n\n      if (info.source !== 'blur') {\n        if (props.mode === 'combobox') {\n          triggerChange(searchText);\n        }\n\n        props.onSearch?.(searchText);\n      }\n    };\n\n    const onInternalSearchSplit: BaseSelectProps['onSearchSplit'] = words => {\n      let patchValues: RawValueType[] = words;\n\n      if (props.mode !== 'tags') {\n        patchValues = words\n          .map(word => {\n            const opt = labelOptions.value.get(word);\n            return opt?.value;\n          })\n          .filter(val => val !== undefined);\n      }\n\n      const newRawValues = Array.from(new Set<RawValueType>([...rawValues.value, ...patchValues]));\n      triggerChange(newRawValues);\n      newRawValues.forEach(newRawValue => {\n        triggerSelect(newRawValue, true);\n      });\n    };\n    const realVirtual = computed(\n      () => props.virtual !== false && props.dropdownMatchSelectWidth !== false,\n    );\n    useProvideSelectProps(\n      toReactive({\n        ...parsedOptions,\n        flattenOptions: displayOptions,\n        onActiveValue,\n        defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n        onSelect: onInternalSelect,\n        menuItemSelectedIcon: toRef(props, 'menuItemSelectedIcon'),\n        rawValues,\n        fieldNames: mergedFieldNames,\n        virtual: realVirtual,\n        listHeight: toRef(props, 'listHeight'),\n        listItemHeight: toRef(props, 'listItemHeight'),\n        childrenAsData,\n      } as unknown as SelectContextProps),\n    );\n\n    // ========================== Warning ===========================\n    if (process.env.NODE_ENV !== 'production') {\n      watchEffect(\n        () => {\n          warningProps(props);\n        },\n        { flush: 'post' },\n      );\n    }\n    const selectRef = ref<BaseSelectRef>();\n    expose({\n      focus() {\n        selectRef.value?.focus();\n      },\n      blur() {\n        selectRef.value?.blur();\n      },\n      scrollTo(arg) {\n        selectRef.value?.scrollTo(arg);\n      },\n    } as BaseSelectRef);\n    const pickProps = computed(() => {\n      return omit(props, [\n        'id',\n        'mode',\n        'prefixCls',\n        'backfill',\n        'fieldNames',\n\n        // Search\n        'inputValue',\n        'searchValue',\n        'onSearch',\n        'autoClearSearchValue',\n\n        // Select\n        'onSelect',\n        'onDeselect',\n        'dropdownMatchSelectWidth',\n\n        // Options\n        'filterOption',\n        'filterSort',\n        'optionFilterProp',\n        'optionLabelProp',\n        'options',\n        'children',\n        'defaultActiveFirstOption',\n        'menuItemSelectedIcon',\n        'virtual',\n        'listHeight',\n        'listItemHeight',\n\n        // Value\n        'value',\n        'defaultValue',\n        'labelInValue',\n        'onChange',\n      ]);\n    });\n    return () => {\n      return (\n        <BaseSelect\n          {...pickProps.value}\n          {...attrs}\n          // >>> MISC\n          id={mergedId}\n          prefixCls={props.prefixCls}\n          ref={selectRef}\n          omitDomProps={OMIT_DOM_PROPS}\n          mode={props.mode}\n          // >>> Values\n          displayValues={displayValues.value}\n          onDisplayValuesChange={onDisplayValuesChange}\n          // >>> Search\n          searchValue={mergedSearchValue.value}\n          onSearch={onInternalSearch}\n          onSearchSplit={onInternalSearchSplit}\n          dropdownMatchSelectWidth={props.dropdownMatchSelectWidth}\n          // >>> OptionList\n          OptionList={OptionList}\n          emptyOptions={!displayOptions.value.length}\n          // >>> Accessibility\n          activeValue={activeValue.value}\n          activeDescendantId={`${mergedId}_list_${accessibilityIndex.value}`}\n          v-slots={slots}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-select/SelectContext.ts",
    "content": "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { RawValueType, RenderNode } from './BaseSelect';\nimport type { FlattenOptionData } from './interface';\nimport type { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect } from './Select';\n\n// Use any here since we do not get the type during compilation\nexport interface SelectContextProps {\n  options: BaseOptionType[];\n  flattenOptions: FlattenOptionData<BaseOptionType>[];\n  onActiveValue: OnActiveValue;\n  defaultActiveFirstOption?: boolean;\n  onSelect: OnInternalSelect;\n  menuItemSelectedIcon?: RenderNode;\n  rawValues: Set<RawValueType>;\n  fieldNames?: FieldNames;\n  virtual?: boolean;\n  listHeight?: number;\n  listItemHeight?: number;\n  childrenAsData?: boolean;\n}\n\nconst SelectContextKey: InjectionKey<SelectContextProps> = Symbol('SelectContextKey');\n\nexport function useProvideSelectProps(props: SelectContextProps) {\n  return provide(SelectContextKey, props);\n}\n\nexport default function useSelectProps() {\n  return inject(SelectContextKey, {} as SelectContextProps);\n}\n"
  },
  {
    "path": "components/vc-select/SelectTrigger.tsx",
    "content": "import Trigger from '../vc-trigger';\nimport PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport type { CSSProperties, PropType } from 'vue';\nimport { computed, ref, defineComponent } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport type { DropdownRender, Placement, RenderDOMFunc } from './BaseSelect';\nimport type { AlignType } from '../vc-trigger/interface';\n\nconst getBuiltInPlacements = (dropdownMatchSelectWidth: number | boolean) => {\n  // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n  const adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n  return {\n    bottomLeft: {\n      points: ['tl', 'bl'],\n      offset: [0, 4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    bottomRight: {\n      points: ['tr', 'br'],\n      offset: [0, 4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    topLeft: {\n      points: ['bl', 'tl'],\n      offset: [0, -4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n    topRight: {\n      points: ['br', 'tr'],\n      offset: [0, -4],\n      overflow: {\n        adjustX,\n        adjustY: 1,\n      },\n    },\n  };\n};\n\nexport interface RefTriggerProps {\n  getPopupElement: () => HTMLDivElement;\n}\n\nexport interface SelectTriggerProps {\n  prefixCls: string;\n  disabled: boolean;\n  visible: boolean;\n  popupElement: VueNode;\n  animation?: string;\n  transitionName?: string;\n  containerWidth: number;\n  placement?: Placement;\n  dropdownStyle: CSSProperties;\n  dropdownClassName: string;\n  direction: string;\n  dropdownMatchSelectWidth?: boolean | number;\n  dropdownRender?: DropdownRender;\n  getPopupContainer?: RenderDOMFunc;\n  dropdownAlign: AlignType;\n  empty: boolean;\n  getTriggerDOMNode: () => any;\n  onPopupVisibleChange?: (visible: boolean) => void;\n\n  onPopupMouseEnter: () => void;\n  onPopupFocusin: () => void;\n  onPopupFocusout: () => void;\n}\n\nconst SelectTrigger = defineComponent<SelectTriggerProps, { popupRef: any }>({\n  name: 'SelectTrigger',\n  inheritAttrs: false,\n  props: {\n    dropdownAlign: Object as PropType<AlignType>,\n    visible: { type: Boolean, default: undefined },\n    disabled: { type: Boolean, default: undefined },\n    dropdownClassName: String,\n    dropdownStyle: PropTypes.object,\n    placement: String,\n    empty: { type: Boolean, default: undefined },\n    prefixCls: String,\n    popupClassName: String,\n    animation: String,\n    transitionName: String,\n    getPopupContainer: Function,\n    dropdownRender: Function,\n    containerWidth: Number,\n    dropdownMatchSelectWidth: PropTypes.oneOfType([Number, Boolean]).def(true),\n    popupElement: PropTypes.any,\n    direction: String,\n    getTriggerDOMNode: Function,\n    onPopupVisibleChange: Function as PropType<(open: boolean) => void>,\n    onPopupMouseEnter: Function,\n    onPopupFocusin: Function,\n    onPopupFocusout: Function,\n  } as any,\n  setup(props, { slots, attrs, expose }) {\n    const builtInPlacements = computed(() => {\n      const { dropdownMatchSelectWidth } = props;\n      return getBuiltInPlacements(dropdownMatchSelectWidth);\n    });\n    const popupRef = ref();\n    expose({\n      getPopupElement: () => {\n        return popupRef.value;\n      },\n    });\n    return () => {\n      const { empty = false, ...restProps } = { ...props, ...attrs };\n      const {\n        visible,\n        dropdownAlign,\n        prefixCls,\n        popupElement,\n        dropdownClassName,\n        dropdownStyle,\n        direction = 'ltr',\n        placement,\n        dropdownMatchSelectWidth,\n        containerWidth,\n        dropdownRender,\n        animation,\n        transitionName,\n        getPopupContainer,\n        getTriggerDOMNode,\n        onPopupVisibleChange,\n        onPopupMouseEnter,\n        onPopupFocusin,\n        onPopupFocusout,\n      } = restProps as SelectTriggerProps;\n      const dropdownPrefixCls = `${prefixCls}-dropdown`;\n\n      let popupNode = popupElement;\n      if (dropdownRender) {\n        popupNode = dropdownRender({ menuNode: popupElement, props });\n      }\n\n      const mergedTransitionName = animation ? `${dropdownPrefixCls}-${animation}` : transitionName;\n\n      const popupStyle = { minWidth: `${containerWidth}px`, ...dropdownStyle };\n\n      if (typeof dropdownMatchSelectWidth === 'number') {\n        popupStyle.width = `${dropdownMatchSelectWidth}px`;\n      } else if (dropdownMatchSelectWidth) {\n        popupStyle.width = `${containerWidth}px`;\n      }\n      return (\n        <Trigger\n          {...props}\n          showAction={onPopupVisibleChange ? ['click'] : []}\n          hideAction={onPopupVisibleChange ? ['click'] : []}\n          popupPlacement={placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft')}\n          builtinPlacements={builtInPlacements.value}\n          prefixCls={dropdownPrefixCls}\n          popupTransitionName={mergedTransitionName}\n          popupAlign={dropdownAlign}\n          popupVisible={visible}\n          getPopupContainer={getPopupContainer}\n          popupClassName={classNames(dropdownClassName, {\n            [`${dropdownPrefixCls}-empty`]: empty,\n          })}\n          popupStyle={popupStyle}\n          getTriggerDOMNode={getTriggerDOMNode}\n          onPopupVisibleChange={onPopupVisibleChange}\n          v-slots={{\n            default: slots.default,\n            popup: () => (\n              <div\n                ref={popupRef}\n                onMouseenter={onPopupMouseEnter}\n                onFocusin={onPopupFocusin}\n                onFocusout={onPopupFocusout}\n              >\n                {popupNode}\n              </div>\n            ),\n          }}\n        ></Trigger>\n      );\n    };\n  },\n});\n\nexport default SelectTrigger;\n"
  },
  {
    "path": "components/vc-select/Selector/Input.tsx",
    "content": "import { cloneElement } from '../../_util/vnode';\nimport type { ExtractPropTypes, PropType, VNode } from 'vue';\nimport { defineComponent, inject } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport classNames from '../../_util/classNames';\nimport type {\n  FocusEventHandler,\n  KeyboardEventHandler,\n  MouseEventHandler,\n  ChangeEventHandler,\n  CompositionEventHandler,\n  ClipboardEventHandler,\n} from '../../_util/EventInterface';\nimport BaseInput from '../../_util/BaseInput';\n\nexport const inputProps = {\n  inputRef: PropTypes.any,\n  prefixCls: String,\n  id: String,\n  inputElement: PropTypes.VueNode,\n  disabled: { type: Boolean, default: undefined },\n  autofocus: { type: Boolean, default: undefined },\n  autocomplete: String,\n  editable: { type: Boolean, default: undefined },\n  activeDescendantId: String,\n  value: String,\n  open: { type: Boolean, default: undefined },\n  tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /** Pass accessibility props to input */\n  attrs: PropTypes.object,\n  onKeydown: { type: Function as PropType<KeyboardEventHandler> },\n  onMousedown: { type: Function as PropType<MouseEventHandler> },\n  onChange: { type: Function as PropType<ChangeEventHandler> },\n  onPaste: { type: Function as PropType<ClipboardEventHandler> },\n  onCompositionstart: { type: Function as PropType<CompositionEventHandler> },\n  onCompositionend: { type: Function as PropType<CompositionEventHandler> },\n  onFocus: { type: Function as PropType<FocusEventHandler> },\n  onBlur: { type: Function as PropType<FocusEventHandler> },\n};\n\nexport type InputProps = Partial<ExtractPropTypes<typeof inputProps>>;\n\nconst Input = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'SelectInput',\n  inheritAttrs: false,\n  props: inputProps,\n  setup(props) {\n    let blurTimeout = null;\n    const VCSelectContainerEvent = inject('VCSelectContainerEvent') as any;\n    return () => {\n      const {\n        prefixCls,\n        id,\n        inputElement,\n        disabled,\n        tabindex,\n        autofocus,\n        autocomplete,\n        editable,\n        activeDescendantId,\n        value,\n        onKeydown,\n        onMousedown,\n        onChange,\n        onPaste,\n        onCompositionstart,\n        onCompositionend,\n        onFocus,\n        onBlur,\n        open,\n        inputRef,\n        attrs,\n      } = props;\n\n      let inputNode: any = inputElement || <BaseInput></BaseInput>;\n\n      const inputProps = inputNode.props || {};\n      const {\n        onKeydown: onOriginKeyDown,\n        onInput: onOriginInput,\n        onFocus: onOriginFocus,\n        onBlur: onOriginBlur,\n        onMousedown: onOriginMouseDown,\n        onCompositionstart: onOriginCompositionStart,\n        onCompositionend: onOriginCompositionEnd,\n        style,\n      } = inputProps;\n      inputNode = cloneElement(\n        inputNode,\n        Object.assign(\n          {\n            type: 'search',\n            ...inputProps,\n            id,\n            ref: inputRef,\n            disabled,\n            tabindex,\n            lazy: false,\n            autocomplete: autocomplete || 'off',\n            autofocus,\n            class: classNames(`${prefixCls}-selection-search-input`, inputNode?.props?.class),\n\n            role: 'combobox',\n            'aria-expanded': open,\n            'aria-haspopup': 'listbox',\n            'aria-owns': `${id}_list`,\n            'aria-autocomplete': 'list',\n            'aria-controls': `${id}_list`,\n            'aria-activedescendant': activeDescendantId,\n            ...attrs,\n            value: editable ? value : '',\n            readonly: !editable,\n            unselectable: !editable ? 'on' : null,\n            style: { ...style, opacity: editable ? null : 0 },\n            onKeydown: (event: KeyboardEvent) => {\n              onKeydown(event);\n              if (onOriginKeyDown) {\n                onOriginKeyDown(event);\n              }\n            },\n            onMousedown: (event: MouseEvent) => {\n              onMousedown(event);\n              if (onOriginMouseDown) {\n                onOriginMouseDown(event);\n              }\n            },\n            onInput: (event: Event) => {\n              onChange(event);\n              if (onOriginInput) {\n                onOriginInput(event);\n              }\n            },\n            onCompositionstart(event: CompositionEvent) {\n              onCompositionstart(event);\n              if (onOriginCompositionStart) {\n                onOriginCompositionStart(event);\n              }\n            },\n            onCompositionend(event: CompositionEvent) {\n              onCompositionend(event);\n              if (onOriginCompositionEnd) {\n                onOriginCompositionEnd(event);\n              }\n            },\n            onPaste,\n            onFocus: (...args: any[]) => {\n              clearTimeout(blurTimeout);\n              onOriginFocus && onOriginFocus(args[0]);\n              onFocus && onFocus(args[0]);\n              VCSelectContainerEvent?.focus(args[0]);\n            },\n            onBlur: (...args: any[]) => {\n              blurTimeout = setTimeout(() => {\n                onOriginBlur && onOriginBlur(args[0]);\n                onBlur && onBlur(args[0]);\n                VCSelectContainerEvent?.blur(args[0]);\n              }, 100);\n            },\n          },\n          inputNode.type === 'textarea' ? {} : { type: 'search' },\n        ),\n        true,\n        true,\n      ) as VNode;\n      return inputNode;\n    };\n  },\n});\n\nexport default Input;\n"
  },
  {
    "path": "components/vc-select/Selector/MultipleSelector.tsx",
    "content": "import TransBtn from '../TransBtn';\nimport type { InnerSelectorProps } from './interface';\nimport Input from './Input';\nimport type { Ref, PropType } from 'vue';\nimport { ref, watchEffect, computed, defineComponent, onMounted, shallowRef, watch } from 'vue';\nimport classNames from '../../_util/classNames';\nimport pickAttrs from '../../_util/pickAttrs';\nimport PropTypes from '../../_util/vue-types';\nimport type { VueNode } from '../../_util/type';\nimport Overflow from '../../vc-overflow';\nimport type { DisplayValueType, RenderNode, CustomTagProps, RawValueType } from '../BaseSelect';\nimport type { BaseOptionType } from '../Select';\nimport useInjectLegacySelectContext from '../../vc-tree-select/LegacyContext';\n\ntype SelectorProps = InnerSelectorProps & {\n  // Icon\n  removeIcon?: RenderNode;\n\n  // Tags\n  maxTagCount?: number | 'responsive';\n  maxTagTextLength?: number;\n  maxTagPlaceholder?: VueNode | ((omittedValues: DisplayValueType[]) => VueNode);\n  tokenSeparators?: string[];\n  tagRender?: (props: CustomTagProps) => VueNode;\n  onToggleOpen: any;\n\n  compositionStatus: boolean;\n\n  // Motion\n  choiceTransitionName?: string;\n\n  // Event\n  onRemove: (value: DisplayValueType) => void;\n};\n\nconst props = {\n  id: String,\n  prefixCls: String,\n  values: PropTypes.array,\n  open: { type: Boolean, default: undefined },\n  searchValue: String,\n  inputRef: PropTypes.any,\n  placeholder: PropTypes.any,\n  disabled: { type: Boolean, default: undefined },\n  mode: String,\n  showSearch: { type: Boolean, default: undefined },\n  autofocus: { type: Boolean, default: undefined },\n  autocomplete: String,\n  activeDescendantId: String,\n  tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  compositionStatus: Boolean,\n  removeIcon: PropTypes.any,\n  choiceTransitionName: String,\n\n  maxTagCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  maxTagTextLength: Number,\n  maxTagPlaceholder: PropTypes.any.def(\n    () => (omittedValues: DisplayValueType[]) => `+ ${omittedValues.length} ...`,\n  ),\n  tagRender: Function,\n\n  onToggleOpen: { type: Function as PropType<(open?: boolean) => void> },\n  onRemove: Function,\n  onInputChange: Function,\n  onInputPaste: Function,\n  onInputKeyDown: Function,\n  onInputMouseDown: Function,\n  onInputCompositionStart: Function,\n  onInputCompositionEnd: Function,\n};\n\nconst onPreventMouseDown = (event: MouseEvent) => {\n  event.preventDefault();\n  event.stopPropagation();\n};\n\nconst SelectSelector = defineComponent<SelectorProps>({\n  name: 'MultipleSelectSelector',\n  inheritAttrs: false,\n  props: props as any,\n  setup(props) {\n    const measureRef = shallowRef();\n    const inputWidth = shallowRef(0);\n    const focused = shallowRef(false);\n    const legacyTreeSelectContext = useInjectLegacySelectContext();\n    const selectionPrefixCls = computed(() => `${props.prefixCls}-selection`);\n\n    // ===================== Search ======================\n    const inputValue = computed(() =>\n      props.open || props.mode === 'tags' ? props.searchValue : '',\n    );\n    const inputEditable: Ref<boolean> = computed(\n      () =>\n        props.mode === 'tags' || ((props.showSearch && (props.open || focused.value)) as boolean),\n    );\n    const targetValue = ref('');\n    watchEffect(() => {\n      targetValue.value = inputValue.value;\n    });\n    // We measure width and set to the input immediately\n    onMounted(() => {\n      watch(\n        targetValue,\n        () => {\n          inputWidth.value = measureRef.value.scrollWidth;\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n\n    // ===================== Render ======================\n    // >>> Render Selector Node. Includes Item & Rest\n    function defaultRenderSelector(\n      title: VueNode,\n      content: VueNode,\n      itemDisabled: boolean,\n      closable?: boolean,\n      onClose?: (e: MouseEvent) => void,\n    ) {\n      return (\n        <span\n          class={classNames(`${selectionPrefixCls.value}-item`, {\n            [`${selectionPrefixCls.value}-item-disabled`]: itemDisabled,\n          })}\n          title={\n            typeof title === 'string' || typeof title === 'number' ? title.toString() : undefined\n          }\n        >\n          <span class={`${selectionPrefixCls.value}-item-content`}>{content}</span>\n          {closable && (\n            <TransBtn\n              class={`${selectionPrefixCls.value}-item-remove`}\n              onMousedown={onPreventMouseDown}\n              onClick={onClose}\n              customizeIcon={props.removeIcon}\n            >\n              ×\n            </TransBtn>\n          )}\n        </span>\n      );\n    }\n\n    function customizeRenderSelector(\n      value: RawValueType,\n      content: VueNode,\n      itemDisabled: boolean,\n      closable: boolean,\n      onClose: (e: MouseEvent) => void,\n      option: BaseOptionType,\n    ) {\n      const onMouseDown = (e: MouseEvent) => {\n        onPreventMouseDown(e);\n        props.onToggleOpen(!props.open);\n      };\n      let originData = option;\n      // For TreeSelect\n      if (legacyTreeSelectContext.keyEntities) {\n        originData = legacyTreeSelectContext.keyEntities[value]?.node || {};\n      }\n      return (\n        <span key={value} onMousedown={onMouseDown}>\n          {props.tagRender({\n            label: content,\n            value,\n            disabled: itemDisabled,\n            closable,\n            onClose,\n            option: originData,\n          })}\n        </span>\n      );\n    }\n\n    function renderItem(valueItem: DisplayValueType) {\n      const { disabled: itemDisabled, label, value, option } = valueItem;\n      const closable = !props.disabled && !itemDisabled;\n\n      let displayLabel = label;\n\n      if (typeof props.maxTagTextLength === 'number') {\n        if (typeof label === 'string' || typeof label === 'number') {\n          const strLabel = String(displayLabel);\n\n          if (strLabel.length > props.maxTagTextLength) {\n            displayLabel = `${strLabel.slice(0, props.maxTagTextLength)}...`;\n          }\n        }\n      }\n      const onClose = (event?: MouseEvent) => {\n        if (event) event.stopPropagation();\n        props.onRemove?.(valueItem);\n      };\n\n      return typeof props.tagRender === 'function'\n        ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose, option)\n        : defaultRenderSelector(label, displayLabel, itemDisabled, closable, onClose);\n    }\n\n    function renderRest(omittedValues: DisplayValueType[]) {\n      const { maxTagPlaceholder = omittedValues => `+ ${omittedValues.length} ...` } = props;\n      const content =\n        typeof maxTagPlaceholder === 'function'\n          ? maxTagPlaceholder(omittedValues)\n          : maxTagPlaceholder;\n\n      return defaultRenderSelector(content, content, false);\n    }\n\n    const handleInput = (e: Event) => {\n      const composing = (e.target as any).composing;\n      targetValue.value = (e.target as any).value;\n      if (!composing) {\n        props.onInputChange(e);\n      }\n    };\n\n    return () => {\n      const {\n        id,\n        prefixCls,\n        values,\n        open,\n        inputRef,\n        placeholder,\n        disabled,\n        autofocus,\n        autocomplete,\n        activeDescendantId,\n        tabindex,\n        compositionStatus,\n        onInputPaste,\n        onInputKeyDown,\n        onInputMouseDown,\n        onInputCompositionStart,\n        onInputCompositionEnd,\n      } = props;\n      // >>> Input Node\n      const inputNode = (\n        <div\n          class={`${selectionPrefixCls.value}-search`}\n          style={{ width: inputWidth.value + 'px' }}\n          key=\"input\"\n        >\n          <Input\n            inputRef={inputRef}\n            open={open}\n            prefixCls={prefixCls}\n            id={id}\n            inputElement={null}\n            disabled={disabled}\n            autofocus={autofocus}\n            autocomplete={autocomplete}\n            editable={inputEditable.value}\n            activeDescendantId={activeDescendantId}\n            value={targetValue.value}\n            onKeydown={onInputKeyDown}\n            onMousedown={onInputMouseDown}\n            onChange={handleInput}\n            onPaste={onInputPaste}\n            onCompositionstart={onInputCompositionStart}\n            onCompositionend={onInputCompositionEnd}\n            tabindex={tabindex}\n            attrs={pickAttrs(props, true)}\n            onFocus={() => (focused.value = true)}\n            onBlur={() => (focused.value = false)}\n          />\n\n          {/* Measure Node */}\n          <span ref={measureRef} class={`${selectionPrefixCls.value}-search-mirror`} aria-hidden>\n            {targetValue.value}&nbsp;\n          </span>\n        </div>\n      );\n\n      // >>> Selections\n      const selectionNode = (\n        <Overflow\n          prefixCls={`${selectionPrefixCls.value}-overflow`}\n          data={values}\n          renderItem={renderItem}\n          renderRest={renderRest}\n          suffix={inputNode}\n          itemKey=\"key\"\n          maxCount={props.maxTagCount}\n          key=\"overflow\"\n        />\n      );\n      return (\n        <>\n          {selectionNode}\n          {!values.length && !inputValue.value && !compositionStatus && (\n            <span class={`${selectionPrefixCls.value}-placeholder`}>{placeholder}</span>\n          )}\n        </>\n      );\n    };\n  },\n});\n\nexport default SelectSelector;\n"
  },
  {
    "path": "components/vc-select/Selector/SingleSelector.tsx",
    "content": "import pickAttrs from '../../_util/pickAttrs';\nimport Input from './Input';\nimport type { InnerSelectorProps } from './interface';\nimport { Fragment, computed, defineComponent, shallowRef, watch } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport type { VueNode } from '../../_util/type';\nimport useInjectLegacySelectContext from '../../vc-tree-select/LegacyContext';\n\ninterface SelectorProps extends InnerSelectorProps {\n  inputElement: VueNode;\n  activeValue: string;\n  optionLabelRender: Function;\n  compositionStatus: boolean;\n}\nconst props = {\n  inputElement: PropTypes.any,\n  id: String,\n  prefixCls: String,\n  values: PropTypes.array,\n  open: { type: Boolean, default: undefined },\n  searchValue: String,\n  inputRef: PropTypes.any,\n  placeholder: PropTypes.any,\n  compositionStatus: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  mode: String,\n  showSearch: { type: Boolean, default: undefined },\n  autofocus: { type: Boolean, default: undefined },\n  autocomplete: String,\n  activeDescendantId: String,\n  tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  activeValue: String,\n  backfill: { type: Boolean, default: undefined },\n  optionLabelRender: Function,\n  onInputChange: Function,\n  onInputPaste: Function,\n  onInputKeyDown: Function,\n  onInputMouseDown: Function,\n  onInputCompositionStart: Function,\n  onInputCompositionEnd: Function,\n};\nconst SingleSelector = defineComponent<SelectorProps>({\n  name: 'SingleSelector',\n  setup(props) {\n    const inputChanged = shallowRef(false);\n\n    const combobox = computed(() => props.mode === 'combobox');\n    const inputEditable = computed(() => combobox.value || props.showSearch);\n\n    const inputValue = computed(() => {\n      let inputValue: string = props.searchValue || '';\n      if (combobox.value && props.activeValue && !inputChanged.value) {\n        inputValue = props.activeValue;\n      }\n      return inputValue;\n    });\n    const legacyTreeSelectContext = useInjectLegacySelectContext();\n    watch(\n      [combobox, () => props.activeValue],\n      () => {\n        if (combobox.value) {\n          inputChanged.value = false;\n        }\n      },\n      { immediate: true },\n    );\n\n    // Not show text when closed expect combobox mode\n    const hasTextInput = computed(() =>\n      props.mode !== 'combobox' && !props.open && !props.showSearch\n        ? false\n        : !!inputValue.value || props.compositionStatus,\n    );\n\n    const title = computed(() => {\n      const item = props.values[0];\n      return item && (typeof item.label === 'string' || typeof item.label === 'number')\n        ? item.label.toString()\n        : undefined;\n    });\n\n    const renderPlaceholder = () => {\n      if (props.values[0]) {\n        return null;\n      }\n      const hiddenStyle = hasTextInput.value ? { visibility: 'hidden' as const } : undefined;\n      return (\n        <span class={`${props.prefixCls}-selection-placeholder`} style={hiddenStyle}>\n          {props.placeholder}\n        </span>\n      );\n    };\n    const handleInput = (e: Event) => {\n      const composing = (e.target as any).composing;\n      if (!composing) {\n        inputChanged.value = true;\n        props.onInputChange(e);\n      }\n    };\n\n    return () => {\n      const {\n        inputElement,\n        prefixCls,\n        id,\n        values,\n        inputRef,\n        disabled,\n        autofocus,\n        autocomplete,\n        activeDescendantId,\n        open,\n        tabindex,\n        optionLabelRender,\n        onInputKeyDown,\n        onInputMouseDown,\n        onInputPaste,\n        onInputCompositionStart,\n        onInputCompositionEnd,\n      } = props;\n      const item = values[0];\n      let titleNode = null;\n      // custom tree-select title by slot\n\n      // For TreeSelect\n      if (item && legacyTreeSelectContext.customSlots) {\n        const key = item.key ?? item.value;\n        const originData = legacyTreeSelectContext.keyEntities[key]?.node || {};\n        titleNode =\n          legacyTreeSelectContext.customSlots[originData.slots?.title] ||\n          legacyTreeSelectContext.customSlots.title ||\n          item.label;\n        if (typeof titleNode === 'function') {\n          titleNode = titleNode(originData);\n        }\n        //  else if (treeSelectContext.value.slots.titleRender) {\n        //   // 因历史 title 是覆盖逻辑，新增 titleRender，所有的 title 都走一遍 titleRender\n        //   titleNode = treeSelectContext.value.slots.titleRender(item.option?.data || {});\n        // }\n      } else {\n        titleNode = optionLabelRender && item ? optionLabelRender(item.option) : item?.label;\n      }\n      return (\n        <>\n          <span class={`${prefixCls}-selection-search`}>\n            <Input\n              inputRef={inputRef}\n              prefixCls={prefixCls}\n              id={id}\n              open={open}\n              inputElement={inputElement}\n              disabled={disabled}\n              autofocus={autofocus}\n              autocomplete={autocomplete}\n              editable={inputEditable.value}\n              activeDescendantId={activeDescendantId}\n              value={inputValue.value}\n              onKeydown={onInputKeyDown}\n              onMousedown={onInputMouseDown}\n              onChange={handleInput}\n              onPaste={onInputPaste}\n              onCompositionstart={onInputCompositionStart}\n              onCompositionend={onInputCompositionEnd}\n              tabindex={tabindex}\n              attrs={pickAttrs(props, true)}\n            />\n          </span>\n\n          {/* Display value */}\n          {!combobox.value && item && !hasTextInput.value && (\n            <span class={`${prefixCls}-selection-item`} title={title.value}>\n              <Fragment key={item.key ?? item.value}>{titleNode}</Fragment>\n            </span>\n          )}\n\n          {/* Display placeholder */}\n          {renderPlaceholder()}\n        </>\n      );\n    };\n  },\n});\nSingleSelector.props = props;\nSingleSelector.inheritAttrs = false;\n\nexport default SingleSelector;\n"
  },
  {
    "path": "components/vc-select/Selector/index.tsx",
    "content": "/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport KeyCode from '../../_util/KeyCode';\nimport MultipleSelector from './MultipleSelector';\nimport SingleSelector from './SingleSelector';\nimport type { CustomTagProps, DisplayValueType, Mode, RenderNode } from '../BaseSelect';\nimport { isValidateOpenKey } from '../utils/keyUtil';\nimport useLock from '../hooks/useLock';\nimport type { PropType } from 'vue';\nimport { defineComponent, ref } from 'vue';\nimport createRef from '../../_util/createRef';\nimport PropTypes from '../../_util/vue-types';\nimport type { VueNode } from '../../_util/type';\nimport type { EventHandler } from '../../_util/EventInterface';\nimport type { ScrollTo } from '../../vc-virtual-list/List';\n\nexport interface SelectorProps {\n  id: string;\n  prefixCls: string;\n  showSearch?: boolean;\n  open: boolean;\n  values: DisplayValueType[];\n  multiple?: boolean;\n  mode: Mode;\n  searchValue: string;\n  activeValue: string;\n  inputElement: VueNode;\n\n  autofocus?: boolean;\n  activeDescendantId?: string;\n  tabindex?: number | string;\n  disabled?: boolean;\n  placeholder?: VueNode;\n  removeIcon?: RenderNode;\n\n  // Tags\n  maxTagCount?: number | 'responsive';\n  maxTagTextLength?: number;\n  maxTagPlaceholder?: VueNode | ((omittedValues: DisplayValueType[]) => VueNode);\n  tagRender?: (props: CustomTagProps) => VueNode;\n  optionLabelRender?: (props: Record<string, any>) => VueNode;\n\n  /** Check if `tokenSeparators` contains `\\n` or `\\r\\n` */\n  tokenWithEnter?: boolean;\n\n  // Motion\n  choiceTransitionName?: string;\n\n  onToggleOpen: (open?: boolean) => void | any;\n  /** `onSearch` returns go next step boolean to check if need do toggle open */\n  onSearch: (searchText: string, fromTyping: boolean, isCompositing: boolean) => boolean;\n  onSearchSubmit: (searchText: string) => void;\n  onRemove: (value: DisplayValueType) => void;\n  onInputKeyDown?: (e: KeyboardEvent) => void;\n\n  /**\n   * @private get real dom for trigger align.\n   * This may be removed after React provides replacement of `findDOMNode`\n   */\n  domRef: () => HTMLDivElement;\n}\nexport interface RefSelectorProps {\n  focus: () => void;\n  blur: () => void;\n  scrollTo?: ScrollTo;\n}\n\nconst Selector = defineComponent<SelectorProps>({\n  name: 'Selector',\n  inheritAttrs: false,\n  props: {\n    id: String,\n    prefixCls: String,\n    showSearch: { type: Boolean, default: undefined },\n    open: { type: Boolean, default: undefined },\n    /** Display in the Selector value, it's not same as `value` prop */\n    values: PropTypes.array,\n    multiple: { type: Boolean, default: undefined },\n    mode: String,\n    searchValue: String,\n    activeValue: String,\n    inputElement: PropTypes.any,\n\n    autofocus: { type: Boolean, default: undefined },\n    activeDescendantId: String,\n    tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    disabled: { type: Boolean, default: undefined },\n    placeholder: PropTypes.any,\n    removeIcon: PropTypes.any,\n\n    // Tags\n    maxTagCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    maxTagTextLength: Number,\n    maxTagPlaceholder: PropTypes.any,\n    tagRender: Function,\n    optionLabelRender: Function,\n\n    /** Check if `tokenSeparators` contains `\\n` or `\\r\\n` */\n    tokenWithEnter: { type: Boolean, default: undefined },\n\n    // Motion\n    choiceTransitionName: String,\n\n    onToggleOpen: { type: Function as PropType<(open?: boolean) => void> },\n    /** `onSearch` returns go next step boolean to check if need do toggle open */\n    onSearch: Function,\n    onSearchSubmit: Function,\n    onRemove: Function,\n    onInputKeyDown: { type: Function as PropType<EventHandler> },\n\n    /**\n     * @private get real dom for trigger align.\n     * This may be removed after React provides replacement of `findDOMNode`\n     */\n    domRef: Function,\n  } as any,\n  setup(props, { expose }) {\n    const inputRef = createRef();\n    const compositionStatus = ref(false);\n\n    // ====================== Input ======================\n    const [getInputMouseDown, setInputMouseDown] = useLock(0);\n\n    const onInternalInputKeyDown = (event: KeyboardEvent) => {\n      const { which } = event;\n\n      if (which === KeyCode.UP || which === KeyCode.DOWN) {\n        event.preventDefault();\n      }\n\n      if (props.onInputKeyDown) {\n        props.onInputKeyDown(event);\n      }\n\n      if (\n        which === KeyCode.ENTER &&\n        props.mode === 'tags' &&\n        !compositionStatus.value &&\n        !props.open\n      ) {\n        // When menu isn't open, OptionList won't trigger a value change\n        // So when enter is pressed, the tag's input value should be emitted here to let selector know\n        props.onSearchSubmit((event.target as HTMLInputElement).value);\n      }\n\n      if (isValidateOpenKey(which)) {\n        props.onToggleOpen(true);\n      }\n    };\n\n    /**\n     * We can not use `findDOMNode` sine it will get warning,\n     * have to use timer to check if is input element.\n     */\n    const onInternalInputMouseDown = () => {\n      setInputMouseDown(true);\n    };\n\n    // When paste come, ignore next onChange\n    let pastedText = null;\n\n    const triggerOnSearch = (value: string) => {\n      if (props.onSearch(value, true, compositionStatus.value) !== false) {\n        props.onToggleOpen(true);\n      }\n    };\n\n    const onInputCompositionStart = () => {\n      compositionStatus.value = true;\n    };\n\n    const onInputCompositionEnd = (e: InputEvent) => {\n      compositionStatus.value = false;\n      // Trigger search again to support `tokenSeparators` with typewriting\n      if (props.mode !== 'combobox') {\n        triggerOnSearch((e.target as HTMLInputElement).value);\n      }\n    };\n\n    const onInputChange = (event: { target: { value: any } }) => {\n      let {\n        target: { value },\n      } = event;\n\n      // Pasted text should replace back to origin content\n      if (props.tokenWithEnter && pastedText && /[\\r\\n]/.test(pastedText)) {\n        // CRLF will be treated as a single space for input element\n        const replacedText = pastedText\n          .replace(/[\\r\\n]+$/, '')\n          .replace(/\\r\\n/g, ' ')\n          .replace(/[\\r\\n]/g, ' ');\n        value = value.replace(replacedText, pastedText);\n      }\n\n      pastedText = null;\n\n      triggerOnSearch(value);\n    };\n\n    const onInputPaste = (e: ClipboardEvent) => {\n      const { clipboardData } = e;\n      const value = clipboardData.getData('text');\n\n      pastedText = value;\n    };\n\n    const onClick = ({ target }) => {\n      if (target !== inputRef.current) {\n        // Should focus input if click the selector\n        const isIE = (document.body.style as any).msTouchAction !== undefined;\n        if (isIE) {\n          setTimeout(() => {\n            inputRef.current.focus();\n          });\n        } else {\n          inputRef.current.focus();\n        }\n      }\n    };\n\n    const onMousedown = (event: MouseEvent) => {\n      const inputMouseDown = getInputMouseDown();\n      if (event.target !== inputRef.current && !inputMouseDown) {\n        event.preventDefault();\n      }\n\n      if ((props.mode !== 'combobox' && (!props.showSearch || !inputMouseDown)) || !props.open) {\n        if (props.open) {\n          props.onSearch('', true, false);\n        }\n        props.onToggleOpen();\n      }\n    };\n    expose({\n      focus: () => {\n        inputRef.current.focus();\n      },\n      blur: () => {\n        inputRef.current.blur();\n      },\n    });\n\n    return () => {\n      const { prefixCls, domRef, mode } = props as SelectorProps;\n      const sharedProps = {\n        inputRef,\n        onInputKeyDown: onInternalInputKeyDown,\n        onInputMouseDown: onInternalInputMouseDown,\n        onInputChange,\n        onInputPaste,\n        compositionStatus: compositionStatus.value,\n        onInputCompositionStart,\n        onInputCompositionEnd,\n      };\n      const selectNode =\n        mode === 'multiple' || mode === 'tags' ? (\n          <MultipleSelector {...props} {...sharedProps} />\n        ) : (\n          <SingleSelector {...props} {...sharedProps} />\n        );\n      return (\n        <div\n          ref={domRef}\n          class={`${prefixCls}-selector`}\n          onClick={onClick}\n          onMousedown={onMousedown}\n        >\n          {selectNode}\n        </div>\n      );\n    };\n  },\n});\n\nexport default Selector;\n"
  },
  {
    "path": "components/vc-select/Selector/interface.ts",
    "content": "import type { RefObject } from '../../_util/createRef';\n\nimport type { EventHandler } from '../../_util/EventInterface';\nimport type { VueNode } from '../../_util/type';\nimport type { Mode, DisplayValueType } from '../BaseSelect';\n\nexport interface InnerSelectorProps {\n  prefixCls: string;\n  id: string;\n  mode: Mode;\n  inputRef: RefObject;\n  placeholder?: VueNode;\n  disabled?: boolean;\n  autofocus?: boolean;\n  autocomplete?: string;\n  values: DisplayValueType[];\n  showSearch?: boolean;\n  searchValue: string;\n  activeDescendantId: string;\n  open: boolean;\n  tabindex?: number | string;\n  onInputKeyDown: EventHandler;\n  onInputMouseDown: EventHandler;\n  onInputChange: EventHandler;\n  onInputPaste: EventHandler;\n  onInputCompositionStart: EventHandler;\n  onInputCompositionEnd: EventHandler;\n}\n"
  },
  {
    "path": "components/vc-select/TransBtn.tsx",
    "content": "import { cloneVNode, isVNode } from 'vue';\nimport type { VNode, FunctionalComponent, PropType } from 'vue';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport type { VueNode } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\nimport type { RenderNode } from './BaseSelect';\n\nexport interface TransBtnProps {\n  class: string;\n  customizeIcon: RenderNode;\n  customizeIconProps?: any;\n  onMousedown?: (payload: MouseEvent) => void;\n  onClick?: (payload: MouseEvent) => void;\n}\n\nexport interface TransBtnType extends FunctionalComponent<TransBtnProps> {\n  displayName: string;\n}\n\nconst TransBtn: TransBtnType = (props, { slots }) => {\n  const { class: className, customizeIcon, customizeIconProps, onMousedown, onClick } = props;\n  let icon: VueNode;\n\n  if (typeof customizeIcon === 'function') {\n    icon = customizeIcon(customizeIconProps);\n  } else {\n    icon = isVNode(customizeIcon) ? cloneVNode(customizeIcon as VNode) : customizeIcon;\n  }\n\n  return (\n    <span\n      class={className}\n      onMousedown={event => {\n        event.preventDefault();\n        if (onMousedown) {\n          onMousedown(event);\n        }\n      }}\n      style={{\n        userSelect: 'none',\n        WebkitUserSelect: 'none',\n      }}\n      unselectable=\"on\"\n      onClick={onClick}\n      aria-hidden\n    >\n      {icon !== undefined ? (\n        icon\n      ) : (\n        <span class={className.split(/\\s+/).map((cls: any) => `${cls}-icon`)}>\n          {slots.default?.()}\n        </span>\n      )}\n    </span>\n  );\n};\n\nTransBtn.inheritAttrs = false;\nTransBtn.displayName = 'TransBtn';\nTransBtn.props = {\n  class: String,\n  customizeIcon: PropTypes.any,\n  customizeIconProps: PropTypes.any,\n  onMousedown: Function as PropType<MouseEventHandler>,\n  onClick: Function as PropType<MouseEventHandler>,\n};\n\nexport default TransBtn;\n"
  },
  {
    "path": "components/vc-select/hooks/useBaseProps.ts",
    "content": "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { BaseSelectProps } from '../BaseSelect';\n\nexport interface BaseSelectContextProps extends BaseSelectProps {\n  triggerOpen: boolean;\n  multiple: boolean;\n  toggleOpen: (open?: boolean) => void;\n}\n\nconst BaseSelectContextKey: InjectionKey<BaseSelectContextProps> = Symbol('BaseSelectContextKey');\n\nexport function useProvideBaseSelectProps(props: BaseSelectContextProps) {\n  return provide(BaseSelectContextKey, props);\n}\n\nexport default function useBaseProps() {\n  return inject(BaseSelectContextKey, {} as BaseSelectContextProps);\n}\n"
  },
  {
    "path": "components/vc-select/hooks/useCache.ts",
    "content": "import type { Ref } from 'vue';\nimport { shallowRef, computed } from 'vue';\nimport type { RawValueType } from '../BaseSelect';\nimport type { DefaultOptionType, LabelInValueType } from '../Select';\n\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (\n  labeledValues: Ref<LabelInValueType[]>,\n  valueOptions: Ref<Map<RawValueType, DefaultOptionType>>,\n): [Ref<LabelInValueType[]>, (val: RawValueType) => DefaultOptionType] => {\n  const cacheRef = shallowRef({\n    values: new Map<RawValueType, LabelInValueType>(),\n    options: new Map<RawValueType, DefaultOptionType>(),\n  });\n\n  const filledLabeledValues = computed(() => {\n    const { values: prevValueCache, options: prevOptionCache } = cacheRef.value;\n\n    // Fill label by cache\n    const patchedValues = labeledValues.value.map(item => {\n      if (item.label === undefined) {\n        return {\n          ...item,\n          label: prevValueCache.get(item.value)?.label,\n        };\n      }\n\n      return item;\n    });\n\n    // Refresh cache\n    const valueCache = new Map<RawValueType, LabelInValueType>();\n    const optionCache = new Map<RawValueType, DefaultOptionType>();\n\n    patchedValues.forEach(item => {\n      valueCache.set(item.value, item);\n      optionCache.set(\n        item.value,\n        valueOptions.value.get(item.value) || prevOptionCache.get(item.value),\n      );\n    });\n\n    cacheRef.value.values = valueCache;\n    cacheRef.value.options = optionCache;\n\n    return patchedValues;\n  });\n\n  const getOption = (val: RawValueType) =>\n    valueOptions.value.get(val) || cacheRef.value.options.get(val);\n\n  return [filledLabeledValues, getOption];\n};\n"
  },
  {
    "path": "components/vc-select/hooks/useDelayReset.ts",
    "content": "import type { Ref } from 'vue';\nimport { onMounted, shallowRef } from 'vue';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset(\n  timeout = 10,\n): [Ref<Boolean>, (val: boolean, callback?: () => void) => void, () => void] {\n  const bool = shallowRef(false);\n  let delay: any;\n\n  const cancelLatest = () => {\n    clearTimeout(delay);\n  };\n\n  onMounted(() => {\n    cancelLatest();\n  });\n  const delaySetBool = (value: boolean, callback: () => void) => {\n    cancelLatest();\n    delay = setTimeout(() => {\n      bool.value = value;\n      if (callback) {\n        callback();\n      }\n    }, timeout);\n  };\n\n  return [bool, delaySetBool, cancelLatest];\n}\n"
  },
  {
    "path": "components/vc-select/hooks/useFilterOptions.ts",
    "content": "import { toArray } from '../utils/commonUtil';\nimport type {\n  FieldNames,\n  DefaultOptionType,\n  SelectProps,\n  FilterFunc,\n  BaseOptionType,\n} from '../Select';\nimport { injectPropsWithOption } from '../utils/valueUtil';\nimport type { Ref, ShallowRef } from 'vue';\nimport { computed } from 'vue';\n\nfunction includes(test: any, search: string) {\n  return toArray(test).join('').toUpperCase().includes(search);\n}\n\nexport default (\n  options: ShallowRef<DefaultOptionType[]>,\n  fieldNames: Ref<FieldNames>,\n  searchValue?: Ref<string>,\n  filterOption?: Ref<SelectProps['filterOption']>,\n  optionFilterProp?: Ref<string>,\n) =>\n  computed(() => {\n    const searchValueVal = searchValue.value;\n    const optionFilterPropValue = optionFilterProp?.value;\n    const filterOptionValue = filterOption?.value;\n    if (!searchValueVal || filterOptionValue === false) {\n      return options.value;\n    }\n    const { options: fieldOptions, label: fieldLabel, value: fieldValue } = fieldNames.value;\n    const filteredOptions: DefaultOptionType[] = [];\n\n    const customizeFilter = typeof filterOptionValue === 'function';\n\n    const upperSearch = searchValueVal.toUpperCase();\n    const filterFunc = customizeFilter\n      ? (filterOptionValue as FilterFunc<BaseOptionType>)\n      : (_: string, option: DefaultOptionType) => {\n          // Use provided `optionFilterProp`\n          if (optionFilterPropValue) {\n            return includes(option[optionFilterPropValue], upperSearch);\n          }\n\n          // Auto select `label` or `value` by option type\n          if (option[fieldOptions]) {\n            // hack `fieldLabel` since `OptionGroup` children is not `label`\n            return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n          }\n\n          return includes(option[fieldValue], upperSearch);\n        };\n\n    const wrapOption: (opt: DefaultOptionType) => DefaultOptionType = customizeFilter\n      ? opt => injectPropsWithOption(opt)\n      : opt => opt;\n\n    options.value.forEach(item => {\n      // Group should check child options\n      if (item[fieldOptions]) {\n        // Check group first\n        const matchGroup = filterFunc(searchValueVal, wrapOption(item));\n        if (matchGroup) {\n          filteredOptions.push(item);\n        } else {\n          // Check option\n          const subOptions = item[fieldOptions].filter((subItem: DefaultOptionType) =>\n            filterFunc(searchValueVal, wrapOption(subItem)),\n          );\n          if (subOptions.length) {\n            filteredOptions.push({\n              ...item,\n              [fieldOptions]: subOptions,\n            });\n          }\n        }\n\n        return;\n      }\n\n      if (filterFunc(searchValueVal, wrapOption(item))) {\n        filteredOptions.push(item);\n      }\n    });\n    return filteredOptions;\n  });\n"
  },
  {
    "path": "components/vc-select/hooks/useId.ts",
    "content": "import { ref } from 'vue';\nimport canUseDom from '../../_util/canUseDom';\n\nlet uuid = 0;\n\n/** Is client side and not jsdom */\nexport const isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID(): number | string {\n  let retId: string | number;\n\n  // Test never reach\n  /* istanbul ignore if */\n  if (isBrowserClient) {\n    retId = uuid;\n    uuid += 1;\n  } else {\n    retId = 'TEST_OR_SSR';\n  }\n\n  return retId;\n}\n\nexport default function useId(id = ref('')) {\n  // Inner id for accessibility usage. Only work in client side\n  const innerId = `rc_select_${getUUID()}`;\n\n  return id.value || innerId;\n}\n"
  },
  {
    "path": "components/vc-select/hooks/useLock.ts",
    "content": "import { onBeforeUnmount } from 'vue';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock(duration = 250): [() => boolean | null, (lock: boolean) => void] {\n  let lock: boolean | null = null;\n  let timeout: any;\n\n  onBeforeUnmount(() => {\n    clearTimeout(timeout);\n  });\n\n  function doLock(locked: boolean) {\n    if (locked || lock === null) {\n      lock = locked;\n    }\n\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      lock = null;\n    }, duration);\n  }\n\n  return [() => lock, doLock];\n}\n"
  },
  {
    "path": "components/vc-select/hooks/useOptions.ts",
    "content": "import type { Ref } from 'vue';\nimport { toRaw, shallowRef, watchEffect, watch } from 'vue';\nimport type { FieldNames, RawValueType } from '../Select';\nimport { convertChildrenToData } from '../utils/legacyUtil';\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nexport default function useOptions<OptionType>(\n  options: Ref<OptionType[]>,\n  children: Ref<any>,\n  fieldNames: Ref<FieldNames>,\n) {\n  const mergedOptions = shallowRef();\n  const valueOptions = shallowRef();\n  const labelOptions = shallowRef();\n  const tempMergedOptions = shallowRef([]);\n  watch(\n    [options, children],\n    () => {\n      if (options.value) {\n        tempMergedOptions.value = toRaw(options.value).slice();\n      } else {\n        tempMergedOptions.value = convertChildrenToData(children.value);\n      }\n    },\n    { immediate: true, deep: true },\n  );\n  watchEffect(() => {\n    const newOptions = tempMergedOptions.value;\n\n    const newValueOptions = new Map<RawValueType, OptionType>();\n    const newLabelOptions = new Map<any, OptionType>();\n    const fieldNamesValue = fieldNames.value;\n    function dig(optionList: OptionType[], isChildren = false) {\n      // for loop to speed up collection speed\n      for (let i = 0; i < optionList.length; i += 1) {\n        const option = optionList[i];\n        if (!option[fieldNamesValue.options] || isChildren) {\n          newValueOptions.set(option[fieldNamesValue.value], option);\n          newLabelOptions.set(option[fieldNamesValue.label], option);\n        } else {\n          dig(option[fieldNamesValue.options], true);\n        }\n      }\n    }\n    dig(newOptions);\n    mergedOptions.value = newOptions;\n    valueOptions.value = newValueOptions;\n    labelOptions.value = newLabelOptions;\n  });\n  return {\n    options: mergedOptions,\n    valueOptions,\n    labelOptions,\n  };\n}\n"
  },
  {
    "path": "components/vc-select/hooks/useSelectTriggerControl.ts",
    "content": "import type { Ref } from 'vue';\nimport { onBeforeUnmount, onMounted } from 'vue';\n\nexport default function useSelectTriggerControl(\n  refs: Ref[],\n  open: Ref<boolean>,\n  triggerOpen: (open: boolean) => void,\n) {\n  function onGlobalMouseDown(event: MouseEvent) {\n    let target = event.target as HTMLElement;\n\n    if (target.shadowRoot && event.composed) {\n      target = (event.composedPath()[0] || target) as HTMLElement;\n    }\n    const elements = [refs[0]?.value, refs[1]?.value?.getPopupElement()];\n    if (\n      open.value &&\n      elements.every(element => element && !element.contains(target) && element !== target)\n    ) {\n      // Should trigger close\n      triggerOpen(false);\n    }\n  }\n\n  onMounted(() => {\n    window.addEventListener('mousedown', onGlobalMouseDown);\n  });\n\n  onBeforeUnmount(() => {\n    window.removeEventListener('mousedown', onGlobalMouseDown);\n  });\n}\n"
  },
  {
    "path": "components/vc-select/index.ts",
    "content": "// base rc-select 14.1.1\nimport type { SelectProps } from './Select';\nimport Select, { selectProps } from './Select';\nimport Option from './Option';\nimport OptGroup from './OptGroup';\nimport BaseSelect from './BaseSelect';\nimport type { BaseSelectProps, BaseSelectRef, BaseSelectPropsWithoutPrivate } from './BaseSelect';\nimport useBaseProps from './hooks/useBaseProps';\n\nexport { Option, OptGroup, selectProps, BaseSelect, useBaseProps };\nexport type { BaseSelectProps, BaseSelectRef, BaseSelectPropsWithoutPrivate, SelectProps };\n\nexport default Select;\n"
  },
  {
    "path": "components/vc-select/interface.ts",
    "content": "import type { Key } from '../_util/type';\nimport type { RawValueType } from './BaseSelect';\n\nexport interface FlattenOptionData<OptionType> {\n  label?: any;\n  data: OptionType;\n  key: Key;\n  value?: RawValueType;\n  groupOption?: boolean;\n  group?: boolean;\n}\n"
  },
  {
    "path": "components/vc-select/utils/commonUtil.ts",
    "content": "export function toArray<T>(value: T | T[]): T[] {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  return value !== undefined ? [value] : [];\n}\n\nexport const isClient =\n  typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport const isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\n"
  },
  {
    "path": "components/vc-select/utils/keyUtil.ts",
    "content": "import KeyCode from '../../_util/KeyCode';\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode: number): boolean {\n  return ![\n    // System function button\n    KeyCode.ESC,\n    KeyCode.SHIFT,\n    KeyCode.BACKSPACE,\n    KeyCode.TAB,\n    KeyCode.WIN_KEY,\n    KeyCode.ALT,\n    KeyCode.META,\n    KeyCode.WIN_KEY_RIGHT,\n    KeyCode.CTRL,\n    KeyCode.SEMICOLON,\n    KeyCode.EQUALS,\n    KeyCode.CAPS_LOCK,\n    KeyCode.CONTEXT_MENU,\n    // F1-F12\n    KeyCode.F1,\n    KeyCode.F2,\n    KeyCode.F3,\n    KeyCode.F4,\n    KeyCode.F5,\n    KeyCode.F6,\n    KeyCode.F7,\n    KeyCode.F8,\n    KeyCode.F9,\n    KeyCode.F10,\n    KeyCode.F11,\n    KeyCode.F12,\n  ].includes(currentKeyCode);\n}\n"
  },
  {
    "path": "components/vc-select/utils/legacyUtil.ts",
    "content": "import { flattenChildren, isValidElement } from '../../_util/props-util';\nimport type { VNode } from 'vue';\nimport type { BaseOptionType, DefaultOptionType } from '../Select';\nimport type { VueNode } from '../../_util/type';\n\nfunction convertNodeToOption<OptionType extends BaseOptionType = DefaultOptionType>(\n  node: VNode,\n): OptionType {\n  const {\n    key,\n    children,\n    props: { value, disabled, ...restProps },\n  } = node as Omit<VNode, 'key'> & {\n    children: { default?: () => any };\n    key: string | number;\n  };\n  const child = children?.default;\n  return {\n    key,\n    value: value !== undefined ? value : key,\n    children: child,\n    disabled: disabled || disabled === '', // support <a-select-option disabled />\n    ...(restProps as any),\n  };\n}\n\nexport function convertChildrenToData<OptionType extends BaseOptionType = DefaultOptionType>(\n  nodes: VueNode[],\n  optionOnly = false,\n): OptionType[] {\n  const dd = flattenChildren(nodes as [])\n    .map((node: VNode, index: number): OptionType | null => {\n      if (!isValidElement(node) || !node.type) {\n        return null;\n      }\n\n      const {\n        type: { isSelectOptGroup },\n        key,\n        children,\n        props,\n      } = node as VNode & {\n        type: { isSelectOptGroup?: boolean };\n        children: { default?: () => any; label?: () => any };\n      };\n\n      if (optionOnly || !isSelectOptGroup) {\n        return convertNodeToOption(node);\n      }\n      const child = children && children.default ? children.default() : undefined;\n      const label = props?.label || children.label?.() || key;\n      return {\n        key: `__RC_SELECT_GRP__${key === null ? index : String(key)}__`,\n        ...props,\n        label,\n        options: convertChildrenToData(child || []),\n      } as any;\n    })\n    .filter(data => data);\n  return dd;\n}\n"
  },
  {
    "path": "components/vc-select/utils/platformUtil.ts",
    "content": "/* istanbul ignore file */\nexport function isPlatformMac(): boolean {\n  return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}\n"
  },
  {
    "path": "components/vc-select/utils/valueUtil.ts",
    "content": "import type { BaseOptionType, DefaultOptionType, RawValueType, FieldNames } from '../Select';\nimport { warning } from '../../vc-util/warning';\nimport type { FlattenOptionData } from '../interface';\n\nfunction getKey(data: BaseOptionType, index: number, fieldNames?: FieldNames) {\n  const { key } = data;\n  let value: RawValueType;\n\n  if (fieldNames && fieldNames.value && data[fieldNames.value] !== undefined) {\n    ({ [fieldNames.value]: value } = data);\n  } else if ('value' in data) {\n    ({ value } = data);\n  }\n\n  if (key !== null && key !== undefined) {\n    return key;\n  }\n  if (value !== undefined) {\n    return value;\n  }\n  return `rc-index-key-${index}`;\n}\n\nexport function fillFieldNames(fieldNames: FieldNames | undefined, childrenAsData: boolean) {\n  const { label, value, options } = fieldNames || {};\n\n  return {\n    label: label || (childrenAsData ? 'children' : 'label'),\n    value: value || 'value',\n    options: options || 'options',\n  };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions<OptionType extends BaseOptionType = DefaultOptionType>(\n  options: OptionType[],\n  { fieldNames, childrenAsData }: { fieldNames?: FieldNames; childrenAsData?: boolean } = {},\n): FlattenOptionData<OptionType>[] {\n  const flattenList: FlattenOptionData<OptionType>[] = [];\n\n  const {\n    label: fieldLabel,\n    value: fieldValue,\n    options: fieldOptions,\n  } = fillFieldNames(fieldNames, false);\n\n  function dig(list: OptionType[], isGroupOption: boolean) {\n    list.forEach(data => {\n      const label = data[fieldLabel];\n\n      if (isGroupOption || !(fieldOptions in data)) {\n        const value = data[fieldValue];\n        // Option\n        flattenList.push({\n          key: getKey(data, flattenList.length, fieldNames),\n          groupOption: isGroupOption,\n          data,\n          label,\n          value,\n        });\n      } else {\n        let grpLabel = label;\n        if (grpLabel === undefined && childrenAsData) {\n          grpLabel = data.label;\n        }\n        // Option Group\n        flattenList.push({\n          key: getKey(data, flattenList.length, fieldNames),\n          group: true,\n          data,\n          label: grpLabel,\n        });\n\n        dig(data[fieldOptions], true);\n      }\n    });\n  }\n\n  dig(options, false);\n\n  return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption<T extends object>(option: T): T {\n  const newOption = { ...option };\n  if (!('props' in newOption)) {\n    Object.defineProperty(newOption, 'props', {\n      get() {\n        warning(\n          false,\n          'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.',\n        );\n        return newOption;\n      },\n    });\n  }\n\n  return newOption;\n}\n\nexport function getSeparatedContent(text: string, tokens: string[]): string[] {\n  if (!tokens || !tokens.length) {\n    return null;\n  }\n\n  let match = false;\n\n  function separate(str: string, [token, ...restTokens]: string[]) {\n    if (!token) {\n      return [str];\n    }\n\n    const list = str.split(token);\n    match = match || list.length > 1;\n\n    return list\n      .reduce((prevList, unitStr) => [...prevList, ...separate(unitStr, restTokens)], [])\n      .filter(unit => unit);\n  }\n\n  const list = separate(text, tokens);\n  return match ? list : null;\n}\n"
  },
  {
    "path": "components/vc-select/utils/warningPropsUtil.ts",
    "content": "import warning, { noteOnce } from '../../vc-util/warning';\nimport { convertChildrenToData } from './legacyUtil';\nimport { toArray } from './commonUtil';\nimport { isValidElement } from '../../_util/props-util';\nimport type { VNode } from 'vue';\nimport type { RawValueType, LabelInValueType, SelectProps } from '../Select';\nimport { isMultiple } from '../BaseSelect';\n\nfunction warningProps(props: SelectProps) {\n  const {\n    mode,\n    options,\n    children,\n    backfill,\n    allowClear,\n    placeholder,\n    getInputElement,\n    showSearch,\n    onSearch,\n    defaultOpen,\n    autofocus,\n    labelInValue,\n    value,\n    inputValue,\n    optionLabelProp,\n  } = props;\n\n  const multiple = isMultiple(mode);\n  const mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n  const mergedOptions = options || convertChildrenToData(children);\n\n  // `tags` should not set option as disabled\n  warning(\n    mode !== 'tags' || mergedOptions.every((opt: { disabled?: boolean }) => !opt.disabled),\n    'Please avoid setting option to disabled in tags mode since user can always type text as tag.',\n  );\n\n  // `combobox` should not use `optionLabelProp`\n  warning(\n    mode !== 'combobox' || !optionLabelProp,\n    '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.',\n  );\n\n  // Only `combobox` support `backfill`\n  warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n\n  // Only `combobox` support `getInputElement`\n  warning(\n    mode === 'combobox' || !getInputElement,\n    '`getInputElement` only work with `combobox` mode.',\n  );\n\n  // Customize `getInputElement` should not use `allowClear` & `placeholder`\n  noteOnce(\n    mode !== 'combobox' || !getInputElement || !allowClear || !placeholder,\n    'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.',\n  );\n\n  // `onSearch` should use in `combobox` or `showSearch`\n  if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags') {\n    warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n  }\n\n  noteOnce(\n    !defaultOpen || autofocus,\n    '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autofocus` if needed.',\n  );\n\n  if (value !== undefined && value !== null) {\n    const values = toArray<RawValueType | LabelInValueType>(value);\n    warning(\n      !labelInValue ||\n        values.every(val => typeof val === 'object' && ('key' in val || 'value' in val)),\n      '`value` should in shape of `{ value: string | number, label?: any }` when you set `labelInValue` to `true`',\n    );\n\n    warning(\n      !multiple || Array.isArray(value),\n      '`value` should be array when `mode` is `multiple` or `tags`',\n    );\n  }\n\n  // Syntactic sugar should use correct children type\n  if (children) {\n    let invalidateChildType = null;\n    children.some((node: any) => {\n      if (!isValidElement(node) || !node.type) {\n        return false;\n      }\n\n      const { type } = node as { type: { isSelectOption?: boolean; isSelectOptGroup?: boolean } };\n\n      if (type.isSelectOption) {\n        return false;\n      }\n      if (type.isSelectOptGroup) {\n        const childs = node.children?.default() || [];\n        const allChildrenValid = childs.every((subNode: VNode) => {\n          if (\n            !isValidElement(subNode) ||\n            !node.type ||\n            (subNode.type as { isSelectOption?: boolean }).isSelectOption\n          ) {\n            return true;\n          }\n          invalidateChildType = subNode.type;\n          return false;\n        });\n\n        if (allChildrenValid) {\n          return false;\n        }\n        return true;\n      }\n      invalidateChildType = type;\n      return true;\n    });\n\n    if (invalidateChildType) {\n      warning(\n        false,\n        `\\`children\\` should be \\`Select.Option\\` or \\`Select.OptGroup\\` instead of \\`${\n          invalidateChildType.displayName || invalidateChildType.name || invalidateChildType\n        }\\`.`,\n      );\n    }\n\n    warning(\n      inputValue === undefined,\n      '`inputValue` is deprecated, please use `searchValue` instead.',\n    );\n  }\n}\n\nexport default warningProps;\n"
  },
  {
    "path": "components/vc-slick/arrows.jsx",
    "content": "import classnames from '../_util/classNames';\nimport { cloneElement } from '../_util/vnode';\nimport { canGoNext } from './utils/innerSliderUtils';\n\nfunction noop() {}\n\nfunction handler(options, handle, e) {\n  if (e) {\n    e.preventDefault();\n  }\n  handle(options, e);\n}\n\nconst PrevArrow = (_, { attrs }) => {\n  const { clickHandler, infinite, currentSlide, slideCount, slidesToShow } = attrs;\n  const prevClasses = { 'slick-arrow': true, 'slick-prev': true };\n  let prevHandler = function (e) {\n    handler({ message: 'previous' }, clickHandler, e);\n  };\n\n  if (!infinite && (currentSlide === 0 || slideCount <= slidesToShow)) {\n    prevClasses['slick-disabled'] = true;\n    prevHandler = noop;\n  }\n\n  const prevArrowProps = {\n    key: '0',\n    'data-role': 'none',\n    class: prevClasses,\n    style: { display: 'block' },\n    onClick: prevHandler,\n  };\n  const customProps = {\n    currentSlide,\n    slideCount,\n  };\n  let prevArrow;\n\n  if (attrs.prevArrow) {\n    prevArrow = cloneElement(\n      attrs.prevArrow({\n        ...prevArrowProps,\n        ...customProps,\n      }),\n      {\n        key: '0',\n        class: prevClasses,\n        style: { display: 'block' },\n        onClick: prevHandler,\n      },\n      false,\n    );\n  } else {\n    prevArrow = (\n      <button key=\"0\" type=\"button\" {...prevArrowProps}>\n        {' '}\n        Previous\n      </button>\n    );\n  }\n  return prevArrow;\n};\n\nPrevArrow.inheritAttrs = false;\n\nconst NextArrow = (_, { attrs }) => {\n  const { clickHandler, currentSlide, slideCount } = attrs;\n\n  const nextClasses = { 'slick-arrow': true, 'slick-next': true };\n  let nextHandler = function (e) {\n    handler({ message: 'next' }, clickHandler, e);\n  };\n  if (!canGoNext(attrs)) {\n    nextClasses['slick-disabled'] = true;\n    nextHandler = noop;\n  }\n\n  const nextArrowProps = {\n    key: '1',\n    'data-role': 'none',\n    class: classnames(nextClasses),\n    style: { display: 'block' },\n    onClick: nextHandler,\n  };\n  const customProps = {\n    currentSlide,\n    slideCount,\n  };\n  let nextArrow;\n\n  if (attrs.nextArrow) {\n    nextArrow = cloneElement(\n      attrs.nextArrow({\n        ...nextArrowProps,\n        ...customProps,\n      }),\n      {\n        key: '1',\n        class: classnames(nextClasses),\n        style: { display: 'block' },\n        onClick: nextHandler,\n      },\n      false,\n    );\n  } else {\n    nextArrow = (\n      <button key=\"1\" type=\"button\" {...nextArrowProps}>\n        {' '}\n        Next\n      </button>\n    );\n  }\n\n  return nextArrow;\n};\n\nNextArrow.inheritAttrs = false;\n\nexport { PrevArrow, NextArrow };\n"
  },
  {
    "path": "components/vc-slick/default-props.js",
    "content": "import PropTypes from '../_util/vue-types';\n\nconst defaultProps = {\n  accessibility: { type: Boolean, default: true },\n  // 自定义高度\n  adaptiveHeight: { type: Boolean, default: false },\n  afterChange: PropTypes.any.def(null),\n  arrows: { type: Boolean, default: true },\n  autoplay: { type: Boolean, default: false },\n  autoplaySpeed: PropTypes.number.def(3000),\n  beforeChange: PropTypes.any.def(null),\n  centerMode: { type: Boolean, default: false },\n  centerPadding: PropTypes.string.def('50px'),\n  cssEase: PropTypes.string.def('ease'),\n  dots: { type: Boolean, default: false },\n  dotsClass: PropTypes.string.def('slick-dots'),\n  draggable: { type: Boolean, default: true },\n  unslick: { type: Boolean, default: false },\n  easing: PropTypes.string.def('linear'),\n  edgeFriction: PropTypes.number.def(0.35),\n  fade: { type: Boolean, default: false },\n  focusOnSelect: { type: Boolean, default: false },\n  infinite: { type: Boolean, default: true },\n  initialSlide: PropTypes.number.def(0),\n  lazyLoad: PropTypes.any.def(null),\n  verticalSwiping: { type: Boolean, default: false },\n  asNavFor: PropTypes.any.def(null),\n  // 圆点hover是否暂停\n  pauseOnDotsHover: { type: Boolean, default: false },\n  // focus是否暂停\n  pauseOnFocus: { type: Boolean, default: false },\n  // hover是否暂停\n  pauseOnHover: { type: Boolean, default: true },\n  responsive: PropTypes.array,\n  rows: PropTypes.number.def(1),\n  rtl: { type: Boolean, default: false },\n  slide: PropTypes.string.def('div'),\n  slidesPerRow: PropTypes.number.def(1),\n  slidesToScroll: PropTypes.number.def(1),\n  slidesToShow: PropTypes.number.def(1),\n  speed: PropTypes.number.def(500),\n  swipe: { type: Boolean, default: true },\n  swipeEvent: PropTypes.any.def(null),\n  swipeToSlide: { type: Boolean, default: false },\n  touchMove: { type: Boolean, default: true },\n  touchThreshold: PropTypes.number.def(5),\n  useCSS: { type: Boolean, default: true },\n  useTransform: { type: Boolean, default: true },\n  variableWidth: { type: Boolean, default: false },\n  vertical: { type: Boolean, default: false },\n  waitForAnimate: { type: Boolean, default: true },\n  children: PropTypes.array,\n  __propsSymbol__: PropTypes.any,\n};\n\nexport default defaultProps;\n"
  },
  {
    "path": "components/vc-slick/dots.jsx",
    "content": "import classnames from '../_util/classNames';\nimport { cloneElement } from '../_util/vnode';\nimport { clamp } from './utils/innerSliderUtils';\n\nconst getDotCount = function (spec) {\n  let dots;\n\n  if (spec.infinite) {\n    dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n  } else {\n    dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n  }\n\n  return dots;\n};\n\nconst Dots = (_, { attrs }) => {\n  const {\n    slideCount,\n    slidesToScroll,\n    slidesToShow,\n    infinite,\n    currentSlide,\n    appendDots,\n    customPaging,\n    clickHandler,\n    dotsClass,\n    onMouseenter,\n    onMouseover,\n    onMouseleave,\n  } = attrs;\n  const dotCount = getDotCount({\n    slideCount,\n    slidesToScroll,\n    slidesToShow,\n    infinite,\n  });\n\n  // Apply join & split to Array to pre-fill it for IE8\n  //\n  // Credit: http://stackoverflow.com/a/13735425/1849458\n  const mouseEvents = { onMouseenter, onMouseover, onMouseleave };\n  let dots = [];\n  for (let i = 0; i < dotCount; i++) {\n    const _rightBound = (i + 1) * slidesToScroll - 1;\n    const rightBound = infinite ? _rightBound : clamp(_rightBound, 0, slideCount - 1);\n    const _leftBound = rightBound - (slidesToScroll - 1);\n    const leftBound = infinite ? _leftBound : clamp(_leftBound, 0, slideCount - 1);\n\n    const className = classnames({\n      'slick-active': infinite\n        ? currentSlide >= leftBound && currentSlide <= rightBound\n        : currentSlide === leftBound,\n    });\n\n    const dotOptions = {\n      message: 'dots',\n      index: i,\n      slidesToScroll,\n      currentSlide,\n    };\n\n    function onClick(e) {\n      // In Autoplay the focus stays on clicked button even after transition\n      // to next slide. That only goes away by click somewhere outside\n      if (e) {\n        e.preventDefault();\n      }\n      clickHandler(dotOptions);\n    }\n    dots = dots.concat(\n      <li key={i} class={className}>\n        {cloneElement(customPaging({ i }), { onClick })}\n      </li>,\n    );\n  }\n\n  return cloneElement(appendDots({ dots }), {\n    class: dotsClass,\n    ...mouseEvents,\n  });\n};\n\nDots.inheritAttrs = false;\n\nexport default Dots;\n"
  },
  {
    "path": "components/vc-slick/index.js",
    "content": "// base react-slick 0.28.2\nimport Slider from './slider';\n\nexport default Slider;\n"
  },
  {
    "path": "components/vc-slick/initial-state.js",
    "content": "const initialState = {\n  animating: false,\n  autoplaying: null,\n  currentDirection: 0,\n  currentLeft: null,\n  currentSlide: 0,\n  direction: 1,\n  dragging: false,\n  edgeDragged: false,\n  initialized: false,\n  lazyLoadedList: [],\n  listHeight: null,\n  listWidth: null,\n  scrolling: false,\n  slideCount: null,\n  slideHeight: null,\n  slideWidth: null,\n  swipeLeft: null,\n  swiped: false, // used by swipeEvent. differentites between touch and swipe.\n  swiping: false,\n  touchObject: { startX: 0, startY: 0, curX: 0, curY: 0 },\n  trackStyle: {},\n  trackWidth: 0,\n  targetSlide: 0,\n};\n\nexport default initialState;\n"
  },
  {
    "path": "components/vc-slick/inner-slider.jsx",
    "content": "import debounce from 'lodash-es/debounce';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport classnames from '../_util/classNames';\nimport BaseMixin from '../_util/BaseMixin';\nimport defaultProps from './default-props';\nimport initialState from './initial-state';\nimport {\n  getOnDemandLazySlides,\n  extractObject,\n  initializedState,\n  getHeight,\n  canGoNext,\n  slideHandler,\n  changeSlide,\n  keyHandler,\n  swipeStart,\n  swipeMove,\n  swipeEnd,\n  getPreClones,\n  getPostClones,\n  getTrackLeft,\n  getTrackCSS,\n} from './utils/innerSliderUtils';\nimport Track from './track';\nimport Dots from './dots';\nimport { PrevArrow, NextArrow } from './arrows';\nimport supportsPassive from '../_util/supportsPassive';\n\nfunction noop() {}\n\nexport default {\n  name: 'InnerSlider',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: {\n    ...defaultProps,\n  },\n  data() {\n    this.preProps = { ...this.$props };\n    this.list = null;\n    this.track = null;\n    this.callbackTimers = [];\n    this.clickable = true;\n    this.debouncedResize = null;\n    const ssrState = this.ssrInit();\n    return {\n      ...initialState,\n      currentSlide: this.initialSlide,\n      slideCount: this.children.length,\n      ...ssrState,\n    };\n  },\n  watch: {\n    autoplay(newValue, oldValue) {\n      if (!oldValue && newValue) {\n        this.handleAutoPlay('playing');\n      } else if (newValue) {\n        this.handleAutoPlay('update');\n      } else {\n        this.pause('paused');\n      }\n    },\n    __propsSymbol__() {\n      const nextProps = this.$props;\n      const spec = {\n        listRef: this.list,\n        trackRef: this.track,\n        ...nextProps,\n        ...this.$data,\n      };\n      let setTrackStyle = false;\n      for (const key of Object.keys(this.preProps)) {\n        if (!nextProps.hasOwnProperty(key)) {\n          setTrackStyle = true;\n          break;\n        }\n        if (\n          typeof nextProps[key] === 'object' ||\n          typeof nextProps[key] === 'function' ||\n          typeof nextProps[key] === 'symbol'\n        ) {\n          continue;\n        }\n        if (nextProps[key] !== this.preProps[key]) {\n          setTrackStyle = true;\n          break;\n        }\n      }\n      this.updateState(spec, setTrackStyle, () => {\n        if (this.currentSlide >= nextProps.children.length) {\n          this.changeSlide({\n            message: 'index',\n            index: nextProps.children.length - nextProps.slidesToShow,\n            currentSlide: this.currentSlide,\n          });\n        }\n        if (!this.preProps.autoplay && nextProps.autoplay) {\n          this.handleAutoPlay('playing');\n        } else if (nextProps.autoplay) {\n          this.handleAutoPlay('update');\n        } else {\n          this.pause('paused');\n        }\n      });\n      this.preProps = { ...nextProps };\n    },\n  },\n  mounted() {\n    this.__emit('init');\n    if (this.lazyLoad) {\n      const slidesToLoad = getOnDemandLazySlides({\n        ...this.$props,\n        ...this.$data,\n      });\n      if (slidesToLoad.length > 0) {\n        this.setState(prevState => ({\n          lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad),\n        }));\n        this.__emit('lazyLoad', slidesToLoad);\n      }\n    }\n    this.$nextTick(() => {\n      const spec = {\n        listRef: this.list,\n        trackRef: this.track,\n        children: this.children,\n        ...this.$props,\n      };\n      this.updateState(spec, true, () => {\n        this.adaptHeight();\n        this.autoplay && this.handleAutoPlay('playing');\n      });\n      if (this.lazyLoad === 'progressive') {\n        this.lazyLoadTimer = setInterval(this.progressiveLazyLoad, 1000);\n      }\n      this.ro = new ResizeObserver(() => {\n        if (this.animating) {\n          this.onWindowResized(false); // don't set trackStyle hence don't break animation\n          this.callbackTimers.push(setTimeout(() => this.onWindowResized(), this.speed));\n        } else {\n          this.onWindowResized();\n        }\n      });\n      this.ro.observe(this.list);\n      document.querySelectorAll &&\n        Array.prototype.forEach.call(document.querySelectorAll('.slick-slide'), slide => {\n          slide.onfocus = this.$props.pauseOnFocus ? this.onSlideFocus : null;\n          slide.onblur = this.$props.pauseOnFocus ? this.onSlideBlur : null;\n        });\n      if (window.addEventListener) {\n        window.addEventListener('resize', this.onWindowResized);\n      } else {\n        window.attachEvent('onresize', this.onWindowResized);\n      }\n    });\n  },\n  beforeUnmount() {\n    if (this.animationEndCallback) {\n      clearTimeout(this.animationEndCallback);\n    }\n    if (this.lazyLoadTimer) {\n      clearInterval(this.lazyLoadTimer);\n    }\n    if (this.callbackTimers.length) {\n      this.callbackTimers.forEach(timer => clearTimeout(timer));\n      this.callbackTimers = [];\n    }\n    if (window.addEventListener) {\n      window.removeEventListener('resize', this.onWindowResized);\n    } else {\n      window.detachEvent('onresize', this.onWindowResized);\n    }\n    if (this.autoplayTimer) {\n      clearInterval(this.autoplayTimer);\n    }\n    this.ro?.disconnect();\n  },\n  updated() {\n    this.checkImagesLoad();\n    this.__emit('reInit');\n    if (this.lazyLoad) {\n      const slidesToLoad = getOnDemandLazySlides({\n        ...this.$props,\n        ...this.$data,\n      });\n      if (slidesToLoad.length > 0) {\n        this.setState(prevState => ({\n          lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad),\n        }));\n        this.__emit('lazyLoad');\n      }\n    }\n    // if (this.props.onLazyLoad) {\n    //   this.props.onLazyLoad([leftMostSlide])\n    // }\n    this.adaptHeight();\n  },\n  methods: {\n    listRefHandler(ref) {\n      this.list = ref;\n    },\n    trackRefHandler(ref) {\n      this.track = ref;\n    },\n    adaptHeight() {\n      if (this.adaptiveHeight && this.list) {\n        const elem = this.list.querySelector(`[data-index=\"${this.currentSlide}\"]`);\n        this.list.style.height = getHeight(elem) + 'px';\n      }\n    },\n    onWindowResized(setTrackStyle) {\n      if (this.debouncedResize) this.debouncedResize.cancel();\n      this.debouncedResize = debounce(() => this.resizeWindow(setTrackStyle), 50);\n      this.debouncedResize();\n    },\n    resizeWindow(setTrackStyle = true) {\n      const isTrackMounted = Boolean(this.track);\n      if (!isTrackMounted) return;\n      const spec = {\n        listRef: this.list,\n        trackRef: this.track,\n        children: this.children,\n        ...this.$props,\n        ...this.$data,\n      };\n      this.updateState(spec, setTrackStyle, () => {\n        if (this.autoplay) {\n          this.handleAutoPlay('update');\n        } else {\n          this.pause('paused');\n        }\n      });\n      // animating state should be cleared while resizing, otherwise autoplay stops working\n      this.setState({\n        animating: false,\n      });\n      clearTimeout(this.animationEndCallback);\n      delete this.animationEndCallback;\n    },\n    updateState(spec, setTrackStyle, callback) {\n      const updatedState = initializedState(spec);\n      spec = { ...spec, ...updatedState, slideIndex: updatedState.currentSlide };\n      const targetLeft = getTrackLeft(spec);\n      spec = { ...spec, left: targetLeft };\n      const trackStyle = getTrackCSS(spec);\n      if (setTrackStyle || this.children.length !== spec.children.length) {\n        updatedState['trackStyle'] = trackStyle;\n      }\n      this.setState(updatedState, callback);\n    },\n    ssrInit() {\n      const children = this.children;\n      if (this.variableWidth) {\n        let trackWidth = 0;\n        let trackLeft = 0;\n        const childrenWidths = [];\n        const preClones = getPreClones({\n          ...this.$props,\n          ...this.$data,\n          slideCount: children.length,\n        });\n        const postClones = getPostClones({\n          ...this.$props,\n          ...this.$data,\n          slideCount: children.length,\n        });\n        children.forEach(child => {\n          const childWidth = child.props.style?.width?.split('px')[0] || 0;\n          childrenWidths.push(childWidth);\n          trackWidth += childWidth;\n        });\n        for (let i = 0; i < preClones; i++) {\n          trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n          trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n        }\n        for (let i = 0; i < postClones; i++) {\n          trackWidth += childrenWidths[i];\n        }\n        for (let i = 0; i < this.currentSlide; i++) {\n          trackLeft += childrenWidths[i];\n        }\n        const trackStyle = {\n          width: trackWidth + 'px',\n          left: -trackLeft + 'px',\n        };\n        if (this.centerMode) {\n          const currentWidth = `${childrenWidths[this.currentSlide]}px`;\n          trackStyle.left = `calc(${trackStyle.left} + (100% - ${currentWidth}) / 2 ) `;\n        }\n        return {\n          trackStyle,\n        };\n      }\n      const childrenCount = children.length;\n      const spec = { ...this.$props, ...this.$data, slideCount: childrenCount };\n      const slideCount = getPreClones(spec) + getPostClones(spec) + childrenCount;\n      const trackWidth = (100 / this.slidesToShow) * slideCount;\n      const slideWidth = 100 / slideCount;\n      let trackLeft = (-slideWidth * (getPreClones(spec) + this.currentSlide) * trackWidth) / 100;\n      if (this.centerMode) {\n        trackLeft += (100 - (slideWidth * trackWidth) / 100) / 2;\n      }\n      const trackStyle = {\n        width: trackWidth + '%',\n        left: trackLeft + '%',\n      };\n      return {\n        slideWidth: slideWidth + '%',\n        trackStyle,\n      };\n    },\n    checkImagesLoad() {\n      const images =\n        (this.list &&\n          this.list.querySelectorAll &&\n          this.list.querySelectorAll('.slick-slide img')) ||\n        [];\n      const imagesCount = images.length;\n      let loadedCount = 0;\n      Array.prototype.forEach.call(images, image => {\n        const handler = () => ++loadedCount && loadedCount >= imagesCount && this.onWindowResized();\n        if (!image.onclick) {\n          image.onclick = () => image.parentNode.focus();\n        } else {\n          const prevClickHandler = image.onclick;\n          image.onclick = () => {\n            prevClickHandler();\n            image.parentNode.focus();\n          };\n        }\n        if (!image.onload) {\n          if (this.$props.lazyLoad) {\n            image.onload = () => {\n              this.adaptHeight();\n              this.callbackTimers.push(setTimeout(this.onWindowResized, this.speed));\n            };\n          } else {\n            image.onload = handler;\n            image.onerror = () => {\n              handler();\n              this.__emit('lazyLoadError');\n            };\n          }\n        }\n      });\n    },\n    progressiveLazyLoad() {\n      const slidesToLoad = [];\n      const spec = { ...this.$props, ...this.$data };\n      for (let index = this.currentSlide; index < this.slideCount + getPostClones(spec); index++) {\n        if (this.lazyLoadedList.indexOf(index) < 0) {\n          slidesToLoad.push(index);\n          break;\n        }\n      }\n      for (let index = this.currentSlide - 1; index >= -getPreClones(spec); index--) {\n        if (this.lazyLoadedList.indexOf(index) < 0) {\n          slidesToLoad.push(index);\n          break;\n        }\n      }\n      if (slidesToLoad.length > 0) {\n        this.setState(state => ({\n          lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad),\n        }));\n        this.__emit('lazyLoad', slidesToLoad);\n      } else {\n        if (this.lazyLoadTimer) {\n          clearInterval(this.lazyLoadTimer);\n          delete this.lazyLoadTimer;\n        }\n      }\n    },\n    slideHandler(index, dontAnimate = false) {\n      const { asNavFor, beforeChange, speed, afterChange } = this.$props;\n      const { state, nextState } = slideHandler({\n        index,\n        ...this.$props,\n        ...this.$data,\n        trackRef: this.track,\n        useCSS: this.useCSS && !dontAnimate,\n      });\n      if (!state) return;\n      beforeChange && beforeChange(this.currentSlide, state.currentSlide);\n      const slidesToLoad = state.lazyLoadedList.filter(\n        value => this.lazyLoadedList.indexOf(value) < 0,\n      );\n      if (this.$attrs.onLazyLoad && slidesToLoad.length > 0) {\n        this.__emit('lazyLoad', slidesToLoad);\n      }\n      if (!this.$props.waitForAnimate && this.animationEndCallback) {\n        clearTimeout(this.animationEndCallback);\n        afterChange && afterChange(this.currentSlide);\n        delete this.animationEndCallback;\n      }\n      this.setState(state, () => {\n        if (asNavFor && this.asNavForIndex !== index) {\n          this.asNavForIndex = index;\n          asNavFor.innerSlider.slideHandler(index);\n        }\n        if (!nextState) return;\n        this.animationEndCallback = setTimeout(() => {\n          const { animating, ...firstBatch } = nextState;\n          this.setState(firstBatch, () => {\n            this.callbackTimers.push(setTimeout(() => this.setState({ animating }), 10));\n            afterChange && afterChange(state.currentSlide);\n            delete this.animationEndCallback;\n          });\n        }, speed);\n      });\n    },\n    changeSlide(options, dontAnimate = false) {\n      const spec = { ...this.$props, ...this.$data };\n      const targetSlide = changeSlide(spec, options);\n      if (targetSlide !== 0 && !targetSlide) return;\n      if (dontAnimate === true) {\n        this.slideHandler(targetSlide, dontAnimate);\n      } else {\n        this.slideHandler(targetSlide);\n      }\n      this.$props.autoplay && this.handleAutoPlay('update');\n      if (this.$props.focusOnSelect) {\n        const nodes = this.list.querySelectorAll('.slick-current');\n        nodes[0] && nodes[0].focus();\n      }\n    },\n    clickHandler(e) {\n      if (this.clickable === false) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n      this.clickable = true;\n    },\n    keyHandler(e) {\n      const dir = keyHandler(e, this.accessibility, this.rtl);\n      dir !== '' && this.changeSlide({ message: dir });\n    },\n    selectHandler(options) {\n      this.changeSlide(options);\n    },\n    disableBodyScroll() {\n      const preventDefault = e => {\n        e = e || window.event;\n        if (e.preventDefault) e.preventDefault();\n        e.returnValue = false;\n      };\n      window.ontouchmove = preventDefault;\n    },\n    enableBodyScroll() {\n      window.ontouchmove = null;\n    },\n    swipeStart(e) {\n      if (this.verticalSwiping) {\n        this.disableBodyScroll();\n      }\n      const state = swipeStart(e, this.swipe, this.draggable);\n      state !== '' && this.setState(state);\n    },\n    swipeMove(e) {\n      const state = swipeMove(e, {\n        ...this.$props,\n        ...this.$data,\n        trackRef: this.track,\n        listRef: this.list,\n        slideIndex: this.currentSlide,\n      });\n      if (!state) return;\n      if (state['swiping']) {\n        this.clickable = false;\n      }\n      this.setState(state);\n    },\n    swipeEnd(e) {\n      const state = swipeEnd(e, {\n        ...this.$props,\n        ...this.$data,\n        trackRef: this.track,\n        listRef: this.list,\n        slideIndex: this.currentSlide,\n      });\n      if (!state) return;\n      const triggerSlideHandler = state['triggerSlideHandler'];\n      delete state['triggerSlideHandler'];\n      this.setState(state);\n      if (triggerSlideHandler === undefined) return;\n      this.slideHandler(triggerSlideHandler);\n      if (this.$props.verticalSwiping) {\n        this.enableBodyScroll();\n      }\n    },\n    touchEnd(e) {\n      this.swipeEnd(e);\n      this.clickable = true;\n    },\n    slickPrev() {\n      // this and fellow methods are wrapped in setTimeout\n      // to make sure initialize setState has happened before\n      // any of such methods are called\n      this.callbackTimers.push(setTimeout(() => this.changeSlide({ message: 'previous' }), 0));\n    },\n    slickNext() {\n      this.callbackTimers.push(setTimeout(() => this.changeSlide({ message: 'next' }), 0));\n    },\n    slickGoTo(slide, dontAnimate = false) {\n      slide = Number(slide);\n      if (isNaN(slide)) return '';\n      this.callbackTimers.push(\n        setTimeout(\n          () =>\n            this.changeSlide(\n              {\n                message: 'index',\n                index: slide,\n                currentSlide: this.currentSlide,\n              },\n              dontAnimate,\n            ),\n          0,\n        ),\n      );\n    },\n    play() {\n      let nextIndex;\n      if (this.rtl) {\n        nextIndex = this.currentSlide - this.slidesToScroll;\n      } else {\n        if (canGoNext({ ...this.$props, ...this.$data })) {\n          nextIndex = this.currentSlide + this.slidesToScroll;\n        } else {\n          return false;\n        }\n      }\n\n      this.slideHandler(nextIndex);\n    },\n    handleAutoPlay(playType) {\n      if (this.autoplayTimer) {\n        clearInterval(this.autoplayTimer);\n      }\n      const autoplaying = this.autoplaying;\n      if (playType === 'update') {\n        if (autoplaying === 'hovered' || autoplaying === 'focused' || autoplaying === 'paused') {\n          return;\n        }\n      } else if (playType === 'leave') {\n        if (autoplaying === 'paused' || autoplaying === 'focused') {\n          return;\n        }\n      } else if (playType === 'blur') {\n        if (autoplaying === 'paused' || autoplaying === 'hovered') {\n          return;\n        }\n      }\n      this.autoplayTimer = setInterval(this.play, this.autoplaySpeed + 50);\n      this.setState({ autoplaying: 'playing' });\n    },\n    pause(pauseType) {\n      if (this.autoplayTimer) {\n        clearInterval(this.autoplayTimer);\n        this.autoplayTimer = null;\n      }\n      const autoplaying = this.autoplaying;\n      if (pauseType === 'paused') {\n        this.setState({ autoplaying: 'paused' });\n      } else if (pauseType === 'focused') {\n        if (autoplaying === 'hovered' || autoplaying === 'playing') {\n          this.setState({ autoplaying: 'focused' });\n        }\n      } else {\n        // pauseType  is 'hovered'\n        if (autoplaying === 'playing') {\n          this.setState({ autoplaying: 'hovered' });\n        }\n      }\n    },\n    onDotsOver() {\n      this.autoplay && this.pause('hovered');\n    },\n    onDotsLeave() {\n      this.autoplay && this.autoplaying === 'hovered' && this.handleAutoPlay('leave');\n    },\n    onTrackOver() {\n      this.autoplay && this.pause('hovered');\n    },\n    onTrackLeave() {\n      this.autoplay && this.autoplaying === 'hovered' && this.handleAutoPlay('leave');\n    },\n    onSlideFocus() {\n      this.autoplay && this.pause('focused');\n    },\n    onSlideBlur() {\n      this.autoplay && this.autoplaying === 'focused' && this.handleAutoPlay('blur');\n    },\n    customPaging({ i }) {\n      return <button>{i + 1}</button>;\n    },\n    appendDots({ dots }) {\n      return <ul style={{ display: 'block' }}>{dots}</ul>;\n    },\n  },\n  render() {\n    const className = classnames('slick-slider', this.$attrs.class, {\n      'slick-vertical': this.vertical,\n      'slick-initialized': true,\n    });\n    const spec = { ...this.$props, ...this.$data };\n    let trackProps = extractObject(spec, [\n      'fade',\n      'cssEase',\n      'speed',\n      'infinite',\n      'centerMode',\n      'focusOnSelect',\n      'currentSlide',\n      'lazyLoad',\n      'lazyLoadedList',\n      'rtl',\n      'slideWidth',\n      'slideHeight',\n      'listHeight',\n      'vertical',\n      'slidesToShow',\n      'slidesToScroll',\n      'slideCount',\n      'trackStyle',\n      'variableWidth',\n      'unslick',\n      'centerPadding',\n      'targetSlide',\n      'useCSS',\n    ]);\n    const { pauseOnHover } = this.$props;\n    trackProps = {\n      ...trackProps,\n      focusOnSelect: this.focusOnSelect && this.clickable ? this.selectHandler : null,\n      ref: this.trackRefHandler,\n      onMouseleave: pauseOnHover ? this.onTrackLeave : noop,\n      onMouseover: pauseOnHover ? this.onTrackOver : noop,\n    };\n\n    let dots;\n    if (this.dots === true && this.slideCount >= this.slidesToShow) {\n      let dotProps = extractObject(spec, [\n        'dotsClass',\n        'slideCount',\n        'slidesToShow',\n        'currentSlide',\n        'slidesToScroll',\n        'clickHandler',\n        'children',\n        'infinite',\n        'appendDots',\n      ]);\n      dotProps.customPaging = this.customPaging;\n      dotProps.appendDots = this.appendDots;\n      const { customPaging, appendDots } = this.$slots;\n      if (customPaging) {\n        dotProps.customPaging = customPaging;\n      }\n      if (appendDots) {\n        dotProps.appendDots = appendDots;\n      }\n      const { pauseOnDotsHover } = this.$props;\n      dotProps = {\n        ...dotProps,\n        clickHandler: this.changeSlide,\n        onMouseover: pauseOnDotsHover ? this.onDotsOver : noop,\n        onMouseleave: pauseOnDotsHover ? this.onDotsLeave : noop,\n      };\n      dots = <Dots {...dotProps} />;\n    }\n\n    let prevArrow, nextArrow;\n    const arrowProps = extractObject(spec, [\n      'infinite',\n      'centerMode',\n      'currentSlide',\n      'slideCount',\n      'slidesToShow',\n    ]);\n    arrowProps.clickHandler = this.changeSlide;\n    const { prevArrow: prevArrowCustom, nextArrow: nextArrowCustom } = this.$slots;\n    if (prevArrowCustom) {\n      arrowProps.prevArrow = prevArrowCustom;\n    }\n    if (nextArrowCustom) {\n      arrowProps.nextArrow = nextArrowCustom;\n    }\n    if (this.arrows) {\n      prevArrow = <PrevArrow {...arrowProps} />;\n      nextArrow = <NextArrow {...arrowProps} />;\n    }\n    let verticalHeightStyle = null;\n\n    if (this.vertical) {\n      verticalHeightStyle = {\n        height: typeof this.listHeight === 'number' ? `${this.listHeight}px` : this.listHeight,\n      };\n    }\n\n    let centerPaddingStyle = null;\n\n    if (this.vertical === false) {\n      if (this.centerMode === true) {\n        centerPaddingStyle = {\n          padding: '0px ' + this.centerPadding,\n        };\n      }\n    } else {\n      if (this.centerMode === true) {\n        centerPaddingStyle = {\n          padding: this.centerPadding + ' 0px',\n        };\n      }\n    }\n\n    const listStyle = { ...verticalHeightStyle, ...centerPaddingStyle };\n    const touchMove = this.touchMove;\n    let listProps = {\n      ref: this.listRefHandler,\n      class: 'slick-list',\n      style: listStyle,\n      onClick: this.clickHandler,\n      onMousedown: touchMove ? this.swipeStart : noop,\n      onMousemove: this.dragging && touchMove ? this.swipeMove : noop,\n      onMouseup: touchMove ? this.swipeEnd : noop,\n      onMouseleave: this.dragging && touchMove ? this.swipeEnd : noop,\n      [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: touchMove\n        ? this.swipeStart\n        : noop,\n      [supportsPassive ? 'onTouchmovePassive' : 'onTouchmove']:\n        this.dragging && touchMove ? this.swipeMove : noop,\n      onTouchend: touchMove ? this.touchEnd : noop,\n      onTouchcancel: this.dragging && touchMove ? this.swipeEnd : noop,\n      onKeydown: this.accessibility ? this.keyHandler : noop,\n    };\n\n    let innerSliderProps = {\n      class: className,\n      dir: 'ltr',\n      style: this.$attrs.style,\n    };\n\n    if (this.unslick) {\n      listProps = {\n        class: 'slick-list',\n        ref: this.listRefHandler,\n      };\n      innerSliderProps = { class: className };\n    }\n    return (\n      <div {...innerSliderProps}>\n        {!this.unslick ? prevArrow : ''}\n        <div {...listProps}>\n          <Track {...trackProps}>{this.children}</Track>\n        </div>\n        {!this.unslick ? nextArrow : ''}\n        {!this.unslick ? dots : ''}\n      </div>\n    );\n  },\n};\n"
  },
  {
    "path": "components/vc-slick/slider.jsx",
    "content": "import json2mq from '../_util/json2mq';\nimport BaseMixin from '../_util/BaseMixin';\nimport { cloneElement } from '../_util/vnode';\nimport InnerSlider from './inner-slider';\nimport defaultProps from './default-props';\nimport { canUseDOM } from './utils/innerSliderUtils';\nimport { getSlot } from '../_util/props-util';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  name: 'Slider',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: {\n    ...defaultProps,\n  },\n  data() {\n    this._responsiveMediaHandlers = [];\n    return {\n      breakpoint: null,\n    };\n  },\n  // handles responsive breakpoints\n  mounted() {\n    if (this.responsive) {\n      const breakpoints = this.responsive.map(breakpt => breakpt.breakpoint);\n      // sort them in increasing order of their numerical value\n      breakpoints.sort((x, y) => x - y);\n\n      breakpoints.forEach((breakpoint, index) => {\n        // media query for each breakpoint\n        let bQuery;\n        if (index === 0) {\n          bQuery = json2mq({ minWidth: 0, maxWidth: breakpoint });\n        } else {\n          bQuery = json2mq({\n            minWidth: breakpoints[index - 1] + 1,\n            maxWidth: breakpoint,\n          });\n        }\n        // when not using server side rendering\n        canUseDOM() &&\n          this.media(bQuery, () => {\n            this.setState({ breakpoint });\n          });\n      });\n\n      // Register media query for full screen. Need to support resize from small to large\n      // convert javascript object to media query string\n      const query = json2mq({ minWidth: breakpoints.slice(-1)[0] });\n\n      canUseDOM() &&\n        this.media(query, () => {\n          this.setState({ breakpoint: null });\n        });\n    }\n  },\n  beforeUnmount() {\n    this._responsiveMediaHandlers.forEach(function (obj) {\n      obj.mql.removeListener(obj.listener);\n    });\n  },\n  methods: {\n    innerSliderRefHandler(ref) {\n      this.innerSlider = ref;\n    },\n    media(query, handler) {\n      // javascript handler for  css media query\n      const mql = window.matchMedia(query);\n      const listener = ({ matches }) => {\n        if (matches) {\n          handler();\n        }\n      };\n      mql.addListener(listener);\n      listener(mql);\n      this._responsiveMediaHandlers.push({ mql, query, listener });\n    },\n    slickPrev() {\n      this.innerSlider?.slickPrev();\n    },\n    slickNext() {\n      this.innerSlider?.slickNext();\n    },\n    slickGoTo(slide, dontAnimate = false) {\n      this.innerSlider?.slickGoTo(slide, dontAnimate);\n    },\n    slickPause() {\n      this.innerSlider?.pause('paused');\n    },\n    slickPlay() {\n      this.innerSlider?.handleAutoPlay('play');\n    },\n  },\n\n  render() {\n    let settings;\n    let newProps;\n    if (this.breakpoint) {\n      newProps = this.responsive.filter(resp => resp.breakpoint === this.breakpoint);\n      settings =\n        newProps[0].settings === 'unslick'\n          ? 'unslick'\n          : { ...this.$props, ...newProps[0].settings };\n    } else {\n      settings = { ...this.$props };\n    }\n\n    // force scrolling by one if centerMode is on\n    if (settings.centerMode) {\n      if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `slidesToScroll should be equal to 1 in centerMode, you are using ${settings.slidesToScroll}`,\n        );\n      }\n      settings.slidesToScroll = 1;\n    }\n    // force showing one slide and scrolling by one if the fade mode is on\n    if (settings.fade) {\n      if (settings.slidesToShow > 1 && process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `slidesToShow should be equal to 1 when fade is true, you're using ${settings.slidesToShow}`,\n        );\n      }\n      if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `slidesToScroll should be equal to 1 when fade is true, you're using ${settings.slidesToScroll}`,\n        );\n      }\n      settings.slidesToShow = 1;\n      settings.slidesToScroll = 1;\n    }\n\n    // makes sure that children is an array, even when there is only 1 child\n    let children = getSlot(this) || [];\n\n    // Children may contain false or null, so we should filter them\n    // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n    children = children.filter(child => {\n      if (typeof child === 'string') {\n        return !!child.trim();\n      }\n      return !!child;\n    });\n\n    // rows and slidesPerRow logic is handled here\n    if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n      console.warn(`variableWidth is not supported in case of rows > 1 or slidesPerRow > 1`);\n      settings.variableWidth = false;\n    }\n    const newChildren = [];\n    let currentWidth = null;\n    for (let i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n      const newSlide = [];\n      for (let j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n        const row = [];\n        for (let k = j; k < j + settings.slidesPerRow; k += 1) {\n          if (settings.variableWidth && children[k].props?.style) {\n            currentWidth = children[k].props.style.width;\n          }\n          if (k >= children.length) break;\n          row.push(\n            cloneElement(children[k], {\n              key: 100 * i + 10 * j + k,\n              tabindex: -1,\n              style: {\n                width: `${100 / settings.slidesPerRow}%`,\n                display: 'inline-block',\n              },\n            }),\n          );\n        }\n        newSlide.push(<div key={10 * i + j}>{row}</div>);\n      }\n      if (settings.variableWidth) {\n        newChildren.push(\n          <div key={i} style={{ width: currentWidth }}>\n            {newSlide}\n          </div>,\n        );\n      } else {\n        newChildren.push(<div key={i}>{newSlide}</div>);\n      }\n    }\n\n    if (settings === 'unslick') {\n      const className = 'regular slider ' + (this.className || '');\n      return <div class={className}>{children}</div>;\n    } else if (newChildren.length <= settings.slidesToShow) {\n      settings.unslick = true;\n    }\n    const sliderProps = {\n      ...this.$attrs,\n      ...settings,\n      children: newChildren,\n      ref: this.innerSliderRefHandler,\n    };\n    return <InnerSlider {...sliderProps} v-slots={this.$slots} __propsSymbol__={[]} />;\n  },\n});\n"
  },
  {
    "path": "components/vc-slick/track.jsx",
    "content": "import { createVNode } from 'vue';\nimport classnames from '../_util/classNames';\nimport { flattenChildren } from '../_util/props-util';\nimport { lazyStartIndex, lazyEndIndex, getPreClones } from './utils/innerSliderUtils';\nimport { deepCloneElement } from '../_util/vnode';\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nconst getSlideClasses = spec => {\n  let slickActive, slickCenter;\n  let centerOffset, index;\n\n  if (spec.rtl) {\n    index = spec.slideCount - 1 - spec.index;\n  } else {\n    index = spec.index;\n  }\n  const slickCloned = index < 0 || index >= spec.slideCount;\n  if (spec.centerMode) {\n    centerOffset = Math.floor(spec.slidesToShow / 2);\n    slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n    if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n      slickActive = true;\n    }\n  } else {\n    slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n  }\n  let focusedSlide;\n  if (spec.targetSlide < 0) {\n    focusedSlide = spec.targetSlide + spec.slideCount;\n  } else if (spec.targetSlide >= spec.slideCount) {\n    focusedSlide = spec.targetSlide - spec.slideCount;\n  } else {\n    focusedSlide = spec.targetSlide;\n  }\n  const slickCurrent = index === focusedSlide;\n  return {\n    'slick-slide': true,\n    'slick-active': slickActive,\n    'slick-center': slickCenter,\n    'slick-cloned': slickCloned,\n    'slick-current': slickCurrent, // dubious in case of RTL\n  };\n};\n\nconst getSlideStyle = function (spec) {\n  const style = {};\n\n  if (spec.variableWidth === undefined || spec.variableWidth === false) {\n    style.width = spec.slideWidth + (typeof spec.slideWidth === 'number' ? 'px' : '');\n  }\n\n  if (spec.fade) {\n    style.position = 'relative';\n    if (spec.vertical) {\n      style.top = -spec.index * parseInt(spec.slideHeight) + 'px';\n    } else {\n      style.left = -spec.index * parseInt(spec.slideWidth) + 'px';\n    }\n    style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n    if (spec.useCSS) {\n      style.transition =\n        'opacity ' +\n        spec.speed +\n        'ms ' +\n        spec.cssEase +\n        ', ' +\n        'visibility ' +\n        spec.speed +\n        'ms ' +\n        spec.cssEase;\n    }\n  }\n\n  return style;\n};\n\nconst getKey = (child, fallbackKey) => child.key + '-' + fallbackKey;\n\nconst renderSlides = function (spec, children) {\n  let key;\n  const slides = [];\n  const preCloneSlides = [];\n  const postCloneSlides = [];\n  const childrenCount = children.length;\n  const startIndex = lazyStartIndex(spec);\n  const endIndex = lazyEndIndex(spec);\n  children.forEach((elem, index) => {\n    let child;\n    const childOnClickOptions = {\n      message: 'children',\n      index,\n      slidesToScroll: spec.slidesToScroll,\n      currentSlide: spec.currentSlide,\n    };\n\n    // in case of lazyLoad, whether or not we want to fetch the slide\n    if (!spec.lazyLoad || (spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0)) {\n      child = elem;\n    } else {\n      child = createVNode('div');\n    }\n    const childStyle = getSlideStyle({ ...spec, index });\n    const slideClass = child.props.class || '';\n    let slideClasses = getSlideClasses({ ...spec, index });\n    // push a cloned element of the desired slide\n    slides.push(\n      deepCloneElement(child, {\n        key: 'original' + getKey(child, index),\n        tabindex: '-1',\n        'data-index': index,\n        'aria-hidden': !slideClasses['slick-active'],\n        class: classnames(slideClasses, slideClass),\n        style: { outline: 'none', ...(child.props.style || {}), ...childStyle },\n        onClick: () => {\n          // child.props && child.props.onClick && child.props.onClick(e)\n          if (spec.focusOnSelect) {\n            spec.focusOnSelect(childOnClickOptions);\n          }\n        },\n      }),\n    );\n\n    // if slide needs to be precloned or postcloned\n    if (spec.infinite && spec.fade === false) {\n      const preCloneNo = childrenCount - index;\n      if (preCloneNo <= getPreClones(spec) && childrenCount !== spec.slidesToShow) {\n        key = -preCloneNo;\n        if (key >= startIndex) {\n          child = elem;\n        }\n        slideClasses = getSlideClasses({ ...spec, index: key });\n        preCloneSlides.push(\n          deepCloneElement(child, {\n            key: 'precloned' + getKey(child, key),\n            class: classnames(slideClasses, slideClass),\n            tabindex: '-1',\n            'data-index': key,\n            'aria-hidden': !slideClasses['slick-active'],\n            style: { ...(child.props.style || {}), ...childStyle },\n            onClick: () => {\n              // child.props && child.props.onClick && child.props.onClick(e)\n              if (spec.focusOnSelect) {\n                spec.focusOnSelect(childOnClickOptions);\n              }\n            },\n          }),\n        );\n      }\n\n      if (childrenCount !== spec.slidesToShow) {\n        key = childrenCount + index;\n        if (key < endIndex) {\n          child = elem;\n        }\n        slideClasses = getSlideClasses({ ...spec, index: key });\n        postCloneSlides.push(\n          deepCloneElement(child, {\n            key: 'postcloned' + getKey(child, key),\n            tabindex: '-1',\n            'data-index': key,\n            'aria-hidden': !slideClasses['slick-active'],\n            class: classnames(slideClasses, slideClass),\n            style: { ...(child.props.style || {}), ...childStyle },\n            onClick: () => {\n              // child.props && child.props.onClick && child.props.onClick(e)\n              if (spec.focusOnSelect) {\n                spec.focusOnSelect(childOnClickOptions);\n              }\n            },\n          }),\n        );\n      }\n    }\n  });\n  if (spec.rtl) {\n    return preCloneSlides.concat(slides, postCloneSlides).reverse();\n  } else {\n    return preCloneSlides.concat(slides, postCloneSlides);\n  }\n};\n\nconst Track = (_, { attrs, slots }) => {\n  const slides = renderSlides(attrs, flattenChildren(slots?.default()));\n  // const slides = renderSlides(attrs,  slots?.default);\n  const { onMouseenter, onMouseover, onMouseleave } = attrs;\n  const mouseEvents = { onMouseenter, onMouseover, onMouseleave };\n  const trackProps = {\n    class: 'slick-track',\n    style: attrs.trackStyle,\n    ...mouseEvents,\n  };\n  return <div {...trackProps}>{slides}</div>;\n};\n\nTrack.inheritAttrs = false;\n\nexport default Track;\n"
  },
  {
    "path": "components/vc-slick/utils/innerSliderUtils.js",
    "content": "// import supportsPassive from '../../../_util/supportsPassive';\n\nexport function clamp(number, lowerBound, upperBound) {\n  return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nexport const safePreventDefault = event => {\n  const passiveEvents = ['touchstart', 'touchmove', 'wheel'];\n  if (!passiveEvents.includes(event.type)) {\n    event.preventDefault();\n  }\n};\n\nexport const getOnDemandLazySlides = spec => {\n  const onDemandSlides = [];\n  const startIndex = lazyStartIndex(spec);\n  const endIndex = lazyEndIndex(spec);\n  for (let slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n    if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n      onDemandSlides.push(slideIndex);\n    }\n  }\n  return onDemandSlides;\n};\n\n// return list of slides that need to be present\nexport const getRequiredLazySlides = spec => {\n  const requiredSlides = [];\n  const startIndex = lazyStartIndex(spec);\n  const endIndex = lazyEndIndex(spec);\n  for (let slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n    requiredSlides.push(slideIndex);\n  }\n  return requiredSlides;\n};\n\n// startIndex that needs to be present\nexport const lazyStartIndex = spec => spec.currentSlide - lazySlidesOnLeft(spec);\nexport const lazyEndIndex = spec => spec.currentSlide + lazySlidesOnRight(spec);\nexport const lazySlidesOnLeft = spec =>\n  spec.centerMode\n    ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : 0;\nexport const lazySlidesOnRight = spec =>\n  spec.centerMode\n    ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : spec.slidesToShow;\n\n// get width of an element\nexport const getWidth = elem => (elem && elem.offsetWidth) || 0;\nexport const getHeight = elem => (elem && elem.offsetHeight) || 0;\nexport const getSwipeDirection = (touchObject, verticalSwiping = false) => {\n  let swipeAngle;\n  const xDist = touchObject.startX - touchObject.curX;\n  const yDist = touchObject.startY - touchObject.curY;\n  const r = Math.atan2(yDist, xDist);\n  swipeAngle = Math.round((r * 180) / Math.PI);\n  if (swipeAngle < 0) {\n    swipeAngle = 360 - Math.abs(swipeAngle);\n  }\n  if ((swipeAngle <= 45 && swipeAngle >= 0) || (swipeAngle <= 360 && swipeAngle >= 315)) {\n    return 'left';\n  }\n  if (swipeAngle >= 135 && swipeAngle <= 225) {\n    return 'right';\n  }\n  if (verticalSwiping === true) {\n    if (swipeAngle >= 35 && swipeAngle <= 135) {\n      return 'up';\n    } else {\n      return 'down';\n    }\n  }\n\n  return 'vertical';\n};\n\n// whether or not we can go next\nexport const canGoNext = spec => {\n  let canGo = true;\n  if (!spec.infinite) {\n    if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n      canGo = false;\n    } else if (\n      spec.slideCount <= spec.slidesToShow ||\n      spec.currentSlide >= spec.slideCount - spec.slidesToShow\n    ) {\n      canGo = false;\n    }\n  }\n  return canGo;\n};\n\n// given an object and a list of keys, return new object with given keys\nexport const extractObject = (spec, keys) => {\n  const newObject = {};\n  keys.forEach(key => (newObject[key] = spec[key]));\n  return newObject;\n};\n\n// get initialized state\nexport const initializedState = spec => {\n  // spec also contains listRef, trackRef\n  const slideCount = spec.children.length;\n  const listNode = spec.listRef;\n  const listWidth = Math.ceil(getWidth(listNode));\n  const trackNode = spec.trackRef;\n  const trackWidth = Math.ceil(getWidth(trackNode));\n  let slideWidth;\n  if (!spec.vertical) {\n    let centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n    if (typeof spec.centerPadding === 'string' && spec.centerPadding.slice(-1) === '%') {\n      centerPaddingAdj *= listWidth / 100;\n    }\n    slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n  } else {\n    slideWidth = listWidth;\n  }\n  const slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n  const listHeight = slideHeight * spec.slidesToShow;\n  let currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n  if (spec.rtl && spec.currentSlide === undefined) {\n    currentSlide = slideCount - 1 - spec.initialSlide;\n  }\n  let lazyLoadedList = spec.lazyLoadedList || [];\n  const slidesToLoad = getOnDemandLazySlides({ ...spec, currentSlide, lazyLoadedList }, spec);\n  lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n\n  const state = {\n    slideCount,\n    slideWidth,\n    listWidth,\n    trackWidth,\n    currentSlide,\n    slideHeight,\n    listHeight,\n    lazyLoadedList,\n  };\n\n  if (spec.autoplaying === null && spec.autoplay) {\n    state['autoplaying'] = 'playing';\n  }\n\n  return state;\n};\n\nexport const slideHandler = spec => {\n  const {\n    waitForAnimate,\n    animating,\n    fade,\n    infinite,\n    index,\n    slideCount,\n    lazyLoad,\n    currentSlide,\n    centerMode,\n    slidesToScroll,\n    slidesToShow,\n    useCSS,\n  } = spec;\n  let { lazyLoadedList } = spec;\n  if (waitForAnimate && animating) return {};\n  let animationSlide = index;\n  let finalSlide;\n  let animationLeft;\n  let finalLeft;\n  let state = {};\n  let nextState = {};\n  const targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n  if (fade) {\n    if (!infinite && (index < 0 || index >= slideCount)) return {};\n    if (index < 0) {\n      animationSlide = index + slideCount;\n    } else if (index >= slideCount) {\n      animationSlide = index - slideCount;\n    }\n    if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n      lazyLoadedList = lazyLoadedList.concat(animationSlide);\n    }\n    state = {\n      animating: true,\n      currentSlide: animationSlide,\n      lazyLoadedList,\n      targetSlide: animationSlide,\n    };\n    nextState = { animating: false, targetSlide: animationSlide };\n  } else {\n    finalSlide = animationSlide;\n    if (animationSlide < 0) {\n      finalSlide = animationSlide + slideCount;\n      if (!infinite) finalSlide = 0;\n      else if (slideCount % slidesToScroll !== 0) {\n        finalSlide = slideCount - (slideCount % slidesToScroll);\n      }\n    } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n      animationSlide = finalSlide = currentSlide;\n    } else if (centerMode && animationSlide >= slideCount) {\n      animationSlide = infinite ? slideCount : slideCount - 1;\n      finalSlide = infinite ? 0 : slideCount - 1;\n    } else if (animationSlide >= slideCount) {\n      finalSlide = animationSlide - slideCount;\n      if (!infinite) finalSlide = slideCount - slidesToShow;\n      else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n    }\n\n    if (!infinite && animationSlide + slidesToShow >= slideCount) {\n      finalSlide = slideCount - slidesToShow;\n    }\n\n    animationLeft = getTrackLeft({ ...spec, slideIndex: animationSlide });\n    finalLeft = getTrackLeft({ ...spec, slideIndex: finalSlide });\n    if (!infinite) {\n      if (animationLeft === finalLeft) animationSlide = finalSlide;\n      animationLeft = finalLeft;\n    }\n    if (lazyLoad) {\n      lazyLoadedList = lazyLoadedList.concat(\n        getOnDemandLazySlides({ ...spec, currentSlide: animationSlide }),\n      );\n    }\n    if (!useCSS) {\n      state = {\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS({ ...spec, left: finalLeft }),\n        lazyLoadedList,\n        targetSlide,\n      };\n    } else {\n      state = {\n        animating: true,\n        currentSlide: finalSlide,\n        trackStyle: getTrackAnimateCSS({ ...spec, left: animationLeft }),\n        lazyLoadedList,\n        targetSlide,\n      };\n      nextState = {\n        animating: false,\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS({ ...spec, left: finalLeft }),\n        swipeLeft: null,\n        targetSlide,\n      };\n    }\n  }\n  return { state, nextState };\n};\n\nexport const changeSlide = (spec, options) => {\n  let previousInt, slideOffset, targetSlide;\n  const {\n    slidesToScroll,\n    slidesToShow,\n    slideCount,\n    currentSlide,\n    targetSlide: previousTargetSlide,\n    lazyLoad,\n    infinite,\n  } = spec;\n  const unevenOffset = slideCount % slidesToScroll !== 0;\n  const indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n  if (options.message === 'previous') {\n    slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n    targetSlide = currentSlide - slideOffset;\n    if (lazyLoad && !infinite) {\n      previousInt = currentSlide - slideOffset;\n      targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n    }\n    if (!infinite) {\n      targetSlide = previousTargetSlide - slidesToScroll;\n    }\n  } else if (options.message === 'next') {\n    slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n    targetSlide = currentSlide + slideOffset;\n    if (lazyLoad && !infinite) {\n      targetSlide = ((currentSlide + slidesToScroll) % slideCount) + indexOffset;\n    }\n    if (!infinite) {\n      targetSlide = previousTargetSlide + slidesToScroll;\n    }\n  } else if (options.message === 'dots') {\n    // Click on dots\n    targetSlide = options.index * options.slidesToScroll;\n  } else if (options.message === 'children') {\n    // Click on the slides\n    targetSlide = options.index;\n\n    if (infinite) {\n      const direction = siblingDirection({ ...spec, targetSlide });\n      if (targetSlide > options.currentSlide && direction === 'left') {\n        targetSlide = targetSlide - slideCount;\n      } else if (targetSlide < options.currentSlide && direction === 'right') {\n        targetSlide = targetSlide + slideCount;\n      }\n    }\n  } else if (options.message === 'index') {\n    targetSlide = Number(options.index);\n  }\n  return targetSlide;\n};\nexport const keyHandler = (e, accessibility, rtl) => {\n  if (e.target.tagName.match('TEXTAREA|INPUT|SELECT') || !accessibility) {\n    return '';\n  }\n  if (e.keyCode === 37) return rtl ? 'next' : 'previous';\n  if (e.keyCode === 39) return rtl ? 'previous' : 'next';\n  return '';\n};\n\nexport const swipeStart = (e, swipe, draggable) => {\n  e.target.tagName === 'IMG' && safePreventDefault(e);\n  if (!swipe || (!draggable && e.type.indexOf('mouse') !== -1)) return '';\n  return {\n    dragging: true,\n    touchObject: {\n      startX: e.touches ? e.touches[0].pageX : e.clientX,\n      startY: e.touches ? e.touches[0].pageY : e.clientY,\n      curX: e.touches ? e.touches[0].pageX : e.clientX,\n      curY: e.touches ? e.touches[0].pageY : e.clientY,\n    },\n  };\n};\nexport const swipeMove = (e, spec) => {\n  // spec also contains, trackRef and slideIndex\n  const {\n    scrolling,\n    animating,\n    vertical,\n    swipeToSlide,\n    verticalSwiping,\n    rtl,\n    currentSlide,\n    edgeFriction,\n    edgeDragged,\n    onEdge,\n    swiped,\n    swiping,\n    slideCount,\n    slidesToScroll,\n    infinite,\n    touchObject,\n    swipeEvent,\n    listHeight,\n    listWidth,\n  } = spec;\n  if (scrolling) return;\n  if (animating) return safePreventDefault(e);\n  if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n  let swipeLeft;\n  let state = {};\n  const curLeft = getTrackLeft(spec);\n  touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n  touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n  touchObject.swipeLength = Math.round(\n    Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)),\n  );\n  const verticalSwipeLength = Math.round(\n    Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)),\n  );\n  if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n    return { scrolling: true };\n  }\n  if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n  let positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n  if (verticalSwiping) {\n    positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n  }\n\n  const dotCount = Math.ceil(slideCount / slidesToScroll);\n  const swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n  let touchSwipeLength = touchObject.swipeLength;\n  if (!infinite) {\n    if (\n      (currentSlide === 0 && (swipeDirection === 'right' || swipeDirection === 'down')) ||\n      (currentSlide + 1 >= dotCount && (swipeDirection === 'left' || swipeDirection === 'up')) ||\n      (!canGoNext(spec) && (swipeDirection === 'left' || swipeDirection === 'up'))\n    ) {\n      touchSwipeLength = touchObject.swipeLength * edgeFriction;\n      if (edgeDragged === false && onEdge) {\n        onEdge(swipeDirection);\n        state['edgeDragged'] = true;\n      }\n    }\n  }\n  if (!swiped && swipeEvent) {\n    swipeEvent(swipeDirection);\n    state['swiped'] = true;\n  }\n  if (!vertical) {\n    if (!rtl) {\n      swipeLeft = curLeft + touchSwipeLength * positionOffset;\n    } else {\n      swipeLeft = curLeft - touchSwipeLength * positionOffset;\n    }\n  } else {\n    swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n  }\n  if (verticalSwiping) {\n    swipeLeft = curLeft + touchSwipeLength * positionOffset;\n  }\n  state = {\n    ...state,\n    touchObject,\n    swipeLeft,\n    trackStyle: getTrackCSS({ ...spec, left: swipeLeft }),\n  };\n  if (\n    Math.abs(touchObject.curX - touchObject.startX) <\n    Math.abs(touchObject.curY - touchObject.startY) * 0.8\n  ) {\n    return state;\n  }\n  if (touchObject.swipeLength > 10) {\n    state['swiping'] = true;\n    safePreventDefault(e);\n  }\n  return state;\n};\nexport const swipeEnd = (e, spec) => {\n  const {\n    dragging,\n    swipe,\n    touchObject,\n    listWidth,\n    touchThreshold,\n    verticalSwiping,\n    listHeight,\n    swipeToSlide,\n    scrolling,\n    onSwipe,\n    targetSlide,\n    currentSlide,\n    infinite,\n  } = spec;\n  if (!dragging) {\n    if (swipe) safePreventDefault(e);\n    return {};\n  }\n  const minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n  const swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n  // reset the state of touch related state variables.\n  const state = {\n    dragging: false,\n    edgeDragged: false,\n    scrolling: false,\n    swiping: false,\n    swiped: false,\n    swipeLeft: null,\n    touchObject: {},\n  };\n  if (scrolling) {\n    return state;\n  }\n  if (!touchObject.swipeLength) {\n    return state;\n  }\n  if (touchObject.swipeLength > minSwipe) {\n    safePreventDefault(e);\n    if (onSwipe) {\n      onSwipe(swipeDirection);\n    }\n    let slideCount, newSlide;\n    const activeSlide = infinite ? currentSlide : targetSlide;\n    switch (swipeDirection) {\n      case 'left':\n      case 'up':\n        newSlide = activeSlide + getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state['currentDirection'] = 0;\n        break;\n      case 'right':\n      case 'down':\n        newSlide = activeSlide - getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state['currentDirection'] = 1;\n        break;\n      default:\n        slideCount = activeSlide;\n    }\n    state['triggerSlideHandler'] = slideCount;\n  } else {\n    // Adjust the track back to it's original position.\n    const currentLeft = getTrackLeft(spec);\n    state['trackStyle'] = getTrackAnimateCSS({ ...spec, left: currentLeft });\n  }\n  return state;\n};\nexport const getNavigableIndexes = spec => {\n  const max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n  let breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n  let counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n  const indexes = [];\n  while (breakpoint < max) {\n    indexes.push(breakpoint);\n    breakpoint = counter + spec.slidesToScroll;\n    counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n  }\n  return indexes;\n};\nexport const checkNavigable = (spec, index) => {\n  const navigables = getNavigableIndexes(spec);\n  let prevNavigable = 0;\n  if (index > navigables[navigables.length - 1]) {\n    index = navigables[navigables.length - 1];\n  } else {\n    for (const n in navigables) {\n      if (index < navigables[n]) {\n        index = prevNavigable;\n        break;\n      }\n      prevNavigable = navigables[n];\n    }\n  }\n  return index;\n};\nexport const getSlideCount = spec => {\n  const centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n  if (spec.swipeToSlide) {\n    let swipedSlide;\n    const slickList = spec.listRef;\n    const slides = (slickList.querySelectorAll && slickList.querySelectorAll('.slick-slide')) || [];\n    Array.from(slides).every(slide => {\n      if (!spec.vertical) {\n        if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      } else {\n        if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      }\n\n      return true;\n    });\n\n    if (!swipedSlide) {\n      return 0;\n    }\n    const currentIndex =\n      spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n    const slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n    return slidesTraversed;\n  } else {\n    return spec.slidesToScroll;\n  }\n};\n\nexport const checkSpecKeys = (spec, keysArray) =>\n  keysArray.reduce((value, key) => value && spec.hasOwnProperty(key), true)\n    ? null\n    : console.error('Keys Missing:', spec);\n\nexport const getTrackCSS = spec => {\n  checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth']);\n  let trackWidth, trackHeight;\n  const trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n  if (!spec.vertical) {\n    trackWidth = getTotalSlides(spec) * spec.slideWidth;\n  } else {\n    trackHeight = trackChildren * spec.slideHeight;\n  }\n  let style = {\n    opacity: 1,\n    transition: '',\n    WebkitTransition: '',\n  };\n  if (spec.useTransform) {\n    const WebkitTransform = !spec.vertical\n      ? 'translate3d(' + spec.left + 'px, 0px, 0px)'\n      : 'translate3d(0px, ' + spec.left + 'px, 0px)';\n    const transform = !spec.vertical\n      ? 'translate3d(' + spec.left + 'px, 0px, 0px)'\n      : 'translate3d(0px, ' + spec.left + 'px, 0px)';\n    const msTransform = !spec.vertical\n      ? 'translateX(' + spec.left + 'px)'\n      : 'translateY(' + spec.left + 'px)';\n    style = {\n      ...style,\n      WebkitTransform,\n      transform,\n      msTransform,\n    };\n  } else {\n    if (spec.vertical) {\n      style['top'] = spec.left;\n    } else {\n      style['left'] = spec.left;\n    }\n  }\n  if (spec.fade) style = { opacity: 1 };\n  if (trackWidth) style.width = trackWidth + 'px';\n  if (trackHeight) style.height = trackHeight + 'px';\n\n  // Fallback for IE8\n  if (window && !window.addEventListener && window.attachEvent) {\n    if (!spec.vertical) {\n      style.marginLeft = spec.left + 'px';\n    } else {\n      style.marginTop = spec.left + 'px';\n    }\n  }\n\n  return style;\n};\nexport const getTrackAnimateCSS = spec => {\n  checkSpecKeys(spec, [\n    'left',\n    'variableWidth',\n    'slideCount',\n    'slidesToShow',\n    'slideWidth',\n    'speed',\n    'cssEase',\n  ]);\n  const style = getTrackCSS(spec);\n  // useCSS is true by default so it can be undefined\n  if (spec.useTransform) {\n    style.WebkitTransition = '-webkit-transform ' + spec.speed + 'ms ' + spec.cssEase;\n    style.transition = 'transform ' + spec.speed + 'ms ' + spec.cssEase;\n  } else {\n    if (spec.vertical) {\n      style.transition = 'top ' + spec.speed + 'ms ' + spec.cssEase;\n    } else {\n      style.transition = 'left ' + spec.speed + 'ms ' + spec.cssEase;\n    }\n  }\n  return style;\n};\nexport const getTrackLeft = spec => {\n  if (spec.unslick) {\n    return 0;\n  }\n\n  checkSpecKeys(spec, [\n    'slideIndex',\n    'trackRef',\n    'infinite',\n    'centerMode',\n    'slideCount',\n    'slidesToShow',\n    'slidesToScroll',\n    'slideWidth',\n    'listWidth',\n    'variableWidth',\n    'slideHeight',\n  ]);\n\n  const {\n    slideIndex,\n    trackRef,\n    infinite,\n    centerMode,\n    slideCount,\n    slidesToShow,\n    slidesToScroll,\n    slideWidth,\n    listWidth,\n    variableWidth,\n    slideHeight,\n    fade,\n    vertical,\n  } = spec;\n\n  let slideOffset = 0;\n  let targetLeft;\n  let targetSlide;\n  let verticalOffset = 0;\n\n  if (fade || spec.slideCount === 1) {\n    return 0;\n  }\n\n  let slidesToOffset = 0;\n  if (infinite) {\n    slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n    // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n      slidesToOffset = -(slideIndex > slideCount\n        ? slidesToShow - (slideIndex - slideCount)\n        : slideCount % slidesToScroll);\n    }\n    // shift current slide to center of the frame\n    if (centerMode) {\n      slidesToOffset += parseInt(slidesToShow / 2);\n    }\n  } else {\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n      slidesToOffset = slidesToShow - (slideCount % slidesToScroll);\n    }\n    if (centerMode) {\n      slidesToOffset = parseInt(slidesToShow / 2);\n    }\n  }\n  slideOffset = slidesToOffset * slideWidth;\n  verticalOffset = slidesToOffset * slideHeight;\n\n  if (!vertical) {\n    targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n  } else {\n    targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n  }\n\n  if (variableWidth === true) {\n    let targetSlideIndex;\n    const trackElem = trackRef;\n    targetSlideIndex = slideIndex + getPreClones(spec);\n    targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n    targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n    if (centerMode === true) {\n      targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n      targetSlide = trackElem && trackElem.children[targetSlideIndex];\n      targetLeft = 0;\n      for (let slide = 0; slide < targetSlideIndex; slide++) {\n        targetLeft -=\n          trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n      }\n      targetLeft -= parseInt(spec.centerPadding);\n      targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n    }\n  }\n\n  return targetLeft;\n};\n\nexport const getPreClones = spec => {\n  if (spec.unslick || !spec.infinite) {\n    return 0;\n  }\n  if (spec.variableWidth) {\n    return spec.slideCount;\n  }\n  return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexport const getPostClones = spec => {\n  if (spec.unslick || !spec.infinite) {\n    return 0;\n  }\n  return spec.slideCount;\n};\n\nexport const getTotalSlides = spec =>\n  spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\nexport const siblingDirection = spec => {\n  if (spec.targetSlide > spec.currentSlide) {\n    if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n      return 'left';\n    }\n    return 'right';\n  } else {\n    if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n      return 'right';\n    }\n    return 'left';\n  }\n};\n\nexport const slidesOnRight = ({ slidesToShow, centerMode, rtl, centerPadding }) => {\n  // returns no of slides on the right of active slide\n  if (centerMode) {\n    let right = (slidesToShow - 1) / 2 + 1;\n    if (parseInt(centerPadding) > 0) right += 1;\n    if (rtl && slidesToShow % 2 === 0) right += 1;\n    return right;\n  }\n  if (rtl) {\n    return 0;\n  }\n  return slidesToShow - 1;\n};\n\nexport const slidesOnLeft = ({ slidesToShow, centerMode, rtl, centerPadding }) => {\n  // returns no of slides on the left of active slide\n  if (centerMode) {\n    let left = (slidesToShow - 1) / 2 + 1;\n    if (parseInt(centerPadding) > 0) left += 1;\n    if (!rtl && slidesToShow % 2 === 0) left += 1;\n    return left;\n  }\n  if (rtl) {\n    return slidesToShow - 1;\n  }\n  return 0;\n};\n\nexport const canUseDOM = () =>\n  !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n"
  },
  {
    "path": "components/vc-slider/index.ts",
    "content": "// base rc-slider 9.7.2\nimport Slider from './src/';\n\nexport default Slider;\n"
  },
  {
    "path": "components/vc-slider/src/Handle.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { computed, defineComponent, shallowRef, onMounted, onBeforeUnmount } from 'vue';\nimport classNames from '../../_util/classNames';\nimport PropTypes from '../../_util/vue-types';\nimport addEventListener from '../../vc-util/Dom/addEventListener';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Handle',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    vertical: { type: Boolean, default: undefined },\n    offset: Number,\n    disabled: { type: Boolean, default: undefined },\n    min: Number,\n    max: Number,\n    value: Number,\n    tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    reverse: { type: Boolean, default: undefined },\n    ariaLabel: String,\n    ariaLabelledBy: String,\n    ariaValueTextFormatter: Function,\n    onMouseenter: { type: Function as PropType<(payload: MouseEvent) => void> },\n    onMouseleave: { type: Function as PropType<(payload: MouseEvent) => void> },\n    onMousedown: { type: Function as PropType<(payload: MouseEvent) => void> },\n  },\n  setup(props, { attrs, emit, expose }) {\n    const clickFocused = shallowRef(false);\n    const handle = shallowRef();\n    const handleMouseUp = () => {\n      if (document.activeElement === handle.value) {\n        clickFocused.value = true;\n      }\n    };\n    const handleBlur = (e: FocusEvent) => {\n      clickFocused.value = false;\n      emit('blur', e);\n    };\n    const handleKeyDown = () => {\n      clickFocused.value = false;\n    };\n    const focus = () => {\n      handle.value?.focus();\n    };\n    const blur = () => {\n      handle.value?.blur();\n    };\n    const clickFocus = () => {\n      clickFocused.value = true;\n      focus();\n    };\n\n    // when click can not focus in vue, use mousedown trigger focus\n    const handleMousedown = (e: MouseEvent) => {\n      e.preventDefault();\n      focus();\n      emit('mousedown', e);\n    };\n    expose({\n      focus,\n      blur,\n      clickFocus,\n      ref: handle,\n    });\n    let onMouseUpListener = null;\n    onMounted(() => {\n      onMouseUpListener = addEventListener(document, 'mouseup', handleMouseUp);\n    });\n    onBeforeUnmount(() => {\n      onMouseUpListener?.remove();\n    });\n\n    const positionStyle = computed(() => {\n      const { vertical, offset, reverse } = props;\n      return vertical\n        ? {\n            [reverse ? 'top' : 'bottom']: `${offset}%`,\n            [reverse ? 'bottom' : 'top']: 'auto',\n            transform: reverse ? null : `translateY(+50%)`,\n          }\n        : {\n            [reverse ? 'right' : 'left']: `${offset}%`,\n            [reverse ? 'left' : 'right']: 'auto',\n            transform: `translateX(${reverse ? '+' : '-'}50%)`,\n          };\n    });\n    return () => {\n      const {\n        prefixCls,\n        disabled,\n        min,\n        max,\n        value,\n        tabindex,\n        ariaLabel,\n        ariaLabelledBy,\n        ariaValueTextFormatter,\n        onMouseenter,\n        onMouseleave,\n      } = props;\n      const className = classNames(attrs.class, {\n        [`${prefixCls}-handle-click-focused`]: clickFocused.value,\n      });\n\n      const ariaProps = {\n        'aria-valuemin': min,\n        'aria-valuemax': max,\n        'aria-valuenow': value,\n        'aria-disabled': !!disabled,\n      };\n      const elStyle = [attrs.style as CSSProperties, positionStyle.value];\n      let mergedTabIndex = tabindex || 0;\n      if (disabled || tabindex === null) {\n        mergedTabIndex = null;\n      }\n\n      let ariaValueText;\n      if (ariaValueTextFormatter) {\n        ariaValueText = ariaValueTextFormatter(value);\n      }\n\n      const handleProps = {\n        ...attrs,\n        role: 'slider',\n        tabindex: mergedTabIndex,\n        ...ariaProps,\n        class: className,\n        onBlur: handleBlur,\n        onKeydown: handleKeyDown,\n        onMousedown: handleMousedown,\n        onMouseenter,\n        onMouseleave,\n        ref: handle,\n        style: elStyle,\n      };\n      return (\n        <div\n          {...handleProps}\n          aria-label={ariaLabel}\n          aria-labelledby={ariaLabelledBy}\n          aria-valuetext={ariaValueText}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-slider/src/Range.tsx",
    "content": "import classNames from '../../_util/classNames';\nimport PropTypes, { withUndefined } from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { hasProp } from '../../_util/props-util';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\nimport initDefaultProps from '../../_util/props-util/initDefaultProps';\nimport { defineComponent } from 'vue';\n\nconst trimAlignValue = ({\n  value,\n  handle,\n  bounds,\n  props,\n}: {\n  value: number;\n  handle: number;\n  bounds?: number[];\n  props: any;\n}) => {\n  const { allowCross, pushable } = props;\n  const thershold = Number(pushable);\n  const valInRange = utils.ensureValueInRange(value, props);\n  let valNotConflict = valInRange;\n  if (!allowCross && handle != null && bounds !== undefined) {\n    if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) {\n      valNotConflict = bounds[handle - 1] + thershold;\n    }\n    if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) {\n      valNotConflict = bounds[handle + 1] - thershold;\n    }\n  }\n  return utils.ensureValuePrecision(valNotConflict, props);\n};\n\nconst rangeProps = {\n  defaultValue: PropTypes.arrayOf(PropTypes.number),\n  value: PropTypes.arrayOf(PropTypes.number),\n  count: Number,\n  pushable: withUndefined(PropTypes.oneOfType([PropTypes.looseBool, PropTypes.number])),\n  allowCross: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  reverse: { type: Boolean, default: undefined },\n  tabindex: PropTypes.arrayOf(PropTypes.number),\n  prefixCls: String,\n  min: Number,\n  max: Number,\n  autofocus: { type: Boolean, default: undefined },\n  ariaLabelGroupForHandles: Array,\n  ariaLabelledByGroupForHandles: Array,\n  ariaValueTextFormatterGroupForHandles: Array,\n  draggableTrack: { type: Boolean, default: undefined },\n};\nconst Range = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Range',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: initDefaultProps(rangeProps, {\n    count: 1,\n    allowCross: true,\n    pushable: false,\n    tabindex: [],\n    draggableTrack: false,\n    ariaLabelGroupForHandles: [],\n    ariaLabelledByGroupForHandles: [],\n    ariaValueTextFormatterGroupForHandles: [],\n  }),\n  emits: ['beforeChange', 'afterChange', 'change'],\n  displayName: 'Range',\n  data() {\n    const { count, min, max } = this;\n    const initialValue = Array(...Array(count + 1)).map(() => min);\n    const defaultValue = hasProp(this, 'defaultValue') ? this.defaultValue : initialValue;\n    let { value } = this;\n    if (value === undefined) {\n      value = defaultValue;\n    }\n    const bounds = value.map((v, i) =>\n      trimAlignValue({\n        value: v,\n        handle: i,\n        props: this.$props,\n      }),\n    );\n    const recent = bounds[0] === max ? 0 : bounds.length - 1;\n    return {\n      sHandle: null,\n      recent,\n      bounds,\n    };\n  },\n  watch: {\n    value: {\n      handler(val) {\n        const { bounds } = this;\n        this.setChangeValue(val || bounds);\n      },\n      deep: true,\n    },\n    min() {\n      const { value } = this;\n      this.setChangeValue(value || this.bounds);\n    },\n    max() {\n      const { value } = this;\n      this.setChangeValue(value || this.bounds);\n    },\n  },\n  methods: {\n    setChangeValue(value) {\n      const { bounds } = this;\n      let nextBounds = value.map((v, i) =>\n        trimAlignValue({\n          value: v,\n          handle: i,\n          bounds,\n          props: this.$props,\n        }),\n      );\n      if (bounds.length === nextBounds.length) {\n        if (nextBounds.every((v, i) => v === bounds[i])) {\n          return null;\n        }\n      } else {\n        nextBounds = value.map((v, i) =>\n          trimAlignValue({\n            value: v,\n            handle: i,\n            props: this.$props,\n          }),\n        );\n      }\n\n      this.setState({ bounds: nextBounds });\n\n      if (value.some(v => utils.isValueOutOfRange(v, this.$props))) {\n        const newValues = value.map(v => {\n          return utils.ensureValueInRange(v, this.$props);\n        });\n        this.$emit('change', newValues);\n      }\n    },\n    onChange(state) {\n      const isNotControlled = !hasProp(this, 'value');\n      if (isNotControlled) {\n        this.setState(state);\n      } else {\n        const controlledState = {};\n\n        ['sHandle', 'recent'].forEach(item => {\n          if (state[item] !== undefined) {\n            controlledState[item] = state[item];\n          }\n        });\n\n        if (Object.keys(controlledState).length) {\n          this.setState(controlledState);\n        }\n      }\n\n      const data = { ...this.$data, ...state };\n      const changedValue = data.bounds;\n      this.$emit('change', changedValue);\n    },\n\n    positionGetValue(position) {\n      const bounds = this.getValue();\n      const value = this.calcValueByPos(position);\n      const closestBound = this.getClosestBound(value);\n      const index = this.getBoundNeedMoving(value, closestBound);\n      const prevValue = bounds[index];\n      if (value === prevValue) return null;\n\n      const nextBounds = [...bounds];\n      nextBounds[index] = value;\n      return nextBounds;\n    },\n    onStart(position) {\n      const { bounds } = this;\n      this.$emit('beforeChange', bounds);\n\n      const value = this.calcValueByPos(position);\n      this.startValue = value;\n      this.startPosition = position;\n\n      const closestBound = this.getClosestBound(value);\n      this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n\n      this.setState({\n        sHandle: this.prevMovedHandleIndex,\n        recent: this.prevMovedHandleIndex,\n      });\n\n      const prevValue = bounds[this.prevMovedHandleIndex];\n      if (value === prevValue) return;\n      const nextBounds = [...bounds];\n      nextBounds[this.prevMovedHandleIndex] = value;\n      this.onChange({ bounds: nextBounds });\n    },\n    onEnd(force) {\n      const { sHandle } = this;\n      this.removeDocumentEvents();\n      if (!sHandle) {\n        this.dragTrack = false;\n      }\n      if (sHandle !== null || force) {\n        this.$emit('afterChange', this.bounds);\n      }\n      this.setState({ sHandle: null });\n    },\n    onMove(e, position, dragTrack, startBounds) {\n      utils.pauseEvent(e);\n      const { $data: state, $props: props } = this;\n      const maxValue = props.max || 100;\n      const minValue = props.min || 0;\n      if (dragTrack) {\n        let pos = props.vertical ? -position : position;\n        pos = props.reverse ? -pos : pos;\n        const max = maxValue - Math.max(...startBounds);\n        const min = minValue - Math.min(...startBounds);\n        const ratio = Math.min(Math.max(pos / (this.getSliderLength() / 100), min), max);\n        const nextBounds = startBounds.map(v =>\n          Math.floor(Math.max(Math.min(v + ratio, maxValue), minValue)),\n        );\n        if (state.bounds.map((c, i) => c === nextBounds[i]).some(c => !c)) {\n          this.onChange({\n            bounds: nextBounds,\n          });\n        }\n        return;\n      }\n      const { bounds, sHandle } = this;\n      const value = this.calcValueByPos(position);\n      const oldValue = bounds[sHandle];\n      if (value === oldValue) return;\n\n      this.moveTo(value);\n    },\n    onKeyboard(e) {\n      const { reverse, vertical } = this.$props;\n      const valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n      if (valueMutator) {\n        utils.pauseEvent(e);\n        const { bounds, sHandle } = this;\n        const oldValue = bounds[sHandle === null ? this.recent : sHandle];\n        const mutatedValue = valueMutator(oldValue, this.$props);\n        const value = trimAlignValue({\n          value: mutatedValue,\n          handle: sHandle,\n          bounds,\n          props: this.$props,\n        });\n        if (value === oldValue) return;\n        const isFromKeyboardEvent = true;\n        this.moveTo(value, isFromKeyboardEvent);\n      }\n    },\n    getClosestBound(value) {\n      const { bounds } = this;\n      let closestBound = 0;\n      for (let i = 1; i < bounds.length - 1; i += 1) {\n        if (value >= bounds[i]) {\n          closestBound = i;\n        }\n      }\n      if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n        closestBound += 1;\n      }\n      return closestBound;\n    },\n    getBoundNeedMoving(value, closestBound) {\n      const { bounds, recent } = this;\n      let boundNeedMoving = closestBound;\n      const isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n      if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n        boundNeedMoving = recent;\n      }\n\n      if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n        boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n      }\n      return boundNeedMoving;\n    },\n    getLowerBound() {\n      return this.bounds[0];\n    },\n    getUpperBound() {\n      const { bounds } = this;\n      return bounds[bounds.length - 1];\n    },\n    /**\n     * Returns an array of possible slider points, taking into account both\n     * `marks` and `step`. The result is cached.\n     */\n    getPoints() {\n      const { marks, step, min, max } = this;\n      const cache = this.internalPointsCache;\n      if (!cache || cache.marks !== marks || cache.step !== step) {\n        const pointsObject = { ...marks };\n        if (step !== null) {\n          for (let point = min; point <= max; point += step) {\n            pointsObject[point] = point;\n          }\n        }\n        const points = Object.keys(pointsObject).map(parseFloat);\n        points.sort((a, b) => a - b);\n        this.internalPointsCache = { marks, step, points };\n      }\n      return this.internalPointsCache.points;\n    },\n\n    moveTo(value, isFromKeyboardEvent) {\n      const nextBounds = [...this.bounds];\n      const { sHandle, recent } = this;\n      const handle = sHandle === null ? recent : sHandle;\n      nextBounds[handle] = value;\n      let nextHandle = handle;\n      if (this.$props.pushable !== false) {\n        this.pushSurroundingHandles(nextBounds, nextHandle);\n      } else if (this.$props.allowCross) {\n        nextBounds.sort((a, b) => a - b);\n        nextHandle = nextBounds.indexOf(value);\n      }\n      this.onChange({\n        recent: nextHandle,\n        sHandle: nextHandle,\n        bounds: nextBounds,\n      });\n      if (isFromKeyboardEvent) {\n        // known problem: because setState is async,\n        // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n        // cause onBeforeChange and onAfterChange receive wrong value.\n        // here use setState callback to hack，but not elegant\n        this.$emit('afterChange', nextBounds);\n        this.setState({}, () => {\n          this.handlesRefs[nextHandle].focus();\n        });\n        this.onEnd();\n      }\n    },\n\n    pushSurroundingHandles(bounds, handle) {\n      const value = bounds[handle];\n      const { pushable } = this;\n      const threshold = Number(pushable);\n\n      let direction = 0;\n      if (bounds[handle + 1] - value < threshold) {\n        direction = +1; // push to right\n      }\n      if (value - bounds[handle - 1] < threshold) {\n        direction = -1; // push to left\n      }\n\n      if (direction === 0) {\n        return;\n      }\n\n      const nextHandle = handle + direction;\n      const diffToNext = direction * (bounds[nextHandle] - value);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // revert to original value if pushing is impossible\n        bounds[handle] = bounds[nextHandle] - direction * threshold;\n      }\n    },\n    pushHandle(bounds, handle, direction, amount) {\n      const originalValue = bounds[handle];\n      let currentValue = bounds[handle];\n      while (direction * (currentValue - originalValue) < amount) {\n        if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n          // can't push handle enough to create the needed `amount` gap, so we\n          // revert its position to the original value\n          bounds[handle] = originalValue;\n          return false;\n        }\n        currentValue = bounds[handle];\n      }\n      // the handle was pushed enough to create the needed `amount` gap\n      return true;\n    },\n    pushHandleOnePoint(bounds, handle, direction) {\n      const points = this.getPoints();\n      const pointIndex = points.indexOf(bounds[handle]);\n      const nextPointIndex = pointIndex + direction;\n      if (nextPointIndex >= points.length || nextPointIndex < 0) {\n        // reached the minimum or maximum available point, can't push anymore\n        return false;\n      }\n      const nextHandle = handle + direction;\n      const nextValue = points[nextPointIndex];\n      const { pushable } = this;\n      const threshold = Number(pushable);\n      const diffToNext = direction * (bounds[nextHandle] - nextValue);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // couldn't push next handle, so we won't push this one either\n        return false;\n      }\n      // push the handle\n      bounds[handle] = nextValue;\n      return true;\n    },\n    trimAlignValue(value) {\n      const { sHandle, bounds } = this;\n      return trimAlignValue({\n        value,\n        handle: sHandle,\n        bounds,\n        props: this.$props,\n      });\n    },\n    ensureValueNotConflict(handle, val, { allowCross, pushable: thershold }) {\n      const state = this.$data || {};\n      const { bounds } = state;\n      handle = handle === undefined ? state.sHandle : handle;\n      thershold = Number(thershold);\n      /* eslint-disable eqeqeq */\n      if (!allowCross && handle != null && bounds !== undefined) {\n        if (handle > 0 && val <= bounds[handle - 1] + thershold) {\n          return bounds[handle - 1] + thershold;\n        }\n        if (handle < bounds.length - 1 && val >= bounds[handle + 1] - thershold) {\n          return bounds[handle + 1] - thershold;\n        }\n      }\n      /* eslint-enable eqeqeq */\n      return val;\n    },\n    getTrack({ bounds, prefixCls, reverse, vertical, included, offsets, trackStyle }) {\n      return bounds.slice(0, -1).map((_, index) => {\n        const i = index + 1;\n        const trackClassName = classNames({\n          [`${prefixCls}-track`]: true,\n          [`${prefixCls}-track-${i}`]: true,\n        });\n        return (\n          <Track\n            class={trackClassName}\n            vertical={vertical}\n            reverse={reverse}\n            included={included}\n            offset={offsets[i - 1]}\n            length={offsets[i] - offsets[i - 1]}\n            style={trackStyle[index]}\n            key={i}\n          />\n        );\n      });\n    },\n    renderSlider() {\n      const {\n        sHandle,\n        bounds,\n        prefixCls,\n        vertical,\n        included,\n        disabled,\n        min,\n        max,\n        reverse,\n        handle,\n        defaultHandle,\n        trackStyle,\n        handleStyle,\n        tabindex,\n        ariaLabelGroupForHandles,\n        ariaLabelledByGroupForHandles,\n        ariaValueTextFormatterGroupForHandles,\n      } = this;\n      const handleGenerator = handle || defaultHandle;\n      const offsets = bounds.map(v => this.calcOffset(v));\n\n      const handleClassName = `${prefixCls}-handle`;\n      const handles = bounds.map((v, i) => {\n        let mergedTabIndex = tabindex[i] || 0;\n        if (disabled || tabindex[i] === null) {\n          mergedTabIndex = null;\n        }\n        const dragging = sHandle === i;\n        return handleGenerator({\n          class: classNames({\n            [handleClassName]: true,\n            [`${handleClassName}-${i + 1}`]: true,\n            [`${handleClassName}-dragging`]: dragging,\n          }),\n          prefixCls,\n          vertical,\n          dragging,\n          offset: offsets[i],\n          value: v,\n          index: i,\n          tabindex: mergedTabIndex,\n          min,\n          max,\n          reverse,\n          disabled,\n          style: handleStyle[i],\n          ref: h => this.saveHandle(i, h),\n          onFocus: this.onFocus,\n          onBlur: this.onBlur,\n          ariaLabel: ariaLabelGroupForHandles[i],\n          ariaLabelledBy: ariaLabelledByGroupForHandles[i],\n          ariaValueTextFormatter: ariaValueTextFormatterGroupForHandles[i],\n        });\n      });\n\n      return {\n        tracks: this.getTrack({\n          bounds,\n          prefixCls,\n          reverse,\n          vertical,\n          included,\n          offsets,\n          trackStyle,\n        }),\n        handles,\n      };\n    },\n  },\n});\n\nexport default createSlider(Range);\n"
  },
  {
    "path": "components/vc-slider/src/Slider.tsx",
    "content": "import PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { hasProp } from '../../_util/props-util';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\nimport { defineComponent } from 'vue';\n\nconst Slider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Slider',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: {\n    defaultValue: Number,\n    value: Number,\n    disabled: { type: Boolean, default: undefined },\n    autofocus: { type: Boolean, default: undefined },\n    tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    reverse: { type: Boolean, default: undefined },\n    min: Number,\n    max: Number,\n    ariaLabelForHandle: String,\n    ariaLabelledByForHandle: String,\n    ariaValueTextFormatterForHandle: String,\n    startPoint: Number,\n  },\n  emits: ['beforeChange', 'afterChange', 'change'],\n  data() {\n    const defaultValue = this.defaultValue !== undefined ? this.defaultValue : this.min;\n    const value = this.value !== undefined ? this.value : defaultValue;\n    return {\n      sValue: (this as any).trimAlignValue(value),\n      dragging: false,\n    };\n  },\n  watch: {\n    value: {\n      handler(val) {\n        this.setChangeValue(val);\n      },\n      deep: true,\n    },\n    min() {\n      const { sValue } = this;\n      this.setChangeValue(sValue);\n    },\n    max() {\n      const { sValue } = this;\n      this.setChangeValue(sValue);\n    },\n  },\n  methods: {\n    setChangeValue(value) {\n      const newValue = value !== undefined ? value : this.sValue;\n      const nextValue = this.trimAlignValue(newValue, this.$props);\n      if (nextValue === this.sValue) return;\n\n      this.setState({ sValue: nextValue });\n      if (utils.isValueOutOfRange(newValue, this.$props)) {\n        this.$emit('change', nextValue);\n      }\n    },\n    onChange(state) {\n      const isNotControlled = !hasProp(this, 'value');\n      const nextState = state.sValue > this.max ? { ...state, sValue: this.max } : state;\n      if (isNotControlled) {\n        this.setState(nextState);\n      }\n\n      const changedValue = nextState.sValue;\n      this.$emit('change', changedValue);\n    },\n    onStart(position) {\n      this.setState({ dragging: true });\n      const { sValue } = this;\n      this.$emit('beforeChange', sValue);\n\n      const value = this.calcValueByPos(position);\n\n      this.startValue = value;\n      this.startPosition = position;\n      if (value === sValue) return;\n\n      this.prevMovedHandleIndex = 0;\n      this.onChange({ sValue: value });\n    },\n    onEnd(force) {\n      const { dragging } = this;\n      this.removeDocumentEvents();\n      if (dragging || force) {\n        this.$emit('afterChange', this.sValue);\n      }\n      this.setState({ dragging: false });\n    },\n    onMove(e, position) {\n      utils.pauseEvent(e);\n      const { sValue } = this;\n      const value = this.calcValueByPos(position);\n      if (value === sValue) return;\n\n      this.onChange({ sValue: value });\n    },\n    onKeyboard(e) {\n      const { reverse, vertical } = this.$props;\n      const valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n      if (valueMutator) {\n        utils.pauseEvent(e);\n        const { sValue } = this;\n        const mutatedValue = valueMutator(sValue, this.$props);\n        const value = this.trimAlignValue(mutatedValue);\n        if (value === sValue) return;\n\n        this.onChange({ sValue: value });\n        this.$emit('afterChange', value);\n        this.onEnd();\n      }\n    },\n    getLowerBound() {\n      const minPoint = this.$props.startPoint || this.$props.min;\n      return this.$data.sValue > minPoint ? minPoint : this.$data.sValue;\n    },\n    getUpperBound() {\n      if (this.$data.sValue < this.$props.startPoint) {\n        return this.$props.startPoint;\n      }\n      return this.$data.sValue;\n    },\n    trimAlignValue(v, nextProps = {}) {\n      if (v === null) {\n        return null;\n      }\n      const mergedProps = { ...this.$props, ...nextProps };\n      const val = utils.ensureValueInRange(v, mergedProps);\n      return utils.ensureValuePrecision(val, mergedProps);\n    },\n    getTrack({\n      prefixCls,\n      reverse,\n      vertical,\n      included,\n      minimumTrackStyle,\n      mergedTrackStyle,\n      length,\n      offset,\n    }) {\n      return (\n        <Track\n          class={`${prefixCls}-track`}\n          vertical={vertical}\n          included={included}\n          offset={offset}\n          reverse={reverse}\n          length={length}\n          style={{\n            ...minimumTrackStyle,\n            ...mergedTrackStyle,\n          }}\n        />\n      );\n    },\n    renderSlider() {\n      const {\n        prefixCls,\n        vertical,\n        included,\n        disabled,\n        minimumTrackStyle,\n        trackStyle,\n        handleStyle,\n        tabindex,\n        ariaLabelForHandle,\n        ariaLabelledByForHandle,\n        ariaValueTextFormatterForHandle,\n        min,\n        max,\n        startPoint,\n        reverse,\n        handle,\n        defaultHandle,\n      } = this;\n      const handleGenerator = handle || defaultHandle;\n      const { sValue, dragging } = this;\n      const offset = this.calcOffset(sValue);\n      const handles = handleGenerator({\n        class: `${prefixCls}-handle`,\n        prefixCls,\n        vertical,\n        offset,\n        value: sValue,\n        dragging,\n        disabled,\n        min,\n        max,\n        reverse,\n        index: 0,\n        tabindex,\n        ariaLabel: ariaLabelForHandle,\n        ariaLabelledBy: ariaLabelledByForHandle,\n        ariaValueTextFormatter: ariaValueTextFormatterForHandle,\n        style: handleStyle[0] || handleStyle,\n        ref: h => this.saveHandle(0, h),\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n      });\n      const trackOffset = startPoint !== undefined ? this.calcOffset(startPoint) : 0;\n      const mergedTrackStyle = trackStyle[0] || trackStyle;\n      return {\n        tracks: this.getTrack({\n          prefixCls,\n          reverse,\n          vertical,\n          included,\n          offset: trackOffset,\n          minimumTrackStyle,\n          mergedTrackStyle,\n          length: offset - trackOffset,\n        }),\n        handles,\n      };\n    },\n  },\n});\n\nexport default createSlider(Slider);\n"
  },
  {
    "path": "components/vc-slider/src/common/Marks.tsx",
    "content": "import supportsPassive from '../../../_util/supportsPassive';\nimport classNames from '../../../_util/classNames';\nimport { isValidElement } from '../../../_util/props-util';\n\nconst Marks = (_: any, { attrs, slots }: any) => {\n  const {\n    class: className,\n    vertical,\n    reverse,\n    marks,\n    included,\n    upperBound,\n    lowerBound,\n    max,\n    min,\n    onClickLabel,\n  } = attrs;\n  const marksKeys = Object.keys(marks);\n  const customMark = slots.mark;\n  const range = max - min;\n  const elements = marksKeys\n    .map(parseFloat)\n    .sort((a, b) => a - b)\n    .map(point => {\n      const markPoint = typeof marks[point] === 'function' ? marks[point]() : marks[point];\n      const markPointIsObject = typeof markPoint === 'object' && !isValidElement(markPoint);\n      let markLabel = markPointIsObject ? markPoint.label : markPoint;\n      if (!markLabel && markLabel !== 0) {\n        return null;\n      }\n      if (customMark) {\n        markLabel = customMark({ point, label: markLabel });\n      }\n      const isActive =\n        (!included && point === upperBound) ||\n        (included && point <= upperBound && point >= lowerBound);\n      const markClassName = classNames({\n        [`${className}-text`]: true,\n        [`${className}-text-active`]: isActive,\n      });\n\n      const bottomStyle = {\n        marginBottom: '-50%',\n        [reverse ? 'top' : 'bottom']: `${((point - min) / range) * 100}%`,\n      };\n\n      const leftStyle = {\n        transform: `translateX(${reverse ? `50%` : `-50%`})`,\n        msTransform: `translateX(${reverse ? `50%` : `-50%`})`,\n        [reverse ? 'right' : 'left']: `${((point - min) / range) * 100}%`,\n      };\n\n      const style = vertical ? bottomStyle : leftStyle;\n      const markStyle = markPointIsObject ? { ...style, ...markPoint.style } : style;\n      const touchEvents = {\n        [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: e => onClickLabel(e, point),\n      };\n      return (\n        <span\n          class={markClassName}\n          style={markStyle}\n          key={point}\n          onMousedown={e => onClickLabel(e, point)}\n          {...touchEvents}\n        >\n          {markLabel}\n        </span>\n      );\n    });\n\n  return <div class={className}>{elements}</div>;\n};\n\nMarks.inheritAttrs = false;\nexport default Marks;\n"
  },
  {
    "path": "components/vc-slider/src/common/Steps.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport classNames from '../../../_util/classNames';\nimport type { VueNode } from '../../../_util/type';\nimport warning from '../../../_util/warning';\n\nconst calcPoints = (\n  _vertical: boolean,\n  marks: Record<number, VueNode | { style?: CSSProperties; label?: string }>,\n  dots: boolean,\n  step: number,\n  min: number,\n  max: number,\n) => {\n  warning(\n    dots ? step > 0 : true,\n    'Slider',\n    '`Slider[step]` should be a positive number in order to make Slider[dots] work.',\n  );\n  const points = Object.keys(marks)\n    .map(parseFloat)\n    .sort((a, b) => a - b);\n  if (dots && step) {\n    for (let i = min; i <= max; i += step) {\n      if (points.indexOf(i) === -1) {\n        points.push(i);\n      }\n    }\n  }\n  return points;\n};\n\nconst Steps = (_: any, { attrs }) => {\n  const {\n    prefixCls,\n    vertical,\n    reverse,\n    marks,\n    dots,\n    step,\n    included,\n    lowerBound,\n    upperBound,\n    max,\n    min,\n    dotStyle,\n    activeDotStyle,\n  } = attrs;\n  const range = max - min;\n  const elements = calcPoints(vertical, marks, dots, step, min, max).map(point => {\n    const offset = `${(Math.abs(point - min) / range) * 100}%`;\n\n    const isActived =\n      (!included && point === upperBound) ||\n      (included && point <= upperBound && point >= lowerBound);\n    let style = vertical\n      ? { ...dotStyle, [reverse ? 'top' : 'bottom']: offset }\n      : { ...dotStyle, [reverse ? 'right' : 'left']: offset };\n    if (isActived) {\n      style = { ...style, ...activeDotStyle };\n    }\n\n    const pointClassName = classNames({\n      [`${prefixCls}-dot`]: true,\n      [`${prefixCls}-dot-active`]: isActived,\n      [`${prefixCls}-dot-reverse`]: reverse,\n    });\n\n    return <span class={pointClassName} style={style} key={point} />;\n  });\n\n  return <div class={`${prefixCls}-step`}>{elements}</div>;\n};\n\nSteps.inheritAttrs = false;\nexport default Steps;\n"
  },
  {
    "path": "components/vc-slider/src/common/Track.tsx",
    "content": "/* eslint-disable */\nconst Track = (_, { attrs }) => {\n  const { included, vertical, style, class: className } = attrs;\n  let { length, offset, reverse } = attrs;\n  if (length < 0) {\n    reverse = !reverse;\n    length = Math.abs(length);\n    offset = 100 - offset;\n  }\n  const positionStyle = vertical\n    ? {\n        [reverse ? 'top' : 'bottom']: `${offset}%`,\n        [reverse ? 'bottom' : 'top']: 'auto',\n        height: `${length}%`,\n      }\n    : {\n        [reverse ? 'right' : 'left']: `${offset}%`,\n        [reverse ? 'left' : 'right']: 'auto',\n        width: `${length}%`,\n      };\n\n  const elStyle = {\n    ...style,\n    ...positionStyle,\n  };\n  return included ? <div class={className} style={elStyle} /> : null;\n};\n\nTrack.inheritAttrs = false;\nexport default Track;\n"
  },
  {
    "path": "components/vc-slider/src/common/createSlider.tsx",
    "content": "import { defineComponent } from 'vue';\nimport classNames from '../../../_util/classNames';\nimport PropTypes from '../../../_util/vue-types';\nimport addEventListener from '../../../vc-util/Dom/addEventListener';\nimport warning from '../../../_util/warning';\nimport { initDefaultProps, getSlot } from '../../../_util/props-util';\nimport Steps from './Steps';\nimport Marks from './Marks';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport supportsPassive from '../../../_util/supportsPassive';\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n  // const displayName = `ComponentEnhancer(${Component.displayName})`\n  const propTypes = {\n    id: String,\n    min: Number,\n    max: Number,\n    step: Number,\n    marks: PropTypes.object,\n    included: { type: Boolean, default: undefined },\n    prefixCls: String,\n    disabled: { type: Boolean, default: undefined },\n    handle: Function,\n    dots: { type: Boolean, default: undefined },\n    vertical: { type: Boolean, default: undefined },\n    reverse: { type: Boolean, default: undefined },\n    minimumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n    maximumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n    handleStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n    trackStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n    railStyle: PropTypes.object,\n    dotStyle: PropTypes.object,\n    activeDotStyle: PropTypes.object,\n    autofocus: { type: Boolean, default: undefined },\n    draggableTrack: { type: Boolean, default: undefined },\n  };\n  return defineComponent({\n    compatConfig: { MODE: 3 },\n    name: 'CreateSlider',\n    mixins: [BaseMixin, Component],\n    inheritAttrs: false,\n    props: initDefaultProps(propTypes, {\n      prefixCls: 'rc-slider',\n      min: 0,\n      max: 100,\n      step: 1,\n      marks: {},\n      included: true,\n      disabled: false,\n      dots: false,\n      vertical: false,\n      reverse: false,\n      trackStyle: [{}],\n      handleStyle: [{}],\n      railStyle: {},\n      dotStyle: {},\n      activeDotStyle: {},\n    }),\n    emits: ['change', 'blur', 'focus'],\n    data() {\n      const { step, max, min } = this;\n      const isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n      warning(\n        step && Math.floor(step) === step ? isPointDiffEven : true,\n        `Slider[max] - Slider[min] (${max - min}) should be a multiple of Slider[step] (${step})`,\n      );\n      (this as any).handlesRefs = {};\n      return {};\n    },\n    mounted() {\n      this.$nextTick(() => {\n        // Snapshot testing cannot handle refs, so be sure to null-check this.\n        this.document = this.sliderRef && this.sliderRef.ownerDocument;\n        // this.setHandleRefs()\n        const { autofocus, disabled } = this;\n        if (autofocus && !disabled) {\n          this.focus();\n        }\n      });\n    },\n    beforeUnmount() {\n      this.$nextTick(() => {\n        // if (super.componentWillUnmount) super.componentWillUnmount()\n        this.removeDocumentEvents();\n      });\n    },\n    methods: {\n      defaultHandle({ index, directives, className, style, ...restProps }) {\n        delete restProps.dragging;\n        if (restProps.value === null) {\n          return null;\n        }\n        const handleProps = {\n          ...restProps,\n          class: className,\n          style,\n          key: index,\n        };\n        return <Handle {...handleProps} />;\n      },\n      onDown(e, position) {\n        let p = position;\n        const { draggableTrack, vertical: isVertical } = this.$props;\n        const { bounds } = this.$data;\n\n        const value = draggableTrack && this.positionGetValue ? this.positionGetValue(p) || [] : [];\n\n        const inPoint = utils.isEventFromHandle(e, this.handlesRefs);\n        this.dragTrack =\n          draggableTrack &&\n          bounds.length >= 2 &&\n          !inPoint &&\n          !value\n            .map((n, i) => {\n              const v = !i ? n >= bounds[i] : true;\n              return i === value.length - 1 ? n <= bounds[i] : v;\n            })\n            .some(c => !c);\n\n        if (this.dragTrack) {\n          this.dragOffset = p;\n          this.startBounds = [...bounds];\n        } else {\n          if (!inPoint) {\n            this.dragOffset = 0;\n          } else {\n            const handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n            this.dragOffset = p - handlePosition;\n            p = handlePosition;\n          }\n          this.onStart(p);\n        }\n      },\n      onMouseDown(e) {\n        if (e.button !== 0) {\n          return;\n        }\n\n        this.removeDocumentEvents();\n        const isVertical = this.$props.vertical;\n        const position = utils.getMousePosition(isVertical, e);\n        this.onDown(e, position);\n        this.addDocumentMouseEvents();\n      },\n      onTouchStart(e) {\n        if (utils.isNotTouchEvent(e)) return;\n\n        const isVertical = this.vertical;\n        const position = utils.getTouchPosition(isVertical, e);\n        this.onDown(e, position);\n        this.addDocumentTouchEvents();\n        utils.pauseEvent(e);\n      },\n      onFocus(e) {\n        const { vertical } = this;\n        if (utils.isEventFromHandle(e, this.handlesRefs) && !this.dragTrack) {\n          const handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n          this.dragOffset = 0;\n          this.onStart(handlePosition);\n          utils.pauseEvent(e);\n          this.$emit('focus', e);\n        }\n      },\n      onBlur(e) {\n        if (!this.dragTrack) {\n          this.onEnd();\n        }\n        this.$emit('blur', e);\n      },\n      onMouseUp() {\n        if (this.handlesRefs[this.prevMovedHandleIndex]) {\n          this.handlesRefs[this.prevMovedHandleIndex].clickFocus();\n        }\n      },\n      onMouseMove(e) {\n        if (!this.sliderRef) {\n          this.onEnd();\n          return;\n        }\n        const position = utils.getMousePosition(this.vertical, e);\n        this.onMove(e, position - this.dragOffset, this.dragTrack, this.startBounds);\n      },\n      onTouchMove(e) {\n        if (utils.isNotTouchEvent(e) || !this.sliderRef) {\n          this.onEnd();\n          return;\n        }\n\n        const position = utils.getTouchPosition(this.vertical, e);\n        this.onMove(e, position - this.dragOffset, this.dragTrack, this.startBounds);\n      },\n      onKeyDown(e) {\n        if (this.sliderRef && utils.isEventFromHandle(e, this.handlesRefs)) {\n          this.onKeyboard(e);\n        }\n      },\n      onClickMarkLabel(e, value) {\n        e.stopPropagation();\n        this.onChange({ sValue: value });\n        this.setState({ sValue: value }, () => this.onEnd(true));\n      },\n      getSliderStart() {\n        const slider = this.sliderRef;\n        const { vertical, reverse } = this;\n        const rect = slider.getBoundingClientRect();\n        if (vertical) {\n          return reverse ? rect.bottom : rect.top;\n        }\n        return window.scrollX + (reverse ? rect.right : rect.left);\n      },\n      getSliderLength() {\n        const slider = this.sliderRef;\n        if (!slider) {\n          return 0;\n        }\n\n        const coords = slider.getBoundingClientRect();\n        return this.vertical ? coords.height : coords.width;\n      },\n      addDocumentTouchEvents() {\n        // just work for Chrome iOS Safari and Android Browser\n        this.onTouchMoveListener = addEventListener(this.document, 'touchmove', this.onTouchMove);\n        this.onTouchUpListener = addEventListener(this.document, 'touchend', this.onEnd);\n      },\n      addDocumentMouseEvents() {\n        this.onMouseMoveListener = addEventListener(this.document, 'mousemove', this.onMouseMove);\n        this.onMouseUpListener = addEventListener(this.document, 'mouseup', this.onEnd);\n      },\n      removeDocumentEvents() {\n        /* eslint-disable no-unused-expressions */\n        this.onTouchMoveListener && this.onTouchMoveListener.remove();\n        this.onTouchUpListener && this.onTouchUpListener.remove();\n\n        this.onMouseMoveListener && this.onMouseMoveListener.remove();\n        this.onMouseUpListener && this.onMouseUpListener.remove();\n        /* eslint-enable no-unused-expressions */\n      },\n      focus() {\n        if (this.$props.disabled) {\n          return;\n        }\n        this.handlesRefs[0]?.focus();\n      },\n\n      blur() {\n        if (this.$props.disabled) {\n          return;\n        }\n        Object.keys(this.handlesRefs).forEach(key => {\n          this.handlesRefs[key]?.blur?.();\n        });\n      },\n      calcValue(offset) {\n        const { vertical, min, max } = this;\n        const ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n        const value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n        return value;\n      },\n      calcValueByPos(position) {\n        const sign = this.reverse ? -1 : +1;\n        const pixelOffset = sign * (position - this.getSliderStart());\n        const nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n        return nextValue;\n      },\n      calcOffset(value) {\n        const { min, max } = this;\n        const ratio = (value - min) / (max - min);\n        return Math.max(0, ratio * 100);\n      },\n      saveSlider(slider) {\n        this.sliderRef = slider;\n      },\n      saveHandle(index, handle) {\n        this.handlesRefs[index] = handle;\n      },\n    },\n    render() {\n      const {\n        prefixCls,\n        marks,\n        dots,\n        step,\n        included,\n        disabled,\n        vertical,\n        reverse,\n        min,\n        max,\n        maximumTrackStyle,\n        railStyle,\n        dotStyle,\n        activeDotStyle,\n        id,\n      } = this;\n      const { class: className, style } = this.$attrs;\n      const { tracks, handles } = this.renderSlider();\n\n      const sliderClassName = classNames(prefixCls, className, {\n        [`${prefixCls}-with-marks`]: Object.keys(marks).length,\n        [`${prefixCls}-disabled`]: disabled,\n        [`${prefixCls}-vertical`]: vertical,\n        [`${prefixCls}-horizontal`]: !vertical,\n      });\n      const markProps = {\n        vertical,\n        marks,\n        included,\n        lowerBound: this.getLowerBound(),\n        upperBound: this.getUpperBound(),\n        max,\n        min,\n        reverse,\n        class: `${prefixCls}-mark`,\n        onClickLabel: disabled ? noop : this.onClickMarkLabel,\n      };\n      const touchEvents = {\n        [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: disabled\n          ? noop\n          : this.onTouchStart,\n      };\n      return (\n        <div\n          id={id}\n          ref={this.saveSlider}\n          tabindex=\"-1\"\n          class={sliderClassName}\n          {...touchEvents}\n          onMousedown={disabled ? noop : this.onMouseDown}\n          onMouseup={disabled ? noop : this.onMouseUp}\n          onKeydown={disabled ? noop : this.onKeyDown}\n          onFocus={disabled ? noop : this.onFocus}\n          onBlur={disabled ? noop : this.onBlur}\n          style={style}\n        >\n          <div\n            class={`${prefixCls}-rail`}\n            style={{\n              ...maximumTrackStyle,\n              ...railStyle,\n            }}\n          />\n          {tracks}\n          <Steps\n            prefixCls={prefixCls}\n            vertical={vertical}\n            reverse={reverse}\n            marks={marks}\n            dots={dots}\n            step={step}\n            included={included}\n            lowerBound={this.getLowerBound()}\n            upperBound={this.getUpperBound()}\n            max={max}\n            min={min}\n            dotStyle={dotStyle}\n            activeDotStyle={activeDotStyle}\n          />\n          {handles}\n          <Marks {...markProps} v-slots={{ mark: this.$slots.mark }} />\n          {getSlot(this)}\n        </div>\n      );\n    },\n  });\n}\n"
  },
  {
    "path": "components/vc-slider/src/index.ts",
    "content": "import Slider from './Slider';\nimport Range from './Range';\nimport Handle from './Handle';\n\nSlider.Range = Range;\nSlider.Handle = Handle;\nexport default Slider;\nexport { Range, Handle };\n"
  },
  {
    "path": "components/vc-slider/src/utils.ts",
    "content": "import keyCode from '../../_util/KeyCode';\n\nexport function isEventFromHandle(e: { target: HTMLElement }, handles) {\n  try {\n    return Object.keys(handles).some(key => e.target === handles[key].ref);\n  } catch (error) {\n    return false;\n  }\n}\n\nexport function isValueOutOfRange(value: number, { min, max }: { min?: number; max?: number }) {\n  return value < min || value > max;\n}\n\nexport function isNotTouchEvent(e: TouchEvent) {\n  return e.touches.length > 1 || (e.type.toLowerCase() === 'touchend' && e.touches.length > 0);\n}\n\nexport function getClosestPoint(val: number, { marks, step, min, max }) {\n  const points = Object.keys(marks).map(parseFloat);\n  if (step !== null) {\n    const baseNum = 10 ** getPrecision(step);\n    const maxSteps = Math.floor((max * baseNum - min * baseNum) / (step * baseNum));\n    const steps = Math.min((val - min) / step, maxSteps);\n    const closestStep = Math.round(steps) * step + min;\n    points.push(closestStep);\n  }\n  const diffs = points.map(point => Math.abs(val - point));\n  return points[diffs.indexOf(Math.min(...diffs))];\n}\n\nexport function getPrecision(step: number) {\n  const stepString = step.toString();\n  let precision = 0;\n  if (stepString.indexOf('.') >= 0) {\n    precision = stepString.length - stepString.indexOf('.') - 1;\n  }\n  return precision;\n}\n\nexport function getMousePosition(vertical: boolean, e: MouseEvent) {\n  let zoom = 1;\n  if (window.visualViewport) {\n    zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2);\n  }\n  return (vertical ? e.clientY : e.pageX) / zoom;\n}\n\nexport function getTouchPosition(vertical: boolean, e: TouchEvent) {\n  let zoom = 1;\n  if (window.visualViewport) {\n    zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2);\n  }\n  return (vertical ? e.touches[0].clientY : e.touches[0].pageX) / zoom;\n}\n\nexport function getHandleCenterPosition(vertical: boolean, handle: HTMLElement) {\n  const coords = handle.getBoundingClientRect();\n  return vertical\n    ? coords.top + coords.height * 0.5\n    : window.scrollX + coords.left + coords.width * 0.5;\n}\n\nexport function ensureValueInRange(val: number, { max, min }: { max?: number; min?: number }) {\n  if (val <= min) {\n    return min;\n  }\n  if (val >= max) {\n    return max;\n  }\n  return val;\n}\n\nexport function ensureValuePrecision(val: number, props: any) {\n  const { step } = props;\n  const closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n  return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\n\nexport function pauseEvent(e: Event) {\n  e.stopPropagation();\n  e.preventDefault();\n}\n\nexport function calculateNextValue(func, value, props) {\n  const operations = {\n    increase: (a, b) => a + b,\n    decrease: (a, b) => a - b,\n  };\n\n  const indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n  const keyToGet = Object.keys(props.marks)[indexToGet];\n\n  if (props.step) {\n    return operations[func](value, props.step);\n  }\n  if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n    return props.marks[keyToGet];\n  }\n  return value;\n}\n\nexport function getKeyboardValueMutator(e: KeyboardEvent, vertical: boolean, reverse: boolean) {\n  const increase = 'increase';\n  const decrease = 'decrease';\n  let method = increase;\n  switch (e.keyCode) {\n    case keyCode.UP:\n      method = vertical && reverse ? decrease : increase;\n      break;\n    case keyCode.RIGHT:\n      method = !vertical && reverse ? decrease : increase;\n      break;\n    case keyCode.DOWN:\n      method = vertical && reverse ? increase : decrease;\n      break;\n    case keyCode.LEFT:\n      method = !vertical && reverse ? increase : decrease;\n      break;\n\n    case keyCode.END:\n      return (_value, props) => props.max;\n    case keyCode.HOME:\n      return (_value, props) => props.min;\n    case keyCode.PAGE_UP:\n      return (value, props) => value + props.step * 2;\n    case keyCode.PAGE_DOWN:\n      return (value, props) => value - props.step * 2;\n\n    default:\n      return undefined;\n  }\n  return (value, props) => calculateNextValue(method, value, props);\n}\n"
  },
  {
    "path": "components/vc-steps/Step.tsx",
    "content": "import PropTypes, { withUndefined } from '../_util/vue-types';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport type { EventHandler } from '../_util/EventInterface';\nimport classNames from '../_util/classNames';\nimport type { VueNode } from '../_util/type';\nimport { booleanType, stringType, functionType } from '../_util/type';\nimport type { StepIconRender, Status } from './interface';\nimport omit from '../_util/omit';\nfunction isString(str: any): str is string {\n  return typeof str === 'string';\n}\nfunction noop() {}\n\nexport const VcStepProps = () => ({\n  prefixCls: String,\n  itemWidth: String,\n  active: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  status: stringType<Status>(),\n  iconPrefix: String,\n  icon: PropTypes.any,\n  adjustMarginRight: String,\n  stepNumber: Number,\n  stepIndex: Number,\n  description: PropTypes.any,\n  title: PropTypes.any,\n  subTitle: PropTypes.any,\n  progressDot: withUndefined(PropTypes.oneOfType([PropTypes.looseBool, PropTypes.func])),\n  tailContent: PropTypes.any,\n  icons: PropTypes.shape({\n    finish: PropTypes.any,\n    error: PropTypes.any,\n  }).loose,\n  onClick: functionType(),\n  onStepClick: functionType<(next: number) => void>(),\n  stepIcon: functionType<StepIconRender>(),\n  itemRender: functionType<(stepItem: VueNode) => VueNode>(),\n  __legacy: booleanType(),\n});\n\nexport type VCStepProps = Partial<ExtractPropTypes<ReturnType<typeof VcStepProps>>>;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Step',\n  inheritAttrs: false,\n  props: VcStepProps(),\n  setup(props, { slots, emit, attrs }) {\n    const onItemClick: EventHandler = e => {\n      emit('click', e);\n      emit('stepClick', props.stepIndex);\n    };\n    // if (props.__legacy !== false) {\n    //   warning(\n    //     false,\n    //     'Steps',\n    //     'Step is deprecated, and not support inline type. Please use `items` directly. ',\n    //   );\n    // }\n    const renderIconNode = ({ icon, title, description }) => {\n      const {\n        prefixCls,\n        stepNumber,\n        status,\n        iconPrefix,\n        icons,\n        progressDot = slots.progressDot,\n        stepIcon = slots.stepIcon,\n      } = props;\n\n      let iconNode;\n      const iconClassName = classNames(`${prefixCls}-icon`, `${iconPrefix}icon`, {\n        [`${iconPrefix}icon-${icon}`]: icon && isString(icon),\n        [`${iconPrefix}icon-check`]:\n          !icon && status === 'finish' && ((icons && !icons.finish) || !icons),\n        [`${iconPrefix}icon-cross`]:\n          !icon && status === 'error' && ((icons && !icons.error) || !icons),\n      });\n      const iconDot = <span class={`${prefixCls}-icon-dot`} />;\n      // `progressDot` enjoy the highest priority\n      if (progressDot) {\n        if (typeof progressDot === 'function') {\n          iconNode = (\n            <span class={`${prefixCls}-icon`}>\n              {progressDot({\n                iconDot,\n                index: stepNumber - 1,\n                status,\n                title,\n                description,\n                prefixCls,\n              })}\n            </span>\n          );\n        } else {\n          iconNode = <span class={`${prefixCls}-icon`}>{iconDot}</span>;\n        }\n      } else if (icon && !isString(icon)) {\n        iconNode = <span class={`${prefixCls}-icon`}>{icon}</span>;\n      } else if (icons && icons.finish && status === 'finish') {\n        iconNode = <span class={`${prefixCls}-icon`}>{icons.finish}</span>;\n      } else if (icons && icons.error && status === 'error') {\n        iconNode = <span class={`${prefixCls}-icon`}>{icons.error}</span>;\n      } else if (icon || status === 'finish' || status === 'error') {\n        iconNode = <span class={iconClassName} />;\n      } else {\n        iconNode = <span class={`${prefixCls}-icon`}>{stepNumber}</span>;\n      }\n\n      if (stepIcon) {\n        iconNode = stepIcon({\n          index: stepNumber - 1,\n          status,\n          title,\n          description,\n          node: iconNode,\n        });\n      }\n\n      return iconNode;\n    };\n    return () => {\n      const {\n        prefixCls,\n        itemWidth,\n        active,\n        status = 'wait',\n        tailContent,\n        adjustMarginRight,\n        disabled,\n        title = slots.title?.(),\n        description = slots.description?.(),\n        subTitle = slots.subTitle?.(),\n        icon = slots.icon?.(),\n        onClick,\n        onStepClick,\n      } = props;\n      const mergedStatus = status || 'wait';\n      const classString = classNames(`${prefixCls}-item`, `${prefixCls}-item-${mergedStatus}`, {\n        [`${prefixCls}-item-custom`]: icon,\n        [`${prefixCls}-item-active`]: active,\n        [`${prefixCls}-item-disabled`]: disabled === true,\n      });\n      const stepItemStyle: CSSProperties = {};\n      if (itemWidth) {\n        stepItemStyle.width = itemWidth;\n      }\n      if (adjustMarginRight) {\n        stepItemStyle.marginRight = adjustMarginRight;\n      }\n\n      const accessibilityProps: {\n        role?: string;\n        tabindex?: number;\n        onClick?: EventHandler;\n      } = {\n        onClick: onClick || noop,\n      };\n\n      if (onStepClick && !disabled) {\n        accessibilityProps.role = 'button';\n        accessibilityProps.tabindex = 0;\n        accessibilityProps.onClick = onItemClick;\n      }\n      const stepNode = (\n        <div\n          {...omit(attrs, ['__legacy'])}\n          class={[classString, attrs.class]}\n          style={[attrs.style as CSSProperties, stepItemStyle]}\n        >\n          <div {...accessibilityProps} class={`${prefixCls}-item-container`}>\n            <div class={`${prefixCls}-item-tail`}>{tailContent}</div>\n            <div class={`${prefixCls}-item-icon`}>\n              {renderIconNode({ icon, title, description })}\n            </div>\n            <div class={`${prefixCls}-item-content`}>\n              <div class={`${prefixCls}-item-title`}>\n                {title}\n                {subTitle && (\n                  <div\n                    title={typeof subTitle === 'string' ? subTitle : undefined}\n                    class={`${prefixCls}-item-subtitle`}\n                  >\n                    {subTitle}\n                  </div>\n                )}\n              </div>\n              {description && <div class={`${prefixCls}-item-description`}>{description}</div>}\n            </div>\n          </div>\n        </div>\n      );\n      if (props.itemRender) {\n        return props.itemRender(stepNode);\n      }\n      return stepNode;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-steps/Steps.tsx",
    "content": "import PropTypes from '../_util/vue-types';\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { VCStepProps } from './Step';\nimport Step from './Step';\nimport type { VueNode } from '../_util/type';\nimport { functionType, stringType } from '../_util/type';\nimport { filterEmpty } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport type { Status, StepIconRender } from './interface';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Steps',\n  props: {\n    type: PropTypes.string.def('default'),\n    prefixCls: PropTypes.string.def('vc-steps'),\n    iconPrefix: PropTypes.string.def('vc'),\n    direction: PropTypes.string.def('horizontal'),\n    labelPlacement: PropTypes.string.def('horizontal'),\n    status: stringType<Status>('process'),\n    size: PropTypes.string.def(''),\n    progressDot: PropTypes.oneOfType([PropTypes.looseBool, PropTypes.func]).def(undefined),\n    initial: PropTypes.number.def(0),\n    current: PropTypes.number.def(0),\n    items: PropTypes.array.def(() => []),\n    icons: PropTypes.shape({\n      finish: PropTypes.any,\n      error: PropTypes.any,\n    }).loose,\n    stepIcon: functionType<StepIconRender>(),\n    isInline: PropTypes.looseBool,\n    itemRender: functionType<(item: Record<string, any>, stepItem: VueNode) => VueNode>(),\n  },\n  emits: ['change'],\n  setup(props, { slots, emit }) {\n    const onStepClick = (next: number) => {\n      const { current } = props;\n      if (current !== next) {\n        emit('change', next);\n      }\n    };\n    const renderStep = (item: VCStepProps, index: number, legacyRender?: any) => {\n      const {\n        prefixCls,\n        iconPrefix,\n        status,\n        current,\n        initial,\n        icons,\n        stepIcon = slots.stepIcon,\n        isInline,\n        itemRender,\n        progressDot = slots.progressDot,\n      } = props;\n      const mergedProgressDot = isInline || progressDot;\n      const mergedItem = { ...item, class: '' };\n      const stepNumber = initial + index;\n      const commonProps = {\n        active: stepNumber === current,\n        stepNumber: stepNumber + 1,\n        stepIndex: stepNumber,\n        key: stepNumber,\n        prefixCls,\n        iconPrefix,\n        progressDot: mergedProgressDot,\n        stepIcon,\n        icons,\n        onStepClick,\n      };\n      // fix tail color\n      if (status === 'error' && index === current - 1) {\n        mergedItem.class = `${prefixCls}-next-error`;\n      }\n\n      if (!mergedItem.status) {\n        if (stepNumber === current) {\n          mergedItem.status = status;\n        } else if (stepNumber < current) {\n          mergedItem.status = 'finish';\n        } else {\n          mergedItem.status = 'wait';\n        }\n      }\n\n      if (isInline) {\n        mergedItem.icon = undefined;\n        mergedItem.subTitle = undefined;\n      }\n      if (legacyRender) {\n        return legacyRender({ ...mergedItem, ...commonProps });\n      }\n      if (itemRender) {\n        mergedItem.itemRender = stepItem => itemRender(mergedItem, stepItem);\n      }\n\n      return <Step {...mergedItem} {...commonProps} __legacy={false} />;\n    };\n    const renderStepWithNode = (node: any, index: number) => {\n      return renderStep({ ...node.props }, index, stepProps => {\n        const stepNode = cloneElement(node, stepProps);\n        return stepNode;\n      });\n    };\n    return () => {\n      const {\n        prefixCls,\n        direction,\n        type,\n        labelPlacement,\n        iconPrefix,\n        status,\n        size,\n        current,\n        progressDot = slots.progressDot,\n        initial,\n        icons,\n        items,\n        isInline,\n        itemRender,\n        ...restProps\n      } = props;\n      const isNav = type === 'navigation';\n      const mergedProgressDot = isInline || progressDot;\n      const mergedDirection = isInline ? 'horizontal' : direction;\n      const mergedSize = isInline ? undefined : size;\n\n      const adjustedLabelPlacement = mergedProgressDot ? 'vertical' : labelPlacement;\n      const classString = classNames(prefixCls, `${prefixCls}-${direction}`, {\n        [`${prefixCls}-${mergedSize}`]: mergedSize,\n        [`${prefixCls}-label-${adjustedLabelPlacement}`]: mergedDirection === 'horizontal',\n        [`${prefixCls}-dot`]: !!mergedProgressDot,\n        [`${prefixCls}-navigation`]: isNav,\n        [`${prefixCls}-inline`]: isInline,\n      });\n\n      return (\n        <div class={classString} {...restProps}>\n          {items.filter(item => item).map((item, index) => renderStep(item, index))}\n          {filterEmpty(slots.default?.()).map(renderStepWithNode)}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-steps/index.ts",
    "content": "// base rc-steps 4.1.3\nimport Steps from './Steps';\nimport Step from './Step';\n\nexport { Step };\nexport default Steps;\n"
  },
  {
    "path": "components/vc-steps/interface.ts",
    "content": "export type Status = 'error' | 'process' | 'finish' | 'wait';\nexport type StepIconRender = (info: {\n  index: number;\n  status: Status;\n  title: any;\n  description: any;\n  node: any;\n}) => any;\n\nexport type ProgressDotRender = (info: {\n  iconDot: any;\n  index: number;\n  status: Status;\n  title: any;\n  description: any;\n}) => any;\n"
  },
  {
    "path": "components/vc-table/Body/BodyRow.tsx",
    "content": "import Cell from '../Cell';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport type { CustomizeComponent, GetComponentProps, Key, GetRowKey } from '../interface';\nimport ExpandedRow from './ExpandedRow';\nimport { computed, defineComponent, shallowRef, watchEffect } from 'vue';\nimport { useInjectTable } from '../context/TableContext';\nimport { useInjectBody } from '../context/BodyContext';\nimport classNames from '../../_util/classNames';\nimport type { MouseEventHandler } from '../../_util/EventInterface';\n\nexport interface BodyRowProps<RecordType> {\n  record: RecordType;\n  index: number;\n  renderIndex: number;\n  recordKey: Key;\n  expandedKeys: Set<Key>;\n  rowComponent: CustomizeComponent;\n  cellComponent: CustomizeComponent;\n  customRow: GetComponentProps<RecordType>;\n  rowExpandable: (record: RecordType) => boolean;\n  indent?: number;\n  rowKey: Key;\n  getRowKey: GetRowKey<RecordType>;\n  childrenColumnName: string;\n}\n\nexport default defineComponent<BodyRowProps<unknown>>({\n  name: 'BodyRow',\n  inheritAttrs: false,\n  props: [\n    'record',\n    'index',\n    'renderIndex',\n    'recordKey',\n    'expandedKeys',\n    'rowComponent',\n    'cellComponent',\n    'customRow',\n    'rowExpandable',\n    'indent',\n    'rowKey',\n    'getRowKey',\n    'childrenColumnName',\n  ] as any,\n  setup(props, { attrs }) {\n    const tableContext = useInjectTable();\n    const bodyContext = useInjectBody();\n    const expandRended = shallowRef(false);\n\n    const expanded = computed(() => props.expandedKeys && props.expandedKeys.has(props.recordKey));\n\n    watchEffect(() => {\n      if (expanded.value) {\n        expandRended.value = true;\n      }\n    });\n\n    const rowSupportExpand = computed(\n      () =>\n        bodyContext.expandableType === 'row' &&\n        (!props.rowExpandable || props.rowExpandable(props.record)),\n    );\n    // Only when row is not expandable and `children` exist in record\n    const nestExpandable = computed(() => bodyContext.expandableType === 'nest');\n    const hasNestChildren = computed(\n      () => props.childrenColumnName && props.record && props.record[props.childrenColumnName],\n    );\n    const mergedExpandable = computed(() => rowSupportExpand.value || nestExpandable.value);\n\n    const onInternalTriggerExpand = (record, event) => {\n      bodyContext.onTriggerExpand(record, event);\n    };\n\n    // =========================== onRow ===========================\n    const additionalProps = computed<Record<string, any>>(\n      () => props.customRow?.(props.record, props.index) || {},\n    );\n\n    const onClick: MouseEventHandler = (event, ...args) => {\n      if (bodyContext.expandRowByClick && mergedExpandable.value) {\n        onInternalTriggerExpand(props.record, event);\n      }\n\n      additionalProps.value?.onClick?.(event, ...args);\n    };\n\n    const computeRowClassName = computed(() => {\n      const { record, index, indent } = props;\n      const { rowClassName } = bodyContext;\n      if (typeof rowClassName === 'string') {\n        return rowClassName;\n      } else if (typeof rowClassName === 'function') {\n        return rowClassName(record, index, indent);\n      }\n      return '';\n    });\n\n    const columnsKey = computed(() => getColumnsKey(bodyContext.flattenColumns));\n\n    return () => {\n      const { class: className, style } = attrs as any;\n      const {\n        record,\n        index,\n        rowKey,\n        indent = 0,\n        rowComponent: RowComponent,\n        cellComponent,\n      } = props;\n      const { prefixCls, fixedInfoList, transformCellText } = tableContext;\n      const {\n        flattenColumns,\n        expandedRowClassName,\n        indentSize,\n        expandIcon,\n        expandedRowRender,\n        expandIconColumnIndex,\n      } = bodyContext;\n      const baseRowNode = (\n        <RowComponent\n          {...additionalProps.value}\n          data-row-key={rowKey}\n          class={classNames(\n            className,\n            `${prefixCls}-row`,\n            `${prefixCls}-row-level-${indent}`,\n            computeRowClassName.value,\n            additionalProps.value.class,\n          )}\n          style={[style, additionalProps.value.style]}\n          onClick={onClick}\n        >\n          {flattenColumns.map((column, colIndex) => {\n            const { customRender, dataIndex, className: columnClassName } = column;\n\n            const key = columnsKey[colIndex];\n            const fixedInfo = fixedInfoList[colIndex];\n\n            let additionalCellProps;\n            if (column.customCell) {\n              additionalCellProps = column.customCell(record, index, column);\n            }\n            // not use slot to fix https://github.com/vueComponent/ant-design-vue/issues/5295\n            const appendNode =\n              colIndex === (expandIconColumnIndex || 0) && nestExpandable.value ? (\n                <>\n                  <span\n                    style={{ paddingLeft: `${indentSize * indent}px` }}\n                    class={`${prefixCls}-row-indent indent-level-${indent}`}\n                  />\n                  {expandIcon({\n                    prefixCls,\n                    expanded: expanded.value,\n                    expandable: hasNestChildren.value,\n                    record,\n                    onExpand: onInternalTriggerExpand,\n                  })}\n                </>\n              ) : null;\n            return (\n              <Cell\n                cellType=\"body\"\n                class={columnClassName}\n                ellipsis={column.ellipsis}\n                align={column.align}\n                component={cellComponent}\n                prefixCls={prefixCls}\n                key={key}\n                record={record}\n                index={index}\n                renderIndex={props.renderIndex}\n                dataIndex={dataIndex}\n                customRender={customRender}\n                {...fixedInfo}\n                additionalProps={additionalCellProps}\n                column={column}\n                transformCellText={transformCellText}\n                appendNode={appendNode}\n              />\n            );\n          })}\n        </RowComponent>\n      );\n\n      // ======================== Expand Row =========================\n      let expandRowNode;\n      if (rowSupportExpand.value && (expandRended.value || expanded.value)) {\n        const expandContent = expandedRowRender({\n          record,\n          index,\n          indent: indent + 1,\n          expanded: expanded.value,\n        });\n        const computedExpandedRowClassName =\n          expandedRowClassName && expandedRowClassName(record, index, indent);\n        expandRowNode = (\n          <ExpandedRow\n            expanded={expanded.value}\n            class={classNames(\n              `${prefixCls}-expanded-row`,\n              `${prefixCls}-expanded-row-level-${indent + 1}`,\n              computedExpandedRowClassName,\n            )}\n            prefixCls={prefixCls}\n            component={RowComponent}\n            cellComponent={cellComponent}\n            colSpan={flattenColumns.length}\n            isEmpty={false}\n          >\n            {expandContent}\n          </ExpandedRow>\n        );\n      }\n\n      return (\n        <>\n          {baseRowNode}\n          {expandRowNode}\n        </>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Body/ExpandedRow.tsx",
    "content": "import type { CustomizeComponent } from '../interface';\nimport Cell from '../Cell';\nimport { defineComponent } from 'vue';\nimport { useInjectTable } from '../context/TableContext';\nimport { useInjectExpandedRow } from '../context/ExpandedRowContext';\n\nexport interface ExpandedRowProps {\n  prefixCls: string;\n  component: CustomizeComponent;\n  cellComponent: CustomizeComponent;\n  expanded: boolean;\n  colSpan: number;\n  isEmpty: boolean;\n}\n\nexport default defineComponent<ExpandedRowProps>({\n  name: 'ExpandedRow',\n  inheritAttrs: false,\n  props: ['prefixCls', 'component', 'cellComponent', 'expanded', 'colSpan', 'isEmpty'] as any,\n  setup(props, { slots, attrs }) {\n    const tableContext = useInjectTable();\n    const expandedRowContext = useInjectExpandedRow();\n    const { fixHeader, fixColumn, componentWidth, horizonScroll } = expandedRowContext;\n    return () => {\n      const { prefixCls, component: Component, cellComponent, expanded, colSpan, isEmpty } = props;\n\n      return (\n        <Component\n          class={attrs.class}\n          style={{\n            display: expanded ? null : 'none',\n          }}\n        >\n          <Cell\n            component={cellComponent}\n            prefixCls={prefixCls}\n            colSpan={colSpan}\n            v-slots={{\n              default: () => {\n                let contentNode: any = slots.default?.();\n\n                if (isEmpty ? horizonScroll.value : fixColumn.value) {\n                  contentNode = (\n                    <div\n                      style={{\n                        width: `${\n                          componentWidth.value - (fixHeader.value ? tableContext.scrollbarSize : 0)\n                        }px`,\n                        position: 'sticky',\n                        left: 0,\n                        overflow: 'hidden',\n                      }}\n                      class={`${prefixCls}-expanded-row-fixed`}\n                    >\n                      {contentNode}\n                    </div>\n                  );\n                }\n                return contentNode;\n              },\n            }}\n          ></Cell>\n        </Component>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Body/MeasureCell.tsx",
    "content": "import { defineComponent, onMounted, ref } from 'vue';\nimport VCResizeObserver from '../../vc-resize-observer';\nimport type { Key } from '../interface';\n\nexport interface MeasureCellProps {\n  columnKey: Key;\n  onColumnResize: (key: Key, width: number) => void;\n}\n\nexport default defineComponent<MeasureCellProps>({\n  name: 'MeasureCell',\n  props: ['columnKey'] as any,\n  setup(props, { emit }) {\n    const tdRef = ref<HTMLTableCellElement>();\n    onMounted(() => {\n      if (tdRef.value) {\n        emit('columnResize', props.columnKey, tdRef.value.offsetWidth);\n      }\n    });\n    return () => {\n      return (\n        <VCResizeObserver\n          onResize={({ offsetWidth }) => {\n            emit('columnResize', props.columnKey, offsetWidth);\n          }}\n        >\n          <td ref={tdRef} style={{ padding: 0, border: 0, height: 0 }}>\n            <div style={{ height: 0, overflow: 'hidden' }}>&nbsp;</div>\n          </td>\n        </VCResizeObserver>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Body/index.tsx",
    "content": "// base rc-table@7.17.2\nimport type { GetRowKey, Key, GetComponentProps } from '../interface';\nimport ExpandedRow from './ExpandedRow';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport MeasureCell from './MeasureCell';\nimport BodyRow from './BodyRow';\nimport useFlattenRecords from '../hooks/useFlattenRecords';\nimport { defineComponent, shallowRef, toRef } from 'vue';\nimport { useInjectResize } from '../context/ResizeContext';\nimport { useInjectTable } from '../context/TableContext';\nimport { useInjectBody } from '../context/BodyContext';\nimport { useProvideHover } from '../context/HoverContext';\n\nexport interface BodyProps<RecordType> {\n  data: RecordType[];\n  getRowKey: GetRowKey<RecordType>;\n  measureColumnWidth: boolean;\n  expandedKeys: Set<Key>;\n  customRow: GetComponentProps<RecordType>;\n  rowExpandable: (record: RecordType) => boolean;\n  childrenColumnName: string;\n}\n\nexport default defineComponent<BodyProps<any>>({\n  name: 'TableBody',\n  props: [\n    'data',\n    'getRowKey',\n    'measureColumnWidth',\n    'expandedKeys',\n    'customRow',\n    'rowExpandable',\n    'childrenColumnName',\n  ] as any,\n  setup(props, { slots }) {\n    const resizeContext = useInjectResize();\n    const tableContext = useInjectTable();\n    const bodyContext = useInjectBody();\n\n    const flattenData = useFlattenRecords(\n      toRef(props, 'data'),\n      toRef(props, 'childrenColumnName'),\n      toRef(props, 'expandedKeys'),\n      toRef(props, 'getRowKey'),\n    );\n    const startRow = shallowRef(-1);\n    const endRow = shallowRef(-1);\n    let timeoutId: any;\n    useProvideHover({\n      startRow,\n      endRow,\n      onHover: (start, end) => {\n        clearTimeout(timeoutId);\n        timeoutId = setTimeout(() => {\n          startRow.value = start;\n          endRow.value = end;\n        }, 100);\n      },\n    });\n    return () => {\n      const {\n        data,\n        getRowKey,\n        measureColumnWidth,\n        expandedKeys,\n        customRow,\n        rowExpandable,\n        childrenColumnName,\n      } = props;\n      const { onColumnResize } = resizeContext;\n      const { prefixCls, getComponent } = tableContext;\n      const { flattenColumns } = bodyContext;\n      const WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');\n      const trComponent = getComponent(['body', 'row'], 'tr');\n      const tdComponent = getComponent(['body', 'cell'], 'td');\n\n      let rows;\n      if (data.length) {\n        rows = flattenData.value.map((item, idx) => {\n          const { record, indent, index: renderIndex } = item;\n\n          const key = getRowKey(record, idx);\n\n          return (\n            <BodyRow\n              key={key}\n              rowKey={key}\n              record={record}\n              recordKey={key}\n              index={idx}\n              renderIndex={renderIndex}\n              rowComponent={trComponent}\n              cellComponent={tdComponent}\n              expandedKeys={expandedKeys}\n              customRow={customRow}\n              getRowKey={getRowKey}\n              rowExpandable={rowExpandable}\n              childrenColumnName={childrenColumnName}\n              indent={indent}\n            />\n          );\n        });\n      } else {\n        rows = (\n          <ExpandedRow\n            expanded\n            class={`${prefixCls}-placeholder`}\n            prefixCls={prefixCls}\n            component={trComponent}\n            cellComponent={tdComponent}\n            colSpan={flattenColumns.length}\n            isEmpty\n          >\n            {slots.emptyNode?.()}\n          </ExpandedRow>\n        );\n      }\n\n      const columnsKey = getColumnsKey(flattenColumns);\n\n      return (\n        <WrapperComponent class={`${prefixCls}-tbody`}>\n          {/* Measure body column width with additional hidden col */}\n          {measureColumnWidth && (\n            <tr\n              aria-hidden=\"true\"\n              class={`${prefixCls}-measure-row`}\n              style={{ height: 0, fontSize: 0 }}\n            >\n              {columnsKey.map(columnKey => (\n                <MeasureCell\n                  key={columnKey}\n                  columnKey={columnKey}\n                  onColumnResize={onColumnResize}\n                />\n              ))}\n            </tr>\n          )}\n\n          {rows}\n        </WrapperComponent>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Cell/index.tsx",
    "content": "import classNames from '../../_util/classNames';\nimport { filterEmpty, findDOMNode, flattenChildren, isValidElement } from '../../_util/props-util';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { watch, shallowRef, Text, computed, defineComponent, isVNode } from 'vue';\n\nimport type {\n  DataIndex,\n  ColumnType,\n  RenderedCell,\n  CustomizeComponent,\n  CellType,\n  DefaultRecordType,\n  AlignType,\n  CellEllipsisType,\n  TransformCellText,\n  AdditionalProps,\n} from '../interface';\nimport { getPathValue, validateValue } from '../utils/valueUtil';\nimport { useInjectSlots } from '../../table/context';\nimport { INTERNAL_COL_DEFINE } from '../utils/legacyUtil';\nimport { useInjectHover } from '../context/HoverContext';\nimport { useInjectSticky } from '../context/StickyContext';\nimport { warning } from '../../vc-util/warning';\nimport type { MouseEventHandler } from '../../_util/EventInterface';\nimport eagerComputed from '../../_util/eagerComputed';\nimport { customRenderSlot } from '../../_util/vnode';\nimport { addClass, removeClass } from '../../vc-util/Dom/class';\n\n/** Check if cell is in hover range */\nfunction inHoverRange(cellStartRow: number, cellRowSpan: number, startRow: number, endRow: number) {\n  const cellEndRow = cellStartRow + cellRowSpan - 1;\n  return cellStartRow <= endRow && cellEndRow >= startRow;\n}\n\nfunction isRenderCell<RecordType = DefaultRecordType>(\n  data: RenderedCell<RecordType>,\n): data is RenderedCell<RecordType> {\n  return data && typeof data === 'object' && !Array.isArray(data) && !isVNode(data);\n}\n\nexport interface CellProps<RecordType = DefaultRecordType> {\n  prefixCls?: string;\n  record?: RecordType;\n  /** `column` index is the real show rowIndex */\n  index?: number;\n  /** the index of the record. For the render(value, record, renderIndex) */\n  renderIndex?: number;\n  dataIndex?: DataIndex;\n  customRender?: ColumnType<RecordType>['customRender'];\n  component?: CustomizeComponent;\n  colSpan?: number;\n  rowSpan?: number;\n  ellipsis?: CellEllipsisType;\n  align?: AlignType;\n\n  // Fixed\n  fixLeft?: number | false;\n  fixRight?: number | false;\n  firstFixLeft?: boolean;\n  lastFixLeft?: boolean;\n  firstFixRight?: boolean;\n  lastFixRight?: boolean;\n\n  // Additional\n  /** @private Used for `expandable` with nest tree */\n  appendNode?: any;\n\n  additionalProps?: AdditionalProps;\n\n  rowType?: 'header' | 'body' | 'footer';\n\n  isSticky?: boolean;\n\n  column?: ColumnType<RecordType>;\n\n  cellType?: 'header' | 'body';\n\n  transformCellText?: TransformCellText<RecordType>;\n}\nexport default defineComponent({\n  name: 'Cell',\n  props: [\n    'prefixCls',\n    'record',\n    'index',\n    'renderIndex',\n    'dataIndex',\n    'customRender',\n    'component',\n    'colSpan',\n    'rowSpan',\n    'fixLeft',\n    'fixRight',\n    'firstFixLeft',\n    'lastFixLeft',\n    'firstFixRight',\n    'lastFixRight',\n    'appendNode',\n    'additionalProps',\n    'ellipsis',\n    'align',\n    'rowType',\n    'isSticky',\n    'column',\n    'cellType',\n    'transformCellText',\n  ],\n  setup(props, { slots }) {\n    const contextSlots = useInjectSlots();\n    const { onHover, startRow, endRow } = useInjectHover();\n    const colSpan = computed(() => {\n      return (\n        props.colSpan ??\n        props.additionalProps?.colSpan ??\n        (props.additionalProps?.colspan as number)\n      );\n    });\n    const rowSpan = computed(() => {\n      return (\n        props.rowSpan ??\n        props.additionalProps?.rowSpan ??\n        (props.additionalProps?.rowspan as number)\n      );\n    });\n    const hovering = eagerComputed(() => {\n      const { index } = props;\n      return inHoverRange(index, rowSpan.value || 1, startRow.value, endRow.value);\n    });\n    const supportSticky = useInjectSticky();\n\n    // ====================== Hover =======================\n    const onMouseenter = (event: MouseEvent, mergedRowSpan: number) => {\n      const { record, index, additionalProps } = props;\n      if (record) {\n        onHover(index, index + mergedRowSpan - 1);\n      }\n\n      additionalProps?.onMouseenter?.(event);\n    };\n\n    const onMouseleave: MouseEventHandler = event => {\n      const { record, additionalProps } = props;\n      if (record) {\n        onHover(-1, -1);\n      }\n\n      additionalProps?.onMouseleave?.(event);\n    };\n    const getTitle = (vnodes: VNodeArrayChildren) => {\n      const vnode = filterEmpty(vnodes)[0];\n      if (isVNode(vnode)) {\n        if (vnode.type === Text) {\n          return vnode.children;\n        } else {\n          return Array.isArray(vnode.children) ? getTitle(vnode.children) : undefined;\n        }\n      } else {\n        return vnode;\n      }\n    };\n\n    const hoverRef = shallowRef(null);\n    watch([hovering, () => props.prefixCls, hoverRef], () => {\n      const cellDom = findDOMNode(hoverRef.value);\n      if (!cellDom) return;\n      if (hovering.value) {\n        addClass(cellDom, `${props.prefixCls}-cell-row-hover`);\n      } else {\n        removeClass(cellDom, `${props.prefixCls}-cell-row-hover`);\n      }\n    });\n    return () => {\n      const {\n        prefixCls,\n        record,\n        index,\n        renderIndex,\n        dataIndex,\n        customRender,\n        component: Component = 'td',\n        fixLeft,\n        fixRight,\n        firstFixLeft,\n        lastFixLeft,\n        firstFixRight,\n        lastFixRight,\n        appendNode = slots.appendNode?.(),\n        additionalProps = {},\n        ellipsis,\n        align,\n        rowType,\n        isSticky,\n        column = {},\n        cellType,\n      } = props;\n      const cellPrefixCls = `${prefixCls}-cell`;\n\n      // ==================== Child Node ====================\n      let cellProps: CellType;\n      let childNode;\n      const children = slots.default?.();\n      if (validateValue(children) || cellType === 'header') {\n        childNode = children;\n      } else {\n        const value = getPathValue(record, dataIndex);\n\n        // Customize render node\n        childNode = value;\n        if (customRender) {\n          const renderData = customRender({\n            text: value,\n            value,\n            record,\n            index,\n            renderIndex,\n            column: column.__originColumn__,\n          });\n\n          if (isRenderCell(renderData)) {\n            if (process.env.NODE_ENV !== 'production') {\n              warning(\n                false,\n                '`columns.customRender` return cell props is deprecated with perf issue, please use `customCell` instead.',\n              );\n            }\n            childNode = renderData.children;\n            cellProps = renderData.props;\n          } else {\n            childNode = renderData;\n          }\n        }\n\n        if (\n          !(INTERNAL_COL_DEFINE in column) &&\n          cellType === 'body' &&\n          contextSlots.value.bodyCell &&\n          !column.slots?.customRender\n        ) {\n          const child = customRenderSlot(\n            contextSlots.value,\n            'bodyCell',\n            {\n              text: value,\n              value,\n              record,\n              index,\n              column: column.__originColumn__,\n            },\n            () => {\n              const fallback = childNode === undefined ? value : childNode;\n              return [\n                (typeof fallback === 'object' && isValidElement(fallback)) ||\n                typeof fallback !== 'object'\n                  ? fallback\n                  : null,\n              ];\n            },\n          );\n          childNode = flattenChildren(child as any);\n        }\n        /** maybe we should @deprecated */\n        if (props.transformCellText) {\n          childNode = props.transformCellText({\n            text: childNode,\n            record,\n            index,\n            column: column.__originColumn__,\n          });\n        }\n      }\n\n      // Not crash if final `childNode` is not validate VueNode\n      if (typeof childNode === 'object' && !Array.isArray(childNode) && !isVNode(childNode)) {\n        childNode = null;\n      }\n\n      if (ellipsis && (lastFixLeft || firstFixRight)) {\n        childNode = <span class={`${cellPrefixCls}-content`}>{childNode}</span>;\n      }\n\n      if (Array.isArray(childNode) && childNode.length === 1) {\n        childNode = childNode[0];\n      }\n      const {\n        colSpan: cellColSpan,\n        rowSpan: cellRowSpan,\n        style: cellStyle,\n        class: cellClassName,\n        ...restCellProps\n      } = cellProps || {};\n      const mergedColSpan = (cellColSpan !== undefined ? cellColSpan : colSpan.value) ?? 1;\n      const mergedRowSpan = (cellRowSpan !== undefined ? cellRowSpan : rowSpan.value) ?? 1;\n\n      if (mergedColSpan === 0 || mergedRowSpan === 0) {\n        return null;\n      }\n\n      // ====================== Fixed =======================\n      const fixedStyle: CSSProperties = {};\n      const isFixLeft = typeof fixLeft === 'number' && supportSticky.value;\n      const isFixRight = typeof fixRight === 'number' && supportSticky.value;\n\n      if (isFixLeft) {\n        fixedStyle.position = 'sticky';\n        fixedStyle.left = `${fixLeft}px`;\n      }\n      if (isFixRight) {\n        fixedStyle.position = 'sticky';\n\n        fixedStyle.right = `${fixRight}px`;\n      }\n\n      // ====================== Align =======================\n      const alignStyle: CSSProperties = {};\n      if (align) {\n        alignStyle.textAlign = align;\n      }\n\n      // ====================== Render ======================\n      let title: string;\n      const ellipsisConfig = ellipsis === true ? { showTitle: true } : ellipsis;\n      if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {\n        if (typeof childNode === 'string' || typeof childNode === 'number') {\n          title = childNode.toString();\n        } else if (isVNode(childNode)) {\n          title = getTitle([childNode]);\n        }\n      }\n\n      const componentProps = {\n        title,\n        ...restCellProps,\n        ...additionalProps,\n        colSpan: mergedColSpan !== 1 ? mergedColSpan : null,\n        rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null,\n        class: classNames(\n          cellPrefixCls,\n          {\n            [`${cellPrefixCls}-fix-left`]: isFixLeft && supportSticky.value,\n            [`${cellPrefixCls}-fix-left-first`]: firstFixLeft && supportSticky.value,\n            [`${cellPrefixCls}-fix-left-last`]: lastFixLeft && supportSticky.value,\n            [`${cellPrefixCls}-fix-right`]: isFixRight && supportSticky.value,\n            [`${cellPrefixCls}-fix-right-first`]: firstFixRight && supportSticky.value,\n            [`${cellPrefixCls}-fix-right-last`]: lastFixRight && supportSticky.value,\n            [`${cellPrefixCls}-ellipsis`]: ellipsis,\n            [`${cellPrefixCls}-with-append`]: appendNode,\n            [`${cellPrefixCls}-fix-sticky`]:\n              (isFixLeft || isFixRight) && isSticky && supportSticky.value,\n          },\n          additionalProps.class,\n          cellClassName,\n        ),\n        onMouseenter: (e: MouseEvent) => {\n          onMouseenter(e, mergedRowSpan);\n        },\n        onMouseleave,\n        style: [additionalProps.style, alignStyle, fixedStyle, cellStyle],\n      };\n\n      return (\n        <Component {...componentProps} ref={hoverRef}>\n          {appendNode}\n          {childNode}\n          {slots.dragHandle?.()}\n        </Component>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/ColGroup.tsx",
    "content": "import type { ColumnType } from './interface';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\n\nexport interface ColGroupProps<RecordType> {\n  colWidths: readonly (number | string)[];\n  columns?: readonly ColumnType<RecordType>[];\n  columCount?: number;\n}\n\nfunction ColGroup<RecordType>({ colWidths, columns, columCount }: ColGroupProps<RecordType>) {\n  const cols = [];\n  const len = columCount || columns.length;\n\n  // Only insert col with width & additional props\n  // Skip if rest col do not have any useful info\n  let mustInsert = false;\n  for (let i = len - 1; i >= 0; i -= 1) {\n    const width = colWidths[i];\n    const column = columns && columns[i];\n    const additionalProps = column && column[INTERNAL_COL_DEFINE];\n\n    if (width || additionalProps || mustInsert) {\n      const { columnType, ...restAdditionalProps } = additionalProps || {};\n      cols.unshift(\n        <col\n          key={i}\n          style={{ width: typeof width === 'number' ? `${width}px` : width }}\n          {...restAdditionalProps}\n        />,\n      );\n      mustInsert = true;\n    }\n  }\n\n  return <colgroup>{cols}</colgroup>;\n}\n\nexport default ColGroup;\n"
  },
  {
    "path": "components/vc-table/FixedHolder/index.tsx",
    "content": "import type { HeaderProps } from '../Header/Header';\nimport ColGroup from '../ColGroup';\nimport type { ColumnsType, ColumnType, DefaultRecordType } from '../interface';\nimport type { Ref } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  toRef,\n  watchEffect,\n} from 'vue';\nimport { useInjectTable } from '../context/TableContext';\nimport classNames from '../../_util/classNames';\nimport addEventListenerWrap from '../../vc-util/Dom/addEventListener';\n\nfunction useColumnWidth(colWidthsRef: Ref<readonly number[]>, columCountRef: Ref<number>) {\n  return computed(() => {\n    const cloneColumns: number[] = [];\n    const colWidths = colWidthsRef.value;\n    const columCount = columCountRef.value;\n    for (let i = 0; i < columCount; i += 1) {\n      const val = colWidths[i];\n      if (val !== undefined) {\n        cloneColumns[i] = val;\n      } else {\n        return null;\n      }\n    }\n    return cloneColumns;\n  });\n}\n\nexport interface FixedHeaderProps<RecordType> extends HeaderProps<RecordType> {\n  noData: boolean;\n  maxContentScroll: boolean;\n  colWidths: readonly number[];\n  columCount: number;\n  direction: 'ltr' | 'rtl';\n  fixHeader: boolean;\n  stickyTopOffset?: number;\n  stickyBottomOffset?: number;\n  stickyClassName?: string;\n  onScroll: (info: { currentTarget: HTMLDivElement; scrollLeft?: number }) => void;\n}\n\nexport default defineComponent<FixedHeaderProps<DefaultRecordType>>({\n  name: 'FixedHolder',\n  inheritAttrs: false,\n  props: [\n    'columns',\n    'flattenColumns',\n    'stickyOffsets',\n    'customHeaderRow',\n    'noData',\n    'maxContentScroll',\n    'colWidths',\n    'columCount',\n    'direction',\n    'fixHeader',\n    'stickyTopOffset',\n    'stickyBottomOffset',\n    'stickyClassName',\n  ] as any,\n  emits: ['scroll'],\n  setup(props, { attrs, slots, emit }) {\n    const tableContext = useInjectTable();\n    const combinationScrollBarSize = computed(() =>\n      tableContext.isSticky && !props.fixHeader ? 0 : tableContext.scrollbarSize,\n    );\n    const scrollRef = ref();\n    const onWheel = (e: WheelEvent) => {\n      const { currentTarget, deltaX } = e;\n      if (deltaX) {\n        emit('scroll', { currentTarget, scrollLeft: (currentTarget as any).scrollLeft + deltaX });\n        e.preventDefault();\n      }\n    };\n    const wheelEvent = ref();\n    onMounted(() => {\n      nextTick(() => {\n        wheelEvent.value = addEventListenerWrap(scrollRef.value, 'wheel', onWheel);\n      });\n    });\n    onBeforeUnmount(() => {\n      wheelEvent.value?.remove();\n    });\n\n    // Check if all flattenColumns has width\n    const allFlattenColumnsWithWidth = computed(() =>\n      props.flattenColumns.every(\n        column => column.width && column.width !== 0 && column.width !== '0px',\n      ),\n    );\n\n    const columnsWithScrollbar = ref<ColumnsType<unknown>>([]);\n    const flattenColumnsWithScrollbar = ref<ColumnsType<unknown>>([]);\n\n    watchEffect(() => {\n      // Add scrollbar column\n      const lastColumn = props.flattenColumns[props.flattenColumns.length - 1];\n      const ScrollBarColumn: ColumnType<unknown> & { scrollbar: true } = {\n        fixed: lastColumn ? lastColumn.fixed : null,\n        scrollbar: true,\n        customHeaderCell: () => ({\n          class: `${tableContext.prefixCls}-cell-scrollbar`,\n        }),\n      };\n\n      columnsWithScrollbar.value = combinationScrollBarSize.value\n        ? [...props.columns, ScrollBarColumn]\n        : props.columns;\n\n      flattenColumnsWithScrollbar.value = combinationScrollBarSize.value\n        ? [...props.flattenColumns, ScrollBarColumn]\n        : props.flattenColumns;\n    });\n\n    // Calculate the sticky offsets\n    const headerStickyOffsets = computed(() => {\n      const { stickyOffsets, direction } = props;\n      const { right, left } = stickyOffsets;\n      return {\n        ...stickyOffsets,\n        left:\n          direction === 'rtl'\n            ? [...left.map(width => width + combinationScrollBarSize.value), 0]\n            : left,\n        right:\n          direction === 'rtl'\n            ? right\n            : [...right.map(width => width + combinationScrollBarSize.value), 0],\n        isSticky: tableContext.isSticky,\n      };\n    });\n\n    const mergedColumnWidth = useColumnWidth(toRef(props, 'colWidths'), toRef(props, 'columCount'));\n\n    return () => {\n      const {\n        noData,\n        columCount,\n        stickyTopOffset,\n        stickyBottomOffset,\n        stickyClassName,\n        maxContentScroll,\n      } = props;\n      const { isSticky } = tableContext;\n      return (\n        <div\n          style={{\n            overflow: 'hidden',\n            ...(isSticky ? { top: `${stickyTopOffset}px`, bottom: `${stickyBottomOffset}px` } : {}),\n          }}\n          ref={scrollRef}\n          class={classNames(attrs.class, {\n            [stickyClassName]: !!stickyClassName,\n          })}\n        >\n          <table\n            style={{\n              tableLayout: 'fixed',\n              visibility: noData || mergedColumnWidth.value ? null : 'hidden',\n            }}\n          >\n            {(!noData || !maxContentScroll || allFlattenColumnsWithWidth.value) && (\n              <ColGroup\n                colWidths={\n                  mergedColumnWidth.value\n                    ? [...mergedColumnWidth.value, combinationScrollBarSize.value]\n                    : []\n                }\n                columCount={columCount + 1}\n                columns={flattenColumnsWithScrollbar.value}\n              />\n            )}\n            {slots.default?.({\n              ...props,\n              stickyOffsets: headerStickyOffsets.value,\n              columns: columnsWithScrollbar.value,\n              flattenColumns: flattenColumnsWithScrollbar.value,\n            })}\n          </table>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Footer/Cell.tsx",
    "content": "import { defineComponent } from 'vue';\nimport Cell from '../Cell';\nimport { useInjectSummary } from '../context/SummaryContext';\nimport { useInjectTable } from '../context/TableContext';\nimport type { AlignType } from '../interface';\nimport { getCellFixedInfo } from '../utils/fixUtil';\n\nexport interface SummaryCellProps {\n  index?: number;\n  colSpan?: number;\n  rowSpan?: number;\n  align?: AlignType;\n}\n\nexport default defineComponent({\n  name: 'ATableSummaryCell',\n  props: ['index', 'colSpan', 'rowSpan', 'align'],\n  setup(props, { attrs, slots }) {\n    const tableContext = useInjectTable();\n    const summaryContext = useInjectSummary();\n    return () => {\n      const { index, colSpan = 1, rowSpan, align } = props;\n      const { prefixCls, direction } = tableContext;\n      const { scrollColumnIndex, stickyOffsets, flattenColumns } = summaryContext;\n      const lastIndex = index + colSpan - 1;\n      const mergedColSpan = lastIndex + 1 === scrollColumnIndex ? colSpan + 1 : colSpan;\n\n      const fixedInfo = getCellFixedInfo(\n        index,\n        index + mergedColSpan - 1,\n        flattenColumns,\n        stickyOffsets,\n        direction,\n      );\n      return (\n        <Cell\n          class={attrs.class as string}\n          index={index}\n          component=\"td\"\n          prefixCls={prefixCls}\n          record={null}\n          dataIndex={null}\n          align={align}\n          colSpan={mergedColSpan}\n          rowSpan={rowSpan}\n          customRender={() => slots.default?.()}\n          {...fixedInfo}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Footer/Row.tsx",
    "content": "import { defineComponent } from 'vue';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATableSummaryRow',\n  setup(_props, { slots }) {\n    return () => <tr>{slots.default?.()}</tr>;\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Footer/Summary.tsx",
    "content": "import { computed, defineComponent, onBeforeUnmount, watchEffect } from 'vue';\nimport { useInjectTable } from '../context/TableContext';\n\nexport interface SummaryProps {\n  fixed?: boolean | 'top' | 'bottom';\n}\n\nlet indexGuid = 0;\nconst Summary = defineComponent<SummaryProps>({\n  name: 'TableSummary',\n  props: ['fixed'] as any,\n  setup(props, { slots }) {\n    const tableContext = useInjectTable();\n    const uniKey = `table-summary-uni-key-${++indexGuid}`;\n    const fixed = computed(() => (props.fixed as string) === '' || props.fixed);\n    watchEffect(() => {\n      tableContext.summaryCollect(uniKey, fixed.value);\n    });\n    onBeforeUnmount(() => {\n      tableContext.summaryCollect(uniKey, false);\n    });\n    return () => slots.default?.();\n  },\n});\n\nexport default Summary;\n"
  },
  {
    "path": "components/vc-table/Footer/index.tsx",
    "content": "import Summary from './Summary';\nimport SummaryRow from './Row';\nimport SummaryCell from './Cell';\nimport type { DefaultRecordType, StickyOffsets } from '../interface';\nimport { computed, defineComponent, reactive, toRef } from 'vue';\nimport type { FlattenColumns } from '../context/SummaryContext';\nimport { useProvideSummary } from '../context/SummaryContext';\nimport { useInjectTable } from '../context/TableContext';\n\nexport interface FooterProps<RecordType = DefaultRecordType> {\n  stickyOffsets: StickyOffsets;\n  flattenColumns: FlattenColumns<RecordType>;\n}\n\nexport default defineComponent<FooterProps>({\n  name: 'TableFooter',\n  inheritAttrs: false,\n  props: ['stickyOffsets', 'flattenColumns'] as any,\n  setup(props, { slots }) {\n    const tableContext = useInjectTable();\n    useProvideSummary(\n      reactive({\n        stickyOffsets: toRef(props, 'stickyOffsets'),\n        flattenColumns: toRef(props, 'flattenColumns'),\n        scrollColumnIndex: computed(() => {\n          const lastColumnIndex = props.flattenColumns.length - 1;\n          const scrollColumn = props.flattenColumns[lastColumnIndex];\n          return scrollColumn?.scrollbar ? lastColumnIndex : null;\n        }),\n      }),\n    );\n    return () => {\n      const { prefixCls } = tableContext;\n      return <tfoot class={`${prefixCls}-summary`}>{slots.default?.()}</tfoot>;\n    };\n  },\n});\n\nexport { SummaryRow, SummaryCell };\nexport const FooterComponents = Summary;\n"
  },
  {
    "path": "components/vc-table/Header/DragHandle.tsx",
    "content": "import addEventListenerWrap from '../../vc-util/Dom/addEventListener';\nimport type { EventHandler } from '../../_util/EventInterface';\nimport raf from '../../_util/raf';\nimport {\n  defineComponent,\n  onUnmounted,\n  computed,\n  shallowRef,\n  watchEffect,\n  getCurrentInstance,\n} from 'vue';\nimport type { PropType } from 'vue';\nimport devWarning from '../../vc-util/devWarning';\nimport type { ColumnType } from '../interface';\nimport { useInjectTableContext } from '../../table/context';\nimport supportsPassive from '../../_util/supportsPassive';\n\nconst events = {\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup',\n  },\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend',\n  },\n};\ntype HandleEvent = MouseEvent & TouchEvent;\n\nconst defaultMinWidth = 50;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DragHandle',\n  props: {\n    prefixCls: String,\n    width: {\n      type: Number,\n      required: true,\n    },\n    minWidth: {\n      type: Number,\n      default: defaultMinWidth,\n    },\n    maxWidth: {\n      type: Number,\n      default: Infinity,\n    },\n    column: {\n      type: Object as PropType<ColumnType<any>>,\n      default: undefined as ColumnType<any>,\n    },\n  },\n  setup(props) {\n    let startX = 0;\n    let moveEvent = { remove: () => {} };\n    let stopEvent = { remove: () => {} };\n    const removeEvents = () => {\n      moveEvent.remove();\n      stopEvent.remove();\n    };\n    onUnmounted(() => {\n      removeEvents();\n    });\n    watchEffect(() => {\n      devWarning(!isNaN(props.width), 'Table', 'width must be a number when use resizable');\n    });\n\n    const { onResizeColumn } = useInjectTableContext();\n    const minWidth = computed(() => {\n      return typeof props.minWidth === 'number' && !isNaN(props.minWidth)\n        ? props.minWidth\n        : defaultMinWidth;\n    });\n    const maxWidth = computed(() => {\n      return typeof props.maxWidth === 'number' && !isNaN(props.maxWidth)\n        ? props.maxWidth\n        : Infinity;\n    });\n    const instance = getCurrentInstance();\n    let baseWidth = 0;\n    const dragging = shallowRef(false);\n    let rafId: number;\n    const updateWidth = (e: HandleEvent) => {\n      let pageX = 0;\n      if (e.touches) {\n        if (e.touches.length) {\n          // touchmove\n          pageX = e.touches[0].pageX;\n        } else {\n          // touchend\n          pageX = e.changedTouches[0].pageX;\n        }\n      } else {\n        pageX = e.pageX;\n      }\n      const tmpDeltaX = startX - pageX;\n      let w = Math.max(baseWidth - tmpDeltaX, minWidth.value);\n      w = Math.min(w, maxWidth.value);\n      raf.cancel(rafId);\n      rafId = raf(() => {\n        onResizeColumn(w, props.column.__originColumn__);\n      });\n    };\n    const handleMove = (e: HandleEvent) => {\n      updateWidth(e);\n    };\n    const handleStop = (e: HandleEvent) => {\n      dragging.value = false;\n      updateWidth(e);\n      removeEvents();\n    };\n    const handleStart = (e: HandleEvent, eventsFor: any) => {\n      dragging.value = true;\n      removeEvents();\n      baseWidth = instance.vnode.el.parentNode.getBoundingClientRect().width;\n      if (e instanceof MouseEvent && e.which !== 1) {\n        return;\n      }\n      if (e.stopPropagation) e.stopPropagation();\n      startX = e.touches ? e.touches[0].pageX : e.pageX;\n      moveEvent = addEventListenerWrap(document.documentElement, eventsFor.move, handleMove);\n      stopEvent = addEventListenerWrap(document.documentElement, eventsFor.stop, handleStop);\n    };\n    const handleDown: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      handleStart(e, events.mouse);\n    };\n    const handleTouchDown: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      handleStart(e, events.touch);\n    };\n\n    const handleClick: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n    };\n\n    return () => {\n      const { prefixCls } = props;\n      const touchEvents = {\n        [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: e => handleTouchDown(e),\n      };\n      return (\n        <div\n          class={`${prefixCls}-resize-handle ${dragging.value ? 'dragging' : ''}`}\n          onMousedown={handleDown}\n          {...touchEvents}\n          onClick={handleClick}\n        >\n          <div class={`${prefixCls}-resize-handle-line`}></div>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Header/Header.tsx",
    "content": "import classNames from '../../_util/classNames';\nimport { computed, defineComponent } from 'vue';\nimport { useInjectTable } from '../context/TableContext';\nimport type {\n  ColumnsType,\n  CellType,\n  StickyOffsets,\n  ColumnType,\n  GetComponentProps,\n  ColumnGroupType,\n  DefaultRecordType,\n} from '../interface';\nimport HeaderRow from './HeaderRow';\n\nfunction parseHeaderRows<RecordType>(\n  rootColumns: ColumnsType<RecordType>,\n): CellType<RecordType>[][] {\n  const rows: CellType<RecordType>[][] = [];\n\n  function fillRowCells(\n    columns: ColumnsType<RecordType>,\n    colIndex: number,\n    rowIndex = 0,\n  ): number[] {\n    // Init rows\n    rows[rowIndex] = rows[rowIndex] || [];\n\n    let currentColIndex = colIndex;\n    const colSpans: number[] = columns.filter(Boolean).map(column => {\n      const cell: CellType<RecordType> = {\n        key: column.key,\n        class: classNames(column.className, column.class),\n        // children: column.title,\n        column,\n        colStart: currentColIndex,\n      };\n\n      let colSpan = 1;\n\n      const subColumns = (column as ColumnGroupType<RecordType>).children;\n      if (subColumns && subColumns.length > 0) {\n        colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(\n          (total, count) => total + count,\n          0,\n        );\n        cell.hasSubColumns = true;\n      }\n\n      if ('colSpan' in column) {\n        ({ colSpan } = column);\n      }\n\n      if ('rowSpan' in column) {\n        cell.rowSpan = column.rowSpan;\n      }\n\n      cell.colSpan = colSpan;\n      cell.colEnd = cell.colStart + colSpan - 1;\n      rows[rowIndex].push(cell);\n\n      currentColIndex += colSpan;\n\n      return colSpan;\n    });\n\n    return colSpans;\n  }\n\n  // Generate `rows` cell data\n  fillRowCells(rootColumns, 0);\n\n  // Handle `rowSpan`\n  const rowCount = rows.length;\n  for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n    rows[rowIndex].forEach(cell => {\n      if (!('rowSpan' in cell) && !cell.hasSubColumns) {\n        // eslint-disable-next-line no-param-reassign\n        cell.rowSpan = rowCount - rowIndex;\n      }\n    });\n  }\n\n  return rows;\n}\n\nexport interface HeaderProps<RecordType = DefaultRecordType> {\n  columns: ColumnsType<RecordType>;\n  flattenColumns: readonly ColumnType<RecordType>[];\n  stickyOffsets: StickyOffsets;\n  customHeaderRow: GetComponentProps<readonly ColumnType<RecordType>[]>;\n}\n\nexport default defineComponent<HeaderProps>({\n  name: 'TableHeader',\n  inheritAttrs: false,\n  props: ['columns', 'flattenColumns', 'stickyOffsets', 'customHeaderRow'] as any,\n  setup(props) {\n    const tableContext = useInjectTable();\n    const rows = computed(() => parseHeaderRows(props.columns));\n    return () => {\n      const { prefixCls, getComponent } = tableContext;\n      const { stickyOffsets, flattenColumns, customHeaderRow } = props;\n      const WrapperComponent = getComponent(['header', 'wrapper'], 'thead');\n      const trComponent = getComponent(['header', 'row'], 'tr');\n      const thComponent = getComponent(['header', 'cell'], 'th');\n      return (\n        <WrapperComponent class={`${prefixCls}-thead`}>\n          {rows.value.map((row, rowIndex) => {\n            const rowNode = (\n              <HeaderRow\n                key={rowIndex}\n                flattenColumns={flattenColumns}\n                cells={row}\n                stickyOffsets={stickyOffsets}\n                rowComponent={trComponent}\n                cellComponent={thComponent}\n                customHeaderRow={customHeaderRow}\n                index={rowIndex}\n              />\n            );\n\n            return rowNode;\n          })}\n        </WrapperComponent>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Header/HeaderRow.tsx",
    "content": "import { defineComponent } from 'vue';\nimport Cell from '../Cell';\nimport { useInjectTable } from '../context/TableContext';\nimport type {\n  CellType,\n  StickyOffsets,\n  ColumnType,\n  CustomizeComponent,\n  GetComponentProps,\n  DefaultRecordType,\n} from '../interface';\nimport { getCellFixedInfo } from '../utils/fixUtil';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport DragHandleVue from './DragHandle';\n\nexport interface RowProps<RecordType = DefaultRecordType> {\n  cells: readonly CellType<RecordType>[];\n  stickyOffsets: StickyOffsets;\n  flattenColumns: readonly ColumnType<RecordType>[];\n  rowComponent: CustomizeComponent;\n  cellComponent: CustomizeComponent;\n  customHeaderRow: GetComponentProps<readonly ColumnType<RecordType>[]>;\n  index: number;\n}\n\nexport default defineComponent<RowProps>({\n  name: 'HeaderRow',\n  props: [\n    'cells',\n    'stickyOffsets',\n    'flattenColumns',\n    'rowComponent',\n    'cellComponent',\n    'index',\n    'customHeaderRow',\n  ] as any,\n  setup(props: RowProps) {\n    const tableContext = useInjectTable();\n    return () => {\n      const { prefixCls, direction } = tableContext;\n      const {\n        cells,\n        stickyOffsets,\n        flattenColumns,\n        rowComponent: RowComponent,\n        cellComponent: CellComponent,\n        customHeaderRow,\n        index,\n      } = props;\n\n      let rowProps;\n      if (customHeaderRow) {\n        rowProps = customHeaderRow(\n          cells.map(cell => cell.column),\n          index,\n        );\n      }\n\n      const columnsKey = getColumnsKey(cells.map(cell => cell.column));\n\n      return (\n        <RowComponent {...rowProps}>\n          {cells.map((cell: CellType, cellIndex) => {\n            const { column } = cell;\n            const fixedInfo = getCellFixedInfo(\n              cell.colStart,\n              cell.colEnd,\n              flattenColumns,\n              stickyOffsets,\n              direction,\n            );\n\n            let additionalProps;\n            if (column && column.customHeaderCell) {\n              additionalProps = cell.column.customHeaderCell(column);\n            }\n            const col: ColumnType<any> = column;\n            return (\n              <Cell\n                {...cell}\n                cellType=\"header\"\n                ellipsis={column.ellipsis}\n                align={column.align}\n                component={CellComponent}\n                prefixCls={prefixCls}\n                key={columnsKey[cellIndex]}\n                {...fixedInfo}\n                additionalProps={additionalProps}\n                rowType=\"header\"\n                column={column}\n                v-slots={{\n                  default: () => column.title,\n                  dragHandle: () =>\n                    col.resizable ? (\n                      <DragHandleVue\n                        prefixCls={prefixCls}\n                        width={col.width as number}\n                        minWidth={col.minWidth}\n                        maxWidth={col.maxWidth}\n                        column={col}\n                      />\n                    ) : null,\n                }}\n              />\n            );\n          })}\n        </RowComponent>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/Panel/index.tsx",
    "content": "function Panel(_, { slots }) {\n  return <div>{slots.default?.()}</div>;\n}\n\nPanel.displayName = 'Panel';\n\nexport default Panel;\n"
  },
  {
    "path": "components/vc-table/Table.tsx",
    "content": "import Header from './Header/Header';\nimport type {\n  GetRowKey,\n  ColumnsType,\n  TableComponents,\n  Key,\n  TriggerEventHandler,\n  GetComponentProps,\n  PanelRender,\n  TableLayout,\n  RowClassName,\n  CustomizeComponent,\n  ColumnType,\n  CustomizeScrollBody,\n  TableSticky,\n  ExpandedRowRender,\n  RenderExpandIcon,\n  TransformCellText,\n  DefaultRecordType,\n} from './interface';\nimport Body from './Body';\nimport useColumns from './hooks/useColumns';\nimport { useLayoutState, useTimeoutLock } from './hooks/useFrame';\nimport { getPathValue, mergeObject, validateValue, getColumnsKey } from './utils/valueUtil';\nimport useStickyOffsets from './hooks/useStickyOffsets';\nimport ColGroup from './ColGroup';\nimport Panel from './Panel';\nimport Footer from './Footer';\nimport { findAllChildrenKeys, renderExpandIcon } from './utils/expandUtil';\nimport { getCellFixedInfo } from './utils/fixUtil';\nimport StickyScrollBar from './stickyScrollBar';\nimport useSticky from './hooks/useSticky';\nimport FixedHolder from './FixedHolder';\nimport type { CSSProperties } from 'vue';\nimport {\n  onUpdated,\n  computed,\n  defineComponent,\n  nextTick,\n  onMounted,\n  reactive,\n  ref,\n  shallowRef,\n  toRef,\n  toRefs,\n  watch,\n  watchEffect,\n} from 'vue';\nimport { warning } from '../vc-util/warning';\nimport { reactivePick } from '../_util/reactivePick';\nimport useState from '../_util/hooks/useState';\nimport { toPx } from '../_util/util';\nimport isVisible from '../vc-util/Dom/isVisible';\nimport { getTargetScrollBarSize } from '../_util/getScrollBarSize';\nimport classNames from '../_util/classNames';\nimport type { EventHandler } from '../_util/EventInterface';\nimport VCResizeObserver from '../vc-resize-observer';\nimport { useProvideTable } from './context/TableContext';\nimport { useProvideBody } from './context/BodyContext';\nimport { useProvideResize } from './context/ResizeContext';\nimport { useProvideSticky } from './context/StickyContext';\nimport pickAttrs from '../_util/pickAttrs';\nimport { useProvideExpandedRow } from './context/ExpandedRowContext';\n\n// Used for conditions cache\nconst EMPTY_DATA = [];\n\n// Used for customize scroll\nconst EMPTY_SCROLL_TARGET = {};\n\nexport const INTERNAL_HOOKS = 'rc-table-internal-hook';\n\nexport interface TableProps<RecordType = DefaultRecordType> {\n  prefixCls?: string;\n  data?: RecordType[];\n  columns?: ColumnsType<RecordType>;\n  rowKey?: string | GetRowKey<RecordType>;\n  tableLayout?: TableLayout;\n\n  // Fixed Columns\n  scroll?: { x?: number | true | string; y?: number | string };\n\n  rowClassName?: string | RowClassName<RecordType>;\n\n  // Additional Part\n  title?: PanelRender<RecordType>;\n  footer?: PanelRender<RecordType>;\n  // summary?: (data: readonly RecordType[]) => any;\n\n  // Customize\n  id?: string;\n  showHeader?: boolean;\n  components?: TableComponents<RecordType>;\n  customRow?: GetComponentProps<RecordType>;\n  customHeaderRow?: GetComponentProps<ColumnType<RecordType>[]>;\n  // emptyText?: any;\n\n  direction?: 'ltr' | 'rtl';\n\n  // Expandable\n  expandFixed?: 'left' | 'right' | boolean;\n  expandColumnWidth?: number;\n  expandedRowKeys?: Key[];\n  defaultExpandedRowKeys?: Key[];\n  expandedRowRender?: ExpandedRowRender<RecordType>;\n  expandRowByClick?: boolean;\n  expandIcon?: RenderExpandIcon<RecordType>;\n  onExpand?: (expanded: boolean, record: RecordType) => void;\n  onExpandedRowsChange?: (expandedKeys: Key[]) => void;\n  defaultExpandAllRows?: boolean;\n  indentSize?: number;\n  expandIconColumnIndex?: number;\n  showExpandColumn?: boolean;\n  expandedRowClassName?: RowClassName<RecordType>;\n  childrenColumnName?: string;\n  rowExpandable?: (record: RecordType) => boolean;\n\n  // =================================== Internal ===================================\n  /**\n   * @private Internal usage, may remove by refactor. Should always use `columns` instead.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  internalHooks?: string;\n\n  /**\n   * @private Internal usage, may remove by refactor. Should always use `columns` instead.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  // Used for antd table transform column with additional column\n  transformColumns?: (columns: ColumnsType<RecordType>) => ColumnsType<RecordType>;\n\n  /**\n   * @private Internal usage, may remove by refactor.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  internalRefs?: {\n    body: HTMLDivElement;\n  };\n\n  sticky?: boolean | TableSticky;\n\n  canExpandable?: boolean;\n\n  onUpdateInternalRefs?: (refs: Record<string, any>) => void;\n\n  transformCellText?: TransformCellText<RecordType>;\n}\n\nexport default defineComponent({\n  name: 'VcTable',\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'data',\n    'columns',\n    'rowKey',\n    'tableLayout',\n    'scroll',\n    'rowClassName',\n    'title',\n    'footer',\n    'id',\n    'showHeader',\n    'components',\n    'customRow',\n    'customHeaderRow',\n    'direction',\n    'expandFixed',\n    'expandColumnWidth',\n    'expandedRowKeys',\n    'defaultExpandedRowKeys',\n    'expandedRowRender',\n    'expandRowByClick',\n    'expandIcon',\n    'onExpand',\n    'onExpandedRowsChange',\n    'onUpdate:expandedRowKeys',\n    'defaultExpandAllRows',\n    'indentSize',\n    'expandIconColumnIndex',\n    'expandedRowClassName',\n    'childrenColumnName',\n    'rowExpandable',\n    'sticky',\n    'transformColumns',\n    'internalHooks',\n    'internalRefs',\n    'canExpandable',\n    'onUpdateInternalRefs',\n    'transformCellText',\n  ],\n  emits: ['expand', 'expandedRowsChange', 'updateInternalRefs', 'update:expandedRowKeys'],\n  setup(props, { attrs, slots, emit }) {\n    const mergedData = computed(() => props.data || EMPTY_DATA);\n    const hasData = computed(() => !!mergedData.value.length);\n    // ==================== Customize =====================\n    const mergedComponents = computed(() =>\n      mergeObject<TableComponents<any>>(props.components, {}),\n    );\n\n    const getComponent = (path, defaultComponent?: string) =>\n      getPathValue<CustomizeComponent, TableComponents<any>>(mergedComponents.value, path) ||\n      defaultComponent;\n\n    const getRowKey = computed(() => {\n      const rowKey = props.rowKey;\n      if (typeof rowKey === 'function') {\n        return rowKey;\n      }\n      return record => {\n        const key = record && record[rowKey];\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            key !== undefined,\n            'Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.',\n          );\n        }\n\n        return key;\n      };\n    });\n\n    // ====================== Expand ======================\n\n    const mergedExpandIcon = computed(() => props.expandIcon || renderExpandIcon);\n\n    const mergedChildrenColumnName = computed(() => props.childrenColumnName || 'children');\n\n    const expandableType = computed(() => {\n      if (props.expandedRowRender) {\n        return 'row';\n      }\n      /* eslint-disable no-underscore-dangle */\n      /**\n       * Fix https://github.com/ant-design/ant-design/issues/21154\n       * This is a workaround to not to break current behavior.\n       * We can remove follow code after final release.\n       *\n       * To other developer:\n       *  Do not use `__PARENT_RENDER_ICON__` in prod since we will remove this when refactor\n       */\n      if (\n        props.canExpandable ||\n        mergedData.value.some(\n          record => record && typeof record === 'object' && record[mergedChildrenColumnName.value],\n        )\n      ) {\n        return 'nest';\n      }\n      /* eslint-enable */\n      return false;\n    });\n\n    const innerExpandedKeys = shallowRef([]);\n    const stop = watchEffect(() => {\n      if (props.defaultExpandedRowKeys) {\n        innerExpandedKeys.value = props.defaultExpandedRowKeys;\n      }\n      if (props.defaultExpandAllRows) {\n        innerExpandedKeys.value = findAllChildrenKeys(\n          mergedData.value,\n          getRowKey.value,\n          mergedChildrenColumnName.value,\n        );\n      }\n    });\n    // defalutXxxx 仅仅第一次生效\n    stop();\n\n    const mergedExpandedKeys = computed<Set<Key>>(\n      () => new Set(props.expandedRowKeys || innerExpandedKeys.value || []),\n    );\n\n    const onTriggerExpand: TriggerEventHandler<any> = record => {\n      const key = getRowKey.value(record, mergedData.value.indexOf(record));\n\n      let newExpandedKeys: Key[];\n      const hasKey = mergedExpandedKeys.value.has(key);\n      if (hasKey) {\n        mergedExpandedKeys.value.delete(key);\n        newExpandedKeys = [...(mergedExpandedKeys.value as any)];\n      } else {\n        newExpandedKeys = [...(mergedExpandedKeys.value as any), key];\n      }\n      innerExpandedKeys.value = newExpandedKeys;\n\n      emit('expand', !hasKey, record);\n      emit('update:expandedRowKeys', newExpandedKeys);\n      emit('expandedRowsChange', newExpandedKeys);\n    };\n\n    // Warning if use `expandedRowRender` and nest children in the same time\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      props.expandedRowRender &&\n      mergedData.value.some(record => {\n        return Array.isArray(record?.[mergedChildrenColumnName.value]);\n      })\n    ) {\n      warning(false, '`expandedRowRender` should not use with nested Table');\n    }\n\n    const componentWidth = ref(0);\n\n    const [columns, flattenColumns] = useColumns(\n      {\n        ...toRefs(props),\n\n        // children,\n        expandable: computed(() => !!props.expandedRowRender),\n        expandedKeys: mergedExpandedKeys,\n        getRowKey,\n        onTriggerExpand,\n        expandIcon: mergedExpandIcon,\n      },\n      computed(() => (props.internalHooks === INTERNAL_HOOKS ? props.transformColumns : null)),\n    );\n\n    const columnContext = computed(() => ({\n      columns: columns.value,\n      flattenColumns: flattenColumns.value,\n    }));\n\n    // ====================== Scroll ======================\n    const fullTableRef = ref<HTMLDivElement>();\n    const scrollHeaderRef = ref<HTMLDivElement>();\n    const scrollBodyRef = ref<HTMLDivElement>();\n    const scrollBodySizeInfo = ref<{ scrollWidth: number; clientWidth: number }>({\n      scrollWidth: 0,\n      clientWidth: 0,\n    });\n    const scrollSummaryRef = ref<HTMLDivElement>();\n    const [pingedLeft, setPingedLeft] = useState(false);\n    const [pingedRight, setPingedRight] = useState(false);\n    const [colsWidths, updateColsWidths] = useLayoutState(new Map<Key, number>());\n\n    // Convert map to number width\n    const colsKeys = computed(() => getColumnsKey(flattenColumns.value));\n    const colWidths = computed(() =>\n      colsKeys.value.map(columnKey => colsWidths.value.get(columnKey)),\n    );\n    const columnCount = computed(() => flattenColumns.value.length);\n    const stickyOffsets = useStickyOffsets(colWidths, columnCount, toRef(props, 'direction'));\n    const fixHeader = computed(() => props.scroll && validateValue(props.scroll.y));\n    const horizonScroll = computed(\n      () => (props.scroll && validateValue(props.scroll.x)) || Boolean(props.expandFixed),\n    );\n    const fixColumn = computed(\n      () => horizonScroll.value && flattenColumns.value.some(({ fixed }) => fixed),\n    );\n\n    // Sticky\n    const stickyRef = ref<{ setScrollLeft: (left: number) => void }>();\n    const stickyState = useSticky(toRef(props, 'sticky'), toRef(props, 'prefixCls'));\n\n    const summaryFixedInfos = reactive<Record<string, boolean | string>>({});\n    const fixFooter = computed(() => {\n      const info = Object.values(summaryFixedInfos)[0];\n      return (fixHeader.value || stickyState.value.isSticky) && info;\n    });\n\n    const summaryCollect = (uniKey: string, fixed: boolean | string) => {\n      if (fixed) {\n        summaryFixedInfos[uniKey] = fixed;\n      } else {\n        delete summaryFixedInfos[uniKey];\n      }\n    };\n\n    // Scroll\n    const scrollXStyle = ref<CSSProperties>({});\n    const scrollYStyle = ref<CSSProperties>({});\n    const scrollTableStyle = ref<CSSProperties>({});\n\n    watchEffect(() => {\n      if (fixHeader.value) {\n        scrollYStyle.value = {\n          overflowY: 'scroll',\n          maxHeight: toPx(props.scroll.y),\n        };\n      }\n\n      if (horizonScroll.value) {\n        scrollXStyle.value = { overflowX: 'auto' };\n        // When no vertical scrollbar, should hide it\n        // https://github.com/ant-design/ant-design/pull/20705\n        // https://github.com/ant-design/ant-design/issues/21879\n        if (!fixHeader.value) {\n          scrollYStyle.value = { overflowY: 'hidden' };\n        }\n        scrollTableStyle.value = {\n          width: props.scroll.x === true ? 'auto' : toPx(props.scroll.x),\n          minWidth: '100%',\n        };\n      }\n    });\n\n    const onColumnResize = (columnKey: Key, width: number) => {\n      if (isVisible(fullTableRef.value)) {\n        updateColsWidths(widths => {\n          if (widths.get(columnKey) !== width) {\n            const newWidths = new Map(widths);\n            newWidths.set(columnKey, width);\n            return newWidths;\n          }\n          return widths;\n        });\n      }\n    };\n\n    const [setScrollTarget, getScrollTarget] = useTimeoutLock(null);\n\n    function forceScroll(scrollLeft: number, target: HTMLDivElement | ((left: number) => void)) {\n      if (!target) {\n        return;\n      }\n\n      if (typeof target === 'function') {\n        target(scrollLeft);\n        return;\n      }\n      const domTarget = (target as any).$el || target;\n      if (domTarget.scrollLeft !== scrollLeft) {\n        // eslint-disable-next-line no-param-reassign\n        domTarget.scrollLeft = scrollLeft;\n      }\n    }\n\n    const onScroll: EventHandler = ({\n      currentTarget,\n      scrollLeft,\n    }: {\n      currentTarget: HTMLElement;\n      scrollLeft?: number;\n    }) => {\n      const isRTL = props.direction === 'rtl';\n      const mergedScrollLeft =\n        typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;\n\n      const compareTarget = currentTarget || EMPTY_SCROLL_TARGET;\n      if (!getScrollTarget() || getScrollTarget() === compareTarget) {\n        setScrollTarget(compareTarget);\n\n        forceScroll(mergedScrollLeft, scrollHeaderRef.value);\n        forceScroll(mergedScrollLeft, scrollBodyRef.value);\n        forceScroll(mergedScrollLeft, scrollSummaryRef.value);\n        forceScroll(mergedScrollLeft, stickyRef.value?.setScrollLeft);\n      }\n\n      if (currentTarget) {\n        const { scrollWidth, clientWidth } = currentTarget;\n        if (isRTL) {\n          setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);\n          setPingedRight(-mergedScrollLeft > 0);\n        } else {\n          setPingedLeft(mergedScrollLeft > 0);\n          setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);\n        }\n      }\n    };\n\n    const triggerOnScroll = () => {\n      if (horizonScroll.value && scrollBodyRef.value) {\n        onScroll({ currentTarget: scrollBodyRef.value });\n      } else {\n        setPingedLeft(false);\n        setPingedRight(false);\n      }\n    };\n    let timtout;\n    const updateWidth = (width: number) => {\n      if (width !== componentWidth.value) {\n        triggerOnScroll();\n        componentWidth.value = fullTableRef.value ? fullTableRef.value.offsetWidth : width;\n      }\n    };\n    const onFullTableResize = ({ width }) => {\n      clearTimeout(timtout);\n      if (componentWidth.value === 0) {\n        updateWidth(width);\n        return;\n      }\n      timtout = setTimeout(() => {\n        updateWidth(width);\n      }, 100);\n    };\n\n    watch(\n      [horizonScroll, () => props.data, () => props.columns],\n      () => {\n        if (horizonScroll.value) {\n          triggerOnScroll();\n        }\n      },\n      { flush: 'post' },\n    );\n\n    const [scrollbarSize, setScrollbarSize] = useState(0);\n    useProvideSticky();\n    onMounted(() => {\n      nextTick(() => {\n        triggerOnScroll();\n        setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.value).width);\n        scrollBodySizeInfo.value = {\n          scrollWidth: scrollBodyRef.value?.scrollWidth || 0,\n          clientWidth: scrollBodyRef.value?.clientWidth || 0,\n        };\n      });\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        const scrollWidth = scrollBodyRef.value?.scrollWidth || 0;\n        const clientWidth = scrollBodyRef.value?.clientWidth || 0;\n        if (\n          scrollBodySizeInfo.value.scrollWidth !== scrollWidth ||\n          scrollBodySizeInfo.value.clientWidth !== clientWidth\n        ) {\n          scrollBodySizeInfo.value = {\n            scrollWidth,\n            clientWidth,\n          };\n        }\n      });\n    });\n\n    watchEffect(\n      () => {\n        if (props.internalHooks === INTERNAL_HOOKS && props.internalRefs) {\n          props.onUpdateInternalRefs({\n            body: scrollBodyRef.value\n              ? (scrollBodyRef.value as any).$el || scrollBodyRef.value\n              : null,\n          });\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // Table layout\n    const mergedTableLayout = computed(() => {\n      if (props.tableLayout) {\n        return props.tableLayout;\n      }\n      // https://github.com/ant-design/ant-design/issues/25227\n      // When scroll.x is max-content, no need to fix table layout\n      // it's width should stretch out to fit content\n      if (fixColumn.value) {\n        return props.scroll.x === 'max-content' ? 'auto' : 'fixed';\n      }\n      if (\n        fixHeader.value ||\n        stickyState.value.isSticky ||\n        flattenColumns.value.some(({ ellipsis }) => ellipsis)\n      ) {\n        return 'fixed';\n      }\n      return 'auto';\n    });\n\n    const emptyNode = () => {\n      return hasData.value ? null : slots.emptyText?.() || 'No Data';\n    };\n    useProvideTable(\n      reactive({\n        ...toRefs(reactivePick(props, 'prefixCls', 'direction', 'transformCellText')),\n        getComponent,\n        scrollbarSize,\n        fixedInfoList: computed(() =>\n          flattenColumns.value.map((_, colIndex) =>\n            getCellFixedInfo(\n              colIndex,\n              colIndex,\n              flattenColumns.value,\n              stickyOffsets.value,\n              props.direction,\n            ),\n          ),\n        ),\n        isSticky: computed(() => stickyState.value.isSticky),\n        summaryCollect,\n      }),\n    );\n    useProvideBody(\n      reactive({\n        ...toRefs(\n          reactivePick(\n            props,\n            'rowClassName',\n            'expandedRowClassName',\n            'expandRowByClick',\n            'expandedRowRender',\n            'expandIconColumnIndex',\n            'indentSize',\n          ),\n        ),\n        columns,\n        flattenColumns,\n        tableLayout: mergedTableLayout,\n        expandIcon: mergedExpandIcon,\n        expandableType,\n        onTriggerExpand,\n      }),\n    );\n\n    useProvideResize({\n      onColumnResize,\n    });\n\n    useProvideExpandedRow({\n      componentWidth,\n      fixHeader,\n      fixColumn,\n      horizonScroll,\n    });\n\n    // Body\n    const bodyTable = () => (\n      <Body\n        data={mergedData.value}\n        measureColumnWidth={fixHeader.value || horizonScroll.value || stickyState.value.isSticky}\n        expandedKeys={mergedExpandedKeys.value}\n        rowExpandable={props.rowExpandable}\n        getRowKey={getRowKey.value}\n        customRow={props.customRow}\n        childrenColumnName={mergedChildrenColumnName.value}\n        v-slots={{ emptyNode }}\n      />\n    );\n\n    const bodyColGroup = () => (\n      <ColGroup\n        colWidths={flattenColumns.value.map(({ width }) => width)}\n        columns={flattenColumns.value}\n      />\n    );\n    return () => {\n      const {\n        prefixCls,\n        scroll,\n        tableLayout,\n        direction,\n\n        // Additional Part\n        title = slots.title,\n        footer = slots.footer,\n\n        // Customize\n        id,\n        showHeader,\n        customHeaderRow,\n      } = props;\n      const { isSticky, offsetHeader, offsetSummary, offsetScroll, stickyClassName, container } =\n        stickyState.value;\n      const TableComponent = getComponent(['table'], 'table');\n      const customizeScrollBody = getComponent(['body']) as unknown as CustomizeScrollBody<any>;\n      const summaryNode = slots.summary?.({ pageData: mergedData.value });\n\n      let groupTableNode = () => null;\n\n      // Header props\n      const headerProps = {\n        colWidths: colWidths.value,\n        columCount: flattenColumns.value.length,\n        stickyOffsets: stickyOffsets.value,\n        customHeaderRow,\n        fixHeader: fixHeader.value,\n        scroll,\n      };\n\n      if (\n        process.env.NODE_ENV !== 'production' &&\n        typeof customizeScrollBody === 'function' &&\n        hasData.value &&\n        !fixHeader.value\n      ) {\n        warning(false, '`components.body` with render props is only work on `scroll.y`.');\n      }\n      if (fixHeader.value || isSticky) {\n        // >>>>>> Fixed Header\n        let bodyContent = () => null;\n\n        if (typeof customizeScrollBody === 'function') {\n          bodyContent = () =>\n            customizeScrollBody(mergedData.value, {\n              scrollbarSize: scrollbarSize.value,\n              ref: scrollBodyRef,\n              onScroll,\n            });\n\n          headerProps.colWidths = flattenColumns.value.map(({ width }, index) => {\n            const colWidth =\n              index === columns.value.length - 1 ? (width as number) - scrollbarSize.value : width;\n            if (typeof colWidth === 'number' && !Number.isNaN(colWidth)) {\n              return colWidth;\n            }\n            warning(\n              false,\n              'When use `components.body` with render props. Each column should have a fixed `width` value.',\n            );\n\n            return 0;\n          }) as number[];\n        } else {\n          bodyContent = () => (\n            <div\n              style={{\n                ...scrollXStyle.value,\n                ...scrollYStyle.value,\n              }}\n              onScroll={onScroll}\n              ref={scrollBodyRef}\n              class={classNames(`${prefixCls}-body`)}\n            >\n              <TableComponent\n                style={{\n                  ...scrollTableStyle.value,\n                  tableLayout: mergedTableLayout.value,\n                }}\n              >\n                {bodyColGroup()}\n                {bodyTable()}\n                {!fixFooter.value && summaryNode && (\n                  <Footer stickyOffsets={stickyOffsets.value} flattenColumns={flattenColumns.value}>\n                    {summaryNode}\n                  </Footer>\n                )}\n              </TableComponent>\n            </div>\n          );\n        }\n\n        // Fixed holder share the props\n        const fixedHolderProps = {\n          noData: !mergedData.value.length,\n          maxContentScroll: horizonScroll.value && scroll.x === 'max-content',\n          ...headerProps,\n          ...columnContext.value,\n          direction,\n          stickyClassName,\n          onScroll,\n        };\n\n        groupTableNode = () => (\n          <>\n            {/* Header Table */}\n            {showHeader !== false && (\n              <FixedHolder\n                {...fixedHolderProps}\n                stickyTopOffset={offsetHeader}\n                class={`${prefixCls}-header`}\n                ref={scrollHeaderRef}\n                v-slots={{\n                  default: fixedHolderPassProps => (\n                    <>\n                      <Header {...fixedHolderPassProps} />\n                      {fixFooter.value === 'top' && (\n                        <Footer {...fixedHolderPassProps}>{summaryNode}</Footer>\n                      )}\n                    </>\n                  ),\n                }}\n              ></FixedHolder>\n            )}\n\n            {/* Body Table */}\n            {bodyContent()}\n\n            {/* Summary Table */}\n            {fixFooter.value && fixFooter.value !== 'top' && (\n              <FixedHolder\n                {...fixedHolderProps}\n                stickyBottomOffset={offsetSummary}\n                class={`${prefixCls}-summary`}\n                ref={scrollSummaryRef}\n                v-slots={{\n                  default: fixedHolderPassProps => (\n                    <Footer {...fixedHolderPassProps}>{summaryNode}</Footer>\n                  ),\n                }}\n              ></FixedHolder>\n            )}\n\n            {isSticky && scrollBodyRef.value && (\n              <StickyScrollBar\n                ref={stickyRef}\n                offsetScroll={offsetScroll}\n                scrollBodyRef={scrollBodyRef}\n                onScroll={onScroll}\n                container={container}\n                scrollBodySizeInfo={scrollBodySizeInfo.value}\n              />\n            )}\n          </>\n        );\n      } else {\n        // >>>>>> Unique table\n        groupTableNode = () => (\n          <div\n            style={{\n              ...scrollXStyle.value,\n              ...scrollYStyle.value,\n            }}\n            class={classNames(`${prefixCls}-content`)}\n            onScroll={onScroll}\n            ref={scrollBodyRef}\n          >\n            <TableComponent\n              style={{ ...scrollTableStyle.value, tableLayout: mergedTableLayout.value }}\n            >\n              {bodyColGroup()}\n              {showHeader !== false && <Header {...headerProps} {...columnContext.value} />}\n              {bodyTable()}\n              {summaryNode && (\n                <Footer stickyOffsets={stickyOffsets.value} flattenColumns={flattenColumns.value}>\n                  {summaryNode}\n                </Footer>\n              )}\n            </TableComponent>\n          </div>\n        );\n      }\n      const ariaProps = pickAttrs(attrs, { aria: true, data: true });\n      const fullTable = () => (\n        <div\n          {...ariaProps}\n          class={classNames(prefixCls, {\n            [`${prefixCls}-rtl`]: direction === 'rtl',\n            [`${prefixCls}-ping-left`]: pingedLeft.value,\n            [`${prefixCls}-ping-right`]: pingedRight.value,\n            [`${prefixCls}-layout-fixed`]: tableLayout === 'fixed',\n            [`${prefixCls}-fixed-header`]: fixHeader.value,\n            /** No used but for compatible */\n            [`${prefixCls}-fixed-column`]: fixColumn.value,\n            [`${prefixCls}-scroll-horizontal`]: horizonScroll.value,\n            [`${prefixCls}-has-fix-left`]: flattenColumns.value[0] && flattenColumns.value[0].fixed,\n            [`${prefixCls}-has-fix-right`]:\n              flattenColumns.value[columnCount.value - 1] &&\n              flattenColumns.value[columnCount.value - 1].fixed === 'right',\n            [attrs.class as string]: attrs.class,\n          })}\n          style={attrs.style as CSSProperties}\n          id={id}\n          ref={fullTableRef}\n        >\n          {title && <Panel class={`${prefixCls}-title`}>{title(mergedData.value)}</Panel>}\n          <div class={`${prefixCls}-container`}>{groupTableNode()}</div>\n          {footer && <Panel class={`${prefixCls}-footer`}>{footer(mergedData.value)}</Panel>}\n        </div>\n      );\n\n      if (horizonScroll.value) {\n        return (\n          <VCResizeObserver\n            onResize={onFullTableResize}\n            v-slots={{ default: fullTable }}\n          ></VCResizeObserver>\n        );\n      }\n      return fullTable();\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/constant.ts",
    "content": "export const EXPAND_COLUMN = {} as const;\n"
  },
  {
    "path": "components/vc-table/context/BodyContext.tsx",
    "content": "import type {\n  ColumnType,\n  DefaultRecordType,\n  ColumnsType,\n  TableLayout,\n  RenderExpandIcon,\n  ExpandableType,\n  RowClassName,\n  TriggerEventHandler,\n  ExpandedRowRender,\n} from '../interface';\nimport type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\n\nexport interface BodyContextProps<RecordType = DefaultRecordType> {\n  rowClassName: string | RowClassName<RecordType>;\n  expandedRowClassName: RowClassName<RecordType>;\n\n  columns: ColumnsType<RecordType>;\n  flattenColumns: readonly ColumnType<RecordType>[];\n\n  tableLayout: TableLayout;\n\n  indentSize: number;\n  expandableType: ExpandableType;\n  expandRowByClick: boolean;\n  expandedRowRender: ExpandedRowRender<RecordType>;\n  expandIcon: RenderExpandIcon<RecordType>;\n  onTriggerExpand: TriggerEventHandler<RecordType>;\n  expandIconColumnIndex: number;\n}\nexport const BodyContextKey: InjectionKey<BodyContextProps> = Symbol('BodyContextProps');\n\nexport const useProvideBody = (props: BodyContextProps) => {\n  provide(BodyContextKey, props);\n};\n\nexport const useInjectBody = () => {\n  return inject(BodyContextKey, {} as BodyContextProps);\n};\n"
  },
  {
    "path": "components/vc-table/context/ExpandedRowContext.tsx",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { inject, provide } from 'vue';\n\nexport interface ExpandedRowProps {\n  componentWidth: Ref<number>;\n  fixHeader: Ref<boolean>;\n  fixColumn: Ref<boolean>;\n  horizonScroll: Ref<boolean>;\n}\nexport const ExpandedRowContextKey: InjectionKey<ExpandedRowProps> = Symbol('ExpandedRowProps');\n\nexport const useProvideExpandedRow = (props: ExpandedRowProps) => {\n  provide(ExpandedRowContextKey, props);\n};\n\nexport const useInjectExpandedRow = () => {\n  return inject(ExpandedRowContextKey, {} as ExpandedRowProps);\n};\n"
  },
  {
    "path": "components/vc-table/context/HoverContext.tsx",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { shallowRef, inject, provide } from 'vue';\n\nexport interface HoverContextProps {\n  startRow: Ref<number>;\n  endRow: Ref<number>;\n  onHover: (start: number, end: number) => void;\n}\nexport const HoverContextKey: InjectionKey<HoverContextProps> = Symbol('HoverContextProps');\n\nexport const useProvideHover = (props: HoverContextProps) => {\n  provide(HoverContextKey, props);\n};\n\nexport const useInjectHover = () => {\n  return inject(HoverContextKey, {\n    startRow: shallowRef(-1),\n    endRow: shallowRef(-1),\n    onHover() {},\n  } as HoverContextProps);\n};\n"
  },
  {
    "path": "components/vc-table/context/ResizeContext.tsx",
    "content": "import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { Key } from '../interface';\n\ninterface ResizeContextProps {\n  onColumnResize: (columnKey: Key, width: number) => void;\n}\n\nexport const ResizeContextKey: InjectionKey<ResizeContextProps> = Symbol('ResizeContextProps');\n\nexport const useProvideResize = (props: ResizeContextProps) => {\n  provide(ResizeContextKey, props);\n};\n\nexport const useInjectResize = () => {\n  return inject(ResizeContextKey, { onColumnResize: () => {} });\n};\n"
  },
  {
    "path": "components/vc-table/context/StickyContext.tsx",
    "content": "import isStyleSupport from '../../_util/styleChecker';\nimport { onMounted, shallowRef } from 'vue';\n\nconst supportSticky = shallowRef(false);\nexport const useProvideSticky = () => {\n  onMounted(() => {\n    supportSticky.value = supportSticky.value || isStyleSupport('position', 'sticky');\n  });\n};\n\nexport const useInjectSticky = () => {\n  return supportSticky;\n};\n"
  },
  {
    "path": "components/vc-table/context/SummaryContext.tsx",
    "content": "import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { ColumnType, StickyOffsets } from '../interface';\n\nexport type FlattenColumns<RecordType> = readonly (ColumnType<RecordType> & {\n  scrollbar?: boolean;\n})[];\ntype SummaryContextProps = {\n  stickyOffsets?: StickyOffsets;\n  scrollColumnIndex?: number;\n  flattenColumns?: FlattenColumns<any>;\n};\n\nexport const SummaryContextKey: InjectionKey<SummaryContextProps> = Symbol('SummaryContextProps');\n\nexport const useProvideSummary = (props: SummaryContextProps) => {\n  provide(SummaryContextKey, props);\n};\n\nexport const useInjectSummary = () => {\n  return inject(SummaryContextKey, {} as SummaryContextProps);\n};\n"
  },
  {
    "path": "components/vc-table/context/TableContext.tsx",
    "content": "import type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { GetComponent, TransformCellText } from '../interface';\nimport type { FixedInfo } from '../utils/fixUtil';\n\nexport interface TableContextProps {\n  // Table context\n  prefixCls: string;\n\n  getComponent: GetComponent;\n\n  scrollbarSize: number;\n\n  direction: 'ltr' | 'rtl';\n\n  fixedInfoList: readonly FixedInfo[];\n\n  isSticky: boolean;\n\n  summaryCollect: (uniKey: string, fixed: boolean | string) => void;\n\n  transformCellText: TransformCellText<unknown>;\n}\n\nexport const TableContextKey: InjectionKey<TableContextProps> = Symbol('TableContextProps');\n\nexport const useProvideTable = (props: TableContextProps) => {\n  provide(TableContextKey, props);\n};\n\nexport const useInjectTable = () => {\n  return inject(TableContextKey, {} as TableContextProps);\n};\n"
  },
  {
    "path": "components/vc-table/hooks/useColumns.tsx",
    "content": "import { warning } from '../../vc-util/warning';\nimport type { ComputedRef, Ref } from 'vue';\nimport { computed, watchEffect } from 'vue';\nimport type {\n  ColumnsType,\n  ColumnType,\n  FixedType,\n  Key,\n  GetRowKey,\n  TriggerEventHandler,\n  RenderExpandIcon,\n  ColumnGroupType,\n} from '../interface';\nimport { INTERNAL_COL_DEFINE } from '../utils/legacyUtil';\nimport { EXPAND_COLUMN } from '../constant';\nimport { useInjectSlots } from '../../table/context';\nimport { customRenderSlot } from '../../_util/vnode';\n\nfunction flatColumns<RecordType>(columns: ColumnsType<RecordType>): ColumnType<RecordType>[] {\n  return columns.reduce((list, column) => {\n    const { fixed } = column;\n\n    // Convert `fixed='true'` to `fixed='left'` instead\n    const parsedFixed = fixed === true ? 'left' : fixed;\n\n    const subColumns = (column as ColumnGroupType<RecordType>).children;\n    if (subColumns && subColumns.length > 0) {\n      return [\n        ...list,\n        ...flatColumns(subColumns).map(subColum => ({\n          fixed: parsedFixed,\n          ...subColum,\n        })),\n      ];\n    }\n    return [\n      ...list,\n      {\n        ...column,\n        fixed: parsedFixed,\n      },\n    ];\n  }, []);\n}\n\nfunction warningFixed(flattenColumns: readonly { fixed?: FixedType }[]) {\n  let allFixLeft = true;\n  for (let i = 0; i < flattenColumns.length; i += 1) {\n    const col = flattenColumns[i];\n    if (allFixLeft && col.fixed !== 'left') {\n      allFixLeft = false;\n    } else if (!allFixLeft && col.fixed === 'left') {\n      warning(false, `Index ${i - 1} of \\`columns\\` missing \\`fixed='left'\\` prop.`);\n      break;\n    }\n  }\n\n  let allFixRight = true;\n  for (let i = flattenColumns.length - 1; i >= 0; i -= 1) {\n    const col = flattenColumns[i];\n    if (allFixRight && col.fixed !== 'right') {\n      allFixRight = false;\n    } else if (!allFixRight && col.fixed === 'right') {\n      warning(false, `Index ${i + 1} of \\`columns\\` missing \\`fixed='right'\\` prop.`);\n      break;\n    }\n  }\n}\n\nfunction revertForRtl<RecordType>(columns: ColumnsType<RecordType>): ColumnsType<RecordType> {\n  return columns.map(column => {\n    const { fixed, ...restProps } = column;\n\n    // Convert `fixed='left'` to `fixed='right'` instead\n    let parsedFixed = fixed;\n    if (fixed === 'left') {\n      parsedFixed = 'right';\n    } else if (fixed === 'right') {\n      parsedFixed = 'left';\n    }\n    return {\n      fixed: parsedFixed,\n      ...restProps,\n    };\n  });\n}\n\n/**\n * Parse `columns` & `children` into `columns`.\n */\nfunction useColumns<RecordType>(\n  {\n    prefixCls,\n    columns: baseColumns,\n    // children,\n    expandable,\n    expandedKeys,\n    getRowKey,\n    onTriggerExpand,\n    expandIcon,\n    rowExpandable,\n    expandIconColumnIndex,\n    direction,\n    expandRowByClick,\n    expandColumnWidth,\n    expandFixed,\n  }: {\n    prefixCls?: Ref<string>;\n    columns?: Ref<ColumnsType<RecordType>>;\n    expandable: Ref<boolean>;\n    expandedKeys: ComputedRef<Set<Key>>;\n    getRowKey: Ref<GetRowKey<RecordType>>;\n    onTriggerExpand: TriggerEventHandler<RecordType>;\n    expandIcon?: Ref<RenderExpandIcon<RecordType>>;\n    rowExpandable?: Ref<(record: RecordType) => boolean>;\n    expandIconColumnIndex?: Ref<number>;\n    direction?: Ref<'ltr' | 'rtl'>;\n    expandRowByClick?: Ref<boolean>;\n    expandColumnWidth?: Ref<number | string>;\n    expandFixed?: Ref<FixedType>;\n  },\n  transformColumns: Ref<(columns: ColumnsType<RecordType>) => ColumnsType<RecordType>>,\n): [ComputedRef<ColumnsType<RecordType>>, ComputedRef<readonly ColumnType<RecordType>[]>] {\n  const contextSlots = useInjectSlots();\n  // Add expand column\n  const withExpandColumns = computed<ColumnsType<RecordType>>(() => {\n    if (expandable.value) {\n      let cloneColumns = baseColumns.value.slice();\n\n      // >>> Warning if use `expandIconColumnIndex`\n      if (process.env.NODE_ENV !== 'production' && expandIconColumnIndex.value >= 0) {\n        warning(\n          false,\n          '`expandIconColumnIndex` is deprecated. Please use `Table.EXPAND_COLUMN` in `columns` instead.',\n        );\n      }\n\n      // >>> Insert expand column if not exist\n      if (!cloneColumns.includes(EXPAND_COLUMN)) {\n        const expandColIndex = expandIconColumnIndex.value || 0;\n        if (expandColIndex >= 0) {\n          cloneColumns.splice(expandColIndex, 0, EXPAND_COLUMN);\n        }\n      }\n\n      // >>> Deduplicate additional expand column\n      if (\n        process.env.NODE_ENV !== 'production' &&\n        cloneColumns.filter(c => c === EXPAND_COLUMN).length > 1\n      ) {\n        warning(false, 'There exist more than one `EXPAND_COLUMN` in `columns`.');\n      }\n      const expandColumnIndex = cloneColumns.indexOf(EXPAND_COLUMN);\n      cloneColumns = cloneColumns.filter(\n        (column, index) => column !== EXPAND_COLUMN || index === expandColumnIndex,\n      );\n\n      // >>> Check if expand column need to fixed\n      const prevColumn = baseColumns.value[expandColumnIndex];\n\n      let fixedColumn: FixedType | null;\n      if ((expandFixed.value === 'left' || expandFixed.value) && !expandIconColumnIndex.value) {\n        fixedColumn = 'left';\n      } else if (\n        (expandFixed.value === 'right' || expandFixed.value) &&\n        expandIconColumnIndex.value === baseColumns.value.length\n      ) {\n        fixedColumn = 'right';\n      } else {\n        fixedColumn = prevColumn ? prevColumn.fixed : null;\n      }\n      const expandedKeysValue = expandedKeys.value;\n      const rowExpandableValue = rowExpandable.value;\n      const expandIconValue = expandIcon.value;\n      const prefixClsValue = prefixCls.value;\n      const expandRowByClickValue = expandRowByClick.value;\n      // >>> Create expandable column\n      const expandColumn = {\n        [INTERNAL_COL_DEFINE]: {\n          class: `${prefixCls.value}-expand-icon-col`,\n          columnType: 'EXPAND_COLUMN',\n        },\n        title: customRenderSlot(contextSlots.value, 'expandColumnTitle', {}, () => ['']),\n        fixed: fixedColumn,\n        class: `${prefixCls.value}-row-expand-icon-cell`,\n        width: expandColumnWidth.value,\n        customRender: ({ record, index }) => {\n          const rowKey = getRowKey.value(record, index);\n          const expanded = expandedKeysValue.has(rowKey);\n          const recordExpandable = rowExpandableValue ? rowExpandableValue(record) : true;\n\n          const icon = expandIconValue({\n            prefixCls: prefixClsValue,\n            expanded,\n            expandable: recordExpandable,\n            record,\n            onExpand: onTriggerExpand,\n          });\n\n          if (expandRowByClickValue) {\n            return <span onClick={e => e.stopPropagation()}>{icon}</span>;\n          }\n          return icon;\n        },\n      };\n\n      return cloneColumns.map(col => (col === EXPAND_COLUMN ? expandColumn : col));\n    }\n    if (process.env.NODE_ENV !== 'production' && baseColumns.value.includes(EXPAND_COLUMN)) {\n      warning(false, '`expandable` is not config but there exist `EXPAND_COLUMN` in `columns`.');\n    }\n\n    return baseColumns.value.filter(col => col !== EXPAND_COLUMN);\n  });\n\n  const mergedColumns = computed(() => {\n    let finalColumns = withExpandColumns.value;\n    if (transformColumns.value) {\n      finalColumns = transformColumns.value(finalColumns);\n    }\n\n    // Always provides at least one column for table display\n    if (!finalColumns.length) {\n      finalColumns = [\n        {\n          customRender: () => null,\n        },\n      ];\n    }\n    return finalColumns;\n  });\n\n  const flattenColumns = computed(() => {\n    if (direction.value === 'rtl') {\n      return revertForRtl(flatColumns(mergedColumns.value));\n    }\n    return flatColumns(mergedColumns.value);\n  });\n  // Only check out of production since it's waste for each render\n  if (process.env.NODE_ENV !== 'production') {\n    watchEffect(() => {\n      setTimeout(() => {\n        warningFixed(flattenColumns.value);\n      });\n    });\n  }\n  return [mergedColumns, flattenColumns];\n}\n\nexport default useColumns;\n"
  },
  {
    "path": "components/vc-table/hooks/useFlattenRecords.ts",
    "content": "import type { Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { GetRowKey, Key } from '../interface';\n\n// recursion (flat tree structure)\nfunction flatRecord<T>(\n  record: T,\n  indent: number,\n  childrenColumnName: string,\n  expandedKeys: Set<Key>,\n  getRowKey: GetRowKey<T>,\n  index: number,\n) {\n  const arr = [];\n\n  arr.push({\n    record,\n    indent,\n    index,\n  });\n\n  const key = getRowKey(record);\n\n  const expanded = expandedKeys?.has(key);\n\n  if (record && Array.isArray(record[childrenColumnName]) && expanded) {\n    // expanded state, flat record\n    for (let i = 0; i < record[childrenColumnName].length; i += 1) {\n      const tempArr = flatRecord(\n        record[childrenColumnName][i],\n        indent + 1,\n        childrenColumnName,\n        expandedKeys,\n        getRowKey,\n        i,\n      );\n\n      arr.push(...tempArr);\n    }\n  }\n\n  return arr;\n}\n\n/**\n * flat tree data on expanded state\n *\n * @export\n * @template T\n * @param {*} data : table data\n * @param {string} childrenColumnName : 指定树形结构的列名\n * @param {Set<Key>} expandedKeys : 展开的行对应的keys\n * @param {GetRowKey<T>} getRowKey  : 获取当前rowKey的方法\n * @returns flattened data\n */\nexport default function useFlattenRecords<T = unknown>(\n  dataRef: Ref<T[]>,\n  childrenColumnNameRef: Ref<string>,\n  expandedKeysRef: Ref<Set<Key>>,\n  getRowKey: Ref<GetRowKey<T>>,\n) {\n  const arr: Ref<{ record: T; indent: number; index: number }[]> = computed(() => {\n    const childrenColumnName = childrenColumnNameRef.value;\n    const expandedKeys = expandedKeysRef.value;\n    const data = dataRef.value;\n    if (expandedKeys?.size) {\n      const temp: { record: T; indent: number; index: number }[] = [];\n\n      // collect flattened record\n      for (let i = 0; i < data?.length; i += 1) {\n        const record = data[i];\n\n        temp.push(\n          ...flatRecord<T>(record, 0, childrenColumnName, expandedKeys, getRowKey.value, i),\n        );\n      }\n\n      return temp;\n    }\n\n    return data?.map((item, index) => {\n      return {\n        record: item,\n        indent: 0,\n        index,\n      };\n    });\n  });\n\n  return arr;\n}\n"
  },
  {
    "path": "components/vc-table/hooks/useFrame.ts",
    "content": "import raf from '../../_util/raf';\nimport type { Ref, UnwrapRef } from 'vue';\nimport { onBeforeUnmount, ref, shallowRef } from 'vue';\n\nexport type Updater<State> = (prev: State) => State;\n\nexport function useLayoutState<State>(\n  defaultState: State,\n): [Ref<State>, (updater: Updater<State>) => void] {\n  const stateRef = shallowRef<State>(defaultState);\n  let rafId: number;\n  const updateBatchRef = shallowRef<Updater<State>[]>([]);\n  function setFrameState(updater: Updater<State>) {\n    updateBatchRef.value.push(updater);\n    raf.cancel(rafId);\n    rafId = raf(() => {\n      const prevBatch = updateBatchRef.value;\n      // const prevState = stateRef.value;\n      updateBatchRef.value = [];\n      prevBatch.forEach(batchUpdater => {\n        stateRef.value = batchUpdater(stateRef.value as State);\n      });\n    });\n  }\n  onBeforeUnmount(() => {\n    raf.cancel(rafId);\n  });\n\n  return [stateRef as Ref<State>, setFrameState];\n}\n\n/** Lock frame, when frame pass reset the lock. */\nexport function useTimeoutLock<State>(\n  defaultState?: State,\n): [(state: UnwrapRef<State>) => void, () => UnwrapRef<State> | null] {\n  const frameRef = ref<State | null>(defaultState || null);\n  const timeoutRef = ref<any>();\n\n  function cleanUp() {\n    clearTimeout(timeoutRef.value);\n  }\n\n  function setState(newState: UnwrapRef<State>) {\n    frameRef.value = newState;\n    cleanUp();\n\n    timeoutRef.value = setTimeout(() => {\n      frameRef.value = null;\n      timeoutRef.value = undefined;\n    }, 100);\n  }\n\n  function getState() {\n    return frameRef.value;\n  }\n\n  onBeforeUnmount(() => {\n    cleanUp();\n  });\n\n  return [setState, getState];\n}\n"
  },
  {
    "path": "components/vc-table/hooks/useSticky.ts",
    "content": "import canUseDom from '../../_util/canUseDom';\nimport type { ComputedRef, Ref } from 'vue';\nimport { computed } from 'vue';\nimport type { TableSticky } from '../interface';\n\n// fix ssr render\nconst defaultContainer = canUseDom() ? window : null;\n\n/** Sticky header hooks */\nexport default function useSticky(\n  stickyRef: Ref<boolean | TableSticky>,\n  prefixClsRef: Ref<string>,\n): ComputedRef<{\n  isSticky: boolean;\n  offsetHeader: number;\n  offsetSummary: number;\n  offsetScroll: number;\n  stickyClassName: string;\n  container: Window | HTMLElement;\n}> {\n  return computed(() => {\n    const {\n      offsetHeader = 0,\n      offsetSummary = 0,\n      offsetScroll = 0,\n      getContainer = () => defaultContainer,\n    } = typeof stickyRef.value === 'object' ? stickyRef.value : {};\n\n    const container = getContainer() || defaultContainer;\n    const isSticky = !!stickyRef.value;\n    return {\n      isSticky,\n      stickyClassName: isSticky ? `${prefixClsRef.value}-sticky-holder` : '',\n      offsetHeader,\n      offsetSummary,\n      offsetScroll,\n      container,\n    };\n  });\n}\n"
  },
  {
    "path": "components/vc-table/hooks/useStickyOffsets.ts",
    "content": "import type { ComputedRef, Ref } from 'vue';\n\nimport { computed } from 'vue';\nimport type { StickyOffsets } from '../interface';\n\n/**\n * Get sticky column offset width\n */\nfunction useStickyOffsets(\n  colWidthsRef: Ref<number[]>,\n  columnCountRef: Ref<number>,\n  directionRef: Ref<'ltr' | 'rtl'>,\n) {\n  const stickyOffsets: ComputedRef<StickyOffsets> = computed(() => {\n    const leftOffsets: number[] = [];\n    const rightOffsets: number[] = [];\n    let left = 0;\n    let right = 0;\n\n    const colWidths = colWidthsRef.value;\n    const columnCount = columnCountRef.value;\n    const direction = directionRef.value;\n\n    for (let start = 0; start < columnCount; start += 1) {\n      if (direction === 'rtl') {\n        // Left offset\n        rightOffsets[start] = right;\n        right += colWidths[start] || 0;\n\n        // Right offset\n        const end = columnCount - start - 1;\n        leftOffsets[end] = left;\n        left += colWidths[end] || 0;\n      } else {\n        // Left offset\n        leftOffsets[start] = left;\n        left += colWidths[start] || 0;\n\n        // Right offset\n        const end = columnCount - start - 1;\n        rightOffsets[end] = right;\n        right += colWidths[end] || 0;\n      }\n    }\n\n    return {\n      left: leftOffsets,\n      right: rightOffsets,\n    };\n  });\n\n  return stickyOffsets;\n}\n\nexport default useStickyOffsets;\n"
  },
  {
    "path": "components/vc-table/index.ts",
    "content": "// base rc-table@7.22.2\nimport Table from './Table';\nimport { FooterComponents as Summary, SummaryCell, SummaryRow } from './Footer';\nimport Column from './sugar/Column';\nimport ColumnGroup from './sugar/ColumnGroup';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\nimport { EXPAND_COLUMN } from './constant';\n\nexport {\n  Summary,\n  Column,\n  ColumnGroup,\n  SummaryCell,\n  SummaryRow,\n  INTERNAL_COL_DEFINE,\n  EXPAND_COLUMN,\n};\n\nexport default Table;\n"
  },
  {
    "path": "components/vc-table/interface.ts",
    "content": "/**\n * ColumnType which applied in antd: https://ant.design/components/table-cn/#column\n * - defaultSortOrder\n * - filterDropdown\n * - filterDropdownOpen\n * - filtered\n * - filteredValue\n * - filterIcon\n * - filterMultiple\n * - filters\n * - sorter\n * - sortOrder\n * - sortDirections\n * - onFilter\n * - onFilterDropdownOpenChange\n */\n\nimport type { CSSProperties, Ref, TdHTMLAttributes } from 'vue';\n\nexport type Key = number | string;\n\nexport type FixedType = 'left' | 'right' | boolean;\n\nexport type DefaultRecordType = any;\n\nexport type TableLayout = 'auto' | 'fixed';\n\n// ==================== Row =====================\nexport type RowClassName<RecordType> = (\n  record: RecordType,\n  index: number,\n  indent: number,\n) => string;\n\nexport type TransformCellText<RecordType> = (opt: {\n  text: any;\n  column: ColumnType<RecordType>;\n  record: any;\n  index: number;\n}) => any;\n\n// =================== Column ===================\nexport interface CellType<RecordType = DefaultRecordType> {\n  key?: Key;\n  class?: string;\n  style?: CSSProperties;\n  // children?: any;\n  column?: ColumnsType<RecordType>[number];\n  colSpan?: number;\n  rowSpan?: number;\n\n  /** Only used for table header */\n  hasSubColumns?: boolean;\n  colStart?: number;\n  colEnd?: number;\n}\n\nexport interface RenderedCell<RecordType> {\n  props?: CellType<RecordType>;\n  children?: any;\n}\n\nexport type DataIndex = string | number | readonly (string | number)[];\n\nexport type CellEllipsisType = { showTitle?: boolean } | boolean;\n\ninterface ColumnSharedType<RecordType> {\n  title?: any;\n  key?: Key;\n  class?: string;\n  className?: string;\n  fixed?: FixedType;\n  customHeaderCell?: GetComponentProps<ColumnsType<RecordType>[number]>;\n  ellipsis?: CellEllipsisType;\n  align?: AlignType;\n\n  customFilterDropdown?: boolean;\n\n  /** @deprecated Please use `v-slot:filterIcon` `v-slot:bodyCell` `v-slot:headerCell` instead */\n  slots?: {\n    filterIcon?: string;\n    filterDropdown?: string;\n    customRender?: string;\n    title?: string;\n  };\n\n  /**\n   * @private Internal usage.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  __originColumn__?: any;\n}\n\nexport interface ColumnGroupType<RecordType> extends ColumnSharedType<RecordType> {\n  children: ColumnsType<RecordType>;\n}\n\nexport type AlignType = 'left' | 'center' | 'right';\n\nexport interface ColumnType<RecordType> extends ColumnSharedType<RecordType> {\n  colSpan?: number;\n  dataIndex?: DataIndex;\n  customRender?: (opt: {\n    value: any;\n    text: any; // 兼容 V2\n    record: RecordType;\n    index: number;\n    renderIndex: number;\n    column: ColumnType<RecordType>;\n  }) => any | RenderedCell<RecordType>;\n  rowSpan?: number;\n  width?: number | string;\n  minWidth?: number;\n  maxWidth?: number;\n  resizable?: boolean;\n  customCell?: GetComponentProps<RecordType>;\n  /** @deprecated Please use `customCell` instead */\n  onCellClick?: (record: RecordType, e: MouseEvent) => void;\n}\n\nexport type ColumnsType<RecordType = unknown> = readonly (\n  | ColumnGroupType<RecordType>\n  | ColumnType<RecordType>\n)[];\n\nexport type GetRowKey<RecordType> = (record: RecordType, index?: number) => Key;\n\n// ================= Fix Column =================\nexport interface StickyOffsets {\n  left: readonly number[];\n  right: readonly number[];\n  isSticky?: boolean;\n}\nexport type AdditionalProps = TdHTMLAttributes & {\n  colSpan?: number;\n  rowSpan?: number;\n};\n// ================= Customized =================\nexport type GetComponentProps<DataType> = (\n  data: DataType,\n  index?: number,\n  column?: ColumnType<any>,\n) => AdditionalProps;\n\n// type Component<P> = DefineComponent<P> | FunctionalComponent<P> | string;\n\nexport type CustomizeComponent = any;\n\nexport type CustomizeScrollBody<RecordType> = (\n  data: readonly RecordType[],\n  info: {\n    scrollbarSize: number;\n    ref: Ref<{ scrollLeft: number }>;\n    onScroll: (info: { currentTarget?: HTMLElement; scrollLeft?: number }) => void;\n  },\n) => any;\n\nexport interface TableComponents<RecordType> {\n  table?: CustomizeComponent;\n  header?: {\n    wrapper?: CustomizeComponent;\n    row?: CustomizeComponent;\n    cell?: CustomizeComponent;\n  };\n  body?:\n    | CustomizeScrollBody<RecordType>\n    | {\n        wrapper?: CustomizeComponent;\n        row?: CustomizeComponent;\n        cell?: CustomizeComponent;\n      };\n}\n\nexport type GetComponent = (\n  path: readonly string[],\n  defaultComponent?: CustomizeComponent,\n) => CustomizeComponent;\n\n// =================== Expand ===================\nexport type ExpandableType = false | 'row' | 'nest';\n\nexport interface LegacyExpandableProps<RecordType> {\n  expandedRowKeys?: Key[];\n\n  defaultExpandedRowKeys?: Key[];\n\n  expandedRowRender?: ExpandedRowRender<RecordType>;\n\n  expandRowByClick?: boolean;\n\n  expandIcon?: RenderExpandIcon<RecordType>;\n\n  onExpand?: (expanded: boolean, record: RecordType) => void;\n\n  onExpandedRowsChange?: (expandedKeys: Key[]) => void;\n\n  defaultExpandAllRows?: boolean;\n\n  indentSize?: number;\n  /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */\n  expandIconColumnIndex?: number;\n\n  showExpandColumn?: boolean;\n\n  expandedRowClassName?: RowClassName<RecordType>;\n\n  childrenColumnName?: string;\n\n  rowExpandable?: (record: RecordType) => boolean;\n}\n\nexport type ExpandedRowRender<ValueType> = (opt: {\n  record: ValueType;\n  index: number;\n  indent: number;\n  expanded: boolean;\n}) => any;\n\nexport interface RenderExpandIconProps<RecordType> {\n  prefixCls: string;\n  expanded: boolean;\n  record: RecordType;\n  expandable: boolean;\n  onExpand: TriggerEventHandler<RecordType>;\n}\n\nexport type RenderExpandIcon<RecordType> = (props: RenderExpandIconProps<RecordType>) => any;\n\nexport interface ExpandableConfig<RecordType> {\n  expandedRowKeys?: readonly Key[];\n  defaultExpandedRowKeys?: readonly Key[];\n  expandedRowRender?: ExpandedRowRender<RecordType>;\n  expandRowByClick?: boolean;\n  expandIcon?: RenderExpandIcon<RecordType>;\n  onExpand?: (expanded: boolean, record: RecordType) => void;\n  onExpandedRowsChange?: (expandedKeys: readonly Key[]) => void;\n  defaultExpandAllRows?: boolean;\n  indentSize?: number;\n  /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */\n  expandIconColumnIndex?: number;\n  showExpandColumn?: boolean;\n  expandedRowClassName?: RowClassName<RecordType>;\n  childrenColumnName?: string;\n  rowExpandable?: (record: RecordType) => boolean;\n  columnWidth?: number | string;\n  fixed?: FixedType;\n}\n\n// =================== Render ===================\nexport type PanelRender<RecordType> = (data: readonly RecordType[]) => any;\n\n// =================== Events ===================\nexport type TriggerEventHandler<RecordType> = (record: RecordType, event: MouseEvent) => void;\n\n// =================== Sticky ===================\nexport interface TableSticky {\n  offsetHeader?: number;\n  offsetSummary?: number;\n  offsetScroll?: number;\n  getContainer?: () => Window | HTMLElement;\n}\n"
  },
  {
    "path": "components/vc-table/stickyScrollBar.tsx",
    "content": "import type { Ref } from 'vue';\nimport {\n  nextTick,\n  onActivated,\n  watchEffect,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue';\nimport addEventListenerWrap from '../vc-util/Dom/addEventListener';\nimport { getOffset } from '../vc-util/Dom/css';\nimport classNames from '../_util/classNames';\nimport type { MouseEventHandler } from '../_util/EventInterface';\nimport getScrollBarSize from '../_util/getScrollBarSize';\nimport { useInjectTable } from './context/TableContext';\nimport { useLayoutState } from './hooks/useFrame';\n\ninterface StickyScrollBarProps {\n  scrollBodyRef: Ref<HTMLElement>;\n  onScroll: (params: { scrollLeft?: number }) => void;\n  offsetScroll: number;\n  container: HTMLElement | Window;\n  scrollBodySizeInfo: {\n    scrollWidth: number;\n    clientWidth: number;\n  };\n}\n\nexport default defineComponent<StickyScrollBarProps>({\n  name: 'StickyScrollBar',\n  inheritAttrs: false,\n  props: ['offsetScroll', 'container', 'scrollBodyRef', 'scrollBodySizeInfo'] as any,\n  emits: ['scroll'],\n  setup(props, { emit, expose }) {\n    const tableContext = useInjectTable();\n    const bodyScrollWidth = shallowRef(0);\n    const bodyWidth = shallowRef(0);\n    const scrollBarWidth = shallowRef(0);\n    watchEffect(\n      () => {\n        bodyScrollWidth.value = props.scrollBodySizeInfo.scrollWidth || 0;\n        bodyWidth.value = props.scrollBodySizeInfo.clientWidth || 0;\n        scrollBarWidth.value =\n          bodyScrollWidth.value && bodyWidth.value * (bodyWidth.value / bodyScrollWidth.value);\n      },\n      { flush: 'post' },\n    );\n\n    const scrollBarRef = shallowRef();\n\n    const [scrollState, setScrollState] = useLayoutState({\n      scrollLeft: 0,\n      isHiddenScrollBar: true,\n    });\n\n    const refState = ref({\n      delta: 0,\n      x: 0,\n    });\n\n    const isActive = shallowRef(false);\n\n    const onMouseUp: MouseEventHandler = () => {\n      isActive.value = false;\n    };\n\n    const onMouseDown: MouseEventHandler = event => {\n      refState.value = { delta: event.pageX - scrollState.value.scrollLeft, x: 0 };\n      isActive.value = true;\n      event.preventDefault();\n    };\n\n    const onMouseMove: MouseEventHandler = event => {\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n      const { buttons } = event || (window?.event as any);\n      if (!isActive.value || buttons === 0) {\n        // If out body mouse up, we can set isActive false when mouse move\n        if (isActive.value) {\n          isActive.value = false;\n        }\n        return;\n      }\n      let left: number = refState.value.x + event.pageX - refState.value.x - refState.value.delta;\n\n      if (left <= 0) {\n        left = 0;\n      }\n\n      if (left + scrollBarWidth.value >= bodyWidth.value) {\n        left = bodyWidth.value - scrollBarWidth.value;\n      }\n      emit('scroll', {\n        scrollLeft: (left / bodyWidth.value) * (bodyScrollWidth.value + 2),\n      });\n\n      refState.value.x = event.pageX;\n    };\n\n    const onContainerScroll = () => {\n      if (!props.scrollBodyRef.value) {\n        return;\n      }\n      const tableOffsetTop = getOffset(props.scrollBodyRef.value).top;\n      const tableBottomOffset = tableOffsetTop + props.scrollBodyRef.value.offsetHeight;\n      const currentClientOffset =\n        props.container === window\n          ? document.documentElement.scrollTop + window.innerHeight\n          : getOffset(props.container).top + (props.container as HTMLElement).clientHeight;\n\n      if (\n        tableBottomOffset - getScrollBarSize() <= currentClientOffset ||\n        tableOffsetTop >= currentClientOffset - props.offsetScroll\n      ) {\n        setScrollState(state => ({\n          ...state,\n          isHiddenScrollBar: true,\n        }));\n      } else {\n        setScrollState(state => ({\n          ...state,\n          isHiddenScrollBar: false,\n        }));\n      }\n    };\n\n    const setScrollLeft = (left: number) => {\n      setScrollState(state => {\n        return {\n          ...state,\n          scrollLeft: (left / bodyScrollWidth.value) * bodyWidth.value || 0,\n        };\n      });\n    };\n\n    expose({\n      setScrollLeft,\n    });\n    let onMouseUpListener = null;\n    let onMouseMoveListener = null;\n    let onResizeListener = null;\n    let onScrollListener = null;\n    onMounted(() => {\n      onMouseUpListener = addEventListenerWrap(document.body, 'mouseup', onMouseUp, false);\n      onMouseMoveListener = addEventListenerWrap(document.body, 'mousemove', onMouseMove, false);\n      onResizeListener = addEventListenerWrap(window, 'resize', onContainerScroll, false);\n    });\n    onActivated(() => {\n      nextTick(() => {\n        onContainerScroll();\n      });\n    });\n\n    onMounted(() => {\n      setTimeout(() => {\n        watch(\n          [scrollBarWidth, isActive],\n          () => {\n            onContainerScroll();\n          },\n          { immediate: true, flush: 'post' },\n        );\n      });\n    });\n\n    watch(\n      () => props.container,\n      () => {\n        onScrollListener?.remove();\n        onScrollListener = addEventListenerWrap(\n          props.container,\n          'scroll',\n          onContainerScroll,\n          false,\n        );\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    onBeforeUnmount(() => {\n      onMouseUpListener?.remove();\n      onMouseMoveListener?.remove();\n      onScrollListener?.remove();\n      onResizeListener?.remove();\n    });\n\n    watch(\n      () => ({ ...scrollState.value }),\n      (newState, preState) => {\n        if (\n          newState.isHiddenScrollBar !== preState?.isHiddenScrollBar &&\n          !newState.isHiddenScrollBar\n        ) {\n          setScrollState(state => {\n            const bodyNode = props.scrollBodyRef.value;\n            if (!bodyNode) {\n              return state;\n            }\n            return {\n              ...state,\n              scrollLeft: (bodyNode.scrollLeft / bodyNode.scrollWidth) * bodyNode.clientWidth,\n            };\n          });\n        }\n      },\n      { immediate: true },\n    );\n    const scrollbarSize = getScrollBarSize();\n\n    return () => {\n      if (\n        bodyScrollWidth.value <= bodyWidth.value ||\n        !scrollBarWidth.value ||\n        scrollState.value.isHiddenScrollBar\n      ) {\n        return null;\n      }\n      const { prefixCls } = tableContext;\n      return (\n        <div\n          style={{\n            height: `${scrollbarSize}px`,\n            width: `${bodyWidth.value}px`,\n            bottom: `${props.offsetScroll}px`,\n          }}\n          class={`${prefixCls}-sticky-scroll`}\n        >\n          <div\n            onMousedown={onMouseDown}\n            ref={scrollBarRef}\n            class={classNames(`${prefixCls}-sticky-scroll-bar`, {\n              [`${prefixCls}-sticky-scroll-bar-active`]: isActive.value,\n            })}\n            style={{\n              width: `${scrollBarWidth.value}px`,\n              transform: `translate3d(${scrollState.value.scrollLeft}px, 0, 0)`,\n            }}\n          />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-table/sugar/Column.tsx",
    "content": "import type { FunctionalComponent } from 'vue';\nimport type { ColumnType } from '../interface';\n\nexport type ColumnProps<RecordType> = ColumnType<RecordType>;\n\n/* istanbul ignore next */\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\nconst Column: { <T>(arg: T): FunctionalComponent<ColumnProps<T>> } = () => null;\n\nexport default Column;\n"
  },
  {
    "path": "components/vc-table/sugar/ColumnGroup.tsx",
    "content": "import type { ColumnType } from '../interface';\nimport type { FunctionalComponent } from 'vue';\n/* istanbul ignore next */\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type ColumnGroupProps<RecordType> = ColumnType<RecordType>;\n\nconst ColumnGroup: { <T>(arg: T): FunctionalComponent<ColumnGroupProps<T>> } = () => null;\n\nexport default ColumnGroup;\n"
  },
  {
    "path": "components/vc-table/utils/expandUtil.tsx",
    "content": "import type { RenderExpandIconProps, Key, GetRowKey } from '../interface';\n\nexport function renderExpandIcon<RecordType>({\n  prefixCls,\n  record,\n  onExpand,\n  expanded,\n  expandable,\n}: RenderExpandIconProps<RecordType>) {\n  const expandClassName = `${prefixCls}-row-expand-icon`;\n\n  if (!expandable) {\n    return <span class={[expandClassName, `${prefixCls}-row-spaced`]} />;\n  }\n\n  const onClick = event => {\n    onExpand(record, event);\n    event.stopPropagation();\n  };\n\n  return (\n    <span\n      class={{\n        [expandClassName]: true,\n        [`${prefixCls}-row-expanded`]: expanded,\n        [`${prefixCls}-row-collapsed`]: !expanded,\n      }}\n      onClick={onClick}\n    />\n  );\n}\n\nexport function findAllChildrenKeys<RecordType>(\n  data: readonly RecordType[],\n  getRowKey: GetRowKey<RecordType>,\n  childrenColumnName: string,\n): Key[] {\n  const keys: Key[] = [];\n\n  function dig(list: readonly RecordType[]) {\n    (list || []).forEach((item, index) => {\n      keys.push(getRowKey(item, index));\n\n      dig((item as any)[childrenColumnName]);\n    });\n  }\n\n  dig(data);\n\n  return keys;\n}\n"
  },
  {
    "path": "components/vc-table/utils/fixUtil.ts",
    "content": "import type { StickyOffsets, FixedType } from '../interface';\n\nexport interface FixedInfo {\n  fixLeft: number | false;\n  fixRight: number | false;\n  lastFixLeft: boolean;\n  firstFixRight: boolean;\n\n  // For Rtl Direction\n  lastFixRight: boolean;\n  firstFixLeft: boolean;\n\n  isSticky: boolean;\n}\n\nexport function getCellFixedInfo(\n  colStart: number,\n  colEnd: number,\n  columns: readonly { fixed?: FixedType }[],\n  stickyOffsets: StickyOffsets,\n  direction: 'ltr' | 'rtl',\n): FixedInfo {\n  const startColumn = columns[colStart] || {};\n  const endColumn = columns[colEnd] || {};\n\n  let fixLeft: number;\n  let fixRight: number;\n\n  if (startColumn.fixed === 'left') {\n    fixLeft = stickyOffsets.left[colStart];\n  } else if (endColumn.fixed === 'right') {\n    fixRight = stickyOffsets.right[colEnd];\n  }\n\n  let lastFixLeft = false;\n  let firstFixRight = false;\n\n  let lastFixRight = false;\n  let firstFixLeft = false;\n\n  const nextColumn = columns[colEnd + 1];\n  const prevColumn = columns[colStart - 1];\n\n  if (direction === 'rtl') {\n    if (fixLeft !== undefined) {\n      const prevFixLeft = prevColumn && prevColumn.fixed === 'left';\n      firstFixLeft = !prevFixLeft;\n    } else if (fixRight !== undefined) {\n      const nextFixRight = nextColumn && nextColumn.fixed === 'right';\n      lastFixRight = !nextFixRight;\n    }\n  } else if (fixLeft !== undefined) {\n    const nextFixLeft = nextColumn && nextColumn.fixed === 'left';\n    lastFixLeft = !nextFixLeft;\n  } else if (fixRight !== undefined) {\n    const prevFixRight = prevColumn && prevColumn.fixed === 'right';\n    firstFixRight = !prevFixRight;\n  }\n\n  return {\n    fixLeft,\n    fixRight,\n    lastFixLeft,\n    firstFixRight,\n    lastFixRight,\n    firstFixLeft,\n    isSticky: stickyOffsets.isSticky,\n  };\n}\n"
  },
  {
    "path": "components/vc-table/utils/legacyUtil.ts",
    "content": "import { warning } from '../../vc-util/warning';\nimport type { ExpandableConfig, LegacyExpandableProps } from '../interface';\n\nexport const INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';\n\nexport function getExpandableProps<RecordType>(\n  props: LegacyExpandableProps<RecordType> & {\n    expandable?: ExpandableConfig<RecordType>;\n  },\n): ExpandableConfig<RecordType> {\n  const { expandable, ...legacyExpandableConfig } = props;\n  let config: ExpandableConfig<RecordType>;\n  if (props.expandable !== undefined) {\n    config = {\n      ...legacyExpandableConfig,\n      ...expandable,\n    };\n  } else {\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      [\n        'indentSize',\n        'expandedRowKeys',\n        'defaultExpandedRowKeys',\n        'defaultExpandAllRows',\n        'expandedRowRender',\n        'expandRowByClick',\n        'expandIcon',\n        'onExpand',\n        'onExpandedRowsChange',\n        'expandedRowClassName',\n        'expandIconColumnIndex',\n        'showExpandColumn',\n      ].some(prop => prop in props)\n    ) {\n      warning(false, 'expanded related props have been moved into `expandable`.');\n    }\n\n    config = legacyExpandableConfig;\n  }\n  if (config.showExpandColumn === false) {\n    config.expandIconColumnIndex = -1;\n  }\n\n  return config;\n}\n\n/**\n * Returns only data- and aria- key/value pairs\n * @param {object} props\n */\nexport function getDataAndAriaProps(props: object) {\n  /* eslint-disable no-param-reassign */\n  return Object.keys(props).reduce((memo, key) => {\n    if (key.startsWith('data-') || key.startsWith('aria-')) {\n      memo[key] = props[key];\n    }\n    return memo;\n  }, {});\n  /* eslint-enable */\n}\n"
  },
  {
    "path": "components/vc-table/utils/valueUtil.tsx",
    "content": "import type { Key, DataIndex } from '../interface';\n\nconst INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';\n\nfunction toArray<T>(arr: T | readonly T[]): T[] {\n  if (arr === undefined || arr === null) {\n    return [];\n  }\n  return (Array.isArray(arr) ? arr : [arr]) as T[];\n}\n\nexport function getPathValue<ValueType, ObjectType extends object>(\n  record: ObjectType,\n  path: DataIndex,\n): ValueType {\n  // Skip if path is empty\n  if (!path && typeof path !== 'number') {\n    return record as unknown as ValueType;\n  }\n\n  const pathList = toArray(path);\n\n  let current: ValueType | ObjectType = record;\n\n  for (let i = 0; i < pathList.length; i += 1) {\n    if (!current) {\n      return null;\n    }\n\n    const prop = pathList[i];\n    current = current[prop];\n  }\n\n  return current as ValueType;\n}\n\ninterface GetColumnKeyColumn {\n  key?: Key;\n  dataIndex?: DataIndex;\n}\n\nexport function getColumnsKey(columns: readonly GetColumnKeyColumn[]) {\n  const columnKeys: Key[] = [];\n  const keys: Record<Key, boolean> = {};\n\n  columns.forEach(column => {\n    const { key, dataIndex } = column || {};\n\n    let mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;\n    while (keys[mergedKey]) {\n      mergedKey = `${mergedKey}_next`;\n    }\n    keys[mergedKey] = true;\n\n    columnKeys.push(mergedKey);\n  });\n\n  return columnKeys;\n}\n\nexport function mergeObject<ReturnObject extends object>(\n  ...objects: Partial<ReturnObject>[]\n): ReturnObject {\n  const merged: Partial<ReturnObject> = {};\n\n  /* eslint-disable no-param-reassign */\n  function fillProps(obj: object, clone: object) {\n    if (clone) {\n      Object.keys(clone).forEach(key => {\n        const value = clone[key];\n        if (value && typeof value === 'object') {\n          obj[key] = obj[key] || {};\n          fillProps(obj[key], value);\n        } else {\n          obj[key] = value;\n        }\n      });\n    }\n  }\n  /* eslint-enable */\n\n  objects.forEach(clone => {\n    fillProps(merged, clone);\n  });\n\n  return merged as ReturnObject;\n}\n\nexport function validateValue<T>(val: T) {\n  return val !== null && val !== undefined;\n}\n"
  },
  {
    "path": "components/vc-tooltip/index.ts",
    "content": "// base rc-tooltip 5.1.1\nimport Tooltip from './src/Tooltip';\n\nexport default Tooltip;\n"
  },
  {
    "path": "components/vc-tooltip/src/Content.tsx",
    "content": "import type { ExtractPropTypes } from 'vue';\nimport { defineComponent } from 'vue';\nimport PropTypes from '../../_util/vue-types';\n\nconst tooltipContentProps = {\n  prefixCls: String,\n  id: String,\n  overlayInnerStyle: PropTypes.any,\n};\n\nexport type TooltipContentProps = Partial<ExtractPropTypes<typeof tooltipContentProps>>;\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TooltipContent',\n  props: tooltipContentProps,\n  setup(props: TooltipContentProps, { slots }) {\n    return () => (\n      <div\n        class={`${props.prefixCls}-inner`}\n        id={props.id}\n        role=\"tooltip\"\n        style={props.overlayInnerStyle}\n      >\n        {slots.overlay?.()}\n      </div>\n    );\n  },\n});\n"
  },
  {
    "path": "components/vc-tooltip/src/Tooltip.tsx",
    "content": "import PropTypes from '../../_util/vue-types';\nimport Trigger from '../../vc-trigger';\nimport { placements } from './placements';\nimport Content from './Content';\nimport { getPropsSlot } from '../../_util/props-util';\nimport type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, shallowRef, watchEffect } from 'vue';\n\nfunction noop() {}\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Tooltip',\n  inheritAttrs: false,\n  props: {\n    trigger: PropTypes.any.def(['hover']),\n    defaultVisible: { type: Boolean, default: undefined },\n    visible: { type: Boolean, default: undefined },\n    placement: PropTypes.string.def('right'),\n    transitionName: String,\n    animation: PropTypes.any,\n    afterVisibleChange: PropTypes.func.def(() => {}),\n    overlayStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n    overlayClassName: String,\n    prefixCls: PropTypes.string.def('rc-tooltip'),\n    mouseEnterDelay: PropTypes.number.def(0.1),\n    mouseLeaveDelay: PropTypes.number.def(0.1),\n    getPopupContainer: Function as PropType<(triggerNode?: HTMLElement) => HTMLElement>,\n    destroyTooltipOnHide: { type: Boolean, default: false },\n    align: PropTypes.object.def(() => ({})),\n    arrowContent: PropTypes.any.def(null),\n    tipId: String,\n    builtinPlacements: PropTypes.object,\n    overlayInnerStyle: {\n      type: Object as PropType<CSSProperties>,\n      default: undefined as CSSProperties,\n    },\n    popupVisible: { type: Boolean, default: undefined },\n    onVisibleChange: Function,\n    onPopupAlign: Function,\n    arrow: { type: Boolean, default: true },\n  },\n  setup(props, { slots, attrs, expose }) {\n    const triggerDOM = shallowRef();\n\n    const getPopupElement = () => {\n      const { prefixCls, tipId, overlayInnerStyle } = props;\n\n      return [\n        !!props.arrow ? (\n          <div class={`${prefixCls}-arrow`} key=\"arrow\">\n            {getPropsSlot(slots, props, 'arrowContent')}\n          </div>\n        ) : null,\n        <Content\n          key=\"content\"\n          prefixCls={prefixCls}\n          id={tipId}\n          overlayInnerStyle={overlayInnerStyle}\n          v-slots={{ overlay: slots.overlay }}\n        />,\n      ];\n    };\n\n    const getPopupDomNode = () => {\n      return triggerDOM.value.getPopupDomNode();\n    };\n\n    expose({\n      getPopupDomNode,\n      triggerDOM,\n      forcePopupAlign: () => triggerDOM.value?.forcePopupAlign(),\n    });\n\n    const destroyTooltip = shallowRef(false);\n    const autoDestroy = shallowRef(false);\n    watchEffect(() => {\n      const { destroyTooltipOnHide } = props;\n      if (typeof destroyTooltipOnHide === 'boolean') {\n        destroyTooltip.value = destroyTooltipOnHide;\n      } else if (destroyTooltipOnHide && typeof destroyTooltipOnHide === 'object') {\n        const { keepParent } = destroyTooltipOnHide;\n        destroyTooltip.value = keepParent === true;\n        autoDestroy.value = keepParent === false;\n      }\n    });\n\n    return () => {\n      const {\n        overlayClassName,\n        trigger,\n        mouseEnterDelay,\n        mouseLeaveDelay,\n        overlayStyle,\n        prefixCls,\n        afterVisibleChange,\n        transitionName,\n        animation,\n        placement,\n        align,\n        destroyTooltipOnHide,\n        defaultVisible,\n        ...restProps\n      } = props;\n      const extraProps = { ...restProps };\n      if (props.visible !== undefined) {\n        extraProps.popupVisible = props.visible;\n      }\n\n      const triggerProps = {\n        popupClassName: overlayClassName,\n        prefixCls,\n        action: trigger,\n        builtinPlacements: placements,\n        popupPlacement: placement,\n        popupAlign: align,\n        afterPopupVisibleChange: afterVisibleChange,\n        popupTransitionName: transitionName,\n        popupAnimation: animation,\n        defaultPopupVisible: defaultVisible,\n        destroyPopupOnHide: destroyTooltip.value,\n        autoDestroy: autoDestroy.value,\n        mouseLeaveDelay,\n        popupStyle: overlayStyle,\n        mouseEnterDelay,\n        ...extraProps,\n        ...attrs,\n        onPopupVisibleChange: props.onVisibleChange || (noop as any),\n        onPopupAlign: props.onPopupAlign || noop,\n        ref: triggerDOM,\n        arrow: !!props.arrow,\n        popup: getPopupElement(),\n      };\n      return <Trigger {...triggerProps} v-slots={{ default: slots.default }}></Trigger>;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tooltip/src/placements.ts",
    "content": "const autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1,\n};\n\nconst targetOffset = [0, 0];\n\nexport const placements = {\n  left: {\n    points: ['cr', 'cl'],\n    overflow: autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset,\n  },\n  right: {\n    points: ['cl', 'cr'],\n    overflow: autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset,\n  },\n  top: {\n    points: ['bc', 'tc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset,\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset,\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset,\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    overflow: autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset,\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset,\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    overflow: autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset,\n  },\n};\n\nexport default placements;\n"
  },
  {
    "path": "components/vc-tour/Mask.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport type { PosInfo } from './hooks/useTarget';\nimport useId from '../_util/hooks/useId';\nimport Portal from '../_util/PortalWrapper';\nimport { someType, objectType, booleanType } from '../_util/type';\n\nconst COVER_PROPS = {\n  fill: 'transparent',\n  'pointer-events': 'auto',\n};\n\nexport interface MaskProps {\n  prefixCls?: string;\n  pos: PosInfo; //\t获取引导卡片指向的元素\n  rootClassName?: string;\n  showMask?: boolean;\n  style?: CSSProperties;\n  fill?: string;\n  open?: boolean;\n  animated?: boolean | { placeholder: boolean };\n  zIndex?: number;\n}\nconst Mask = defineComponent({\n  name: 'TourMask',\n  props: {\n    prefixCls: { type: String },\n    pos: objectType<PosInfo>(), //\t获取引导卡片指向的元素\n    rootClassName: { type: String },\n    showMask: booleanType(),\n    fill: { type: String, default: 'rgba(0,0,0,0.5)' },\n    open: booleanType(),\n    animated: someType<boolean | { placeholder: boolean }>([Boolean, Object]),\n    zIndex: { type: Number },\n  },\n  setup(props, { attrs }) {\n    const id = useId();\n    return () => {\n      const { prefixCls, open, rootClassName, pos, showMask, fill, animated, zIndex } = props;\n\n      const maskId = `${prefixCls}-mask-${id}`;\n      const mergedAnimated = typeof animated === 'object' ? animated?.placeholder : animated;\n      return (\n        <Portal\n          visible={open}\n          autoLock\n          v-slots={{\n            default: () =>\n              open && (\n                <div\n                  {...attrs}\n                  class={classNames(`${prefixCls}-mask`, rootClassName, attrs.class)}\n                  style={[\n                    {\n                      position: 'fixed',\n                      left: 0,\n                      right: 0,\n                      top: 0,\n                      bottom: 0,\n                      zIndex,\n                      pointerEvents: 'none',\n                    },\n                    attrs.style as CSSProperties,\n                  ]}\n                >\n                  {showMask ? (\n                    <svg\n                      style={{\n                        width: '100%',\n                        height: '100%',\n                      }}\n                    >\n                      <defs>\n                        <mask id={maskId}>\n                          <rect x=\"0\" y=\"0\" width=\"100vw\" height=\"100vh\" fill=\"white\" />\n                          {pos && (\n                            <rect\n                              x={pos.left}\n                              y={pos.top}\n                              rx={pos.radius}\n                              width={pos.width}\n                              height={pos.height}\n                              fill=\"black\"\n                              class={mergedAnimated ? `${prefixCls}-placeholder-animated` : ''}\n                            />\n                          )}\n                        </mask>\n                      </defs>\n                      <rect\n                        x=\"0\"\n                        y=\"0\"\n                        width=\"100%\"\n                        height=\"100%\"\n                        fill={fill}\n                        mask={`url(#${maskId})`}\n                      />\n\n                      {/* Block click region */}\n                      {pos && (\n                        <>\n                          <rect {...COVER_PROPS} x=\"0\" y=\"0\" width=\"100%\" height={pos.top} />\n                          <rect {...COVER_PROPS} x=\"0\" y=\"0\" width={pos.left} height=\"100%\" />\n                          <rect\n                            {...COVER_PROPS}\n                            x=\"0\"\n                            y={pos.top + pos.height}\n                            width=\"100%\"\n                            height={`calc(100vh - ${pos.top + pos.height}px)`}\n                          />\n                          <rect\n                            {...COVER_PROPS}\n                            x={pos.left + pos.width}\n                            y=\"0\"\n                            width={`calc(100vw - ${pos.left + pos.width}px)`}\n                            height=\"100%\"\n                          />\n                        </>\n                      )}\n                    </svg>\n                  ) : null}\n                </div>\n              ),\n          }}\n        />\n      );\n    };\n  },\n});\n\nexport default Mask;\n"
  },
  {
    "path": "components/vc-tour/Tour.tsx",
    "content": "import { ref, computed, watch, watchEffect, defineComponent, toRefs, shallowRef } from 'vue';\nimport type { CSSProperties, ExtractPropTypes } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport Trigger, { triggerProps } from '../vc-trigger';\nimport classNames from '../_util/classNames';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport useTarget from './hooks/useTarget';\nimport type { Gap } from './hooks/useTarget';\nimport TourStep from './TourStep';\nimport type { TourStepInfo, TourStepProps } from './interface';\nimport Mask from './Mask';\nimport { getPlacements } from './placements';\nimport type { PlacementType } from './placements';\nimport { initDefaultProps } from '../_util/props-util';\n\nimport {\n  someType,\n  stringType,\n  arrayType,\n  objectType,\n  functionType,\n  booleanType,\n} from '../_util/type';\nimport Portal from '../_util/PortalWrapper';\n\nconst CENTER_PLACEHOLDER: CSSProperties = {\n  left: '50%',\n  top: '50%',\n  width: '1px',\n  height: '1px',\n};\n\nexport const tourProps = () => {\n  const { builtinPlacements, popupAlign } = triggerProps();\n  return {\n    builtinPlacements,\n    popupAlign,\n    steps: arrayType<TourStepInfo[]>(),\n    open: booleanType(),\n    defaultCurrent: { type: Number },\n    current: { type: Number },\n    onChange: functionType<(current: number) => void>(),\n    onClose: functionType<(current: number) => void>(),\n    onFinish: functionType<() => void>(),\n    mask: someType<boolean | { style?: CSSProperties; color?: string }>([Boolean, Object], true),\n    arrow: someType<boolean | { pointAtCenter: boolean }>([Boolean, Object], true),\n    rootClassName: { type: String },\n    placement: stringType<PlacementType>('bottom'),\n    prefixCls: { type: String, default: 'rc-tour' },\n    renderPanel: functionType<(props: TourStepProps, current: number) => VueNode>(),\n    gap: objectType<Gap>(),\n    animated: someType<boolean | { placeholder: boolean }>([Boolean, Object]),\n    scrollIntoViewOptions: someType<boolean | ScrollIntoViewOptions>([Boolean, Object], true),\n    zIndex: { type: Number, default: 1001 },\n  };\n};\n\nexport type TourProps = Partial<ExtractPropTypes<ReturnType<typeof tourProps>>>;\n\nconst Tour = defineComponent({\n  name: 'Tour',\n  inheritAttrs: false,\n  props: initDefaultProps(tourProps(), {}),\n  setup(props) {\n    const { defaultCurrent, placement, mask, scrollIntoViewOptions, open, gap, arrow } =\n      toRefs(props);\n\n    const triggerRef = ref();\n\n    const [mergedCurrent, setMergedCurrent] = useMergedState(0, {\n      value: computed(() => props.current),\n      defaultValue: defaultCurrent.value,\n    });\n\n    const [mergedOpen, setMergedOpen] = useMergedState(undefined, {\n      value: computed(() => props.open),\n      postState: origin =>\n        mergedCurrent.value < 0 || mergedCurrent.value >= props.steps.length\n          ? false\n          : origin ?? true,\n    });\n\n    const openRef = shallowRef(mergedOpen.value);\n    watchEffect(() => {\n      if (mergedOpen.value && !openRef.value) {\n        setMergedCurrent(0);\n      }\n      openRef.value = mergedOpen.value;\n    });\n\n    const curStep = computed(() => (props.steps[mergedCurrent.value] || {}) as TourStepInfo);\n\n    const mergedPlacement = computed(() => curStep.value.placement ?? placement.value);\n    const mergedMask = computed(() => mergedOpen.value && (curStep.value.mask ?? mask.value));\n    const mergedScrollIntoViewOptions = computed(\n      () => curStep.value.scrollIntoViewOptions ?? scrollIntoViewOptions.value,\n    );\n    const [posInfo, targetElement] = useTarget(\n      computed(() => curStep.value.target),\n      open,\n      gap,\n      mergedScrollIntoViewOptions,\n    );\n\n    // ========================= arrow =========================\n    const mergedArrow = computed(() =>\n      targetElement.value\n        ? typeof curStep.value.arrow === 'undefined'\n          ? arrow.value\n          : curStep.value.arrow\n        : false,\n    );\n    const arrowPointAtCenter = computed(() =>\n      typeof mergedArrow.value === 'object' ? mergedArrow.value.pointAtCenter : false,\n    );\n\n    watch(arrowPointAtCenter, () => {\n      triggerRef.value?.forcePopupAlign();\n    });\n    watch(mergedCurrent, () => {\n      triggerRef.value?.forcePopupAlign();\n    });\n\n    // ========================= Change =========================\n    const onInternalChange = (nextCurrent: number) => {\n      setMergedCurrent(nextCurrent);\n      props.onChange?.(nextCurrent);\n    };\n\n    return () => {\n      const {\n        prefixCls,\n        steps,\n        onClose,\n        onFinish,\n        rootClassName,\n        renderPanel,\n        animated,\n        zIndex,\n        ...restProps\n      } = props;\n\n      // ========================= Render =========================\n      // Skip if not init yet\n      if (targetElement.value === undefined) {\n        return null;\n      }\n\n      const handleClose = () => {\n        setMergedOpen(false);\n        onClose?.(mergedCurrent.value);\n      };\n\n      const mergedShowMask =\n        typeof mergedMask.value === 'boolean' ? mergedMask.value : !!mergedMask.value;\n      const mergedMaskStyle = typeof mergedMask.value === 'boolean' ? undefined : mergedMask.value;\n\n      // when targetElement is not exist, use body as triggerDOMNode\n      const getTriggerDOMNode = () => {\n        return targetElement.value || document.body;\n      };\n\n      const getPopupElement = () => (\n        <TourStep\n          arrow={mergedArrow.value}\n          key=\"content\"\n          prefixCls={prefixCls}\n          total={steps.length}\n          renderPanel={renderPanel}\n          onPrev={() => {\n            onInternalChange(mergedCurrent.value - 1);\n          }}\n          onNext={() => {\n            onInternalChange(mergedCurrent.value + 1);\n          }}\n          onClose={handleClose}\n          current={mergedCurrent.value}\n          onFinish={() => {\n            handleClose();\n            onFinish?.();\n          }}\n          {...curStep.value}\n        />\n      );\n      const posInfoStyle = computed(() => {\n        const info = posInfo.value || CENTER_PLACEHOLDER;\n        // 如果info[key] 是number，添加 px\n        const style: CSSProperties = {};\n        Object.keys(info).forEach(key => {\n          if (typeof info[key] === 'number') {\n            style[key] = `${info[key]}px`;\n          } else {\n            style[key] = info[key];\n          }\n        });\n        return style;\n      });\n      return mergedOpen.value ? (\n        <>\n          <Mask\n            zIndex={zIndex}\n            prefixCls={prefixCls}\n            pos={posInfo.value}\n            showMask={mergedShowMask}\n            style={mergedMaskStyle?.style}\n            fill={mergedMaskStyle?.color}\n            open={mergedOpen.value}\n            animated={animated}\n            rootClassName={rootClassName}\n          />\n          <Trigger\n            {...restProps}\n            arrow={!!restProps.arrow}\n            builtinPlacements={\n              !curStep.value.target\n                ? undefined\n                : restProps.builtinPlacements ?? getPlacements(arrowPointAtCenter.value)\n            }\n            ref={triggerRef}\n            popupStyle={\n              !curStep.value.target\n                ? {\n                    ...curStep.value.style,\n                    position: 'fixed',\n                    left: CENTER_PLACEHOLDER.left,\n                    top: CENTER_PLACEHOLDER.top,\n                    transform: 'translate(-50%, -50%)',\n                  }\n                : curStep.value.style\n            }\n            popupPlacement={mergedPlacement.value}\n            popupVisible={mergedOpen.value}\n            popupClassName={classNames(rootClassName, curStep.value.className)}\n            prefixCls={prefixCls}\n            popup={getPopupElement}\n            forceRender={false}\n            destroyPopupOnHide\n            zIndex={zIndex}\n            mask={false}\n            getTriggerDOMNode={getTriggerDOMNode}\n          >\n            <Portal visible={mergedOpen.value} autoLock>\n              <div\n                class={classNames(rootClassName, `${prefixCls}-target-placeholder`)}\n                style={{\n                  ...posInfoStyle.value,\n                  position: 'fixed',\n                  pointerEvents: 'none',\n                }}\n              />\n            </Portal>\n          </Trigger>\n        </>\n      ) : null;\n    };\n  },\n});\n\nexport default Tour;\n"
  },
  {
    "path": "components/vc-tour/TourStep/DefaultPanel.tsx",
    "content": "import { defineComponent } from 'vue';\nimport classNames from '../../_util/classNames';\nimport { tourStepProps } from '../interface';\nimport type { TourStepProps } from '../interface';\n\nconst DefaultPanel = defineComponent({\n  name: 'DefaultPanel',\n  inheritAttrs: false,\n  props: tourStepProps(),\n  setup(props, { attrs }) {\n    return () => {\n      const { prefixCls, current, total, title, description, onClose, onPrev, onNext, onFinish } =\n        props as TourStepProps;\n      return (\n        <div {...attrs} class={classNames(`${prefixCls}-content`, attrs.class)}>\n          <div class={`${prefixCls}-inner`}>\n            <button type=\"button\" onClick={onClose} aria-label=\"Close\" class={`${prefixCls}-close`}>\n              <span class={`${prefixCls}-close-x`}>&times;</span>\n            </button>\n            <div class={`${prefixCls}-header`}>\n              <div class={`${prefixCls}-title`}>{title}</div>\n            </div>\n            <div class={`${prefixCls}-description`}>{description}</div>\n            <div class={`${prefixCls}-footer`}>\n              <div class={`${prefixCls}-sliders`}>\n                {total > 1\n                  ? [...Array.from({ length: total }).keys()].map((item, index) => {\n                      return <span key={item} class={index === current ? 'active' : ''} />;\n                    })\n                  : null}\n              </div>\n              <div class={`${prefixCls}-buttons`}>\n                {current !== 0 ? (\n                  <button class={`${prefixCls}-prev-btn`} onClick={onPrev}>\n                    Prev\n                  </button>\n                ) : null}\n                {current === total - 1 ? (\n                  <button class={`${prefixCls}-finish-btn`} onClick={onFinish}>\n                    Finish\n                  </button>\n                ) : (\n                  <button class={`${prefixCls}-next-btn`} onClick={onNext}>\n                    Next\n                  </button>\n                )}\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    };\n  },\n});\n\nexport default DefaultPanel;\n"
  },
  {
    "path": "components/vc-tour/TourStep/index.tsx",
    "content": "import { defineComponent } from 'vue';\nimport DefaultPanel from './DefaultPanel';\nimport { tourStepProps } from '../interface';\n\nconst TourStep = defineComponent({\n  name: 'TourStep',\n  inheritAttrs: false,\n  props: tourStepProps(),\n  setup(props, { attrs }) {\n    return () => {\n      const { current, renderPanel } = props;\n\n      return (\n        <>\n          {typeof renderPanel === 'function' ? (\n            renderPanel({ ...attrs, ...props }, current)\n          ) : (\n            <DefaultPanel {...attrs} {...props} />\n          )}\n        </>\n      );\n    };\n  },\n});\n\nexport default TourStep;\n"
  },
  {
    "path": "components/vc-tour/hooks/useTarget.ts",
    "content": "import { computed, watchEffect, onMounted, watch, onBeforeUnmount } from 'vue';\nimport type { Ref } from 'vue';\nimport { isInViewPort } from '../util';\nimport type { TourStepInfo } from '..';\n\nimport useState from '../../_util/hooks/useState';\n\nexport interface Gap {\n  offset?: number;\n  radius?: number;\n}\n\nexport interface PosInfo {\n  left: number;\n  top: number;\n  height: number;\n  width: number;\n  radius: number;\n}\n\nexport default function useTarget(\n  target: Ref<TourStepInfo['target']>,\n  open: Ref<boolean>,\n  gap?: Ref<Gap>,\n  scrollIntoViewOptions?: Ref<boolean | ScrollIntoViewOptions>,\n): [Ref<PosInfo>, Ref<HTMLElement>] {\n  // ========================= Target =========================\n  // We trade `undefined` as not get target by function yet.\n  // `null` as empty target.\n  const [targetElement, setTargetElement] = useState<null | HTMLElement | undefined>(undefined);\n\n  watchEffect(\n    () => {\n      const nextElement =\n        typeof target.value === 'function' ? (target.value as any)() : target.value;\n\n      setTargetElement(nextElement || null);\n    },\n    { flush: 'post' },\n  );\n\n  // ========================= Align ==========================\n  const [posInfo, setPosInfo] = useState<PosInfo>(null);\n\n  const updatePos = () => {\n    if (!open.value) {\n      setPosInfo(null);\n      return;\n    }\n    if (targetElement.value) {\n      // Exist target element. We should scroll and get target position\n      if (!isInViewPort(targetElement.value) && open.value) {\n        targetElement.value.scrollIntoView(scrollIntoViewOptions.value);\n      }\n\n      const { left, top, width, height } = targetElement.value.getBoundingClientRect();\n      const nextPosInfo: PosInfo = { left, top, width, height, radius: 0 };\n      if (JSON.stringify(posInfo.value) !== JSON.stringify(nextPosInfo)) {\n        setPosInfo(nextPosInfo);\n      }\n    } else {\n      // Not exist target which means we just show in center\n      setPosInfo(null);\n    }\n  };\n\n  onMounted(() => {\n    watch(\n      [open, targetElement],\n      () => {\n        updatePos();\n      },\n      { flush: 'post', immediate: true },\n    );\n    // update when window resize\n    window.addEventListener('resize', updatePos);\n  });\n  onBeforeUnmount(() => {\n    window.removeEventListener('resize', updatePos);\n  });\n\n  // ======================== PosInfo =========================\n  const mergedPosInfo = computed(() => {\n    if (!posInfo.value) {\n      return posInfo.value;\n    }\n\n    const gapOffset = gap.value?.offset || 6;\n    const gapRadius = gap.value?.radius || 2;\n\n    return {\n      left: posInfo.value.left - gapOffset,\n      top: posInfo.value.top - gapOffset,\n      width: posInfo.value.width + gapOffset * 2,\n      height: posInfo.value.height + gapOffset * 2,\n      radius: gapRadius,\n    };\n  });\n\n  return [mergedPosInfo, targetElement];\n}\n"
  },
  {
    "path": "components/vc-tour/index.ts",
    "content": "import Tour from './Tour';\nexport type { TourProps } from './Tour';\nexport { tourProps } from './Tour';\nexport type { TourStepInfo, TourStepProps } from './interface';\nexport { tourStepInfo, tourStepProps } from './interface';\nexport default Tour;\n"
  },
  {
    "path": "components/vc-tour/interface.ts",
    "content": "import type { ExtractPropTypes, CSSProperties } from 'vue';\nimport type { PlacementType } from './placements';\nimport type { VueNode } from '../_util/type';\nimport { someType, stringType, objectType, functionType } from '../_util/type';\n\nexport const tourStepInfo = () => ({\n  arrow: someType<boolean | { pointAtCenter: boolean }>([Boolean, Object]),\n  target: someType<HTMLElement | (() => HTMLElement) | null | (() => null)>([\n    String,\n    Function,\n    Object,\n  ]),\n  title: someType<string | VueNode>([String, Object]),\n  description: someType<string | VueNode>([String, Object]),\n  placement: stringType<PlacementType>(),\n  mask: someType<boolean | { style?: CSSProperties; color?: string }>([Object, Boolean], true),\n  className: { type: String },\n  style: objectType<CSSProperties>(),\n  scrollIntoViewOptions: someType<boolean | ScrollIntoViewOptions>([Boolean, Object]),\n});\n\nexport type TourStepInfo = Partial<ExtractPropTypes<ReturnType<typeof tourStepInfo>>>;\n\nexport const tourStepProps = () => ({\n  ...tourStepInfo(),\n  prefixCls: { type: String },\n  total: { type: Number },\n  current: { type: Number },\n  onClose: functionType<(e: MouseEvent) => void>(),\n  onFinish: functionType<(e: MouseEvent) => void>(),\n  renderPanel: functionType<(step: any, current: number) => VueNode>(),\n  onPrev: functionType<(e: MouseEvent) => void>(),\n  onNext: functionType<(e: MouseEvent) => void>(),\n});\n\nexport type TourStepProps = Partial<ExtractPropTypes<ReturnType<typeof tourStepProps>>>;\n"
  },
  {
    "path": "components/vc-tour/placements.tsx",
    "content": "import type { BuildInPlacements } from '../vc-trigger/interface';\n\nexport type PlacementType =\n  | 'left'\n  | 'leftTop'\n  | 'leftBottom'\n  | 'right'\n  | 'rightTop'\n  | 'rightBottom'\n  | 'top'\n  | 'topLeft'\n  | 'topRight'\n  | 'bottom'\n  | 'bottomLeft'\n  | 'bottomRight'\n  | 'center';\n\nconst targetOffset = [0, 0];\n\nconst basePlacements: BuildInPlacements = {\n  left: {\n    points: ['cr', 'cl'],\n    offset: [-8, 0],\n  },\n  right: {\n    points: ['cl', 'cr'],\n    offset: [8, 0],\n  },\n  top: {\n    points: ['bc', 'tc'],\n    offset: [0, -8],\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    offset: [0, 8],\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    offset: [0, -8],\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    offset: [-8, 0],\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    offset: [0, -8],\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    offset: [8, 0],\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    offset: [0, 8],\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    offset: [8, 0],\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    offset: [0, 8],\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    offset: [-8, 0],\n  },\n};\n\nexport function getPlacements(arrowPointAtCenter = false) {\n  const placements: BuildInPlacements = {};\n  Object.keys(basePlacements).forEach(key => {\n    placements[key] = { ...basePlacements[key], autoArrow: arrowPointAtCenter, targetOffset };\n  });\n  return placements;\n}\n\nexport const placements = getPlacements();\n"
  },
  {
    "path": "components/vc-tour/util.ts",
    "content": "export function isInViewPort(element: HTMLElement) {\n  const viewWidth = window.innerWidth || document.documentElement.clientWidth;\n  const viewHeight = window.innerHeight || document.documentElement.clientHeight;\n  const { top, right, bottom, left } = element.getBoundingClientRect();\n\n  return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight;\n}\n"
  },
  {
    "path": "components/vc-tree/DropIndicator.tsx",
    "content": "import type { CSSProperties } from 'vue';\n\nexport default function DropIndicator({\n  dropPosition,\n  dropLevelOffset,\n  indent,\n}: {\n  dropPosition: -1 | 0 | 1;\n  dropLevelOffset: number;\n  indent: number;\n}) {\n  const style: CSSProperties = {\n    pointerEvents: 'none',\n    position: 'absolute',\n    right: 0,\n    backgroundColor: 'red',\n    height: `${2}px`,\n  };\n  switch (dropPosition) {\n    case -1:\n      style.top = 0;\n      style.left = `${-dropLevelOffset * indent}px`;\n      break;\n    case 1:\n      style.bottom = 0;\n      style.left = `${-dropLevelOffset * indent}px`;\n      break;\n    case 0:\n      style.bottom = 0;\n      style.left = `${indent}`;\n      break;\n  }\n  return <div style={style} />;\n}\n"
  },
  {
    "path": "components/vc-tree/Indent.tsx",
    "content": "interface IndentProps {\n  prefixCls: string;\n  level: number;\n  isStart: boolean[];\n  isEnd: boolean[];\n}\n\nconst Indent = ({ prefixCls, level, isStart, isEnd }: IndentProps) => {\n  const baseClassName = `${prefixCls}-indent-unit`;\n  const list = [];\n  for (let i = 0; i < level; i += 1) {\n    list.push(\n      <span\n        key={i}\n        class={{\n          [baseClassName]: true,\n          [`${baseClassName}-start`]: isStart[i],\n          [`${baseClassName}-end`]: isEnd[i],\n        }}\n      />,\n    );\n  }\n\n  return (\n    <span aria-hidden=\"true\" class={`${prefixCls}-indent`}>\n      {list}\n    </span>\n  );\n};\n\nexport default Indent;\n"
  },
  {
    "path": "components/vc-tree/MotionTreeNode.tsx",
    "content": "import TreeNode from './TreeNode';\nimport type { FlattenNode } from './interface';\nimport { useInjectTreeContext } from './contextTypes';\nimport type { PropType } from 'vue';\nimport {\n  computed,\n  nextTick,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  shallowRef,\n  Transition,\n  watch,\n} from 'vue';\nimport { treeNodeProps } from './props';\nimport collapseMotion from '../_util/collapseMotion';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'MotionTreeNode',\n  inheritAttrs: false,\n  props: {\n    ...treeNodeProps,\n    active: Boolean,\n    motion: Object,\n    motionNodes: { type: Array as PropType<FlattenNode[]> },\n    onMotionStart: Function,\n    onMotionEnd: Function,\n    motionType: String,\n    // treeNodeRequiredProps: { type: Object as PropType<TreeNodeRequiredProps> },\n  },\n  setup(props, { attrs, slots }) {\n    const visible = shallowRef(true);\n    const context = useInjectTreeContext();\n    const motionedRef = shallowRef(false);\n    const transitionProps = computed(() => {\n      if (props.motion) {\n        return props.motion;\n      } else {\n        return collapseMotion();\n      }\n    });\n    const onMotionEnd = (node?: HTMLDivElement, type?: 'appear' | 'leave') => {\n      if (type === 'appear') {\n        transitionProps.value?.onAfterEnter?.(node);\n      } else if (type === 'leave') {\n        transitionProps.value?.onAfterLeave?.(node);\n      }\n      if (!motionedRef.value) {\n        props.onMotionEnd();\n      }\n      motionedRef.value = true;\n    };\n\n    watch(\n      () => props.motionNodes,\n      () => {\n        if (props.motionNodes && props.motionType === 'hide' && visible.value) {\n          nextTick(() => {\n            visible.value = false;\n          });\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n    onMounted(() => {\n      props.motionNodes && props.onMotionStart();\n    });\n    onBeforeUnmount(() => {\n      props.motionNodes && onMotionEnd();\n    });\n\n    return () => {\n      const { motion, motionNodes, motionType, active, eventKey, ...otherProps } = props;\n      if (motionNodes) {\n        return (\n          <Transition\n            {...transitionProps.value}\n            appear={motionType === 'show'}\n            onAfterAppear={(node: HTMLDivElement) => onMotionEnd(node, 'appear')}\n            onAfterLeave={(node: HTMLDivElement) => onMotionEnd(node, 'leave')}\n          >\n            <div v-show={visible.value} class={`${context.value.prefixCls}-treenode-motion`}>\n              {motionNodes.map((treeNode: FlattenNode) => {\n                const {\n                  data: { ...restProps },\n                  title,\n                  key,\n                  isStart,\n                  isEnd,\n                } = treeNode;\n                delete restProps.children;\n\n                return (\n                  <TreeNode\n                    v-slots={slots}\n                    {...restProps}\n                    title={title}\n                    active={active}\n                    data={treeNode.data}\n                    key={key}\n                    eventKey={key}\n                    isStart={isStart}\n                    isEnd={isEnd}\n                  />\n                );\n              })}\n            </div>\n          </Transition>\n        );\n      }\n      return (\n        <TreeNode\n          v-slots={slots}\n          class={attrs.class}\n          style={attrs.style}\n          {...otherProps}\n          active={active}\n          eventKey={eventKey}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree/NodeList.tsx",
    "content": "/**\n * Handle virtual list of the TreeNodes.\n */\n\nimport { computed, defineComponent, ref, shallowRef, watch } from 'vue';\nimport VirtualList from '../vc-virtual-list';\nimport omit from '../_util/omit';\nimport { useInjectKeysState, useInjectTreeContext } from './contextTypes';\nimport type { FlattenNode, DataEntity, DataNode, ScrollTo } from './interface';\nimport MotionTreeNode from './MotionTreeNode';\nimport type { NodeListProps } from './props';\nimport { nodeListProps } from './props';\nimport { findExpandedKeys, getExpandRange } from './utils/diffUtil';\nimport { getKey } from './utils/treeUtil';\n\nconst HIDDEN_STYLE = {\n  width: 0,\n  height: 0,\n  display: 'flex',\n  overflow: 'hidden',\n  opacity: 0,\n  border: 0,\n  padding: 0,\n  margin: 0,\n};\n\nconst noop = () => {};\n\nexport const MOTION_KEY = `RC_TREE_MOTION_${Math.random()}`;\n\nconst MotionNode: DataNode = {\n  key: MOTION_KEY,\n};\n\nexport const MotionEntity: DataEntity = {\n  key: MOTION_KEY,\n  level: 0,\n  index: 0,\n  pos: '0',\n  node: MotionNode,\n  nodes: [MotionNode],\n};\n\nconst MotionFlattenData: FlattenNode = {\n  parent: null,\n  children: [],\n  pos: MotionEntity.pos,\n  data: MotionNode,\n  title: null,\n  key: MOTION_KEY,\n  /** Hold empty list here since we do not use it */\n  isStart: [],\n  isEnd: [],\n};\n\nexport interface NodeListRef {\n  scrollTo: ScrollTo;\n  getIndentWidth: () => number;\n}\n\n/**\n * We only need get visible content items to play the animation.\n */\nexport function getMinimumRangeTransitionRange(\n  list: FlattenNode[],\n  virtual: boolean,\n  height: number,\n  itemHeight: number,\n) {\n  if (virtual === false || !height) {\n    return list;\n  }\n\n  return list.slice(0, Math.ceil(height / itemHeight) + 1);\n}\n\nfunction itemKey(item: FlattenNode) {\n  const { key, pos } = item;\n  return getKey(key, pos);\n}\n\nfunction getAccessibilityPath(item: FlattenNode): string {\n  let path = String(item.key);\n  let current = item;\n\n  while (current.parent) {\n    current = current.parent;\n    path = `${current.key} > ${path}`;\n  }\n\n  return path;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'NodeList',\n  inheritAttrs: false,\n  props: nodeListProps,\n  setup(props, { expose, attrs }) {\n    // =============================== Ref ================================\n    const listRef = ref();\n    const indentMeasurerRef = ref();\n    const { expandedKeys, flattenNodes } = useInjectKeysState();\n    expose({\n      scrollTo: scroll => {\n        listRef.value.scrollTo(scroll);\n      },\n      getIndentWidth: () => indentMeasurerRef.value.offsetWidth,\n    });\n    // ============================== Motion ==============================\n    const transitionData = shallowRef<FlattenNode[]>(flattenNodes.value);\n    const transitionRange = shallowRef([]);\n    const motionType = ref<'show' | 'hide' | null>(null);\n\n    function onMotionEnd() {\n      transitionData.value = flattenNodes.value;\n      transitionRange.value = [];\n      motionType.value = null;\n\n      props.onListChangeEnd();\n    }\n\n    const context = useInjectTreeContext();\n    watch(\n      [() => expandedKeys.value.slice(), flattenNodes],\n      ([expandedKeys, data], [prevExpandedKeys, prevData]) => {\n        const diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);\n        if (diffExpanded.key !== null) {\n          const { virtual, height, itemHeight } = props;\n          if (diffExpanded.add) {\n            const keyIndex = prevData.findIndex(({ key }) => key === diffExpanded.key);\n            const rangeNodes = getMinimumRangeTransitionRange(\n              getExpandRange(prevData, data, diffExpanded.key),\n              virtual,\n              height,\n              itemHeight,\n            );\n\n            const newTransitionData: FlattenNode[] = prevData.slice();\n            newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n            transitionData.value = newTransitionData;\n            transitionRange.value = rangeNodes;\n            motionType.value = 'show';\n          } else {\n            const keyIndex = data.findIndex(({ key }) => key === diffExpanded.key);\n\n            const rangeNodes = getMinimumRangeTransitionRange(\n              getExpandRange(data, prevData, diffExpanded.key),\n              virtual,\n              height,\n              itemHeight,\n            );\n\n            const newTransitionData: FlattenNode[] = data.slice();\n            newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n            transitionData.value = newTransitionData;\n            transitionRange.value = rangeNodes;\n            motionType.value = 'hide';\n          }\n        } else if (prevData !== data) {\n          transitionData.value = data;\n        }\n      },\n    );\n    // We should clean up motion if is changed by dragging\n    watch(\n      () => context.value.dragging,\n      dragging => {\n        if (!dragging) {\n          onMotionEnd();\n        }\n      },\n    );\n\n    const mergedData = computed(() =>\n      props.motion === undefined ? transitionData.value : flattenNodes.value,\n    );\n    const onActiveChange = () => {\n      props.onActiveChange(null);\n    };\n    return () => {\n      const {\n        prefixCls,\n        selectable,\n        checkable,\n        disabled,\n\n        motion,\n\n        height,\n        itemHeight,\n        virtual,\n\n        focusable,\n        activeItem,\n        focused,\n        tabindex,\n\n        onKeydown,\n        onFocus,\n        onBlur,\n\n        onListChangeStart,\n        onListChangeEnd,\n\n        ...domProps\n      } = { ...props, ...attrs } as NodeListProps;\n      return (\n        <>\n          {focused && activeItem && (\n            <span style={HIDDEN_STYLE} aria-live=\"assertive\">\n              {getAccessibilityPath(activeItem)}\n            </span>\n          )}\n\n          <div>\n            <input\n              style={HIDDEN_STYLE}\n              disabled={focusable === false || disabled}\n              tabindex={focusable !== false ? tabindex : null}\n              onKeydown={onKeydown}\n              onFocus={onFocus}\n              onBlur={onBlur}\n              value=\"\"\n              onChange={noop}\n              aria-label=\"for screen reader\"\n            />\n          </div>\n\n          <div\n            class={`${prefixCls}-treenode`}\n            aria-hidden\n            style={{\n              position: 'absolute',\n              pointerEvents: 'none',\n              visibility: 'hidden',\n              height: 0,\n              overflow: 'hidden',\n            }}\n          >\n            <div class={`${prefixCls}-indent`}>\n              <div ref={indentMeasurerRef} class={`${prefixCls}-indent-unit`} />\n            </div>\n          </div>\n\n          <VirtualList\n            {...omit(domProps, ['onActiveChange'])}\n            data={mergedData.value}\n            itemKey={itemKey as any}\n            height={height}\n            fullHeight={false}\n            virtual={virtual}\n            itemHeight={itemHeight}\n            prefixCls={`${prefixCls}-list`}\n            ref={listRef}\n            onVisibleChange={(originList, fullList) => {\n              const originSet = new Set(originList);\n              const restList = fullList.filter(item => !originSet.has(item));\n\n              // Motion node is not render. Skip motion\n              if (restList.some(item => itemKey(item) === MOTION_KEY)) {\n                onMotionEnd();\n              }\n            }}\n            v-slots={{\n              default: (treeNode: FlattenNode) => {\n                const {\n                  pos,\n                  data: { ...restProps },\n                  title,\n                  key,\n                  isStart,\n                  isEnd,\n                } = treeNode;\n                const mergedKey = getKey(key, pos);\n                delete restProps.key;\n                delete restProps.children;\n                return (\n                  <MotionTreeNode\n                    {...restProps}\n                    eventKey={mergedKey}\n                    title={title}\n                    active={!!activeItem && key === activeItem.key}\n                    data={treeNode.data}\n                    isStart={isStart}\n                    isEnd={isEnd}\n                    motion={motion}\n                    motionNodes={key === MOTION_KEY ? transitionRange.value : null}\n                    motionType={motionType.value}\n                    onMotionStart={onListChangeStart}\n                    onMotionEnd={onMotionEnd}\n                    onMousemove={onActiveChange}\n                  />\n                );\n              },\n            }}\n          ></VirtualList>\n        </>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree/Tree.tsx",
    "content": "import type { NodeMouseEventHandler, NodeDragEventHandler } from './contextTypes';\nimport { useProvideKeysState, TreeContext } from './contextTypes';\nimport {\n  getDragChildrenKeys,\n  parseCheckedKeys,\n  conductExpandParent,\n  calcSelectedKeys,\n  calcDropPosition,\n  arrAdd,\n  arrDel,\n  posToArr,\n} from './util';\nimport type { Key, FlattenNode, EventDataNode, ScrollTo, DragNodeEvent } from './interface';\nimport type { TreeNodeRequiredProps } from './utils/treeUtil';\nimport {\n  flattenTreeData,\n  convertTreeToData,\n  convertDataToEntities,\n  convertNodePropsToEventData,\n  getTreeNodeProps,\n  fillFieldNames,\n} from './utils/treeUtil';\nimport NodeList, { MOTION_KEY, MotionEntity } from './NodeList';\nimport { conductCheck } from './utils/conductUtil';\nimport DropIndicator from './DropIndicator';\nimport {\n  computed,\n  defineComponent,\n  onUnmounted,\n  reactive,\n  shallowRef,\n  watch,\n  watchEffect,\n  nextTick,\n  toRaw,\n} from 'vue';\nimport initDefaultProps from '../_util/props-util/initDefaultProps';\nimport type { CheckInfo, DraggableFn } from './props';\nimport { treeProps } from './props';\nimport { warning } from '../vc-util/warning';\nimport KeyCode from '../_util/KeyCode';\nimport classNames from '../_util/classNames';\nimport pickAttrs from '../_util/pickAttrs';\nimport useMaxLevel from './useMaxLevel';\n\nconst MAX_RETRY_TIMES = 10;\n\nexport type DraggableConfig = {\n  icon?: any;\n  nodeDraggable?: DraggableFn;\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Tree',\n  inheritAttrs: false,\n  props: initDefaultProps(treeProps(), {\n    prefixCls: 'vc-tree',\n    showLine: false,\n    showIcon: true,\n    selectable: true,\n    multiple: false,\n    checkable: false,\n    disabled: false,\n    checkStrictly: false,\n    draggable: false,\n    expandAction: false,\n    defaultExpandParent: true,\n    autoExpandParent: false,\n    defaultExpandAll: false,\n    defaultExpandedKeys: [],\n    defaultCheckedKeys: [],\n    defaultSelectedKeys: [],\n    dropIndicatorRender: DropIndicator,\n    allowDrop: () => true,\n  }),\n\n  setup(props, { attrs, slots, expose }) {\n    const destroyed = shallowRef(false);\n    let delayedDragEnterLogic: Record<Key, number> = {};\n    const indent = shallowRef();\n    const selectedKeys = shallowRef<Key[]>([]);\n    const checkedKeys = shallowRef<Key[]>([]);\n    const halfCheckedKeys = shallowRef<Key[]>([]);\n    const loadedKeys = shallowRef<Key[]>([]);\n    const loadingKeys = shallowRef<Key[]>([]);\n    const expandedKeys = shallowRef<Key[]>([]);\n    const loadingRetryTimes: Record<Key, number> = {};\n    const dragState = reactive({\n      draggingNodeKey: null,\n      dragChildrenKeys: [],\n\n      // dropTargetKey is the key of abstract-drop-node\n      // the abstract-drop-node is the real drop node when drag and drop\n      // not the DOM drag over node\n      dropTargetKey: null,\n      dropPosition: null, // the drop position of abstract-drop-node, inside 0, top -1, bottom 1\n      dropContainerKey: null, // the container key of abstract-drop-node if dropPosition is -1 or 1\n      dropLevelOffset: null, // the drop level offset of abstract-drag-over-node\n      dropTargetPos: null, // the pos of abstract-drop-node\n      dropAllowed: true, // if drop to abstract-drop-node is allowed\n      // the abstract-drag-over-node\n      // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n      // abstract-drag-over-node is the top node\n      dragOverNodeKey: null,\n    });\n    const treeData = shallowRef([]);\n    watch(\n      [() => props.treeData, () => props.children],\n      () => {\n        treeData.value =\n          props.treeData !== undefined\n            ? props.treeData.slice()\n            : convertTreeToData(toRaw(props.children));\n      },\n      {\n        immediate: true,\n        deep: true,\n      },\n    );\n    const keyEntities = shallowRef({});\n\n    const focused = shallowRef(false);\n    const activeKey = shallowRef<Key>(null);\n\n    const listChanging = shallowRef(false);\n\n    const fieldNames = computed(() => fillFieldNames(props.fieldNames));\n\n    const listRef = shallowRef();\n\n    let dragStartMousePosition = null;\n\n    let dragNode: DragNodeEvent = null;\n\n    let currentMouseOverDroppableNodeKey = null;\n\n    const treeNodeRequiredProps = computed<TreeNodeRequiredProps>(() => {\n      return {\n        expandedKeysSet: expandedKeysSet.value,\n        selectedKeysSet: selectedKeysSet.value,\n        loadedKeysSet: loadedKeysSet.value,\n        loadingKeysSet: loadingKeysSet.value,\n        checkedKeysSet: checkedKeysSet.value,\n        halfCheckedKeysSet: halfCheckedKeysSet.value,\n        dragOverNodeKey: dragState.dragOverNodeKey,\n        dropPosition: dragState.dropPosition,\n        keyEntities: keyEntities.value,\n      };\n    });\n    const expandedKeysSet = computed(() => {\n      return new Set(expandedKeys.value);\n    });\n    const selectedKeysSet = computed(() => {\n      return new Set(selectedKeys.value);\n    });\n    const loadedKeysSet = computed(() => {\n      return new Set(loadedKeys.value);\n    });\n    const loadingKeysSet = computed(() => {\n      return new Set(loadingKeys.value);\n    });\n    const checkedKeysSet = computed(() => {\n      return new Set(checkedKeys.value);\n    });\n    const halfCheckedKeysSet = computed(() => {\n      return new Set(halfCheckedKeys.value);\n    });\n\n    watchEffect(() => {\n      if (treeData.value) {\n        const entitiesMap = convertDataToEntities(treeData.value, {\n          fieldNames: fieldNames.value,\n        });\n        keyEntities.value = {\n          [MOTION_KEY]: MotionEntity,\n          ...entitiesMap.keyEntities,\n        };\n      }\n    });\n    let init = false; // 处理 defaultXxxx api, 仅仅首次有效\n\n    watch(\n      [() => props.expandedKeys, () => props.autoExpandParent, keyEntities],\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      ([_newKeys, newAutoExpandParent], [_oldKeys, oldAutoExpandParent]) => {\n        let keys = expandedKeys.value;\n        // ================ expandedKeys =================\n        if (\n          props.expandedKeys !== undefined ||\n          (init && newAutoExpandParent !== oldAutoExpandParent)\n        ) {\n          keys =\n            props.autoExpandParent || (!init && props.defaultExpandParent)\n              ? conductExpandParent(props.expandedKeys, keyEntities.value)\n              : props.expandedKeys;\n        } else if (!init && props.defaultExpandAll) {\n          const cloneKeyEntities = { ...keyEntities.value };\n          delete cloneKeyEntities[MOTION_KEY];\n          keys = Object.keys(cloneKeyEntities).map(key => cloneKeyEntities[key].key);\n        } else if (!init && props.defaultExpandedKeys) {\n          keys =\n            props.autoExpandParent || props.defaultExpandParent\n              ? conductExpandParent(props.defaultExpandedKeys, keyEntities.value)\n              : props.defaultExpandedKeys;\n        }\n\n        if (keys) {\n          expandedKeys.value = keys;\n        }\n        init = true;\n      },\n      { immediate: true },\n    );\n\n    // ================ flattenNodes =================\n    const flattenNodes = shallowRef([]);\n    watchEffect(() => {\n      flattenNodes.value = flattenTreeData(treeData.value, expandedKeys.value, fieldNames.value);\n    });\n    // ================ selectedKeys =================\n    watchEffect(() => {\n      if (props.selectable) {\n        if (props.selectedKeys !== undefined) {\n          selectedKeys.value = calcSelectedKeys(props.selectedKeys, props);\n        } else if (!init && props.defaultSelectedKeys) {\n          selectedKeys.value = calcSelectedKeys(props.defaultSelectedKeys, props);\n        }\n      }\n    });\n    const { maxLevel, levelEntities } = useMaxLevel(keyEntities);\n    // ================= checkedKeys =================\n    watchEffect(() => {\n      if (props.checkable) {\n        let checkedKeyEntity;\n\n        if (props.checkedKeys !== undefined) {\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n        } else if (!init && props.defaultCheckedKeys) {\n          checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n        } else if (treeData.value) {\n          // If `treeData` changed, we also need check it\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n            checkedKeys: checkedKeys.value,\n            halfCheckedKeys: halfCheckedKeys.value,\n          };\n        }\n\n        if (checkedKeyEntity) {\n          let { checkedKeys: newCheckedKeys = [], halfCheckedKeys: newHalfCheckedKeys = [] } =\n            checkedKeyEntity;\n\n          if (!props.checkStrictly) {\n            const conductKeys = conductCheck(\n              newCheckedKeys,\n              true,\n              keyEntities.value,\n              maxLevel.value,\n              levelEntities.value,\n            );\n            ({ checkedKeys: newCheckedKeys, halfCheckedKeys: newHalfCheckedKeys } = conductKeys);\n          }\n\n          checkedKeys.value = newCheckedKeys;\n          halfCheckedKeys.value = newHalfCheckedKeys;\n        }\n      }\n    });\n\n    // ================= loadedKeys ==================\n    watchEffect(() => {\n      if (props.loadedKeys) {\n        loadedKeys.value = props.loadedKeys;\n      }\n    });\n\n    const resetDragState = () => {\n      Object.assign(dragState, {\n        dragOverNodeKey: null,\n        dropPosition: null,\n        dropLevelOffset: null,\n        dropTargetKey: null,\n        dropContainerKey: null,\n        dropTargetPos: null,\n        dropAllowed: false,\n      });\n    };\n    const scrollTo: ScrollTo = scroll => {\n      listRef.value.scrollTo(scroll);\n    };\n    watch(\n      () => props.activeKey,\n      () => {\n        if (props.activeKey !== undefined) {\n          activeKey.value = props.activeKey;\n        }\n      },\n      { immediate: true },\n    );\n    watch(\n      activeKey,\n      val => {\n        nextTick(() => {\n          if (val !== null) {\n            scrollTo({ key: val });\n          }\n        });\n      },\n      { immediate: true, flush: 'post' },\n    );\n    // =========================== Expanded ===========================\n    /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n    const setExpandedKeys = (keys: Key[]) => {\n      if (props.expandedKeys === undefined) {\n        expandedKeys.value = keys;\n      }\n    };\n\n    const cleanDragState = () => {\n      if (dragState.draggingNodeKey !== null) {\n        Object.assign(dragState, {\n          draggingNodeKey: null,\n          dropPosition: null,\n          dropContainerKey: null,\n          dropTargetKey: null,\n          dropLevelOffset: null,\n          dropAllowed: true,\n          dragOverNodeKey: null,\n        });\n      }\n      dragStartMousePosition = null;\n      currentMouseOverDroppableNodeKey = null;\n    };\n    // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n    const onNodeDragEnd: NodeDragEventHandler = (event, node) => {\n      const { onDragend } = props;\n\n      dragState.dragOverNodeKey = null;\n\n      cleanDragState();\n\n      onDragend?.({ event, node: node.eventData });\n\n      dragNode = null;\n    };\n\n    // since stopPropagation() is called in treeNode\n    // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n    const onWindowDragEnd = event => {\n      onNodeDragEnd(event, null, true);\n      window.removeEventListener('dragend', onWindowDragEnd);\n    };\n\n    const onNodeDragStart: NodeDragEventHandler = (event, node) => {\n      const { onDragstart } = props;\n      const { eventKey, eventData } = node;\n      dragNode = node;\n      dragStartMousePosition = {\n        x: event.clientX,\n        y: event.clientY,\n      };\n\n      const newExpandedKeys = arrDel(expandedKeys.value, eventKey);\n\n      dragState.draggingNodeKey = eventKey;\n      dragState.dragChildrenKeys = getDragChildrenKeys(eventKey, keyEntities.value);\n      indent.value = listRef.value.getIndentWidth();\n\n      setExpandedKeys(newExpandedKeys);\n      window.addEventListener('dragend', onWindowDragEnd);\n\n      if (onDragstart) {\n        onDragstart({ event, node: eventData });\n      }\n    };\n\n    /**\n     * [Legacy] Select handler is smaller than node,\n     * so that this will trigger when drag enter node or select handler.\n     * This is a little tricky if customize css without padding.\n     * Better for use mouse move event to refresh drag state.\n     * But let's just keep it to avoid event trigger logic change.\n     */\n    const onNodeDragEnter = (event: DragEvent, node: DragNodeEvent) => {\n      const { onDragenter, onExpand, allowDrop, direction } = props;\n      const { pos, eventKey } = node;\n      // record the key of node which is latest entered, used in dragleave event.\n      if (currentMouseOverDroppableNodeKey !== eventKey) {\n        currentMouseOverDroppableNodeKey = eventKey;\n      }\n\n      if (!dragNode) {\n        resetDragState();\n        return;\n      }\n      const {\n        dropPosition,\n        dropLevelOffset,\n        dropTargetKey,\n        dropContainerKey,\n        dropTargetPos,\n        dropAllowed,\n        dragOverNodeKey,\n      } = calcDropPosition(\n        event,\n        dragNode,\n        node,\n        indent.value,\n        dragStartMousePosition,\n        allowDrop,\n        flattenNodes.value,\n        keyEntities.value,\n        expandedKeysSet.value,\n        direction,\n      );\n\n      if (\n        // don't allow drop inside its children\n        dragState.dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n        // don't allow drop when drop is not allowed caculated by calcDropPosition\n        !dropAllowed\n      ) {\n        resetDragState();\n        return;\n      }\n\n      // Side effect for delay drag\n      if (!delayedDragEnterLogic) {\n        delayedDragEnterLogic = {};\n      }\n      Object.keys(delayedDragEnterLogic).forEach(key => {\n        clearTimeout(delayedDragEnterLogic[key]);\n      });\n\n      if (dragNode.eventKey !== node.eventKey) {\n        // hoist expand logic here\n        // since if logic is on the bottom\n        // it will be blocked by abstract dragover node check\n        //   => if you dragenter from top, you mouse will still be consider as in the top node\n        delayedDragEnterLogic[pos] = window.setTimeout(() => {\n          if (dragState.draggingNodeKey === null) return;\n\n          let newExpandedKeys = expandedKeys.value.slice();\n          const entity = keyEntities.value[node.eventKey];\n\n          if (entity && (entity.children || []).length) {\n            newExpandedKeys = arrAdd(expandedKeys.value, node.eventKey);\n          }\n          setExpandedKeys(newExpandedKeys);\n\n          if (onExpand) {\n            onExpand(newExpandedKeys, {\n              node: node.eventData,\n              expanded: true,\n              nativeEvent: event,\n            });\n          }\n        }, 800);\n      }\n\n      // Skip if drag node is self\n      if (dragNode.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        resetDragState();\n        return;\n      }\n\n      // Update drag over node and drag state\n      Object.assign(dragState, {\n        dragOverNodeKey,\n        dropPosition,\n        dropLevelOffset,\n        dropTargetKey,\n        dropContainerKey,\n        dropTargetPos,\n        dropAllowed,\n      });\n\n      if (onDragenter) {\n        onDragenter({\n          event,\n          node: node.eventData,\n          expandedKeys: expandedKeys.value,\n        });\n      }\n    };\n\n    const onNodeDragOver = (event: DragEvent, node: DragNodeEvent) => {\n      const { onDragover, allowDrop, direction } = props;\n\n      if (!dragNode) {\n        return;\n      }\n      const {\n        dropPosition,\n        dropLevelOffset,\n        dropTargetKey,\n        dropContainerKey,\n        dropAllowed,\n        dropTargetPos,\n        dragOverNodeKey,\n      } = calcDropPosition(\n        event,\n        dragNode,\n        node,\n        indent.value,\n        dragStartMousePosition,\n        allowDrop,\n        flattenNodes.value,\n        keyEntities.value,\n        expandedKeysSet.value,\n        direction,\n      );\n\n      if (dragState.dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n        // don't allow drop inside its children\n        // don't allow drop when drop is not allowed caculated by calcDropPosition\n        return;\n      }\n\n      // Update drag position\n\n      if (dragNode.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        if (\n          !(\n            dragState.dropPosition === null &&\n            dragState.dropLevelOffset === null &&\n            dragState.dropTargetKey === null &&\n            dragState.dropContainerKey === null &&\n            dragState.dropTargetPos === null &&\n            dragState.dropAllowed === false &&\n            dragState.dragOverNodeKey === null\n          )\n        ) {\n          resetDragState();\n        }\n      } else if (\n        !(\n          dropPosition === dragState.dropPosition &&\n          dropLevelOffset === dragState.dropLevelOffset &&\n          dropTargetKey === dragState.dropTargetKey &&\n          dropContainerKey === dragState.dropContainerKey &&\n          dropTargetPos === dragState.dropTargetPos &&\n          dropAllowed === dragState.dropAllowed &&\n          dragOverNodeKey === dragState.dragOverNodeKey\n        )\n      ) {\n        Object.assign(dragState, {\n          dropPosition,\n          dropLevelOffset,\n          dropTargetKey,\n          dropContainerKey,\n          dropTargetPos,\n          dropAllowed,\n          dragOverNodeKey,\n        });\n      }\n\n      if (onDragover) {\n        onDragover({ event, node: node.eventData });\n      }\n    };\n\n    const onNodeDragLeave: NodeDragEventHandler = (event, node) => {\n      // if it is outside the droppable area\n      // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n      if (\n        currentMouseOverDroppableNodeKey === node.eventKey &&\n        !(event.currentTarget as any).contains(event.relatedTarget as Node)\n      ) {\n        resetDragState();\n        currentMouseOverDroppableNodeKey = null;\n      }\n\n      const { onDragleave } = props;\n\n      if (onDragleave) {\n        onDragleave({ event, node: node.eventData });\n      }\n    };\n    const onNodeDrop = (event: DragEvent, _node, outsideTree = false) => {\n      const { dragChildrenKeys, dropPosition, dropTargetKey, dropTargetPos, dropAllowed } =\n        dragState;\n      if (!dropAllowed) return;\n\n      const { onDrop } = props;\n\n      dragState.dragOverNodeKey = null;\n      cleanDragState();\n\n      if (dropTargetKey === null) return;\n      const abstractDropNodeProps = {\n        ...getTreeNodeProps(dropTargetKey, toRaw(treeNodeRequiredProps.value)),\n        active: activeItem.value?.key === dropTargetKey,\n        data: keyEntities.value[dropTargetKey].node,\n      };\n      const dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n\n      warning(\n        !dropToChild,\n        \"Can not drop to dragNode's children node. Maybe this is a bug of ant-design-vue. Please report an issue.\",\n      );\n\n      const posArr = posToArr(dropTargetPos);\n\n      const dropResult = {\n        event,\n        node: convertNodePropsToEventData(abstractDropNodeProps),\n        dragNode: dragNode ? dragNode.eventData : null,\n        dragNodesKeys: [dragNode.eventKey].concat(dragChildrenKeys),\n        dropToGap: dropPosition !== 0,\n        dropPosition: dropPosition + Number(posArr[posArr.length - 1]),\n      };\n\n      if (!outsideTree) {\n        onDrop?.(dropResult);\n      }\n\n      dragNode = null;\n    };\n    const triggerExpandActionExpand: NodeMouseEventHandler = (e, treeNode) => {\n      const { expanded, key } = treeNode;\n\n      const node = flattenNodes.value.filter(nodeItem => nodeItem.key === key)[0];\n      const eventNode = convertNodePropsToEventData({\n        ...getTreeNodeProps(key, treeNodeRequiredProps.value),\n        data: node.data,\n      });\n      setExpandedKeys(expanded ? arrDel(expandedKeys.value, key) : arrAdd(expandedKeys.value, key));\n\n      onNodeExpand(e, eventNode);\n    };\n\n    const onNodeClick: NodeMouseEventHandler = (e, treeNode) => {\n      const { onClick, expandAction } = props;\n      if (expandAction === 'click') {\n        triggerExpandActionExpand(e, treeNode);\n      }\n      if (onClick) {\n        onClick(e, treeNode);\n      }\n    };\n\n    const onNodeDoubleClick: NodeMouseEventHandler = (e, treeNode) => {\n      const { onDblclick, expandAction } = props;\n      if (expandAction === 'doubleclick' || expandAction === 'dblclick') {\n        triggerExpandActionExpand(e, treeNode);\n      }\n      if (onDblclick) {\n        onDblclick(e, treeNode);\n      }\n    };\n\n    const onNodeSelect: NodeMouseEventHandler = (e, treeNode) => {\n      let newSelectedKeys = selectedKeys.value;\n      const { onSelect, multiple } = props;\n      const { selected } = treeNode;\n      const key = treeNode[fieldNames.value.key];\n      const targetSelected = !selected;\n\n      // Update selected keys\n      if (!targetSelected) {\n        newSelectedKeys = arrDel(newSelectedKeys, key);\n      } else if (!multiple) {\n        newSelectedKeys = [key];\n      } else {\n        newSelectedKeys = arrAdd(newSelectedKeys, key);\n      }\n\n      // [Legacy] Not found related usage in doc or upper libs\n      const keyEntitiesValue = keyEntities.value;\n      const selectedNodes = newSelectedKeys\n        .map(selectedKey => {\n          const entity = keyEntitiesValue[selectedKey];\n          if (!entity) return null;\n\n          return entity.node;\n        })\n        .filter(node => node);\n\n      if (props.selectedKeys === undefined) {\n        selectedKeys.value = newSelectedKeys;\n      }\n\n      if (onSelect) {\n        onSelect(newSelectedKeys, {\n          event: 'select',\n          selected: targetSelected,\n          node: treeNode,\n          selectedNodes,\n          nativeEvent: e,\n        });\n      }\n    };\n\n    const onNodeCheck = (e: MouseEvent, treeNode: EventDataNode, checked: boolean) => {\n      const { checkStrictly, onCheck } = props;\n      const key = treeNode[fieldNames.value.key];\n\n      // Prepare trigger arguments\n      let checkedObj;\n      const eventObj: Partial<CheckInfo> = {\n        event: 'check',\n        node: treeNode,\n        checked,\n        nativeEvent: e,\n      };\n      const keyEntitiesValue = keyEntities.value;\n      if (checkStrictly) {\n        const newCheckedKeys = checked\n          ? arrAdd(checkedKeys.value, key)\n          : arrDel(checkedKeys.value, key);\n        const newHalfCheckedKeys = arrDel(halfCheckedKeys.value, key);\n        checkedObj = { checked: newCheckedKeys, halfChecked: newHalfCheckedKeys };\n\n        eventObj.checkedNodes = newCheckedKeys\n          .map(checkedKey => keyEntitiesValue[checkedKey])\n          .filter(entity => entity)\n          .map(entity => entity.node);\n\n        if (props.checkedKeys === undefined) {\n          checkedKeys.value = newCheckedKeys;\n        }\n      } else {\n        // Always fill first\n        let { checkedKeys: newCheckedKeys, halfCheckedKeys: newHalfCheckedKeys } = conductCheck(\n          [...checkedKeys.value, key],\n          true,\n          keyEntitiesValue,\n          maxLevel.value,\n          levelEntities.value,\n        );\n\n        // If remove, we do it again to correction\n        if (!checked) {\n          const keySet = new Set(newCheckedKeys);\n          keySet.delete(key);\n          ({ checkedKeys: newCheckedKeys, halfCheckedKeys: newHalfCheckedKeys } = conductCheck(\n            Array.from(keySet),\n            { checked: false, halfCheckedKeys: newHalfCheckedKeys },\n            keyEntitiesValue,\n            maxLevel.value,\n            levelEntities.value,\n          ));\n        }\n\n        checkedObj = newCheckedKeys;\n\n        // [Legacy] This is used for vc-tree-select`\n        eventObj.checkedNodes = [];\n        eventObj.checkedNodesPositions = [];\n        eventObj.halfCheckedKeys = newHalfCheckedKeys;\n        newCheckedKeys.forEach(checkedKey => {\n          const entity = keyEntitiesValue[checkedKey];\n          if (!entity) return;\n\n          const { node, pos } = entity;\n          eventObj.checkedNodes.push(node);\n          eventObj.checkedNodesPositions.push({ node, pos });\n        });\n        if (props.checkedKeys === undefined) {\n          checkedKeys.value = newCheckedKeys;\n          halfCheckedKeys.value = newHalfCheckedKeys;\n        }\n      }\n\n      if (onCheck) {\n        onCheck(checkedObj, eventObj as CheckInfo);\n      }\n    };\n\n    const onNodeLoad = (treeNode: EventDataNode) => {\n      const key = treeNode[fieldNames.value.key];\n      const loadPromise = new Promise<void>((resolve, reject) => {\n        // We need to get the latest state of loading/loaded keys\n        const { loadData, onLoad } = props;\n\n        if (!loadData || loadedKeysSet.value.has(key) || loadingKeysSet.value.has(key)) {\n          return null;\n        }\n\n        // Process load data\n        const promise = loadData(treeNode);\n        promise\n          .then(() => {\n            const newLoadedKeys = arrAdd(loadedKeys.value, key);\n            const newLoadingKeys = arrDel(loadingKeys.value, key);\n\n            // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n            // https://github.com/ant-design/ant-design/issues/12464\n            if (onLoad) {\n              onLoad(newLoadedKeys, {\n                event: 'load',\n                node: treeNode,\n              });\n            }\n\n            if (props.loadedKeys === undefined) {\n              loadedKeys.value = newLoadedKeys;\n            }\n            loadingKeys.value = newLoadingKeys;\n            resolve();\n          })\n          .catch(e => {\n            const newLoadingKeys = arrDel(loadingKeys.value, key);\n            loadingKeys.value = newLoadingKeys;\n\n            // If exceed max retry times, we give up retry\n            loadingRetryTimes[key] = (loadingRetryTimes[key] || 0) + 1;\n            if (loadingRetryTimes[key] >= MAX_RETRY_TIMES) {\n              warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n              const newLoadedKeys = arrAdd(loadedKeys.value, key);\n              if (props.loadedKeys === undefined) {\n                loadedKeys.value = newLoadedKeys;\n              }\n              resolve();\n            }\n\n            reject(e);\n          });\n\n        loadingKeys.value = arrAdd(loadingKeys.value, key);\n      });\n      // Not care warning if we ignore this\n      loadPromise.catch(() => {});\n\n      return loadPromise;\n    };\n    const onNodeMouseEnter: NodeMouseEventHandler = (event, node) => {\n      const { onMouseenter } = props;\n      if (onMouseenter) {\n        onMouseenter({ event, node });\n      }\n    };\n\n    const onNodeMouseLeave: NodeMouseEventHandler = (event, node) => {\n      const { onMouseleave } = props;\n      if (onMouseleave) {\n        onMouseleave({ event, node });\n      }\n    };\n\n    const onNodeContextMenu: NodeMouseEventHandler = (event, node) => {\n      const { onRightClick } = props;\n      if (onRightClick) {\n        event.preventDefault();\n        onRightClick({ event, node });\n      }\n    };\n\n    const onFocus = (e: FocusEvent) => {\n      const { onFocus } = props;\n      focused.value = true;\n      if (onFocus) {\n        onFocus(e);\n      }\n    };\n\n    const onBlur = (e: FocusEvent) => {\n      const { onBlur } = props;\n      focused.value = false;\n      onActiveChange(null);\n\n      if (onBlur) {\n        onBlur(e);\n      }\n    };\n\n    const onNodeExpand = (e: MouseEvent, treeNode: EventDataNode) => {\n      let newExpandedKeys = expandedKeys.value;\n      const { onExpand, loadData } = props;\n      const { expanded } = treeNode;\n      const key = treeNode[fieldNames.value.key];\n\n      // Do nothing when motion is in progress\n      if (listChanging.value) {\n        return;\n      }\n\n      // Update selected keys\n      const index = newExpandedKeys.indexOf(key);\n      const targetExpanded = !expanded;\n\n      warning(\n        (expanded && index !== -1) || (!expanded && index === -1),\n        'Expand state not sync with index check',\n      );\n\n      if (targetExpanded) {\n        newExpandedKeys = arrAdd(newExpandedKeys, key);\n      } else {\n        newExpandedKeys = arrDel(newExpandedKeys, key);\n      }\n\n      setExpandedKeys(newExpandedKeys);\n\n      if (onExpand) {\n        onExpand(newExpandedKeys, {\n          node: treeNode,\n          expanded: targetExpanded,\n          nativeEvent: e,\n        });\n      }\n\n      // Async Load data\n      if (targetExpanded && loadData) {\n        const loadPromise = onNodeLoad(treeNode);\n        if (loadPromise) {\n          loadPromise\n            .then(() => {\n              // [Legacy] Refresh logic\n              // const newFlattenTreeData = flattenTreeData(\n              //   treeData.value,\n              //   newExpandedKeys,\n              //   fieldNames.value,\n              // );\n              // flattenNodes.value = newFlattenTreeData;\n            })\n            .catch(e => {\n              const expandedKeysToRestore = arrDel(expandedKeys.value, key);\n              setExpandedKeys(expandedKeysToRestore);\n              Promise.reject(e);\n            });\n        }\n      }\n    };\n\n    const onListChangeStart = () => {\n      listChanging.value = true;\n    };\n\n    const onListChangeEnd = () => {\n      setTimeout(() => {\n        listChanging.value = false;\n      });\n    };\n\n    // =========================== Keyboard ===========================\n    const onActiveChange = (newActiveKey: Key) => {\n      const { onActiveChange } = props;\n\n      if (activeKey.value === newActiveKey) {\n        return;\n      }\n      if (props.activeKey !== undefined) {\n        activeKey.value = newActiveKey;\n      }\n      if (newActiveKey !== null) {\n        scrollTo({ key: newActiveKey });\n      }\n\n      if (onActiveChange) {\n        onActiveChange(newActiveKey);\n      }\n    };\n\n    const activeItem = computed<FlattenNode>(() => {\n      if (activeKey.value === null) {\n        return null;\n      }\n\n      return flattenNodes.value.find(({ key }) => key === activeKey.value) || null;\n    });\n\n    const offsetActiveKey = (offset: number) => {\n      let index = flattenNodes.value.findIndex(({ key }) => key === activeKey.value);\n      // Align with index\n      if (index === -1 && offset < 0) {\n        index = flattenNodes.value.length;\n      }\n\n      index = (index + offset + flattenNodes.value.length) % flattenNodes.value.length;\n\n      const item = flattenNodes.value[index];\n      if (item) {\n        const { key } = item;\n        onActiveChange(key);\n      } else {\n        onActiveChange(null);\n      }\n    };\n    const activeItemEventNode = computed(() => {\n      return convertNodePropsToEventData({\n        ...getTreeNodeProps(activeKey.value, treeNodeRequiredProps.value),\n        data: activeItem.value.data,\n        active: true,\n      });\n    });\n    const onKeydown = event => {\n      const { onKeydown, checkable, selectable } = props;\n\n      // >>>>>>>>>> Direction\n      switch (event.which) {\n        case KeyCode.UP: {\n          offsetActiveKey(-1);\n          event.preventDefault();\n          break;\n        }\n        case KeyCode.DOWN: {\n          offsetActiveKey(1);\n          event.preventDefault();\n          break;\n        }\n      }\n\n      // >>>>>>>>>> Expand & Selection\n      const item = activeItem.value;\n      if (item && item.data) {\n        const expandable = item.data.isLeaf === false || !!(item.data.children || []).length;\n        const eventNode = activeItemEventNode.value;\n\n        switch (event.which) {\n          // >>> Expand\n          case KeyCode.LEFT: {\n            // Collapse if possible\n            if (expandable && expandedKeysSet.value.has(activeKey.value)) {\n              onNodeExpand({} as MouseEvent, eventNode);\n            } else if (item.parent) {\n              onActiveChange(item.parent.key);\n            }\n            event.preventDefault();\n            break;\n          }\n          case KeyCode.RIGHT: {\n            // Expand if possible\n            if (expandable && !expandedKeysSet.value.has(activeKey.value)) {\n              onNodeExpand({} as MouseEvent, eventNode);\n            } else if (item.children && item.children.length) {\n              onActiveChange(item.children[0].key);\n            }\n            event.preventDefault();\n            break;\n          }\n\n          // Selection\n          case KeyCode.ENTER:\n          case KeyCode.SPACE: {\n            if (\n              checkable &&\n              !eventNode.disabled &&\n              eventNode.checkable !== false &&\n              !eventNode.disableCheckbox\n            ) {\n              onNodeCheck({} as MouseEvent, eventNode, !checkedKeysSet.value.has(activeKey.value));\n            } else if (\n              !checkable &&\n              selectable &&\n              !eventNode.disabled &&\n              eventNode.selectable !== false\n            ) {\n              onNodeSelect({} as MouseEvent, eventNode);\n            }\n            break;\n          }\n        }\n      }\n\n      if (onKeydown) {\n        onKeydown(event);\n      }\n    };\n    expose({\n      onNodeExpand,\n      scrollTo,\n      onKeydown,\n      selectedKeys: computed(() => selectedKeys.value),\n      checkedKeys: computed(() => checkedKeys.value),\n      halfCheckedKeys: computed(() => halfCheckedKeys.value),\n      loadedKeys: computed(() => loadedKeys.value),\n      loadingKeys: computed(() => loadingKeys.value),\n      expandedKeys: computed(() => expandedKeys.value),\n    });\n    onUnmounted(() => {\n      window.removeEventListener('dragend', onWindowDragEnd);\n      destroyed.value = true;\n    });\n    useProvideKeysState({\n      expandedKeys,\n      selectedKeys,\n      loadedKeys,\n      loadingKeys,\n      checkedKeys,\n      halfCheckedKeys,\n      expandedKeysSet,\n      selectedKeysSet,\n      loadedKeysSet,\n      loadingKeysSet,\n      checkedKeysSet,\n      halfCheckedKeysSet,\n      flattenNodes,\n    });\n    return () => {\n      const {\n        // focused,\n        // flattenNodes,\n        // keyEntities,\n        draggingNodeKey,\n        // activeKey,\n        dropLevelOffset,\n        dropContainerKey,\n        dropTargetKey,\n        dropPosition,\n        dragOverNodeKey,\n        // indent,\n      } = dragState;\n      const {\n        prefixCls,\n        showLine,\n        focusable,\n        tabindex = 0,\n        selectable,\n        showIcon,\n        icon = slots.icon,\n        switcherIcon,\n        draggable,\n        checkable,\n        checkStrictly,\n        disabled,\n        motion,\n        loadData,\n        filterTreeNode,\n        height,\n        itemHeight,\n        virtual,\n        dropIndicatorRender,\n        onContextmenu,\n        onScroll,\n        direction,\n        rootClassName,\n        rootStyle,\n      } = props;\n\n      const { class: className, style } = attrs;\n      const domProps = pickAttrs(\n        { ...props, ...attrs },\n        {\n          aria: true,\n          data: true,\n        },\n      );\n\n      // It's better move to hooks but we just simply keep here\n      let draggableConfig: DraggableConfig | false;\n      if (draggable) {\n        if (typeof draggable === 'object') {\n          draggableConfig = draggable;\n        } else if (typeof draggable === 'function') {\n          draggableConfig = {\n            nodeDraggable: draggable,\n          };\n        } else {\n          draggableConfig = {};\n        }\n      } else {\n        draggableConfig = false;\n      }\n      return (\n        <TreeContext\n          value={{\n            prefixCls,\n            selectable,\n            showIcon,\n            icon,\n            switcherIcon,\n            draggable: draggableConfig,\n            draggingNodeKey,\n            checkable,\n            customCheckable: slots.checkable,\n            checkStrictly,\n            disabled,\n            keyEntities: keyEntities.value,\n            dropLevelOffset,\n            dropContainerKey,\n            dropTargetKey,\n            dropPosition,\n            dragOverNodeKey,\n            dragging: draggingNodeKey !== null,\n            indent: indent.value,\n            direction,\n            dropIndicatorRender,\n\n            loadData,\n            filterTreeNode,\n\n            onNodeClick,\n            onNodeDoubleClick,\n            onNodeExpand,\n            onNodeSelect,\n            onNodeCheck,\n            onNodeLoad,\n            onNodeMouseEnter,\n            onNodeMouseLeave,\n            onNodeContextMenu,\n            onNodeDragStart,\n            onNodeDragEnter,\n            onNodeDragOver,\n            onNodeDragLeave,\n            onNodeDragEnd,\n            onNodeDrop,\n            slots,\n          }}\n        >\n          <div\n            role=\"tree\"\n            class={classNames(prefixCls, className, rootClassName, {\n              [`${prefixCls}-show-line`]: showLine,\n              [`${prefixCls}-focused`]: focused.value,\n              [`${prefixCls}-active-focused`]: activeKey.value !== null,\n            })}\n            style={rootStyle}\n          >\n            <NodeList\n              ref={listRef}\n              prefixCls={prefixCls}\n              style={style}\n              disabled={disabled}\n              selectable={selectable}\n              checkable={!!checkable}\n              motion={motion}\n              height={height}\n              itemHeight={itemHeight}\n              virtual={virtual}\n              focusable={focusable}\n              focused={focused.value}\n              tabindex={tabindex}\n              activeItem={activeItem.value}\n              onFocus={onFocus}\n              onBlur={onBlur}\n              onKeydown={onKeydown}\n              onActiveChange={onActiveChange}\n              onListChangeStart={onListChangeStart}\n              onListChangeEnd={onListChangeEnd}\n              onContextmenu={onContextmenu}\n              onScroll={onScroll}\n              {...domProps}\n            />\n          </div>\n        </TreeContext>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree/TreeNode.tsx",
    "content": "import { useInjectKeysState, useInjectTreeContext } from './contextTypes';\nimport Indent from './Indent';\nimport { convertNodePropsToEventData, getTreeNodeProps } from './utils/treeUtil';\nimport type { CSSProperties } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onMounted,\n  onUpdated,\n  reactive,\n  shallowRef,\n} from 'vue';\nimport { treeNodeProps } from './props';\nimport classNames from '../_util/classNames';\nimport { warning } from '../vc-util/warning';\nimport type { DragNodeEvent, Key } from './interface';\nimport pickAttrs from '../_util/pickAttrs';\nimport eagerComputed from '../_util/eagerComputed';\n\nconst ICON_OPEN = 'open';\nconst ICON_CLOSE = 'close';\n\nconst defaultTitle = '---';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATreeNode',\n  inheritAttrs: false,\n  props: treeNodeProps,\n  isTreeNode: 1,\n  setup(props, { attrs, slots, expose }) {\n    warning(\n      !('slots' in props.data),\n      `treeData slots is deprecated, please use ${Object.keys(props.data.slots || {}).map(\n        key => '`v-slot:' + key + '` ',\n      )}instead`,\n    );\n\n    const dragNodeHighlight = shallowRef(false);\n    const context = useInjectTreeContext();\n    const {\n      expandedKeysSet,\n      selectedKeysSet,\n      loadedKeysSet,\n      loadingKeysSet,\n      checkedKeysSet,\n      halfCheckedKeysSet,\n    } = useInjectKeysState();\n    const { dragOverNodeKey, dropPosition, keyEntities } = context.value;\n    const mergedTreeNodeProps = computed(() => {\n      return getTreeNodeProps(props.eventKey, {\n        expandedKeysSet: expandedKeysSet.value,\n        selectedKeysSet: selectedKeysSet.value,\n        loadedKeysSet: loadedKeysSet.value,\n        loadingKeysSet: loadingKeysSet.value,\n        checkedKeysSet: checkedKeysSet.value,\n        halfCheckedKeysSet: halfCheckedKeysSet.value,\n        dragOverNodeKey,\n        dropPosition,\n        keyEntities,\n      });\n    });\n\n    const expanded = eagerComputed(() => mergedTreeNodeProps.value.expanded);\n    const selected = eagerComputed(() => mergedTreeNodeProps.value.selected);\n    const checked = eagerComputed(() => mergedTreeNodeProps.value.checked);\n    const loaded = eagerComputed(() => mergedTreeNodeProps.value.loaded);\n    const loading = eagerComputed(() => mergedTreeNodeProps.value.loading);\n    const halfChecked = eagerComputed(() => mergedTreeNodeProps.value.halfChecked);\n    const dragOver = eagerComputed(() => mergedTreeNodeProps.value.dragOver);\n    const dragOverGapTop = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapTop);\n    const dragOverGapBottom = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapBottom);\n    const pos = eagerComputed(() => mergedTreeNodeProps.value.pos);\n\n    const selectHandle = shallowRef();\n\n    const hasChildren = computed(() => {\n      const { eventKey } = props;\n      const { keyEntities } = context.value;\n      const { children } = keyEntities[eventKey] || {};\n\n      return !!(children || []).length;\n    });\n\n    const isLeaf = computed(() => {\n      const { isLeaf } = props;\n      const { loadData } = context.value;\n\n      const has = hasChildren.value;\n\n      if (isLeaf === false) {\n        return false;\n      }\n\n      return isLeaf || (!loadData && !has) || (loadData && loaded.value && !has);\n    });\n    const nodeState = computed(() => {\n      if (isLeaf.value) {\n        return null;\n      }\n\n      return expanded.value ? ICON_OPEN : ICON_CLOSE;\n    });\n\n    const isDisabled = computed(() => {\n      const { disabled } = props;\n      const { disabled: treeDisabled } = context.value;\n\n      return !!(treeDisabled || disabled);\n    });\n\n    const isCheckable = computed(() => {\n      const { checkable } = props;\n      const { checkable: treeCheckable } = context.value;\n\n      // Return false if tree or treeNode is not checkable\n      if (!treeCheckable || checkable === false) return false;\n      return treeCheckable;\n    });\n\n    const isSelectable = computed(() => {\n      const { selectable } = props;\n      const { selectable: treeSelectable } = context.value;\n\n      // Ignore when selectable is undefined or null\n      if (typeof selectable === 'boolean') {\n        return selectable;\n      }\n\n      return treeSelectable;\n    });\n    const renderArgsData = computed(() => {\n      const { data, active, checkable, disableCheckbox, disabled, selectable } = props;\n      return {\n        active,\n        checkable,\n        disableCheckbox,\n        disabled,\n        selectable,\n        ...data,\n        dataRef: data,\n        data,\n        isLeaf: isLeaf.value,\n        checked: checked.value,\n        expanded: expanded.value,\n        loading: loading.value,\n        selected: selected.value,\n        halfChecked: halfChecked.value,\n      };\n    });\n    const instance = getCurrentInstance();\n    const eventData = computed(() => {\n      const { eventKey } = props;\n      const { keyEntities } = context.value;\n      const { parent } = keyEntities[eventKey] || {};\n      return {\n        ...convertNodePropsToEventData(Object.assign({}, props, mergedTreeNodeProps.value)),\n        parent,\n      };\n    });\n    const dragNodeEvent: DragNodeEvent = reactive({\n      eventData,\n      eventKey: computed(() => props.eventKey),\n      selectHandle,\n      pos,\n      key: instance.vnode.key as Key,\n    });\n    expose(dragNodeEvent);\n    const onSelectorDoubleClick = (e: MouseEvent) => {\n      const { onNodeDoubleClick } = context.value;\n      onNodeDoubleClick(e, eventData.value);\n    };\n\n    const onSelect = (e: MouseEvent) => {\n      if (isDisabled.value) return;\n\n      const { onNodeSelect } = context.value;\n      e.preventDefault();\n      onNodeSelect(e, eventData.value);\n    };\n\n    const onCheck = (e: MouseEvent) => {\n      if (isDisabled.value) return;\n\n      const { disableCheckbox } = props;\n      const { onNodeCheck } = context.value;\n\n      if (!isCheckable.value || disableCheckbox) return;\n\n      e.preventDefault();\n      const targetChecked = !checked.value;\n      onNodeCheck(e, eventData.value, targetChecked);\n    };\n\n    const onSelectorClick = (e: MouseEvent) => {\n      // Click trigger before select/check operation\n      const { onNodeClick } = context.value;\n      onNodeClick(e, eventData.value);\n\n      if (isSelectable.value) {\n        onSelect(e);\n      } else {\n        onCheck(e);\n      }\n    };\n\n    const onMouseEnter = (e: MouseEvent) => {\n      const { onNodeMouseEnter } = context.value;\n      onNodeMouseEnter(e, eventData.value);\n    };\n\n    const onMouseLeave = (e: MouseEvent) => {\n      const { onNodeMouseLeave } = context.value;\n      onNodeMouseLeave(e, eventData.value);\n    };\n\n    const onContextmenu = (e: MouseEvent) => {\n      const { onNodeContextMenu } = context.value;\n      onNodeContextMenu(e, eventData.value);\n    };\n\n    const onDragStart = (e: DragEvent) => {\n      const { onNodeDragStart } = context.value;\n\n      e.stopPropagation();\n      dragNodeHighlight.value = true;\n      onNodeDragStart(e, dragNodeEvent);\n\n      try {\n        // ie throw error\n        // firefox-need-it\n        e.dataTransfer.setData('text/plain', '');\n      } catch (error) {\n        // empty\n      }\n    };\n\n    const onDragEnter = (e: DragEvent) => {\n      const { onNodeDragEnter } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      onNodeDragEnter(e, dragNodeEvent);\n    };\n\n    const onDragOver = (e: DragEvent) => {\n      const { onNodeDragOver } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      onNodeDragOver(e, dragNodeEvent);\n    };\n\n    const onDragLeave = (e: DragEvent) => {\n      const { onNodeDragLeave } = context.value;\n\n      e.stopPropagation();\n      onNodeDragLeave(e, dragNodeEvent);\n    };\n\n    const onDragEnd = (e: DragEvent) => {\n      const { onNodeDragEnd } = context.value;\n\n      e.stopPropagation();\n      dragNodeHighlight.value = false;\n      onNodeDragEnd(e, dragNodeEvent);\n    };\n\n    const onDrop = (e: DragEvent) => {\n      const { onNodeDrop } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      dragNodeHighlight.value = false;\n      onNodeDrop(e, dragNodeEvent);\n    };\n\n    // Disabled item still can be switch\n    const onExpand = e => {\n      const { onNodeExpand } = context.value;\n      if (loading.value) return;\n      onNodeExpand(e, eventData.value);\n    };\n\n    const isDraggable = () => {\n      const { data } = props;\n      const { draggable } = context.value;\n      return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));\n    };\n\n    // ==================== Render: Drag Handler ====================\n    const renderDragHandler = () => {\n      const { draggable, prefixCls } = context.value;\n      return draggable && draggable?.icon ? (\n        <span class={`${prefixCls}-draggable-icon`}>{draggable.icon}</span>\n      ) : null;\n    };\n\n    const renderSwitcherIconDom = () => {\n      const {\n        switcherIcon: switcherIconFromProps = slots.switcherIcon ||\n          context.value.slots?.[props.data?.slots?.switcherIcon],\n      } = props;\n      const { switcherIcon: switcherIconFromCtx } = context.value;\n\n      const switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n      // if switcherIconDom is null, no render switcher span\n      if (typeof switcherIcon === 'function') {\n        return switcherIcon(renderArgsData.value);\n      }\n      return switcherIcon;\n    };\n\n    // Load data to avoid default expanded tree without data\n    const syncLoadData = () => {\n      //const { expanded, loading, loaded } = props;\n      const { loadData, onNodeLoad } = context.value;\n\n      if (loading.value) {\n        return;\n      }\n\n      // read from state to avoid loadData at same time\n      if (loadData && expanded.value && !isLeaf.value) {\n        // We needn't reload data when has children in sync logic\n        // It's only needed in node expanded\n        if (!hasChildren.value && !loaded.value) {\n          onNodeLoad(eventData.value);\n        }\n      }\n    };\n\n    onMounted(() => {\n      syncLoadData();\n    });\n    onUpdated(() => {\n      // https://github.com/vueComponent/ant-design-vue/issues/4835\n      syncLoadData();\n    });\n\n    // Switcher\n    const renderSwitcher = () => {\n      const { prefixCls } = context.value;\n      // if switcherIconDom is null, no render switcher span\n      const switcherIconDom = renderSwitcherIconDom();\n      if (isLeaf.value) {\n        return switcherIconDom !== false ? (\n          <span class={classNames(`${prefixCls}-switcher`, `${prefixCls}-switcher-noop`)}>\n            {switcherIconDom}\n          </span>\n        ) : null;\n      }\n\n      const switcherCls = classNames(\n        `${prefixCls}-switcher`,\n        `${prefixCls}-switcher_${expanded.value ? ICON_OPEN : ICON_CLOSE}`,\n      );\n\n      return switcherIconDom !== false ? (\n        <span onClick={onExpand} class={switcherCls}>\n          {switcherIconDom}\n        </span>\n      ) : null;\n    };\n\n    // Checkbox\n    const renderCheckbox = () => {\n      const { disableCheckbox } = props;\n      const { prefixCls } = context.value;\n\n      const disabled = isDisabled.value;\n      const checkable = isCheckable.value;\n\n      if (!checkable) return null;\n\n      return (\n        <span\n          class={classNames(\n            `${prefixCls}-checkbox`,\n            checked.value && `${prefixCls}-checkbox-checked`,\n            !checked.value && halfChecked.value && `${prefixCls}-checkbox-indeterminate`,\n            (disabled || disableCheckbox) && `${prefixCls}-checkbox-disabled`,\n          )}\n          onClick={onCheck}\n        >\n          {context.value.customCheckable?.()}\n        </span>\n      );\n    };\n\n    const renderIcon = () => {\n      const { prefixCls } = context.value;\n\n      return (\n        <span\n          class={classNames(\n            `${prefixCls}-iconEle`,\n            `${prefixCls}-icon__${nodeState.value || 'docu'}`,\n            loading.value && `${prefixCls}-icon_loading`,\n          )}\n        />\n      );\n    };\n\n    const renderDropIndicator = () => {\n      const { disabled, eventKey } = props;\n      const {\n        draggable,\n        dropLevelOffset,\n        dropPosition,\n        prefixCls,\n        indent,\n        dropIndicatorRender,\n        dragOverNodeKey,\n        direction,\n      } = context.value;\n      const rootDraggable = draggable !== false;\n      // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n      const showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;\n      return showIndicator\n        ? dropIndicatorRender({ dropPosition, dropLevelOffset, indent, prefixCls, direction })\n        : null;\n    };\n\n    // Icon + Title\n    const renderSelector = () => {\n      const {\n        // title = slots.title ||\n        //   context.value.slots?.[props.data?.slots?.title] ||\n        //   context.value.slots?.title,\n        // selected,\n        icon = slots.icon,\n        // loading,\n        data,\n      } = props;\n      const title =\n        slots.title ||\n        context.value.slots?.[props.data?.slots?.title] ||\n        context.value.slots?.title ||\n        props.title;\n      const {\n        prefixCls,\n        showIcon,\n        icon: treeIcon,\n        loadData,\n        // slots: contextSlots,\n      } = context.value;\n      const disabled = isDisabled.value;\n\n      const wrapClass = `${prefixCls}-node-content-wrapper`;\n\n      // Icon - Still show loading icon when loading without showIcon\n      let $icon;\n\n      if (showIcon) {\n        const currentIcon = icon || context.value.slots?.[data?.slots?.icon] || treeIcon;\n\n        $icon = currentIcon ? (\n          <span class={classNames(`${prefixCls}-iconEle`, `${prefixCls}-icon__customize`)}>\n            {typeof currentIcon === 'function' ? currentIcon(renderArgsData.value) : currentIcon}\n          </span>\n        ) : (\n          renderIcon()\n        );\n      } else if (loadData && loading.value) {\n        $icon = renderIcon();\n      }\n\n      // Title\n      let titleNode: any;\n      if (typeof title === 'function') {\n        titleNode = title(renderArgsData.value);\n        // } else if (contextSlots.titleRender) {\n        //   titleNode = contextSlots.titleRender(renderArgsData.value);\n      } else {\n        titleNode = title;\n      }\n      titleNode = titleNode === undefined ? defaultTitle : titleNode;\n\n      const $title = <span class={`${prefixCls}-title`}>{titleNode}</span>;\n\n      return (\n        <span\n          ref={selectHandle}\n          title={typeof title === 'string' ? title : ''}\n          class={classNames(\n            `${wrapClass}`,\n            `${wrapClass}-${nodeState.value || 'normal'}`,\n            !disabled &&\n              (selected.value || dragNodeHighlight.value) &&\n              `${prefixCls}-node-selected`,\n          )}\n          onMouseenter={onMouseEnter}\n          onMouseleave={onMouseLeave}\n          onContextmenu={onContextmenu}\n          onClick={onSelectorClick}\n          onDblclick={onSelectorDoubleClick}\n        >\n          {$icon}\n          {$title}\n          {renderDropIndicator()}\n        </span>\n      );\n    };\n    return () => {\n      const {\n        eventKey,\n        isLeaf,\n        isStart,\n        isEnd,\n        domRef,\n        active,\n        data,\n        onMousemove,\n        selectable,\n        ...otherProps\n      } = { ...props, ...attrs };\n      const {\n        prefixCls,\n        filterTreeNode,\n        keyEntities,\n        dropContainerKey,\n        dropTargetKey,\n        draggingNodeKey,\n      } = context.value;\n      const disabled = isDisabled.value;\n      const dataOrAriaAttributeProps = pickAttrs(otherProps, { aria: true, data: true });\n      const { level } = keyEntities[eventKey] || {};\n      const isEndNode = isEnd[isEnd.length - 1];\n\n      const mergedDraggable = isDraggable();\n      const draggableWithoutDisabled = !disabled && mergedDraggable;\n\n      const dragging = draggingNodeKey === eventKey;\n      const ariaSelected = selectable !== undefined ? { 'aria-selected': !!selectable } : undefined;\n      // console.log(1);\n      return (\n        <div\n          ref={domRef}\n          class={classNames(attrs.class, `${prefixCls}-treenode`, {\n            [`${prefixCls}-treenode-disabled`]: disabled,\n            [`${prefixCls}-treenode-switcher-${expanded.value ? 'open' : 'close'}`]: !isLeaf,\n            [`${prefixCls}-treenode-checkbox-checked`]: checked.value,\n            [`${prefixCls}-treenode-checkbox-indeterminate`]: halfChecked.value,\n            [`${prefixCls}-treenode-selected`]: selected.value,\n            [`${prefixCls}-treenode-loading`]: loading.value,\n            [`${prefixCls}-treenode-active`]: active,\n            [`${prefixCls}-treenode-leaf-last`]: isEndNode,\n            [`${prefixCls}-treenode-draggable`]: draggableWithoutDisabled,\n\n            dragging,\n            'drop-target': dropTargetKey === eventKey,\n            'drop-container': dropContainerKey === eventKey,\n            'drag-over': !disabled && dragOver.value,\n            'drag-over-gap-top': !disabled && dragOverGapTop.value,\n            'drag-over-gap-bottom': !disabled && dragOverGapBottom.value,\n            'filter-node': filterTreeNode && filterTreeNode(eventData.value),\n          })}\n          style={attrs.style as CSSProperties}\n          // Draggable config\n          draggable={draggableWithoutDisabled}\n          aria-grabbed={dragging}\n          onDragstart={draggableWithoutDisabled ? onDragStart : undefined}\n          // Drop config\n          onDragenter={mergedDraggable ? onDragEnter : undefined}\n          onDragover={mergedDraggable ? onDragOver : undefined}\n          onDragleave={mergedDraggable ? onDragLeave : undefined}\n          onDrop={mergedDraggable ? onDrop : undefined}\n          onDragend={mergedDraggable ? onDragEnd : undefined}\n          onMousemove={onMousemove}\n          {...ariaSelected}\n          {...dataOrAriaAttributeProps}\n        >\n          <Indent prefixCls={prefixCls} level={level} isStart={isStart} isEnd={isEnd} />\n          {renderDragHandler()}\n          {renderSwitcher()}\n          {renderCheckbox()}\n          {renderSelector()}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree/contextTypes.ts",
    "content": "/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\n\nimport type { ComputedRef, InjectionKey, PropType, ShallowRef } from 'vue';\nimport { shallowRef, inject, computed, defineComponent, provide } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport type {\n  IconType,\n  Key,\n  DataEntity,\n  EventDataNode,\n  DragNodeEvent,\n  Direction,\n  FlattenNode,\n} from './interface';\n\nimport type { DraggableConfig } from './Tree';\n\nexport type NodeMouseEventParams = {\n  event: MouseEvent;\n  node: EventDataNode;\n};\nexport type NodeDragEventParams = {\n  event: DragEvent;\n  node: EventDataNode;\n};\n\nexport type NodeMouseEventHandler = (e: MouseEvent, node: EventDataNode) => void;\nexport type NodeDragEventHandler = (\n  e: DragEvent,\n  node: DragNodeEvent,\n  outsideTree?: boolean,\n) => void;\n\nexport interface TreeContextProps {\n  prefixCls: string;\n  selectable: boolean;\n  showIcon: boolean;\n  icon: IconType;\n  switcherIcon: IconType;\n  draggable: DraggableConfig | false;\n  draggingNodeKey?: Key;\n  checkable: boolean;\n  customCheckable: () => any;\n  checkStrictly: boolean;\n  disabled: boolean;\n  keyEntities: Record<Key, DataEntity<any>>;\n  // for details see comment in Tree.state (Tree.tsx)\n  dropLevelOffset?: number;\n  dropContainerKey: Key | null;\n  dropTargetKey: Key | null;\n  dropPosition: -1 | 0 | 1 | null;\n  indent: number | null;\n  dropIndicatorRender: (props: {\n    dropPosition: -1 | 0 | 1;\n    dropLevelOffset: number;\n    indent: number | null;\n    prefixCls: string;\n    direction: Direction;\n  }) => VueNode;\n  dragOverNodeKey: Key | null;\n  dragging: boolean;\n  direction: Direction;\n\n  loadData: (treeNode: EventDataNode) => Promise<void>;\n  filterTreeNode: (treeNode: EventDataNode) => boolean;\n\n  onNodeClick: NodeMouseEventHandler;\n  onNodeDoubleClick: NodeMouseEventHandler;\n  onNodeExpand: NodeMouseEventHandler;\n  onNodeSelect: NodeMouseEventHandler;\n  onNodeCheck: (e: MouseEvent, treeNode: EventDataNode, checked: boolean) => void;\n  onNodeLoad: (treeNode: EventDataNode) => void;\n  onNodeMouseEnter: NodeMouseEventHandler;\n  onNodeMouseLeave: NodeMouseEventHandler;\n  onNodeContextMenu: NodeMouseEventHandler;\n  onNodeDragStart: NodeDragEventHandler;\n  onNodeDragEnter: NodeDragEventHandler;\n  onNodeDragOver: NodeDragEventHandler;\n  onNodeDragLeave: NodeDragEventHandler;\n  onNodeDragEnd: NodeDragEventHandler;\n  onNodeDrop: NodeDragEventHandler;\n  slots: {\n    title?: (data: any) => any;\n    titleRender?: (data: any) => any;\n    [key: string]: ((...args: any[]) => any) | undefined;\n  };\n}\nconst TreeContextKey: InjectionKey<ComputedRef<TreeContextProps>> = Symbol('TreeContextKey');\n\nexport const TreeContext = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TreeContext',\n  props: {\n    value: { type: Object as PropType<TreeContextProps> },\n  },\n  setup(props, { slots }) {\n    provide(\n      TreeContextKey,\n      computed(() => props.value),\n    );\n    return () => slots.default?.();\n  },\n});\n\nexport const useInjectTreeContext = () => {\n  return inject(\n    TreeContextKey,\n    computed(() => ({} as TreeContextProps)),\n  );\n};\ntype KeysStateKeyType = {\n  expandedKeysSet: ComputedRef<Set<Key>>;\n  selectedKeysSet: ComputedRef<Set<Key>>;\n  loadedKeysSet: ComputedRef<Set<Key>>;\n  loadingKeysSet: ComputedRef<Set<Key>>;\n  checkedKeysSet: ComputedRef<Set<Key>>;\n  halfCheckedKeysSet: ComputedRef<Set<Key>>;\n  expandedKeys: ShallowRef<Key[]>;\n  selectedKeys: ShallowRef<Key[]>;\n  loadedKeys: ShallowRef<Key[]>;\n  loadingKeys: ShallowRef<Key[]>;\n  checkedKeys: ShallowRef<Key[]>;\n  halfCheckedKeys: ShallowRef<Key[]>;\n  flattenNodes: ShallowRef<FlattenNode[]>;\n};\nconst KeysStateKey: InjectionKey<KeysStateKeyType> = Symbol('KeysStateKey');\nexport const useProvideKeysState = (state: KeysStateKeyType) => {\n  provide(KeysStateKey, state);\n};\n\nexport const useInjectKeysState = () => {\n  return inject(KeysStateKey, {\n    expandedKeys: shallowRef<Key[]>([]),\n    selectedKeys: shallowRef<Key[]>([]),\n    loadedKeys: shallowRef<Key[]>([]),\n    loadingKeys: shallowRef<Key[]>([]),\n    checkedKeys: shallowRef<Key[]>([]),\n    halfCheckedKeys: shallowRef<Key[]>([]),\n    expandedKeysSet: computed<Set<Key>>(() => new Set()),\n    selectedKeysSet: computed<Set<Key>>(() => new Set()),\n    loadedKeysSet: computed<Set<Key>>(() => new Set()),\n    loadingKeysSet: computed<Set<Key>>(() => new Set()),\n    checkedKeysSet: computed<Set<Key>>(() => new Set()),\n    halfCheckedKeysSet: computed<Set<Key>>(() => new Set()),\n    flattenNodes: shallowRef<FlattenNode[]>([]),\n  });\n};\n"
  },
  {
    "path": "components/vc-tree/index.ts",
    "content": "// base rc-tree 5.6.3\nimport type { TreeProps, TreeNodeProps } from './props';\nimport Tree from './Tree';\nimport TreeNode from './TreeNode';\nimport type { BasicDataNode } from './interface';\nexport { TreeNode };\nexport type { TreeProps, TreeNodeProps, BasicDataNode };\nexport default Tree;\n"
  },
  {
    "path": "components/vc-tree/interface.tsx",
    "content": "import type { CSSProperties, VNode } from 'vue';\nimport type { TreeNodeProps } from './props';\nexport type { ScrollTo } from '../vc-virtual-list/List';\n\n/** For fieldNames, we provides a abstract interface */\nexport interface BasicDataNode {\n  checkable?: boolean;\n  disabled?: boolean;\n  disableCheckbox?: boolean;\n  icon?: IconType;\n  isLeaf?: boolean;\n  selectable?: boolean;\n  switcherIcon?: IconType;\n\n  /** Set style of TreeNode. This is not recommend if you don't have any force requirement */\n  class?: string;\n  style?: CSSProperties;\n  slots?: Record<string, string>;\n  [key: string]: any;\n}\n\nexport interface DataNode extends BasicDataNode {\n  children?: DataNode[];\n  key: string | number;\n  title?: any;\n}\n\nexport interface EventDataNode extends DataNode {\n  expanded?: boolean;\n  selected?: boolean;\n  checked: boolean;\n  loaded?: boolean;\n  loading?: boolean;\n  halfChecked?: boolean;\n  dragOver?: boolean;\n  dragOverGapTop?: boolean;\n  dragOverGapBottom?: boolean;\n  pos?: string;\n  active?: boolean;\n  dataRef?: DataNode;\n  parent?: DataNode;\n  eventKey?: Key; // 兼容 v2， 推荐直接用 key\n}\n\nexport type IconType = any;\n\nexport type Key = string | number;\n\nexport type NodeElement = VNode<TreeNodeProps>;\n\nexport type DragNodeEvent = {\n  key: Key;\n  eventData: EventDataNode;\n  eventKey: Key;\n  selectHandle: HTMLSpanElement;\n  pos: string;\n};\nexport interface Entity {\n  node: NodeElement;\n  index: number;\n  key: Key;\n  pos: string;\n  parent?: Entity;\n  children?: Entity[];\n}\n\nexport interface DataEntity<TreeDataType extends BasicDataNode = DataNode>\n  extends Omit<Entity, 'node' | 'parent' | 'children'> {\n  node: TreeDataType;\n  nodes: TreeDataType[];\n  parent?: DataEntity<TreeDataType>;\n  children?: DataEntity<TreeDataType>[];\n  level: number;\n}\n\nexport interface FlattenNode {\n  parent: FlattenNode | null;\n  children: FlattenNode[];\n  pos: string;\n  data: DataNode;\n  title: any;\n  key: Key;\n  isStart: boolean[];\n  isEnd: boolean[];\n}\n\nexport type GetKey<RecordType> = (record: RecordType, index?: number) => Key;\n\nexport type GetCheckDisabled<RecordType> = (record: RecordType) => boolean;\n\nexport type Direction = 'ltr' | 'rtl' | undefined;\n\nexport interface FieldNames {\n  title?: string;\n  /** @private Internal usage for `vc-tree-select`, safe to remove if no need */\n  _title?: string[];\n  key?: string;\n  children?: string;\n}\n"
  },
  {
    "path": "components/vc-tree/props.ts",
    "content": "import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport type { BasicDataNode } from '.';\nimport type { EventHandler } from '../_util/EventInterface';\nimport PropTypes from '../_util/vue-types';\nimport type {\n  NodeDragEventParams,\n  NodeMouseEventHandler,\n  NodeMouseEventParams,\n} from './contextTypes';\nimport type { DataNode, Key, FlattenNode, EventDataNode, Direction, FieldNames } from './interface';\n\nexport interface CheckInfo {\n  event: 'check';\n  node: EventDataNode;\n  checked: boolean;\n  nativeEvent: MouseEvent;\n  checkedNodes: DataNode[];\n  checkedNodesPositions?: { node: DataNode; pos: string }[];\n  halfCheckedKeys?: Key[];\n}\n\nexport const treeNodeProps = {\n  eventKey: [String, Number], // Pass by parent `cloneElement`\n  prefixCls: String,\n\n  // By parent\n  // expanded: { type: Boolean, default: undefined },\n  // selected: { type: Boolean, default: undefined },\n  // checked: { type: Boolean, default: undefined },\n  // loaded: { type: Boolean, default: undefined },\n  // loading: { type: Boolean, default: undefined },\n  // halfChecked: { type: Boolean, default: undefined },\n  // dragOver: { type: Boolean, default: undefined },\n  // dragOverGapTop: { type: Boolean, default: undefined },\n  // dragOverGapBottom: { type: Boolean, default: undefined },\n  // pos: String,\n\n  title: PropTypes.any,\n  /** New added in Tree for easy data access */\n  data: { type: Object as PropType<DataNode>, default: undefined as DataNode },\n  parent: { type: Object as PropType<DataNode>, default: undefined as DataNode },\n\n  isStart: { type: Array as PropType<boolean[]> },\n  isEnd: { type: Array as PropType<boolean[]> },\n  active: { type: Boolean, default: undefined },\n  onMousemove: { type: Function as PropType<EventHandler> },\n\n  // By user\n  isLeaf: { type: Boolean, default: undefined },\n  checkable: { type: Boolean, default: undefined },\n  selectable: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  disableCheckbox: { type: Boolean, default: undefined },\n  icon: PropTypes.any,\n  switcherIcon: PropTypes.any,\n  domRef: { type: Function as PropType<(arg: any) => void> },\n};\n\nexport type TreeNodeProps = Partial<ExtractPropTypes<typeof treeNodeProps>>;\n\nexport const nodeListProps = {\n  prefixCls: { type: String as PropType<string> },\n  // data: { type: Array as PropType<FlattenNode[]> },\n  motion: { type: Object as PropType<any> },\n  focusable: { type: Boolean as PropType<boolean> },\n  activeItem: { type: Object as PropType<FlattenNode> },\n  focused: { type: Boolean as PropType<boolean> },\n  tabindex: { type: Number as PropType<number> },\n  checkable: { type: Boolean as PropType<boolean> },\n  selectable: { type: Boolean as PropType<boolean> },\n  disabled: { type: Boolean as PropType<boolean> },\n\n  // expandedKeys: { type: Array as PropType<Key[]> },\n  // selectedKeys: { type: Array as PropType<Key[]> },\n  // checkedKeys: { type: Array as PropType<Key[]> },\n  // loadedKeys: { type: Array as PropType<Key[]> },\n  // loadingKeys: { type: Array as PropType<Key[]> },\n  // halfCheckedKeys: { type: Array as PropType<Key[]> },\n  // keyEntities: { type: Object as PropType<Record<Key, DataEntity<DataNode>>> },\n\n  // dragging: { type: Boolean as PropType<boolean> },\n  // dragOverNodeKey: { type: [String, Number] as PropType<Key> },\n  // dropPosition: { type: Number as PropType<number> },\n\n  // Virtual list\n  height: { type: Number as PropType<number> },\n  itemHeight: { type: Number as PropType<number> },\n  virtual: { type: Boolean as PropType<boolean> },\n\n  onScroll: { type: Function as PropType<EventHandler> },\n  onKeydown: { type: Function as PropType<EventHandler> },\n  onFocus: { type: Function as PropType<(e: FocusEvent) => void> },\n  onBlur: { type: Function as PropType<(e: FocusEvent) => void> },\n  onActiveChange: { type: Function as PropType<(key: Key) => void> },\n  onContextmenu: { type: Function as PropType<EventHandler> },\n\n  onListChangeStart: { type: Function as PropType<() => void> },\n  onListChangeEnd: { type: Function as PropType<() => void> },\n};\n\nexport type NodeListProps = Partial<ExtractPropTypes<typeof nodeListProps>>;\n\nexport interface AllowDropOptions<TreeDataType extends BasicDataNode = DataNode> {\n  dragNode: EventDataNode;\n  dropNode: TreeDataType;\n  dropPosition: -1 | 0 | 1;\n}\nexport type AllowDrop<TreeDataType extends BasicDataNode = DataNode> = (\n  options: AllowDropOptions<TreeDataType>,\n) => boolean;\n\nexport type DraggableFn = (node: DataNode) => boolean;\nexport type ExpandAction = false | 'click' | 'doubleclick' | 'dblclick';\nexport const treeProps = () => ({\n  prefixCls: String,\n  focusable: { type: Boolean, default: undefined },\n  activeKey: [Number, String] as PropType<Key>,\n  tabindex: Number,\n  children: PropTypes.any,\n  treeData: { type: Array as PropType<DataNode[]> }, // Generate treeNode by children\n  fieldNames: { type: Object as PropType<FieldNames> },\n  showLine: {\n    type: [Boolean, Object] as PropType<boolean | { showLeafIcon: boolean }>,\n    default: undefined,\n  },\n  showIcon: { type: Boolean, default: undefined },\n  icon: PropTypes.any,\n  selectable: { type: Boolean, default: undefined },\n  expandAction: [String, Boolean] as PropType<ExpandAction>,\n  disabled: { type: Boolean, default: undefined },\n  multiple: { type: Boolean, default: undefined },\n  checkable: { type: Boolean, default: undefined },\n  checkStrictly: { type: Boolean, default: undefined },\n  draggable: { type: [Function, Boolean] as PropType<DraggableFn | boolean> },\n  defaultExpandParent: { type: Boolean, default: undefined },\n  autoExpandParent: { type: Boolean, default: undefined },\n  defaultExpandAll: { type: Boolean, default: undefined },\n  defaultExpandedKeys: { type: Array as PropType<Key[]> },\n  expandedKeys: { type: Array as PropType<Key[]> },\n  defaultCheckedKeys: { type: Array as PropType<Key[]> },\n  checkedKeys: {\n    type: [Object, Array] as PropType<Key[] | { checked: Key[]; halfChecked: Key[] }>,\n  },\n  defaultSelectedKeys: { type: Array as PropType<Key[]> },\n  selectedKeys: { type: Array as PropType<Key[]> },\n  allowDrop: { type: Function as PropType<AllowDrop> },\n\n  dropIndicatorRender: {\n    type: Function as PropType<\n      (props: {\n        dropPosition: -1 | 0 | 1;\n        dropLevelOffset: number;\n        indent: number;\n        prefixCls: string;\n        direction: Direction;\n      }) => any\n    >,\n  },\n  onFocus: { type: Function as PropType<(e: FocusEvent) => void> },\n  onBlur: { type: Function as PropType<(e: FocusEvent) => void> },\n  onKeydown: { type: Function as PropType<EventHandler> },\n  onContextmenu: { type: Function as PropType<EventHandler> },\n  onClick: { type: Function as PropType<NodeMouseEventHandler> },\n  onDblclick: { type: Function as PropType<NodeMouseEventHandler> },\n  onScroll: { type: Function as PropType<EventHandler> },\n  onExpand: {\n    type: Function as PropType<\n      (\n        expandedKeys: Key[],\n        info: {\n          node: EventDataNode;\n          expanded: boolean;\n          nativeEvent: MouseEvent;\n        },\n      ) => void\n    >,\n  },\n  onCheck: {\n    type: Function as PropType<\n      (checked: { checked: Key[]; halfChecked: Key[] } | Key[], info: CheckInfo) => void\n    >,\n  },\n  onSelect: {\n    type: Function as PropType<\n      (\n        selectedKeys: Key[],\n        info: {\n          event: 'select';\n          selected: boolean;\n          node: EventDataNode;\n          selectedNodes: DataNode[];\n          nativeEvent: MouseEvent;\n        },\n      ) => void\n    >,\n  },\n  onLoad: {\n    type: Function as PropType<\n      (\n        loadedKeys: Key[],\n        info: {\n          event: 'load';\n          node: EventDataNode;\n        },\n      ) => void\n    >,\n  },\n  loadData: { type: Function as PropType<(treeNode: EventDataNode) => Promise<any>> },\n  loadedKeys: { type: Array as PropType<Key[]> },\n  onMouseenter: { type: Function as PropType<(info: NodeMouseEventParams) => void> },\n  onMouseleave: { type: Function as PropType<(info: NodeMouseEventParams) => void> },\n  onRightClick: {\n    type: Function as PropType<(info: { event: MouseEvent; node: EventDataNode }) => void>,\n  },\n  onDragstart: { type: Function as PropType<(info: NodeDragEventParams) => void> },\n  onDragenter: {\n    type: Function as PropType<(info: NodeDragEventParams & { expandedKeys: Key[] }) => void>,\n  },\n  onDragover: { type: Function as PropType<(info: NodeDragEventParams) => void> },\n  onDragleave: { type: Function as PropType<(info: NodeDragEventParams) => void> },\n  onDragend: { type: Function as PropType<(info: NodeDragEventParams) => void> },\n  onDrop: {\n    type: Function as PropType<\n      (\n        info: NodeDragEventParams & {\n          dragNode: EventDataNode;\n          dragNodesKeys: Key[];\n          dropPosition: number;\n          dropToGap: boolean;\n        },\n      ) => void\n    >,\n  },\n  /**\n   * Used for `rc-tree-select` only.\n   * Do not use in your production code directly since this will be refactor.\n   */\n  onActiveChange: { type: Function as PropType<(key: Key) => void> },\n  filterTreeNode: { type: Function as PropType<(treeNode: EventDataNode) => boolean> },\n  motion: PropTypes.any,\n  switcherIcon: PropTypes.any,\n\n  // Virtual List\n  height: Number,\n  itemHeight: Number,\n  virtual: { type: Boolean, default: undefined },\n\n  // direction for drag logic\n  direction: { type: String as PropType<Direction> },\n\n  rootClassName: String,\n  rootStyle: Object as PropType<CSSProperties>,\n});\n\nexport type TreeProps = Partial<ExtractPropTypes<ReturnType<typeof treeProps>>>;\n"
  },
  {
    "path": "components/vc-tree/useMaxLevel.ts",
    "content": "import type { ShallowRef } from 'vue';\nimport { shallowRef, ref, watchEffect } from 'vue';\nimport type { BasicDataNode, DataEntity, DataNode, Key } from './interface';\n\nexport default function useMaxLevel<TreeDataType extends BasicDataNode = DataNode>(\n  keyEntities: ShallowRef<Record<Key, DataEntity<TreeDataType>>>,\n) {\n  const maxLevel = ref(0);\n  const levelEntities = shallowRef<Map<number, Set<DataEntity<TreeDataType>>>>();\n  watchEffect(() => {\n    const newLevelEntities = new Map<number, Set<DataEntity<TreeDataType>>>();\n    let newMaxLevel = 0;\n    const keyEntitiesValue = keyEntities.value || {};\n    // Convert entities by level for calculation\n    for (const key in keyEntitiesValue) {\n      if (Object.prototype.hasOwnProperty.call(keyEntitiesValue, key)) {\n        const entity = keyEntitiesValue[key];\n        const { level } = entity;\n\n        let levelSet: Set<DataEntity<TreeDataType>> = newLevelEntities.get(level);\n        if (!levelSet) {\n          levelSet = new Set();\n          newLevelEntities.set(level, levelSet);\n        }\n\n        levelSet.add(entity);\n\n        newMaxLevel = Math.max(newMaxLevel, level);\n      }\n    }\n    maxLevel.value = newMaxLevel;\n    levelEntities.value = newLevelEntities;\n  });\n  return {\n    maxLevel,\n    levelEntities,\n  };\n}\n"
  },
  {
    "path": "components/vc-tree/util.tsx",
    "content": "/* eslint-disable no-lonely-if */\n/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\n\nimport TreeNode from './TreeNode';\nimport type {\n  NodeElement,\n  Key,\n  DataNode,\n  DataEntity,\n  FlattenNode,\n  Direction,\n  DragNodeEvent,\n  BasicDataNode,\n} from './interface';\nimport { warning } from '../vc-util/warning';\nimport type { AllowDrop, TreeNodeProps, TreeProps } from './props';\n\nexport function arrDel(list: Key[], value: Key) {\n  if (!list) return [];\n  const clone = list.slice();\n  const index = clone.indexOf(value);\n  if (index >= 0) {\n    clone.splice(index, 1);\n  }\n  return clone;\n}\n\nexport function arrAdd(list: Key[], value: Key) {\n  const clone = (list || []).slice();\n  if (clone.indexOf(value) === -1) {\n    clone.push(value);\n  }\n  return clone;\n}\n\nexport function posToArr(pos: string) {\n  return pos.split('-');\n}\n\nexport function getPosition(level: string | number, index: number) {\n  return `${level}-${index}`;\n}\n\nexport function isTreeNode(node: NodeElement) {\n  return node && node.type && (node.type as any).isTreeNode;\n}\n\nexport function getDragChildrenKeys<TreeDataType extends BasicDataNode = DataNode>(\n  dragNodeKey: Key,\n  keyEntities: Record<Key, DataEntity<TreeDataType>>,\n): Key[] {\n  // not contains self\n  // self for left or right drag\n  const dragChildrenKeys = [];\n\n  const entity = keyEntities[dragNodeKey];\n  function dig(list: DataEntity<TreeDataType>[] = []) {\n    list.forEach(({ key, children }) => {\n      dragChildrenKeys.push(key);\n      dig(children);\n    });\n  }\n\n  dig(entity.children);\n\n  return dragChildrenKeys;\n}\n\nexport function isLastChild<TreeDataType extends BasicDataNode = DataNode>(\n  treeNodeEntity: DataEntity<TreeDataType>,\n) {\n  if (treeNodeEntity.parent) {\n    const posArr = posToArr(treeNodeEntity.pos);\n    return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n  }\n  return false;\n}\n\nexport function isFirstChild<TreeDataType extends BasicDataNode = DataNode>(\n  treeNodeEntity: DataEntity<TreeDataType>,\n) {\n  const posArr = posToArr(treeNodeEntity.pos);\n  return Number(posArr[posArr.length - 1]) === 0;\n}\n\n// Only used when drag, not affect SSR.\nexport function calcDropPosition<TreeDataType extends BasicDataNode = DataNode>(\n  event: MouseEvent,\n  dragNode: DragNodeEvent,\n  targetNode: DragNodeEvent,\n  indent: number,\n  startMousePosition: {\n    x: number;\n    y: number;\n  },\n  allowDrop: AllowDrop<TreeDataType>,\n  flattenedNodes: FlattenNode[],\n  keyEntities: Record<Key, DataEntity<TreeDataType>>,\n  expandKeysSet: Set<Key>,\n  direction: Direction,\n): {\n  dropPosition: -1 | 0 | 1;\n  dropLevelOffset: number;\n  dropTargetKey: Key;\n  dropTargetPos: string;\n  dropContainerKey: Key;\n  dragOverNodeKey: Key;\n  dropAllowed: boolean;\n} {\n  const { clientX, clientY } = event;\n  const { top, height } = (event.target as HTMLElement).getBoundingClientRect();\n  // optional chain for testing\n  const horizontalMouseOffset =\n    (direction === 'rtl' ? -1 : 1) * ((startMousePosition?.x || 0) - clientX);\n  const rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;\n\n  // find abstract drop node by horizontal offset\n  let abstractDropNodeEntity: DataEntity<TreeDataType> = keyEntities[targetNode.eventKey];\n\n  if (clientY < top + height / 2) {\n    // first half, set abstract drop node to previous node\n    const nodeIndex = flattenedNodes.findIndex(\n      flattenedNode => flattenedNode.key === abstractDropNodeEntity.key,\n    );\n    const prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n    const prevNodeKey = flattenedNodes[prevNodeIndex].key;\n    abstractDropNodeEntity = keyEntities[prevNodeKey];\n  }\n\n  const initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n\n  const abstractDragOverEntity = abstractDropNodeEntity;\n  const dragOverNodeKey = abstractDropNodeEntity.key;\n\n  let dropPosition: -1 | 0 | 1 = 0;\n  let dropLevelOffset = 0;\n\n  // Only allow cross level drop when dragging on a non-expanded node\n  if (!expandKeysSet.has(initialAbstractDropNodeKey)) {\n    for (let i = 0; i < rawDropLevelOffset; i += 1) {\n      if (isLastChild(abstractDropNodeEntity)) {\n        abstractDropNodeEntity = abstractDropNodeEntity.parent;\n        dropLevelOffset += 1;\n      } else {\n        break;\n      }\n    }\n  }\n  const abstractDragDataNode = dragNode.eventData;\n  const abstractDropDataNode = abstractDropNodeEntity.node;\n  let dropAllowed = true;\n  if (\n    isFirstChild(abstractDropNodeEntity) &&\n    abstractDropNodeEntity.level === 0 &&\n    clientY < top + height / 2 &&\n    allowDrop({\n      dragNode: abstractDragDataNode,\n      dropNode: abstractDropDataNode,\n      dropPosition: -1,\n    }) &&\n    abstractDropNodeEntity.key === targetNode.eventKey\n  ) {\n    // first half of first node in first level\n    dropPosition = -1;\n  } else if ((abstractDragOverEntity.children || []).length && expandKeysSet.has(dragOverNodeKey)) {\n    // drop on expanded node\n    // only allow drop inside\n    if (\n      allowDrop({\n        dragNode: abstractDragDataNode,\n        dropNode: abstractDropDataNode,\n        dropPosition: 0,\n      })\n    ) {\n      dropPosition = 0;\n    } else {\n      dropAllowed = false;\n    }\n  } else if (dropLevelOffset === 0) {\n    if (rawDropLevelOffset > -1.5) {\n      // | Node     | <- abstractDropNode\n      // | -^-===== | <- mousePosition\n      // 1. try drop after\n      // 2. do not allow drop\n      if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 1,\n        })\n      ) {\n        dropPosition = 1;\n      } else {\n        dropAllowed = false;\n      }\n    } else {\n      // | Node     | <- abstractDropNode\n      // | ---==^== | <- mousePosition\n      // whether it has children or doesn't has children\n      // always\n      // 1. try drop inside\n      // 2. try drop after\n      // 3. do not allow drop\n      if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 0,\n        })\n      ) {\n        dropPosition = 0;\n      } else if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 1,\n        })\n      ) {\n        dropPosition = 1;\n      } else {\n        dropAllowed = false;\n      }\n    }\n  } else {\n    // | Node1 | <- abstractDropNode\n    //      |  Node2  |\n    // --^--|----=====| <- mousePosition\n    // 1. try insert after Node1\n    // 2. do not allow drop\n    if (\n      allowDrop({\n        dragNode: abstractDragDataNode,\n        dropNode: abstractDropDataNode,\n        dropPosition: 1,\n      })\n    ) {\n      dropPosition = 1;\n    } else {\n      dropAllowed = false;\n    }\n  }\n\n  return {\n    dropPosition,\n    dropLevelOffset,\n    dropTargetKey: abstractDropNodeEntity.key,\n    dropTargetPos: abstractDropNodeEntity.pos,\n    dragOverNodeKey,\n    dropContainerKey: dropPosition === 0 ? null : abstractDropNodeEntity.parent?.key || null,\n    dropAllowed,\n  };\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys: Key[], props: TreeProps) {\n  if (!selectedKeys) return undefined;\n\n  const { multiple } = props;\n  if (multiple) {\n    return selectedKeys.slice();\n  }\n\n  if (selectedKeys.length) {\n    return [selectedKeys[0]];\n  }\n  return selectedKeys;\n}\n\nconst internalProcessProps = (props: DataNode): Partial<TreeNodeProps> => props;\nexport function convertDataToTree(\n  treeData: DataNode[],\n  processor?: { processProps: (prop: DataNode) => any },\n): NodeElement[] {\n  if (!treeData) return [];\n\n  const { processProps = internalProcessProps } = processor || {};\n  const list = Array.isArray(treeData) ? treeData : [treeData];\n  return list.map(({ children, ...props }): NodeElement => {\n    const childrenNodes = convertDataToTree(children, processor);\n    return (\n      <TreeNode key={props.key} {...processProps(props)}>\n        {childrenNodes}\n      </TreeNode>\n    );\n  });\n}\n\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys: Key[] | { checked: Key[]; halfChecked: Key[] }) {\n  if (!keys) {\n    return null;\n  }\n\n  // Convert keys to object format\n  let keyProps;\n  if (Array.isArray(keys)) {\n    // [Legacy] Follow the api doc\n    keyProps = {\n      checkedKeys: keys,\n      halfCheckedKeys: undefined,\n    };\n  } else if (typeof keys === 'object') {\n    keyProps = {\n      checkedKeys: keys.checked || undefined,\n      halfCheckedKeys: keys.halfChecked || undefined,\n    };\n  } else {\n    warning(false, '`checkedKeys` is not an array or an object');\n    return null;\n  }\n\n  return keyProps;\n}\n\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList: Key[], keyEntities: Record<Key, DataEntity>): Key[] {\n  const expandedKeys = new Set<Key>();\n\n  function conductUp(key: Key) {\n    if (expandedKeys.has(key)) return;\n\n    const entity = keyEntities[key];\n    if (!entity) return;\n\n    expandedKeys.add(key);\n\n    const { parent, node } = entity;\n\n    if (node.disabled) return;\n\n    if (parent) {\n      conductUp(parent.key);\n    }\n  }\n\n  (keyList || []).forEach(key => {\n    conductUp(key);\n  });\n\n  return [...expandedKeys];\n}\n"
  },
  {
    "path": "components/vc-tree/utils/conductUtil.ts",
    "content": "import { note } from '../../vc-util/warning';\nimport type { Key, DataEntity, DataNode, GetCheckDisabled, BasicDataNode } from '../interface';\n\ninterface ConductReturnType {\n  checkedKeys: Key[];\n  halfCheckedKeys: Key[];\n}\n\nfunction removeFromCheckedKeys(halfCheckedKeys: Set<Key>, checkedKeys: Set<Key>) {\n  const filteredKeys = new Set<Key>();\n  halfCheckedKeys.forEach(key => {\n    if (!checkedKeys.has(key)) {\n      filteredKeys.add(key);\n    }\n  });\n  return filteredKeys;\n}\n\nexport function isCheckDisabled<TreeDataType>(node: TreeDataType) {\n  const { disabled, disableCheckbox, checkable } = (node || {}) as DataNode;\n  return !!(disabled || disableCheckbox) || checkable === false;\n}\n\n// Fill miss keys\nfunction fillConductCheck<TreeDataType extends BasicDataNode = DataNode>(\n  keys: Set<Key>,\n  levelEntities: Map<number, Set<DataEntity<TreeDataType>>>,\n  maxLevel: number,\n  syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n  const checkedKeys = new Set<Key>(keys);\n  const halfCheckedKeys = new Set<Key>();\n\n  // Add checked keys top to bottom\n  for (let level = 0; level <= maxLevel; level += 1) {\n    const entities = levelEntities.get(level) || new Set();\n    entities.forEach(entity => {\n      const { key, node, children = [] } = entity;\n\n      if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n        children\n          .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n          .forEach(childEntity => {\n            checkedKeys.add(childEntity.key);\n          });\n      }\n    });\n  }\n\n  // Add checked keys from bottom to top\n  const visitedKeys = new Set<Key>();\n  for (let level = maxLevel; level >= 0; level -= 1) {\n    const entities = levelEntities.get(level) || new Set();\n    entities.forEach(entity => {\n      const { parent, node } = entity;\n\n      // Skip if no need to check\n      if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n        return;\n      }\n\n      // Skip if parent is disabled\n      if (syntheticGetCheckDisabled(entity.parent.node)) {\n        visitedKeys.add(parent.key);\n        return;\n      }\n\n      let allChecked = true;\n      let partialChecked = false;\n\n      (parent.children || [])\n        .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n        .forEach(({ key }) => {\n          const checked = checkedKeys.has(key);\n          if (allChecked && !checked) {\n            allChecked = false;\n          }\n          if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n            partialChecked = true;\n          }\n        });\n\n      if (allChecked) {\n        checkedKeys.add(parent.key);\n      }\n      if (partialChecked) {\n        halfCheckedKeys.add(parent.key);\n      }\n\n      visitedKeys.add(parent.key);\n    });\n  }\n\n  return {\n    checkedKeys: Array.from(checkedKeys),\n    halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)),\n  };\n}\n\n// Remove useless key\nfunction cleanConductCheck<TreeDataType extends BasicDataNode = DataNode>(\n  keys: Set<Key>,\n  halfKeys: Key[],\n  levelEntities: Map<number, Set<DataEntity<TreeDataType>>>,\n  maxLevel: number,\n  syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n  const checkedKeys = new Set<Key>(keys);\n  let halfCheckedKeys = new Set<Key>(halfKeys);\n\n  // Remove checked keys from top to bottom\n  for (let level = 0; level <= maxLevel; level += 1) {\n    const entities = levelEntities.get(level) || new Set();\n    entities.forEach(entity => {\n      const { key, node, children = [] } = entity;\n\n      if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n        children\n          .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n          .forEach(childEntity => {\n            checkedKeys.delete(childEntity.key);\n          });\n      }\n    });\n  }\n\n  // Remove checked keys form bottom to top\n  halfCheckedKeys = new Set<Key>();\n  const visitedKeys = new Set<Key>();\n  for (let level = maxLevel; level >= 0; level -= 1) {\n    const entities = levelEntities.get(level) || new Set();\n\n    entities.forEach(entity => {\n      const { parent, node } = entity;\n\n      // Skip if no need to check\n      if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n        return;\n      }\n\n      // Skip if parent is disabled\n      if (syntheticGetCheckDisabled(entity.parent.node)) {\n        visitedKeys.add(parent.key);\n        return;\n      }\n\n      let allChecked = true;\n      let partialChecked = false;\n\n      (parent.children || [])\n        .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n        .forEach(({ key }) => {\n          const checked = checkedKeys.has(key);\n          if (allChecked && !checked) {\n            allChecked = false;\n          }\n          if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n            partialChecked = true;\n          }\n        });\n\n      if (!allChecked) {\n        checkedKeys.delete(parent.key);\n      }\n      if (partialChecked) {\n        halfCheckedKeys.add(parent.key);\n      }\n\n      visitedKeys.add(parent.key);\n    });\n  }\n\n  return {\n    checkedKeys: Array.from(checkedKeys),\n    halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)),\n  };\n}\n\n/**\n * Conduct with keys.\n * @param keyList current key list\n * @param keyEntities key - dataEntity map\n * @param mode `fill` to fill missing key, `clean` to remove useless key\n */\nexport function conductCheck<TreeDataType extends BasicDataNode = DataNode>(\n  keyList: Key[],\n  checked: true | { checked: false; halfCheckedKeys: Key[] },\n  keyEntities: Record<Key, DataEntity<TreeDataType>>,\n  maxLevel: number,\n  levelEntities: Map<number, Set<DataEntity<TreeDataType>>>,\n  getCheckDisabled?: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n  const warningMissKeys: Key[] = [];\n\n  let syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>;\n  if (getCheckDisabled) {\n    syntheticGetCheckDisabled = getCheckDisabled;\n  } else {\n    syntheticGetCheckDisabled = isCheckDisabled;\n  }\n\n  // We only handle exist keys\n  const keys = new Set<Key>(\n    keyList.filter(key => {\n      const hasEntity = !!keyEntities[key];\n      if (!hasEntity) {\n        warningMissKeys.push(key);\n      }\n\n      return hasEntity;\n    }),\n  );\n\n  note(\n    !warningMissKeys.length,\n    `Tree missing follow keys: ${warningMissKeys\n      .slice(0, 100)\n      .map(key => `'${key}'`)\n      .join(', ')}`,\n  );\n\n  let result: ConductReturnType;\n  if (checked === true) {\n    result = fillConductCheck<TreeDataType>(\n      keys,\n      levelEntities,\n      maxLevel,\n      syntheticGetCheckDisabled,\n    );\n  } else {\n    result = cleanConductCheck(\n      keys,\n      checked.halfCheckedKeys,\n      levelEntities,\n      maxLevel,\n      syntheticGetCheckDisabled,\n    );\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "components/vc-tree/utils/diffUtil.ts",
    "content": "import type { Key, FlattenNode } from '../interface';\n\nexport function findExpandedKeys(prev: Key[] = [], next: Key[] = []) {\n  const prevLen = prev.length;\n  const nextLen = next.length;\n\n  if (Math.abs(prevLen - nextLen) !== 1) {\n    return { add: false, key: null };\n  }\n\n  function find(shorter: Key[], longer: Key[]) {\n    const cache: Map<Key, boolean> = new Map();\n    shorter.forEach(key => {\n      cache.set(key, true);\n    });\n\n    const keys = longer.filter(key => !cache.has(key));\n\n    return keys.length === 1 ? keys[0] : null;\n  }\n\n  if (prevLen < nextLen) {\n    return {\n      add: true,\n      key: find(prev, next),\n    };\n  }\n\n  return {\n    add: false,\n    key: find(next, prev),\n  };\n}\n\nexport function getExpandRange(shorter: FlattenNode[], longer: FlattenNode[], key: Key) {\n  const shorterStartIndex = shorter.findIndex(item => item.key === key);\n  const shorterEndNode = shorter[shorterStartIndex + 1];\n  const longerStartIndex = longer.findIndex(item => item.key === key);\n\n  if (shorterEndNode) {\n    const longerEndIndex = longer.findIndex(item => item.key === shorterEndNode.key);\n    return longer.slice(longerStartIndex + 1, longerEndIndex);\n  }\n  return longer.slice(longerStartIndex + 1);\n}\n"
  },
  {
    "path": "components/vc-tree/utils/treeUtil.ts",
    "content": "import type {\n  DataNode,\n  FlattenNode,\n  NodeElement,\n  DataEntity,\n  Key,\n  EventDataNode,\n  GetKey,\n  FieldNames,\n  BasicDataNode,\n} from '../interface';\nimport { getPosition, isTreeNode } from '../util';\nimport { warning } from '../../vc-util/warning';\n\nimport type { TreeNodeProps } from '../props';\nimport { camelize, filterEmpty } from '../../_util/props-util';\nimport omit from '../../_util/omit';\nimport type { VueNode } from '../../_util/type';\n\nexport function getKey(key: Key, pos: string) {\n  if (key !== null && key !== undefined) {\n    return key;\n  }\n  return pos;\n}\n\nexport function fillFieldNames(fieldNames?: FieldNames): Required<FieldNames> {\n  const { title, _title, key, children } = fieldNames || {};\n  const mergedTitle = title || 'title';\n\n  return {\n    title: mergedTitle,\n    _title: _title || [mergedTitle],\n    key: key || 'key',\n    children: children || 'children',\n  };\n}\n\n/**\n * Warning if TreeNode do not provides key\n */\nexport function warningWithoutKey(treeData: DataNode[], fieldNames: FieldNames) {\n  const keys = new Map<string, boolean>();\n\n  function dig(list: DataNode[], path = '') {\n    (list || []).forEach(treeNode => {\n      const key = treeNode[fieldNames.key];\n      const children = treeNode[fieldNames.children];\n      warning(\n        key !== null && key !== undefined,\n        `Tree node must have a certain key: [${path}${key}]`,\n      );\n\n      const recordKey = String(key);\n      warning(\n        !keys.has(recordKey) || key === null || key === undefined,\n        `Same 'key' exist in the Tree: ${recordKey}`,\n      );\n      keys.set(recordKey, true);\n\n      dig(children, `${path}${recordKey} > `);\n    });\n  }\n\n  dig(treeData);\n}\n\n/**\n * Convert `children` of Tree into `treeData` structure.\n */\nexport function convertTreeToData(rootNodes: VueNode): DataNode[] {\n  function dig(node: VueNode = []): DataNode[] {\n    const treeNodes = filterEmpty(node as NodeElement[]);\n    return treeNodes.map(treeNode => {\n      // Filter invalidate node\n      if (!isTreeNode(treeNode)) {\n        warning(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');\n        return null;\n      }\n      const slots = (treeNode.children as any) || {};\n      const key = treeNode.key as string | number;\n      const props: any = {};\n      for (const [k, v] of Object.entries(treeNode.props)) {\n        props[camelize(k)] = v;\n      }\n      const { isLeaf, checkable, selectable, disabled, disableCheckbox } = props;\n      // 默认值为 undefined\n      const newProps = {\n        isLeaf: isLeaf || isLeaf === '' || undefined,\n        checkable: checkable || checkable === '' || undefined,\n        selectable: selectable || selectable === '' || undefined,\n        disabled: disabled || disabled === '' || undefined,\n        disableCheckbox: disableCheckbox || disableCheckbox === '' || undefined,\n      };\n      const slotsProps = { ...props, ...newProps };\n      const {\n        title = slots.title?.(slotsProps),\n        icon = slots.icon?.(slotsProps),\n        switcherIcon = slots.switcherIcon?.(slotsProps),\n        ...rest\n      } = props;\n      const children = slots.default?.();\n      const dataNode: DataNode = {\n        ...rest,\n        title,\n        icon,\n        switcherIcon,\n        key,\n        isLeaf,\n        ...newProps,\n      };\n\n      const parsedChildren = dig(children);\n      if (parsedChildren.length) {\n        dataNode.children = parsedChildren;\n      }\n\n      return dataNode;\n    });\n  }\n  return dig(rootNodes);\n}\n\n/**\n * Flat nest tree data into flatten list. This is used for virtual list render.\n * @param treeNodeList Origin data node list\n * @param expandedKeys\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\n */\nexport function flattenTreeData(\n  treeNodeList: DataNode[],\n  expandedKeys: Key[] | true,\n  fieldNames: FieldNames,\n): FlattenNode[] {\n  const {\n    _title: fieldTitles,\n    key: fieldKey,\n    children: fieldChildren,\n  } = fillFieldNames(fieldNames);\n\n  const expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\n  const flattenList: FlattenNode[] = [];\n\n  function dig(list: DataNode[], parent: FlattenNode = null): FlattenNode[] {\n    return list.map((treeNode, index) => {\n      const pos: string = getPosition(parent ? parent.pos : '0', index);\n      const mergedKey = getKey(treeNode[fieldKey], pos);\n\n      // Pick matched title in field title list\n      let mergedTitle: any;\n      for (let i = 0; i < fieldTitles.length; i += 1) {\n        const fieldTitle = fieldTitles[i];\n        if (treeNode[fieldTitle] !== undefined) {\n          mergedTitle = treeNode[fieldTitle];\n          break;\n        }\n      }\n      // Add FlattenDataNode into list\n      const flattenNode: FlattenNode = {\n        ...omit(treeNode, [...fieldTitles, fieldKey, fieldChildren] as any),\n        title: mergedTitle,\n        key: mergedKey,\n        parent,\n        pos,\n        children: null,\n        data: treeNode,\n        isStart: [...(parent ? parent.isStart : []), index === 0],\n        isEnd: [...(parent ? parent.isEnd : []), index === list.length - 1],\n      };\n\n      flattenList.push(flattenNode);\n\n      // Loop treeNode children\n      if (expandedKeys === true || expandedKeySet.has(mergedKey)) {\n        flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);\n      } else {\n        flattenNode.children = [];\n      }\n\n      return flattenNode;\n    });\n  }\n\n  dig(treeNodeList);\n\n  return flattenList;\n}\n\ntype ExternalGetKey = GetKey<DataNode> | string;\n\ninterface TraverseDataNodesConfig {\n  childrenPropName?: string;\n  externalGetKey?: ExternalGetKey;\n  fieldNames?: FieldNames;\n}\n\n/**\n * Traverse all the data by `treeData`.\n * Please not use it out of the `rc-tree` since we may refactor this code.\n */\nexport function traverseDataNodes(\n  dataNodes: DataNode[],\n  callback: (data: {\n    node: DataNode;\n    index: number;\n    pos: string;\n    key: Key;\n    parentPos: string | number;\n    level: number;\n    nodes: DataNode[];\n  }) => void,\n  // To avoid too many params, let use config instead of origin param\n  config?: TraverseDataNodesConfig | string,\n) {\n  let mergedConfig: TraverseDataNodesConfig = {};\n  if (typeof config === 'object') {\n    mergedConfig = config;\n  } else {\n    mergedConfig = { externalGetKey: config };\n  }\n  mergedConfig = mergedConfig || {};\n\n  // Init config\n  const { childrenPropName, externalGetKey, fieldNames } = mergedConfig;\n\n  const { key: fieldKey, children: fieldChildren } = fillFieldNames(fieldNames);\n\n  const mergeChildrenPropName = childrenPropName || fieldChildren;\n\n  // Get keys\n  let syntheticGetKey: (node: DataNode, pos?: string) => Key;\n  if (externalGetKey) {\n    if (typeof externalGetKey === 'string') {\n      syntheticGetKey = (node: DataNode) => (node as any)[externalGetKey as string];\n    } else if (typeof externalGetKey === 'function') {\n      syntheticGetKey = (node: DataNode) => (externalGetKey as GetKey<DataNode>)(node);\n    }\n  } else {\n    syntheticGetKey = (node, pos) => getKey(node[fieldKey], pos);\n  }\n\n  // Process\n  function processNode(\n    node: DataNode,\n    index?: number,\n    parent?: { node: DataNode; pos: string; level: number },\n    pathNodes?: DataNode[],\n  ) {\n    const children = node ? node[mergeChildrenPropName] : dataNodes;\n    const pos = node ? getPosition(parent.pos, index) : '0';\n    const connectNodes = node ? [...pathNodes, node] : [];\n\n    // Process node if is not root\n    if (node) {\n      const key: Key = syntheticGetKey(node, pos);\n      const data = {\n        node,\n        index,\n        pos,\n        key,\n        parentPos: parent.node ? parent.pos : null,\n        level: parent.level + 1,\n        nodes: connectNodes,\n      };\n\n      callback(data);\n    }\n\n    // Process children node\n    if (children) {\n      children.forEach((subNode, subIndex) => {\n        processNode(\n          subNode,\n          subIndex,\n          {\n            node,\n            pos,\n            level: parent ? parent.level + 1 : -1,\n          },\n          connectNodes,\n        );\n      });\n    }\n  }\n\n  processNode(null);\n}\n\ninterface Wrapper {\n  posEntities: Record<string, DataEntity>;\n  keyEntities: Record<Key, DataEntity>;\n}\n\n/**\n * Convert `treeData` into entity records.\n */\nexport function convertDataToEntities(\n  dataNodes: DataNode[],\n  {\n    initWrapper,\n    processEntity,\n    onProcessFinished,\n    externalGetKey,\n    childrenPropName,\n    fieldNames,\n  }: {\n    initWrapper?: (wrapper: Wrapper) => Wrapper;\n    processEntity?: (entity: DataEntity, wrapper: Wrapper) => void;\n    onProcessFinished?: (wrapper: Wrapper) => void;\n    externalGetKey?: ExternalGetKey;\n    childrenPropName?: string;\n    fieldNames?: FieldNames;\n  } = {},\n  /** @deprecated Use `config.externalGetKey` instead */\n  legacyExternalGetKey?: ExternalGetKey,\n) {\n  // Init config\n  const mergedExternalGetKey = externalGetKey || legacyExternalGetKey;\n\n  const posEntities = {};\n  const keyEntities = {};\n  let wrapper = {\n    posEntities,\n    keyEntities,\n  };\n\n  if (initWrapper) {\n    wrapper = initWrapper(wrapper) || wrapper;\n  }\n\n  traverseDataNodes(\n    dataNodes,\n    item => {\n      const { node, index, pos, key, parentPos, level, nodes } = item;\n      const entity: DataEntity = { node, nodes, index, key, pos, level };\n\n      const mergedKey = getKey(key, pos);\n\n      posEntities[pos] = entity;\n      keyEntities[mergedKey] = entity;\n\n      // Fill children\n      entity.parent = posEntities[parentPos];\n      if (entity.parent) {\n        entity.parent.children = entity.parent.children || [];\n        entity.parent.children.push(entity);\n      }\n\n      if (processEntity) {\n        processEntity(entity, wrapper);\n      }\n    },\n    { externalGetKey: mergedExternalGetKey, childrenPropName, fieldNames },\n  );\n\n  if (onProcessFinished) {\n    onProcessFinished(wrapper);\n  }\n\n  return wrapper;\n}\n\nexport interface TreeNodeRequiredProps<TreeDataType extends BasicDataNode = DataNode> {\n  expandedKeysSet: Set<Key>;\n  selectedKeysSet: Set<Key>;\n  loadedKeysSet: Set<Key>;\n  loadingKeysSet: Set<Key>;\n  checkedKeysSet: Set<Key>;\n  halfCheckedKeysSet: Set<Key>;\n  dragOverNodeKey: Key;\n  dropPosition: number;\n  keyEntities: Record<Key, DataEntity<TreeDataType>>;\n}\n\n/**\n * Get TreeNode props with Tree props.\n */\nexport function getTreeNodeProps<TreeDataType extends BasicDataNode = DataNode>(\n  key: Key,\n  {\n    expandedKeysSet,\n    selectedKeysSet,\n    loadedKeysSet,\n    loadingKeysSet,\n    checkedKeysSet,\n    halfCheckedKeysSet,\n    dragOverNodeKey,\n    dropPosition,\n    keyEntities,\n  }: TreeNodeRequiredProps<TreeDataType>,\n) {\n  const entity = keyEntities[key];\n\n  const treeNodeProps = {\n    eventKey: key,\n    expanded: expandedKeysSet.has(key),\n    selected: selectedKeysSet.has(key),\n    loaded: loadedKeysSet.has(key),\n    loading: loadingKeysSet.has(key),\n    checked: checkedKeysSet.has(key),\n    halfChecked: halfCheckedKeysSet.has(key),\n    pos: String(entity ? entity.pos : ''),\n    parent: entity.parent,\n    // [Legacy] Drag props\n    // Since the interaction of drag is changed, the semantic of the props are\n    // not accuracy, I think it should be finally removed\n    dragOver: dragOverNodeKey === key && dropPosition === 0,\n    dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n    dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1,\n  };\n\n  return treeNodeProps;\n}\n\nexport function convertNodePropsToEventData(\n  props: TreeNodeProps & ReturnType<typeof getTreeNodeProps>,\n): EventDataNode {\n  const {\n    data,\n    expanded,\n    selected,\n    checked,\n    loaded,\n    loading,\n    halfChecked,\n    dragOver,\n    dragOverGapTop,\n    dragOverGapBottom,\n    pos,\n    active,\n    eventKey,\n  } = props;\n  const eventData = {\n    dataRef: data,\n    ...data,\n    expanded,\n    selected,\n    checked,\n    loaded,\n    loading,\n    halfChecked,\n    dragOver,\n    dragOverGapTop,\n    dragOverGapBottom,\n    pos,\n    active,\n    eventKey,\n    key: eventKey,\n  };\n  if (!('props' in eventData)) {\n    Object.defineProperty(eventData, 'props', {\n      get() {\n        warning(\n          false,\n          'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.',\n        );\n        return props;\n      },\n    });\n  }\n\n  return eventData;\n}\n"
  },
  {
    "path": "components/vc-tree-select/LegacyContext.tsx",
    "content": "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport type { InjectionKey } from 'vue';\nimport { inject, provide } from 'vue';\nimport type { TreeProps } from '../tree';\nimport type { DataEntity, IconType } from '../vc-tree/interface';\nimport type { InternalDataEntity, Key, LegacyDataNode, RawValueType } from './interface';\n\nexport interface LegacyContextProps {\n  checkable: boolean;\n  checkedKeys: Key[];\n  customCheckable: () => any;\n  halfCheckedKeys: Key[];\n  treeExpandedKeys: Key[];\n  treeDefaultExpandedKeys: Key[];\n  onTreeExpand: (keys: Key[]) => void;\n  treeDefaultExpandAll: boolean;\n  treeIcon: IconType;\n  showTreeIcon: boolean;\n  switcherIcon: IconType;\n  treeLine: TreeProps['showLine'];\n  treeNodeFilterProp: string;\n  treeLoadedKeys: Key[];\n  treeMotion: any;\n  loadData: (treeNode: LegacyDataNode) => Promise<unknown>;\n  onTreeLoad: (loadedKeys: Key[]) => void;\n\n  keyEntities: Record<RawValueType, DataEntity<any>>;\n\n  customSlots: {\n    title?: (data: InternalDataEntity) => any;\n    treeCheckable: () => any;\n    [key: string]: ((...args: any[]) => any) | undefined;\n  };\n}\n\nconst TreeSelectLegacyContextPropsKey: InjectionKey<LegacyContextProps> = Symbol(\n  'TreeSelectLegacyContextPropsKey',\n);\n\n// export const LegacySelectContext = defineComponent({\n//  compatConfig: { MODE: 3 },\n//   name: 'SelectContext',\n//   props: {\n//     value: { type: Object as PropType<LegacyContextProps> },\n//   },\n//   setup(props, { slots }) {\n//     provide(\n//       TreeSelectLegacyContextPropsKey,\n//       computed(() => props.value),\n//     );\n//     return () => slots.default?.();\n//   },\n// });\n\nexport function useProvideLegacySelectContext(props: LegacyContextProps) {\n  return provide(TreeSelectLegacyContextPropsKey, props);\n}\n\nexport default function useInjectLegacySelectContext() {\n  return inject(TreeSelectLegacyContextPropsKey, {} as LegacyContextProps);\n}\n"
  },
  {
    "path": "components/vc-tree-select/OptionList.tsx",
    "content": "import type { TreeDataNode, Key } from './interface';\nimport type { RefOptionListProps } from '../vc-select/OptionList';\nimport type { ScrollTo } from '../vc-virtual-list/List';\nimport { computed, defineComponent, nextTick, ref, shallowRef, toRaw, watch } from 'vue';\nimport useMemo from '../_util/hooks/useMemo';\nimport type { EventDataNode } from '../tree';\nimport KeyCode from '../_util/KeyCode';\nimport Tree from '../vc-tree/Tree';\nimport type { TreeProps } from '../vc-tree/props';\nimport { getAllKeys, isCheckDisabled } from './utils/valueUtil';\nimport { useBaseProps } from '../vc-select';\nimport useInjectLegacySelectContext from './LegacyContext';\nimport useInjectSelectContext from './TreeSelectContext';\n\nconst HIDDEN_STYLE = {\n  width: 0,\n  height: 0,\n  display: 'flex',\n  overflow: 'hidden',\n  opacity: 0,\n  border: 0,\n  padding: 0,\n  margin: 0,\n};\n\ninterface TreeEventInfo {\n  node: { key: Key };\n  selected?: boolean;\n  checked?: boolean;\n}\n\ntype ReviseRefOptionListProps = Omit<RefOptionListProps, 'scrollTo'> & { scrollTo: ScrollTo };\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'OptionList',\n  inheritAttrs: false,\n  setup(_, { slots, expose }) {\n    const baseProps = useBaseProps();\n    const legacyContext = useInjectLegacySelectContext();\n    const context = useInjectSelectContext();\n    const treeRef = ref();\n    const memoTreeData = useMemo(\n      () => context.treeData,\n      [() => baseProps.open, () => context.treeData],\n      next => next[0],\n    );\n\n    const mergedCheckedKeys = computed(() => {\n      const { checkable, halfCheckedKeys, checkedKeys } = legacyContext;\n      if (!checkable) {\n        return null;\n      }\n\n      return {\n        checked: checkedKeys,\n        halfChecked: halfCheckedKeys,\n      };\n    });\n\n    watch(\n      () => baseProps.open,\n      () => {\n        nextTick(() => {\n          if (baseProps.open && !baseProps.multiple && legacyContext.checkedKeys.length) {\n            treeRef.value?.scrollTo({ key: legacyContext.checkedKeys[0] });\n          }\n        });\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // ========================== Search ==========================\n    const lowerSearchValue = computed(() => String(baseProps.searchValue).toLowerCase());\n    const filterTreeNode = (treeNode: EventDataNode) => {\n      if (!lowerSearchValue.value) {\n        return false;\n      }\n      return String(treeNode[legacyContext.treeNodeFilterProp])\n        .toLowerCase()\n        .includes(lowerSearchValue.value);\n    };\n\n    // =========================== Keys ===========================\n    const expandedKeys = shallowRef<Key[]>(legacyContext.treeDefaultExpandedKeys);\n    const searchExpandedKeys = shallowRef<Key[]>(null);\n\n    watch(\n      () => baseProps.searchValue,\n      () => {\n        if (baseProps.searchValue) {\n          searchExpandedKeys.value = getAllKeys(toRaw(context.treeData), toRaw(context.fieldNames));\n        }\n      },\n      {\n        immediate: true,\n      },\n    );\n    const mergedExpandedKeys = computed(() => {\n      if (legacyContext.treeExpandedKeys) {\n        return legacyContext.treeExpandedKeys.slice();\n      }\n      return baseProps.searchValue ? searchExpandedKeys.value : expandedKeys.value;\n    });\n\n    const onInternalExpand = (keys: Key[]) => {\n      expandedKeys.value = keys;\n      searchExpandedKeys.value = keys;\n\n      legacyContext.onTreeExpand?.(keys);\n    };\n\n    // ========================== Events ==========================\n    const onListMouseDown = (event: MouseEvent) => {\n      event.preventDefault();\n    };\n\n    const onInternalSelect = (_: Key[], { node }: TreeEventInfo) => {\n      const { checkable, checkedKeys } = legacyContext;\n      if (checkable && isCheckDisabled(node)) {\n        return;\n      }\n      context.onSelect?.(node.key, {\n        selected: !checkedKeys.includes(node.key),\n      });\n\n      if (!baseProps.multiple) {\n        baseProps.toggleOpen?.(false);\n      }\n    };\n\n    // ========================= Keyboard =========================\n    const activeKey = ref<Key>(null);\n    const activeEntity = computed(() => legacyContext.keyEntities[activeKey.value]);\n\n    const setActiveKey = (key: Key) => {\n      activeKey.value = key;\n    };\n    expose({\n      scrollTo: (...args: any[]) => treeRef.value?.scrollTo?.(...args),\n      onKeydown: (event: KeyboardEvent) => {\n        const { which } = event;\n        switch (which) {\n          // >>> Arrow keys\n          case KeyCode.UP:\n          case KeyCode.DOWN:\n          case KeyCode.LEFT:\n          case KeyCode.RIGHT:\n            treeRef.value?.onKeydown(event);\n            break;\n\n          // >>> Select item\n          case KeyCode.ENTER: {\n            if (activeEntity.value) {\n              const { selectable, value } = activeEntity.value.node || {};\n              if (selectable !== false) {\n                onInternalSelect(null, {\n                  node: { key: activeKey.value },\n                  selected: !legacyContext.checkedKeys.includes(value),\n                });\n              }\n            }\n\n            break;\n          }\n\n          // >>> Close\n          case KeyCode.ESC: {\n            baseProps.toggleOpen(false);\n          }\n        }\n      },\n      onKeyup: () => {},\n    } as ReviseRefOptionListProps);\n\n    return () => {\n      const {\n        prefixCls,\n        multiple,\n        searchValue,\n        open,\n        notFoundContent = slots.notFoundContent?.(),\n      } = baseProps;\n      const { listHeight, listItemHeight, virtual, dropdownMatchSelectWidth, treeExpandAction } =\n        context;\n      const {\n        checkable,\n        treeDefaultExpandAll,\n        treeIcon,\n        showTreeIcon,\n        switcherIcon,\n        treeLine,\n        loadData,\n        treeLoadedKeys,\n        treeMotion,\n        onTreeLoad,\n        checkedKeys,\n      } = legacyContext;\n      // ========================== Render ==========================\n      if (memoTreeData.value.length === 0) {\n        return (\n          <div role=\"listbox\" class={`${prefixCls}-empty`} onMousedown={onListMouseDown}>\n            {notFoundContent}\n          </div>\n        );\n      }\n\n      const treeProps: Partial<TreeProps> = {\n        fieldNames: context.fieldNames,\n      };\n      if (treeLoadedKeys) {\n        treeProps.loadedKeys = treeLoadedKeys;\n      }\n      if (mergedExpandedKeys.value) {\n        treeProps.expandedKeys = mergedExpandedKeys.value;\n      }\n      return (\n        <div onMousedown={onListMouseDown}>\n          {activeEntity.value && open && (\n            <span style={HIDDEN_STYLE} aria-live=\"assertive\">\n              {activeEntity.value.node.value}\n            </span>\n          )}\n\n          <Tree\n            ref={treeRef}\n            focusable={false}\n            prefixCls={`${prefixCls}-tree`}\n            treeData={memoTreeData.value as TreeDataNode[]}\n            height={listHeight}\n            itemHeight={listItemHeight}\n            virtual={virtual !== false && dropdownMatchSelectWidth !== false}\n            multiple={multiple}\n            icon={treeIcon}\n            showIcon={showTreeIcon}\n            switcherIcon={switcherIcon}\n            showLine={treeLine}\n            loadData={searchValue ? null : (loadData as any)}\n            motion={treeMotion}\n            activeKey={activeKey.value}\n            // We handle keys by out instead tree self\n            checkable={checkable}\n            checkStrictly\n            checkedKeys={mergedCheckedKeys.value}\n            selectedKeys={!checkable ? checkedKeys : []}\n            defaultExpandAll={treeDefaultExpandAll}\n            {...treeProps}\n            // Proxy event out\n            onActiveChange={setActiveKey}\n            onSelect={onInternalSelect}\n            onCheck={onInternalSelect as any}\n            onExpand={onInternalExpand}\n            onLoad={onTreeLoad}\n            filterTreeNode={filterTreeNode}\n            expandAction={treeExpandAction}\n            v-slots={{ ...slots, checkable: legacyContext.customSlots.treeCheckable }}\n          />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree-select/TreeNode.tsx",
    "content": "/* istanbul ignore file */\n\nimport type { FunctionalComponent } from 'vue';\nimport type { DataNode, Key } from './interface';\n\nexport interface TreeNodeProps extends Omit<DataNode, 'children'> {\n  value: Key;\n}\n\n/** This is a placeholder, not real render in dom */\nconst TreeNode: FunctionalComponent<TreeNodeProps> & { isTreeSelectNode: boolean } = () => null;\nTreeNode.inheritAttrs = false;\nTreeNode.displayName = 'ATreeSelectNode';\nTreeNode.isTreeSelectNode = true;\nexport default TreeNode;\n"
  },
  {
    "path": "components/vc-tree-select/TreeSelect.tsx",
    "content": "import OptionList from './OptionList';\nimport { formatStrategyValues, SHOW_CHILD } from './utils/strategyUtil';\nimport type { CheckedStrategy } from './utils/strategyUtil';\nimport { useProvideSelectContext } from './TreeSelectContext';\nimport type { TreeSelectContextProps } from './TreeSelectContext';\nimport type { LegacyContextProps } from './LegacyContext';\nimport { useProvideLegacySelectContext } from './LegacyContext';\nimport useTreeData from './hooks/useTreeData';\nimport { toArray, fillFieldNames, isNil } from './utils/valueUtil';\nimport useCache from './hooks/useCache';\nimport useDataEntities from './hooks/useDataEntities';\nimport { fillAdditionalInfo, fillLegacyProps } from './utils/legacyUtil';\nimport useCheckedKeys from './hooks/useCheckedKeys';\nimport useFilterTreeData from './hooks/useFilterTreeData';\nimport warningProps from './utils/warningPropsUtil';\nimport type { Key } from './interface';\nimport type { DisplayValueType } from '../vc-select/BaseSelect';\nimport { baseSelectPropsWithoutPrivate } from '../vc-select/BaseSelect';\nimport { computed, defineComponent, ref, shallowRef, toRaw, toRef, toRefs, watchEffect } from 'vue';\nimport type { ExtractPropTypes, PropType } from 'vue';\nimport omit from '../_util/omit';\nimport PropTypes from '../_util/vue-types';\nimport type { SelectProps, BaseSelectProps, BaseSelectRef } from '../vc-select';\nimport { BaseSelect } from '../vc-select';\nimport { initDefaultProps } from '../_util/props-util';\nimport useId from '../vc-select/hooks/useId';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport type { VueNode } from '../_util/type';\nimport { conductCheck } from '../vc-tree/utils/conductUtil';\nimport { warning } from '../vc-util/warning';\nimport { toReactive } from '../_util/toReactive';\nimport useMaxLevel from '../vc-tree/useMaxLevel';\nimport type { ExpandAction } from '../vc-tree/props';\n\nexport type OnInternalSelect = (value: RawValueType, info: { selected: boolean }) => void;\n\nexport type RawValueType = string | number;\n\nexport interface LabeledValueType {\n  key?: Key;\n  value?: RawValueType;\n  label?: any;\n  /** Only works on `treeCheckStrictly` */\n  halfChecked?: boolean;\n}\n\nexport type SelectSource = 'option' | 'selection' | 'input' | 'clear';\n\nexport type DraftValueType = RawValueType | LabeledValueType | (RawValueType | LabeledValueType)[];\n\n/** @deprecated This is only used for legacy compatible. Not works on new code. */\nexport interface LegacyCheckedNode {\n  pos: string;\n  node: any;\n  children?: LegacyCheckedNode[];\n}\n\nexport interface ChangeEventExtra {\n  /** @deprecated Please save prev value by control logic instead */\n  preValue: LabeledValueType[];\n  triggerValue: RawValueType;\n  /** @deprecated Use `onSelect` or `onDeselect` instead. */\n  selected?: boolean;\n  /** @deprecated Use `onSelect` or `onDeselect` instead. */\n  checked?: boolean;\n\n  // Not sure if exist user still use this. We have to keep but not recommend user to use\n  /** @deprecated This prop not work as react node anymore. */\n  triggerNode: any;\n  /** @deprecated This prop not work as react node anymore. */\n  allCheckedNodes: LegacyCheckedNode[];\n}\n\nexport interface FieldNames {\n  value?: string;\n  label?: string;\n  children?: string;\n}\n\nexport interface InternalFieldName extends Omit<FieldNames, 'label'> {\n  _title: string[];\n}\n\nexport interface SimpleModeConfig {\n  id?: Key;\n  pId?: Key;\n  rootPId?: Key;\n}\n\nexport interface BaseOptionType {\n  disabled?: boolean;\n  checkable?: boolean;\n  disableCheckbox?: boolean;\n  children?: BaseOptionType[];\n  [name: string]: any;\n}\n\nexport interface DefaultOptionType extends BaseOptionType {\n  value?: RawValueType;\n  title?: any;\n  label?: any;\n  key?: Key;\n  children?: DefaultOptionType[];\n}\n\nexport interface LegacyDataNode extends DefaultOptionType {\n  props: any;\n}\n\nexport function treeSelectProps<\n  ValueType = any,\n  OptionType extends BaseOptionType = DefaultOptionType,\n>() {\n  return {\n    ...omit(baseSelectPropsWithoutPrivate(), ['mode']),\n\n    prefixCls: String,\n    id: String,\n    value: { type: [String, Number, Object, Array] as PropType<ValueType> },\n    defaultValue: { type: [String, Number, Object, Array] as PropType<ValueType> },\n    onChange: {\n      type: Function as PropType<\n        (value: ValueType, labelList: any[], extra: ChangeEventExtra) => void\n      >,\n    },\n    searchValue: String,\n    /** @deprecated Use `searchValue` instead */\n    inputValue: String,\n    onSearch: { type: Function as PropType<(value: string) => void> },\n    autoClearSearchValue: { type: Boolean, default: undefined },\n\n    filterTreeNode: {\n      type: [Boolean, Function] as PropType<\n        boolean | ((inputValue: string, treeNode: DefaultOptionType) => boolean)\n      >,\n      default: undefined,\n    },\n    treeNodeFilterProp: String,\n\n    // >>> Select\n    onSelect: Function as PropType<SelectProps['onSelect']>,\n    onDeselect: Function as PropType<SelectProps['onDeselect']>,\n\n    showCheckedStrategy: { type: String as PropType<CheckedStrategy> },\n    treeNodeLabelProp: String,\n\n    fieldNames: { type: Object as PropType<FieldNames> },\n\n    // >>> Mode\n    multiple: { type: Boolean, default: undefined },\n    treeCheckable: { type: Boolean, default: undefined },\n    treeCheckStrictly: { type: Boolean, default: undefined },\n    labelInValue: { type: Boolean, default: undefined },\n\n    // >>> Data\n    treeData: { type: Array as PropType<OptionType[]> },\n    treeDataSimpleMode: {\n      type: [Boolean, Object] as PropType<boolean | SimpleModeConfig>,\n      default: undefined,\n    },\n    loadData: { type: Function as PropType<(dataNode: LegacyDataNode) => Promise<unknown>> },\n    treeLoadedKeys: { type: Array as PropType<Key[]> },\n    onTreeLoad: { type: Function as PropType<(loadedKeys: Key[]) => void> },\n\n    // >>> Expanded\n    treeDefaultExpandAll: { type: Boolean, default: undefined },\n    treeExpandedKeys: { type: Array as PropType<Key[]> },\n    treeDefaultExpandedKeys: { type: Array as PropType<Key[]> },\n    onTreeExpand: { type: Function as PropType<(expandedKeys: Key[]) => void> },\n\n    // >>> Options\n    virtual: { type: Boolean, default: undefined },\n    listHeight: Number,\n    listItemHeight: Number,\n    onDropdownVisibleChange: { type: Function as PropType<(open: boolean) => void> },\n\n    // >>> Tree\n    treeLine: { type: [Boolean, Object], default: undefined },\n    treeIcon: PropTypes.any,\n    showTreeIcon: { type: Boolean, default: undefined },\n    switcherIcon: PropTypes.any,\n    treeMotion: PropTypes.any,\n    children: Array as PropType<VueNode[]>,\n    treeExpandAction: String as PropType<ExpandAction>,\n\n    showArrow: { type: Boolean, default: undefined },\n    showSearch: { type: Boolean, default: undefined },\n    open: { type: Boolean, default: undefined },\n    defaultOpen: { type: Boolean, default: undefined },\n\n    disabled: { type: Boolean, default: undefined },\n\n    placeholder: PropTypes.any,\n\n    maxTagPlaceholder: { type: Function as PropType<(omittedValues: DisplayValueType[]) => any> },\n\n    dropdownPopupAlign: PropTypes.any,\n    customSlots: Object,\n  };\n}\n\nexport type TreeSelectProps = Partial<ExtractPropTypes<ReturnType<typeof treeSelectProps>>>;\n\nfunction isRawValue(value: RawValueType | LabeledValueType): value is RawValueType {\n  return !value || typeof value !== 'object';\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TreeSelect',\n  inheritAttrs: false,\n  props: initDefaultProps(treeSelectProps(), {\n    treeNodeFilterProp: 'value',\n    autoClearSearchValue: true,\n    showCheckedStrategy: SHOW_CHILD,\n    listHeight: 200,\n    listItemHeight: 20,\n    prefixCls: 'vc-tree-select',\n  }),\n  setup(props, { attrs, expose, slots }) {\n    const mergedId = useId(toRef(props, 'id'));\n    const treeConduction = computed(() => props.treeCheckable && !props.treeCheckStrictly);\n    const mergedCheckable = computed(() => props.treeCheckable || props.treeCheckStrictly);\n    const mergedLabelInValue = computed(() => props.treeCheckStrictly || props.labelInValue);\n    const mergedMultiple = computed(() => mergedCheckable.value || props.multiple);\n\n    // ========================== Warning ===========================\n    if (process.env.NODE_ENV !== 'production') {\n      watchEffect(() => {\n        warningProps(props);\n      });\n    }\n\n    // ========================= FieldNames =========================\n    const mergedFieldNames = computed<InternalFieldName>(() => fillFieldNames(props.fieldNames));\n\n    // =========================== Search ===========================\n    const [mergedSearchValue, setSearchValue] = useMergedState('', {\n      value: computed(() =>\n        props.searchValue !== undefined ? props.searchValue : props.inputValue,\n      ),\n      postState: search => search || '',\n    });\n\n    const onInternalSearch: BaseSelectProps['onSearch'] = searchText => {\n      setSearchValue(searchText);\n      props.onSearch?.(searchText);\n    };\n\n    // ============================ Data ============================\n    // `useTreeData` only do convert of `children` or `simpleMode`.\n    // Else will return origin `treeData` for perf consideration.\n    // Do not do anything to loop the data.\n    const mergedTreeData = useTreeData(\n      toRef(props, 'treeData'),\n      toRef(props, 'children'),\n      toRef(props, 'treeDataSimpleMode'),\n    );\n\n    const { keyEntities, valueEntities } = useDataEntities(mergedTreeData, mergedFieldNames);\n\n    /** Get `missingRawValues` which not exist in the tree yet */\n    const splitRawValues = (newRawValues: RawValueType[]) => {\n      const missingRawValues = [];\n      const existRawValues = [];\n\n      // Keep missing value in the cache\n      newRawValues.forEach(val => {\n        if (valueEntities.value.has(val)) {\n          existRawValues.push(val);\n        } else {\n          missingRawValues.push(val);\n        }\n      });\n\n      return { missingRawValues, existRawValues };\n    };\n\n    // Filtered Tree\n    const filteredTreeData = useFilterTreeData(mergedTreeData, mergedSearchValue, {\n      fieldNames: mergedFieldNames,\n      treeNodeFilterProp: toRef(props, 'treeNodeFilterProp'),\n      filterTreeNode: toRef(props, 'filterTreeNode'),\n    });\n\n    // =========================== Label ============================\n    const getLabel = (item: DefaultOptionType) => {\n      if (item) {\n        if (props.treeNodeLabelProp) {\n          return item[props.treeNodeLabelProp];\n        }\n\n        // Loop from fieldNames\n        const { _title: titleList } = mergedFieldNames.value;\n\n        for (let i = 0; i < titleList.length; i += 1) {\n          const title = item[titleList[i]];\n          if (title !== undefined) {\n            return title;\n          }\n        }\n      }\n    };\n\n    // ========================= Wrap Value =========================\n    const toLabeledValues = (draftValues: DraftValueType) => {\n      const values = toArray(draftValues);\n\n      return values.map(val => {\n        if (isRawValue(val)) {\n          return { value: val };\n        }\n        return val;\n      });\n    };\n\n    const convert2LabelValues = (draftValues: DraftValueType) => {\n      const values = toLabeledValues(draftValues);\n\n      return values.map(item => {\n        let { label: rawLabel } = item;\n        const { value: rawValue, halfChecked: rawHalfChecked } = item;\n\n        let rawDisabled: boolean | undefined;\n\n        const entity = valueEntities.value.get(rawValue);\n\n        // Fill missing label & status\n        if (entity) {\n          rawLabel = rawLabel ?? getLabel(entity.node);\n          rawDisabled = entity.node.disabled;\n        }\n\n        return {\n          label: rawLabel,\n          value: rawValue,\n          halfChecked: rawHalfChecked,\n          disabled: rawDisabled,\n        };\n      });\n    };\n\n    // =========================== Values ===========================\n    const [internalValue, setInternalValue] = useMergedState(props.defaultValue, {\n      value: toRef(props, 'value'),\n    });\n\n    const rawMixedLabeledValues = computed(() => toLabeledValues(internalValue.value));\n\n    // Split value into full check and half check\n    const rawLabeledValues = shallowRef([]);\n    const rawHalfLabeledValues = shallowRef([]);\n    watchEffect(() => {\n      const fullCheckValues: LabeledValueType[] = [];\n      const halfCheckValues: LabeledValueType[] = [];\n\n      rawMixedLabeledValues.value.forEach(item => {\n        if (item.halfChecked) {\n          halfCheckValues.push(item);\n        } else {\n          fullCheckValues.push(item);\n        }\n      });\n\n      rawLabeledValues.value = fullCheckValues;\n      rawHalfLabeledValues.value = halfCheckValues;\n    });\n\n    // const [mergedValues] = useCache(rawLabeledValues);\n    const rawValues = computed(() => rawLabeledValues.value.map(item => item.value));\n    const { maxLevel, levelEntities } = useMaxLevel(keyEntities);\n    // Convert value to key. Will fill missed keys for conduct check.\n    const [rawCheckedValues, rawHalfCheckedValues] = useCheckedKeys(\n      rawLabeledValues,\n      rawHalfLabeledValues,\n      treeConduction,\n      keyEntities,\n      maxLevel,\n      levelEntities,\n    );\n\n    // Convert rawCheckedKeys to check strategy related values\n    const displayValues = computed(() => {\n      // Collect keys which need to show\n      const displayKeys = formatStrategyValues(\n        rawCheckedValues.value,\n        props.showCheckedStrategy,\n        keyEntities.value,\n        mergedFieldNames.value,\n      );\n\n      // Convert to value and filled with label\n      const values = displayKeys.map(\n        key => keyEntities.value[key]?.node?.[mergedFieldNames.value.value] ?? key,\n      );\n      // Back fill with origin label\n      const labeledValues = values.map(val => {\n        const targetItem = rawLabeledValues.value.find(item => item.value === val);\n        return {\n          value: val,\n          label: targetItem?.label,\n        };\n      });\n      const rawDisplayValues = convert2LabelValues(labeledValues);\n\n      const firstVal = rawDisplayValues[0];\n\n      if (!mergedMultiple.value && firstVal && isNil(firstVal.value) && isNil(firstVal.label)) {\n        return [];\n      }\n      return rawDisplayValues.map(item => ({\n        ...item,\n        label: item.label ?? item.value,\n      }));\n    });\n\n    const [cachedDisplayValues] = useCache(displayValues);\n\n    // =========================== Change ===========================\n    const triggerChange = (\n      newRawValues: RawValueType[],\n      extra: { triggerValue?: RawValueType; selected?: boolean },\n      source: SelectSource,\n    ) => {\n      const labeledValues = convert2LabelValues(newRawValues);\n      setInternalValue(labeledValues);\n\n      // Clean up if needed\n      if (props.autoClearSearchValue) {\n        setSearchValue('');\n      }\n\n      // Generate rest parameters is costly, so only do it when necessary\n      if (props.onChange) {\n        let eventValues: RawValueType[] = newRawValues;\n        if (treeConduction.value) {\n          const formattedKeyList = formatStrategyValues(\n            newRawValues,\n            props.showCheckedStrategy,\n            keyEntities.value,\n            mergedFieldNames.value,\n          );\n          eventValues = formattedKeyList.map(key => {\n            const entity = valueEntities.value.get(key);\n            return entity ? entity.node[mergedFieldNames.value.value] : key;\n          });\n        }\n\n        const { triggerValue, selected } = extra || {\n          triggerValue: undefined,\n          selected: undefined,\n        };\n\n        let returnRawValues: (LabeledValueType | RawValueType)[] = eventValues;\n\n        // We need fill half check back\n        if (props.treeCheckStrictly) {\n          const halfValues = rawHalfLabeledValues.value.filter(\n            item => !eventValues.includes(item.value),\n          );\n\n          returnRawValues = [...returnRawValues, ...halfValues];\n        }\n\n        const returnLabeledValues = convert2LabelValues(returnRawValues);\n        const additionalInfo = {\n          // [Legacy] Always return as array contains label & value\n          preValue: rawLabeledValues.value,\n          triggerValue,\n        } as ChangeEventExtra;\n\n        // [Legacy] Fill legacy data if user query.\n        // This is expansive that we only fill when user query\n        // https://github.com/react-component/tree-select/blob/fe33eb7c27830c9ac70cd1fdb1ebbe7bc679c16a/src/Select.jsx\n        let showPosition = true;\n        if (props.treeCheckStrictly || (source === 'selection' && !selected)) {\n          showPosition = false;\n        }\n\n        fillAdditionalInfo(\n          additionalInfo,\n          triggerValue,\n          newRawValues,\n          mergedTreeData.value,\n          showPosition,\n          mergedFieldNames.value,\n        );\n\n        if (mergedCheckable.value) {\n          additionalInfo.checked = selected;\n        } else {\n          additionalInfo.selected = selected;\n        }\n\n        const returnValues = mergedLabelInValue.value\n          ? returnLabeledValues\n          : returnLabeledValues.map(item => item.value);\n\n        props.onChange(\n          mergedMultiple.value ? returnValues : returnValues[0],\n          mergedLabelInValue.value ? null : returnLabeledValues.map(item => item.label),\n          additionalInfo,\n        );\n      }\n    };\n\n    // ========================== Options ===========================\n    /** Trigger by option list */\n    const onOptionSelect = (\n      selectedKey: Key,\n      { selected, source }: { selected: boolean; source: SelectSource },\n    ) => {\n      const keyEntitiesValue = toRaw(keyEntities.value);\n      const valueEntitiesValue = toRaw(valueEntities.value);\n      const entity = keyEntitiesValue[selectedKey];\n      const node = entity?.node;\n      const selectedValue = node?.[mergedFieldNames.value.value] ?? selectedKey;\n\n      // Never be falsy but keep it safe\n      if (!mergedMultiple.value) {\n        // Single mode always set value\n        triggerChange([selectedValue], { selected: true, triggerValue: selectedValue }, 'option');\n      } else {\n        let newRawValues = selected\n          ? [...rawValues.value, selectedValue]\n          : rawCheckedValues.value.filter(v => v !== selectedValue);\n\n        // Add keys if tree conduction\n        if (treeConduction.value) {\n          // Should keep missing values\n          const { missingRawValues, existRawValues } = splitRawValues(newRawValues);\n          const keyList = existRawValues.map(val => valueEntitiesValue.get(val).key);\n\n          // Conduction by selected or not\n          let checkedKeys: Key[];\n          if (selected) {\n            ({ checkedKeys } = conductCheck(\n              keyList,\n              true,\n              keyEntitiesValue,\n              maxLevel.value,\n              levelEntities.value,\n            ));\n          } else {\n            ({ checkedKeys } = conductCheck(\n              keyList,\n              { checked: false, halfCheckedKeys: rawHalfCheckedValues.value },\n              keyEntitiesValue,\n              maxLevel.value,\n              levelEntities.value,\n            ));\n          }\n\n          // Fill back of keys\n          newRawValues = [\n            ...missingRawValues,\n            ...checkedKeys.map(key => keyEntitiesValue[key].node[mergedFieldNames.value.value]),\n          ];\n        }\n        triggerChange(newRawValues, { selected, triggerValue: selectedValue }, source || 'option');\n      }\n\n      // Trigger select event\n      if (selected || !mergedMultiple.value) {\n        props.onSelect?.(selectedValue, fillLegacyProps(node));\n      } else {\n        props.onDeselect?.(selectedValue, fillLegacyProps(node));\n      }\n    };\n\n    // ========================== Dropdown ==========================\n    const onInternalDropdownVisibleChange = (open: boolean) => {\n      if (props.onDropdownVisibleChange) {\n        const legacyParam = {};\n\n        Object.defineProperty(legacyParam, 'documentClickClose', {\n          get() {\n            warning(false, 'Second param of `onDropdownVisibleChange` has been removed.');\n            return false;\n          },\n        });\n\n        (props.onDropdownVisibleChange as any)(open, legacyParam);\n      }\n    };\n\n    // ====================== Display Change ========================\n    const onDisplayValuesChange: BaseSelectProps['onDisplayValuesChange'] = (newValues, info) => {\n      const newRawValues = newValues.map(item => item.value);\n\n      if (info.type === 'clear') {\n        triggerChange(newRawValues, {}, 'selection');\n        return;\n      }\n\n      // TreeSelect only have multiple mode which means display change only has remove\n      if (info.values.length) {\n        onOptionSelect(info.values[0].value, { selected: false, source: 'selection' });\n      }\n    };\n    const {\n      treeNodeFilterProp,\n\n      // Data\n      loadData,\n      treeLoadedKeys,\n      onTreeLoad,\n\n      // Expanded\n      treeDefaultExpandAll,\n      treeExpandedKeys,\n      treeDefaultExpandedKeys,\n      onTreeExpand,\n\n      // Options\n      virtual,\n      listHeight,\n      listItemHeight,\n\n      // Tree\n      treeLine,\n      treeIcon,\n      showTreeIcon,\n      switcherIcon,\n      treeMotion,\n      customSlots,\n\n      dropdownMatchSelectWidth,\n      treeExpandAction,\n    } = toRefs(props);\n    useProvideLegacySelectContext(\n      toReactive({\n        checkable: mergedCheckable,\n\n        loadData,\n        treeLoadedKeys,\n        onTreeLoad,\n        checkedKeys: rawCheckedValues,\n        halfCheckedKeys: rawHalfCheckedValues,\n        treeDefaultExpandAll,\n        treeExpandedKeys,\n        treeDefaultExpandedKeys,\n        onTreeExpand,\n        treeIcon,\n        treeMotion,\n        showTreeIcon,\n        switcherIcon,\n        treeLine,\n        treeNodeFilterProp,\n        keyEntities,\n        customSlots,\n      } as unknown as LegacyContextProps),\n    );\n    useProvideSelectContext(\n      toReactive({\n        virtual,\n        listHeight,\n        listItemHeight,\n        treeData: filteredTreeData,\n        fieldNames: mergedFieldNames,\n        onSelect: onOptionSelect,\n        dropdownMatchSelectWidth,\n        treeExpandAction,\n      } as unknown as TreeSelectContextProps),\n    );\n    const selectRef = ref<BaseSelectRef>();\n    expose({\n      focus() {\n        selectRef.value?.focus();\n      },\n      blur() {\n        selectRef.value?.blur();\n      },\n      scrollTo(arg) {\n        selectRef.value?.scrollTo(arg);\n      },\n    } as BaseSelectRef);\n    return () => {\n      const restProps = omit(props, [\n        'id',\n        'prefixCls',\n        'customSlots',\n\n        // Value\n        'value',\n        'defaultValue',\n        'onChange',\n        'onSelect',\n        'onDeselect',\n\n        // Search\n        'searchValue',\n        'inputValue',\n        'onSearch',\n        'autoClearSearchValue',\n        'filterTreeNode',\n        'treeNodeFilterProp',\n\n        // Selector\n        'showCheckedStrategy',\n        'treeNodeLabelProp',\n\n        //  Mode\n        'multiple',\n        'treeCheckable',\n        'treeCheckStrictly',\n        'labelInValue',\n\n        // FieldNames\n        'fieldNames',\n\n        // Data\n        'treeDataSimpleMode',\n        'treeData',\n        'children',\n        'loadData',\n        'treeLoadedKeys',\n        'onTreeLoad',\n\n        // Expanded\n        'treeDefaultExpandAll',\n        'treeExpandedKeys',\n        'treeDefaultExpandedKeys',\n        'onTreeExpand',\n\n        // Options\n        'virtual',\n        'listHeight',\n        'listItemHeight',\n        'onDropdownVisibleChange',\n\n        // Tree\n        'treeLine',\n        'treeIcon',\n        'showTreeIcon',\n        'switcherIcon',\n        'treeMotion',\n      ]);\n      return (\n        <BaseSelect\n          v-slots={slots}\n          ref={selectRef}\n          {...attrs}\n          {...restProps}\n          // >>> MISC\n          id={mergedId}\n          prefixCls={props.prefixCls}\n          mode={mergedMultiple.value ? 'multiple' : undefined}\n          // >>> Display Value\n          displayValues={cachedDisplayValues.value}\n          onDisplayValuesChange={onDisplayValuesChange}\n          // >>> Search\n          searchValue={mergedSearchValue.value}\n          onSearch={onInternalSearch}\n          // >>> Options\n          OptionList={OptionList}\n          emptyOptions={!mergedTreeData.value.length}\n          onDropdownVisibleChange={onInternalDropdownVisibleChange}\n          tagRender={props.tagRender || slots.tagRender}\n          dropdownMatchSelectWidth={props.dropdownMatchSelectWidth ?? true}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-tree-select/TreeSelectContext.ts",
    "content": "import type { InjectionKey } from 'vue';\nimport { provide, inject } from 'vue';\nimport type { ExpandAction } from '../vc-tree/props';\nimport type { DefaultOptionType, InternalFieldName, OnInternalSelect } from './TreeSelect';\n\nexport interface TreeSelectContextProps {\n  virtual?: boolean;\n  dropdownMatchSelectWidth?: boolean | number;\n  listHeight: number;\n  listItemHeight: number;\n  treeData: DefaultOptionType[];\n  fieldNames: InternalFieldName;\n  onSelect: OnInternalSelect;\n  treeExpandAction?: ExpandAction;\n}\n\nconst TreeSelectContextPropsKey: InjectionKey<TreeSelectContextProps> = Symbol(\n  'TreeSelectContextPropsKey',\n);\n\nexport function useProvideSelectContext(props: TreeSelectContextProps) {\n  return provide(TreeSelectContextPropsKey, props);\n}\nexport default function useInjectSelectContext() {\n  return inject(TreeSelectContextPropsKey, {} as TreeSelectContextProps);\n}\n"
  },
  {
    "path": "components/vc-tree-select/hooks/useCache.ts",
    "content": "import type { Ref } from 'vue';\nimport { watch, toRaw, computed, shallowRef } from 'vue';\nimport type { LabeledValueType, RawValueType } from '../TreeSelect';\n\n/**\n * This function will try to call requestIdleCallback if available to save performance.\n * No need `getLabel` here since already fetch on `rawLabeledValue`.\n */\nexport default (values: Ref<LabeledValueType[]>): [Ref<LabeledValueType[]>] => {\n  const cacheRef = shallowRef({\n    valueLabels: new Map<RawValueType, any>(),\n  });\n  const mergedValues = shallowRef();\n  watch(\n    values,\n    () => {\n      mergedValues.value = toRaw(values.value);\n    },\n    { immediate: true },\n  );\n  const newFilledValues = computed(() => {\n    const { valueLabels } = cacheRef.value;\n    const valueLabelsCache = new Map<RawValueType, any>();\n\n    const filledValues = mergedValues.value.map(item => {\n      const { value } = item;\n      const mergedLabel = item.label ?? valueLabels.get(value);\n\n      // Save in cache\n      valueLabelsCache.set(value, mergedLabel);\n\n      return {\n        ...item,\n        label: mergedLabel,\n      };\n    });\n\n    cacheRef.value.valueLabels = valueLabelsCache;\n\n    return filledValues;\n  });\n  return [newFilledValues];\n};\n"
  },
  {
    "path": "components/vc-tree-select/hooks/useCheckedKeys.ts",
    "content": "import type { Key } from '../../_util/type';\nimport type { DataEntity } from '../../vc-tree/interface';\nimport { conductCheck } from '../../vc-tree/utils/conductUtil';\nimport type { LabeledValueType, RawValueType } from '../TreeSelect';\nimport type { Ref, ShallowRef } from 'vue';\nimport { shallowRef, watchEffect } from 'vue';\n\nexport default (\n  rawLabeledValues: ShallowRef<LabeledValueType[]>,\n  rawHalfCheckedValues: ShallowRef<LabeledValueType[]>,\n  treeConduction: Ref<boolean>,\n  keyEntities: Ref<Record<Key, DataEntity>>,\n  maxLevel: Ref<number>,\n  levelEntities: ShallowRef<Map<number, Set<DataEntity>>>,\n) => {\n  const newRawCheckedValues = shallowRef<RawValueType[]>([]);\n  const newRawHalfCheckedValues = shallowRef<RawValueType[]>([]);\n\n  watchEffect(() => {\n    let checkedKeys: RawValueType[] = rawLabeledValues.value.map(({ value }) => value);\n    let halfCheckedKeys: RawValueType[] = rawHalfCheckedValues.value.map(({ value }) => value);\n\n    const missingValues = checkedKeys.filter(key => !keyEntities.value[key]);\n\n    if (treeConduction.value) {\n      ({ checkedKeys, halfCheckedKeys } = conductCheck(\n        checkedKeys,\n        true,\n        keyEntities.value,\n        maxLevel.value,\n        levelEntities.value,\n      ));\n    }\n    newRawCheckedValues.value = Array.from(new Set([...missingValues, ...checkedKeys]));\n    newRawHalfCheckedValues.value = halfCheckedKeys;\n  });\n  return [newRawCheckedValues, newRawHalfCheckedValues];\n};\n"
  },
  {
    "path": "components/vc-tree-select/hooks/useDataEntities.ts",
    "content": "import { convertDataToEntities } from '../../vc-tree/utils/treeUtil';\nimport type { DataEntity } from '../../vc-tree/interface';\nimport type { FieldNames, RawValueType } from '../TreeSelect';\n\nimport { isNil } from '../utils/valueUtil';\nimport type { Ref, ShallowRef } from 'vue';\nimport { shallowRef, watchEffect } from 'vue';\nimport { warning } from '../../vc-util/warning';\n\nexport default (treeData: ShallowRef<any>, fieldNames: Ref<FieldNames>) => {\n  const valueEntities = shallowRef(new Map<RawValueType, DataEntity>());\n  const keyEntities = shallowRef<Record<string, DataEntity>>({});\n  watchEffect(() => {\n    const fieldNamesValue = fieldNames.value;\n    const collection = convertDataToEntities(treeData.value, {\n      fieldNames: fieldNamesValue,\n      initWrapper: wrapper => ({\n        ...wrapper,\n        valueEntities: new Map(),\n      }),\n      processEntity: (entity, wrapper: any) => {\n        const val = entity.node[fieldNamesValue.value];\n\n        // Check if exist same value\n        if (process.env.NODE_ENV !== 'production') {\n          const key = entity.node.key;\n\n          warning(!isNil(val), 'TreeNode `value` is invalidate: undefined');\n          warning(!wrapper.valueEntities.has(val), `Same \\`value\\` exist in the tree: ${val}`);\n          warning(\n            !key || String(key) === String(val),\n            `\\`key\\` or \\`value\\` with TreeNode must be the same or you can remove one of them. key: ${key}, value: ${val}.`,\n          );\n        }\n        wrapper.valueEntities.set(val, entity);\n      },\n    }) as any;\n    valueEntities.value = collection.valueEntities;\n    keyEntities.value = collection.keyEntities;\n  });\n  return { valueEntities, keyEntities };\n};\n"
  },
  {
    "path": "components/vc-tree-select/hooks/useFilterTreeData.ts",
    "content": "import type { Ref, ShallowRef } from 'vue';\nimport { computed } from 'vue';\nimport type { DefaultOptionType, InternalFieldName, TreeSelectProps } from '../TreeSelect';\nimport { fillLegacyProps } from '../utils/legacyUtil';\n\ntype GetFuncType<T> = T extends boolean ? never : T;\ntype FilterFn = GetFuncType<TreeSelectProps['filterTreeNode']>;\n\nexport default (\n  treeData: ShallowRef<DefaultOptionType[]>,\n  searchValue: Ref<string>,\n  {\n    treeNodeFilterProp,\n    filterTreeNode,\n    fieldNames,\n  }: {\n    fieldNames: Ref<InternalFieldName>;\n    treeNodeFilterProp: Ref<string>;\n    filterTreeNode: Ref<TreeSelectProps['filterTreeNode']>;\n  },\n) => {\n  return computed(() => {\n    const { children: fieldChildren } = fieldNames.value;\n    const searchValueVal = searchValue.value;\n    const treeNodeFilterPropValue = treeNodeFilterProp?.value;\n    if (!searchValueVal || filterTreeNode.value === false) {\n      return treeData.value;\n    }\n\n    let filterOptionFunc: FilterFn;\n    if (typeof filterTreeNode.value === 'function') {\n      filterOptionFunc = filterTreeNode.value;\n    } else {\n      const upperStr = searchValueVal.toUpperCase();\n      filterOptionFunc = (_, dataNode) => {\n        const value = dataNode[treeNodeFilterPropValue];\n\n        return String(value).toUpperCase().includes(upperStr);\n      };\n    }\n\n    function dig(list: DefaultOptionType[], keepAll = false) {\n      const res = [];\n      for (let index = 0, len = list.length; index < len; index++) {\n        const dataNode = list[index];\n        const children = dataNode[fieldChildren];\n\n        const match = keepAll || filterOptionFunc(searchValueVal, fillLegacyProps(dataNode));\n        const childList = dig(children || [], match);\n\n        if (match || childList.length) {\n          res.push({\n            ...dataNode,\n            [fieldChildren]: childList,\n          });\n        }\n      }\n      return res;\n    }\n\n    return dig(treeData.value);\n  });\n};\n"
  },
  {
    "path": "components/vc-tree-select/hooks/useTreeData.ts",
    "content": "import type { Ref, ShallowRef } from 'vue';\nimport { shallowRef, watch, toRaw } from 'vue';\nimport type { DataNode, SimpleModeConfig } from '../interface';\nimport { convertChildrenToData } from '../utils/legacyUtil';\nimport type { DefaultOptionType } from '../TreeSelect';\nimport type { VueNode } from '../../_util/type';\n\nfunction parseSimpleTreeData(\n  treeData: DataNode[],\n  { id, pId, rootPId }: SimpleModeConfig,\n): DataNode[] {\n  const keyNodes = {};\n  const rootNodeList = [];\n\n  // Fill in the map\n  const nodeList = treeData.map(node => {\n    const clone = { ...node };\n    const key = clone[id];\n    keyNodes[key] = clone;\n    clone.key = clone.key || key;\n    return clone;\n  });\n\n  // Connect tree\n  nodeList.forEach(node => {\n    const parentKey = node[pId];\n    const parent = keyNodes[parentKey];\n\n    // Fill parent\n    if (parent) {\n      parent.children = parent.children || [];\n      parent.children.push(node);\n    }\n\n    // Fill root tree node\n    if (parentKey === rootPId || (!parent && rootPId === null)) {\n      rootNodeList.push(node);\n    }\n  });\n\n  return rootNodeList;\n}\n\n/**\n * Convert `treeData` or `children` into formatted `treeData`.\n * Will not re-calculate if `treeData` or `children` not change.\n */\nexport default function useTreeData(\n  treeData: Ref<DataNode[]>,\n  children: Ref<VueNode[]>,\n  simpleMode: Ref<boolean | SimpleModeConfig>,\n): ShallowRef<DefaultOptionType[]> {\n  const mergedTreeData = shallowRef<DefaultOptionType[]>();\n  watch(\n    [simpleMode, treeData, children],\n    () => {\n      const simpleModeValue = simpleMode.value;\n      if (treeData.value) {\n        mergedTreeData.value = simpleMode.value\n          ? parseSimpleTreeData(toRaw(treeData.value), {\n              id: 'id',\n              pId: 'pId',\n              rootPId: null,\n              ...(simpleModeValue !== true ? simpleModeValue : {}),\n            })\n          : toRaw(treeData.value).slice();\n      } else {\n        mergedTreeData.value = convertChildrenToData(toRaw(children.value));\n      }\n    },\n    { immediate: true, deep: true },\n  );\n  return mergedTreeData;\n}\n"
  },
  {
    "path": "components/vc-tree-select/index.tsx",
    "content": "// base rc-tree-select@5.4.0\nimport type { TreeSelectProps } from './TreeSelect';\nimport TreeSelect, { treeSelectProps } from './TreeSelect';\nimport TreeNode from './TreeNode';\nimport { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from './utils/strategyUtil';\n\nexport { TreeNode, SHOW_ALL, SHOW_CHILD, SHOW_PARENT, treeSelectProps };\nexport type { TreeSelectProps };\n\nexport default TreeSelect;\n"
  },
  {
    "path": "components/vc-tree-select/interface.ts",
    "content": "export type SelectSource = 'option' | 'selection' | 'input' | 'clear';\n\nexport type Key = string | number;\n\nexport type RawValueType = string | number;\n\nexport interface LabelValueType {\n  key?: Key;\n  value?: RawValueType;\n  label?: any;\n  /** Only works on `treeCheckStrictly` */\n  halfChecked?: boolean;\n}\n\nexport type DefaultValueType = RawValueType | RawValueType[] | LabelValueType | LabelValueType[];\n\nexport interface DataNode {\n  value?: RawValueType;\n  title?: any;\n  label?: any;\n  key?: Key;\n  disabled?: boolean;\n  disableCheckbox?: boolean;\n  checkable?: boolean;\n  selectable?: boolean;\n  children?: DataNode[];\n\n  /** Customize data info */\n  [prop: string]: any;\n}\n\nexport interface InternalDataEntity {\n  key: Key;\n  value: RawValueType;\n  title?: any;\n  checkable: boolean;\n  disableCheckbox: boolean;\n  disabled: boolean;\n  selectable: boolean;\n  isLeaf: boolean;\n  children?: InternalDataEntity[];\n\n  /** Origin DataNode */\n  node: DataNode;\n\n  dataRef: DataNode;\n\n  slots?: Record<string, string>; // 兼容 V2\n}\n\nexport interface LegacyDataNode extends DataNode {\n  props: any;\n}\n\nexport interface TreeDataNode extends DataNode {\n  key: Key;\n  children?: TreeDataNode[];\n}\n\nexport interface FlattenDataNode {\n  data: InternalDataEntity;\n  key: Key;\n  value: RawValueType;\n  level: number;\n  parent?: FlattenDataNode;\n}\n\nexport interface SimpleModeConfig {\n  id?: Key;\n  pId?: Key;\n  rootPId?: Key;\n}\n\n/** @deprecated This is only used for legacy compatible. Not works on new code. */\nexport interface LegacyCheckedNode {\n  pos: string;\n  node: any;\n  children?: LegacyCheckedNode[];\n}\n\nexport interface ChangeEventExtra {\n  /** @deprecated Please save prev value by control logic instead */\n  preValue: LabelValueType[];\n  triggerValue: RawValueType;\n  /** @deprecated Use `onSelect` or `onDeselect` instead. */\n  selected?: boolean;\n  /** @deprecated Use `onSelect` or `onDeselect` instead. */\n  checked?: boolean;\n\n  // Not sure if exist user still use this. We have to keep but not recommend user to use\n  /** @deprecated This prop not work as react node anymore. */\n  triggerNode: any;\n  /** @deprecated This prop not work as react node anymore. */\n  allCheckedNodes: LegacyCheckedNode[];\n}\n\nexport interface FieldNames {\n  value?: string;\n  label?: string;\n  children?: string;\n}\n"
  },
  {
    "path": "components/vc-tree-select/utils/legacyUtil.tsx",
    "content": "import { camelize, filterEmpty } from '../../_util/props-util';\nimport { warning } from '../../vc-util/warning';\nimport type { DataNode, ChangeEventExtra, RawValueType, LegacyCheckedNode } from '../interface';\nimport TreeNode from '../TreeNode';\nimport type { VueNode } from '../../_util/type';\nimport type { DefaultOptionType, FieldNames } from '../TreeSelect';\n\nfunction isTreeSelectNode(node: any) {\n  return node && node.type && (node.type as any).isTreeSelectNode;\n}\nexport function convertChildrenToData(rootNodes: VueNode[]): DataNode[] {\n  function dig(treeNodes: any[] = []): DataNode[] {\n    return filterEmpty(treeNodes).map(treeNode => {\n      // Filter invalidate node\n      if (!isTreeSelectNode(treeNode)) {\n        warning(!treeNode, 'TreeSelect/TreeSelectNode can only accept TreeSelectNode as children.');\n        return null;\n      }\n      const slots = (treeNode.children as any) || {};\n      const key = treeNode.key as string | number;\n      const props: any = {};\n      for (const [k, v] of Object.entries(treeNode.props)) {\n        props[camelize(k)] = v;\n      }\n      const { isLeaf, checkable, selectable, disabled, disableCheckbox } = props;\n      // 默认值为 undefined\n      const newProps = {\n        isLeaf: isLeaf || isLeaf === '' || undefined,\n        checkable: checkable || checkable === '' || undefined,\n        selectable: selectable || selectable === '' || undefined,\n        disabled: disabled || disabled === '' || undefined,\n        disableCheckbox: disableCheckbox || disableCheckbox === '' || undefined,\n      };\n      const slotsProps = { ...props, ...newProps };\n      const {\n        title = slots.title?.(slotsProps),\n        switcherIcon = slots.switcherIcon?.(slotsProps),\n        ...rest\n      } = props;\n      const children = slots.default?.();\n      const dataNode: DataNode = {\n        ...rest,\n        title,\n        switcherIcon,\n        key,\n        isLeaf,\n        ...newProps,\n      };\n\n      const parsedChildren = dig(children);\n      if (parsedChildren.length) {\n        dataNode.children = parsedChildren;\n      }\n\n      return dataNode;\n    });\n  }\n\n  return dig(rootNodes as any[]);\n}\n\nexport function fillLegacyProps(dataNode: DataNode): any {\n  // Skip if not dataNode exist\n  if (!dataNode) {\n    return dataNode;\n  }\n\n  const cloneNode = { ...dataNode };\n\n  if (!('props' in cloneNode)) {\n    Object.defineProperty(cloneNode, 'props', {\n      get() {\n        warning(\n          false,\n          'New `vc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.',\n        );\n        return cloneNode;\n      },\n    });\n  }\n\n  return cloneNode;\n}\n\nexport function fillAdditionalInfo(\n  extra: ChangeEventExtra,\n  triggerValue: RawValueType,\n  checkedValues: RawValueType[],\n  treeData: DefaultOptionType[],\n  showPosition: boolean,\n  fieldNames: FieldNames,\n) {\n  let triggerNode = null;\n  let nodeList: LegacyCheckedNode[] = null;\n\n  function generateMap() {\n    function dig(list: DefaultOptionType[], level = '0', parentIncluded = false) {\n      return list\n        .map((option, index) => {\n          const pos = `${level}-${index}`;\n          const value = option[fieldNames.value];\n          const included = checkedValues.includes(value);\n          const children = dig(option[fieldNames.children] || [], pos, included);\n          const node = (\n            <TreeNode {...(option as Required<DefaultOptionType>)}>\n              {children.map(child => child.node)}\n            </TreeNode>\n          );\n\n          // Link with trigger node\n          if (triggerValue === value) {\n            triggerNode = node;\n          }\n\n          if (included) {\n            const checkedNode: LegacyCheckedNode = {\n              pos,\n              node,\n              children,\n            };\n\n            if (!parentIncluded) {\n              nodeList.push(checkedNode);\n            }\n\n            return checkedNode;\n          }\n          return null;\n        })\n        .filter(node => node);\n    }\n\n    if (!nodeList) {\n      nodeList = [];\n\n      dig(treeData);\n\n      // Sort to keep the checked node length\n      nodeList.sort(\n        (\n          {\n            node: {\n              props: { value: val1 },\n            },\n          },\n          {\n            node: {\n              props: { value: val2 },\n            },\n          },\n        ) => {\n          const index1 = checkedValues.indexOf(val1);\n          const index2 = checkedValues.indexOf(val2);\n          return index1 - index2;\n        },\n      );\n    }\n  }\n\n  Object.defineProperty(extra, 'triggerNode', {\n    get() {\n      warning(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');\n      generateMap();\n\n      return triggerNode;\n    },\n  });\n  Object.defineProperty(extra, 'allCheckedNodes', {\n    get() {\n      warning(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');\n      generateMap();\n\n      if (showPosition) {\n        return nodeList;\n      }\n\n      return nodeList.map(({ node }) => node);\n    },\n  });\n}\n"
  },
  {
    "path": "components/vc-tree-select/utils/strategyUtil.ts",
    "content": "import type { DataEntity } from '../../vc-tree/interface';\nimport type { InternalFieldName } from '../TreeSelect';\nimport type { RawValueType, Key } from '../interface';\nimport { isCheckDisabled } from './valueUtil';\n\nexport const SHOW_ALL = 'SHOW_ALL';\nexport const SHOW_PARENT = 'SHOW_PARENT';\nexport const SHOW_CHILD = 'SHOW_CHILD';\n\nexport type CheckedStrategy = typeof SHOW_ALL | typeof SHOW_PARENT | typeof SHOW_CHILD;\n\nexport function formatStrategyValues(\n  values: Key[],\n  strategy: CheckedStrategy,\n  keyEntities: Record<Key, DataEntity>,\n  fieldNames: InternalFieldName,\n): RawValueType[] {\n  const valueSet = new Set(values);\n\n  if (strategy === SHOW_CHILD) {\n    return values.filter(key => {\n      const entity = keyEntities[key];\n\n      if (\n        entity &&\n        entity.children &&\n        entity.children.some(({ node }) => valueSet.has(node[fieldNames.value])) &&\n        entity.children.every(\n          ({ node }) => isCheckDisabled(node) || valueSet.has(node[fieldNames.value]),\n        )\n      ) {\n        return false;\n      }\n      return true;\n    });\n  }\n  if (strategy === SHOW_PARENT) {\n    return values.filter(key => {\n      const entity = keyEntities[key];\n      const parent = entity ? entity.parent : null;\n      if (parent && !isCheckDisabled(parent.node) && valueSet.has(parent.key)) {\n        return false;\n      }\n      return true;\n    });\n  }\n  return values;\n}\n"
  },
  {
    "path": "components/vc-tree-select/utils/valueUtil.ts",
    "content": "import type { Key, DataNode, FieldNames } from '../interface';\nimport type { DefaultOptionType, InternalFieldName } from '../TreeSelect';\n\nexport function toArray<T>(value: T | T[]): T[] {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  return value !== undefined ? [value] : [];\n}\n\nexport function fillFieldNames(fieldNames?: FieldNames) {\n  const { label, value, children } = fieldNames || {};\n\n  const mergedValue = value || 'value';\n\n  return {\n    _title: label ? [label] : ['title', 'label'],\n    value: mergedValue,\n    key: mergedValue,\n    children: children || 'children',\n  };\n}\n\nexport function isCheckDisabled(node: DataNode) {\n  return node.disabled || node.disableCheckbox || node.checkable === false;\n}\n\n/** Loop fetch all the keys exist in the tree */\nexport function getAllKeys(treeData: DefaultOptionType[], fieldNames: InternalFieldName) {\n  const keys: Key[] = [];\n\n  function dig(list: DefaultOptionType[]) {\n    list.forEach(item => {\n      keys.push(item[fieldNames.value]);\n\n      const children = item[fieldNames.children];\n      if (children) {\n        dig(children);\n      }\n    });\n  }\n\n  dig(treeData);\n\n  return keys;\n}\n\nexport function isNil(val: any) {\n  return val === null || val === undefined;\n}\n"
  },
  {
    "path": "components/vc-tree-select/utils/warningPropsUtil.ts",
    "content": "import { warning } from '../../vc-util/warning';\nimport type { TreeSelectProps } from '../TreeSelect';\nimport { toArray } from './valueUtil';\n\nfunction warningProps(props: TreeSelectProps & { searchPlaceholder?: string }) {\n  const { searchPlaceholder, treeCheckStrictly, treeCheckable, labelInValue, value, multiple } =\n    props;\n\n  warning(\n    !searchPlaceholder,\n    '`searchPlaceholder` has been removed, please use `placeholder` instead',\n  );\n\n  if (treeCheckStrictly && labelInValue === false) {\n    warning(false, '`treeCheckStrictly` will force set `labelInValue` to `true`.');\n  }\n\n  if (labelInValue || treeCheckStrictly) {\n    warning(\n      toArray(value).every(val => val && typeof val === 'object' && 'value' in val),\n      'Invalid prop `value` supplied to `TreeSelect`. You should use { label: string, value: string | number } or [{ label: string, value: string | number }] instead.',\n    );\n  }\n\n  if (treeCheckStrictly || multiple || treeCheckable) {\n    warning(\n      !value || Array.isArray(value),\n      '`value` should be an array when `TreeSelect` is checkable or multiple.',\n    );\n  } else {\n    warning(!Array.isArray(value), '`value` should not be array when `TreeSelect` is single mode.');\n  }\n}\n\nexport default warningProps;\n"
  },
  {
    "path": "components/vc-trigger/Popup/Mask.tsx",
    "content": "import { Transition } from 'vue';\nimport type { TransitionNameType, AnimationType } from '../interface';\nimport { getMotion } from '../utils/motionUtil';\n\nexport interface MaskProps {\n  prefixCls: string;\n  visible?: boolean;\n  zIndex?: number;\n  mask?: boolean;\n  maskAnimation?: AnimationType;\n  maskTransitionName?: TransitionNameType;\n}\n\nexport default function Mask(props: MaskProps) {\n  const { prefixCls, visible, zIndex, mask, maskAnimation, maskTransitionName } = props;\n\n  if (!mask) {\n    return null;\n  }\n\n  let motion = {};\n\n  if (maskTransitionName || maskAnimation) {\n    motion = getMotion({\n      prefixCls,\n      transitionName: maskTransitionName,\n      animation: maskAnimation,\n    });\n  }\n\n  return (\n    <Transition appear {...motion}>\n      <div v-show={visible} style={{ zIndex }} class={`${prefixCls}-mask`} />\n    </Transition>\n  );\n}\nMask.displayName = 'Mask';\n"
  },
  {
    "path": "components/vc-trigger/Popup/MobilePopupInner.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent, ref, Transition } from 'vue';\nimport { flattenChildren } from '../../_util/props-util';\nimport classNames from '../../_util/classNames';\nimport type { MobilePopupProps } from './interface';\nimport { mobileProps } from './interface';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'MobilePopupInner',\n  inheritAttrs: false,\n  props: mobileProps,\n  emits: ['mouseenter', 'mouseleave', 'mousedown', 'touchstart', 'align'],\n  setup(props, { expose, slots }) {\n    const elementRef = ref<HTMLDivElement>();\n\n    expose({\n      forceAlign: () => {},\n      getElement: () => elementRef.value,\n    });\n\n    return () => {\n      const {\n        zIndex,\n        visible,\n        prefixCls,\n        mobile: { popupClassName, popupStyle, popupMotion = {}, popupRender } = {},\n      } = props as MobilePopupProps;\n      // ======================== Render ========================\n      const mergedStyle: CSSProperties = {\n        zIndex,\n        ...popupStyle,\n      };\n\n      let childNode: any = flattenChildren(slots.default?.());\n\n      // Wrapper when multiple children\n      if (childNode.length > 1) {\n        childNode = <div class={`${prefixCls}-content`}>{childNode}</div>;\n      }\n\n      // Mobile support additional render\n      if (popupRender) {\n        childNode = popupRender(childNode);\n      }\n\n      const mergedClassName = classNames(prefixCls, popupClassName);\n      return (\n        <Transition ref={elementRef} {...popupMotion}>\n          {visible ? (\n            <div class={mergedClassName} style={mergedStyle}>\n              {childNode}\n            </div>\n          ) : null}\n        </Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-trigger/Popup/PopupInner.tsx",
    "content": "import type { AlignType } from '../interface';\nimport useVisibleStatus from './useVisibleStatus';\nimport useStretchStyle from './useStretchStyle';\nimport type { CSSProperties } from 'vue';\nimport {\n  computed,\n  defineComponent,\n  shallowRef,\n  toRef,\n  Transition,\n  watch,\n  withModifiers,\n} from 'vue';\nimport type { RefAlign } from '../../vc-align/Align';\nimport Align from '../../vc-align/Align';\nimport { getMotion } from '../utils/motionUtil';\nimport { flattenChildren } from '../../_util/props-util';\nimport classNames from '../../_util/classNames';\nimport type { PopupInnerProps } from './interface';\nimport { innerProps } from './interface';\nimport { getTransitionProps } from '../../_util/transition';\nimport supportsPassive from '../../_util/supportsPassive';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PopupInner',\n  inheritAttrs: false,\n  props: innerProps,\n  emits: ['mouseenter', 'mouseleave', 'mousedown', 'touchstart', 'align'],\n  setup(props, { expose, attrs, slots }) {\n    const alignRef = shallowRef<RefAlign>();\n    const elementRef = shallowRef<HTMLDivElement>();\n    const alignedClassName = shallowRef<string>();\n    // ======================= Measure ========================\n    const [stretchStyle, measureStretchStyle] = useStretchStyle(toRef(props, 'stretch'));\n\n    const doMeasure = () => {\n      if (props.stretch) {\n        measureStretchStyle(props.getRootDomNode());\n      }\n    };\n    const visible = shallowRef(false);\n    let timeoutId: any;\n    watch(\n      () => props.visible,\n      val => {\n        clearTimeout(timeoutId);\n        if (val) {\n          timeoutId = setTimeout(() => {\n            visible.value = props.visible;\n          });\n        } else {\n          visible.value = false;\n        }\n      },\n      { immediate: true },\n    );\n\n    // ======================== Status ========================\n    const [status, goNextStatus] = useVisibleStatus(visible, doMeasure);\n\n    // ======================== Aligns ========================\n    const prepareResolveRef = shallowRef<(value?: unknown) => void>();\n\n    // `target` on `rc-align` can accept as a function to get the bind element or a point.\n    // ref: https://www.npmjs.com/package/rc-align\n    const getAlignTarget = () => {\n      if (props.point) {\n        return props.point;\n      }\n      return props.getRootDomNode;\n    };\n\n    const forceAlign = () => {\n      alignRef.value?.forceAlign();\n    };\n\n    const onInternalAlign = (popupDomNode: HTMLElement, matchAlign: AlignType) => {\n      const nextAlignedClassName = props.getClassNameFromAlign(matchAlign);\n      const preAlignedClassName = alignedClassName.value;\n      if (alignedClassName.value !== nextAlignedClassName) {\n        alignedClassName.value = nextAlignedClassName;\n      }\n      if (status.value === 'align') {\n        // Repeat until not more align needed\n        if (preAlignedClassName !== nextAlignedClassName) {\n          Promise.resolve().then(() => {\n            forceAlign();\n          });\n        } else {\n          goNextStatus(() => {\n            prepareResolveRef.value?.();\n          });\n        }\n\n        props.onAlign?.(popupDomNode, matchAlign);\n      }\n    };\n\n    // ======================== Motion ========================\n    const motion = computed(() => {\n      const m = typeof props.animation === 'object' ? props.animation : getMotion(props as any);\n      ['onAfterEnter', 'onAfterLeave'].forEach(eventName => {\n        const originFn = m[eventName];\n        m[eventName] = node => {\n          goNextStatus();\n          // 结束后，强制 stable\n          status.value = 'stable';\n          originFn?.(node);\n        };\n      });\n      return m;\n    });\n\n    const onShowPrepare = () => {\n      return new Promise(resolve => {\n        prepareResolveRef.value = resolve;\n      });\n    };\n\n    watch(\n      [motion, status],\n      () => {\n        if (!motion.value && status.value === 'motion') {\n          goNextStatus();\n        }\n      },\n      { immediate: true },\n    );\n\n    expose({\n      forceAlign,\n      getElement: () => {\n        return (elementRef.value as any).$el || elementRef.value;\n      },\n    });\n    const alignDisabled = computed(() => {\n      if ((props.align as any)?.points && (status.value === 'align' || status.value === 'stable')) {\n        return false;\n      }\n      return true;\n    });\n    return () => {\n      const {\n        zIndex,\n        align,\n        prefixCls,\n        destroyPopupOnHide,\n        onMouseenter,\n        onMouseleave,\n        onTouchstart = () => {},\n        onMousedown,\n      } = props as PopupInnerProps;\n      const statusValue = status.value;\n      // ======================== Render ========================\n      const mergedStyle: CSSProperties[] = [\n        {\n          ...stretchStyle.value,\n          zIndex,\n          opacity:\n            statusValue === 'motion' || statusValue === 'stable' || !visible.value ? null : 0,\n          // pointerEvents: statusValue === 'stable' ? null : 'none',\n          pointerEvents: !visible.value && statusValue !== 'stable' ? 'none' : null,\n        },\n        attrs.style as CSSProperties,\n      ];\n\n      let childNode: any = flattenChildren(slots.default?.({ visible: props.visible }));\n\n      // Wrapper when multiple children\n      if (childNode.length > 1) {\n        childNode = <div class={`${prefixCls}-content`}>{childNode}</div>;\n      }\n\n      const mergedClassName = classNames(\n        prefixCls,\n        attrs.class,\n        alignedClassName.value,\n        !props.arrow && `${prefixCls}-arrow-hidden`,\n      );\n      const hasAnimate = visible.value || !props.visible;\n      const transitionProps = hasAnimate ? getTransitionProps(motion.value.name, motion.value) : {};\n\n      return (\n        <Transition\n          ref={elementRef}\n          {...transitionProps}\n          onBeforeEnter={onShowPrepare}\n          v-slots={{\n            default: () => {\n              return !destroyPopupOnHide || props.visible ? (\n                <Align\n                  v-show={visible.value}\n                  target={getAlignTarget()}\n                  key=\"popup\"\n                  ref={alignRef}\n                  monitorWindowResize\n                  disabled={alignDisabled.value}\n                  align={align as any}\n                  onAlign={onInternalAlign}\n                  v-slots={{\n                    default: () => (\n                      <div\n                        class={mergedClassName}\n                        onMouseenter={onMouseenter}\n                        onMouseleave={onMouseleave}\n                        onMousedown={withModifiers(onMousedown, ['capture'] as any)}\n                        {...{\n                          [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: withModifiers(\n                            onTouchstart,\n                            ['capture'] as any,\n                          ),\n                        }}\n                        style={mergedStyle}\n                      >\n                        {childNode}\n                      </div>\n                    ),\n                  }}\n                ></Align>\n              ) : null;\n            },\n          }}\n        ></Transition>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-trigger/Popup/index.tsx",
    "content": "import { defineComponent, shallowRef, watch } from 'vue';\nimport { popupProps } from './interface';\nimport Mask from './Mask';\nimport MobilePopupInner from './MobilePopupInner';\nimport PopupInner from './PopupInner';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Popup',\n  inheritAttrs: false,\n  props: popupProps,\n  setup(props, { attrs, slots, expose }) {\n    const innerVisible = shallowRef(false);\n    const inMobile = shallowRef(false);\n    const popupRef = shallowRef();\n    const rootRef = shallowRef<HTMLElement>();\n    watch(\n      [() => props.visible, () => props.mobile],\n      () => {\n        innerVisible.value = props.visible;\n        if (props.visible && props.mobile) {\n          inMobile.value = true;\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n    expose({\n      forceAlign: () => {\n        popupRef.value?.forceAlign();\n      },\n      getElement: () => {\n        return popupRef.value?.getElement();\n      },\n    });\n    return () => {\n      const cloneProps = { ...props, ...attrs, visible: innerVisible.value };\n      const popupNode = inMobile.value ? (\n        <MobilePopupInner\n          {...cloneProps}\n          mobile={props.mobile}\n          ref={popupRef}\n          v-slots={{ default: slots.default }}\n        ></MobilePopupInner>\n      ) : (\n        <PopupInner {...cloneProps} ref={popupRef} v-slots={{ default: slots.default }} />\n      );\n\n      return (\n        <div ref={rootRef}>\n          <Mask {...cloneProps} />\n          {popupNode}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-trigger/Popup/interface.ts",
    "content": "import type { Point, AlignType, StretchType, MobileConfig } from '../interface';\nimport type { ExtractPropTypes, PropType } from 'vue';\n\nexport const innerProps = {\n  visible: Boolean,\n\n  prefixCls: String,\n  zIndex: Number,\n\n  destroyPopupOnHide: Boolean,\n  forceRender: Boolean,\n\n  arrow: { type: Boolean, default: true },\n\n  // Legacy Motion\n  animation: [String, Object],\n  transitionName: String,\n\n  // Measure\n  stretch: { type: String as PropType<StretchType> },\n\n  // Align\n  align: { type: Object as PropType<AlignType> },\n  point: { type: Object as PropType<Point> },\n  getRootDomNode: { type: Function as PropType<() => HTMLElement> },\n  getClassNameFromAlign: { type: Function as PropType<(align: AlignType) => string> },\n  onAlign: {\n    type: Function as PropType<(popupDomNode: HTMLElement, align: AlignType) => void>,\n  },\n  onMouseenter: { type: Function as PropType<(align: MouseEvent) => void> },\n  onMouseleave: { type: Function as PropType<(align: MouseEvent) => void> },\n  onMousedown: { type: Function as PropType<(align: MouseEvent) => void> },\n  onTouchstart: { type: Function as PropType<(align: MouseEvent) => void> },\n};\nexport type PopupInnerProps = Partial<ExtractPropTypes<typeof innerProps>> & {\n  align?: AlignType;\n};\n\nexport const mobileProps = {\n  ...innerProps,\n  mobile: { type: Object as PropType<MobileConfig> },\n};\n\nexport type MobilePopupProps = Partial<ExtractPropTypes<typeof mobileProps>> & {\n  align?: AlignType;\n  mobile: MobileConfig;\n};\n\nexport const popupProps = {\n  ...innerProps,\n  mask: Boolean,\n  mobile: { type: Object as PropType<MobileConfig> },\n  maskAnimation: String,\n  maskTransitionName: String,\n};\n\nexport type PopupProps = Partial<ExtractPropTypes<typeof popupProps>> & {\n  align?: AlignType;\n  mobile: MobileConfig;\n};\n"
  },
  {
    "path": "components/vc-trigger/Popup/useStretchStyle.ts",
    "content": "import type { ComputedRef, CSSProperties, Ref } from 'vue';\nimport { computed, shallowRef } from 'vue';\nimport type { StretchType } from '../interface';\n\nexport default (\n  stretch?: Ref<StretchType>,\n): [ComputedRef<CSSProperties>, (element: HTMLElement) => void] => {\n  const targetSize = shallowRef({ width: 0, height: 0 });\n\n  function measureStretch(element: HTMLElement) {\n    targetSize.value = {\n      width: element.offsetWidth,\n      height: element.offsetHeight,\n    };\n  }\n\n  // Merge stretch style\n  const style = computed(() => {\n    const sizeStyle: CSSProperties = {};\n\n    if (stretch.value) {\n      const { width, height } = targetSize.value;\n\n      // Stretch with target\n      if (stretch.value.indexOf('height') !== -1 && height) {\n        sizeStyle.height = `${height}px`;\n      } else if (stretch.value.indexOf('minHeight') !== -1 && height) {\n        sizeStyle.minHeight = `${height}px`;\n      }\n      if (stretch.value.indexOf('width') !== -1 && width) {\n        sizeStyle.width = `${width}px`;\n      } else if (stretch.value.indexOf('minWidth') !== -1 && width) {\n        sizeStyle.minWidth = `${width}px`;\n      }\n    }\n\n    return sizeStyle;\n  });\n\n  return [style, measureStretch];\n};\n"
  },
  {
    "path": "components/vc-trigger/Popup/useVisibleStatus.ts",
    "content": "import type { Ref } from 'vue';\nimport { onBeforeUnmount, shallowRef, watch, onMounted } from 'vue';\nimport raf from '../../_util/raf';\n\n/**\n * Popup should follow the steps for each component work correctly:\n * measure - check for the value stretch size\n * align - let component align the position\n * aligned - re-align again in case additional className changed the size\n * afterAlign - choice next step is trigger motion or finished\n * beforeMotion - should reset motion to invisible so that CSSMotion can do normal motion\n * motion - play the motion\n * stable - everything is done\n */\ntype PopupStatus = null | 'measure' | 'align' | 'aligned' | 'motion' | 'stable';\n\ntype Func = () => void;\n\nconst StatusQueue: PopupStatus[] = ['measure', 'align', null, 'motion'];\n\nexport default (\n  visible: Ref<boolean>,\n  doMeasure: Func,\n): [Ref<PopupStatus>, (callback?: () => void) => void] => {\n  const status = shallowRef<PopupStatus>(null);\n  const rafRef = shallowRef<number>();\n  const destroyRef = shallowRef(false);\n  function setStatus(nextStatus: PopupStatus) {\n    if (!destroyRef.value) {\n      status.value = nextStatus;\n    }\n  }\n\n  function cancelRaf() {\n    raf.cancel(rafRef.value);\n  }\n\n  function goNextStatus(callback?: () => void) {\n    cancelRaf();\n    rafRef.value = raf(() => {\n      // Only align should be manually trigger\n      let newStatus = status.value;\n      switch (status.value) {\n        case 'align':\n          newStatus = 'motion';\n          break;\n        case 'motion':\n          newStatus = 'stable';\n          break;\n        default:\n      }\n      setStatus(newStatus);\n\n      callback?.();\n    });\n  }\n\n  watch(\n    visible,\n    () => {\n      setStatus('measure');\n    },\n    { immediate: true, flush: 'post' },\n  );\n  onMounted(() => {\n    // Go next status\n    watch(\n      status,\n      () => {\n        switch (status.value) {\n          case 'measure':\n            doMeasure();\n            break;\n          default:\n        }\n\n        if (status.value) {\n          rafRef.value = raf(async () => {\n            const index = StatusQueue.indexOf(status.value);\n            const nextStatus = StatusQueue[index + 1];\n            if (nextStatus && index !== -1) {\n              setStatus(nextStatus);\n            }\n          });\n        }\n      },\n      { immediate: true, flush: 'post' },\n    );\n  });\n\n  onBeforeUnmount(() => {\n    destroyRef.value = true;\n    cancelRaf();\n  });\n\n  return [status, goNextStatus];\n};\n"
  },
  {
    "path": "components/vc-trigger/Trigger.tsx",
    "content": "import type { HTMLAttributes } from 'vue';\nimport { computed, defineComponent, inject, provide, shallowRef } from 'vue';\nimport { triggerProps, noop } from './interface';\nimport contains from '../vc-util/Dom/contains';\nimport raf from '../_util/raf';\nimport {\n  hasProp,\n  getComponent,\n  getEvents,\n  filterEmpty,\n  getSlot,\n  findDOMNode,\n} from '../_util/props-util';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport Popup from './Popup';\nimport { getAlignFromPlacement, getAlignPopupClassName } from './utils/alignUtil';\nimport BaseMixin from '../_util/BaseMixin';\nimport Portal from '../_util/PortalWrapper';\nimport classNames from '../_util/classNames';\nimport { cloneElement } from '../_util/vnode';\nimport supportsPassive from '../_util/supportsPassive';\nimport { useProvidePortal } from './context';\n\nconst ALL_HANDLERS = [\n  'onClick',\n  'onMousedown',\n  'onTouchstart',\n  'onMouseenter',\n  'onMouseleave',\n  'onFocus',\n  'onBlur',\n  'onContextmenu',\n];\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Trigger',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: triggerProps(),\n  setup(props) {\n    const align = computed(() => {\n      const { popupPlacement, popupAlign, builtinPlacements } = props;\n      if (popupPlacement && builtinPlacements) {\n        return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n      }\n      return popupAlign;\n    });\n    const popupRef = shallowRef(null);\n    const setPopupRef = val => {\n      popupRef.value = val;\n    };\n    return {\n      vcTriggerContext: inject(\n        'vcTriggerContext',\n        {} as {\n          onPopupMouseDown?: (...args: any[]) => void;\n          onPopupMouseenter?: (...args: any[]) => void;\n          onPopupMouseleave?: (...args: any[]) => void;\n        },\n      ),\n      popupRef,\n      setPopupRef,\n      triggerRef: shallowRef(null),\n      align,\n      focusTime: null,\n      clickOutsideHandler: null,\n      contextmenuOutsideHandler1: null,\n      contextmenuOutsideHandler2: null,\n      touchOutsideHandler: null,\n      attachId: null,\n      delayTimer: null,\n      hasPopupMouseDown: false,\n      preClickTime: null,\n      preTouchTime: null,\n      mouseDownTimeout: null,\n      childOriginEvents: {},\n    };\n  },\n  data() {\n    const props = this.$props;\n    let popupVisible;\n    if (this.popupVisible !== undefined) {\n      popupVisible = !!props.popupVisible;\n    } else {\n      popupVisible = !!props.defaultPopupVisible;\n    }\n    ALL_HANDLERS.forEach(h => {\n      (this as any)[`fire${h}`] = e => {\n        (this as any).fireEvents(h, e);\n      };\n    });\n    return {\n      prevPopupVisible: popupVisible,\n      sPopupVisible: popupVisible,\n      point: null,\n    };\n  },\n  watch: {\n    popupVisible(val) {\n      if (val !== undefined) {\n        this.prevPopupVisible = this.sPopupVisible;\n        this.sPopupVisible = val;\n      }\n    },\n  },\n  created() {\n    provide('vcTriggerContext', {\n      onPopupMouseDown: this.onPopupMouseDown,\n      onPopupMouseenter: this.onPopupMouseenter,\n      onPopupMouseleave: this.onPopupMouseleave,\n    });\n    useProvidePortal(this);\n  },\n  deactivated() {\n    this.setPopupVisible(false);\n  },\n  mounted() {\n    this.$nextTick(() => {\n      this.updatedCal();\n    });\n  },\n\n  updated() {\n    this.$nextTick(() => {\n      this.updatedCal();\n    });\n  },\n\n  beforeUnmount() {\n    this.clearDelayTimer();\n    this.clearOutsideHandler();\n    clearTimeout(this.mouseDownTimeout);\n    raf.cancel(this.attachId);\n  },\n  methods: {\n    updatedCal() {\n      const props = this.$props;\n      const state = this.$data;\n\n      // We must listen to `mousedown` or `touchstart`, edge case:\n      // https://github.com/ant-design/ant-design/issues/5804\n      // https://github.com/react-component/calendar/issues/250\n      // https://github.com/react-component/trigger/issues/50\n      if (state.sPopupVisible) {\n        let currentDocument;\n        if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextmenuToShow())) {\n          currentDocument = props.getDocument(this.getRootDomNode());\n          this.clickOutsideHandler = addEventListener(\n            currentDocument,\n            'mousedown',\n            this.onDocumentClick,\n          );\n        }\n        // always hide on mobile\n        if (!this.touchOutsideHandler) {\n          currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n          this.touchOutsideHandler = addEventListener(\n            currentDocument,\n            'touchstart',\n            this.onDocumentClick,\n            supportsPassive ? { passive: false } : false,\n          );\n        }\n        // close popup when trigger type contains 'onContextmenu' and document is scrolling.\n        if (!this.contextmenuOutsideHandler1 && this.isContextmenuToShow()) {\n          currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n          this.contextmenuOutsideHandler1 = addEventListener(\n            currentDocument,\n            'scroll',\n            this.onContextmenuClose,\n          );\n        }\n        // close popup when trigger type contains 'onContextmenu' and window is blur.\n        if (!this.contextmenuOutsideHandler2 && this.isContextmenuToShow()) {\n          this.contextmenuOutsideHandler2 = addEventListener(\n            window,\n            'blur',\n            this.onContextmenuClose,\n          );\n        }\n      } else {\n        this.clearOutsideHandler();\n      }\n    },\n    onMouseenter(e) {\n      const { mouseEnterDelay } = this.$props;\n      this.fireEvents('onMouseenter', e);\n      this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n    },\n\n    onMouseMove(e) {\n      this.fireEvents('onMousemove', e);\n      this.setPoint(e);\n    },\n\n    onMouseleave(e) {\n      this.fireEvents('onMouseleave', e);\n      this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n    },\n\n    onPopupMouseenter() {\n      const { vcTriggerContext = {} } = this;\n      if (vcTriggerContext.onPopupMouseenter) {\n        vcTriggerContext.onPopupMouseenter();\n      }\n      this.clearDelayTimer();\n    },\n\n    onPopupMouseleave(e) {\n      if (\n        e &&\n        e.relatedTarget &&\n        !e.relatedTarget.setTimeout &&\n        contains(this.popupRef?.getElement(), e.relatedTarget)\n      ) {\n        return;\n      }\n      if (this.isMouseLeaveToHide()) {\n        this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n      }\n      const { vcTriggerContext = {} } = this;\n      if (vcTriggerContext.onPopupMouseleave) {\n        vcTriggerContext.onPopupMouseleave(e);\n      }\n    },\n\n    onFocus(e) {\n      this.fireEvents('onFocus', e);\n      // incase focusin and focusout\n      this.clearDelayTimer();\n      if (this.isFocusToShow()) {\n        this.focusTime = Date.now();\n        this.delaySetPopupVisible(true, this.$props.focusDelay);\n      }\n    },\n\n    onMousedown(e) {\n      this.fireEvents('onMousedown', e);\n      this.preClickTime = Date.now();\n    },\n\n    onTouchstart(e) {\n      this.fireEvents('onTouchstart', e);\n      this.preTouchTime = Date.now();\n    },\n\n    onBlur(e) {\n      if (!contains(e.target, e.relatedTarget || document.activeElement)) {\n        this.fireEvents('onBlur', e);\n        this.clearDelayTimer();\n        if (this.isBlurToHide()) {\n          this.delaySetPopupVisible(false, this.$props.blurDelay);\n        }\n      }\n    },\n\n    onContextmenu(e) {\n      e.preventDefault();\n      this.fireEvents('onContextmenu', e);\n      this.setPopupVisible(true, e);\n    },\n\n    onContextmenuClose() {\n      if (this.isContextmenuToShow()) {\n        this.close();\n      }\n    },\n\n    onClick(event) {\n      this.fireEvents('onClick', event);\n      // focus will trigger click\n      if (this.focusTime) {\n        let preTime;\n        if (this.preClickTime && this.preTouchTime) {\n          preTime = Math.min(this.preClickTime, this.preTouchTime);\n        } else if (this.preClickTime) {\n          preTime = this.preClickTime;\n        } else if (this.preTouchTime) {\n          preTime = this.preTouchTime;\n        }\n        if (Math.abs(preTime - this.focusTime) < 20) {\n          return;\n        }\n        this.focusTime = 0;\n      }\n      this.preClickTime = 0;\n      this.preTouchTime = 0;\n      // Only prevent default when all the action is click.\n      // https://github.com/ant-design/ant-design/issues/17043\n      // https://github.com/ant-design/ant-design/issues/17291\n      if (\n        this.isClickToShow() &&\n        (this.isClickToHide() || this.isBlurToHide()) &&\n        event &&\n        event.preventDefault\n      ) {\n        event.preventDefault();\n      }\n      if (event && event.domEvent) {\n        event.domEvent.preventDefault();\n      }\n      const nextVisible = !this.$data.sPopupVisible;\n      if ((this.isClickToHide() && !nextVisible) || (nextVisible && this.isClickToShow())) {\n        this.setPopupVisible(!this.$data.sPopupVisible, event);\n      }\n    },\n    onPopupMouseDown(...args: any[]) {\n      const { vcTriggerContext = {} } = this;\n      this.hasPopupMouseDown = true;\n\n      clearTimeout(this.mouseDownTimeout);\n      this.mouseDownTimeout = setTimeout(() => {\n        this.hasPopupMouseDown = false;\n      }, 0);\n      if (vcTriggerContext.onPopupMouseDown) {\n        vcTriggerContext.onPopupMouseDown(...args);\n      }\n    },\n\n    onDocumentClick(event) {\n      if (this.$props.mask && !this.$props.maskClosable) {\n        return;\n      }\n      const target = event.target;\n      const root = this.getRootDomNode();\n      const popupNode = this.getPopupDomNode();\n      if (\n        // mousedown on the target should also close popup when action is contextMenu.\n        // https://github.com/ant-design/ant-design/issues/29853\n        (!contains(root, target) || this.isContextMenuOnly()) &&\n        !contains(popupNode, target) &&\n        !this.hasPopupMouseDown\n      ) {\n        // https://github.com/vuejs/core/issues/4462\n        // vue 动画bug导致 https://github.com/vueComponent/ant-design-vue/issues/5259，\n        // 改成延时解决\n        this.delaySetPopupVisible(false, 0.1);\n      }\n    },\n    getPopupDomNode() {\n      // for test\n      return this.popupRef?.getElement() || null;\n    },\n\n    getRootDomNode() {\n      const { getTriggerDOMNode } = this.$props;\n      if (getTriggerDOMNode) {\n        const domNode =\n          this.triggerRef?.$el?.nodeName === '#comment' ? null : findDOMNode(this.triggerRef);\n        return findDOMNode(getTriggerDOMNode(domNode));\n      }\n\n      try {\n        const domNode =\n          this.triggerRef?.$el?.nodeName === '#comment' ? null : findDOMNode(this.triggerRef);\n        if (domNode) {\n          return domNode;\n        }\n      } catch (err) {\n        // Do nothing\n      }\n      return findDOMNode(this);\n    },\n\n    handleGetPopupClassFromAlign(align) {\n      const className = [];\n      const props = this.$props;\n      const {\n        popupPlacement,\n        builtinPlacements,\n        prefixCls,\n        alignPoint,\n        getPopupClassNameFromAlign,\n      } = props;\n      if (popupPlacement && builtinPlacements) {\n        className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n      }\n      if (getPopupClassNameFromAlign) {\n        className.push(getPopupClassNameFromAlign(align));\n      }\n      return className.join(' ');\n    },\n\n    getPopupAlign() {\n      const props = this.$props;\n      const { popupPlacement, popupAlign, builtinPlacements } = props;\n      if (popupPlacement && builtinPlacements) {\n        return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n      }\n      return popupAlign;\n    },\n    getComponent() {\n      const mouseProps: HTMLAttributes = {};\n      if (this.isMouseEnterToShow()) {\n        mouseProps.onMouseenter = this.onPopupMouseenter;\n      }\n      if (this.isMouseLeaveToHide()) {\n        mouseProps.onMouseleave = this.onPopupMouseleave;\n      }\n      mouseProps.onMousedown = this.onPopupMouseDown;\n      mouseProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] = this.onPopupMouseDown;\n      const { handleGetPopupClassFromAlign, getRootDomNode, $attrs } = this;\n      const {\n        prefixCls,\n        destroyPopupOnHide,\n        popupClassName,\n        popupAnimation,\n        popupTransitionName,\n        popupStyle,\n        mask,\n        maskAnimation,\n        maskTransitionName,\n        zIndex,\n        stretch,\n        alignPoint,\n        mobile,\n        arrow,\n        forceRender,\n      } = this.$props;\n      const { sPopupVisible, point } = this.$data;\n      const popupProps = {\n        prefixCls,\n        arrow,\n        destroyPopupOnHide,\n        visible: sPopupVisible,\n        point: alignPoint ? point : null,\n        align: this.align,\n        animation: popupAnimation,\n        getClassNameFromAlign: handleGetPopupClassFromAlign,\n        stretch,\n        getRootDomNode,\n        mask,\n        zIndex,\n        transitionName: popupTransitionName,\n        maskAnimation,\n        maskTransitionName,\n        class: popupClassName,\n        style: popupStyle,\n        onAlign: $attrs.onPopupAlign || noop,\n        ...mouseProps,\n        ref: this.setPopupRef,\n        mobile,\n        forceRender,\n      } as any;\n      return (\n        <Popup\n          {...popupProps}\n          v-slots={{ default: this.$slots.popup || (() => getComponent(this, 'popup')) }}\n        ></Popup>\n      );\n    },\n\n    attachParent(popupContainer) {\n      raf.cancel(this.attachId);\n\n      const { getPopupContainer, getDocument } = this.$props;\n      const domNode = this.getRootDomNode();\n\n      let mountNode;\n      if (!getPopupContainer) {\n        mountNode = getDocument(this.getRootDomNode()).body;\n      } else if (domNode || getPopupContainer.length === 0) {\n        // Compatible for legacy getPopupContainer with domNode argument.\n        // If no need `domNode` argument, will call directly.\n        // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n        mountNode = getPopupContainer(domNode);\n      }\n\n      if (mountNode) {\n        mountNode.appendChild(popupContainer);\n      } else {\n        // Retry after frame render in case parent not ready\n        this.attachId = raf(() => {\n          this.attachParent(popupContainer);\n        });\n      }\n    },\n\n    getContainer() {\n      const { $props: props } = this;\n      const { getDocument } = props;\n      const popupContainer = getDocument(this.getRootDomNode()).createElement('div');\n      // Make sure default popup container will never cause scrollbar appearing\n      // https://github.com/react-component/trigger/issues/41\n      popupContainer.style.position = 'absolute';\n      popupContainer.style.top = '0';\n      popupContainer.style.left = '0';\n      popupContainer.style.width = '100%';\n      this.attachParent(popupContainer);\n      return popupContainer;\n    },\n\n    setPopupVisible(sPopupVisible: boolean, event?: any) {\n      const { alignPoint, sPopupVisible: prevPopupVisible, onPopupVisibleChange } = this;\n      this.clearDelayTimer();\n      if (prevPopupVisible !== sPopupVisible) {\n        if (!hasProp(this, 'popupVisible')) {\n          this.setState({\n            sPopupVisible,\n            prevPopupVisible,\n          });\n        }\n        onPopupVisibleChange && onPopupVisibleChange(sPopupVisible);\n      }\n      // Always record the point position since mouseEnterDelay will delay the show\n      if (alignPoint && event && sPopupVisible) {\n        this.setPoint(event);\n      }\n    },\n\n    setPoint(point) {\n      const { alignPoint } = this.$props;\n      if (!alignPoint || !point) return;\n\n      this.setState({\n        point: {\n          pageX: point.pageX,\n          pageY: point.pageY,\n        },\n      });\n    },\n    handlePortalUpdate() {\n      if (this.prevPopupVisible !== this.sPopupVisible) {\n        this.afterPopupVisibleChange(this.sPopupVisible);\n      }\n    },\n    delaySetPopupVisible(visible: boolean, delayS: number, event?: any) {\n      const delay = delayS * 1000;\n      this.clearDelayTimer();\n      if (delay) {\n        const point = event ? { pageX: event.pageX, pageY: event.pageY } : null;\n        this.delayTimer = setTimeout(() => {\n          this.setPopupVisible(visible, point);\n          this.clearDelayTimer();\n        }, delay);\n      } else {\n        this.setPopupVisible(visible, event);\n      }\n    },\n\n    clearDelayTimer() {\n      if (this.delayTimer) {\n        clearTimeout(this.delayTimer);\n        this.delayTimer = null;\n      }\n    },\n\n    clearOutsideHandler() {\n      if (this.clickOutsideHandler) {\n        this.clickOutsideHandler.remove();\n        this.clickOutsideHandler = null;\n      }\n\n      if (this.contextmenuOutsideHandler1) {\n        this.contextmenuOutsideHandler1.remove();\n        this.contextmenuOutsideHandler1 = null;\n      }\n\n      if (this.contextmenuOutsideHandler2) {\n        this.contextmenuOutsideHandler2.remove();\n        this.contextmenuOutsideHandler2 = null;\n      }\n\n      if (this.touchOutsideHandler) {\n        this.touchOutsideHandler.remove();\n        this.touchOutsideHandler = null;\n      }\n    },\n\n    createTwoChains(event: string) {\n      let fn = () => {};\n      const events = getEvents(this);\n      if (this.childOriginEvents[event] && events[event]) {\n        return this[`fire${event}`];\n      }\n      fn = this.childOriginEvents[event] || events[event] || fn;\n      return fn as any;\n    },\n\n    isClickToShow() {\n      const { action, showAction } = this.$props;\n      return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n    },\n\n    isContextMenuOnly() {\n      const { action } = this.$props;\n      return action === 'contextmenu' || (action.length === 1 && action[0] === 'contextmenu');\n    },\n\n    isContextmenuToShow() {\n      const { action, showAction } = this.$props;\n      return action.indexOf('contextmenu') !== -1 || showAction.indexOf('contextmenu') !== -1;\n    },\n\n    isClickToHide() {\n      const { action, hideAction } = this.$props;\n      return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n    },\n\n    isMouseEnterToShow() {\n      const { action, showAction } = this.$props;\n      return action.indexOf('hover') !== -1 || showAction.indexOf('mouseenter') !== -1;\n    },\n\n    isMouseLeaveToHide() {\n      const { action, hideAction } = this.$props;\n      return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseleave') !== -1;\n    },\n\n    isFocusToShow() {\n      const { action, showAction } = this.$props;\n      return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n    },\n\n    isBlurToHide() {\n      const { action, hideAction } = this.$props;\n      return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n    },\n    forcePopupAlign() {\n      if (this.$data.sPopupVisible) {\n        this.popupRef?.forceAlign();\n      }\n    },\n    fireEvents(type: string, e: Event) {\n      if (this.childOriginEvents[type]) {\n        this.childOriginEvents[type](e);\n      }\n      const event = this.$props[type] || this.$attrs[type];\n      if (event) {\n        event(e);\n      }\n    },\n\n    close() {\n      this.setPopupVisible(false);\n    },\n  },\n  render() {\n    const { $attrs } = this;\n    const children = filterEmpty(getSlot(this));\n    const { alignPoint, getPopupContainer } = this.$props;\n\n    const child = children[0];\n    this.childOriginEvents = getEvents(child);\n    const newChildProps: any = {\n      key: 'trigger',\n    };\n\n    if (this.isContextmenuToShow()) {\n      newChildProps.onContextmenu = this.onContextmenu;\n    } else {\n      newChildProps.onContextmenu = this.createTwoChains('onContextmenu');\n    }\n\n    if (this.isClickToHide() || this.isClickToShow()) {\n      newChildProps.onClick = this.onClick;\n      newChildProps.onMousedown = this.onMousedown;\n      newChildProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] = this.onTouchstart;\n    } else {\n      newChildProps.onClick = this.createTwoChains('onClick');\n      newChildProps.onMousedown = this.createTwoChains('onMousedown');\n      newChildProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] =\n        this.createTwoChains('onTouchstart');\n    }\n    if (this.isMouseEnterToShow()) {\n      newChildProps.onMouseenter = this.onMouseenter;\n      if (alignPoint) {\n        newChildProps.onMousemove = this.onMouseMove;\n      }\n    } else {\n      newChildProps.onMouseenter = this.createTwoChains('onMouseenter');\n    }\n    if (this.isMouseLeaveToHide()) {\n      newChildProps.onMouseleave = this.onMouseleave;\n    } else {\n      newChildProps.onMouseleave = this.createTwoChains('onMouseleave');\n    }\n\n    if (this.isFocusToShow() || this.isBlurToHide()) {\n      newChildProps.onFocus = this.onFocus;\n      newChildProps.onBlur = this.onBlur;\n    } else {\n      newChildProps.onFocus = this.createTwoChains('onFocus');\n      newChildProps.onBlur = e => {\n        if (\n          e &&\n          (!e.relatedTarget || !contains(e.target as HTMLElement, e.relatedTarget as HTMLElement))\n        ) {\n          this.createTwoChains('onBlur')(e);\n        }\n      };\n    }\n    const childrenClassName = classNames(child && child.props && child.props.class, $attrs.class);\n    if (childrenClassName) {\n      newChildProps.class = childrenClassName;\n    }\n    const trigger = cloneElement(child, { ...newChildProps, ref: 'triggerRef' }, true, true);\n\n    const portal = (\n      <Portal\n        key=\"portal\"\n        v-slots={{ default: this.getComponent }}\n        getContainer={getPopupContainer && (() => getPopupContainer(this.getRootDomNode()))}\n        didUpdate={this.handlePortalUpdate}\n        visible={this.$data.sPopupVisible}\n      ></Portal>\n    );\n    return (\n      <>\n        {trigger}\n        {portal}\n      </>\n    );\n  },\n});\n"
  },
  {
    "path": "components/vc-trigger/context.ts",
    "content": "import type { InjectionKey, Ref } from 'vue';\nimport { computed, inject, provide } from 'vue';\n\nexport interface PortalContextProps {\n  shouldRender: Ref<boolean>;\n  inTriggerContext: boolean; // 仅处理 trigger 上下文的 portal\n}\nconst PortalContextKey: InjectionKey<PortalContextProps> = Symbol('PortalContextKey');\nexport const useProvidePortal = (instance: any, config = { inTriggerContext: true }) => {\n  provide(PortalContextKey, {\n    inTriggerContext: config.inTriggerContext,\n    shouldRender: computed(() => {\n      const { sPopupVisible, popupRef, forceRender, autoDestroy } = instance || {};\n      // if (popPortal) return true;\n      let shouldRender = false;\n      if (sPopupVisible || popupRef || forceRender) {\n        shouldRender = true;\n      }\n      if (!sPopupVisible && autoDestroy) {\n        shouldRender = false;\n      }\n      return shouldRender;\n    }),\n  });\n};\n\nexport const useInjectPortal = () => {\n  useProvidePortal({}, { inTriggerContext: false });\n  const portalContext = inject(PortalContextKey, {\n    shouldRender: computed(() => false),\n    inTriggerContext: false,\n  });\n  return {\n    shouldRender: computed(\n      () => portalContext.shouldRender.value || portalContext.inTriggerContext === false,\n    ),\n  };\n};\n"
  },
  {
    "path": "components/vc-trigger/index.ts",
    "content": "// based on rc-trigger 5.2.10\nimport Trigger from './Trigger';\nimport { triggerProps } from './interface';\nimport type { TriggerProps } from './interface';\n\nexport { triggerProps };\nexport type { TriggerProps };\nexport default Trigger;\n"
  },
  {
    "path": "components/vc-trigger/interface.ts",
    "content": "import type { CSSProperties, ExtractPropTypes, TransitionProps, PropType } from 'vue';\nimport type { VueNode } from '../_util/type';\nimport PropTypes from '../_util/vue-types';\n\n/** Two char of 't' 'b' 'c' 'l' 'r'. Example: 'lt' */\nexport type AlignPoint = string;\n\nexport type OffsetType = number | `${number}%`;\nexport interface AlignType {\n  /**\n   * move point of source node to align with point of target node.\n   * Such as ['tr','cc'], align top right point of source node with center point of target node.\n   * Point can be 't'(top), 'b'(bottom), 'c'(center), 'l'(left), 'r'(right) */\n  points?: (string | AlignPoint)[];\n  /**\n   * offset source node by offset[0] in x and offset[1] in y.\n   * If offset contains percentage string value, it is relative to sourceNode region.\n   */\n  offset?: OffsetType[];\n  /**\n   * offset target node by offset[0] in x and offset[1] in y.\n   * If targetOffset contains percentage string value, it is relative to targetNode region.\n   */\n  targetOffset?: OffsetType[];\n  /**\n   * If adjustX field is true, will adjust source node in x direction if source node is invisible.\n   * If adjustY field is true, will adjust source node in y direction if source node is invisible.\n   */\n  overflow?: {\n    adjustX?: boolean | number;\n    adjustY?: boolean | number;\n    shiftX?: boolean | number;\n    shiftY?: boolean | number;\n  };\n  /** Auto adjust arrow position */\n  autoArrow?: boolean;\n  /**\n   * Config visible region check of html node. Default `visible`:\n   *  - `visible`:\n   *    The visible region of user browser window.\n   *    Use `clientHeight` for check.\n   *    If `visible` region not satisfy, fallback to `scroll`.\n   *  - `scroll`:\n   *    The whole region of the html scroll area.\n   *    Use `scrollHeight` for check.\n   *  - `visibleFirst`:\n   *    Similar to `visible`, but if `visible` region not satisfy, fallback to `scroll`.\n   */\n  htmlRegion?: 'visible' | 'scroll' | 'visibleFirst';\n  /**\n   * Whether use css right instead of left to position\n   */\n  useCssRight?: boolean;\n  /**\n   * Whether use css bottom instead of top to position\n   */\n  useCssBottom?: boolean;\n  /**\n   * Whether use css transform instead of left/top/right/bottom to position if browser supports.\n   * Defaults to false.\n   */\n  useCssTransform?: boolean;\n  ignoreShake?: boolean;\n}\n\nexport type BuildInPlacements = Record<string, AlignType>;\n\nexport type StretchType = string;\n\nexport type ActionType = string;\n\nexport type AnimationType = string;\n\nexport type TransitionNameType = string;\n\nexport interface Point {\n  pageX: number;\n  pageY: number;\n}\n\nexport interface CommonEventHandler {\n  remove: () => void;\n}\n\nexport interface MobileConfig {\n  /** Set popup motion. You can ref `rc-motion` for more info. */\n  popupMotion?: TransitionProps;\n  popupClassName?: string;\n  popupStyle?: CSSProperties;\n  popupRender?: (originNode: VueNode) => VueNode;\n}\n\nfunction returnEmptyString() {\n  return '';\n}\n\nfunction returnDocument(element) {\n  if (element) {\n    return element.ownerDocument;\n  }\n  return window.document;\n}\n\nexport function noop() {}\n\nexport const triggerProps = () => ({\n  action: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).def([]),\n  showAction: PropTypes.any.def([]),\n  hideAction: PropTypes.any.def([]),\n  getPopupClassNameFromAlign: PropTypes.any.def(returnEmptyString),\n  onPopupVisibleChange: Function as PropType<(open: boolean) => void>,\n  afterPopupVisibleChange: PropTypes.func.def(noop),\n  popup: PropTypes.any,\n  arrow: PropTypes.bool.def(true),\n  popupStyle: { type: Object as PropType<CSSProperties>, default: undefined as CSSProperties },\n  prefixCls: PropTypes.string.def('rc-trigger-popup'),\n  popupClassName: PropTypes.string.def(''),\n  popupPlacement: String,\n  builtinPlacements: PropTypes.object,\n  popupTransitionName: String,\n  popupAnimation: PropTypes.any,\n  mouseEnterDelay: PropTypes.number.def(0),\n  mouseLeaveDelay: PropTypes.number.def(0.1),\n  zIndex: Number,\n  focusDelay: PropTypes.number.def(0),\n  blurDelay: PropTypes.number.def(0.15),\n  getPopupContainer: Function,\n  getDocument: PropTypes.func.def(returnDocument),\n  forceRender: { type: Boolean, default: undefined },\n  destroyPopupOnHide: { type: Boolean, default: false },\n  mask: { type: Boolean, default: false },\n  maskClosable: { type: Boolean, default: true },\n  // onPopupAlign: PropTypes.func.def(noop),\n  popupAlign: PropTypes.object.def(() => ({})),\n  popupVisible: { type: Boolean, default: undefined },\n  defaultPopupVisible: { type: Boolean, default: false },\n  maskTransitionName: String,\n  maskAnimation: String,\n  stretch: String,\n  alignPoint: { type: Boolean, default: undefined }, // Maybe we can support user pass position in the future\n  autoDestroy: { type: Boolean, default: false },\n  mobile: Object,\n  getTriggerDOMNode: Function as PropType<(d?: HTMLElement) => HTMLElement>,\n});\n\nexport type TriggerProps = Partial<ExtractPropTypes<ReturnType<typeof triggerProps>>>;\n"
  },
  {
    "path": "components/vc-trigger/utils/alignUtil.ts",
    "content": "import type { AlignType, BuildInPlacements, AlignPoint } from '../interface';\n\nfunction isPointsEq(a1: AlignPoint[], a2: AlignPoint[], isAlignPoint: boolean): boolean {\n  if (isAlignPoint) {\n    return a1[0] === a2[0];\n  }\n  return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(\n  builtinPlacements: BuildInPlacements,\n  placementStr: string,\n  align: AlignType,\n): AlignType {\n  const baseAlign = builtinPlacements[placementStr] || {};\n  return {\n    ...baseAlign,\n    ...align,\n  };\n}\n\nexport function getAlignPopupClassName(\n  builtinPlacements: BuildInPlacements,\n  prefixCls: string,\n  align: AlignType,\n  isAlignPoint: boolean,\n): string {\n  const { points } = align;\n\n  const placements = Object.keys(builtinPlacements);\n\n  for (let i = 0; i < placements.length; i += 1) {\n    const placement = placements[i];\n    if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n      return `${prefixCls}-placement-${placement}`;\n    }\n  }\n\n  return '';\n}\n"
  },
  {
    "path": "components/vc-trigger/utils/motionUtil.ts",
    "content": "import type { AnimationType, TransitionNameType } from '../interface';\n\ninterface GetMotionProps {\n  animation: AnimationType;\n  transitionName: TransitionNameType;\n  prefixCls: string;\n}\n\nexport function getMotion({ prefixCls, animation, transitionName }: GetMotionProps) {\n  if (animation) {\n    return {\n      name: `${prefixCls}-${animation}`,\n    };\n  }\n\n  if (transitionName) {\n    return {\n      name: transitionName,\n    };\n  }\n  return {};\n}\n"
  },
  {
    "path": "components/vc-upload/AjaxUploader.tsx",
    "content": "import defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\nimport type {\n  RcFile,\n  UploadProgressEvent,\n  UploadRequestError,\n  BeforeUploadFileType,\n} from './interface';\nimport { uploadProps } from './interface';\nimport { defineComponent, onBeforeUnmount, onMounted, ref } from 'vue';\nimport type { ChangeEvent } from '../_util/EventInterface';\nimport pickAttrs from '../_util/pickAttrs';\nimport partition from 'lodash-es/partition';\n\ninterface ParsedFileInfo {\n  origin: RcFile;\n  action: string;\n  data: Record<string, unknown>;\n  parsedFile: RcFile;\n}\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AjaxUploader',\n  inheritAttrs: false,\n  props: uploadProps(),\n  setup(props, { slots, attrs, expose }) {\n    const uid = ref(getUid());\n    const reqs: any = {};\n\n    const fileInput = ref<HTMLInputElement>();\n\n    let isMounted = false;\n\n    /**\n     * Process file before upload. When all the file is ready, we start upload.\n     */\n    const processFile = async (file: RcFile, fileList: RcFile[]): Promise<ParsedFileInfo> => {\n      const { beforeUpload } = props;\n\n      let transformedFile: BeforeUploadFileType | void = file;\n      if (beforeUpload) {\n        try {\n          transformedFile = await beforeUpload(file, fileList);\n        } catch (e) {\n          // Rejection will also trade as false\n          transformedFile = false;\n        }\n        if (transformedFile === false) {\n          return {\n            origin: file,\n            parsedFile: null,\n            action: null,\n            data: null,\n          };\n        }\n      }\n\n      // Get latest action\n      const { action } = props;\n      let mergedAction: string;\n      if (typeof action === 'function') {\n        mergedAction = await action(file);\n      } else {\n        mergedAction = action;\n      }\n\n      // Get latest data\n      const { data } = props;\n      let mergedData: Record<string, unknown>;\n      if (typeof data === 'function') {\n        mergedData = await data(file);\n      } else {\n        mergedData = data;\n      }\n\n      const parsedData =\n        // string type is from legacy `transformFile`.\n        // Not sure if this will work since no related test case works with it\n        (typeof transformedFile === 'object' || typeof transformedFile === 'string') &&\n        transformedFile\n          ? transformedFile\n          : file;\n\n      let parsedFile: File;\n      if (parsedData instanceof File) {\n        parsedFile = parsedData;\n      } else {\n        parsedFile = new File([parsedData], file.name, { type: file.type });\n      }\n\n      const mergedParsedFile: RcFile = parsedFile as RcFile;\n      mergedParsedFile.uid = file.uid;\n\n      return {\n        origin: file,\n        data: mergedData,\n        parsedFile: mergedParsedFile,\n        action: mergedAction,\n      };\n    };\n\n    const post = ({ data, origin, action, parsedFile }: ParsedFileInfo) => {\n      if (!isMounted) {\n        return;\n      }\n\n      const { onStart, customRequest, name, headers, withCredentials, method } = props;\n\n      const { uid } = origin;\n      const request = customRequest || defaultRequest;\n\n      const requestOption = {\n        action,\n        filename: name,\n        data,\n        file: parsedFile,\n        headers,\n        withCredentials,\n        method: method || 'post',\n        onProgress: (e: UploadProgressEvent) => {\n          const { onProgress } = props;\n          onProgress?.(e, parsedFile);\n        },\n        onSuccess: (ret: any, xhr: XMLHttpRequest) => {\n          const { onSuccess } = props;\n          onSuccess?.(ret, parsedFile, xhr);\n\n          delete reqs[uid];\n        },\n        onError: (err: UploadRequestError, ret: any) => {\n          const { onError } = props;\n          onError?.(err, ret, parsedFile);\n\n          delete reqs[uid];\n        },\n      };\n\n      onStart(origin);\n      reqs[uid] = request(requestOption);\n    };\n\n    const reset = () => {\n      uid.value = getUid();\n    };\n\n    const abort = (file?: any) => {\n      if (file) {\n        const uid = file.uid ? file.uid : file;\n        if (reqs[uid] && reqs[uid].abort) {\n          reqs[uid].abort();\n        }\n        delete reqs[uid];\n      } else {\n        Object.keys(reqs).forEach(uid => {\n          if (reqs[uid] && reqs[uid].abort) {\n            reqs[uid].abort();\n          }\n          delete reqs[uid];\n        });\n      }\n    };\n\n    onMounted(() => {\n      isMounted = true;\n    });\n\n    onBeforeUnmount(() => {\n      isMounted = false;\n      abort();\n    });\n    const uploadFiles = (files: File[]) => {\n      const originFiles = [...files] as RcFile[];\n      const postFiles = originFiles.map((file: RcFile & { uid?: string }) => {\n        // eslint-disable-next-line no-param-reassign\n        file.uid = getUid();\n        return processFile(file, originFiles);\n      });\n\n      // Batch upload files\n      Promise.all(postFiles).then(fileList => {\n        const { onBatchStart } = props;\n\n        onBatchStart?.(fileList.map(({ origin, parsedFile }) => ({ file: origin, parsedFile })));\n\n        fileList\n          .filter(file => file.parsedFile !== null)\n          .forEach(file => {\n            post(file);\n          });\n      });\n    };\n\n    const onChange = (e: ChangeEvent) => {\n      const { accept, directory } = props;\n      const { files } = e.target as any;\n      const acceptedFiles = [...files].filter(\n        (file: RcFile) => !directory || attrAccept(file, accept),\n      );\n      uploadFiles(acceptedFiles);\n      reset();\n    };\n\n    const onClick = (e: MouseEvent | KeyboardEvent) => {\n      const el = fileInput.value;\n      if (!el) {\n        return;\n      }\n      const { onClick } = props;\n      // TODO\n      // if (children && (children as any).type === 'button') {\n      //   const parent = el.parentNode as HTMLInputElement;\n      //   parent.focus();\n      //   parent.querySelector('button').blur();\n      // }\n      el.click();\n      if (onClick) {\n        onClick(e);\n      }\n    };\n\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (e.key === 'Enter') {\n        onClick(e);\n      }\n    };\n\n    const onFileDrop = (e: DragEvent) => {\n      const { multiple } = props;\n\n      e.preventDefault();\n\n      if (e.type === 'dragover') {\n        return;\n      }\n\n      if (props.directory) {\n        traverseFileTree(\n          Array.prototype.slice.call(e.dataTransfer.items),\n          uploadFiles,\n          (_file: RcFile) => attrAccept(_file, props.accept),\n        );\n      } else {\n        const files: [RcFile[], RcFile[]] = partition(\n          Array.prototype.slice.call(e.dataTransfer.files),\n          (file: RcFile) => attrAccept(file, props.accept),\n        );\n        let successFiles = files[0];\n        const errorFiles = files[1];\n        if (multiple === false) {\n          successFiles = successFiles.slice(0, 1);\n        }\n\n        uploadFiles(successFiles);\n        if (errorFiles.length && props.onReject) props.onReject(errorFiles);\n      }\n    };\n    expose({\n      abort,\n    });\n    return () => {\n      const {\n        componentTag: Tag,\n        prefixCls,\n        disabled,\n        id,\n        multiple,\n        accept,\n        capture,\n        directory,\n        openFileDialogOnClick,\n        onMouseenter,\n        onMouseleave,\n        ...otherProps\n      } = props;\n      const cls = {\n        [prefixCls]: true,\n        [`${prefixCls}-disabled`]: disabled,\n        [attrs.class as string]: !!attrs.class,\n      };\n      // because input don't have directory/webkitdirectory type declaration\n      const dirProps: any = directory\n        ? { directory: 'directory', webkitdirectory: 'webkitdirectory' }\n        : {};\n      const events = disabled\n        ? {}\n        : {\n            onClick: openFileDialogOnClick ? onClick : () => {},\n            onKeydown: openFileDialogOnClick ? onKeyDown : () => {},\n            onMouseenter,\n            onMouseleave,\n            onDrop: onFileDrop,\n            onDragover: onFileDrop,\n            tabindex: '0',\n          };\n      return (\n        <Tag {...events} class={cls} role=\"button\" style={attrs.style}>\n          <input\n            {...pickAttrs(otherProps, { aria: true, data: true })}\n            id={id}\n            type=\"file\"\n            ref={fileInput}\n            onClick={e => e.stopPropagation()} // https://github.com/ant-design/ant-design/issues/19948\n            onCancel={e => e.stopPropagation()}\n            key={uid.value}\n            style={{ display: 'none' }}\n            accept={accept}\n            {...dirProps}\n            multiple={multiple}\n            onChange={onChange}\n            {...(capture != null ? { capture } : {})}\n          />\n          {slots.default?.()}\n        </Tag>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-upload/Upload.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { initDefaultProps } from '../_util/props-util';\nimport AjaxUpload from './AjaxUploader';\nimport type { RcFile } from './interface';\nimport { uploadProps } from './interface';\n\nfunction empty() {}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Upload',\n  inheritAttrs: false,\n  props: initDefaultProps(uploadProps(), {\n    componentTag: 'span',\n    prefixCls: 'rc-upload',\n    data: {},\n    headers: {},\n    name: 'file',\n    multipart: false,\n    onStart: empty,\n    onError: empty,\n    onSuccess: empty,\n    multiple: false,\n    beforeUpload: null,\n    customRequest: null,\n    withCredentials: false,\n    openFileDialogOnClick: true,\n  }),\n  setup(props, { slots, attrs, expose }) {\n    const uploader = ref();\n\n    const abort = (file: RcFile) => {\n      uploader.value?.abort(file);\n    };\n    expose({\n      abort,\n    });\n    return () => {\n      return <AjaxUpload {...props} {...attrs} v-slots={slots} ref={uploader} />;\n    };\n  },\n});\n"
  },
  {
    "path": "components/vc-upload/attr-accept.ts",
    "content": "import { warning } from '../vc-util/warning';\nimport type { RcFile } from './interface';\n\nexport default (file: RcFile, acceptedFiles: string | string[]) => {\n  if (file && acceptedFiles) {\n    const acceptedFilesArray = Array.isArray(acceptedFiles)\n      ? acceptedFiles\n      : acceptedFiles.split(',');\n    const fileName = file.name || '';\n    const mimeType = file.type || '';\n    const baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n    return acceptedFilesArray.some(type => {\n      const validType = type.trim();\n      // This is something like */*,*  allow all files\n      if (/^\\*(\\/\\*)?$/.test(type)) {\n        return true;\n      }\n\n      // like .jpg, .png\n      if (validType.charAt(0) === '.') {\n        const lowerFileName = fileName.toLowerCase();\n        const lowerType = validType.toLowerCase();\n\n        let affixList = [lowerType];\n        if (lowerType === '.jpg' || lowerType === '.jpeg') {\n          affixList = ['.jpg', '.jpeg'];\n        }\n\n        return affixList.some(affix => lowerFileName.endsWith(affix));\n      }\n\n      // This is something like a image/* mime type\n      if (/\\/\\*$/.test(validType)) {\n        return baseMimeType === validType.replace(/\\/.*$/, '');\n      }\n\n      // Full match\n      if (mimeType === validType) {\n        return true;\n      }\n\n      // Invalidate type should skip\n      if (/^\\w+$/.test(validType)) {\n        warning(false, `Upload takes an invalidate 'accept' type '${validType}'.Skip for check.`);\n        return true;\n      }\n\n      return false;\n    });\n  }\n  return true;\n};\n"
  },
  {
    "path": "components/vc-upload/index.ts",
    "content": "// rc-upload 4.3.3\nimport Upload from './Upload';\nimport type { UploadProps } from './interface';\n\nexport type { UploadProps };\n\nexport default Upload;\n"
  },
  {
    "path": "components/vc-upload/interface.tsx",
    "content": "import type { ExtractPropTypes, PropType } from 'vue';\n\nexport type BeforeUploadFileType = File | Blob | boolean | string;\n\nexport type Action = string | ((file: RcFile) => string | PromiseLike<string>);\n\nexport const uploadProps = () => {\n  return {\n    capture: [Boolean, String] as PropType<boolean | 'user' | 'environment'>,\n    multipart: { type: Boolean, default: undefined },\n    name: String,\n    disabled: { type: Boolean, default: undefined },\n    componentTag: String as PropType<any>,\n    action: [String, Function] as PropType<Action>,\n    method: String as PropType<UploadRequestMethod>,\n    directory: { type: Boolean, default: undefined },\n    data: [Object, Function] as PropType<\n      Record<string, unknown> | ((file: RcFile | string | Blob) => Record<string, unknown>)\n    >,\n    headers: Object as PropType<UploadRequestHeader>,\n    accept: String,\n    multiple: { type: Boolean, default: undefined },\n    onBatchStart: Function as PropType<\n      (fileList: { file: RcFile; parsedFile: Exclude<BeforeUploadFileType, boolean> }[]) => void\n    >,\n    onReject: Function as PropType<(fileList: RcFile[]) => void>,\n    onStart: Function as PropType<(file: RcFile) => void>,\n    onError: Function as PropType<\n      (error: Error, ret: Record<string, unknown>, file: RcFile) => void\n    >,\n    onSuccess: Function as PropType<\n      (response: Record<string, unknown>, file: RcFile, xhr: XMLHttpRequest) => void\n    >,\n    onProgress: Function as PropType<(event: UploadProgressEvent, file: RcFile) => void>,\n    beforeUpload: Function as PropType<\n      (\n        file: RcFile,\n        FileList: RcFile[],\n      ) => BeforeUploadFileType | Promise<void | BeforeUploadFileType>\n    >,\n    customRequest: Function as PropType<(option: UploadRequestOption) => void>,\n    withCredentials: { type: Boolean, default: undefined },\n    openFileDialogOnClick: { type: Boolean, default: undefined },\n    prefixCls: String,\n    id: String,\n    onMouseenter: Function as PropType<(e: MouseEvent) => void>,\n    onMouseleave: Function as PropType<(e: MouseEvent) => void>,\n    onClick: Function as PropType<(e: MouseEvent | KeyboardEvent) => void>,\n  };\n};\n\nexport type UploadProps = Partial<ExtractPropTypes<ReturnType<typeof uploadProps>>>;\n\nexport interface UploadProgressEvent extends Partial<ProgressEvent> {\n  percent?: number;\n}\n\nexport type UploadRequestMethod = 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch';\n\nexport type UploadRequestHeader = Record<string, string>;\n\nexport interface UploadRequestError extends Error {\n  status?: number;\n  method?: UploadRequestMethod;\n  url?: string;\n}\n\nexport interface UploadRequestOption<T = any> {\n  onProgress?: (event: UploadProgressEvent) => void;\n  onError?: (event: UploadRequestError | ProgressEvent, body?: T) => void;\n  onSuccess?: (body: T, xhr?: XMLHttpRequest) => void;\n  data?: Record<string, unknown>;\n  filename?: string;\n  file: Exclude<BeforeUploadFileType, File | boolean> | RcFile;\n  withCredentials?: boolean;\n  action: string;\n  headers?: UploadRequestHeader;\n  method: UploadRequestMethod;\n}\n\nexport interface RcFile extends File {\n  uid: string;\n}\n"
  },
  {
    "path": "components/vc-upload/request.ts",
    "content": "import type { UploadRequestOption, UploadRequestError, UploadProgressEvent } from './interface';\n\nfunction getError(option: UploadRequestOption, xhr: XMLHttpRequest) {\n  const msg = `cannot ${option.method} ${option.action} ${xhr.status}'`;\n  const err = new Error(msg) as UploadRequestError;\n  err.status = xhr.status;\n  err.method = option.method;\n  err.url = option.action;\n  return err;\n}\n\nfunction getBody(xhr: XMLHttpRequest) {\n  const text = xhr.responseText || xhr.response;\n  if (!text) {\n    return text;\n  }\n\n  try {\n    return JSON.parse(text);\n  } catch (e) {\n    return text;\n  }\n}\n\nexport default function upload(option: UploadRequestOption) {\n  // eslint-disable-next-line no-undef\n  const xhr = new XMLHttpRequest();\n\n  if (option.onProgress && xhr.upload) {\n    xhr.upload.onprogress = function progress(e: UploadProgressEvent) {\n      if (e.total > 0) {\n        e.percent = (e.loaded / e.total) * 100;\n      }\n      option.onProgress(e);\n    };\n  }\n\n  // eslint-disable-next-line no-undef\n  const formData = new FormData();\n\n  if (option.data) {\n    Object.keys(option.data).forEach(key => {\n      const value = option.data[key];\n      // support key-value array data\n      if (Array.isArray(value)) {\n        value.forEach(item => {\n          // { list: [ 11, 22 ] }\n          // formData.append('list[]', 11);\n          formData.append(`${key}[]`, item);\n        });\n        return;\n      }\n\n      formData.append(key, value as string | Blob);\n    });\n  }\n\n  // eslint-disable-next-line no-undef\n  if (option.file instanceof Blob) {\n    formData.append(option.filename, option.file, (option.file as any).name);\n  } else {\n    formData.append(option.filename, option.file);\n  }\n\n  xhr.onerror = function error(e) {\n    option.onError(e);\n  };\n\n  xhr.onload = function onload() {\n    // allow success when 2xx status\n    // see https://github.com/react-component/upload/issues/34\n    if (xhr.status < 200 || xhr.status >= 300) {\n      return option.onError(getError(option, xhr), getBody(xhr));\n    }\n\n    return option.onSuccess(getBody(xhr), xhr);\n  };\n\n  xhr.open(option.method, option.action, true);\n\n  // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n  if (option.withCredentials && 'withCredentials' in xhr) {\n    xhr.withCredentials = true;\n  }\n\n  const headers = option.headers || {};\n\n  // when set headers['X-Requested-With'] = null , can close default XHR header\n  // see https://github.com/react-component/upload/issues/33\n  if (headers['X-Requested-With'] !== null) {\n    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n  }\n\n  Object.keys(headers).forEach(h => {\n    if (headers[h] !== null) {\n      xhr.setRequestHeader(h, headers[h]);\n    }\n  });\n\n  xhr.send(formData);\n\n  return {\n    abort() {\n      xhr.abort();\n    },\n  };\n}\n"
  },
  {
    "path": "components/vc-upload/traverseFileTree.ts",
    "content": "import type { RcFile } from './interface';\n\ninterface InternalDataTransferItem extends DataTransferItem {\n  isFile: boolean;\n  file: (cd: (file: RcFile & { webkitRelativePath?: string }) => void) => void;\n  createReader: () => any;\n  fullPath: string;\n  isDirectory: boolean;\n  name: string;\n  path: string;\n}\n\nfunction loopFiles(item: InternalDataTransferItem, callback) {\n  const dirReader = item.createReader();\n  let fileList = [];\n\n  function sequence() {\n    dirReader.readEntries((entries: InternalDataTransferItem[]) => {\n      const entryList = Array.prototype.slice.apply(entries);\n      fileList = fileList.concat(entryList);\n\n      // Check if all the file has been viewed\n      const isFinished = !entryList.length;\n\n      if (isFinished) {\n        callback(fileList);\n      } else {\n        sequence();\n      }\n    });\n  }\n\n  sequence();\n}\n\nconst traverseFileTree = (files: InternalDataTransferItem[], callback, isAccepted) => {\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  const _traverseFileTree = (item: InternalDataTransferItem, path?: string) => {\n    // eslint-disable-next-line no-param-reassign\n    item.path = path || '';\n    if (item.isFile) {\n      item.file(file => {\n        if (isAccepted(file)) {\n          // https://github.com/ant-design/ant-design/issues/16426\n          if (item.fullPath && !file.webkitRelativePath) {\n            Object.defineProperties(file, {\n              webkitRelativePath: {\n                writable: true,\n              },\n            });\n            // eslint-disable-next-line no-param-reassign\n            (file as any).webkitRelativePath = item.fullPath.replace(/^\\//, '');\n            Object.defineProperties(file, {\n              webkitRelativePath: {\n                writable: false,\n              },\n            });\n          }\n          callback([file]);\n        }\n      });\n    } else if (item.isDirectory) {\n      loopFiles(item, (entries: InternalDataTransferItem[]) => {\n        entries.forEach(entryItem => {\n          _traverseFileTree(entryItem, `${path}${item.name}/`);\n        });\n      });\n    }\n  };\n  files.forEach(file => {\n    _traverseFileTree(file.webkitGetAsEntry() as any);\n  });\n};\n\nexport default traverseFileTree;\n"
  },
  {
    "path": "components/vc-upload/uid.ts",
    "content": "const now = +new Date();\nlet index = 0;\n\nexport default function uid() {\n  // eslint-disable-next-line no-plusplus\n  return `vc-upload-${now}-${++index}`;\n}\n"
  },
  {
    "path": "components/vc-util/Children/toArray.ts",
    "content": "import type { VNodeTypes } from 'vue';\nimport { isFragment } from '../../_util/props-util';\n\nexport interface Option {\n  keepEmpty?: boolean;\n}\n\nexport default function toArray(children: any[], option: Option = {}): any[] {\n  let ret: VNodeTypes[] = [];\n\n  children.forEach((child: any) => {\n    if ((child === undefined || child === null) && !option.keepEmpty) {\n      return;\n    }\n    if (Array.isArray(child)) {\n      ret = ret.concat(toArray(child));\n    } else if (isFragment(child) && child.props) {\n      ret = ret.concat(toArray(child.props.children, option));\n    } else {\n      ret.push(child);\n    }\n  });\n\n  return ret;\n}\n"
  },
  {
    "path": "components/vc-util/Dom/addEventListener.js",
    "content": "import supportsPassive from '../../_util/supportsPassive';\n\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n  if (target && target.addEventListener) {\n    let opt = option;\n    if (\n      opt === undefined &&\n      supportsPassive &&\n      (eventType === 'touchstart' || eventType === 'touchmove' || eventType === 'wheel')\n    ) {\n      opt = { passive: false };\n    }\n    target.addEventListener(eventType, cb, opt);\n  }\n  return {\n    remove: () => {\n      if (target && target.removeEventListener) {\n        target.removeEventListener(eventType, cb);\n      }\n    },\n  };\n}\n"
  },
  {
    "path": "components/vc-util/Dom/class.js",
    "content": "export function hasClass(node, className) {\n  if (node.classList) {\n    return node.classList.contains(className);\n  }\n  const originClass = node.className;\n  return ` ${originClass} `.indexOf(` ${className} `) > -1;\n}\n\nexport function addClass(node, className) {\n  if (node.classList) {\n    node.classList.add(className);\n  } else {\n    if (!hasClass(node, className)) {\n      node.className = `${node.className} ${className}`;\n    }\n  }\n}\n\nexport function removeClass(node, className) {\n  if (node.classList) {\n    node.classList.remove(className);\n  } else {\n    if (hasClass(node, className)) {\n      const originClass = node.className;\n      node.className = ` ${originClass} `.replace(` ${className} `, ' ');\n    }\n  }\n}\n"
  },
  {
    "path": "components/vc-util/Dom/contains.ts",
    "content": "export default function contains(root: Node | null | undefined, n?: Node) {\n  if (!root) {\n    return false;\n  }\n\n  // Use native if support\n  if (root.contains) {\n    return root.contains(n);\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "components/vc-util/Dom/css.ts",
    "content": "const PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/;\n\nconst removePixel = {\n  left: true,\n  top: true,\n};\nconst floatMap = {\n  cssFloat: 1,\n  styleFloat: 1,\n  float: 1,\n};\n\nfunction getComputedStyle(node: HTMLElement) {\n  return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {};\n}\n\nfunction getStyleValue(node: HTMLElement, type: string, value: string) {\n  type = type.toLowerCase();\n  if (value === 'auto') {\n    if (type === 'height') {\n      return node.offsetHeight;\n    }\n    if (type === 'width') {\n      return node.offsetWidth;\n    }\n  }\n  if (!(type in removePixel)) {\n    removePixel[type] = PIXEL_PATTERN.test(type);\n  }\n  return removePixel[type] ? parseFloat(value) || 0 : value;\n}\n\nexport function get(node: HTMLElement, name: any) {\n  const length = arguments.length;\n  const style = getComputedStyle(node);\n\n  name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n\n  return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]);\n}\n\nexport function set(node: HTMLElement, name: any, value: string | number) {\n  const length = arguments.length;\n  name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n  if (length === 3) {\n    if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n      value = `${value}px`;\n    }\n    node.style[name as string] = value; // Number\n    return value;\n  }\n  for (const x in name) {\n    if (name.hasOwnProperty(x)) {\n      set(node, x, name[x]);\n    }\n  }\n  return getComputedStyle(node);\n}\n\nexport function getOuterWidth(el: HTMLElement) {\n  if (el === document.body) {\n    return document.documentElement.clientWidth;\n  }\n  return el.offsetWidth;\n}\n\nexport function getOuterHeight(el: HTMLElement) {\n  if (el === document.body) {\n    return window.innerHeight || document.documentElement.clientHeight;\n  }\n  return el.offsetHeight;\n}\n\nexport function getDocSize() {\n  const width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n  const height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n  return {\n    width,\n    height,\n  };\n}\n\nexport function getClientSize() {\n  const width = document.documentElement.clientWidth;\n  const height = window.innerHeight || document.documentElement.clientHeight;\n  return {\n    width,\n    height,\n  };\n}\n\nexport function getScroll() {\n  return {\n    scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft),\n    scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop),\n  };\n}\n\nexport function getOffset(node: any) {\n  const box = node.getBoundingClientRect();\n  const docElem = document.documentElement;\n\n  return {\n    left:\n      box.left +\n      (window.scrollX || docElem.scrollLeft) -\n      (docElem.clientLeft || document.body.clientLeft || 0),\n    top:\n      box.top +\n      (window.scrollY || docElem.scrollTop) -\n      (docElem.clientTop || document.body.clientTop || 0),\n  };\n}\n\nexport function styleToString(style: CSSStyleDeclaration) {\n  // There are some different behavior between Firefox & Chrome.\n  // We have to handle this ourself.\n  const styleNames = Array.prototype.slice.apply(style);\n  return styleNames.map(name => `${name}: ${style.getPropertyValue(name)};`).join('');\n}\n\nexport function styleObjectToString(style: Record<string, string>) {\n  return Object.keys(style).reduce((acc, name) => {\n    const styleValue = style[name];\n    if (typeof styleValue === 'undefined' || styleValue === null) {\n      return acc;\n    }\n\n    acc += `${name}: ${style[name]};`;\n    return acc;\n  }, '');\n}\n"
  },
  {
    "path": "components/vc-util/Dom/dynamicCSS.ts",
    "content": "import canUseDom from '../../_util/canUseDom';\nimport contains from './contains';\n\nconst APPEND_ORDER = 'data-vc-order';\nconst MARK_KEY = `vc-util-key`;\n\nconst containerCache = new Map<ContainerType, Node & ParentNode>();\n\nexport type ContainerType = Element | ShadowRoot;\nexport type Prepend = boolean | 'queue';\nexport type AppendType = 'prependQueue' | 'append' | 'prepend';\n\ninterface Options {\n  attachTo?: ContainerType;\n  csp?: { nonce?: string };\n  prepend?: Prepend;\n  mark?: string;\n  priority?: number;\n}\n\nfunction getMark({ mark }: Options = {}) {\n  if (mark) {\n    return mark.startsWith('data-') ? mark : `data-${mark}`;\n  }\n  return MARK_KEY;\n}\n\nfunction getContainer(option: Options) {\n  if (option.attachTo) {\n    return option.attachTo;\n  }\n\n  const head = document.querySelector('head');\n  return head || document.body;\n}\n\nfunction getOrder(prepend?: Prepend): AppendType {\n  if (prepend === 'queue') {\n    return 'prependQueue';\n  }\n\n  return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container: ContainerType) {\n  return Array.from((containerCache.get(container) || container).children).filter(\n    node => node.tagName === 'STYLE',\n  ) as HTMLStyleElement[];\n}\n\nexport function injectCSS(css: string, option: Options = {}) {\n  if (!canUseDom()) {\n    return null;\n  }\n\n  const { csp, prepend } = option;\n\n  const styleNode = document.createElement('style');\n  styleNode.setAttribute(APPEND_ORDER, getOrder(prepend));\n\n  if (csp?.nonce) {\n    styleNode.nonce = csp?.nonce;\n  }\n  styleNode.innerHTML = css;\n\n  const container = getContainer(option);\n  const { firstChild } = container;\n\n  if (prepend) {\n    // If is queue `prepend`, it will prepend first style and then append rest style\n    if (prepend === 'queue') {\n      const existStyle = findStyles(container).filter(node =>\n        ['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER)),\n      );\n      if (existStyle.length) {\n        container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n\n        return styleNode;\n      }\n    }\n\n    // Use `insertBefore` as `prepend`\n    container.insertBefore(styleNode, firstChild);\n  } else {\n    container.appendChild(styleNode);\n  }\n\n  return styleNode;\n}\n\nfunction findExistNode(key: string, option: Options = {}) {\n  const container = getContainer(option);\n\n  return findStyles(container).find(node => node.getAttribute(getMark(option)) === key);\n}\n\nexport function removeCSS(key: string, option: Options = {}) {\n  const existNode = findExistNode(key, option);\n  if (existNode) {\n    const container = getContainer(option);\n    container.removeChild(existNode);\n  }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container: ContainerType, option: Options) {\n  const cachedRealContainer = containerCache.get(container);\n\n  // Find real container when not cached or cached container removed\n  if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n    const placeholderStyle = injectCSS('', option);\n    const { parentNode } = placeholderStyle;\n    containerCache.set(container, parentNode);\n    container.removeChild(placeholderStyle);\n  }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n  containerCache.clear();\n}\n\nexport function updateCSS(css: string, key: string, option: Options = {}) {\n  const container = getContainer(option);\n\n  // Sync real parent\n  syncRealContainer(container, option);\n\n  const existNode = findExistNode(key, option);\n\n  if (existNode) {\n    if (option.csp?.nonce && existNode.nonce !== option.csp?.nonce) {\n      existNode.nonce = option.csp?.nonce;\n    }\n\n    if (existNode.innerHTML !== css) {\n      existNode.innerHTML = css;\n    }\n\n    return existNode;\n  }\n\n  const newNode = injectCSS(css, option);\n  newNode.setAttribute(getMark(option), key);\n  return newNode;\n}\n"
  },
  {
    "path": "components/vc-util/Dom/isVisible.ts",
    "content": "export default (element: HTMLElement | SVGGraphicsElement): boolean => {\n  if (!element) {\n    return false;\n  }\n\n  if ((element as HTMLElement).offsetParent) {\n    return true;\n  }\n\n  if ((element as SVGGraphicsElement).getBBox) {\n    const box = (element as SVGGraphicsElement).getBBox();\n    if (box.width || box.height) {\n      return true;\n    }\n  }\n\n  if ((element as HTMLElement).getBoundingClientRect) {\n    const box = (element as HTMLElement).getBoundingClientRect();\n    if (box.width || box.height) {\n      return true;\n    }\n  }\n\n  return false;\n};\n"
  },
  {
    "path": "components/vc-util/Dom/scrollLocker.ts",
    "content": "import type { CSSProperties } from 'vue';\nimport getScrollBarSize from '../../_util/getScrollBarSize';\nimport setStyle from '../../_util/setStyle';\n\nexport interface scrollLockOptions {\n  container: HTMLElement;\n}\n\ninterface Ilocks {\n  target: typeof uuid;\n  options: scrollLockOptions;\n}\n\nlet locks: Ilocks[] = [];\nconst scrollingEffectClassName = 'ant-scrolling-effect';\nconst scrollingEffectClassNameReg = new RegExp(`${scrollingEffectClassName}`, 'g');\n\nlet uuid = 0;\n\n// https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\nconst cacheStyle = new Map<Element, CSSProperties>();\n\nexport default class ScrollLocker {\n  private lockTarget: typeof uuid;\n\n  private options: scrollLockOptions;\n\n  constructor(options?: scrollLockOptions) {\n    // eslint-disable-next-line no-plusplus\n    this.lockTarget = uuid++;\n    this.options = options;\n  }\n\n  getContainer = (): HTMLElement | undefined => {\n    return this.options?.container;\n  };\n\n  // if options change...\n  reLock = (options?: scrollLockOptions) => {\n    const findLock = locks.find(({ target }) => target === this.lockTarget);\n\n    if (findLock) {\n      this.unLock();\n    }\n\n    this.options = options;\n\n    if (findLock) {\n      findLock.options = options;\n      this.lock();\n    }\n  };\n\n  lock = () => {\n    // If lockTarget exist return\n    if (locks.some(({ target }) => target === this.lockTarget)) {\n      return;\n    }\n\n    // If same container effect, return\n    if (locks.some(({ options }) => options?.container === this.options?.container)) {\n      locks = [...locks, { target: this.lockTarget, options: this.options }];\n      return;\n    }\n\n    let scrollBarSize = 0;\n    const container = this.options?.container || document.body;\n\n    if (\n      (container === document.body &&\n        window.innerWidth - document.documentElement.clientWidth > 0) ||\n      container.scrollHeight > container.clientHeight\n    ) {\n      scrollBarSize = getScrollBarSize();\n    }\n\n    const containerClassName = container.className;\n\n    if (\n      locks.filter(({ options }) => options?.container === this.options?.container).length === 0\n    ) {\n      cacheStyle.set(\n        container,\n        setStyle(\n          {\n            width: scrollBarSize !== 0 ? `calc(100% - ${scrollBarSize}px)` : undefined,\n            overflow: 'hidden',\n            overflowX: 'hidden',\n            overflowY: 'hidden',\n          },\n          {\n            element: container,\n          },\n        ),\n      );\n    }\n\n    // https://github.com/ant-design/ant-design/issues/19729\n    if (!scrollingEffectClassNameReg.test(containerClassName)) {\n      const addClassName = `${containerClassName} ${scrollingEffectClassName}`;\n      container.className = addClassName.trim();\n    }\n\n    locks = [...locks, { target: this.lockTarget, options: this.options }];\n  };\n\n  unLock = () => {\n    const findLock = locks.find(({ target }) => target === this.lockTarget);\n\n    locks = locks.filter(({ target }) => target !== this.lockTarget);\n\n    if (\n      !findLock ||\n      locks.some(({ options }) => options?.container === findLock.options?.container)\n    ) {\n      return;\n    }\n\n    // Remove Effect\n    const container = this.options?.container || document.body;\n    const containerClassName = container.className;\n\n    if (!scrollingEffectClassNameReg.test(containerClassName)) return;\n\n    setStyle(cacheStyle.get(container), { element: container });\n    cacheStyle.delete(container);\n    container.className = container.className.replace(scrollingEffectClassNameReg, '').trim();\n  };\n}\n"
  },
  {
    "path": "components/vc-util/devWarning.ts",
    "content": "import devWarning, { resetWarned } from './warning';\n\nexport { resetWarned };\n\nexport default (valid: boolean, component: string, message: string): void => {\n  devWarning(valid, `[ant-design-vue: ${component}] ${message}`);\n};\n"
  },
  {
    "path": "components/vc-util/get.ts",
    "content": "export default function get(entity: any, path: (string | number)[]) {\n  let current = entity;\n\n  for (let i = 0; i < path.length; i += 1) {\n    if (current === null || current === undefined) {\n      return undefined;\n    }\n\n    current = current[path[i]];\n  }\n\n  return current;\n}\n"
  },
  {
    "path": "components/vc-util/isEqual.ts",
    "content": "import warning from './warning';\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1: any, obj2: any, shallow = false): boolean {\n  // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n  const refSet = new Set<any>();\n  function deepEqual(a: any, b: any, level = 1): boolean {\n    const circular = refSet.has(a);\n    warning(!circular, 'Warning: There may be circular references');\n    if (circular) {\n      return false;\n    }\n    if (a === b) {\n      return true;\n    }\n    if (shallow && level > 1) {\n      return false;\n    }\n    refSet.add(a);\n    const newLevel = level + 1;\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) {\n        return false;\n      }\n      for (let i = 0; i < a.length; i++) {\n        if (!deepEqual(a[i], b[i], newLevel)) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a && b && typeof a === 'object' && typeof b === 'object') {\n      const keys = Object.keys(a);\n      if (keys.length !== Object.keys(b).length) {\n        return false;\n      }\n      return keys.every(key => deepEqual(a[key], b[key], newLevel));\n    }\n    // other\n    return false;\n  }\n\n  return deepEqual(obj1, obj2);\n}\n\nexport default isEqual;\n"
  },
  {
    "path": "components/vc-util/isMobile.ts",
    "content": "export default () => {\n  if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n    return false;\n  }\n\n  const agent = navigator.userAgent || navigator.vendor || (window as any).opera;\n  return (\n    /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n      agent,\n    ) ||\n    /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n      agent?.substring(0, 4),\n    )\n  );\n};\n"
  },
  {
    "path": "components/vc-util/set.ts",
    "content": "import get from './get';\n\nfunction internalSet<Entity = any, Output = Entity, Value = any>(\n  entity: Entity,\n  paths: (string | number)[],\n  value: Value,\n  removeIfUndefined: boolean,\n): Output {\n  if (!paths.length) {\n    return value as unknown as Output;\n  }\n\n  const [path, ...restPath] = paths;\n\n  let clone: Output;\n  if (!entity && typeof path === 'number') {\n    clone = [] as unknown as Output;\n  } else if (Array.isArray(entity)) {\n    clone = [...entity] as unknown as Output;\n  } else {\n    clone = { ...entity } as unknown as Output;\n  }\n\n  // Delete prop if `removeIfUndefined` and value is undefined\n  if (removeIfUndefined && value === undefined && restPath.length === 1) {\n    delete clone[path][restPath[0]];\n  } else {\n    clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n  }\n\n  return clone;\n}\n\nexport default function set<Entity = any, Output = Entity, Value = any>(\n  entity: Entity,\n  paths: (string | number)[],\n  value: Value,\n  removeIfUndefined = false,\n): Output {\n  // Do nothing if `removeIfUndefined` and parent object not exist\n  if (\n    paths.length &&\n    removeIfUndefined &&\n    value === undefined &&\n    !get(entity, paths.slice(0, -1))\n  ) {\n    return entity as unknown as Output;\n  }\n\n  return internalSet(entity, paths, value, removeIfUndefined);\n}\n"
  },
  {
    "path": "components/vc-util/warning.ts",
    "content": "/* eslint-disable no-console */\nlet warned: Record<string, boolean> = {};\n\nexport function warning(valid: boolean, message: string) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    console.error(`Warning: ${message}`);\n  }\n}\n\nexport function note(valid: boolean, message: string) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    console.warn(`Note: ${message}`);\n  }\n}\n\nexport function resetWarned() {\n  warned = {};\n}\n\nexport function call(\n  method: (valid: boolean, message: string) => void,\n  valid: boolean,\n  message: string,\n) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\n\nexport function warningOnce(valid: boolean, message: string) {\n  call(warning, valid, message);\n}\n\nexport function noteOnce(valid: boolean, message: string) {\n  call(note, valid, message);\n}\n\nexport default warningOnce;\n/* eslint-enable */\n"
  },
  {
    "path": "components/vc-virtual-list/Filler.tsx",
    "content": "import classNames from '../_util/classNames';\nimport ResizeObserver from '../vc-resize-observer';\nimport type { CSSProperties, FunctionalComponent, PropType } from 'vue';\n\ninterface FillerProps {\n  prefixCls?: string;\n  /** Virtual filler height. Should be `count * itemMinHeight` */\n  height: number;\n  /** Set offset of visible items. Should be the top of start item position */\n  offset?: number;\n  onInnerResize?: () => void;\n}\n\nconst Filter: FunctionalComponent<FillerProps> = (\n  { height, offset, prefixCls, onInnerResize },\n  { slots },\n) => {\n  let outerStyle = {};\n\n  let innerStyle: CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n  };\n\n  if (offset !== undefined) {\n    outerStyle = { height: `${height}px`, position: 'relative', overflow: 'hidden' };\n\n    innerStyle = {\n      ...innerStyle,\n      transform: `translateY(${offset}px)`,\n      position: 'absolute',\n      left: 0,\n      right: 0,\n      top: 0,\n    };\n  }\n\n  return (\n    <div style={outerStyle}>\n      <ResizeObserver\n        onResize={({ offsetHeight }) => {\n          if (offsetHeight && onInnerResize) {\n            onInnerResize();\n          }\n        }}\n      >\n        <div\n          style={innerStyle}\n          class={classNames({\n            [`${prefixCls}-holder-inner`]: prefixCls,\n          })}\n        >\n          {slots.default?.()}\n        </div>\n      </ResizeObserver>\n    </div>\n  );\n};\n\nFilter.displayName = 'Filter';\nFilter.inheritAttrs = false;\nFilter.props = {\n  prefixCls: String,\n  /** Virtual filler height. Should be `count * itemMinHeight` */\n  height: Number,\n  /** Set offset of visible items. Should be the top of start item position */\n  offset: Number,\n  onInnerResize: Function as PropType<() => void>,\n};\n\nexport default Filter;\n"
  },
  {
    "path": "components/vc-virtual-list/Item.tsx",
    "content": "import type { FunctionalComponent, PropType } from 'vue';\nimport { cloneVNode } from 'vue';\nimport { flattenChildren } from '../_util/props-util';\n\nexport interface ItemProps {\n  setRef: (element: HTMLElement) => void;\n}\n\nconst Item: FunctionalComponent<ItemProps> = ({ setRef }, { slots }) => {\n  const children = flattenChildren(slots.default?.());\n\n  return children && children.length\n    ? cloneVNode(children[0], {\n        ref: setRef as any,\n      })\n    : children;\n};\nItem.props = {\n  setRef: {\n    type: Function as PropType<(element: HTMLElement) => void>,\n    default: () => {},\n  },\n};\n\nexport default Item;\n"
  },
  {
    "path": "components/vc-virtual-list/List.tsx",
    "content": "import type { PropType, Component, CSSProperties } from 'vue';\nimport {\n  shallowRef,\n  toRaw,\n  onMounted,\n  onUpdated,\n  defineComponent,\n  watchEffect,\n  computed,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  watch,\n} from 'vue';\nimport type { Key } from '../_util/type';\nimport Filler from './Filler';\nimport Item from './Item';\nimport ScrollBar from './ScrollBar';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport type { RenderFunc, SharedConfig } from './interface';\nimport supportsPassive from '../_util/supportsPassive';\n\nconst EMPTY_DATA = [];\n\nconst ScrollStyle: CSSProperties = {\n  overflowY: 'auto',\n  overflowAnchor: 'none',\n};\n\nexport type ScrollAlign = 'top' | 'bottom' | 'auto';\nexport type ScrollConfig =\n  | {\n      index: number;\n      align?: ScrollAlign;\n      offset?: number;\n    }\n  | {\n      key: Key;\n      align?: ScrollAlign;\n      offset?: number;\n    };\nexport type ScrollTo = (arg: number | ScrollConfig) => void;\n\nfunction renderChildren<T>(\n  list: T[],\n  startIndex: number,\n  endIndex: number,\n  setNodeRef: (item: T, element: HTMLElement) => void,\n  renderFunc: RenderFunc<T>,\n  { getKey }: SharedConfig<T>,\n) {\n  return list.slice(startIndex, endIndex + 1).map((item, index) => {\n    const eleIndex = startIndex + index;\n    const node = renderFunc(item, eleIndex, {\n      // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n    });\n    const key = getKey(item);\n    return (\n      <Item key={key} setRef={ele => setNodeRef(item, ele as HTMLElement)}>\n        {node}\n      </Item>\n    );\n  });\n}\n\nexport interface ListState {\n  scrollTop: number;\n  scrollMoving: boolean;\n}\n\nconst List = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'List',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    data: PropTypes.array,\n    height: Number,\n    itemHeight: Number,\n    /** If not match virtual scroll condition, Set List still use height of container. */\n    fullHeight: { type: Boolean, default: undefined },\n    itemKey: {\n      type: [String, Number, Function] as PropType<Key | ((item: Record<string, any>) => Key)>,\n      required: true,\n    },\n    component: {\n      type: [String, Object] as PropType<string | Component>,\n    },\n    /** Set `false` will always use real scroll instead of virtual one */\n    virtual: { type: Boolean, default: undefined },\n    children: Function,\n    onScroll: Function,\n    onMousedown: Function,\n    onMouseenter: Function,\n    onVisibleChange: Function as PropType<(visibleList: any[], fullList: any[]) => void>,\n  },\n  setup(props, { expose }) {\n    // ================================= MISC =================================\n    const useVirtual = computed(() => {\n      const { height, itemHeight, virtual } = props;\n      return !!(virtual !== false && height && itemHeight);\n    });\n    const inVirtual = computed(() => {\n      const { height, itemHeight, data } = props;\n      return useVirtual.value && data && itemHeight * data.length > height;\n    });\n\n    const state = reactive<ListState>({\n      scrollTop: 0,\n      scrollMoving: false,\n    });\n    const data = computed(() => {\n      return props.data || EMPTY_DATA;\n    });\n    const mergedData = shallowRef([]);\n    watch(\n      data,\n      () => {\n        mergedData.value = toRaw(data.value).slice();\n      },\n      { immediate: true },\n    );\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const itemKey = shallowRef((_item: Record<string, any>) => undefined);\n    watch(\n      () => props.itemKey,\n      val => {\n        if (typeof val === 'function') {\n          itemKey.value = val;\n        } else {\n          itemKey.value = item => item?.[val];\n        }\n      },\n      { immediate: true },\n    );\n    const componentRef = shallowRef<HTMLDivElement>();\n    const fillerInnerRef = shallowRef<HTMLDivElement>();\n    const scrollBarRef = shallowRef<any>(); // Hack on scrollbar to enable flash call\n    // =============================== Item Key ===============================\n    const getKey = (item: Record<string, any>) => {\n      return itemKey.value(item);\n    };\n\n    const sharedConfig = {\n      getKey,\n    };\n\n    // ================================ Scroll ================================\n    function syncScrollTop(newTop: number | ((prev: number) => number)) {\n      let value: number;\n      if (typeof newTop === 'function') {\n        value = newTop(state.scrollTop);\n      } else {\n        value = newTop;\n      }\n\n      const alignedTop = keepInRange(value);\n\n      if (componentRef.value) {\n        componentRef.value.scrollTop = alignedTop;\n      }\n      state.scrollTop = alignedTop;\n    }\n\n    // ================================ Height ================================\n    const [setInstance, collectHeight, heights, updatedMark] = useHeights(\n      mergedData,\n      getKey,\n      null,\n      null,\n    );\n\n    const calRes = reactive<{\n      scrollHeight?: number;\n      start?: number;\n      end?: number;\n      offset?: number;\n    }>({\n      scrollHeight: undefined,\n      start: 0,\n      end: 0,\n      offset: undefined,\n    });\n\n    const offsetHeight = shallowRef(0);\n    onMounted(() => {\n      nextTick(() => {\n        offsetHeight.value = fillerInnerRef.value?.offsetHeight || 0;\n      });\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        offsetHeight.value = fillerInnerRef.value?.offsetHeight || 0;\n      });\n    });\n    watch(\n      [useVirtual, mergedData],\n      () => {\n        if (!useVirtual.value) {\n          Object.assign(calRes, {\n            scrollHeight: undefined,\n            start: 0,\n            end: mergedData.value.length - 1,\n            offset: undefined,\n          });\n        }\n      },\n      { immediate: true },\n    );\n    watch(\n      [useVirtual, mergedData, offsetHeight, inVirtual],\n      () => {\n        // Always use virtual scroll bar in avoid shaking\n        if (useVirtual.value && !inVirtual.value) {\n          Object.assign(calRes, {\n            scrollHeight: offsetHeight.value,\n            start: 0,\n            end: mergedData.value.length - 1,\n            offset: undefined,\n          });\n        }\n        if (componentRef.value) {\n          state.scrollTop = componentRef.value.scrollTop;\n        }\n      },\n      {\n        immediate: true,\n      },\n    );\n    watch(\n      [\n        inVirtual,\n        useVirtual,\n        () => state.scrollTop,\n        mergedData,\n        updatedMark,\n        () => props.height,\n        offsetHeight,\n      ],\n      () => {\n        if (!useVirtual.value || !inVirtual.value) {\n          return;\n        }\n\n        let itemTop = 0;\n        let startIndex: number | undefined;\n        let startOffset: number | undefined;\n        let endIndex: number | undefined;\n        const dataLen = mergedData.value.length;\n        const data = mergedData.value;\n        const scrollTop = state.scrollTop;\n        const { itemHeight, height } = props;\n        const scrollTopHeight = scrollTop + height;\n\n        for (let i = 0; i < dataLen; i += 1) {\n          const item = data[i];\n          const key = getKey(item);\n\n          let cacheHeight = heights.get(key);\n          if (cacheHeight === undefined) {\n            cacheHeight = itemHeight;\n          }\n          const currentItemBottom = itemTop + cacheHeight;\n\n          if (startIndex === undefined && currentItemBottom >= scrollTop) {\n            startIndex = i;\n            startOffset = itemTop;\n          }\n\n          // Check item bottom in the range. We will render additional one item for motion usage\n          if (endIndex === undefined && currentItemBottom > scrollTopHeight) {\n            endIndex = i;\n          }\n\n          itemTop = currentItemBottom;\n        }\n\n        // When scrollTop at the end but data cut to small count will reach this\n        if (startIndex === undefined) {\n          startIndex = 0;\n          startOffset = 0;\n          endIndex = Math.ceil(height / itemHeight);\n        }\n        if (endIndex === undefined) {\n          endIndex = dataLen - 1;\n        }\n\n        // Give cache to improve scroll experience\n        endIndex = Math.min(endIndex + 1, dataLen);\n        Object.assign(calRes, {\n          scrollHeight: itemTop,\n          start: startIndex,\n          end: endIndex,\n          offset: startOffset,\n        });\n      },\n      { immediate: true },\n    );\n\n    // =============================== In Range ===============================\n    const maxScrollHeight = computed(() => calRes.scrollHeight! - props.height!);\n\n    function keepInRange(newScrollTop: number) {\n      let newTop = newScrollTop;\n      if (!Number.isNaN(maxScrollHeight.value)) {\n        newTop = Math.min(newTop, maxScrollHeight.value);\n      }\n      newTop = Math.max(newTop, 0);\n      return newTop;\n    }\n\n    const isScrollAtTop = computed(() => state.scrollTop <= 0);\n    const isScrollAtBottom = computed(() => state.scrollTop >= maxScrollHeight.value);\n\n    const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n\n    // ================================ Scroll ================================\n    function onScrollBar(newScrollTop: number) {\n      const newTop = newScrollTop;\n      syncScrollTop(newTop);\n    }\n\n    // When data size reduce. It may trigger native scroll event back to fit scroll position\n    function onFallbackScroll(e: UIEvent) {\n      const { scrollTop: newScrollTop } = e.currentTarget as Element;\n      if (newScrollTop !== state.scrollTop) {\n        syncScrollTop(newScrollTop);\n      }\n\n      // Trigger origin onScroll\n      props.onScroll?.(e);\n    }\n\n    // Since this added in global,should use ref to keep update\n    const [onRawWheel, onFireFoxScroll] = useFrameWheel(\n      useVirtual,\n      isScrollAtTop,\n      isScrollAtBottom,\n      offsetY => {\n        syncScrollTop(top => {\n          const newTop = top + offsetY;\n          return newTop;\n        });\n      },\n    );\n\n    // Mobile touch move\n    useMobileTouchMove(useVirtual, componentRef, (deltaY, smoothOffset) => {\n      if (originScroll(deltaY, smoothOffset)) {\n        return false;\n      }\n\n      onRawWheel({ preventDefault() {}, deltaY } as WheelEvent);\n      return true;\n    });\n    // Firefox only\n    function onMozMousePixelScroll(e: MouseEvent) {\n      if (useVirtual.value) {\n        e.preventDefault();\n      }\n    }\n    const removeEventListener = () => {\n      if (componentRef.value) {\n        componentRef.value.removeEventListener(\n          'wheel',\n          onRawWheel,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        componentRef.value.removeEventListener('DOMMouseScroll', onFireFoxScroll as any);\n        componentRef.value.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll as any);\n      }\n    };\n    watchEffect(() => {\n      nextTick(() => {\n        if (componentRef.value) {\n          removeEventListener();\n          componentRef.value.addEventListener(\n            'wheel',\n            onRawWheel,\n            supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n          );\n          componentRef.value.addEventListener('DOMMouseScroll', onFireFoxScroll as any);\n          componentRef.value.addEventListener('MozMousePixelScroll', onMozMousePixelScroll as any);\n        }\n      });\n    });\n\n    onBeforeUnmount(() => {\n      removeEventListener();\n    });\n\n    // ================================= Ref ==================================\n    const scrollTo = useScrollTo(\n      componentRef,\n      mergedData,\n      heights,\n      props,\n      getKey,\n      collectHeight,\n      syncScrollTop,\n      () => {\n        scrollBarRef.value?.delayHidden();\n      },\n    );\n\n    expose({\n      scrollTo,\n    });\n\n    const componentStyle = computed(() => {\n      let cs: CSSProperties | null = null;\n      if (props.height) {\n        cs = { [props.fullHeight ? 'height' : 'maxHeight']: props.height + 'px', ...ScrollStyle };\n\n        if (useVirtual.value) {\n          cs!.overflowY = 'hidden';\n\n          if (state.scrollMoving) {\n            cs!.pointerEvents = 'none';\n          }\n        }\n      }\n      return cs;\n    });\n\n    // ================================ Effect ================================\n    /** We need told outside that some list not rendered */\n    watch(\n      [() => calRes.start, () => calRes.end, mergedData],\n      () => {\n        if (props.onVisibleChange) {\n          const renderList = mergedData.value.slice(calRes.start, calRes.end + 1);\n\n          props.onVisibleChange(renderList, mergedData.value);\n        }\n      },\n      { flush: 'post' },\n    );\n    const delayHideScrollBar = () => {\n      scrollBarRef.value?.delayHidden();\n    };\n    return {\n      state,\n      mergedData,\n      componentStyle,\n      onFallbackScroll,\n      onScrollBar,\n      componentRef,\n      useVirtual,\n      calRes,\n      collectHeight,\n      setInstance,\n      sharedConfig,\n      scrollBarRef,\n      fillerInnerRef,\n      delayHideScrollBar,\n    };\n  },\n\n  render() {\n    const {\n      prefixCls = 'rc-virtual-list',\n      height,\n      itemHeight,\n      // eslint-disable-next-line no-unused-vars\n      fullHeight,\n      data,\n      itemKey,\n      virtual,\n      component: Component = 'div',\n      onScroll,\n      children = this.$slots.default,\n      style,\n      class: className,\n      ...restProps\n    } = { ...this.$props, ...this.$attrs } as any;\n    const mergedClassName = classNames(prefixCls, className);\n    const { scrollTop } = this.state;\n    const { scrollHeight, offset, start, end } = this.calRes;\n    const {\n      componentStyle,\n      onFallbackScroll,\n      onScrollBar,\n      useVirtual,\n      collectHeight,\n      sharedConfig,\n      setInstance,\n      mergedData,\n      delayHideScrollBar,\n    } = this;\n    return (\n      <div\n        style={{\n          ...style,\n          position: 'relative',\n        }}\n        class={mergedClassName}\n        {...restProps}\n      >\n        <Component\n          class={`${prefixCls}-holder`}\n          style={componentStyle}\n          ref=\"componentRef\"\n          onScroll={onFallbackScroll}\n          onMouseenter={delayHideScrollBar}\n        >\n          <Filler\n            prefixCls={prefixCls}\n            height={scrollHeight}\n            offset={offset}\n            onInnerResize={collectHeight}\n            ref=\"fillerInnerRef\"\n            v-slots={{\n              default: () =>\n                renderChildren(mergedData, start, end, setInstance, children, sharedConfig),\n            }}\n          ></Filler>\n        </Component>\n\n        {useVirtual && (\n          <ScrollBar\n            ref=\"scrollBarRef\"\n            prefixCls={prefixCls}\n            scrollTop={scrollTop}\n            height={height}\n            scrollHeight={scrollHeight}\n            count={mergedData.length}\n            onScroll={onScrollBar}\n            onStartMove={() => {\n              this.state.scrollMoving = true;\n            }}\n            onStopMove={() => {\n              this.state.scrollMoving = false;\n            }}\n          />\n        )}\n      </div>\n    );\n  },\n});\n\nexport default List;\n"
  },
  {
    "path": "components/vc-virtual-list/ScrollBar.tsx",
    "content": "import { defineComponent, reactive } from 'vue';\nimport type { PropType } from 'vue';\nimport classNames from '../_util/classNames';\nimport createRef from '../_util/createRef';\nimport raf from '../_util/raf';\nimport supportsPassive from '../_util/supportsPassive';\n\nconst MIN_SIZE = 20;\n\ninterface ScrollBarState {\n  dragging: boolean;\n  pageY: number | null;\n  startTop: number | null;\n  visible: boolean;\n}\n\nfunction getPageY(e: MouseEvent | TouchEvent) {\n  return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ScrollBar',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    scrollTop: Number,\n    scrollHeight: Number,\n    height: Number,\n    count: Number,\n    onScroll: {\n      type: Function as PropType<(scrollTop: number) => void>,\n    },\n    onStartMove: {\n      type: Function as PropType<() => void>,\n    },\n    onStopMove: {\n      type: Function as PropType<() => void>,\n    },\n  },\n  setup() {\n    return {\n      moveRaf: null,\n      scrollbarRef: createRef(),\n      thumbRef: createRef(),\n      visibleTimeout: null,\n      state: reactive<ScrollBarState>({\n        dragging: false,\n        pageY: null,\n        startTop: null,\n        visible: false,\n      }),\n    };\n  },\n  watch: {\n    scrollTop: {\n      handler() {\n        this.delayHidden();\n      },\n      flush: 'post',\n    },\n  },\n\n  mounted() {\n    this.scrollbarRef.current?.addEventListener(\n      'touchstart',\n      this.onScrollbarTouchStart,\n      supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n    );\n    this.thumbRef.current?.addEventListener(\n      'touchstart',\n      this.onMouseDown,\n      supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n    );\n  },\n\n  beforeUnmount() {\n    this.removeEvents();\n    clearTimeout(this.visibleTimeout);\n  },\n  methods: {\n    delayHidden() {\n      clearTimeout(this.visibleTimeout);\n      this.state.visible = true;\n\n      this.visibleTimeout = setTimeout(() => {\n        this.state.visible = false;\n      }, 2000);\n    },\n\n    onScrollbarTouchStart(e: TouchEvent) {\n      e.preventDefault();\n    },\n\n    onContainerMouseDown(e: MouseEvent) {\n      e.stopPropagation();\n      e.preventDefault();\n    },\n\n    // ======================= Clean =======================\n    patchEvents() {\n      window.addEventListener('mousemove', this.onMouseMove);\n      window.addEventListener('mouseup', this.onMouseUp);\n\n      this.thumbRef.current.addEventListener(\n        'touchmove',\n        this.onMouseMove,\n        supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n      );\n      this.thumbRef.current.addEventListener('touchend', this.onMouseUp);\n    },\n\n    removeEvents() {\n      window.removeEventListener('mousemove', this.onMouseMove);\n      window.removeEventListener('mouseup', this.onMouseUp);\n\n      this.scrollbarRef.current.removeEventListener(\n        'touchstart',\n        this.onScrollbarTouchStart,\n        supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n      );\n      if (this.thumbRef.current) {\n        this.thumbRef.current.removeEventListener(\n          'touchstart',\n          this.onMouseDown,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        this.thumbRef.current.removeEventListener(\n          'touchmove',\n          this.onMouseMove,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        this.thumbRef.current.removeEventListener('touchend', this.onMouseUp);\n      }\n      raf.cancel(this.moveRaf);\n    },\n\n    // ======================= Thumb =======================\n    onMouseDown(e: MouseEvent | TouchEvent) {\n      const { onStartMove } = this.$props;\n\n      Object.assign(this.state, {\n        dragging: true,\n        pageY: getPageY(e),\n        startTop: this.getTop(),\n      });\n\n      onStartMove();\n      this.patchEvents();\n      e.stopPropagation();\n      e.preventDefault();\n    },\n\n    onMouseMove(e: MouseEvent | TouchEvent) {\n      const { dragging, pageY, startTop } = this.state;\n      const { onScroll } = this.$props;\n\n      raf.cancel(this.moveRaf);\n\n      if (dragging) {\n        const offsetY = getPageY(e) - pageY;\n        const newTop = startTop + offsetY;\n\n        const enableScrollRange = this.getEnableScrollRange();\n        const enableHeightRange = this.getEnableHeightRange();\n\n        const ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n        const newScrollTop = Math.ceil(ptg * enableScrollRange);\n        this.moveRaf = raf(() => {\n          onScroll(newScrollTop);\n        });\n      }\n    },\n\n    onMouseUp() {\n      const { onStopMove } = this.$props;\n      this.state.dragging = false;\n\n      onStopMove();\n      this.removeEvents();\n    },\n\n    // ===================== Calculate =====================\n    getSpinHeight() {\n      const { height, scrollHeight } = this.$props;\n      let baseHeight = (height / scrollHeight) * 100;\n      baseHeight = Math.max(baseHeight, MIN_SIZE);\n      baseHeight = Math.min(baseHeight, height / 2);\n      return Math.floor(baseHeight);\n    },\n\n    getEnableScrollRange() {\n      const { scrollHeight, height } = this.$props;\n      return scrollHeight - height || 0;\n    },\n\n    getEnableHeightRange() {\n      const { height } = this.$props;\n      const spinHeight = this.getSpinHeight();\n      return height - spinHeight || 0;\n    },\n\n    getTop() {\n      const { scrollTop } = this.$props;\n      const enableScrollRange = this.getEnableScrollRange();\n      const enableHeightRange = this.getEnableHeightRange();\n      if (scrollTop === 0 || enableScrollRange === 0) {\n        return 0;\n      }\n      const ptg = scrollTop / enableScrollRange;\n      return ptg * enableHeightRange;\n    },\n    // Not show scrollbar when height is large than scrollHeight\n    showScroll() {\n      const { height, scrollHeight } = this.$props;\n      return scrollHeight > height;\n    },\n  },\n\n  render() {\n    // eslint-disable-next-line no-unused-vars\n    const { dragging, visible } = this.state;\n    const { prefixCls } = this.$props;\n    const spinHeight = this.getSpinHeight() + 'px';\n    const top = this.getTop() + 'px';\n    const canScroll = this.showScroll();\n    const mergedVisible = canScroll && visible;\n    return (\n      <div\n        ref={this.scrollbarRef}\n        class={classNames(`${prefixCls}-scrollbar`, {\n          [`${prefixCls}-scrollbar-show`]: canScroll,\n        })}\n        style={{\n          width: '8px',\n          top: 0,\n          bottom: 0,\n          right: 0,\n          position: 'absolute',\n          display: mergedVisible ? undefined : 'none',\n        }}\n        onMousedown={this.onContainerMouseDown}\n        onMousemove={this.delayHidden}\n      >\n        <div\n          ref={this.thumbRef}\n          class={classNames(`${prefixCls}-scrollbar-thumb`, {\n            [`${prefixCls}-scrollbar-thumb-moving`]: dragging,\n          })}\n          style={{\n            width: '100%',\n            height: spinHeight,\n            top,\n            left: 0,\n            position: 'absolute',\n            background: 'rgba(0, 0, 0, 0.5)',\n            borderRadius: '99px',\n            cursor: 'pointer',\n            userSelect: 'none',\n          }}\n          onMousedown={this.onMouseDown}\n        />\n      </div>\n    );\n  },\n});\n"
  },
  {
    "path": "components/vc-virtual-list/hooks/useFrameWheel.ts",
    "content": "import type { Ref } from 'vue';\nimport raf from '../../_util/raf';\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\n\ninterface FireFoxDOMMouseScrollEvent {\n  detail: number;\n  preventDefault: Function;\n}\n\nexport default function useFrameWheel(\n  inVirtual: Ref<boolean>,\n  isScrollAtTop: Ref<boolean>,\n  isScrollAtBottom: Ref<boolean>,\n  onWheelDelta: (offset: number) => void,\n): [(e: WheelEvent) => void, (e: FireFoxDOMMouseScrollEvent) => void] {\n  let offsetRef = 0;\n  let nextFrame: number = null;\n\n  // Firefox patch\n  let wheelValue = null;\n  let isMouseScroll = false;\n\n  // Scroll status sync\n  const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n\n  function onWheel(event: { preventDefault?: any; deltaY?: any }) {\n    if (!inVirtual.value) return;\n\n    raf.cancel(nextFrame!);\n\n    const { deltaY } = event;\n    offsetRef += deltaY;\n    wheelValue = deltaY;\n\n    // Do nothing when scroll at the edge, Skip check when is in scroll\n    if (originScroll(deltaY)) return;\n\n    // Proxy of scroll events\n    if (!isFF) {\n      event.preventDefault();\n    }\n\n    nextFrame = raf(() => {\n      // Patch a multiple for Firefox to fix wheel number too small\n      // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n      const patchMultiple = isMouseScroll ? 10 : 1;\n      onWheelDelta(offsetRef * patchMultiple);\n      offsetRef = 0;\n    });\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event: { detail: any }) {\n    if (!inVirtual.value) return;\n\n    isMouseScroll = event.detail === wheelValue;\n  }\n\n  return [onWheel, onFireFoxScroll];\n}\n"
  },
  {
    "path": "components/vc-virtual-list/hooks/useHeights.tsx",
    "content": "import type { VNodeProps, Ref, ShallowRef } from 'vue';\nimport { onUnmounted, watch, ref } from 'vue';\nimport type { GetKey } from '../interface';\nimport wrapperRaf from '../../_util/raf';\n\nexport type CacheMap = Map<any, number>;\n\nexport default function useHeights<T>(\n  mergedData: ShallowRef<any[]>,\n  getKey: GetKey<T>,\n  onItemAdd?: ((item: T) => void) | null,\n  onItemRemove?: ((item: T) => void) | null,\n): [(item: T, instance: HTMLElement) => void, () => void, CacheMap, Ref<Symbol>] {\n  const instance = new Map<VNodeProps['key'], HTMLElement>();\n  const heights = new Map();\n  const updatedMark = ref(Symbol('update'));\n  watch(mergedData, () => {\n    updatedMark.value = Symbol('update');\n  });\n  let collectRaf: number = undefined;\n\n  function cancelRaf() {\n    wrapperRaf.cancel(collectRaf);\n  }\n  function collectHeight() {\n    cancelRaf();\n    collectRaf = wrapperRaf(() => {\n      instance.forEach((element, key) => {\n        if (element && element.offsetParent) {\n          const { offsetHeight } = element;\n          if (heights.get(key) !== offsetHeight) {\n            //changed = true;\n            updatedMark.value = Symbol('update');\n            heights.set(key, element.offsetHeight);\n          }\n        }\n      });\n    });\n  }\n\n  function setInstance(item: T, ins: HTMLElement) {\n    const key = getKey(item);\n    const origin = instance.get(key);\n\n    if (ins) {\n      instance.set(key, (ins as any).$el || ins);\n      collectHeight();\n    } else {\n      instance.delete(key);\n    }\n\n    // Instance changed\n    if (!origin !== !ins) {\n      if (ins) {\n        onItemAdd?.(item);\n      } else {\n        onItemRemove?.(item);\n      }\n    }\n  }\n  onUnmounted(() => {\n    cancelRaf();\n  });\n\n  return [setInstance, collectHeight, heights, updatedMark];\n}\n"
  },
  {
    "path": "components/vc-virtual-list/hooks/useMobileTouchMove.ts",
    "content": "import type { Ref } from 'vue';\nimport { onBeforeUnmount, watch, onMounted } from 'vue';\n\nconst SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(\n  inVirtual: Ref<boolean>,\n  listRef: Ref<HTMLDivElement | undefined>,\n  callback: (offsetY: number, smoothOffset?: boolean) => boolean,\n) {\n  let touched = false;\n  let touchY = 0;\n\n  let element: HTMLElement | null = null;\n\n  // Smooth scroll\n  let interval: any = null;\n\n  const cleanUpEvents = () => {\n    if (element) {\n      element.removeEventListener('touchmove', onTouchMove);\n      element.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  const onTouchMove = (e: TouchEvent) => {\n    if (touched) {\n      const currentY = Math.ceil(e.touches[0].pageY);\n      let offsetY = touchY - currentY;\n      touchY = currentY;\n\n      if (callback(offsetY)) {\n        e.preventDefault();\n      }\n\n      // Smooth interval\n      clearInterval(interval);\n      interval = setInterval(() => {\n        offsetY *= SMOOTH_PTG;\n\n        if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n          clearInterval(interval);\n        }\n      }, 16);\n    }\n  };\n\n  const onTouchEnd = () => {\n    touched = false;\n\n    cleanUpEvents();\n  };\n\n  const onTouchStart = (e: TouchEvent) => {\n    cleanUpEvents();\n\n    if (e.touches.length === 1 && !touched) {\n      touched = true;\n      touchY = Math.ceil(e.touches[0].pageY);\n\n      element = e.target as HTMLElement;\n      element!.addEventListener('touchmove', onTouchMove, { passive: false });\n      element!.addEventListener('touchend', onTouchEnd);\n    }\n  };\n  const noop = () => {};\n\n  onMounted(() => {\n    document.addEventListener('touchmove', noop, { passive: false });\n    watch(\n      inVirtual,\n      val => {\n        listRef.value.removeEventListener('touchstart', onTouchStart);\n        cleanUpEvents();\n        clearInterval(interval);\n        if (val) {\n          listRef.value.addEventListener('touchstart', onTouchStart, { passive: false });\n        }\n      },\n      { immediate: true },\n    );\n  });\n  onBeforeUnmount(() => {\n    document.removeEventListener('touchmove', noop);\n  });\n}\n"
  },
  {
    "path": "components/vc-virtual-list/hooks/useOriginScroll.ts",
    "content": "import type { Ref } from 'vue';\n\nexport default (isScrollAtTop: Ref<boolean>, isScrollAtBottom: Ref<boolean>) => {\n  // Do lock for a wheel when scrolling\n  let lock = false;\n  let lockTimeout: any = null;\n  function lockScroll() {\n    clearTimeout(lockTimeout);\n\n    lock = true;\n\n    lockTimeout = setTimeout(() => {\n      lock = false;\n    }, 50);\n  }\n  return (deltaY: number, smoothOffset = false) => {\n    const originScroll =\n      // Pass origin wheel when on the top\n      (deltaY < 0 && isScrollAtTop.value) ||\n      // Pass origin wheel when on the bottom\n      (deltaY > 0 && isScrollAtBottom.value);\n\n    if (smoothOffset && originScroll) {\n      // No need lock anymore when it's smooth offset from touchMove interval\n      clearTimeout(lockTimeout);\n      lock = false;\n    } else if (!originScroll || lock) {\n      lockScroll();\n    }\n\n    return !lock && originScroll;\n  };\n};\n"
  },
  {
    "path": "components/vc-virtual-list/hooks/useScrollTo.tsx",
    "content": "import type { ShallowRef, Ref } from 'vue';\nimport raf from '../../_util/raf';\nimport type { GetKey } from '../interface';\nimport type { CacheMap } from './useHeights';\n\nexport default function useScrollTo(\n  containerRef: Ref<Element | undefined>,\n  mergedData: ShallowRef<any[]>,\n  heights: CacheMap,\n  props,\n  getKey: GetKey,\n  collectHeight: () => void,\n  syncScrollTop: (newTop: number) => void,\n  triggerFlash: () => void,\n) {\n  let scroll: number;\n\n  return (arg?: any) => {\n    // When not argument provided, we think dev may want to show the scrollbar\n    if (arg === null || arg === undefined) {\n      triggerFlash();\n      return;\n    }\n\n    // Normal scroll logic\n    raf.cancel(scroll!);\n    const data = mergedData.value;\n    const itemHeight = props.itemHeight;\n    if (typeof arg === 'number') {\n      syncScrollTop(arg);\n    } else if (arg && typeof arg === 'object') {\n      let index: number;\n      const { align } = arg;\n\n      if ('index' in arg) {\n        ({ index } = arg);\n      } else {\n        index = data.findIndex((item: object) => getKey(item) === arg.key);\n      }\n\n      const { offset = 0 } = arg;\n\n      // We will retry 3 times in case dynamic height shaking\n      const syncScroll = (times: number, targetAlign?: 'top' | 'bottom') => {\n        if (times < 0 || !containerRef.value) return;\n\n        const height = containerRef.value.clientHeight;\n        let needCollectHeight = false;\n        let newTargetAlign = targetAlign;\n\n        // Go to next frame if height not exist\n        if (height) {\n          const mergedAlign = targetAlign || align;\n\n          // Get top & bottom\n          let stackTop = 0;\n          let itemTop = 0;\n          let itemBottom = 0;\n\n          const maxLen = Math.min(data.length, index);\n          for (let i = 0; i <= maxLen; i += 1) {\n            const key = getKey(data[i]);\n            itemTop = stackTop;\n            const cacheHeight = heights.get(key);\n            itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n\n            stackTop = itemBottom;\n\n            if (i === index && cacheHeight === undefined) {\n              needCollectHeight = true;\n            }\n          }\n          const scrollTop = containerRef.value.scrollTop;\n          // Scroll to\n          let targetTop: number | null = null;\n\n          switch (mergedAlign) {\n            case 'top':\n              targetTop = itemTop - offset;\n              break;\n            case 'bottom':\n              targetTop = itemBottom - height + offset;\n              break;\n\n            default: {\n              const scrollBottom = scrollTop + height;\n              if (itemTop < scrollTop) {\n                newTargetAlign = 'top';\n              } else if (itemBottom > scrollBottom) {\n                newTargetAlign = 'bottom';\n              }\n            }\n          }\n\n          if (targetTop !== null && targetTop !== scrollTop) {\n            syncScrollTop(targetTop);\n          }\n        }\n\n        // We will retry since element may not sync height as it described\n        scroll = raf(() => {\n          if (needCollectHeight) {\n            collectHeight();\n          }\n          syncScroll(times - 1, newTargetAlign);\n        }, 2);\n      };\n\n      syncScroll(5);\n    }\n  };\n}\n"
  },
  {
    "path": "components/vc-virtual-list/index.ts",
    "content": "// base rc-virtual-list 3.4.13\nimport List from './List';\n\nexport default List;\n"
  },
  {
    "path": "components/vc-virtual-list/interface.ts",
    "content": "import type { CSSProperties, VNodeTypes } from 'vue';\nimport type { Key } from '../_util/type';\n\nexport type RenderFunc<T> = (\n  item: T,\n  index: number,\n  props: { style?: CSSProperties },\n) => VNodeTypes;\n\nexport interface SharedConfig<T> {\n  getKey: (item: T) => Key;\n}\n\nexport type GetKey<T = object> = (item: T) => Key;\n"
  },
  {
    "path": "components/vc-virtual-list/utils/algorithmUtil.js",
    "content": "/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n  const beforeCount = start - min;\n  const afterCount = max - start;\n  const balanceCount = Math.min(beforeCount, afterCount) * 2;\n\n  // Balance\n  if (index <= balanceCount) {\n    const stepIndex = Math.floor(index / 2);\n    if (index % 2) {\n      return start + stepIndex + 1;\n    }\n    return start - stepIndex;\n  }\n\n  // One is out of range\n  if (beforeCount > afterCount) {\n    return start - (index - afterCount);\n  }\n  return start + (index - beforeCount);\n}\n\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n  const originLen = originList.length;\n  const targetLen = targetList.length;\n\n  let shortList;\n  let longList;\n\n  if (originLen === 0 && targetLen === 0) {\n    return null;\n  }\n\n  if (originLen < targetLen) {\n    shortList = originList;\n    longList = targetList;\n  } else {\n    shortList = targetList;\n    longList = originList;\n  }\n\n  const notExistKey = { __EMPTY_ITEM__: true };\n  function getItemKey(item) {\n    if (item !== undefined) {\n      return getKey(item);\n    }\n    return notExistKey;\n  }\n\n  // Loop to find diff one\n  let diffIndex = null;\n  let multiple = Math.abs(originLen - targetLen) !== 1;\n  for (let i = 0; i < longList.length; i += 1) {\n    const shortKey = getItemKey(shortList[i]);\n    const longKey = getItemKey(longList[i]);\n\n    if (shortKey !== longKey) {\n      diffIndex = i;\n      multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n      break;\n    }\n  }\n\n  return diffIndex === null ? null : { index: diffIndex, multiple };\n}\n"
  },
  {
    "path": "components/vc-virtual-list/utils/isFirefox.ts",
    "content": "const isFF = typeof navigator === 'object' && /Firefox/i.test(navigator.userAgent);\n\nexport default isFF;\n"
  },
  {
    "path": "components/vc-virtual-list/utils/itemUtil.js",
    "content": "/**\n * Our algorithm have additional one ghost item\n * whose index as `data.length` to simplify the calculation\n */\nexport const GHOST_ITEM_KEY = '__vc_ghost_item__';\n\n/**\n * Safari has the elasticity effect which provides negative `scrollTop` value.\n * We should ignore it since will make scroll animation shake.\n */\nexport function alignScrollTop(scrollTop, scrollRange) {\n  if (scrollTop < 0) {\n    return 0;\n  }\n  if (scrollTop >= scrollRange) {\n    return scrollRange;\n  }\n\n  return scrollTop;\n}\n\n/**\n * Get node `offsetHeight`. We prefer node is a dom element directly.\n * But if not provided, downgrade to `findDOMNode` to get the real dom element.\n */\nexport function getNodeHeight(node) {\n  return node ? node.offsetHeight : 0;\n}\n\n/**\n * Calculate the located item absolute top with whole scroll height\n */\nexport function getItemAbsoluteTop({ scrollTop, ...rest }) {\n  return scrollTop + getItemRelativeTop(rest);\n}\n\n/**\n * Calculate the located item related top with current window height\n */\nexport function getItemRelativeTop({\n  itemIndex,\n  itemOffsetPtg,\n  itemElementHeights,\n  scrollPtg,\n  clientHeight,\n  getItemKey,\n}) {\n  const locatedItemHeight = itemElementHeights[getItemKey(itemIndex)] || 0;\n  const locatedItemTop = scrollPtg * clientHeight;\n  const locatedItemOffset = itemOffsetPtg * locatedItemHeight;\n  return Math.floor(locatedItemTop - locatedItemOffset);\n}\n\nexport function getCompareItemRelativeTop({\n  locatedItemRelativeTop,\n  locatedItemIndex,\n  compareItemIndex,\n  startIndex,\n  endIndex,\n  getItemKey,\n  itemElementHeights,\n}) {\n  let originCompareItemTop = locatedItemRelativeTop;\n  const compareItemKey = getItemKey(compareItemIndex);\n\n  if (compareItemIndex <= locatedItemIndex) {\n    for (let index = locatedItemIndex; index >= startIndex; index -= 1) {\n      const key = getItemKey(index);\n      if (key === compareItemKey) {\n        break;\n      }\n\n      const prevItemKey = getItemKey(index - 1);\n      originCompareItemTop -= itemElementHeights[prevItemKey] || 0;\n    }\n  } else {\n    for (let index = locatedItemIndex; index <= endIndex; index += 1) {\n      const key = getItemKey(index);\n      if (key === compareItemKey) {\n        break;\n      }\n\n      originCompareItemTop += itemElementHeights[key] || 0;\n    }\n  }\n\n  return originCompareItemTop;\n}\n\nexport function getScrollPercentage({ scrollTop, scrollHeight, clientHeight }) {\n  if (scrollHeight <= clientHeight) {\n    return 0;\n  }\n\n  const scrollRange = scrollHeight - clientHeight;\n  const alignedScrollTop = alignScrollTop(scrollTop, scrollRange);\n  const scrollTopPtg = alignedScrollTop / scrollRange;\n  return scrollTopPtg;\n}\n\nexport function getElementScrollPercentage(element) {\n  if (!element) {\n    return 0;\n  }\n\n  return getScrollPercentage(element);\n}\n\n/**\n * Get location item and its align percentage with the scroll percentage.\n * We should measure current scroll position to decide which item is the location item.\n * And then fill the top count and bottom count with the base of location item.\n *\n * `total` should be the real count instead of `total - 1` in calculation.\n */\nfunction getLocationItem(scrollPtg, total) {\n  const itemIndex = Math.floor(scrollPtg * total);\n  const itemTopPtg = itemIndex / total;\n  const itemBottomPtg = (itemIndex + 1) / total;\n  const itemOffsetPtg = (scrollPtg - itemTopPtg) / (itemBottomPtg - itemTopPtg);\n\n  return {\n    index: itemIndex,\n    offsetPtg: itemOffsetPtg,\n  };\n}\n\n/**\n * Get display items start, end, located item index. This is pure math calculation\n */\nexport function getRangeIndex(scrollPtg, itemCount, visibleCount) {\n  const { index, offsetPtg } = getLocationItem(scrollPtg, itemCount);\n\n  const beforeCount = Math.ceil(scrollPtg * visibleCount);\n  const afterCount = Math.ceil((1 - scrollPtg) * visibleCount);\n\n  return {\n    itemIndex: index,\n    itemOffsetPtg: offsetPtg,\n    startIndex: Math.max(0, index - beforeCount),\n    endIndex: Math.min(itemCount - 1, index + afterCount),\n  };\n}\n\nexport function requireVirtual(height, itemHeight, count, virtual) {\n  return virtual !== false && typeof height === 'number' && count * itemHeight > height;\n}\n"
  },
  {
    "path": "components/version/index.ts",
    "content": "/* eslint import/no-unresolved: 0 */\n// @ts-ignore\nimport version from './version';\n\nexport default version;\n"
  },
  {
    "path": "components/watermark/__tests__/__snapshots__/demo.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`renders ./components/watermark/demo/basic.vue correctly 1`] = `\n<div class=\"\" style=\"position: relative;\">\n  <div style=\"height: 500px;\"></div>\n</div>\n`;\n\nexports[`renders ./components/watermark/demo/custom.vue correctly 1`] = `\n<div style=\"display: flex;\">\n  <div class=\"\" style=\"position: relative;\">\n    <article class=\"ant-typography\">\n      <div class=\"ant-typography\"> The light-speed iteration of the digital world makes products more complex. However, human consciousness and attention resources are limited. Facing this design contradiction, the pursuit of natural interaction will be the consistent direction of Ant Design.\n        <!---->\n      </div>\n      <div class=\"ant-typography\"> Natural user cognition: According to cognitive psychology, about 80% of external information is obtained through visual channels. The most important visual elements in the interface design, including layout, colors, illustrations, icons, etc., should fully absorb the laws of nature, thereby reducing the user's cognitive cost and bringing authentic and smooth feelings. In some scenarios, opportunely adding other sensory channels such as hearing, touch can create a richer and more natural product experience.\n        <!---->\n      </div>\n      <div class=\"ant-typography\"> Natural user behavior: In the interaction with the system, the designer should fully understand the relationship between users, system roles, and task objectives, and also contextually organize system functions and services. At the same time, a series of methods such as behavior analysis, artificial intelligence and sensors could be applied to assist users to make effective decisions and reduce extra operations of users, to save users' mental and physical resources and make human-computer interaction more natural.\n        <!---->\n      </div>\n    </article><img style=\"z-index: 10; width: 100%; max-width: 800px; position: relative;\" src=\"https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ\" alt=\"示例图片\">\n  </div>\n  <form style=\"width: 280px; flex-shrink: 0; border-left: 1px solid #eee; padding-left: 20px; margin-left: 20px;\" class=\"ant-form ant-form-vertical\">\n    <div class=\"ant-form-item\">\n      <div class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label for=\"form_item_content\" class=\"\" title=\"Content\">Content\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\"><input id=\"form_item_content\" type=\"text\" class=\"ant-input\"></div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-form-item\">\n      <div class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label for=\"form_item_font.fontSize\" class=\"\" title=\"FontSize\">FontSize\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              <div id=\"form_item_font.fontSize\" tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n                <div class=\"ant-slider-rail\"></div>\n                <div class=\"ant-slider-track\" style=\"left: 0%; width: 16%;\"></div>\n                <div class=\"ant-slider-step\"></div>\n                <!---->\n                <div class=\"ant-slider-handle\" style=\"left: 16%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"16\" aria-disabled=\"false\"></div>\n                <div class=\"ant-slider-mark\"></div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-form-item\">\n      <div class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label for=\"form_item_zIndex\" class=\"\" title=\"zIndex\">zIndex\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              <div id=\"form_item_zIndex\" tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n                <div class=\"ant-slider-rail\"></div>\n                <div class=\"ant-slider-track\" style=\"left: 0%; width: 11%;\"></div>\n                <div class=\"ant-slider-step\"></div>\n                <!---->\n                <div class=\"ant-slider-handle\" style=\"left: 11%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"11\" aria-disabled=\"false\"></div>\n                <div class=\"ant-slider-mark\"></div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-form-item\">\n      <div class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label for=\"form_item_rotate\" class=\"\" title=\"Rotate\">Rotate\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              <div id=\"form_item_rotate\" tabindex=\"-1\" class=\"ant-slider ant-slider-horizontal\">\n                <div class=\"ant-slider-rail\"></div>\n                <div class=\"ant-slider-track\" style=\"left: 0%; width: 43.888888888888886%;\"></div>\n                <div class=\"ant-slider-step\"></div>\n                <!---->\n                <div class=\"ant-slider-handle\" style=\"left: 43.888888888888886%; transform: translateX(-50%);\" role=\"slider\" tabindex=\"0\" aria-valuemin=\"-180\" aria-valuemax=\"180\" aria-valuenow=\"-22\" aria-disabled=\"false\"></div>\n                <div class=\"ant-slider-mark\"></div>\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-form-item\">\n      <div style=\"margin-bottom: 0px;\" class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Gap\">Gap\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              <div style=\"display: flex;\" class=\"ant-space ant-space-horizontal ant-space-align-baseline\">\n                <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n                  <div class=\"ant-form-item\">\n                    <div class=\"ant-row ant-form-row\">\n                      <!---->\n                      <div class=\"ant-col ant-form-item-control\">\n                        <div class=\"ant-form-item-control-input\">\n                          <div class=\"ant-form-item-control-input-content\">\n                            <div class=\"ant-input-number\">\n                              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n                              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" placeholder=\"gapX\" class=\"ant-input-number-input\"></div>\n                            </div>\n                          </div>\n                        </div>\n                        <!---->\n                        <!---->\n                      </div>\n                    </div>\n                    <!---->\n                  </div>\n                </div>\n                <!---->\n                <div class=\"ant-space-item\">\n                  <div class=\"ant-form-item\">\n                    <div class=\"ant-row ant-form-row\">\n                      <!---->\n                      <div class=\"ant-col ant-form-item-control\">\n                        <div class=\"ant-form-item-control-input\">\n                          <div class=\"ant-form-item-control-input-content\">\n                            <div class=\"ant-input-number\">\n                              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n                              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" aria-valuenow=\"100\" step=\"1\" placeholder=\"gapY\" class=\"ant-input-number-input\"></div>\n                            </div>\n                          </div>\n                        </div>\n                        <!---->\n                        <!---->\n                      </div>\n                    </div>\n                    <!---->\n                  </div>\n                </div>\n                <!---->\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n    <div class=\"ant-form-item\">\n      <div style=\"margin-bottom: 0px;\" class=\"ant-row ant-form-row\">\n        <div class=\"ant-col ant-form-item-label\"><label class=\"\" title=\"Offset\">Offset\n            <!---->\n          </label></div>\n        <div class=\"ant-col ant-form-item-control\">\n          <div class=\"ant-form-item-control-input\">\n            <div class=\"ant-form-item-control-input-content\">\n              <div style=\"display: flex;\" class=\"ant-space ant-space-horizontal ant-space-align-baseline\">\n                <div class=\"ant-space-item\" style=\"margin-right: 8px;\">\n                  <div class=\"ant-form-item\">\n                    <div class=\"ant-row ant-form-row\">\n                      <!---->\n                      <div class=\"ant-col ant-form-item-control\">\n                        <div class=\"ant-form-item-control-input\">\n                          <div class=\"ant-form-item-control-input-content\">\n                            <div class=\"ant-input-number\">\n                              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n                              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" placeholder=\"offsetLeft\" class=\"ant-input-number-input\"></div>\n                            </div>\n                          </div>\n                        </div>\n                        <!---->\n                        <!---->\n                      </div>\n                    </div>\n                    <!---->\n                  </div>\n                </div>\n                <!---->\n                <div class=\"ant-space-item\">\n                  <div class=\"ant-form-item\">\n                    <div class=\"ant-row ant-form-row\">\n                      <!---->\n                      <div class=\"ant-col ant-form-item-control\">\n                        <div class=\"ant-form-item-control-input\">\n                          <div class=\"ant-form-item-control-input-content\">\n                            <div class=\"ant-input-number\">\n                              <div class=\"ant-input-number-handler-wrap\"><span unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-up\"><span role=\"img\" aria-label=\"up\" class=\"anticon anticon-up ant-input-number-handler-up-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path></svg></span></span><span unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\" aria-disabled=\"false\" class=\"ant-input-number-handler ant-input-number-handler-down\"><span role=\"img\" aria-label=\"down\" class=\"anticon anticon-down ant-input-number-handler-down-inner\"><svg focusable=\"false\" class=\"\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\" viewBox=\"64 64 896 896\"><path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path></svg></span></span></div>\n                              <div class=\"ant-input-number-input-wrap\"><input autocomplete=\"off\" role=\"spinbutton\" step=\"1\" placeholder=\"offsetTop\" class=\"ant-input-number-input\"></div>\n                            </div>\n                          </div>\n                        </div>\n                        <!---->\n                        <!---->\n                      </div>\n                    </div>\n                    <!---->\n                  </div>\n                </div>\n                <!---->\n              </div>\n            </div>\n          </div>\n          <!---->\n          <!---->\n        </div>\n      </div>\n      <!---->\n    </div>\n  </form>\n</div>\n`;\n\nexports[`renders ./components/watermark/demo/image.vue correctly 1`] = `\n<div class=\"\" style=\"position: relative;\">\n  <div style=\"height: 500px;\"></div>\n</div>\n`;\n\nexports[`renders ./components/watermark/demo/multi-line.vue correctly 1`] = `\n<div class=\"\" style=\"position: relative;\">\n  <div style=\"height: 500px;\"></div>\n</div>\n`;\n"
  },
  {
    "path": "components/watermark/__tests__/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Watermark The watermark should render successfully  1`] = `\n<div class=\"watermark\" style=\"position: relative;\">\n  <!---->\n</div>\n`;\n"
  },
  {
    "path": "components/watermark/__tests__/demo.test.js",
    "content": "import demoTest from '../../../tests/shared/demoTest';\n\ndemoTest('watermark');\n"
  },
  {
    "path": "components/watermark/__tests__/index.test.js",
    "content": "import Watermark from '..';\nimport mountTest from '../../../tests/shared/mountTest';\nimport { mount } from '@vue/test-utils';\n\ndescribe('Watermark', () => {\n  mountTest(Watermark);\n  const mockSrcSet = jest.spyOn(Image.prototype, 'src', 'set');\n  beforeAll(() => {\n    mockSrcSet.mockImplementation(function fn() {\n      this.onload?.();\n    });\n  });\n\n  afterAll(() => {\n    mockSrcSet.mockRestore();\n  });\n\n  it('The watermark should render successfully ', function () {\n    const wrapper = mount({\n      setup() {\n        return () => {\n          return <Watermark class=\"watermark\" content=\"Ant Design\" />;\n        };\n      },\n    });\n    expect(wrapper.find('.watermark').exists()).toBe(true);\n    expect(wrapper.html()).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "components/watermark/demo/basic.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 基本\n  en-US: Basic\n---\n\n## zh-CN\n\n最简单的用法。\n\n## en-US\n\nThe most basic usage.\n\n</docs>\n\n<template>\n  <a-watermark content=\"Ant Design Vue\">\n    <div style=\"height: 500px\" />\n  </a-watermark>\n</template>\n"
  },
  {
    "path": "components/watermark/demo/custom.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 自定义配置\n  en-US: Custom\n---\n\n## zh-CN\n\n通过自定义参数配置预览水印效果。\n\n## en-US\n\nPreview the watermark effect by configuring custom parameters.\n\n</docs>\n\n<template>\n  <div style=\"display: flex\">\n    <a-watermark v-bind=\"model\">\n      <a-typography>\n        <a-typography-paragraph>\n          The light-speed iteration of the digital world makes products more complex. However, human\n          consciousness and attention resources are limited. Facing this design contradiction, the\n          pursuit of natural interaction will be the consistent direction of Ant Design.\n        </a-typography-paragraph>\n        <a-typography-paragraph>\n          Natural user cognition: According to cognitive psychology, about 80% of external\n          information is obtained through visual channels. The most important visual elements in the\n          interface design, including layout, colors, illustrations, icons, etc., should fully\n          absorb the laws of nature, thereby reducing the user&apos;s cognitive cost and bringing\n          authentic and smooth feelings. In some scenarios, opportunely adding other sensory\n          channels such as hearing, touch can create a richer and more natural product experience.\n        </a-typography-paragraph>\n        <a-typography-paragraph>\n          Natural user behavior: In the interaction with the system, the designer should fully\n          understand the relationship between users, system roles, and task objectives, and also\n          contextually organize system functions and services. At the same time, a series of methods\n          such as behavior analysis, artificial intelligence and sensors could be applied to assist\n          users to make effective decisions and reduce extra operations of users, to save\n          users&apos; mental and physical resources and make human-computer interaction more\n          natural.\n        </a-typography-paragraph>\n      </a-typography>\n      <img\n        style=\"z-index: 10; width: 100%; max-width: 800px; position: relative\"\n        src=\"https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ\"\n        alt=\"示例图片\"\n      />\n    </a-watermark>\n    <a-form\n      style=\"\n        width: 280px;\n        flex-shrink: 0;\n        border-left: 1px solid #eee;\n        padding-left: 20px;\n        margin-left: 20px;\n      \"\n      layout=\"vertical\"\n      :model=\"model\"\n    >\n      <a-form-item name=\"content\" label=\"Content\">\n        <a-input v-model:value=\"model.content\" />\n      </a-form-item>\n      <a-form-item name=\"font.fontSize\" label=\"FontSize\">\n        <a-slider v-model:value=\"model.font.fontSize\" :step=\"1\" :min=\"0\" :max=\"100\" />\n      </a-form-item>\n      <a-form-item name=\"zIndex\" label=\"zIndex\">\n        <a-slider v-model:value=\"model.zIndex\" :step=\"1\" :min=\"0\" :max=\"100\" />\n      </a-form-item>\n      <a-form-item name=\"rotate\" label=\"Rotate\">\n        <a-slider v-model:value=\"model.rotate\" :step=\"1\" :min=\"-180\" :max=\"180\" />\n      </a-form-item>\n      <a-form-item label=\"Gap\" style=\"margin-bottom: 0\">\n        <a-space style=\"display: flex\" align=\"baseline\">\n          <a-form-item :name=\"['gap', 0]\">\n            <a-input-number v-model:value=\"model.gap[0]\" placeholder=\"gapX\" />\n          </a-form-item>\n          <a-form-item :name=\"['gap', 1]\">\n            <a-input-number v-model:value=\"model.gap[1]\" placeholder=\"gapY\" />\n          </a-form-item>\n        </a-space>\n      </a-form-item>\n      <a-form-item label=\"Offset\" style=\"margin-bottom: 0\">\n        <a-space style=\"display: flex\" align=\"baseline\">\n          <a-form-item :name=\"['offset', 0]\">\n            <a-input-number v-model:value=\"model.offset[0]\" placeholder=\"offsetLeft\" />\n          </a-form-item>\n          <a-form-item :name=\"['offset', 1]\">\n            <a-input-number v-model:value=\"model.offset[1]\" placeholder=\"offsetTop\" />\n          </a-form-item>\n        </a-space>\n      </a-form-item>\n    </a-form>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { reactive } from 'vue';\nconst model = reactive({\n  content: 'Ant Design Vue',\n  font: {\n    fontSize: 16,\n  },\n  zIndex: 11,\n  rotate: -22,\n  gap: [100, 100] as [number, number],\n  offset: [],\n});\n</script>\n"
  },
  {
    "path": "components/watermark/demo/image.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 图片水印\n  en-US: Image watermark\n---\n\n## zh-CN\n\n通过 `image` 指定图片地址。为保证图片高清且不被拉伸，请设置 width 和 height, 并上传至少两倍的宽高的 logo 图片地址。\n\n## en-US\n\nSpecify the image address via 'image'. To ensure that the image is high definition and not stretched, set the width and height, and upload at least twice the width and height of the logo image address.\n\n</docs>\n\n<template>\n  <a-watermark\n    :height=\"30\"\n    :width=\"130\"\n    image=\"https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*lkAoRbywo0oAAAAAAAAAAAAADrJ8AQ/original\"\n  >\n    <div style=\"height: 500px\" />\n  </a-watermark>\n</template>\n"
  },
  {
    "path": "components/watermark/demo/index.vue",
    "content": "<template>\n  <demo-sort :cols=\"1\">\n    <basic />\n    <multi-line />\n    <watermark-image />\n    <custom />\n  </demo-sort>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport CN from '../index.zh-CN.md';\nimport US from '../index.en-US.md';\nimport Basic from './basic.vue';\nimport MultiLine from './multi-line.vue';\nimport WatermarkImage from './image.vue';\nimport Custom from './custom.vue';\nexport default defineComponent({\n  CN,\n  US,\n  components: {\n    Basic,\n    MultiLine,\n    WatermarkImage,\n    Custom,\n  },\n});\n</script>\n"
  },
  {
    "path": "components/watermark/demo/multi-line.vue",
    "content": "<docs>\n---\norder: 0\ntitle:\n  zh-CN: 多行水印\n  en-US: Multi-line watermark\n---\n\n## zh-CN\n\n通过 `content` 设置 字符串数组 指定多行文字水印内容。\n\n## en-US\n\nUse 'content' to set a string array to specify multi-line text watermark content.\n\n</docs>\n\n<template>\n  <a-watermark :content=\"['Ant Design Vue', 'Happy Working']\">\n    <div style=\"height: 500px\" />\n  </a-watermark>\n</template>\n"
  },
  {
    "path": "components/watermark/index.en-US.md",
    "content": "---\ncategory: Components\ntype: Other\ntitle: Watermark\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*wr1ISY50SyYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*duAQQbjHlHQAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\nAdd specific text or patterns to the page.\n\n## When To Use\n\n- Use when the page needs to be watermarked to identify the copyright.\n- Suitable for preventing information theft.\n\n## API\n\n### Watermark\n\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| width | The width of the watermark, the default value of `content` is its own width | number | 120 |  |\n| height | The height of the watermark, the default value of `content` is its own height | number | 64 |  |\n| rotate | When the watermark is drawn, the rotation Angle, unit `°` | number | -22 |  |\n| zIndex | The z-index of the appended watermark element | number | 9 |  |\n| image | Image source, it is recommended to export 2x or 3x image, high priority | string | - |  |\n| content | Watermark text content | string \\| string[] | - |  |\n| font | Text style | [Font](#font) | [Font](#font) |  |\n| gap | The spacing between watermarks | \\[number, number\\] | \\[100, 100\\] |  |\n| offset | The offset of the watermark from the upper left corner of the container. The default is `gap/2` | \\[number, number\\] | \\[gap\\[0\\]/2, gap\\[1\\]/2\\] |  |\n\n### Font\n\n<!-- prettier-ignore -->\n| Property | Description | Type | Default | Version |\n| --- | --- | --- | --- | --- |\n| color | font color | string | rgba(0,0,0,.15) |  |\n| fontSize | font size | number | 16 |  |\n| fontWeight | font weight | `normal` \\| `light` \\| `weight` \\| number | normal |  |\n| fontFamily | font family | string | sans-serif |  |\n| fontStyle | font style  | `none` \\| `normal` \\| `italic` \\| `oblique` | normal |  |\n"
  },
  {
    "path": "components/watermark/index.tsx",
    "content": "import type { ExtractPropTypes, CSSProperties } from 'vue';\nimport { computed, defineComponent, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue';\nimport { getStyleStr, getPixelRatio, rotateWatermark, reRendering } from './utils';\nimport { arrayType, objectType, someType, withInstall } from '../_util/type';\nimport { useMutationObserver } from '../_util/hooks/_vueuse/useMutationObserver';\nimport { initDefaultProps } from '../_util/props-util';\nimport { useToken } from '../theme/internal';\n\n/**\n * Base size of the canvas, 1 for parallel layout and 2 for alternate layout\n * Only alternate layout is currently supported\n */\nconst BaseSize = 2;\nconst FontGap = 3;\n\nexport interface WatermarkFontType {\n  color?: string;\n  fontSize?: number | string;\n  fontWeight?: 'normal' | 'light' | 'weight' | number;\n  fontStyle?: 'none' | 'normal' | 'italic' | 'oblique';\n  fontFamily?: string;\n}\nexport const watermarkProps = () => ({\n  zIndex: Number,\n  rotate: Number,\n  width: Number,\n  height: Number,\n  image: String,\n  content: someType<string | string[]>([String, Array]),\n  font: objectType<WatermarkFontType>(),\n  rootClassName: String,\n  gap: arrayType<[number, number]>(),\n  offset: arrayType<[number, number]>(),\n});\nexport type WatermarkProps = Partial<ExtractPropTypes<ReturnType<typeof watermarkProps>>>;\nconst Watermark = defineComponent({\n  name: 'AWatermark',\n  inheritAttrs: false,\n  props: initDefaultProps(watermarkProps(), {\n    zIndex: 9,\n    rotate: -22,\n    font: {},\n    gap: [100, 100],\n  }),\n  setup(props, { slots, attrs }) {\n    const [, token] = useToken();\n    const containerRef = shallowRef<HTMLDivElement>();\n    const watermarkRef = shallowRef<HTMLDivElement>();\n    const stopObservation = shallowRef(false);\n    const gapX = computed(() => props.gap?.[0] ?? 100);\n    const gapY = computed(() => props.gap?.[1] ?? 100);\n    const gapXCenter = computed(() => gapX.value / 2);\n    const gapYCenter = computed(() => gapY.value / 2);\n    const offsetLeft = computed(() => props.offset?.[0] ?? gapXCenter.value);\n    const offsetTop = computed(() => props.offset?.[1] ?? gapYCenter.value);\n    const fontSize = computed(() => props.font?.fontSize ?? token.value.fontSizeLG);\n    const fontWeight = computed(() => props.font?.fontWeight ?? 'normal');\n    const fontStyle = computed(() => props.font?.fontStyle ?? 'normal');\n    const fontFamily = computed(() => props.font?.fontFamily ?? 'sans-serif');\n    const color = computed(() => props.font?.color ?? token.value.colorFill);\n    const markStyle = computed(() => {\n      const markStyle: CSSProperties = {\n        zIndex: props.zIndex ?? 9,\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        width: '100%',\n        height: '100%',\n        pointerEvents: 'none',\n        backgroundRepeat: 'repeat',\n      };\n\n      /** Calculate the style of the offset */\n      let positionLeft = offsetLeft.value - gapXCenter.value;\n      let positionTop = offsetTop.value - gapYCenter.value;\n      if (positionLeft > 0) {\n        markStyle.left = `${positionLeft}px`;\n        markStyle.width = `calc(100% - ${positionLeft}px)`;\n        positionLeft = 0;\n      }\n      if (positionTop > 0) {\n        markStyle.top = `${positionTop}px`;\n        markStyle.height = `calc(100% - ${positionTop}px)`;\n        positionTop = 0;\n      }\n      markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`;\n\n      return markStyle;\n    });\n    const destroyWatermark = () => {\n      if (watermarkRef.value) {\n        watermarkRef.value.remove();\n        watermarkRef.value = undefined;\n      }\n    };\n\n    const appendWatermark = (base64Url: string, markWidth: number) => {\n      if (containerRef.value && watermarkRef.value) {\n        stopObservation.value = true;\n        watermarkRef.value.setAttribute(\n          'style',\n          getStyleStr({\n            ...markStyle.value,\n            backgroundImage: `url('${base64Url}')`,\n            backgroundSize: `${(gapX.value + markWidth) * BaseSize}px`,\n          }),\n        );\n        containerRef.value?.append(watermarkRef.value);\n        // Delayed execution\n        setTimeout(() => {\n          stopObservation.value = false;\n        });\n      }\n    };\n    /**\n     * Get the width and height of the watermark. The default values are as follows\n     * Image: [120, 64]; Content: It's calculated by content;\n     */\n    const getMarkSize = (ctx: CanvasRenderingContext2D) => {\n      let defaultWidth = 120;\n      let defaultHeight = 64;\n      const content = props.content;\n      const image = props.image;\n      const width = props.width;\n      const height = props.height;\n      if (!image && ctx.measureText) {\n        ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`;\n        const contents = Array.isArray(content) ? content : [content];\n        const widths = contents.map(item => ctx.measureText(item!).width);\n        defaultWidth = Math.ceil(Math.max(...widths));\n        defaultHeight = Number(fontSize.value) * contents.length + (contents.length - 1) * FontGap;\n      }\n      return [width ?? defaultWidth, height ?? defaultHeight] as const;\n    };\n    const fillTexts = (\n      ctx: CanvasRenderingContext2D,\n      drawX: number,\n      drawY: number,\n      drawWidth: number,\n      drawHeight: number,\n    ) => {\n      const ratio = getPixelRatio();\n      const content = props.content;\n      const mergedFontSize = Number(fontSize.value) * ratio;\n      ctx.font = `${fontStyle.value} normal ${fontWeight.value} ${mergedFontSize}px/${drawHeight}px ${fontFamily.value}`;\n      ctx.fillStyle = color.value;\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'top';\n      ctx.translate(drawWidth / 2, 0);\n      const contents = Array.isArray(content) ? content : [content];\n      contents?.forEach((item, index) => {\n        ctx.fillText(item ?? '', drawX, drawY + index * (mergedFontSize + FontGap * ratio));\n      });\n    };\n    const renderWatermark = () => {\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n      const image = props.image;\n      const rotate = props.rotate ?? -22;\n\n      if (ctx) {\n        if (!watermarkRef.value) {\n          watermarkRef.value = document.createElement('div');\n        }\n\n        const ratio = getPixelRatio();\n        const [markWidth, markHeight] = getMarkSize(ctx);\n        const canvasWidth = (gapX.value + markWidth) * ratio;\n        const canvasHeight = (gapY.value + markHeight) * ratio;\n        canvas.setAttribute('width', `${canvasWidth * BaseSize}px`);\n        canvas.setAttribute('height', `${canvasHeight * BaseSize}px`);\n\n        const drawX = (gapX.value * ratio) / 2;\n        const drawY = (gapY.value * ratio) / 2;\n        const drawWidth = markWidth * ratio;\n        const drawHeight = markHeight * ratio;\n        const rotateX = (drawWidth + gapX.value * ratio) / 2;\n        const rotateY = (drawHeight + gapY.value * ratio) / 2;\n        /** Alternate drawing parameters */\n        const alternateDrawX = drawX + canvasWidth;\n        const alternateDrawY = drawY + canvasHeight;\n        const alternateRotateX = rotateX + canvasWidth;\n        const alternateRotateY = rotateY + canvasHeight;\n\n        ctx.save();\n        rotateWatermark(ctx, rotateX, rotateY, rotate);\n\n        if (image) {\n          const img = new Image();\n          img.onload = () => {\n            ctx.drawImage(img, drawX, drawY, drawWidth, drawHeight);\n            /** Draw interleaved pictures after rotation */\n            ctx.restore();\n            rotateWatermark(ctx, alternateRotateX, alternateRotateY, rotate);\n            ctx.drawImage(img, alternateDrawX, alternateDrawY, drawWidth, drawHeight);\n            appendWatermark(canvas.toDataURL(), markWidth);\n          };\n          img.crossOrigin = 'anonymous';\n          img.referrerPolicy = 'no-referrer';\n          img.src = image;\n        } else {\n          fillTexts(ctx, drawX, drawY, drawWidth, drawHeight);\n          /** Fill the interleaved text after rotation */\n          ctx.restore();\n          rotateWatermark(ctx, alternateRotateX, alternateRotateY, rotate);\n          fillTexts(ctx, alternateDrawX, alternateDrawY, drawWidth, drawHeight);\n          appendWatermark(canvas.toDataURL(), markWidth);\n        }\n      }\n    };\n    onMounted(() => {\n      renderWatermark();\n    });\n    watch(\n      () => [props, token.value.colorFill, token.value.fontSizeLG],\n      () => {\n        renderWatermark();\n      },\n      {\n        deep: true,\n        flush: 'post',\n      },\n    );\n    onBeforeUnmount(() => {\n      destroyWatermark();\n    });\n    const onMutate = (mutations: MutationRecord[]) => {\n      if (stopObservation.value) {\n        return;\n      }\n      mutations.forEach(mutation => {\n        if (reRendering(mutation, watermarkRef.value)) {\n          destroyWatermark();\n          renderWatermark();\n        }\n      });\n    };\n    useMutationObserver(containerRef, onMutate, {\n      attributes: true,\n      subtree: true,\n      childList: true,\n      attributeFilter: ['style', 'class'],\n    });\n    return () => {\n      return (\n        <div\n          {...attrs}\n          ref={containerRef}\n          class={[attrs.class, props.rootClassName]}\n          style={[{ position: 'relative' }, attrs.style as CSSProperties]}\n        >\n          {slots.default?.()}\n        </div>\n      );\n    };\n  },\n});\n\nexport default withInstall(Watermark);\n"
  },
  {
    "path": "components/watermark/index.zh-CN.md",
    "content": "---\ncategory: Components\nsubtitle: 水印\ntype: 其他\ntitle: Watermark\ncover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*wr1ISY50SyYAAAAAAAAAAAAADrJ8AQ/original\ncoverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*duAQQbjHlHQAAAAAAAAAAAAADrJ8AQ/original\ntag: New\n---\n\n给页面的某个区域加上水印。\n\n## 何时使用\n\n- 页面需要添加水印标识版权时使用。\n- 适用于防止信息盗用。\n\n## API\n\n### Watermark\n\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| width | 水印的宽度，`content` 的默认值为自身的宽度 | number | 120 |  |\n| height | 水印的高度，`content` 的默认值为自身的高度 | number | 64 |  |\n| rotate | 水印绘制时，旋转的角度，单位 `°` | number | -22 |  |\n| zIndex | 追加的水印元素的 z-index | number | 9 |  |\n| image | 图片源，建议导出 2 倍或 3 倍图，优先级高 | string | - |  |\n| content | 水印文字内容 | string \\| string[] | - |  |\n| font | 文字样式 | [Font](#font) | [Font](#font) |  |\n| gap | 水印之间的间距 | \\[number, number\\] | \\[100, 100\\] |  |\n| offset | 水印距离容器左上角的偏移量，默认为 `gap/2` | \\[number, number\\] | \\[gap\\[0\\]/2, gap\\[1\\]/2\\] |  |\n\n### Font\n\n<!-- prettier-ignore -->\n| 参数 | 说明 | 类型 | 默认值 | 版本 |\n| --- | --- | --- | --- | --- |\n| color | 字体颜色 | string | rgba(0,0,0,.15) |  |\n| fontSize | 字体大小 | number | 16 |  |\n| fontWeight | 字体粗细 | `normal` \\| `light` \\| `weight` \\| number | normal |  |\n| fontFamily | 字体类型 | string | sans-serif |  |\n| fontStyle | 字体样式 | `none` \\| `normal` \\| `italic` \\| `oblique` | normal |  |\n"
  },
  {
    "path": "components/watermark/utils.ts",
    "content": "import type { CSSProperties } from 'vue';\n/** converting camel-cased strings to be lowercase and link it with Separato */\nexport function toLowercaseSeparator(key: string) {\n  return key.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n\nexport function getStyleStr(style: CSSProperties): string {\n  return Object.keys(style)\n    .map((key: keyof CSSProperties) => `${toLowercaseSeparator(key)}: ${style[key]};`)\n    .join(' ');\n}\n\n/** Returns the ratio of the device's physical pixel resolution to the css pixel resolution */\nexport function getPixelRatio() {\n  return window.devicePixelRatio || 1;\n}\n\n/** Rotate with the watermark as the center point */\nexport function rotateWatermark(\n  ctx: CanvasRenderingContext2D,\n  rotateX: number,\n  rotateY: number,\n  rotate: number,\n) {\n  ctx.translate(rotateX, rotateY);\n  ctx.rotate((Math.PI / 180) * Number(rotate));\n  ctx.translate(-rotateX, -rotateY);\n}\n\n/** Whether to re-render the watermark */\nexport const reRendering = (mutation: MutationRecord, watermarkElement?: HTMLElement) => {\n  let flag = false;\n  // Whether to delete the watermark node\n  if (mutation.removedNodes.length) {\n    flag = Array.from(mutation.removedNodes).some(node => node === watermarkElement);\n  }\n  // Whether the watermark dom property value has been modified\n  if (mutation.type === 'attributes' && mutation.target === watermarkElement) {\n    flag = true;\n  }\n  return flag;\n};\n"
  },
  {
    "path": "index-style-only.js",
    "content": "function pascalCase(name) {\n  return name.charAt(0).toUpperCase() + name.slice(1).replace(/-(\\w)/g, (m, n) => n.toUpperCase());\n}\n\n// Just import style for https://github.com/ant-design/ant-design/issues/3745\nconst req = require.context('./components', true, /^\\.\\/[^_][\\w-]+\\/style\\/index\\.tsx?$/);\n\nreq.keys().forEach(mod => {\n  let v = req(mod);\n  if (v && v.default) {\n    v = v.default;\n  }\n  const match = mod.match(/^\\.\\/([^_][\\w-]+)\\/index\\.tsx?$/);\n  if (match && match[1]) {\n    if (match[1] === 'message' || match[1] === 'notification') {\n      // message & notification should not be capitalized\n      exports[match[1]] = v;\n    } else {\n      exports[pascalCase(match[1])] = v;\n    }\n  }\n});\n\nmodule.exports = exports;\n"
  },
  {
    "path": "index-with-locales.js",
    "content": "const antd = require('./components');\n\nconst req = require.context('./components', true, /^\\.\\/locale\\/.+_.+\\.tsx?$/);\n\nantd.locales = {};\n\nreq.keys().forEach(mod => {\n  const matches = mod.match(/\\/([^/]+).tsx?$/);\n  antd.locales[matches[1]] = req(mod).default;\n});\n\nmodule.exports = antd;\n"
  },
  {
    "path": "index.esm.js",
    "content": "export * from './components';\n"
  },
  {
    "path": "index.js",
    "content": "require('./index-style-only');\n\nmodule.exports = require('./components');\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"ant-design-vue\",\n  \"version\": \"4.2.6\",\n  \"title\": \"Ant Design Vue\",\n  \"description\": \"An enterprise-class UI design language and Vue-based implementation\",\n  \"keywords\": [\n    \"vue\",\n    \"vue3\",\n    \"ant\",\n    \"design\",\n    \"antd\",\n    \"vueComponent\",\n    \"component\",\n    \"components\",\n    \"ui\",\n    \"framework\",\n    \"frontend\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"unpkg\": \"dist/antd.min.js\",\n  \"typings\": \"es/index.d.ts\",\n  \"files\": [\n    \"dist\",\n    \"lib\",\n    \"es\",\n    \"scripts\",\n    \"vetur\",\n    \"typings/global.d.ts\",\n    \"locale\"\n  ],\n  \"scripts\": {\n    \"collect-token-statistic\": \"tsx scripts/collect-token-statistic.js\",\n    \"token-meta\": \"node scripts/generate-token-meta.js\",\n    \"predev\": \"npm run version & npm run collect-token-statistic & npm run token-meta && node node_modules/esbuild/install.js\",\n    \"precompile\": \"npm run version & npm run collect-token-statistic & npm run token-meta\",\n    \"pretest\": \"npm run version\",\n    \"predist\": \"npm run version\",\n    \"prebuild\": \"npm run version & npm run routes & npm run collect-token-statistic & npm run token-meta\",\n    \"dev\": \"npm run routes && vite serve site\",\n    \"fast-dev\": \"npm run routes && vite serve site\",\n    \"test\": \"cross-env NODE_ENV=test jest --config .jest.js\",\n    \"compile\": \"node antd-tools/cli/run.js compile\",\n    \"generator-webtypes\": \"tsc -p antd-tools/generator-types/tsconfig.json && node antd-tools/generator-types/index.js\",\n    \"pub\": \"npm run version & npm run collect-token-statistic & npm run token-meta && node --max_old_space_size=8192 antd-tools/cli/run.js pub\",\n    \"pub-with-ci\": \"npm run version & npm run collect-token-statistic & npm run token-meta && node antd-tools/cli/run.js pub-with-ci\",\n    \"prepublishOnly\": \"node antd-tools/cli/run.js guard\",\n    \"pre-publish\": \"npm run generator-webtypes\",\n    \"prettier\": \"prettier -c --write **/*\",\n    \"pretty-quick\": \"pretty-quick\",\n    \"dist\": \"node --max_old_space_size=8192 antd-tools/cli/run.js dist\",\n    \"lint\": \"npm run tsc && npm run lint:demo && npm run lint:md && npm run lint:script && npm run lint:site\",\n    \"lint:components\": \"eslint --fix --ext .jsx,.js,.ts,.tsx ./components\",\n    \"lint:demo\": \"eslint --fix components/*/demo/*.vue\",\n    \"lint:md\": \"eslint --fix *.md\",\n    \"lint:script\": \"eslint . --ext '.js,.jsx,.ts,.tsx'\",\n    \"lint:site\": \"eslint --fix -c ./.eslintrc.js --ext .jsx,.js,.ts,.tsx,vue ./site\",\n    \"lint:style\": \"stylelint \\\"{site,components}/**/*.less\\\" --syntax less\",\n    \"codecov\": \"codecov\",\n    \"routes\": \"node site/scripts/genrateRoutes.js\",\n    \"tsc\": \"tsc --noEmit\",\n    \"vue-tsc\": \"vue-tsc --noEmit\",\n    \"build\": \"node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build site --base=/\",\n    \"pub:site\": \"npm run site && node site/scripts/pushToOSS.js\",\n    \"prepare\": \"husky install\",\n    \"version\": \"node ./scripts/generate-version\",\n    \"sort-api\": \"node antd-tools/cli/run.js sort-api-table\"\n  },\n  \"browserslist\": [\n    \"> 0.5%\",\n    \"last 2 versions\",\n    \"Firefox ESR\",\n    \"not dead\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/vueComponent/ant-design-vue.git\"\n  },\n  \"license\": \"MIT\",\n  \"funding\": {\n    \"type\": \"opencollective\",\n    \"url\": \"https://opencollective.com/ant-design-vue\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/vueComponent/ant-design-vue/issues\"\n  },\n  \"homepage\": \"https://www.antdv.com/\",\n  \"peerDependencies\": {\n    \"vue\": \">=3.2.0\"\n  },\n  \"engines\": {\n    \"node\": \">=12.22.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.8.4\",\n    \"@babel/core\": \"^7.10.5\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.8.3\",\n    \"@babel/plugin-proposal-export-default-from\": \"^7.8.3\",\n    \"@babel/plugin-proposal-export-namespace-from\": \"^7.12.1\",\n    \"@babel/plugin-proposal-object-rest-spread\": \"^7.9.6\",\n    \"@babel/plugin-proposal-optional-chaining\": \"^7.10.1\",\n    \"@babel/plugin-syntax-dynamic-import\": \"^7.8.3\",\n    \"@babel/plugin-transform-member-expression-literals\": \"^7.8.3\",\n    \"@babel/plugin-transform-object-assign\": \"^7.8.3\",\n    \"@babel/plugin-transform-property-literals\": \"^7.8.3\",\n    \"@babel/plugin-transform-runtime\": \"^7.10.5\",\n    \"@babel/plugin-transform-template-literals\": \"^7.8.3\",\n    \"@babel/plugin-transform-typescript\": \"^7.12.1\",\n    \"@babel/polyfill\": \"^7.8.7\",\n    \"@babel/preset-env\": \"^7.9.6\",\n    \"@babel/preset-typescript\": \"^7.10.4\",\n    \"@commitlint/cli\": \"^12.0.0\",\n    \"@commitlint/config-conventional\": \"^12.0.0\",\n    \"@octokit/rest\": \"^18.0.0\",\n    \"@rollup/plugin-babel\": \"^5.3.0\",\n    \"@types/compression\": \"^1.7.0\",\n    \"@types/fs-extra\": \"^9.0.8\",\n    \"@types/jest\": \"^28.1.4\",\n    \"@types/koa\": \"^2.11.6\",\n    \"@types/lodash-es\": \"^4.17.3\",\n    \"@types/lru-cache\": \"^5.1.0\",\n    \"@types/markdown-it\": \"^10.0.2\",\n    \"@types/node\": \"^14.0.0\",\n    \"@types/postcss-load-config\": \"^2.0.1\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.4.0\",\n    \"@typescript-eslint/parser\": \"^5.4.0\",\n    \"@vitejs/plugin-legacy\": \"^2.2.0\",\n    \"@vitejs/plugin-vue\": \"^3.0.0\",\n    \"@vitejs/plugin-vue-jsx\": \"^2.0.0\",\n    \"@vue/babel-plugin-jsx\": \"^1.0.0\",\n    \"@vue/cli-plugin-eslint\": \"^5.0.0\",\n    \"@vue/eslint-config-prettier\": \"^8.0.0\",\n    \"@vue/eslint-config-typescript\": \"^11.0.0\",\n    \"@vue/test-utils\": \"^2.0.2\",\n    \"@vue/vue3-jest\": \"28\",\n    \"@vueuse/core\": \"^8.3.1\",\n    \"@webpack-cli/serve\": \"^1.3.1\",\n    \"acorn\": \"^8.0.0\",\n    \"ali-oss\": \"^6.16.0\",\n    \"autoprefixer\": \"^10.2.0\",\n    \"axios\": \"^0.22.0\",\n    \"babel-eslint\": \"^10.0.1\",\n    \"babel-jest\": \"^28.1.2\",\n    \"babel-loader\": \"^8.0.0\",\n    \"babel-plugin-import\": \"^1.1.1\",\n    \"babel-plugin-inline-import-data-uri\": \"^1.0.1\",\n    \"babel-plugin-istanbul\": \"^6.0.0\",\n    \"babel-plugin-transform-require-context\": \"^0.1.1\",\n    \"case-sensitive-paths-webpack-plugin\": \"^2.1.2\",\n    \"chalk\": \"^4.1.1\",\n    \"codecov\": \"^3.0.0\",\n    \"codesandbox\": \"^2.2.3\",\n    \"colorful\": \"^2.1.0\",\n    \"commander\": \"^6.1.0\",\n    \"compare-versions\": \"^3.3.0\",\n    \"cross-env\": \"^7.0.0\",\n    \"css-loader\": \"^5.0.0\",\n    \"css-minimizer-webpack-plugin\": \"^3.0.0\",\n    \"cz-git\": \"^1.3.8\",\n    \"date-fns\": \"^2.24.0\",\n    \"diacritics\": \"^1.3.0\",\n    \"docsearch.js\": \"^2.6.3\",\n    \"duplicate-package-checker-webpack-plugin\": \"^3.0.0\",\n    \"enquire-js\": \"^0.2.1\",\n    \"esbuild\": \"~0.12.29\",\n    \"esbuild-loader\": \"^3.0.0\",\n    \"escape-html\": \"^1.0.3\",\n    \"eslint\": \"^8.3.0\",\n    \"eslint-config-prettier\": \"^8.0.0\",\n    \"eslint-plugin-html\": \"^6.0.0\",\n    \"eslint-plugin-import\": \"^2.24.2\",\n    \"eslint-plugin-jest\": \"^26.0.0\",\n    \"eslint-plugin-markdown\": \"^2.0.0\",\n    \"eslint-plugin-no-explicit-type-exports\": \"^0.12.0\",\n    \"eslint-plugin-prettier\": \"^3.1.0\",\n    \"eslint-plugin-vue\": \"^9.17.0\",\n    \"fast-glob\": \"^3.2.7\",\n    \"fetch-jsonp\": \"^1.1.3\",\n    \"fs-extra\": \"^10.0.0\",\n    \"glob\": \"^7.1.2\",\n    \"globby\": \"^11.1.0\",\n    \"gray-matter\": \"^4.0.3\",\n    \"gulp\": \"^4.0.1\",\n    \"gulp-babel\": \"^8.0.0\",\n    \"gulp-strip-code\": \"^0.1.4\",\n    \"gulp-typescript\": \"^6.0.0-alpha.1\",\n    \"html-webpack-plugin\": \"^5.3.1\",\n    \"husky\": \"^6.0.0\",\n    \"ignore-emit-webpack-plugin\": \"^2.0.6\",\n    \"is-windows\": \"^1.0.2\",\n    \"jest\": \"^28.1.2\",\n    \"jest-environment-jsdom\": \"^28.0.0\",\n    \"jest-environment-node\": \"^28.0.2\",\n    \"jest-serializer-vue\": \"^2.0.0\",\n    \"jest-transform-stub\": \"^2.0.0\",\n    \"js-base64\": \"^3.0.0\",\n    \"json-templater\": \"^1.2.0\",\n    \"jsonp\": \"^0.2.1\",\n    \"less\": \"^4.0.0\",\n    \"less-loader\": \"^10.0.0\",\n    \"less-plugin-npm-import\": \"^2.1.0\",\n    \"less-vars-to-js\": \"^1.3.0\",\n    \"lint-staged\": \"^11.0.0\",\n    \"majo\": \"^0.10.1\",\n    \"markdown-it\": \"^8.4.2\",\n    \"markdown-it-anchor\": \"^8.0.4\",\n    \"markdown-it-container\": \"^3.0.0\",\n    \"markdown-it-emoji\": \"^2.0.0\",\n    \"markdown-it-table-of-contents\": \"^0.5.2\",\n    \"marked\": \"0.3.18\",\n    \"merge2\": \"^1.2.1\",\n    \"mini-css-extract-plugin\": \"^2.4.5\",\n    \"minimist\": \"^1.2.0\",\n    \"mkdirp\": \"^0.5.1\",\n    \"mockdate\": \"^2.0.2\",\n    \"moment\": \"^2.29.1\",\n    \"nprogress\": \"^0.2.0\",\n    \"postcss\": \"^8.2.12\",\n    \"postcss-loader\": \"^6.0.0\",\n    \"prettier\": \"^2.2.0\",\n    \"pretty-quick\": \"^3.0.0\",\n    \"prismjs\": \"^1.23.0\",\n    \"progress\": \"^2.0.3\",\n    \"raw-loader\": \"^4.0.2\",\n    \"remark-frontmatter\": \"^2.0.0\",\n    \"remark-parse\": \"^8.0.0\",\n    \"remark-stringify\": \"^8.0.0\",\n    \"remark-yaml-config\": \"^4.1.0\",\n    \"remove-files-webpack-plugin\": \"^1.5.0\",\n    \"reqwest\": \"^2.0.5\",\n    \"rimraf\": \"^3.0.0\",\n    \"rucksack-css\": \"^1.0.2\",\n    \"selenium-server\": \"^3.0.1\",\n    \"semver\": \"^7.0.0\",\n    \"slash\": \"^3.0.0\",\n    \"string-replace-loader\": \"^3.1.0\",\n    \"style-loader\": \"^3.0.0\",\n    \"stylelint\": \"^14.0.0\",\n    \"stylelint-config-prettier\": \"^9.0.0\",\n    \"stylelint-config-rational-order\": \"^0.1.2\",\n    \"stylelint-config-standard\": \"^25.0.0\",\n    \"stylelint-declaration-block-no-ignored-properties\": \"^2.1.0\",\n    \"stylelint-order\": \"^5.0.0\",\n    \"terser-webpack-plugin\": \"^5.1.1\",\n    \"through2\": \"^3.0.0\",\n    \"tinycolor2\": \"^1.6.0\",\n    \"ts-jest\": \"^28.0.5\",\n    \"ts-loader\": \"^9.1.0\",\n    \"tsx\": \"^3.12.10\",\n    \"typedoc\": \"^0.23.25\",\n    \"typescript\": \"~4.9.3\",\n    \"umi-request\": \"^1.3.5\",\n    \"unified\": \"9.2.2\",\n    \"url-loader\": \"^3.0.0\",\n    \"vanilla-jsoneditor\": \"^0.15.1\",\n    \"vite\": \"^3.0.0\",\n    \"vue\": \"^3.2.0\",\n    \"vue-clipboard2\": \"0.3.3\",\n    \"vue-drag-resize\": \"^2.0.3\",\n    \"vue-eslint-parser\": \"^9.3.1\",\n    \"vue-i18n\": \"^9.1.7\",\n    \"vue-infinite-scroll\": \"^2.0.2\",\n    \"vue-loader\": \"^17.0.0\",\n    \"vue-request\": \"^2.0.4\",\n    \"vue-router\": \"^4.0.0\",\n    \"vue-style-loader\": \"^4.1.2\",\n    \"vue-tsc\": \"^1.0.6\",\n    \"vuex\": \"^4.0.0\",\n    \"webpack\": \"^5.0.0\",\n    \"webpack-bundle-analyzer\": \"^4.4.2\",\n    \"webpack-cli\": \"^4.6.0\",\n    \"webpack-dev-server\": \"^4.0.0\",\n    \"webpack-merge\": \"^5.0.0\",\n    \"webpackbar\": \"^5.0.2\",\n    \"xhr-mock\": \"^2.5.1\"\n  },\n  \"dependencies\": {\n    \"@ant-design/colors\": \"^6.0.0\",\n    \"@ant-design/icons-vue\": \"^7.0.0\",\n    \"@babel/runtime\": \"^7.10.5\",\n    \"@ctrl/tinycolor\": \"^3.5.0\",\n    \"@emotion/hash\": \"^0.9.0\",\n    \"@emotion/unitless\": \"^0.8.0\",\n    \"@simonwep/pickr\": \"~1.8.0\",\n    \"array-tree-filter\": \"^2.1.0\",\n    \"async-validator\": \"^4.0.0\",\n    \"csstype\": \"^3.1.1\",\n    \"dayjs\": \"^1.10.5\",\n    \"dom-align\": \"^1.12.1\",\n    \"dom-scroll-into-view\": \"^2.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"lodash-es\": \"^4.17.15\",\n    \"resize-observer-polyfill\": \"^1.5.1\",\n    \"scroll-into-view-if-needed\": \"^2.2.25\",\n    \"shallow-equal\": \"^1.0.0\",\n    \"stylis\": \"^4.1.3\",\n    \"throttle-debounce\": \"^5.0.0\",\n    \"vue-types\": \"^3.0.0\",\n    \"warning\": \"^4.0.0\"\n  },\n  \"sideEffects\": [\n    \"site/*\",\n    \"*.vue\",\n    \"*.md\",\n    \"dist/*\",\n    \"*.css\"\n  ],\n  \"config\": {\n    \"commitizen\": {\n      \"path\": \"node_modules/cz-git\",\n      \"czConfig\": \"./scripts/commitizen.js\"\n    }\n  },\n  \"web-types\": \"vetur/web-types.json\"\n}\n"
  },
  {
    "path": "plugin/docs/index.ts",
    "content": "import { createVueToMarkdownRenderFn } from './vueToMarkdown';\nimport type { MarkdownOptions } from '../md/markdown/markdown';\nimport type { Plugin } from 'vite';\nimport { createMarkdownToVueRenderFn } from '../md/markdownToVue';\n\ninterface Options {\n  root?: string;\n  markdown?: MarkdownOptions;\n}\n\nexport default (options: Options = {}): Plugin => {\n  const { root, markdown } = options;\n  const vueToMarkdown = createVueToMarkdownRenderFn(root);\n  const markdownToVue = createMarkdownToVueRenderFn(root, markdown);\n  return {\n    name: 'vueToMdToVue',\n    async transform(code, id) {\n      if (\n        (id.endsWith('.vue') && id.indexOf('/demo/') > -1 && id.indexOf('index.vue') === -1) ||\n        id.indexOf('/examples/App.vue') > -1\n      ) {\n        const res = vueToMarkdown(code, id);\n        // transform .md files into vueSrc so plugin-vue can handle it\n        return {\n          code: res.ignore ? res.vueSrc : (await markdownToVue(res.vueSrc, id)).vueSrc,\n          map: null,\n        };\n      }\n    },\n  };\n};\n"
  },
  {
    "path": "plugin/docs/vueToMarkdown.ts",
    "content": "import path from 'path';\nimport LRUCache from 'lru-cache';\nimport slash from 'slash';\nimport fetchCode from '../md/utils/fetchCode';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst debug = require('debug')('vitepress:md');\nconst cache = new LRUCache<string, MarkdownCompileResult>({ max: 1024 });\n\ninterface MarkdownCompileResult {\n  vueSrc: string;\n}\n\nexport function createVueToMarkdownRenderFn(root: string = process.cwd()): any {\n  return (src: string, file: string): MarkdownCompileResult => {\n    const relativePath = slash(path.relative(root, file));\n\n    const cached = cache.get(src);\n    if (cached) {\n      debug(`[cache hit] ${relativePath}`);\n      return cached;\n    }\n\n    const start = Date.now();\n    const docs = fetchCode(src, 'docs')?.trim();\n    const template = fetchCode(src, 'template');\n    const script = fetchCode(src, 'script');\n    const style = fetchCode(src, 'style');\n    const newContent = `${docs}\n\\`\\`\\`vue\n${template}\n${script}\n${style}\n\\`\\`\\`\n`;\n    debug(`[render] ${file} in ${Date.now() - start}ms.`);\n    const result = {\n      vueSrc: newContent?.trim(),\n      ignore: !docs,\n    };\n    cache.set(src, result);\n    return result;\n  };\n}\n"
  },
  {
    "path": "plugin/md/index.ts",
    "content": "import { createMarkdownToVueRenderFn } from './markdownToVue';\nimport type { MarkdownOptions } from './markdown/markdown';\nimport type { Plugin } from 'vite';\n\ninterface Options {\n  root?: string;\n  markdown?: MarkdownOptions;\n}\n\nexport default (options: Options = {}): Plugin => {\n  const { root, markdown } = options;\n  const markdownToVue = createMarkdownToVueRenderFn(root, markdown);\n  return {\n    name: 'mdToVue',\n    async transform(code, id) {\n      if (id.endsWith('.md')) {\n        // transform .md files into vueSrc so plugin-vue can handle it\n        return { code: (await markdownToVue(code, id)).vueSrc, map: null };\n      }\n    },\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/markdown.ts",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\nimport MarkdownIt from 'markdown-it';\nimport { parseHeader } from '../utils/parseHeader';\nimport { highlight } from './plugins/highlight';\nimport { slugify } from './plugins/slugify';\nimport { highlightLinePlugin } from './plugins/highlightLines';\nimport { lineNumberPlugin } from './plugins/lineNumbers';\nimport { componentPlugin } from './plugins/component';\nimport { containerPlugin } from './plugins/containers';\nimport { snippetPlugin } from './plugins/snippet';\nimport { hoistPlugin } from './plugins/hoist';\nimport { preWrapperPlugin } from './plugins/preWrapper';\nimport { linkPlugin } from './plugins/link';\nimport { extractHeaderPlugin } from './plugins/header';\nimport type { Header } from '../../shared';\n\nconst emoji = require('markdown-it-emoji');\nconst anchor = require('markdown-it-anchor');\nconst toc = require('markdown-it-table-of-contents');\n\nexport interface MarkdownOptions extends MarkdownIt.Options {\n  lineNumbers?: boolean;\n  config?: (md: MarkdownIt) => void;\n  anchor?: {\n    permalink?: boolean;\n    permalinkBefore?: boolean;\n    permalinkSymbol?: string;\n  };\n  // https://github.com/Oktavilla/markdown-it-table-of-contents\n  toc?: any;\n  externalLinks?: Record<string, string>;\n}\n\nexport interface MarkdownParsedData {\n  hoistedTags?: string[];\n  links?: string[];\n  headers?: Header[];\n  vueCode?: string;\n}\n\nexport interface MarkdownRenderer {\n  __data: MarkdownParsedData;\n  render: (src: string, env?: any) => { html: string; data: any };\n}\n\nexport const createMarkdownRenderer = (options: MarkdownOptions = {}): MarkdownRenderer => {\n  const md = MarkdownIt({\n    html: true,\n    linkify: true,\n    highlight,\n    ...options,\n  });\n\n  // custom plugins\n  md.use(componentPlugin)\n    .use(highlightLinePlugin)\n    .use(preWrapperPlugin)\n    .use(snippetPlugin)\n    .use(hoistPlugin)\n    .use(containerPlugin)\n    .use(extractHeaderPlugin)\n    .use(linkPlugin, {\n      target: '_blank',\n      rel: 'noopener noreferrer',\n      ...options.externalLinks,\n    })\n\n    // 3rd party plugins\n    .use(emoji)\n    .use(anchor, {\n      slugify,\n      permalink: anchor.permalink.linkInsideHeader({\n        symbol: `\n          <span aria-hidden=\"true\" class=\"anchor\">#</span>\n        `,\n      }),\n      permalinkBefore: true,\n      permalinkSymbol: '#',\n      permalinkAttrs: () => ({ 'aria-hidden': true }),\n      tabIndex: false,\n      ...options.anchor,\n    })\n    .use(toc, {\n      slugify,\n      includeLevel: [2, 3],\n      format: parseHeader,\n      ...options.toc,\n    });\n\n  // apply user config\n  if (options.config) {\n    options.config(md);\n  }\n\n  if (options.lineNumbers) {\n    md.use(lineNumberPlugin);\n  }\n\n  // wrap render so that we can return both the html and extracted data.\n  const render = md.render;\n  const wrappedRender: MarkdownRenderer['render'] = src => {\n    (md as any).__data = {};\n    const html = render.call(md, src);\n    return {\n      html,\n      data: (md as any).__data,\n    };\n  };\n  (md as any).render = wrappedRender;\n\n  return md as any;\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/component.ts",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\nimport type MarkdownIt from 'markdown-it';\nimport type { RuleBlock } from 'markdown-it/lib/parser_block';\n\n// Replacing the default htmlBlock rule to allow using custom components at\n// root level\n\nconst blockNames: string[] = require('markdown-it/lib/common/html_blocks');\nconst HTML_OPEN_CLOSE_TAG_RE: RegExp =\n  require('markdown-it/lib/common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\nconst HTML_SEQUENCES: [RegExp, RegExp, boolean][] = [\n  [/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true],\n  [/^<!--/, /-->/, true],\n  [/^<\\?/, /\\?>/, true],\n  [/^<![A-Z]/, />/, true],\n  [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n  // PascalCase Components\n  [/^<[A-Z]/, />/, true],\n  // custom elements with hyphens\n  [/^<\\w+\\-/, />/, true],\n  [new RegExp('^</?(' + blockNames.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n  [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false],\n];\n\nexport const componentPlugin = (md: MarkdownIt) => {\n  md.block.ruler.at('html_block', htmlBlock);\n};\n\nconst htmlBlock: RuleBlock = (state, startLine, endLine, silent): boolean => {\n  let i, nextLine, lineText;\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n\n  if (!state.md.options.html) {\n    return false;\n  }\n\n  if (state.src.charCodeAt(pos) !== 0x3c /* < */) {\n    return false;\n  }\n\n  lineText = state.src.slice(pos, max);\n\n  for (i = 0; i < HTML_SEQUENCES.length; i++) {\n    if (HTML_SEQUENCES[i][0].test(lineText)) {\n      break;\n    }\n  }\n\n  if (i === HTML_SEQUENCES.length) {\n    return false;\n  }\n\n  if (silent) {\n    // true if this sequence can be a terminator, false otherwise\n    return HTML_SEQUENCES[i][2];\n  }\n\n  nextLine = startLine + 1;\n\n  // If we are here - we detected HTML block.\n  // Let's roll down till block end.\n  if (!HTML_SEQUENCES[i][1].test(lineText)) {\n    for (; nextLine < endLine; nextLine++) {\n      if (state.sCount[nextLine] < state.blkIndent) {\n        break;\n      }\n\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n      lineText = state.src.slice(pos, max);\n\n      if (HTML_SEQUENCES[i][1].test(lineText)) {\n        if (lineText.length !== 0) {\n          nextLine++;\n        }\n        break;\n      }\n    }\n  }\n\n  state.line = nextLine;\n\n  const token = state.push('html_block', '', 0);\n  token.map = [startLine, nextLine];\n  token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n  return true;\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/containers.ts",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\nimport type MarkdownIt from 'markdown-it';\nimport type Token from 'markdown-it/lib/token';\n\nconst container = require('markdown-it-container');\n\nexport const containerPlugin = (md: MarkdownIt) => {\n  md.use(...createContainer('tip', 'TIP'))\n    .use(...createContainer('warning', 'WARNING'))\n    .use(...createContainer('danger', 'WARNING'))\n    // explicitly escape Vue syntax\n    .use(container, 'v-pre', {\n      render: (tokens: Token[], idx: number) =>\n        tokens[idx].nesting === 1 ? `<div v-pre>\\n` : `</div>\\n`,\n    });\n};\n\ntype ContainerArgs = [\n  typeof container,\n  string,\n  {\n    render(tokens: Token[], idx: number): string;\n  },\n];\n\nfunction createContainer(klass: string, defaultTitle: string): ContainerArgs {\n  return [\n    container,\n    klass,\n    {\n      render(tokens, idx) {\n        const token = tokens[idx];\n        const info = token.info?.trim().slice(klass.length)?.trim();\n        if (token.nesting === 1) {\n          return `<div class=\"${klass} custom-block\"><p class=\"custom-block-title\">${\n            info || defaultTitle\n          }</p>\\n`;\n        } else {\n          return `</div>\\n`;\n        }\n      },\n    },\n  ];\n}\n"
  },
  {
    "path": "plugin/md/markdown/plugins/header.ts",
    "content": "import type MarkdownIt from 'markdown-it';\nimport type { MarkdownParsedData } from '../markdown';\nimport { deeplyParseHeader } from '../../utils/parseHeader';\nimport { slugify } from './slugify';\n\nexport const extractHeaderPlugin = (md: MarkdownIt, include = ['h2', 'h3']) => {\n  md.renderer.rules.heading_open = (tokens, i, options, _env, self) => {\n    const token = tokens[i];\n    if (include.includes(token.tag)) {\n      const title = tokens[i + 1].content;\n      const idAttr = token.attrs!.find(([name]) => name === 'id');\n      const slug = idAttr && idAttr[1];\n      const content = tokens[i + 4].content;\n      const data = (md as any).__data as MarkdownParsedData;\n      const headers = data.headers || (data.headers = []);\n      headers.push({\n        level: parseInt(token.tag.slice(1), 10),\n        title: deeplyParseHeader(title),\n        slug: slug || slugify(title),\n        content,\n      });\n    }\n    return self.renderToken(tokens, i, options);\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/highlight.ts",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\nconst chalk = require('chalk');\nconst prism = require('prismjs');\nconst loadLanguages = require('prismjs/components/index');\nconst escapeHtml = require('escape-html');\n\n// required to make embedded highlighting work...\nloadLanguages(['markup', 'css', 'javascript']);\n\nfunction wrap(code: string, lang: string): string {\n  if (lang === 'text') {\n    code = escapeHtml(code);\n  }\n  return `<pre v-pre><code>${code}</code></pre>`;\n}\n\nexport const highlight = (str: string, lang: string) => {\n  if (!lang) {\n    return wrap(str, 'text');\n  }\n  lang = lang.toLowerCase();\n  const rawLang = lang;\n  if (lang === 'vue' || lang === 'html') {\n    lang = 'markup';\n  }\n  if (lang === 'md') {\n    lang = 'markdown';\n  }\n  if (lang === 'ts') {\n    lang = 'typescript';\n  }\n  if (lang === 'py') {\n    lang = 'python';\n  }\n  if (!prism.languages[lang]) {\n    try {\n      loadLanguages([lang]);\n    } catch (e) {\n      console.warn(\n        chalk.yellow(`[vitepress] Syntax highlight for language \"${lang}\" is not supported.`),\n      );\n    }\n  }\n  if (prism.languages[lang]) {\n    const code = prism.highlight(str, prism.languages[lang], lang);\n    return wrap(code, rawLang);\n  }\n  return wrap(str, 'text');\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/highlightLines.ts",
    "content": "// Modified from https://github.com/egoist/markdown-it-highlight-lines\nimport type MarkdownIt from 'markdown-it';\n\nconst RE = /{([\\d,-]+)}/;\nconst wrapperRE = /^<pre .*?><code>/;\n\nexport const highlightLinePlugin = (md: MarkdownIt) => {\n  const fence = md.renderer.rules.fence!;\n  md.renderer.rules.fence = (...args) => {\n    const [tokens, idx, options] = args;\n    const token = tokens[idx];\n\n    const rawInfo = token.info;\n    if (!rawInfo || !RE.test(rawInfo)) {\n      return fence(...args);\n    }\n\n    const langName = rawInfo.replace(RE, '')?.trim();\n    // ensure the next plugin get the correct lang.\n    token.info = langName;\n\n    const lineNumbers = RE.exec(rawInfo)![1]\n      .split(',')\n      .map(v => v.split('-').map(v => parseInt(v, 10)));\n\n    const code = options.highlight ? options.highlight(token.content, langName) : token.content;\n\n    const rawCode = code.replace(wrapperRE, '');\n    const highlightLinesCode = rawCode\n      .split('\\n')\n      .map((_split, index) => {\n        const lineNumber = index + 1;\n        const inRange = lineNumbers.some(([start, end]) => {\n          if (start && end) {\n            return lineNumber >= start && lineNumber <= end;\n          }\n          return lineNumber === start;\n        });\n        if (inRange) {\n          return `<div class=\"highlighted\">&nbsp;</div>`;\n        }\n        return '<br>';\n      })\n      .join('');\n\n    const highlightLinesWrapperCode = `<div class=\"highlight-lines\">${highlightLinesCode}</div>`;\n\n    return highlightLinesWrapperCode + code;\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/hoist.ts",
    "content": "import type MarkdownIt from 'markdown-it';\nimport type { MarkdownParsedData } from '../markdown';\n\n// hoist <script> and <style> tags out of the returned html\n// so that they can be placed outside as SFC blocks.\nexport const hoistPlugin = (md: MarkdownIt) => {\n  const RE = /^<(script|style)(?=(\\s|>|$))/i;\n\n  md.renderer.rules.html_block = (tokens, idx) => {\n    const content = tokens[idx].content || '';\n    const data = (md as any).__data as MarkdownParsedData;\n    const hoistedTags = data.hoistedTags || (data.hoistedTags = []);\n    if (RE.test(content.trim())) {\n      hoistedTags.push(content);\n      return '';\n    } else {\n      return content;\n    }\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/lineNumbers.ts",
    "content": "// markdown-it plugin for generating line numbers.\n// It depends on preWrapper plugin.\n\nimport type MarkdownIt from 'markdown-it';\n\nexport const lineNumberPlugin = (md: MarkdownIt) => {\n  const fence = md.renderer.rules.fence!;\n  md.renderer.rules.fence = (...args) => {\n    const rawCode = fence(...args);\n    const code = rawCode.slice(rawCode.indexOf('<code>'), rawCode.indexOf('</code>'));\n\n    const lines = code.split('\\n');\n    const lineNumbersCode = [...Array(lines.length - 1)]\n      .map((_line, index) => `<span class=\"line-number\">${index + 1}</span><br>`)\n      .join('');\n\n    const lineNumbersWrapperCode = `<div class=\"line-numbers-wrapper\">${lineNumbersCode}</div>`;\n\n    const finalCode = rawCode\n      .replace(/<\\/div>$/, `${lineNumbersWrapperCode}</div>`)\n      .replace(/\"(language-\\w+)\"/, '\"$1 line-numbers-mode\"');\n\n    return finalCode;\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/link.ts",
    "content": "// markdown-it plugin for:\n// 1. adding target=\"_blank\" to external links\n// 2. normalize internal links to end with `.html`\n\nimport type MarkdownIt from 'markdown-it';\nimport type { MarkdownParsedData } from '../markdown';\nimport { URL } from 'url';\n\nconst indexRE = /(^|.*\\/)index.md(#?.*)$/i;\n\nexport const linkPlugin = (md: MarkdownIt, externalAttrs: Record<string, string>) => {\n  md.renderer.rules.link_open = (tokens, idx, options, _env, self) => {\n    const token = tokens[idx];\n    const hrefIndex = token.attrIndex('href');\n    if (hrefIndex >= 0) {\n      const hrefAttr = token.attrs![hrefIndex];\n      const url = hrefAttr[1];\n      const isExternal = /^https?:/.test(url);\n      if (isExternal) {\n        Object.entries(externalAttrs).forEach(([key, val]) => {\n          token.attrSet(key, val);\n        });\n      } else if (\n        // internal anchor links\n        !url.startsWith('#') &&\n        // mail links\n        !url.startsWith('mailto:')\n      ) {\n        normalizeHref(hrefAttr);\n      }\n    }\n    return self.renderToken(tokens, idx, options);\n  };\n\n  function normalizeHref(hrefAttr: [string, string]) {\n    let url = hrefAttr[1];\n\n    const indexMatch = url.match(indexRE);\n    if (indexMatch) {\n      const [, path, hash] = indexMatch;\n      url = path + hash;\n    } else {\n      let cleanUrl = url.replace(/\\#.*$/, '').replace(/\\?.*$/, '');\n      // .md -> .html\n      if (cleanUrl.endsWith('.md')) {\n        cleanUrl = cleanUrl.replace(/\\.md$/, '.html');\n      }\n      // // ./foo -> ./foo.html\n      // if (!cleanUrl.endsWith('.html') && !cleanUrl.endsWith('/')) {\n      //   cleanUrl += '.html';\n      // }\n      const parsed = new URL(url, 'http://a.com');\n      url = cleanUrl + parsed.search + parsed.hash;\n    }\n\n    // ensure leading . for relative paths\n    if (!url.startsWith('/') && !/^\\.\\//.test(url)) {\n      url = './' + url;\n    }\n\n    // export it for existence check\n    const data = (md as any).__data as MarkdownParsedData;\n    const links = data.links || (data.links = []);\n    links.push(url.replace(/\\.html$/, ''));\n\n    // markdown-it encodes the uri\n    hrefAttr[1] = decodeURI(url);\n  }\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/preWrapper.ts",
    "content": "// markdown-it plugin for wrapping <pre> ... </pre>.\n//\n// If your plugin was chained before preWrapper, you can add additional element directly.\n// If your plugin was chained after preWrapper, you can use these slots:\n//   1. <!--beforebegin-->\n//   2. <!--afterbegin-->\n//   3. <!--beforeend-->\n//   4. <!--afterend-->\n\nimport type MarkdownIt from 'markdown-it';\nimport type { MarkdownParsedData } from '../markdown';\n\nexport const preWrapperPlugin = (md: MarkdownIt) => {\n  const fence = md.renderer.rules.fence!;\n  md.renderer.rules.fence = (...args) => {\n    const [tokens, idx] = args;\n    const token = tokens[idx];\n    const data = (md as any).__data as MarkdownParsedData;\n    if (token.info?.trim() === 'vue') {\n      data.vueCode = token.content;\n    }\n    const rawCode = fence(...args).replace(\n      /<pre /g,\n      `<pre class=\"language-${token.info?.trim()}\" `,\n    );\n    return rawCode; //`<div class=\"language-${token.info.trim()}\">${rawCode}</div>`;\n  };\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/slugify.ts",
    "content": "// string.js slugify drops non ascii chars so we have to\n// use a custom implementation here\nimport diacritics from 'diacritics';\nconst removeDiacritics = diacritics.remove;\n// eslint-disable-next-line no-control-regex\nconst rControl = /[\\u0000-\\u001f]/g;\nconst rSpecial = /[\\s~`!@#$%^&*()\\-_+=[\\]{}|\\\\;:\"'<>,.?/]+/g;\n\nexport const slugify = (str: string): string => {\n  return (\n    removeDiacritics(str)\n      // Remove control characters\n      .replace(rControl, '')\n      // Replace special characters\n      .replace(rSpecial, '-')\n      // Remove continuos separators\n      .replace(/\\-{2,}/g, '-')\n      // Remove prefixing and trailing separtors\n      .replace(/^\\-+|\\-+$/g, '')\n      // ensure it doesn't start with a number (#121)\n      .replace(/^(\\d)/, '_$1')\n      // lowercase\n      .toLowerCase()\n  );\n};\n"
  },
  {
    "path": "plugin/md/markdown/plugins/snippet.ts",
    "content": "import fs from 'fs';\nimport type MarkdownIt from 'markdown-it';\nimport type { RuleBlock } from 'markdown-it/lib/parser_block';\n\nexport const snippetPlugin = (md: MarkdownIt, root: string) => {\n  const parser: RuleBlock = (state, startLine, _endLine, silent) => {\n    const CH = '<'.charCodeAt(0);\n    const pos = state.bMarks[startLine] + state.tShift[startLine];\n    const max = state.eMarks[startLine];\n\n    // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[startLine] - state.blkIndent >= 4) {\n      return false;\n    }\n\n    for (let i = 0; i < 3; ++i) {\n      const ch = state.src.charCodeAt(pos + i);\n      if (ch !== CH || pos + i >= max) return false;\n    }\n\n    if (silent) {\n      return true;\n    }\n\n    const start = pos + 3;\n    const end = state.skipSpacesBack(max, pos);\n    const rawPath = state.src.slice(start, end)?.trim().replace(/^@/, root);\n    const filename = rawPath.split(/{/).shift()?.trim();\n    const content = fs.existsSync(filename)\n      ? fs.readFileSync(filename).toString()\n      : 'Not found: ' + filename;\n    const meta = rawPath.replace(filename, '');\n\n    state.line = startLine + 1;\n\n    const token = state.push('fence', 'code', 0);\n    token.info = filename.split('.').pop() + meta;\n    token.content = content;\n    token.markup = '```';\n    token.map = [startLine, startLine + 1];\n\n    return true;\n  };\n\n  md.block.ruler.before('fence', 'snippet', parser);\n};\n"
  },
  {
    "path": "plugin/md/markdownToVue.ts",
    "content": "import fs from 'fs';\nimport path from 'path';\nimport matter from 'gray-matter';\nimport LRUCache from 'lru-cache';\nimport type { MarkdownOptions, MarkdownParsedData, MarkdownRenderer } from './markdown/markdown';\nimport { createMarkdownRenderer } from './markdown/markdown';\nimport { deeplyParseHeader } from './utils/parseHeader';\nimport type { PageData, HeadConfig } from '../shared';\nimport slash from 'slash';\nimport escapeHtml from 'escape-html';\nimport fetchCode from './utils/fetchCode';\nimport tsToJs from './utils/tsToJs';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst debug = require('debug')('vitepress:md');\nconst cache = new LRUCache<string, MarkdownCompileResult>({ max: 1024 });\n\ninterface MarkdownCompileResult {\n  vueSrc: string;\n  pageData: PageData;\n}\n\nexport function createMarkdownToVueRenderFn(\n  root: string = process.cwd(),\n  options: MarkdownOptions = {},\n) {\n  const md = createMarkdownRenderer(options);\n\n  return async (src: string, file: string): Promise<MarkdownCompileResult> => {\n    const relativePath = slash(path.relative(root, file));\n\n    const cached = cache.get(src);\n    if (cached) {\n      debug(`[cache hit] ${relativePath}`);\n      return cached;\n    }\n\n    const start = Date.now();\n\n    const { content, data: frontmatter } = matter(src);\n    // eslint-disable-next-line prefer-const\n    let { html, data } = md.render(content);\n    // avoid env variables being replaced by vite\n    html = html\n      .replace(/import\\.meta/g, 'import.<wbr/>meta')\n      .replace(/process\\.env/g, 'process.<wbr/>env');\n    // TODO validate data.links?\n    const pageData: PageData = {\n      title: inferTitle(frontmatter, content),\n      description: inferDescription(frontmatter),\n      frontmatter,\n      headers: data.headers,\n      relativePath,\n      content: escapeHtml(content),\n      html,\n      // TODO use git timestamp?\n      lastUpdated: Math.round(fs.statSync(file).mtimeMs),\n    };\n    const newContent = data.vueCode\n      ? await genComponentCode(md, data, pageData)\n      : await genDocCode(content, pageData);\n\n    debug(`[render] ${file} in ${Date.now() - start}ms.`);\n    const result = {\n      vueSrc: newContent?.trim(),\n      pageData,\n    };\n    cache.set(src, result);\n    return result;\n  };\n}\n\nasync function genComponentCode(md: MarkdownRenderer, data: PageData, pageData: PageData) {\n  const { vueCode, headers = [] } = data as MarkdownParsedData;\n  const cn = headers.find(h => h.title === 'zh-CN')?.content;\n  const us = headers.find(h => h.title === 'en-US')?.content;\n  let { html } = md.render(`\\`\\`\\`vue\n${vueCode?.trim()}\n\\`\\`\\``);\n  html = html\n    .replace(/import\\.meta/g, 'import.<wbr/>meta')\n    .replace(/process\\.env/g, 'process.<wbr/>env');\n  const template = fetchCode(vueCode, 'template');\n  const script = fetchCode(vueCode, 'script');\n  const style = fetchCode(vueCode, 'style');\n  const scriptContent = fetchCode(vueCode, 'scriptContent');\n  let jsCode = (await tsToJs(scriptContent))?.trim();\n  jsCode = jsCode\n    ? `<script setup>\n${jsCode}\n</script>`\n    : '';\n  const jsSourceCode = `\n${template}\n${jsCode}\n${style}\n  `.trim();\n  let { html: jsVersion } = md.render(`\\`\\`\\`vue\n${jsSourceCode}\n\\`\\`\\``);\n  jsVersion = jsVersion\n    .replace(/import\\.meta/g, 'import.<wbr/>meta')\n    .replace(/process\\.env/g, 'process.<wbr/>env');\n\n  const jsfiddle = escapeHtml(\n    JSON.stringify({\n      us,\n      cn,\n      docHtml: pageData.html.split('<pre class=\"language-vue\" v-pre>')[0],\n      ...pageData.frontmatter,\n      relativePath: pageData.relativePath,\n      // htmlCode: Buffer.from(html).toString('base64'),\n      // jsVersionHtml: Buffer.from(jsVersion).toString('base64'),\n      sourceCode: Buffer.from(vueCode).toString('base64'),\n      jsSourceCode: Buffer.from(jsSourceCode).toString('base64'),\n    }),\n  );\n\n  const newContent = `\n    <template>\n      <demo-box :jsfiddle=\"${jsfiddle}\">\n        ${template.replace('<template>', '<template v-slot:default>')}\n        <template #htmlCode>${html}</template>\n        <template #jsVersionHtml>${jsVersion}</template>\n      </demo-box>\n    </template>\n    ${script}\n    ${style}\n    `;\n  return newContent;\n}\n\nasync function genDocCode(content: string, pageData: PageData) {\n  return `\n<template><article class=\"markdown\">${pageData.html}</article></template>\n\n<script>\nimport ColorChunk from '@/components/ColorChunk';\nimport TokenTable from '@/components/TokenTable';\nimport ComponentTokenTable from '@/components/ComponentTokenTable';\n\nexport default {\n    components: {\n        ColorChunk,\n        TokenTable,\n        ComponentTokenTable\n    },\n    pageData: ${JSON.stringify(pageData)}\n}\n</script>\n${fetchCode(content, 'style')}\n`;\n}\n\nconst inferTitle = (frontmatter: any, content: string) => {\n  if (frontmatter.home) {\n    return 'Home';\n  }\n  if (frontmatter.title) {\n    return deeplyParseHeader(frontmatter.title);\n  }\n  const match = content.match(/^\\s*#+\\s+(.*)/m);\n  if (match) {\n    return deeplyParseHeader(match[1]?.trim());\n  }\n  return '';\n};\n\nconst inferDescription = (frontmatter: Record<string, any>) => {\n  if (!frontmatter.head) {\n    return '';\n  }\n\n  return getHeadMetaContent(frontmatter.head, 'description') || '';\n};\n\nconst getHeadMetaContent = (head: HeadConfig[], name: string): string | undefined => {\n  if (!head || !head.length) {\n    return undefined;\n  }\n\n  const meta = head.find(([tag, attrs = {}]) => {\n    return tag === 'meta' && attrs.name === name && attrs.content;\n  });\n\n  return meta && meta[1].content;\n};\n"
  },
  {
    "path": "plugin/md/utils/fetchCode.ts",
    "content": "// import cheerio from 'cheerio';\nconst scriptRE = /<script[^>]*>([\\s\\S]*)<\\/script>/;\nconst scriptContentRE = /(?<=<script[^>]*>)([\\s\\S]*)(?=<\\/script>)/;\nconst templateRE = /<template[^>]*>([\\s\\S]*)<\\/template>/;\nconst styleRE = /<style[^>]*>([\\s\\S]*)<\\/style>/;\nconst docsRE = /(?<=<docs>)([\\s\\S]*)(?=<\\/docs>)/;\nconst reObj = {\n  script: scriptRE,\n  style: styleRE,\n  docs: docsRE,\n  template: templateRE,\n  scriptContent: scriptContentRE,\n};\n\nexport default function fetchCode(src: string, type: string): string {\n  if (type === 'template') {\n    //     const $ = cheerio.load(src, {\n    //       decodeEntities: false,\n    //       xmlMode: false,\n    //       recognizeSelfClosing: true,\n    //       _useHtmlParser2: true,\n    //     });\n    //     return `<template>\n    //   ${$(type).html().trim()}\n    // </template>`;\n    src = src.split('<script')[0];\n  }\n  const matches = src.match(reObj[type]);\n  return matches ? matches[0] : '';\n}\n"
  },
  {
    "path": "plugin/md/utils/parseHeader.ts",
    "content": "// Since VuePress needs to extract the header from the markdown source\n// file and display it in the sidebar or title (#238), this file simply\n// removes some unnecessary elements to make header displays well at\n// sidebar or title.\n//\n// But header's parsing in the markdown content is done by the markdown\n// loader based on markdown-it. markdown-it parser will will always keep\n// HTML in headers, so in VuePress, after being parsed by the markdown\n// loader, the raw HTML in headers will finally be parsed by Vue-loader.\n// so that we can write HTML/Vue in the header. One exception is the HTML\n// wrapped by <code>(markdown token: '`') tag.\n\nconst parseEmojis = (str: string) => {\n  // eslint-disable-next-line @typescript-eslint/no-var-requires\n  const emojiData = require('markdown-it-emoji/lib/data/full.json');\n  return String(str).replace(/:(.+?):/g, (placeholder, key) => emojiData[key] || placeholder);\n};\n\nconst unescapeHtml = (html: string) =>\n  String(html)\n    .replace(/&quot;/g, '\"')\n    .replace(/&#39;/g, \"'\")\n    .replace(/&#x3A;/g, ':')\n    .replace(/&lt;/g, '<')\n    .replace(/&gt;/g, '>');\n\nconst removeMarkdownTokens = (str: string) =>\n  String(str)\n    .replace(/(\\[(.[^\\]]+)\\]\\((.[^)]+)\\))/g, '$2') // []()\n    .replace(/(`|\\*{1,3}|_)(.*?[^\\\\])\\1/g, '$2') // `{t}` | *{t}* | **{t}** | ***{t}*** | _{t}_\n    // eslint-disable-next-line no-useless-escape\n    .replace(/(\\\\)(\\*|_|`|\\!|<|\\$)/g, '$2'); // remove escape char '\\'\n\nconst trim = (str = '') => str?.trim();\n\n// This method remove the raw HTML but reserve the HTML wrapped by `<code>`.\n// e.g.\n// Input: \"<a> b\",   Output: \"b\"\n// Input: \"`<a>` b\", Output: \"`<a>` b\"\nexport const removeNonCodeWrappedHTML = (str: string): string => {\n  return String(str).replace(/(^|[^><`\\\\])<.*>([^><`]|$)/g, '$1$2');\n};\n\nconst compose = (...processors: ((str: string) => string)[]) => {\n  if (processors.length === 0) return (input: string) => input;\n  if (processors.length === 1) return processors[0];\n  return processors.reduce((prev, next) => {\n    return str => next(prev(str));\n  });\n};\n\n// Unescape html, parse emojis and remove some md tokens.\nexport const parseHeader = compose(unescapeHtml, parseEmojis, removeMarkdownTokens, trim);\n\n// Also clean the html that isn't wrapped by code.\n// Because we want to support using VUE components in headers.\n// e.g. https://vuepress.vuejs.org/guide/using-vue.html#badge\nexport const deeplyParseHeader = compose(removeNonCodeWrappedHTML, parseHeader);\n"
  },
  {
    "path": "plugin/md/utils/query.ts",
    "content": "import qs from 'qs';\n\nexport interface VueQuery {\n  vue?: boolean;\n  src?: boolean;\n  type?: 'script' | 'template' | 'style' | 'custom';\n  index?: number;\n  lang?: string;\n}\n\nexport function parseVueRequest(id: string): any {\n  const [filename, rawQuery] = id.split(`?`, 2);\n  const query = qs.parse(rawQuery) as VueQuery;\n  if (query.vue != null) {\n    query.vue = true;\n  }\n  if (query.src != null) {\n    query.src = true;\n  }\n  if (query.index != null) {\n    query.index = Number(query.index);\n  }\n  return {\n    filename,\n    query,\n  };\n}\n"
  },
  {
    "path": "plugin/md/utils/tsToJs.ts",
    "content": "import { transformSync } from '@babel/core';\nimport { ESLint } from 'eslint';\nimport path from 'path';\nconst engine = new ESLint({\n  fix: true,\n  useEslintrc: false,\n  baseConfig: require(path.join(process.cwd(), '.eslintrc.js')),\n});\nconst tsToJs = async (content: string): Promise<string> => {\n  if (!content) {\n    return '';\n  }\n  const { code } = transformSync(content, {\n    configFile: false,\n    plugins: [\n      [\n        require.resolve('@babel/plugin-transform-typescript'),\n        {\n          isTSX: false,\n        },\n      ],\n    ],\n  });\n  const report = await engine.lintText(code);\n  let output = report[0].output;\n  output = output ? output.trim() : output;\n  return output;\n};\n\nexport default tsToJs;\n"
  },
  {
    "path": "plugin/shared.ts",
    "content": "// types shared between server and client\n\nexport interface LocaleConfig {\n  lang: string;\n  title?: string;\n  description?: string;\n  head?: HeadConfig[];\n  label?: string;\n  selectText?: string;\n}\n\nexport interface SiteData<ThemeConfig = any> {\n  base: string;\n  lang: string;\n  title: string;\n  description: string;\n  head: HeadConfig[];\n  themeConfig: ThemeConfig;\n  locales: Record<string, LocaleConfig>;\n}\n\nexport type HeadConfig =\n  | [string, Record<string, string>]\n  | [string, Record<string, string>, string];\n\nexport interface PageData {\n  relativePath: string;\n  title: string;\n  description: string;\n  headers: Header[];\n  frontmatter: Record<string, any>;\n  lastUpdated: number;\n  content?: string;\n  html?: string;\n}\n\nexport interface Header {\n  level: number;\n  title: string;\n  slug: string;\n  content: string;\n}\n"
  },
  {
    "path": "postcss.config.js",
    "content": "module.exports = {\n  plugins: [require('autoprefixer')],\n};\n"
  },
  {
    "path": "renovate.json",
    "content": "{\n  \"extends\": [\"config:base\", \":preserveSemverRanges\"]\n}\n"
  },
  {
    "path": "scripts/.npmrc.template",
    "content": "//registry.npmjs.org/:_authToken=${NPM_TOKEN}\nloglevel=info\nregistry=https://registry.npmjs.org/\n"
  },
  {
    "path": "scripts/collect-token-statistic.js",
    "content": "/* eslint-disable import/no-unresolved,no-console,global-require,import/no-dynamic-require */\n\nconst chalk = require('chalk');\nconst VueServerRenderer = require('vue/server-renderer');\n\nconst fs = require('fs-extra');\nconst glob = require('glob');\nconst path = require('path');\nconst ProgressBar = require('progress');\nconst { statistic } = require('../components/theme/util/statistic');\nconst { DesignTokenProvider } = require('../components/theme/internal');\nconst seedToken = require('../components/theme/themes/seed');\nconst { defineComponent, ref, createVNode, createSSRApp } = require('vue');\n\nconsole.log(chalk.green(`🔥 Collecting token statistics...`));\n\nconst EmptyElement = createVNode('div');\n\nconst styleFiles = glob.sync(\n  path.join(\n    process.cwd(),\n    'components/!(version|config-provider|icon|locale-provider|auto-complete|col|row|time-picker|)/style/index.?(ts|tsx)',\n  ),\n);\n\nconst bar = new ProgressBar('🚀 Collecting by component: [:bar] :component (:current/:total)', {\n  complete: '=',\n  incomplete: ' ',\n  total: styleFiles.length,\n});\n\nstyleFiles.forEach(file => {\n  const pathArr = file.split('/');\n  const styleIndex = pathArr.lastIndexOf('style');\n  const componentName = pathArr[styleIndex - 1];\n  bar.tick(1, { component: componentName });\n  let useStyle = () => {};\n  if (file.includes('grid')) {\n    const { useColStyle, useRowStyle } = require(file);\n    useStyle = () => {\n      useRowStyle();\n      useColStyle();\n    };\n  } else {\n    useStyle = require(file).default;\n  }\n  const Component = defineComponent({\n    setup() {\n      useStyle(ref('file'), ref());\n      return () => EmptyElement;\n    },\n  });\n  VueServerRenderer.renderToString(\n    createSSRApp({\n      setup() {\n        return () => createVNode(Component);\n      },\n    }),\n  );\n  // Render wireframe\n  VueServerRenderer.renderToString(\n    createSSRApp({\n      setup() {\n        return () =>\n          createVNode(\n            DesignTokenProvider,\n            { value: { token: { ...seedToken, wireframe: true } } },\n            () => createVNode(Component),\n          );\n      },\n    }),\n  );\n});\n\n(() => {\n  const tokenPath = `${process.cwd()}/components/version/token.json`;\n  fs.writeJsonSync(tokenPath, statistic, 'utf8');\n\n  console.log(chalk.green(`✅  Collected token statistics successfully, check it in`), tokenPath);\n})();\n"
  },
  {
    "path": "scripts/commitizen.js",
    "content": "'use strict';\n\nconst { execSync } = require('child_process');\nconst fg = require('fast-glob');\n\nconst components = fg.sync('*', { cwd: 'components', onlyDirectories: true });\n// precomputed scope\nconst scopeComplete = execSync('git status --porcelain || true')\n  .toString()\n  .trim()\n  .split('\\n')\n  .find(r => ~r.indexOf('M  '))\n  ?.replace(/(\\/)/g, '%%')\n  ?.match(/components%%((\\w|-)*)/)?.[1];\n\n/** @type {import('cz-git').CommitizenGitOptions} */\nmodule.exports = {\n  scopes: ['site', 'util', 'script', 'tool', ...components],\n  scopeFilters: ['__tests__', '_util'],\n  customScopesAlign: !scopeComplete ? 'top' : 'bottom',\n  defaultScope: scopeComplete,\n  maxHeaderLength: 100,\n  allowEmptyIssuePrefixs: false,\n  allowCustomIssuePrefixs: false,\n};\n"
  },
  {
    "path": "scripts/compact-vars.js",
    "content": "const fs = require('fs');\nconst path = require('path');\nconst lessToJs = require('less-vars-to-js');\n\nconst stylePath = path.join(__dirname, '..', 'components', 'style');\nconst compactLess = fs.readFileSync(path.join(stylePath, 'themes', 'compact.less'), 'utf8');\n\nconst compactPaletteLess = lessToJs(compactLess, {\n  stripPrefix: true,\n  resolveVariables: false,\n});\n\nmodule.exports = compactPaletteLess;\n"
  },
  {
    "path": "scripts/css-variable-sync.js",
    "content": "/**\n * ZombieJ: Since we still need mainly maintain the `default.less`. Create a script that generate\n * `variable.less` from the `default.less`\n */\n\nconst fse = require('fs-extra');\nconst path = require('path');\nconst chalk = require('chalk');\n\nconst folderPath = path.resolve(__dirname, '..', 'components', 'style', 'themes');\nconst targetPath = path.resolve(folderPath, 'variable.less');\n\nconst defaultContent = fse.readFileSync(path.resolve(folderPath, 'default.less'), 'utf8');\n\n// const variableContent = fse.readFileSync(\n//   path.resolve(__dirname, '..', 'components', 'style', 'themes', 'variable.less'),\n//   'utf8',\n// );\n\nlet variableContent = defaultContent;\n\nfunction replaceVariable(key, value) {\n  variableContent = variableContent.replace(new RegExp(`@${key}:[^;]*;`), `@${key}: ${value};`);\n}\n\nfunction replaceVariableContent(key, content) {\n  const lines = variableContent.split(/\\n/);\n  const startIndex = lines.findIndex(line => line.includes(`[CSS-VARIABLE-REPLACE-BEGIN: ${key}]`));\n  const endIndex = lines.findIndex(line => line.includes(`[CSS-VARIABLE-REPLACE-END: ${key}]`));\n\n  if (startIndex !== -1 && endIndex !== -1) {\n    variableContent = [...lines.slice(0, startIndex), content, ...lines.slice(endIndex + 1)].join(\n      '\\n',\n    );\n  }\n}\n\nreplaceVariable('theme', 'variable');\n\nreplaceVariableContent(\n  'html-variables',\n  `\nhtml {\n  @base-primary: @blue-6;\n\n  // ========= Primary Color =========\n  --@{ant-prefix}-primary-color: @base-primary;\n  --@{ant-prefix}-primary-color-hover: color(~\\`colorPalette('@{base-primary}', 5) \\`);\n  --@{ant-prefix}-primary-color-active: color(~\\`colorPalette('@{base-primary}', 7) \\`);\n  --@{ant-prefix}-primary-color-outline: fade(@base-primary, @outline-fade);\n\n  // Legacy\n  @legacy-primary-1: color(~\\`colorPalette('@{base-primary}', 1) \\`);\n\n  --@{ant-prefix}-primary-1: @legacy-primary-1;\n  --@{ant-prefix}-primary-2: color(~\\`colorPalette('@{base-primary}', 2) \\`);\n  --@{ant-prefix}-primary-3: color(~\\`colorPalette('@{base-primary}', 3) \\`);\n  --@{ant-prefix}-primary-4: color(~\\`colorPalette('@{base-primary}', 4) \\`);\n  --@{ant-prefix}-primary-5: color(~\\`colorPalette('@{base-primary}', 5) \\`);\n  --@{ant-prefix}-primary-6: @base-primary;\n  --@{ant-prefix}-primary-7: color(~\\`colorPalette('@{base-primary}', 7) \\`);\n\n  // Deprecated\n  --@{ant-prefix}-primary-color-deprecated-pure: ~'';\n  --@{ant-prefix}-primary-color-deprecated-l-35: lighten(@base-primary, 35%);\n  --@{ant-prefix}-primary-color-deprecated-l-20: lighten(@base-primary, 20%);\n  --@{ant-prefix}-primary-color-deprecated-t-20: tint(@base-primary, 20%);\n  --@{ant-prefix}-primary-color-deprecated-t-50: tint(@base-primary, 50%);\n  --@{ant-prefix}-primary-color-deprecated-f-12: fade(@base-primary, 12%);\n  --@{ant-prefix}-primary-color-active-deprecated-f-30: fade(@legacy-primary-1, 30%);\n  --@{ant-prefix}-primary-color-active-deprecated-d-02: darken(@legacy-primary-1, 2%);\n\n  // ========= Success Color =========\n  --@{ant-prefix}-success-color: @green-6;\n  --@{ant-prefix}-success-color-hover: color(~\\`colorPalette('@{green-6}', 5) \\`);\n  --@{ant-prefix}-success-color-active: color(~\\`colorPalette('@{green-6}', 7) \\`);\n  --@{ant-prefix}-success-color-outline: fade(@green-6, @outline-fade);\n  --@{ant-prefix}-success-color-deprecated-bg: ~\\`colorPalette('@{green-6}', 1) \\`;\n  --@{ant-prefix}-success-color-deprecated-border: ~\\`colorPalette('@{green-6}', 3) \\`;\n\n  // ========== Error Color ==========\n  --@{ant-prefix}-error-color: @red-5;\n  --@{ant-prefix}-error-color-hover: color(~\\`colorPalette('@{red-5}', 5) \\`);\n  --@{ant-prefix}-error-color-active: color(~\\`colorPalette('@{red-5}', 7) \\`);\n  --@{ant-prefix}-error-color-outline: fade(@red-5, @outline-fade);\n  --@{ant-prefix}-error-color-deprecated-bg: ~\\`colorPalette('@{red-5}', 1) \\`;\n  --@{ant-prefix}-error-color-deprecated-border: ~\\`colorPalette('@{red-5}', 3) \\`;\n\n  // ========= Warning Color =========\n  --@{ant-prefix}-warning-color: @gold-6;\n  --@{ant-prefix}-warning-color-hover: color(~\\`colorPalette('@{gold-6}', 5) \\`);\n  --@{ant-prefix}-warning-color-active: color(~\\`colorPalette('@{gold-6}', 7) \\`);\n  --@{ant-prefix}-warning-color-outline: fade(@gold-6, @outline-fade);\n  --@{ant-prefix}-warning-color-deprecated-bg: ~\\`colorPalette('@{gold-6}', 1) \\`;\n  --@{ant-prefix}-warning-color-deprecated-border: ~\\`colorPalette('@{gold-6}', 3) \\`;\n\n  // ========== Info Color ===========\n  --@{ant-prefix}-info-color: @base-primary;\n  --@{ant-prefix}-info-color-deprecated-bg: ~\\`colorPalette('@{base-primary}', 1) \\`;\n  --@{ant-prefix}-info-color-deprecated-border: ~\\`colorPalette('@{base-primary}', 3) \\`;\n}\n`.trim(),\n);\n\n// >>> Primary\nreplaceVariable('primary-color', \"~'var(--@{ant-prefix}-primary-color)'\");\nreplaceVariable('primary-color-hover', \"~'var(--@{ant-prefix}-primary-color-hover)'\");\nreplaceVariable('primary-color-active', \"~'var(--@{ant-prefix}-primary-color-active)'\");\nreplaceVariable('primary-color-outline', \"~'var(--@{ant-prefix}-primary-color-outline)'\");\n\nreplaceVariable('processing-color', '@primary-color');\n\n// >>> Info\nreplaceVariable('info-color', \"~'var(--@{ant-prefix}-info-color)'\");\nreplaceVariable('info-color-deprecated-bg', \"~'var(--@{ant-prefix}-info-color-deprecated-bg)'\");\nreplaceVariable(\n  'info-color-deprecated-border',\n  \"~'var(--@{ant-prefix}-info-color-deprecated-border)'\",\n);\n\n// >>> Success\nreplaceVariable('success-color', \"~'var(--@{ant-prefix}-success-color)'\");\nreplaceVariable('success-color-hover', \"~'var(--@{ant-prefix}-success-color-hover)'\");\nreplaceVariable('success-color-active', \"~'var(--@{ant-prefix}-success-color-active)'\");\nreplaceVariable('success-color-outline', \"~'var(--@{ant-prefix}-success-color-outline)'\");\nreplaceVariable(\n  'success-color-deprecated-bg',\n  \"~'var(--@{ant-prefix}-success-color-deprecated-bg)'\",\n);\nreplaceVariable(\n  'success-color-deprecated-border',\n  \"~'var(--@{ant-prefix}-success-color-deprecated-border)'\",\n);\n\n// >>> Warning\nreplaceVariable('warning-color', \"~'var(--@{ant-prefix}-warning-color)'\");\nreplaceVariable('warning-color-hover', \"~'var(--@{ant-prefix}-warning-color-hover)'\");\nreplaceVariable('warning-color-active', \"~'var(--@{ant-prefix}-warning-color-active)'\");\nreplaceVariable('warning-color-outline', \"~'var(--@{ant-prefix}-warning-color-outline)'\");\nreplaceVariable(\n  'warning-color-deprecated-bg',\n  \"~'var(--@{ant-prefix}-warning-color-deprecated-bg)'\",\n);\nreplaceVariable(\n  'warning-color-deprecated-border',\n  \"~'var(--@{ant-prefix}-warning-color-deprecated-border)'\",\n);\n\n// >>> Error\nreplaceVariable('error-color', \"~'var(--@{ant-prefix}-error-color)'\");\nreplaceVariable('error-color-hover', \"~'var(--@{ant-prefix}-error-color-hover)'\");\nreplaceVariable('error-color-active', \"~'var(--@{ant-prefix}-error-color-active)'\");\nreplaceVariable('error-color-outline', \"~'var(--@{ant-prefix}-error-color-outline)'\");\nreplaceVariable('error-color-deprecated-bg', \"~'var(--@{ant-prefix}-error-color-deprecated-bg)'\");\nreplaceVariable(\n  'error-color-deprecated-border',\n  \"~'var(--@{ant-prefix}-error-color-deprecated-border)'\",\n);\n\n// >>> Primary Level Color\nreplaceVariable('primary-1', \"~'var(--@{ant-prefix}-primary-1)'\");\nreplaceVariable('primary-2', \"~'var(--@{ant-prefix}-primary-2)'\");\nreplaceVariable('primary-3', \"~'var(--@{ant-prefix}-primary-3)'\");\nreplaceVariable('primary-4', \"~'var(--@{ant-prefix}-primary-4)'\");\nreplaceVariable('primary-5', \"~'var(--@{ant-prefix}-primary-5)'\");\nreplaceVariable('primary-6', \"~'var(--@{ant-prefix}-primary-6)'\");\nreplaceVariable('primary-7', \"~'var(--@{ant-prefix}-primary-7)'\");\n\n// Link\nreplaceVariable('link-hover-color', '@primary-color-hover');\nreplaceVariable('link-active-color', '@primary-color-active');\n\nreplaceVariable(\n  'table-selected-row-hover-bg',\n  \"~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'\",\n);\n\nreplaceVariable(\n  'picker-basic-cell-hover-with-range-color',\n  \"~'var(--@{ant-prefix}-primary-color-deprecated-l-35)'\",\n);\nreplaceVariable(\n  'picker-date-hover-range-border-color',\n  \"~'var(--@{ant-prefix}-primary-color-deprecated-l-20)'\",\n);\n\nreplaceVariable(\n  'calendar-column-active-bg',\n  \"~'var(--@{ant-prefix}-primary-color-active-deprecated-f-30)'\",\n);\n\nreplaceVariable(\n  'slider-handle-color-focus',\n  \"~'var(--@{ant-prefix}-primary-color-deprecated-t-20)'\",\n);\nreplaceVariable(\n  'slider-handle-color-focus-shadow',\n  \"~'var(--@{ant-prefix}-primary-color-deprecated-f-12)'\",\n);\nreplaceVariable(\n  'slider-dot-border-color-active',\n  \"~'var(--@{ant-prefix}-primary-color-deprecated-t-50)'\",\n);\n\nreplaceVariable(\n  'transfer-item-selected-hover-bg',\n  \"~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'\",\n);\n\nreplaceVariable('alert-success-border-color', '@success-color-deprecated-border');\nreplaceVariable('alert-success-bg-color', '@success-color-deprecated-bg');\nreplaceVariable('alert-info-border-color', '@info-color-deprecated-border');\nreplaceVariable('alert-info-bg-color', '@info-color-deprecated-bg');\nreplaceVariable('alert-warning-border-color', '@warning-color-deprecated-border');\nreplaceVariable('alert-warning-bg-color', '@warning-color-deprecated-bg');\nreplaceVariable('alert-error-border-color', '@error-color-deprecated-border');\nreplaceVariable('alert-error-bg-color', '@error-color-deprecated-bg');\n\nfse.writeFileSync(targetPath, variableContent, 'utf8');\n\n// eslint-disable-next-line no-console\nconsole.log(chalk.green('Success! Replaced path:'), targetPath);\n"
  },
  {
    "path": "scripts/deploy-to-gh-pages.sh",
    "content": "#!/bin/bash\n\nset -e # exit with nonzero exit code if anything fails\n\nBUMP=\"bump \"\nSITE=\"update site\"\n\nif [[ $TRAVIS_BRANCH == \"master\" && $TRAVIS_PULL_REQUEST == \"false\" ]] && [[ $TRAVIS_COMMIT_MESSAGE == *$BUMP* || $TRAVIS_COMMIT_MESSAGE == *$SITE* ]]; then\n\necho \"Starting to update gh-pages\\n\"\n\nrm -rf _site\nmkdir _site\n\ngit config --global user.email \"travis@travis-ci.org\"\ngit config --global user.name \"Travis\"\n\nnpm run site\n\ncd _site\ngit init\ngit add -f .\ngit commit -m \"Travis build\"\ngit push --force --quiet \"https://${GITHUB_TOKEN}@github.com/vueComponent/ant-design-vue.git\" master:gh-pages > /dev/null\n\n\necho \"Done updating gh-pages\\n\"\n\nelse\n echo \"Skipped updating gh-pages, because build is not triggered from the master branch.\"\nfi;\n"
  },
  {
    "path": "scripts/generate-token-meta.js",
    "content": "const TypeDoc = require('typedoc');\nconst fs = require('fs-extra');\n\nconst getTokenList = (list, source) =>\n  list\n    .filter(\n      item =>\n        !item.comment?.blockTags.some(tag => tag.tag === '@internal' || tag.tag === '@private'),\n    )\n    .map(item => ({\n      source,\n      token: item.name,\n      type: item.type.toString(),\n      desc:\n        item.comment?.blockTags\n          ?.find(tag => tag.tag === '@desc')\n          ?.content.reduce((result, str) => result.concat(str.text), '') || '',\n      descEn:\n        item.comment?.blockTags\n          ?.find(tag => tag.tag === '@descEN')\n          ?.content.reduce((result, str) => result.concat(str.text), '') || '',\n      name:\n        item.comment?.blockTags\n          ?.find(tag => tag.tag === '@nameZH')\n          ?.content.reduce((result, str) => result.concat(str.text), '') || '',\n      nameEn:\n        item.comment?.blockTags\n          ?.find(tag => tag.tag === '@nameEN')\n          ?.content.reduce((result, str) => result.concat(str.text), '') || '',\n    }));\n\nfunction main() {\n  const app = new TypeDoc.Application();\n\n  // If you want TypeDoc to load tsconfig.json / typedoc.json files\n  app.options.addReader(new TypeDoc.TSConfigReader());\n  app.options.addReader(new TypeDoc.TypeDocReader());\n\n  app.bootstrap({\n    // typedoc options here\n    entryPoints: ['components/theme/interface/index.ts'],\n    skipErrorChecking: true,\n  });\n\n  const project = app.convert();\n\n  if (project) {\n    // Project may not have converted correctly\n    const output = 'components/version/token-meta.json';\n    const tokenMeta = {};\n    let presetColors = [];\n    project.children.forEach(type => {\n      if (type.name === 'SeedToken') {\n        tokenMeta.seed = getTokenList(type.children, 'seed');\n      } else if (type.name === 'MapToken') {\n        tokenMeta.map = getTokenList(type.children, 'map');\n      } else if (type.name === 'AliasToken') {\n        tokenMeta.alias = getTokenList(type.children, 'alias');\n      } else if (type.name === 'PresetColors') {\n        presetColors = type.type.target.elements.map(item => item.value);\n      }\n    });\n\n    // Exclude preset colors\n    tokenMeta.seed = tokenMeta.seed.filter(\n      item => !presetColors.some(color => item.token.startsWith(color)),\n    );\n    tokenMeta.map = tokenMeta.map.filter(\n      item => !presetColors.some(color => item.token.startsWith(color)),\n    );\n    tokenMeta.alias = tokenMeta.alias.filter(\n      item => !presetColors.some(color => item.token.startsWith(color)),\n    );\n\n    tokenMeta.alias = tokenMeta.alias.filter(\n      item => !tokenMeta.map.some(mapItem => mapItem.token === item.token),\n    );\n    tokenMeta.map = tokenMeta.map.filter(\n      item => !tokenMeta.seed.some(seedItem => seedItem.token === item.token),\n    );\n\n    const finalMeta = Object.entries(tokenMeta).reduce((acc, [key, value]) => {\n      value.forEach(item => {\n        acc[item.token] = {\n          name: item.name,\n          nameEn: item.nameEn,\n          desc: item.desc,\n          descEn: item.descEn,\n          type: item.type,\n          source: key,\n        };\n      });\n      return acc;\n    }, {});\n\n    fs.writeJsonSync(output, finalMeta, 'utf8');\n    // eslint-disable-next-line no-console\n    console.log(`✅  Token Meta has been written to ${output}`);\n  }\n}\n\nmain();\n"
  },
  {
    "path": "scripts/generate-version.js",
    "content": "const fs = require('fs-extra');\nconst path = require('path');\n\nconst { version } = require('../package.json');\n\nfs.writeFileSync(\n  path.join(__dirname, '..', 'components', 'version', 'version.ts'),\n  `export default '${version}';`,\n  'utf8',\n);\n"
  },
  {
    "path": "scripts/gulpfile.js",
    "content": "'use strict';\nconst webpack = require('webpack');\nconst through2 = require('through2');\nconst path = require('path');\nconst gulp = require('gulp');\nconst readline = require('readline');\nconst fs = require('fs');\n\nconst rimraf = require('rimraf');\nconst mkdirp = require('mkdirp');\n\nconst cwd = process.cwd();\n\nfunction dist(done) {\n  rimraf.sync(path.join(cwd, '_site'));\n  process.env.RUN_ENV = 'PRODUCTION';\n  const webpackConfig = require(path.join(cwd, 'build/webpack.site.conf.js'));\n  webpack(webpackConfig, (err, stats) => {\n    if (err) {\n      console.error(err.stack || err);\n      if (err.details) {\n        console.error(err.details);\n      }\n      return;\n    }\n\n    const info = stats.toJson();\n\n    if (stats.hasErrors()) {\n      console.error(info.errors);\n    }\n\n    if (stats.hasWarnings()) {\n      console.warn(info.warnings);\n    }\n\n    const buildInfo = stats.toString({\n      colors: true,\n      children: true,\n      chunks: false,\n      modules: false,\n      chunkModules: false,\n      hash: false,\n      version: false,\n    });\n    // eslint-disable-next-line no-console\n    console.log(buildInfo);\n    done(0);\n  });\n}\n\nfunction copyHtml() {\n  const rl = readline.createInterface({\n    input: fs.createReadStream(path.join(cwd, 'site/demoRoutes.js')),\n  });\n  fs.writeFileSync(\n    path.join(cwd, '_site/404.html'),\n    fs.readFileSync(path.join(cwd, 'site/404.html')),\n  );\n  fs.writeFileSync(\n    path.join(cwd, '_site/index-cn.html'),\n    fs.readFileSync(path.join(cwd, '_site/index.html')),\n  );\n  fs.writeFileSync(path.join(cwd, '_site/CNAME'), 'vue.ant.design');\n  rl.on('line', line => {\n    if (line.indexOf('path:') > -1) {\n      const name = line.split(\"'\")[1].split(\"'\")[0];\n      // eslint-disable-next-line no-console\n      console.log('create path:', name);\n      const toPaths = [\n        `_site/components/${name}`,\n        // `_site/components/${name}-cn`,\n        `_site/iframe/${name}`,\n        // `_site/iframe/${name}-cn`,\n      ];\n      toPaths.forEach(toPath => {\n        rimraf.sync(path.join(cwd, toPath));\n        mkdirp(path.join(cwd, toPath), function () {\n          fs.writeFileSync(\n            path.join(cwd, `${toPath}/index.html`),\n            fs.readFileSync(path.join(cwd, '_site/index.html')),\n          );\n        });\n      });\n    }\n  });\n  const source = [\n    'docs/vue/*.md',\n    '*.md',\n    // '!components/vc-slider/**/*', // exclude vc-slider\n  ];\n  gulp.src(source).pipe(\n    through2.obj(function z(file, encoding, next) {\n      const paths = file.path.split('/');\n      const name = paths[paths.length - 1].split('.')[0].toLowerCase();\n      const toPaths = [\n        '_site/docs',\n        '_site/docs/vue',\n        `_site/docs/vue/${name}`,\n        `_site/docs/vue/${name}-cn`,\n      ];\n      toPaths.forEach(toPath => {\n        mkdirp(path.join(cwd, toPath), function () {\n          fs.writeFileSync(\n            path.join(cwd, `${toPath}/index.html`),\n            fs.readFileSync(path.join(cwd, '_site/index.html')),\n          );\n        });\n      });\n      next();\n    }),\n  );\n}\n\ngulp.task(\n  '_site',\n  gulp.series(done => {\n    dist(() => {\n      copyHtml();\n      done();\n    });\n  }),\n);\ngulp.task(\n  'copy-html',\n  gulp.series(() => {\n    copyHtml();\n  }),\n);\n"
  },
  {
    "path": "scripts/prepub.js",
    "content": "#!/usr/bin/env node\n\n/* eslint-disable */\n'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst packageInfo = require('../package.json');\nconst defaultVars = require('./default-vars');\nconst darkVars = require('./dark-vars');\n\nfunction generateVersionFile() {\n  if (fs.existsSync(path.join(__dirname, '../lib'))) {\n    // Build package.json version to lib/version/index.js\n    // prevent json-loader needing in user-side\n    const versionFilePath = path.join(process.cwd(), 'lib', 'version', 'index.js');\n    const versionFileContent = fs.readFileSync(versionFilePath).toString();\n    fs.writeFileSync(\n      versionFilePath,\n      versionFileContent.replace(\n        `require('../../package.json')`,\n        `{ version: '${packageInfo.version}' }`,\n      ),\n    );\n    console.log('Wrote version into lib/version/index.js');\n  }\n}\n\nfunction generateThemeFileContent(theme) {\n  return `const { ${theme}ThemeSingle } = require('./theme');\\nconst defaultTheme = require('./default-theme');\\n\nmodule.exports = {\n  ...defaultTheme,\n  ...${theme}ThemeSingle\n}`;\n}\n\n// We need compile additional content for antd user\nfunction finalizeCompile() {\n  if (fs.existsSync(path.join(__dirname, '../lib'))) {\n    // Build a entry less file to dist/antd.less\n    const componentsPath = path.join(process.cwd(), 'components');\n    let componentsLessContent = '';\n    // Build components in one file: lib/style/components.less\n    fs.readdir(componentsPath, (err, files) => {\n      files.forEach(file => {\n        if (fs.existsSync(path.join(componentsPath, file, 'style', 'index.less'))) {\n          componentsLessContent += `@import \"../${path.join(file, 'style', 'index.less')}\";\\n`;\n        }\n      });\n      fs.writeFileSync(\n        path.join(process.cwd(), 'lib', 'style', 'components.less'),\n        componentsLessContent,\n      );\n    });\n  }\n}\n\nfunction buildThemeFile(theme, vars) {\n  // Build less entry file: dist/antd.${theme}.less\n  if (theme !== 'default') {\n    fs.writeFileSync(\n      path.join(process.cwd(), 'dist', `antd.${theme}.less`),\n      `@import \"../lib/style/${theme}.less\";\\n@import \"../lib/style/components.less\";`,\n    );\n    // eslint-disable-next-line no-console\n    console.log(`Built a entry less file to dist/antd.${theme}.less`);\n  } else {\n    fs.writeFileSync(\n      path.join(process.cwd(), 'dist', `default-theme.js`),\n      `module.exports = ${JSON.stringify(vars, null, 2)};\\n`,\n    );\n    return;\n  }\n\n  // Build ${theme}.js: dist/${theme}-theme.js, for less-loader\n\n  fs.writeFileSync(\n    path.join(process.cwd(), 'dist', `theme.js`),\n    `const ${theme}ThemeSingle = ${JSON.stringify(vars, null, 2)};\\n`,\n    {\n      flag: 'a',\n    },\n  );\n\n  fs.writeFileSync(\n    path.join(process.cwd(), 'dist', `${theme}-theme.js`),\n    generateThemeFileContent(theme),\n  );\n\n  // eslint-disable-next-line no-console\n  console.log(`Built a ${theme} theme js file to dist/${theme}-theme.js`);\n}\n\nfunction finalizeDist() {\n  if (fs.existsSync(path.join(__dirname, '../dist'))) {\n    // Build less entry file: dist/antd.less\n    fs.writeFileSync(\n      path.join(process.cwd(), 'dist', 'antd.less'),\n      '@import \"../lib/style/index.less\";\\n@import \"../lib/style/components.less\";',\n    );\n    // eslint-disable-next-line no-console\n    fs.writeFileSync(\n      path.join(process.cwd(), 'dist', 'theme.js'),\n      `const defaultTheme = require('./default-theme.js');\\n`,\n    );\n    // eslint-disable-next-line no-console\n    console.log('Built a entry less file to dist/antd.less');\n    buildThemeFile('default', defaultVars);\n    buildThemeFile('dark', darkVars);\n    // buildThemeFile('compact', compactVars);\n    fs.writeFileSync(\n      path.join(process.cwd(), 'dist', `theme.js`),\n      `\nfunction getThemeVariables(options = {}) {\n  let themeVar = {\n    'hack': \\`true;@import \"\\${require.resolve('ant-design-vue/lib/style/color/colorPalette.less')}\";\\`,\n    ...defaultTheme\n  };\n  if(options.dark) {\n    themeVar = {\n      ...themeVar,\n      ...darkThemeSingle\n    }\n  }\n  if(options.compact){\n    themeVar = {\n      ...themeVar\n    }\n  }\n  return themeVar;\n}\n\nmodule.exports = {\n  darkThemeSingle,\n  getThemeVariables\n}`,\n      {\n        flag: 'a',\n      },\n    );\n  }\n}\n\ngenerateVersionFile();\nfinalizeCompile();\nfinalizeDist();\n"
  },
  {
    "path": "scripts/prettier.js",
    "content": "/**\n * copy to https://github.com/facebook/react/blob/master/scripts/prettier/index.js\n * prettier api doc https://prettier.io/docs/en/api.html\n *----------*****--------------\n *  prettier all js and all ts.\n *----------*****--------------\n */\n\nconst glob = require('glob');\nconst prettier = require('prettier');\nconst fs = require('fs');\n\nconst prettierConfigPath = require.resolve('../.prettierrc');\n\nlet didError = false;\n\nlet files = [];\n\nconst ignoreFiles = [\n  '**/node_modules/**',\n  'package.json',\n  'build/**',\n  'es/**',\n  'lib/**',\n  'dist/**',\n  '**/**.snap',\n  '**/**.map',\n  '**/dist/**',\n  '_site/**',\n];\n\n// get all ts files\nconst tsFiles = glob.sync('**/*.ts*', {\n  ignore: ignoreFiles,\n});\nfiles = files.concat(tsFiles);\n\n// get all js files\nconst jsFiles = glob.sync('**/*.js*', {\n  ignore: ignoreFiles,\n});\nfiles = files.concat(jsFiles);\n\n// get all less files\nconst lessFiles = glob.sync('**/*.less', {\n  ignore: ignoreFiles,\n});\nfiles = files.concat(lessFiles);\n\nif (!files.length) {\n  return;\n}\n\nfiles.forEach(file => {\n  const options = prettier.resolveConfig.sync(file, {\n    config: prettierConfigPath,\n  });\n  const fileInfo = prettier.getFileInfo.sync(file);\n  if (fileInfo.ignored) {\n    return;\n  }\n  try {\n    const input = fs.readFileSync(file, 'utf8');\n    const withParserOptions = {\n      ...options,\n      parser: fileInfo.inferredParser,\n    };\n    const output = prettier.format(input, withParserOptions);\n    if (output !== input) {\n      fs.writeFileSync(file, output, 'utf8');\n      // eslint-disable-next-line no-console\n      console.log(`\\x1b[34m ${file} is prettier`);\n    }\n  } catch (e) {\n    didError = true;\n  }\n});\n\nif (didError) {\n  process.exit(1);\n}\n// eslint-disable-next-line no-console\nconsole.log('\\x1b[32m prettier success!');\n"
  },
  {
    "path": "scripts/run.js",
    "content": "#!/usr/bin/env node\n\n'use strict';\n\nrequire('colorful').colorful();\nrequire('colorful').isatty = true;\nconst gulp = require('gulp');\nconst program = require('commander');\n\nprogram.on('--help', () => {\n  // eslint-disable-next-line no-console\n  console.log('  Usage:'.to.bold.blue.color);\n  // eslint-disable-next-line no-console\n  console.log();\n});\n\nprogram.parse(process.argv);\n\nfunction runTask(toRun) {\n  const metadata = { task: toRun };\n  // Gulp >= 4.0.0 (doesn't support events)\n  const taskInstance = gulp.task(toRun);\n  if (taskInstance === undefined) {\n    gulp.emit('task_not_found', metadata);\n    return;\n  }\n  const start = process.hrtime();\n  gulp.emit('task_start', metadata);\n  try {\n    taskInstance.apply(gulp);\n    metadata.hrDuration = process.hrtime(start);\n    gulp.emit('task_stop', metadata);\n    gulp.emit('stop');\n  } catch (err) {\n    err.hrDuration = process.hrtime(start);\n    err.task = metadata.task;\n    gulp.emit('task_err', err);\n  }\n}\n\nconst task = program.args[0];\n\nif (!task) {\n  program.help();\n} else {\n  // eslint-disable-next-line no-console\n  console.log('scripts run', task);\n\n  require('./gulpfile');\n\n  runTask(task);\n}\n"
  },
  {
    "path": "site/404.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\" />\n    <meta http-equiv=\"Pragma\" content=\"no-cache\" />\n    <meta http-equiv=\"Expires\" content=\"0\" />\n    <meta\n      name=\"description\"\n      content=\"An enterprise-class UI components based on Ant Design and Vue\"\n    />\n    <title>Ant Design Vue</title>\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"//www.antdv.com/favicon.ico\" />\n    <style id=\"nprogress-style\">\n      #page-404 {\n        background-image: url('https://os.alipayobjects.com/rmsportal/NOAjOBbnYCrNzrW.jpg');\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-attachment: fixed;\n        background-position: center;\n        background-size: 100%;\n        position: fixed;\n        top: 0;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        z-index: 100;\n      }\n\n      section {\n        position: absolute;\n        top: 48%;\n        left: 55%;\n        margin: -103px 0 0 -120px;\n        text-align: center;\n      }\n\n      h1 {\n        color: #1890ff;\n        font-size: 120px;\n        font-weight: 500;\n      }\n\n      p {\n        color: #314659;\n        font-size: 18px;\n      }\n    </style>\n    <script>\n      if (location.host === 'ant-design-vue.gitee.io' || location.host === 'vue.ant.design') {\n        location.replace(location.href.replace(location.host, 'www.antdv.com'));\n      }\n      var _hmt = _hmt || [];\n      var srcMap = {\n        'ant-design-vue.gitee.io': 'https://hm.baidu.com/hm.js?1e30265f06f76fabfcdb7ed272017441',\n        'www.antdv.com': 'https://hm.baidu.com/hm.js?4ad38a0c8f0960d731b654425317da22',\n      };\n      var src =\n        srcMap[location.host] || 'https://hm.baidu.com/hm.js?4ad38a0c8f0960d731b654425317da22';\n      (function () {\n        var hm = document.createElement('script');\n        hm.src = src;\n        var s = document.getElementsByTagName('script')[0];\n        s.parentNode.insertBefore(hm, s);\n      })();\n    </script>\n  </head>\n\n  <body>\n    <div id=\"app\">\n      <div id=\"page-404\" data-reactroot=\"\">\n        <section>\n          <h1>404</h1>\n          <p>\n            你要找的页面不存在\n            <a href=\"/\">返回首页</a>\n          </p>\n        </section>\n        <style>\n          #app {\n            height: 100%;\n            background-color: #fff;\n          }\n        </style>\n      </div>\n    </div>\n    <!-- Global site tag (gtag.js) - Google Analytics -->\n    <script async src=\"https://www.googletagmanager.com/gtag/js?id=UA-151755889-1\"></script>\n    <script>\n      window.dataLayer = window.dataLayer || [];\n      function gtag() {\n        dataLayer.push(arguments);\n      }\n      gtag('js', new Date());\n\n      gtag('config', 'UA-151755889-1');\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "site/debugger/demo/demo.vue",
    "content": "<template>\n  <a-tooltip>\n    <template #title>prompt text</template>\n    Tooltip will show when mouse enter.\n  </a-tooltip>\n</template>\n"
  },
  {
    "path": "site/debugger/index.tsx",
    "content": "// debugger tsx\n// import Demo from '../../components/select/demo/field-names.vue';\nimport Demo from './demo/demo.vue';\n\nexport default {\n  setup() {},\n  render() {\n    return <Demo />;\n  },\n};\n"
  },
  {
    "path": "site/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\" />\n    <meta http-equiv=\"Pragma\" content=\"no-cache\" />\n    <meta http-equiv=\"Expires\" content=\"0\" />\n    <meta\n      name=\"description\"\n      content=\"An enterprise-class UI components based on Ant Design and Vue\"\n    />\n    <title>Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js</title>\n    <meta\n      name=\"keywords\"\n      content=\"ant design vue,ant-design-vue,ant-design-vue admin,ant design pro,vue ant design,vue ant design pro,vue ant design admin,ant design vue官网,ant design vue中文文档,ant design vue文档\"\n    />\n    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"//www.antdv.com/favicon.ico\" />\n    <style id=\"nprogress-style\">\n      #nprogress {\n        display: none;\n      }\n    </style>\n    <script>\n      if (location.host === 'ant-design-vue.gitee.io' || location.host === 'vue.ant.design') {\n        location.replace(location.href.replace(location.host, 'www.antdv.com'));\n      }\n      var _hmt = _hmt || [];\n      var srcMap = {\n        'ant-design-vue.gitee.io': 'https://hm.baidu.com/hm.js?1e30265f06f76fabfcdb7ed272017441',\n        'vue.ant.design': 'https://hm.baidu.com/hm.js?f0ba868f114e674b816b4880f7525811',\n        'www.antdv.com': 'https://hm.baidu.com/hm.js?4ad38a0c8f0960d731b654425317da22',\n      };\n      var src =\n        srcMap[location.host] || 'https://hm.baidu.com/hm.js?4ad38a0c8f0960d731b654425317da22';\n      (function () {\n        var hm = document.createElement('script');\n        hm.src = src;\n        var s = document.getElementsByTagName('script')[0];\n        s.parentNode.insertBefore(hm, s);\n      })();\n    </script>\n  </head>\n\n  <body>\n    <div id=\"app\"></div>\n    <script src=\"https://www.antdv.com/docsearch.min_2.6.3.js\"></script>\n    <script type=\"module\" src=\"/src/main.js\"></script>\n    <!-- Global site tag (gtag.js) - Google Analytics -->\n    <script async src=\"https://www.googletagmanager.com/gtag/js?id=UA-151755889-1\"></script>\n    <script>\n      window.dataLayer = window.dataLayer || [];\n      function gtag() {\n        dataLayer.push(arguments);\n      }\n      gtag('js', new Date());\n\n      gtag('config', 'UA-151755889-1');\n    </script>\n    <script type=\"text/javascript\" src=\"https://cdn.wwads.cn/js/makemoney.js\" async></script>\n  </body>\n</html>\n"
  },
  {
    "path": "site/public/docsearch.min_2.6.3.js",
    "content": "/*! docsearch 2.6.3 | 漏 Algolia | github.com/algolia/docsearch */\n(function webpackUniversalModuleDefinition(root, factory) {\n  if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();\n  else if (typeof define === 'function' && define.amd) define([], factory);\n  else if (typeof exports === 'object') exports['docsearch'] = factory();\n  else root['docsearch'] = factory();\n})(typeof self !== 'undefined' ? self : this, function () {\n  return (function (modules) {\n    var installedModules = {};\n    function __webpack_require__(moduleId) {\n      if (installedModules[moduleId]) {\n        return installedModules[moduleId].exports;\n      }\n      var module = (installedModules[moduleId] = { i: moduleId, l: false, exports: {} });\n      modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n      module.l = true;\n      return module.exports;\n    }\n    __webpack_require__.m = modules;\n    __webpack_require__.c = installedModules;\n    __webpack_require__.d = function (exports, name, getter) {\n      if (!__webpack_require__.o(exports, name)) {\n        Object.defineProperty(exports, name, {\n          configurable: false,\n          enumerable: true,\n          get: getter,\n        });\n      }\n    };\n    __webpack_require__.n = function (module) {\n      var getter =\n        module && module.__esModule\n          ? function getDefault() {\n              return module['default'];\n            }\n          : function getModuleExports() {\n              return module;\n            };\n      __webpack_require__.d(getter, 'a', getter);\n      return getter;\n    };\n    __webpack_require__.o = function (object, property) {\n      return Object.prototype.hasOwnProperty.call(object, property);\n    };\n    __webpack_require__.p = '';\n    return __webpack_require__((__webpack_require__.s = 22));\n  })([\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var DOM = __webpack_require__(1);\n      function escapeRegExp(str) {\n        return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n      }\n      module.exports = {\n        isArray: null,\n        isFunction: null,\n        isObject: null,\n        bind: null,\n        each: null,\n        map: null,\n        mixin: null,\n        isMsie: function (agentString) {\n          if (agentString === undefined) {\n            agentString = navigator.userAgent;\n          }\n          if (/(msie|trident)/i.test(agentString)) {\n            var match = agentString.match(/(msie |rv:)(\\d+(.\\d+)?)/i);\n            if (match) {\n              return match[2];\n            }\n          }\n          return false;\n        },\n        escapeRegExChars: function (str) {\n          return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n        },\n        isNumber: function (obj) {\n          return typeof obj === 'number';\n        },\n        toStr: function toStr(s) {\n          return s === undefined || s === null ? '' : s + '';\n        },\n        cloneDeep: function cloneDeep(obj) {\n          var clone = this.mixin({}, obj);\n          var self = this;\n          this.each(clone, function (value, key) {\n            if (value) {\n              if (self.isArray(value)) {\n                clone[key] = [].concat(value);\n              } else if (self.isObject(value)) {\n                clone[key] = self.cloneDeep(value);\n              }\n            }\n          });\n          return clone;\n        },\n        error: function (msg) {\n          throw new Error(msg);\n        },\n        every: function (obj, test) {\n          var result = true;\n          if (!obj) {\n            return result;\n          }\n          this.each(obj, function (val, key) {\n            if (result) {\n              result = test.call(null, val, key, obj) && result;\n            }\n          });\n          return !!result;\n        },\n        any: function (obj, test) {\n          var found = false;\n          if (!obj) {\n            return found;\n          }\n          this.each(obj, function (val, key) {\n            if (test.call(null, val, key, obj)) {\n              found = true;\n              return false;\n            }\n          });\n          return found;\n        },\n        getUniqueId: (function () {\n          var counter = 0;\n          return function () {\n            return counter++;\n          };\n        })(),\n        templatify: function templatify(obj) {\n          if (this.isFunction(obj)) {\n            return obj;\n          }\n          var $template = DOM.element(obj);\n          if ($template.prop('tagName') === 'SCRIPT') {\n            return function template() {\n              return $template.text();\n            };\n          }\n          return function template() {\n            return String(obj);\n          };\n        },\n        defer: function (fn) {\n          setTimeout(fn, 0);\n        },\n        noop: function () {},\n        formatPrefix: function (prefix, noPrefix) {\n          return noPrefix ? '' : prefix + '-';\n        },\n        className: function (prefix, clazz, skipDot) {\n          return (skipDot ? '' : '.') + prefix + clazz;\n        },\n        escapeHighlightedString: function (str, highlightPreTag, highlightPostTag) {\n          highlightPreTag = highlightPreTag || '<em>';\n          var pre = document.createElement('div');\n          pre.appendChild(document.createTextNode(highlightPreTag));\n          highlightPostTag = highlightPostTag || '</em>';\n          var post = document.createElement('div');\n          post.appendChild(document.createTextNode(highlightPostTag));\n          var div = document.createElement('div');\n          div.appendChild(document.createTextNode(str));\n          return div.innerHTML\n            .replace(RegExp(escapeRegExp(pre.innerHTML), 'g'), highlightPreTag)\n            .replace(RegExp(escapeRegExp(post.innerHTML), 'g'), highlightPostTag);\n        },\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = { element: null };\n    },\n    function (module, exports) {\n      var hasOwn = Object.prototype.hasOwnProperty;\n      var toString = Object.prototype.toString;\n      module.exports = function forEach(obj, fn, ctx) {\n        if (toString.call(fn) !== '[object Function]') {\n          throw new TypeError('iterator must be a function');\n        }\n        var l = obj.length;\n        if (l === +l) {\n          for (var i = 0; i < l; i++) {\n            fn.call(ctx, obj[i], i, obj);\n          }\n        } else {\n          for (var k in obj) {\n            if (hasOwn.call(obj, k)) {\n              fn.call(ctx, obj[k], k, obj);\n            }\n          }\n        }\n      };\n    },\n    function (module, exports) {\n      module.exports = function clone(obj) {\n        return JSON.parse(JSON.stringify(obj));\n      };\n    },\n    function (module, exports) {\n      var g;\n      g = (function () {\n        return this;\n      })();\n      try {\n        g = g || Function('return this')() || (1, eval)('this');\n      } catch (e) {\n        if (typeof window === 'object') g = window;\n      }\n      module.exports = g;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var inherits = __webpack_require__(12);\n      function AlgoliaSearchError(message, extraProperties) {\n        var forEach = __webpack_require__(2);\n        var error = this;\n        if (typeof Error.captureStackTrace === 'function') {\n          Error.captureStackTrace(this, this.constructor);\n        } else {\n          error.stack = new Error().stack || 'Cannot get a stacktrace, browser is too old';\n        }\n        this.name = 'AlgoliaSearchError';\n        this.message = message || 'Unknown error';\n        if (extraProperties) {\n          forEach(extraProperties, function addToErrorObject(value, key) {\n            error[key] = value;\n          });\n        }\n      }\n      inherits(AlgoliaSearchError, Error);\n      function createCustomError(name, message) {\n        function AlgoliaSearchCustomError() {\n          var args = Array.prototype.slice.call(arguments, 0);\n          if (typeof args[0] !== 'string') {\n            args.unshift(message);\n          }\n          AlgoliaSearchError.apply(this, args);\n          this.name = 'AlgoliaSearch' + name + 'Error';\n        }\n        inherits(AlgoliaSearchCustomError, AlgoliaSearchError);\n        return AlgoliaSearchCustomError;\n      }\n      module.exports = {\n        AlgoliaSearchError: AlgoliaSearchError,\n        UnparsableJSON: createCustomError(\n          'UnparsableJSON',\n          'Could not parse the incoming response as JSON, see err.more for details',\n        ),\n        RequestTimeout: createCustomError(\n          'RequestTimeout',\n          'Request timedout before getting a response',\n        ),\n        Network: createCustomError('Network', 'Network issue, see err.more for details'),\n        JSONPScriptFail: createCustomError(\n          'JSONPScriptFail',\n          '<script> was loaded but did not call our provided callback',\n        ),\n        JSONPScriptError: createCustomError(\n          'JSONPScriptError',\n          '<script> unable to load due to an `error` event on it',\n        ),\n        Unknown: createCustomError('Unknown', 'Unknown error occured'),\n      };\n    },\n    function (module, exports) {\n      var toString = {}.toString;\n      module.exports =\n        Array.isArray ||\n        function (arr) {\n          return toString.call(arr) == '[object Array]';\n        };\n    },\n    function (module, exports, __webpack_require__) {\n      var foreach = __webpack_require__(2);\n      module.exports = function map(arr, fn) {\n        var newArr = [];\n        foreach(arr, function (item, itemIndex) {\n          newArr.push(fn(item, itemIndex, arr));\n        });\n        return newArr;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      (function (process) {\n        exports = module.exports = __webpack_require__(39);\n        exports.log = log;\n        exports.formatArgs = formatArgs;\n        exports.save = save;\n        exports.load = load;\n        exports.useColors = useColors;\n        exports.storage =\n          'undefined' != typeof chrome && 'undefined' != typeof chrome.storage\n            ? chrome.storage.local\n            : localstorage();\n        exports.colors = [\n          'lightseagreen',\n          'forestgreen',\n          'goldenrod',\n          'dodgerblue',\n          'darkorchid',\n          'crimson',\n        ];\n        function useColors() {\n          if (\n            typeof window !== 'undefined' &&\n            window.process &&\n            window.process.type === 'renderer'\n          ) {\n            return true;\n          }\n          return (\n            (typeof document !== 'undefined' &&\n              document.documentElement &&\n              document.documentElement.style &&\n              document.documentElement.style.WebkitAppearance) ||\n            (typeof window !== 'undefined' &&\n              window.console &&\n              (window.console.firebug || (window.console.exception && window.console.table))) ||\n            (typeof navigator !== 'undefined' &&\n              navigator.userAgent &&\n              navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) &&\n              parseInt(RegExp.$1, 10) >= 31) ||\n            (typeof navigator !== 'undefined' &&\n              navigator.userAgent &&\n              navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n          );\n        }\n        exports.formatters.j = function (v) {\n          try {\n            return JSON.stringify(v);\n          } catch (err) {\n            return '[UnexpectedJSONParseError]: ' + err.message;\n          }\n        };\n        function formatArgs(args) {\n          var useColors = this.useColors;\n          args[0] =\n            (useColors ? '%c' : '') +\n            this.namespace +\n            (useColors ? ' %c' : ' ') +\n            args[0] +\n            (useColors ? '%c ' : ' ') +\n            '+' +\n            exports.humanize(this.diff);\n          if (!useColors) return;\n          var c = 'color: ' + this.color;\n          args.splice(1, 0, c, 'color: inherit');\n          var index = 0;\n          var lastC = 0;\n          args[0].replace(/%[a-zA-Z%]/g, function (match) {\n            if ('%%' === match) return;\n            index++;\n            if ('%c' === match) {\n              lastC = index;\n            }\n          });\n          args.splice(lastC, 0, c);\n        }\n        function log() {\n          return (\n            'object' === typeof console &&\n            console.log &&\n            Function.prototype.apply.call(console.log, console, arguments)\n          );\n        }\n        function save(namespaces) {\n          try {\n            if (null == namespaces) {\n              exports.storage.removeItem('debug');\n            } else {\n              exports.storage.debug = namespaces;\n            }\n          } catch (e) {}\n        }\n        function load() {\n          var r;\n          try {\n            r = exports.storage.debug;\n          } catch (e) {}\n          if (!r && typeof process !== 'undefined' && 'env' in process) {\n            r = Object({ NODE_ENV: 'production' }).DEBUG;\n          }\n          return r;\n        }\n        exports.enable(load());\n        function localstorage() {\n          try {\n            return window.localStorage;\n          } catch (e) {}\n        }\n      }).call(exports, __webpack_require__(9));\n    },\n    function (module, exports) {\n      var process = (module.exports = {});\n      var cachedSetTimeout;\n      var cachedClearTimeout;\n      function defaultSetTimout() {\n        throw new Error('setTimeout has not been defined');\n      }\n      function defaultClearTimeout() {\n        throw new Error('clearTimeout has not been defined');\n      }\n      (function () {\n        try {\n          if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n          } else {\n            cachedSetTimeout = defaultSetTimout;\n          }\n        } catch (e) {\n          cachedSetTimeout = defaultSetTimout;\n        }\n        try {\n          if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n          } else {\n            cachedClearTimeout = defaultClearTimeout;\n          }\n        } catch (e) {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      })();\n      function runTimeout(fun) {\n        if (cachedSetTimeout === setTimeout) {\n          return setTimeout(fun, 0);\n        }\n        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n          cachedSetTimeout = setTimeout;\n          return setTimeout(fun, 0);\n        }\n        try {\n          return cachedSetTimeout(fun, 0);\n        } catch (e) {\n          try {\n            return cachedSetTimeout.call(null, fun, 0);\n          } catch (e) {\n            return cachedSetTimeout.call(this, fun, 0);\n          }\n        }\n      }\n      function runClearTimeout(marker) {\n        if (cachedClearTimeout === clearTimeout) {\n          return clearTimeout(marker);\n        }\n        if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n          cachedClearTimeout = clearTimeout;\n          return clearTimeout(marker);\n        }\n        try {\n          return cachedClearTimeout(marker);\n        } catch (e) {\n          try {\n            return cachedClearTimeout.call(null, marker);\n          } catch (e) {\n            return cachedClearTimeout.call(this, marker);\n          }\n        }\n      }\n      var queue = [];\n      var draining = false;\n      var currentQueue;\n      var queueIndex = -1;\n      function cleanUpNextTick() {\n        if (!draining || !currentQueue) {\n          return;\n        }\n        draining = false;\n        if (currentQueue.length) {\n          queue = currentQueue.concat(queue);\n        } else {\n          queueIndex = -1;\n        }\n        if (queue.length) {\n          drainQueue();\n        }\n      }\n      function drainQueue() {\n        if (draining) {\n          return;\n        }\n        var timeout = runTimeout(cleanUpNextTick);\n        draining = true;\n        var len = queue.length;\n        while (len) {\n          currentQueue = queue;\n          queue = [];\n          while (++queueIndex < len) {\n            if (currentQueue) {\n              currentQueue[queueIndex].run();\n            }\n          }\n          queueIndex = -1;\n          len = queue.length;\n        }\n        currentQueue = null;\n        draining = false;\n        runClearTimeout(timeout);\n      }\n      process.nextTick = function (fun) {\n        var args = new Array(arguments.length - 1);\n        if (arguments.length > 1) {\n          for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n          }\n        }\n        queue.push(new Item(fun, args));\n        if (queue.length === 1 && !draining) {\n          runTimeout(drainQueue);\n        }\n      };\n      function Item(fun, array) {\n        this.fun = fun;\n        this.array = array;\n      }\n      Item.prototype.run = function () {\n        this.fun.apply(null, this.array);\n      };\n      process.title = 'browser';\n      process.browser = true;\n      process.env = {};\n      process.argv = [];\n      process.version = '';\n      process.versions = {};\n      function noop() {}\n      process.on = noop;\n      process.addListener = noop;\n      process.once = noop;\n      process.off = noop;\n      process.removeListener = noop;\n      process.removeAllListeners = noop;\n      process.emit = noop;\n      process.prependListener = noop;\n      process.prependOnceListener = noop;\n      process.listeners = function (name) {\n        return [];\n      };\n      process.binding = function (name) {\n        throw new Error('process.binding is not supported');\n      };\n      process.cwd = function () {\n        return '/';\n      };\n      process.chdir = function (dir) {\n        throw new Error('process.chdir is not supported');\n      };\n      process.umask = function () {\n        return 0;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var immediate = __webpack_require__(53);\n      var splitter = /\\s+/;\n      module.exports = { onSync: onSync, onAsync: onAsync, off: off, trigger: trigger };\n      function on(method, types, cb, context) {\n        var type;\n        if (!cb) {\n          return this;\n        }\n        types = types.split(splitter);\n        cb = context ? bindContext(cb, context) : cb;\n        this._callbacks = this._callbacks || {};\n        while ((type = types.shift())) {\n          this._callbacks[type] = this._callbacks[type] || { sync: [], async: [] };\n          this._callbacks[type][method].push(cb);\n        }\n        return this;\n      }\n      function onAsync(types, cb, context) {\n        return on.call(this, 'async', types, cb, context);\n      }\n      function onSync(types, cb, context) {\n        return on.call(this, 'sync', types, cb, context);\n      }\n      function off(types) {\n        var type;\n        if (!this._callbacks) {\n          return this;\n        }\n        types = types.split(splitter);\n        while ((type = types.shift())) {\n          delete this._callbacks[type];\n        }\n        return this;\n      }\n      function trigger(types) {\n        var type;\n        var callbacks;\n        var args;\n        var syncFlush;\n        var asyncFlush;\n        if (!this._callbacks) {\n          return this;\n        }\n        types = types.split(splitter);\n        args = [].slice.call(arguments, 1);\n        while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n          syncFlush = getFlush(callbacks.sync, this, [type].concat(args));\n          asyncFlush = getFlush(callbacks.async, this, [type].concat(args));\n          if (syncFlush()) {\n            immediate(asyncFlush);\n          }\n        }\n        return this;\n      }\n      function getFlush(callbacks, context, args) {\n        return flush;\n        function flush() {\n          var cancelled;\n          for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n            cancelled = callbacks[i].apply(context, args) === false;\n          }\n          return !cancelled;\n        }\n      }\n      function bindContext(fn, context) {\n        return fn.bind\n          ? fn.bind(context)\n          : function () {\n              fn.apply(context, [].slice.call(arguments, 0));\n            };\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _ = __webpack_require__(0);\n      var css = {\n        wrapper: { position: 'relative', display: 'inline-block' },\n        hint: {\n          position: 'absolute',\n          top: '0',\n          left: '0',\n          borderColor: 'transparent',\n          boxShadow: 'none',\n          opacity: '1',\n        },\n        input: { position: 'relative', verticalAlign: 'top', backgroundColor: 'transparent' },\n        inputWithNoHint: { position: 'relative', verticalAlign: 'top' },\n        dropdown: { position: 'absolute', top: '100%', left: '0', zIndex: '100', display: 'none' },\n        suggestions: { display: 'block' },\n        suggestion: { whiteSpace: 'nowrap', cursor: 'pointer' },\n        suggestionChild: { whiteSpace: 'normal' },\n        ltr: { left: '0', right: 'auto' },\n        rtl: { left: 'auto', right: '0' },\n        defaultClasses: {\n          root: 'algolia-autocomplete',\n          prefix: 'aa',\n          noPrefix: false,\n          dropdownMenu: 'dropdown-menu',\n          input: 'input',\n          hint: 'hint',\n          suggestions: 'suggestions',\n          suggestion: 'suggestion',\n          cursor: 'cursor',\n          dataset: 'dataset',\n          empty: 'empty',\n        },\n        appendTo: {\n          wrapper: { position: 'absolute', zIndex: '100', display: 'none' },\n          input: {},\n          inputWithNoHint: {},\n          dropdown: { display: 'block' },\n        },\n      };\n      if (_.isMsie()) {\n        _.mixin(css.input, {\n          backgroundImage:\n            'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',\n        });\n      }\n      if (_.isMsie() && _.isMsie() <= 7) {\n        _.mixin(css.input, { marginTop: '-1px' });\n      }\n      module.exports = css;\n    },\n    function (module, exports) {\n      if (typeof Object.create === 'function') {\n        module.exports = function inherits(ctor, superCtor) {\n          ctor.super_ = superCtor;\n          ctor.prototype = Object.create(superCtor.prototype, {\n            constructor: { value: ctor, enumerable: false, writable: true, configurable: true },\n          });\n        };\n      } else {\n        module.exports = function inherits(ctor, superCtor) {\n          ctor.super_ = superCtor;\n          var TempCtor = function () {};\n          TempCtor.prototype = superCtor.prototype;\n          ctor.prototype = new TempCtor();\n          ctor.prototype.constructor = ctor;\n        };\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      module.exports = buildSearchMethod;\n      var errors = __webpack_require__(5);\n      function buildSearchMethod(queryParam, url) {\n        return function search(query, args, callback) {\n          if (\n            (typeof query === 'function' && typeof args === 'object') ||\n            typeof callback === 'object'\n          ) {\n            throw new errors.AlgoliaSearchError(\n              'index.search usage is index.search(query, params, cb)',\n            );\n          }\n          if (arguments.length === 0 || typeof query === 'function') {\n            callback = query;\n            query = '';\n          } else if (arguments.length === 1 || typeof args === 'function') {\n            callback = args;\n            args = undefined;\n          }\n          if (typeof query === 'object' && query !== null) {\n            args = query;\n            query = undefined;\n          } else if (query === undefined || query === null) {\n            query = '';\n          }\n          var params = '';\n          if (query !== undefined) {\n            params += queryParam + '=' + encodeURIComponent(query);\n          }\n          var additionalUA;\n          if (args !== undefined) {\n            if (args.additionalUA) {\n              additionalUA = args.additionalUA;\n              delete args.additionalUA;\n            }\n            params = this.as._getSearchParams(args, params);\n          }\n          return this._search(params, url, callback, additionalUA);\n        };\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      module.exports = function omit(obj, test) {\n        var keys = __webpack_require__(36);\n        var foreach = __webpack_require__(2);\n        var filtered = {};\n        foreach(keys(obj), function doFilter(keyName) {\n          if (test(keyName) !== true) {\n            filtered[keyName] = obj[keyName];\n          }\n        });\n        return filtered;\n      };\n    },\n    function (module, exports) {\n      (function (global, factory) {\n        module.exports = factory(global);\n      })(window, function (window) {\n        var Zepto = (function () {\n          var undefined,\n            key,\n            $,\n            classList,\n            emptyArray = [],\n            concat = emptyArray.concat,\n            filter = emptyArray.filter,\n            slice = emptyArray.slice,\n            document = window.document,\n            elementDisplay = {},\n            classCache = {},\n            cssNumber = {\n              'column-count': 1,\n              columns: 1,\n              'font-weight': 1,\n              'line-height': 1,\n              opacity: 1,\n              'z-index': 1,\n              zoom: 1,\n            },\n            fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n            singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n            tagExpanderRE =\n              /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n            rootNodeRE = /^(?:body|html)$/i,\n            capitalRE = /([A-Z])/g,\n            methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n            adjacencyOperators = ['after', 'prepend', 'before', 'append'],\n            table = document.createElement('table'),\n            tableRow = document.createElement('tr'),\n            containers = {\n              tr: document.createElement('tbody'),\n              tbody: table,\n              thead: table,\n              tfoot: table,\n              td: tableRow,\n              th: tableRow,\n              '*': document.createElement('div'),\n            },\n            readyRE = /complete|loaded|interactive/,\n            simpleSelectorRE = /^[\\w-]*$/,\n            class2type = {},\n            toString = class2type.toString,\n            zepto = {},\n            camelize,\n            uniq,\n            tempParent = document.createElement('div'),\n            propMap = {\n              tabindex: 'tabIndex',\n              readonly: 'readOnly',\n              for: 'htmlFor',\n              class: 'className',\n              maxlength: 'maxLength',\n              cellspacing: 'cellSpacing',\n              cellpadding: 'cellPadding',\n              rowspan: 'rowSpan',\n              colspan: 'colSpan',\n              usemap: 'useMap',\n              frameborder: 'frameBorder',\n              contenteditable: 'contentEditable',\n            },\n            isArray =\n              Array.isArray ||\n              function (object) {\n                return object instanceof Array;\n              };\n          zepto.matches = function (element, selector) {\n            if (!selector || !element || element.nodeType !== 1) return false;\n            var matchesSelector =\n              element.matches ||\n              element.webkitMatchesSelector ||\n              element.mozMatchesSelector ||\n              element.oMatchesSelector ||\n              element.matchesSelector;\n            if (matchesSelector) return matchesSelector.call(element, selector);\n            var match,\n              parent = element.parentNode,\n              temp = !parent;\n            if (temp) (parent = tempParent).appendChild(element);\n            match = ~zepto.qsa(parent, selector).indexOf(element);\n            temp && tempParent.removeChild(element);\n            return match;\n          };\n          function type(obj) {\n            return obj == null ? String(obj) : class2type[toString.call(obj)] || 'object';\n          }\n          function isFunction(value) {\n            return type(value) == 'function';\n          }\n          function isWindow(obj) {\n            return obj != null && obj == obj.window;\n          }\n          function isDocument(obj) {\n            return obj != null && obj.nodeType == obj.DOCUMENT_NODE;\n          }\n          function isObject(obj) {\n            return type(obj) == 'object';\n          }\n          function isPlainObject(obj) {\n            return (\n              isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n            );\n          }\n          function likeArray(obj) {\n            var length = !!obj && 'length' in obj && obj.length,\n              type = $.type(obj);\n            return (\n              'function' != type &&\n              !isWindow(obj) &&\n              ('array' == type ||\n                length === 0 ||\n                (typeof length == 'number' && length > 0 && length - 1 in obj))\n            );\n          }\n          function compact(array) {\n            return filter.call(array, function (item) {\n              return item != null;\n            });\n          }\n          function flatten(array) {\n            return array.length > 0 ? $.fn.concat.apply([], array) : array;\n          }\n          camelize = function (str) {\n            return str.replace(/-+(.)?/g, function (match, chr) {\n              return chr ? chr.toUpperCase() : '';\n            });\n          };\n          function dasherize(str) {\n            return str\n              .replace(/::/g, '/')\n              .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n              .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n              .replace(/_/g, '-')\n              .toLowerCase();\n          }\n          uniq = function (array) {\n            return filter.call(array, function (item, idx) {\n              return array.indexOf(item) == idx;\n            });\n          };\n          function classRE(name) {\n            return name in classCache\n              ? classCache[name]\n              : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'));\n          }\n          function maybeAddPx(name, value) {\n            return typeof value == 'number' && !cssNumber[dasherize(name)] ? value + 'px' : value;\n          }\n          function defaultDisplay(nodeName) {\n            var element, display;\n            if (!elementDisplay[nodeName]) {\n              element = document.createElement(nodeName);\n              document.body.appendChild(element);\n              display = getComputedStyle(element, '').getPropertyValue('display');\n              element.parentNode.removeChild(element);\n              display == 'none' && (display = 'block');\n              elementDisplay[nodeName] = display;\n            }\n            return elementDisplay[nodeName];\n          }\n          function children(element) {\n            return 'children' in element\n              ? slice.call(element.children)\n              : $.map(element.childNodes, function (node) {\n                  if (node.nodeType == 1) return node;\n                });\n          }\n          function Z(dom, selector) {\n            var i,\n              len = dom ? dom.length : 0;\n            for (i = 0; i < len; i++) this[i] = dom[i];\n            this.length = len;\n            this.selector = selector || '';\n          }\n          zepto.fragment = function (html, name, properties) {\n            var dom, nodes, container;\n            if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1));\n            if (!dom) {\n              if (html.replace) html = html.replace(tagExpanderRE, '<$1></$2>');\n              if (name === undefined) name = fragmentRE.test(html) && RegExp.$1;\n              if (!(name in containers)) name = '*';\n              container = containers[name];\n              container.innerHTML = '' + html;\n              dom = $.each(slice.call(container.childNodes), function () {\n                container.removeChild(this);\n              });\n            }\n            if (isPlainObject(properties)) {\n              nodes = $(dom);\n              $.each(properties, function (key, value) {\n                if (methodAttributes.indexOf(key) > -1) nodes[key](value);\n                else nodes.attr(key, value);\n              });\n            }\n            return dom;\n          };\n          zepto.Z = function (dom, selector) {\n            return new Z(dom, selector);\n          };\n          zepto.isZ = function (object) {\n            return object instanceof zepto.Z;\n          };\n          zepto.init = function (selector, context) {\n            var dom;\n            if (!selector) return zepto.Z();\n            else if (typeof selector == 'string') {\n              selector = selector.trim();\n              if (selector[0] == '<' && fragmentRE.test(selector))\n                (dom = zepto.fragment(selector, RegExp.$1, context)), (selector = null);\n              else if (context !== undefined) return $(context).find(selector);\n              else dom = zepto.qsa(document, selector);\n            } else if (isFunction(selector)) return $(document).ready(selector);\n            else if (zepto.isZ(selector)) return selector;\n            else {\n              if (isArray(selector)) dom = compact(selector);\n              else if (isObject(selector)) (dom = [selector]), (selector = null);\n              else if (fragmentRE.test(selector))\n                (dom = zepto.fragment(selector.trim(), RegExp.$1, context)), (selector = null);\n              else if (context !== undefined) return $(context).find(selector);\n              else dom = zepto.qsa(document, selector);\n            }\n            return zepto.Z(dom, selector);\n          };\n          $ = function (selector, context) {\n            return zepto.init(selector, context);\n          };\n          function extend(target, source, deep) {\n            for (key in source)\n              if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n                if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {};\n                if (isArray(source[key]) && !isArray(target[key])) target[key] = [];\n                extend(target[key], source[key], deep);\n              } else if (source[key] !== undefined) target[key] = source[key];\n          }\n          $.extend = function (target) {\n            var deep,\n              args = slice.call(arguments, 1);\n            if (typeof target == 'boolean') {\n              deep = target;\n              target = args.shift();\n            }\n            args.forEach(function (arg) {\n              extend(target, arg, deep);\n            });\n            return target;\n          };\n          zepto.qsa = function (element, selector) {\n            var found,\n              maybeID = selector[0] == '#',\n              maybeClass = !maybeID && selector[0] == '.',\n              nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n              isSimple = simpleSelectorRE.test(nameOnly);\n            return element.getElementById && isSimple && maybeID\n              ? (found = element.getElementById(nameOnly))\n                ? [found]\n                : []\n              : element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11\n              ? []\n              : slice.call(\n                  isSimple && !maybeID && element.getElementsByClassName\n                    ? maybeClass\n                      ? element.getElementsByClassName(nameOnly)\n                      : element.getElementsByTagName(selector)\n                    : element.querySelectorAll(selector),\n                );\n          };\n          function filtered(nodes, selector) {\n            return selector == null ? $(nodes) : $(nodes).filter(selector);\n          }\n          $.contains = document.documentElement.contains\n            ? function (parent, node) {\n                return parent !== node && parent.contains(node);\n              }\n            : function (parent, node) {\n                while (node && (node = node.parentNode)) if (node === parent) return true;\n                return false;\n              };\n          function funcArg(context, arg, idx, payload) {\n            return isFunction(arg) ? arg.call(context, idx, payload) : arg;\n          }\n          function setAttribute(node, name, value) {\n            value == null ? node.removeAttribute(name) : node.setAttribute(name, value);\n          }\n          function className(node, value) {\n            var klass = node.className || '',\n              svg = klass && klass.baseVal !== undefined;\n            if (value === undefined) return svg ? klass.baseVal : klass;\n            svg ? (klass.baseVal = value) : (node.className = value);\n          }\n          function deserializeValue(value) {\n            try {\n              return value\n                ? value == 'true' ||\n                    (value == 'false'\n                      ? false\n                      : value == 'null'\n                      ? null\n                      : +value + '' == value\n                      ? +value\n                      : /^[\\[\\{]/.test(value)\n                      ? $.parseJSON(value)\n                      : value)\n                : value;\n            } catch (e) {\n              return value;\n            }\n          }\n          $.type = type;\n          $.isFunction = isFunction;\n          $.isWindow = isWindow;\n          $.isArray = isArray;\n          $.isPlainObject = isPlainObject;\n          $.isEmptyObject = function (obj) {\n            var name;\n            for (name in obj) return false;\n            return true;\n          };\n          $.isNumeric = function (val) {\n            var num = Number(val),\n              type = typeof val;\n            return (\n              (val != null &&\n                type != 'boolean' &&\n                (type != 'string' || val.length) &&\n                !isNaN(num) &&\n                isFinite(num)) ||\n              false\n            );\n          };\n          $.inArray = function (elem, array, i) {\n            return emptyArray.indexOf.call(array, elem, i);\n          };\n          $.camelCase = camelize;\n          $.trim = function (str) {\n            return str == null ? '' : String.prototype.trim.call(str);\n          };\n          $.uuid = 0;\n          $.support = {};\n          $.expr = {};\n          $.noop = function () {};\n          $.map = function (elements, callback) {\n            var value,\n              values = [],\n              i,\n              key;\n            if (likeArray(elements))\n              for (i = 0; i < elements.length; i++) {\n                value = callback(elements[i], i);\n                if (value != null) values.push(value);\n              }\n            else\n              for (key in elements) {\n                value = callback(elements[key], key);\n                if (value != null) values.push(value);\n              }\n            return flatten(values);\n          };\n          $.each = function (elements, callback) {\n            var i, key;\n            if (likeArray(elements)) {\n              for (i = 0; i < elements.length; i++)\n                if (callback.call(elements[i], i, elements[i]) === false) return elements;\n            } else {\n              for (key in elements)\n                if (callback.call(elements[key], key, elements[key]) === false) return elements;\n            }\n            return elements;\n          };\n          $.grep = function (elements, callback) {\n            return filter.call(elements, callback);\n          };\n          if (window.JSON) $.parseJSON = JSON.parse;\n          $.each(\n            'Boolean Number String Function Array Date RegExp Object Error'.split(' '),\n            function (i, name) {\n              class2type['[object ' + name + ']'] = name.toLowerCase();\n            },\n          );\n          $.fn = {\n            constructor: zepto.Z,\n            length: 0,\n            forEach: emptyArray.forEach,\n            reduce: emptyArray.reduce,\n            push: emptyArray.push,\n            sort: emptyArray.sort,\n            splice: emptyArray.splice,\n            indexOf: emptyArray.indexOf,\n            concat: function () {\n              var i,\n                value,\n                args = [];\n              for (i = 0; i < arguments.length; i++) {\n                value = arguments[i];\n                args[i] = zepto.isZ(value) ? value.toArray() : value;\n              }\n              return concat.apply(zepto.isZ(this) ? this.toArray() : this, args);\n            },\n            map: function (fn) {\n              return $(\n                $.map(this, function (el, i) {\n                  return fn.call(el, i, el);\n                }),\n              );\n            },\n            slice: function () {\n              return $(slice.apply(this, arguments));\n            },\n            ready: function (callback) {\n              if (readyRE.test(document.readyState) && document.body) callback($);\n              else\n                document.addEventListener(\n                  'DOMContentLoaded',\n                  function () {\n                    callback($);\n                  },\n                  false,\n                );\n              return this;\n            },\n            get: function (idx) {\n              return idx === undefined\n                ? slice.call(this)\n                : this[idx >= 0 ? idx : idx + this.length];\n            },\n            toArray: function () {\n              return this.get();\n            },\n            size: function () {\n              return this.length;\n            },\n            remove: function () {\n              return this.each(function () {\n                if (this.parentNode != null) this.parentNode.removeChild(this);\n              });\n            },\n            each: function (callback) {\n              emptyArray.every.call(this, function (el, idx) {\n                return callback.call(el, idx, el) !== false;\n              });\n              return this;\n            },\n            filter: function (selector) {\n              if (isFunction(selector)) return this.not(this.not(selector));\n              return $(\n                filter.call(this, function (element) {\n                  return zepto.matches(element, selector);\n                }),\n              );\n            },\n            add: function (selector, context) {\n              return $(uniq(this.concat($(selector, context))));\n            },\n            is: function (selector) {\n              return this.length > 0 && zepto.matches(this[0], selector);\n            },\n            not: function (selector) {\n              var nodes = [];\n              if (isFunction(selector) && selector.call !== undefined)\n                this.each(function (idx) {\n                  if (!selector.call(this, idx)) nodes.push(this);\n                });\n              else {\n                var excludes =\n                  typeof selector == 'string'\n                    ? this.filter(selector)\n                    : likeArray(selector) && isFunction(selector.item)\n                    ? slice.call(selector)\n                    : $(selector);\n                this.forEach(function (el) {\n                  if (excludes.indexOf(el) < 0) nodes.push(el);\n                });\n              }\n              return $(nodes);\n            },\n            has: function (selector) {\n              return this.filter(function () {\n                return isObject(selector)\n                  ? $.contains(this, selector)\n                  : $(this).find(selector).size();\n              });\n            },\n            eq: function (idx) {\n              return idx === -1 ? this.slice(idx) : this.slice(idx, +idx + 1);\n            },\n            first: function () {\n              var el = this[0];\n              return el && !isObject(el) ? el : $(el);\n            },\n            last: function () {\n              var el = this[this.length - 1];\n              return el && !isObject(el) ? el : $(el);\n            },\n            find: function (selector) {\n              var result,\n                $this = this;\n              if (!selector) result = $();\n              else if (typeof selector == 'object')\n                result = $(selector).filter(function () {\n                  var node = this;\n                  return emptyArray.some.call($this, function (parent) {\n                    return $.contains(parent, node);\n                  });\n                });\n              else if (this.length == 1) result = $(zepto.qsa(this[0], selector));\n              else\n                result = this.map(function () {\n                  return zepto.qsa(this, selector);\n                });\n              return result;\n            },\n            closest: function (selector, context) {\n              var nodes = [],\n                collection = typeof selector == 'object' && $(selector);\n              this.each(function (_, node) {\n                while (\n                  node &&\n                  !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))\n                )\n                  node = node !== context && !isDocument(node) && node.parentNode;\n                if (node && nodes.indexOf(node) < 0) nodes.push(node);\n              });\n              return $(nodes);\n            },\n            parents: function (selector) {\n              var ancestors = [],\n                nodes = this;\n              while (nodes.length > 0)\n                nodes = $.map(nodes, function (node) {\n                  if (\n                    (node = node.parentNode) &&\n                    !isDocument(node) &&\n                    ancestors.indexOf(node) < 0\n                  ) {\n                    ancestors.push(node);\n                    return node;\n                  }\n                });\n              return filtered(ancestors, selector);\n            },\n            parent: function (selector) {\n              return filtered(uniq(this.pluck('parentNode')), selector);\n            },\n            children: function (selector) {\n              return filtered(\n                this.map(function () {\n                  return children(this);\n                }),\n                selector,\n              );\n            },\n            contents: function () {\n              return this.map(function () {\n                return this.contentDocument || slice.call(this.childNodes);\n              });\n            },\n            siblings: function (selector) {\n              return filtered(\n                this.map(function (i, el) {\n                  return filter.call(children(el.parentNode), function (child) {\n                    return child !== el;\n                  });\n                }),\n                selector,\n              );\n            },\n            empty: function () {\n              return this.each(function () {\n                this.innerHTML = '';\n              });\n            },\n            pluck: function (property) {\n              return $.map(this, function (el) {\n                return el[property];\n              });\n            },\n            show: function () {\n              return this.each(function () {\n                this.style.display == 'none' && (this.style.display = '');\n                if (getComputedStyle(this, '').getPropertyValue('display') == 'none')\n                  this.style.display = defaultDisplay(this.nodeName);\n              });\n            },\n            replaceWith: function (newContent) {\n              return this.before(newContent).remove();\n            },\n            wrap: function (structure) {\n              var func = isFunction(structure);\n              if (this[0] && !func)\n                var dom = $(structure).get(0),\n                  clone = dom.parentNode || this.length > 1;\n              return this.each(function (index) {\n                $(this).wrapAll(\n                  func ? structure.call(this, index) : clone ? dom.cloneNode(true) : dom,\n                );\n              });\n            },\n            wrapAll: function (structure) {\n              if (this[0]) {\n                $(this[0]).before((structure = $(structure)));\n                var children;\n                while ((children = structure.children()).length) structure = children.first();\n                $(structure).append(this);\n              }\n              return this;\n            },\n            wrapInner: function (structure) {\n              var func = isFunction(structure);\n              return this.each(function (index) {\n                var self = $(this),\n                  contents = self.contents(),\n                  dom = func ? structure.call(this, index) : structure;\n                contents.length ? contents.wrapAll(dom) : self.append(dom);\n              });\n            },\n            unwrap: function () {\n              this.parent().each(function () {\n                $(this).replaceWith($(this).children());\n              });\n              return this;\n            },\n            clone: function () {\n              return this.map(function () {\n                return this.cloneNode(true);\n              });\n            },\n            hide: function () {\n              return this.css('display', 'none');\n            },\n            toggle: function (setting) {\n              return this.each(function () {\n                var el = $(this);\n                (setting === undefined ? el.css('display') == 'none' : setting)\n                  ? el.show()\n                  : el.hide();\n              });\n            },\n            prev: function (selector) {\n              return $(this.pluck('previousElementSibling')).filter(selector || '*');\n            },\n            next: function (selector) {\n              return $(this.pluck('nextElementSibling')).filter(selector || '*');\n            },\n            html: function (html) {\n              return 0 in arguments\n                ? this.each(function (idx) {\n                    var originHtml = this.innerHTML;\n                    $(this).empty().append(funcArg(this, html, idx, originHtml));\n                  })\n                : 0 in this\n                ? this[0].innerHTML\n                : null;\n            },\n            text: function (text) {\n              return 0 in arguments\n                ? this.each(function (idx) {\n                    var newText = funcArg(this, text, idx, this.textContent);\n                    this.textContent = newText == null ? '' : '' + newText;\n                  })\n                : 0 in this\n                ? this.pluck('textContent').join('')\n                : null;\n            },\n            attr: function (name, value) {\n              var result;\n              return typeof name == 'string' && !(1 in arguments)\n                ? 0 in this &&\n                  this[0].nodeType == 1 &&\n                  (result = this[0].getAttribute(name)) != null\n                  ? result\n                  : undefined\n                : this.each(function (idx) {\n                    if (this.nodeType !== 1) return;\n                    if (isObject(name)) for (key in name) setAttribute(this, key, name[key]);\n                    else\n                      setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)));\n                  });\n            },\n            removeAttr: function (name) {\n              return this.each(function () {\n                this.nodeType === 1 &&\n                  name.split(' ').forEach(function (attribute) {\n                    setAttribute(this, attribute);\n                  }, this);\n              });\n            },\n            prop: function (name, value) {\n              name = propMap[name] || name;\n              return 1 in arguments\n                ? this.each(function (idx) {\n                    this[name] = funcArg(this, value, idx, this[name]);\n                  })\n                : this[0] && this[0][name];\n            },\n            removeProp: function (name) {\n              name = propMap[name] || name;\n              return this.each(function () {\n                delete this[name];\n              });\n            },\n            data: function (name, value) {\n              var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase();\n              var data = 1 in arguments ? this.attr(attrName, value) : this.attr(attrName);\n              return data !== null ? deserializeValue(data) : undefined;\n            },\n            val: function (value) {\n              if (0 in arguments) {\n                if (value == null) value = '';\n                return this.each(function (idx) {\n                  this.value = funcArg(this, value, idx, this.value);\n                });\n              } else {\n                return (\n                  this[0] &&\n                  (this[0].multiple\n                    ? $(this[0])\n                        .find('option')\n                        .filter(function () {\n                          return this.selected;\n                        })\n                        .pluck('value')\n                    : this[0].value)\n                );\n              }\n            },\n            offset: function (coordinates) {\n              if (coordinates)\n                return this.each(function (index) {\n                  var $this = $(this),\n                    coords = funcArg(this, coordinates, index, $this.offset()),\n                    parentOffset = $this.offsetParent().offset(),\n                    props = {\n                      top: coords.top - parentOffset.top,\n                      left: coords.left - parentOffset.left,\n                    };\n                  if ($this.css('position') == 'static') props['position'] = 'relative';\n                  $this.css(props);\n                });\n              if (!this.length) return null;\n              if (\n                document.documentElement !== this[0] &&\n                !$.contains(document.documentElement, this[0])\n              )\n                return { top: 0, left: 0 };\n              var obj = this[0].getBoundingClientRect();\n              return {\n                left: obj.left + window.pageXOffset,\n                top: obj.top + window.pageYOffset,\n                width: Math.round(obj.width),\n                height: Math.round(obj.height),\n              };\n            },\n            css: function (property, value) {\n              if (arguments.length < 2) {\n                var element = this[0];\n                if (typeof property == 'string') {\n                  if (!element) return;\n                  return (\n                    element.style[camelize(property)] ||\n                    getComputedStyle(element, '').getPropertyValue(property)\n                  );\n                } else if (isArray(property)) {\n                  if (!element) return;\n                  var props = {};\n                  var computedStyle = getComputedStyle(element, '');\n                  $.each(property, function (_, prop) {\n                    props[prop] =\n                      element.style[camelize(prop)] || computedStyle.getPropertyValue(prop);\n                  });\n                  return props;\n                }\n              }\n              var css = '';\n              if (type(property) == 'string') {\n                if (!value && value !== 0)\n                  this.each(function () {\n                    this.style.removeProperty(dasherize(property));\n                  });\n                else css = dasherize(property) + ':' + maybeAddPx(property, value);\n              } else {\n                for (key in property)\n                  if (!property[key] && property[key] !== 0)\n                    this.each(function () {\n                      this.style.removeProperty(dasherize(key));\n                    });\n                  else css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';';\n              }\n              return this.each(function () {\n                this.style.cssText += ';' + css;\n              });\n            },\n            index: function (element) {\n              return element\n                ? this.indexOf($(element)[0])\n                : this.parent().children().indexOf(this[0]);\n            },\n            hasClass: function (name) {\n              if (!name) return false;\n              return emptyArray.some.call(\n                this,\n                function (el) {\n                  return this.test(className(el));\n                },\n                classRE(name),\n              );\n            },\n            addClass: function (name) {\n              if (!name) return this;\n              return this.each(function (idx) {\n                if (!('className' in this)) return;\n                classList = [];\n                var cls = className(this),\n                  newName = funcArg(this, name, idx, cls);\n                newName.split(/\\s+/g).forEach(function (klass) {\n                  if (!$(this).hasClass(klass)) classList.push(klass);\n                }, this);\n                classList.length && className(this, cls + (cls ? ' ' : '') + classList.join(' '));\n              });\n            },\n            removeClass: function (name) {\n              return this.each(function (idx) {\n                if (!('className' in this)) return;\n                if (name === undefined) return className(this, '');\n                classList = className(this);\n                funcArg(this, name, idx, classList)\n                  .split(/\\s+/g)\n                  .forEach(function (klass) {\n                    classList = classList.replace(classRE(klass), ' ');\n                  });\n                className(this, classList.trim());\n              });\n            },\n            toggleClass: function (name, when) {\n              if (!name) return this;\n              return this.each(function (idx) {\n                var $this = $(this),\n                  names = funcArg(this, name, idx, className(this));\n                names.split(/\\s+/g).forEach(function (klass) {\n                  (when === undefined ? !$this.hasClass(klass) : when)\n                    ? $this.addClass(klass)\n                    : $this.removeClass(klass);\n                });\n              });\n            },\n            scrollTop: function (value) {\n              if (!this.length) return;\n              var hasScrollTop = 'scrollTop' in this[0];\n              if (value === undefined)\n                return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset;\n              return this.each(\n                hasScrollTop\n                  ? function () {\n                      this.scrollTop = value;\n                    }\n                  : function () {\n                      this.scrollTo(this.scrollX, value);\n                    },\n              );\n            },\n            scrollLeft: function (value) {\n              if (!this.length) return;\n              var hasScrollLeft = 'scrollLeft' in this[0];\n              if (value === undefined)\n                return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset;\n              return this.each(\n                hasScrollLeft\n                  ? function () {\n                      this.scrollLeft = value;\n                    }\n                  : function () {\n                      this.scrollTo(value, this.scrollY);\n                    },\n              );\n            },\n            position: function () {\n              if (!this.length) return;\n              var elem = this[0],\n                offsetParent = this.offsetParent(),\n                offset = this.offset(),\n                parentOffset = rootNodeRE.test(offsetParent[0].nodeName)\n                  ? { top: 0, left: 0 }\n                  : offsetParent.offset();\n              offset.top -= parseFloat($(elem).css('margin-top')) || 0;\n              offset.left -= parseFloat($(elem).css('margin-left')) || 0;\n              parentOffset.top += parseFloat($(offsetParent[0]).css('border-top-width')) || 0;\n              parentOffset.left += parseFloat($(offsetParent[0]).css('border-left-width')) || 0;\n              return { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left };\n            },\n            offsetParent: function () {\n              return this.map(function () {\n                var parent = this.offsetParent || document.body;\n                while (\n                  parent &&\n                  !rootNodeRE.test(parent.nodeName) &&\n                  $(parent).css('position') == 'static'\n                )\n                  parent = parent.offsetParent;\n                return parent;\n              });\n            },\n          };\n          $.fn.detach = $.fn.remove;\n          ['width', 'height'].forEach(function (dimension) {\n            var dimensionProperty = dimension.replace(/./, function (m) {\n              return m[0].toUpperCase();\n            });\n            $.fn[dimension] = function (value) {\n              var offset,\n                el = this[0];\n              if (value === undefined)\n                return isWindow(el)\n                  ? el['inner' + dimensionProperty]\n                  : isDocument(el)\n                  ? el.documentElement['scroll' + dimensionProperty]\n                  : (offset = this.offset()) && offset[dimension];\n              else\n                return this.each(function (idx) {\n                  el = $(this);\n                  el.css(dimension, funcArg(this, value, idx, el[dimension]()));\n                });\n            };\n          });\n          function traverseNode(node, fun) {\n            fun(node);\n            for (var i = 0, len = node.childNodes.length; i < len; i++)\n              traverseNode(node.childNodes[i], fun);\n          }\n          adjacencyOperators.forEach(function (operator, operatorIndex) {\n            var inside = operatorIndex % 2;\n            $.fn[operator] = function () {\n              var argType,\n                nodes = $.map(arguments, function (arg) {\n                  var arr = [];\n                  argType = type(arg);\n                  if (argType == 'array') {\n                    arg.forEach(function (el) {\n                      if (el.nodeType !== undefined) return arr.push(el);\n                      else if ($.zepto.isZ(el)) return (arr = arr.concat(el.get()));\n                      arr = arr.concat(zepto.fragment(el));\n                    });\n                    return arr;\n                  }\n                  return argType == 'object' || arg == null ? arg : zepto.fragment(arg);\n                }),\n                parent,\n                copyByClone = this.length > 1;\n              if (nodes.length < 1) return this;\n              return this.each(function (_, target) {\n                parent = inside ? target : target.parentNode;\n                target =\n                  operatorIndex == 0\n                    ? target.nextSibling\n                    : operatorIndex == 1\n                    ? target.firstChild\n                    : operatorIndex == 2\n                    ? target\n                    : null;\n                var parentInDocument = $.contains(document.documentElement, parent);\n                nodes.forEach(function (node) {\n                  if (copyByClone) node = node.cloneNode(true);\n                  else if (!parent) return $(node).remove();\n                  parent.insertBefore(node, target);\n                  if (parentInDocument)\n                    traverseNode(node, function (el) {\n                      if (\n                        el.nodeName != null &&\n                        el.nodeName.toUpperCase() === 'SCRIPT' &&\n                        (!el.type || el.type === 'text/javascript') &&\n                        !el.src\n                      ) {\n                        var target = el.ownerDocument ? el.ownerDocument.defaultView : window;\n                        target['eval'].call(target, el.innerHTML);\n                      }\n                    });\n                });\n              });\n            };\n            $.fn[inside ? operator + 'To' : 'insert' + (operatorIndex ? 'Before' : 'After')] =\n              function (html) {\n                $(html)[operator](this);\n                return this;\n              };\n          });\n          zepto.Z.prototype = Z.prototype = $.fn;\n          zepto.uniq = uniq;\n          zepto.deserializeValue = deserializeValue;\n          $.zepto = zepto;\n          return $;\n        })();\n        (function ($) {\n          var _zid = 1,\n            undefined,\n            slice = Array.prototype.slice,\n            isFunction = $.isFunction,\n            isString = function (obj) {\n              return typeof obj == 'string';\n            },\n            handlers = {},\n            specialEvents = {},\n            focusinSupported = 'onfocusin' in window,\n            focus = { focus: 'focusin', blur: 'focusout' },\n            hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\n          specialEvents.click =\n            specialEvents.mousedown =\n            specialEvents.mouseup =\n            specialEvents.mousemove =\n              'MouseEvents';\n          function zid(element) {\n            return element._zid || (element._zid = _zid++);\n          }\n          function findHandlers(element, event, fn, selector) {\n            event = parse(event);\n            if (event.ns) var matcher = matcherFor(event.ns);\n            return (handlers[zid(element)] || []).filter(function (handler) {\n              return (\n                handler &&\n                (!event.e || handler.e == event.e) &&\n                (!event.ns || matcher.test(handler.ns)) &&\n                (!fn || zid(handler.fn) === zid(fn)) &&\n                (!selector || handler.sel == selector)\n              );\n            });\n          }\n          function parse(event) {\n            var parts = ('' + event).split('.');\n            return { e: parts[0], ns: parts.slice(1).sort().join(' ') };\n          }\n          function matcherFor(ns) {\n            return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n          }\n          function eventCapture(handler, captureSetting) {\n            return (handler.del && !focusinSupported && handler.e in focus) || !!captureSetting;\n          }\n          function realEvent(type) {\n            return hover[type] || (focusinSupported && focus[type]) || type;\n          }\n          function add(element, events, fn, data, selector, delegator, capture) {\n            var id = zid(element),\n              set = handlers[id] || (handlers[id] = []);\n            events.split(/\\s/).forEach(function (event) {\n              if (event == 'ready') return $(document).ready(fn);\n              var handler = parse(event);\n              handler.fn = fn;\n              handler.sel = selector;\n              if (handler.e in hover)\n                fn = function (e) {\n                  var related = e.relatedTarget;\n                  if (!related || (related !== this && !$.contains(this, related)))\n                    return handler.fn.apply(this, arguments);\n                };\n              handler.del = delegator;\n              var callback = delegator || fn;\n              handler.proxy = function (e) {\n                e = compatible(e);\n                if (e.isImmediatePropagationStopped()) return;\n                try {\n                  var dataPropDescriptor = Object.getOwnPropertyDescriptor(e, 'data');\n                  if (!dataPropDescriptor || dataPropDescriptor.writable) e.data = data;\n                } catch (e) {}\n                var result = callback.apply(\n                  element,\n                  e._args == undefined ? [e] : [e].concat(e._args),\n                );\n                if (result === false) e.preventDefault(), e.stopPropagation();\n                return result;\n              };\n              handler.i = set.length;\n              set.push(handler);\n              if ('addEventListener' in element)\n                element.addEventListener(\n                  realEvent(handler.e),\n                  handler.proxy,\n                  eventCapture(handler, capture),\n                );\n            });\n          }\n          function remove(element, events, fn, selector, capture) {\n            var id = zid(element);\n            (events || '').split(/\\s/).forEach(function (event) {\n              findHandlers(element, event, fn, selector).forEach(function (handler) {\n                delete handlers[id][handler.i];\n                if ('removeEventListener' in element)\n                  element.removeEventListener(\n                    realEvent(handler.e),\n                    handler.proxy,\n                    eventCapture(handler, capture),\n                  );\n              });\n            });\n          }\n          $.event = { add: add, remove: remove };\n          $.proxy = function (fn, context) {\n            var args = 2 in arguments && slice.call(arguments, 2);\n            if (isFunction(fn)) {\n              var proxyFn = function () {\n                return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments);\n              };\n              proxyFn._zid = zid(fn);\n              return proxyFn;\n            } else if (isString(context)) {\n              if (args) {\n                args.unshift(fn[context], fn);\n                return $.proxy.apply(null, args);\n              } else {\n                return $.proxy(fn[context], fn);\n              }\n            } else {\n              throw new TypeError('expected function');\n            }\n          };\n          $.fn.bind = function (event, data, callback) {\n            return this.on(event, data, callback);\n          };\n          $.fn.unbind = function (event, callback) {\n            return this.off(event, callback);\n          };\n          $.fn.one = function (event, selector, data, callback) {\n            return this.on(event, selector, data, callback, 1);\n          };\n          var returnTrue = function () {\n              return true;\n            },\n            returnFalse = function () {\n              return false;\n            },\n            ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n            eventMethods = {\n              preventDefault: 'isDefaultPrevented',\n              stopImmediatePropagation: 'isImmediatePropagationStopped',\n              stopPropagation: 'isPropagationStopped',\n            };\n          function compatible(event, source) {\n            if (source || !event.isDefaultPrevented) {\n              source || (source = event);\n              $.each(eventMethods, function (name, predicate) {\n                var sourceMethod = source[name];\n                event[name] = function () {\n                  this[predicate] = returnTrue;\n                  return sourceMethod && sourceMethod.apply(source, arguments);\n                };\n                event[predicate] = returnFalse;\n              });\n              event.timeStamp || (event.timeStamp = Date.now());\n              if (\n                source.defaultPrevented !== undefined\n                  ? source.defaultPrevented\n                  : 'returnValue' in source\n                  ? source.returnValue === false\n                  : source.getPreventDefault && source.getPreventDefault()\n              )\n                event.isDefaultPrevented = returnTrue;\n            }\n            return event;\n          }\n          function createProxy(event) {\n            var key,\n              proxy = { originalEvent: event };\n            for (key in event)\n              if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key];\n            return compatible(proxy, event);\n          }\n          $.fn.delegate = function (selector, event, callback) {\n            return this.on(event, selector, callback);\n          };\n          $.fn.undelegate = function (selector, event, callback) {\n            return this.off(event, selector, callback);\n          };\n          $.fn.live = function (event, callback) {\n            $(document.body).delegate(this.selector, event, callback);\n            return this;\n          };\n          $.fn.die = function (event, callback) {\n            $(document.body).undelegate(this.selector, event, callback);\n            return this;\n          };\n          $.fn.on = function (event, selector, data, callback, one) {\n            var autoRemove,\n              delegator,\n              $this = this;\n            if (event && !isString(event)) {\n              $.each(event, function (type, fn) {\n                $this.on(type, selector, data, fn, one);\n              });\n              return $this;\n            }\n            if (!isString(selector) && !isFunction(callback) && callback !== false)\n              (callback = data), (data = selector), (selector = undefined);\n            if (callback === undefined || data === false) (callback = data), (data = undefined);\n            if (callback === false) callback = returnFalse;\n            return $this.each(function (_, element) {\n              if (one)\n                autoRemove = function (e) {\n                  remove(element, e.type, callback);\n                  return callback.apply(this, arguments);\n                };\n              if (selector)\n                delegator = function (e) {\n                  var evt,\n                    match = $(e.target).closest(selector, element).get(0);\n                  if (match && match !== element) {\n                    evt = $.extend(createProxy(e), { currentTarget: match, liveFired: element });\n                    return (autoRemove || callback).apply(\n                      match,\n                      [evt].concat(slice.call(arguments, 1)),\n                    );\n                  }\n                };\n              add(element, event, callback, data, selector, delegator || autoRemove);\n            });\n          };\n          $.fn.off = function (event, selector, callback) {\n            var $this = this;\n            if (event && !isString(event)) {\n              $.each(event, function (type, fn) {\n                $this.off(type, selector, fn);\n              });\n              return $this;\n            }\n            if (!isString(selector) && !isFunction(callback) && callback !== false)\n              (callback = selector), (selector = undefined);\n            if (callback === false) callback = returnFalse;\n            return $this.each(function () {\n              remove(this, event, callback, selector);\n            });\n          };\n          $.fn.trigger = function (event, args) {\n            event = isString(event) || $.isPlainObject(event) ? $.Event(event) : compatible(event);\n            event._args = args;\n            return this.each(function () {\n              if (event.type in focus && typeof this[event.type] == 'function') this[event.type]();\n              else if ('dispatchEvent' in this) this.dispatchEvent(event);\n              else $(this).triggerHandler(event, args);\n            });\n          };\n          $.fn.triggerHandler = function (event, args) {\n            var e, result;\n            this.each(function (i, element) {\n              e = createProxy(isString(event) ? $.Event(event) : event);\n              e._args = args;\n              e.target = element;\n              $.each(findHandlers(element, event.type || event), function (i, handler) {\n                result = handler.proxy(e);\n                if (e.isImmediatePropagationStopped()) return false;\n              });\n            });\n            return result;\n          };\n          (\n            'focusin focusout focus blur load resize scroll unload click dblclick ' +\n            'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' +\n            'change select keydown keypress keyup error'\n          )\n            .split(' ')\n            .forEach(function (event) {\n              $.fn[event] = function (callback) {\n                return 0 in arguments ? this.bind(event, callback) : this.trigger(event);\n              };\n            });\n          $.Event = function (type, props) {\n            if (!isString(type)) (props = type), (type = props.type);\n            var event = document.createEvent(specialEvents[type] || 'Events'),\n              bubbles = true;\n            if (props)\n              for (var name in props)\n                name == 'bubbles' ? (bubbles = !!props[name]) : (event[name] = props[name]);\n            event.initEvent(type, bubbles, true);\n            return compatible(event);\n          };\n        })(Zepto);\n        (function ($) {\n          var cache = [],\n            timeout;\n          $.fn.remove = function () {\n            return this.each(function () {\n              if (this.parentNode) {\n                if (this.tagName === 'IMG') {\n                  cache.push(this);\n                  this.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n                  if (timeout) clearTimeout(timeout);\n                  timeout = setTimeout(function () {\n                    cache = [];\n                  }, 6e4);\n                }\n                this.parentNode.removeChild(this);\n              }\n            });\n          };\n        })(Zepto);\n        (function ($) {\n          var data = {},\n            dataAttr = $.fn.data,\n            camelize = $.camelCase,\n            exp = ($.expando = 'Zepto' + +new Date()),\n            emptyArray = [];\n          function getData(node, name) {\n            var id = node[exp],\n              store = id && data[id];\n            if (name === undefined) return store || setData(node);\n            else {\n              if (store) {\n                if (name in store) return store[name];\n                var camelName = camelize(name);\n                if (camelName in store) return store[camelName];\n              }\n              return dataAttr.call($(node), name);\n            }\n          }\n          function setData(node, name, value) {\n            var id = node[exp] || (node[exp] = ++$.uuid),\n              store = data[id] || (data[id] = attributeData(node));\n            if (name !== undefined) store[camelize(name)] = value;\n            return store;\n          }\n          function attributeData(node) {\n            var store = {};\n            $.each(node.attributes || emptyArray, function (i, attr) {\n              if (attr.name.indexOf('data-') == 0)\n                store[camelize(attr.name.replace('data-', ''))] = $.zepto.deserializeValue(\n                  attr.value,\n                );\n            });\n            return store;\n          }\n          $.fn.data = function (name, value) {\n            return value === undefined\n              ? $.isPlainObject(name)\n                ? this.each(function (i, node) {\n                    $.each(name, function (key, value) {\n                      setData(node, key, value);\n                    });\n                  })\n                : 0 in this\n                ? getData(this[0], name)\n                : undefined\n              : this.each(function () {\n                  setData(this, name, value);\n                });\n          };\n          $.data = function (elem, name, value) {\n            return $(elem).data(name, value);\n          };\n          $.hasData = function (elem) {\n            var id = elem[exp],\n              store = id && data[id];\n            return store ? !$.isEmptyObject(store) : false;\n          };\n          $.fn.removeData = function (names) {\n            if (typeof names == 'string') names = names.split(/\\s+/);\n            return this.each(function () {\n              var id = this[exp],\n                store = id && data[id];\n              if (store)\n                $.each(names || store, function (key) {\n                  delete store[names ? camelize(this) : key];\n                });\n            });\n          };\n          ['remove', 'empty'].forEach(function (methodName) {\n            var origFn = $.fn[methodName];\n            $.fn[methodName] = function () {\n              var elements = this.find('*');\n              if (methodName === 'remove') elements = elements.add(this);\n              elements.removeData();\n              return origFn.call(this);\n            };\n          });\n        })(Zepto);\n        return Zepto;\n      });\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var namespace = 'autocomplete:';\n      var _ = __webpack_require__(0);\n      var DOM = __webpack_require__(1);\n      function EventBus(o) {\n        if (!o || !o.el) {\n          _.error('EventBus initialized without el');\n        }\n        this.$el = DOM.element(o.el);\n      }\n      _.mixin(EventBus.prototype, {\n        trigger: function (type, suggestion, dataset, context) {\n          var event = _.Event(namespace + type);\n          this.$el.trigger(event, [suggestion, dataset, context]);\n          return event;\n        },\n      });\n      module.exports = EventBus;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = {\n        wrapper: '<span class=\"%ROOT%\"></span>',\n        dropdown: '<span class=\"%PREFIX%%DROPDOWN_MENU%\"></span>',\n        dataset: '<div class=\"%PREFIX%%DATASET%-%CLASS%\"></div>',\n        suggestions: '<span class=\"%PREFIX%%SUGGESTIONS%\"></span>',\n        suggestion: '<div class=\"%PREFIX%%SUGGESTION%\"></div>',\n      };\n    },\n    function (module, exports) {\n      module.exports = '0.36.0';\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = function parseAlgoliaClientVersion(agent) {\n        var parsed = agent.match(/Algolia for vanilla JavaScript (\\d+\\.)(\\d+\\.)(\\d+)/);\n        if (parsed) return [parsed[1], parsed[2], parsed[3]];\n        return undefined;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      var _zepto = __webpack_require__(15);\n      var _zepto2 = _interopRequireDefault(_zepto);\n      function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : { default: obj };\n      }\n      exports.default = _zepto2.default;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      exports.default = '2.6.3';\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _main = __webpack_require__(23);\n      var _main2 = _interopRequireDefault(_main);\n      function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : { default: obj };\n      }\n      module.exports = _main2.default;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      var _toFactory = __webpack_require__(24);\n      var _toFactory2 = _interopRequireDefault(_toFactory);\n      var _DocSearch = __webpack_require__(25);\n      var _DocSearch2 = _interopRequireDefault(_DocSearch);\n      var _version = __webpack_require__(21);\n      var _version2 = _interopRequireDefault(_version);\n      function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : { default: obj };\n      }\n      var docsearch = (0, _toFactory2.default)(_DocSearch2.default);\n      docsearch.version = _version2.default;\n      exports.default = docsearch;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _bind = Function.prototype.bind;\n      function toFactory(Class) {\n        var Factory = function Factory() {\n          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          return new (_bind.apply(Class, [null].concat(args)))();\n        };\n        Factory.__proto__ = Class;\n        Factory.prototype = Class.prototype;\n        return Factory;\n      }\n      module.exports = toFactory;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      var _extends =\n        Object.assign ||\n        function (target) {\n          for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i];\n            for (var key in source) {\n              if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n              }\n            }\n          }\n          return target;\n        };\n      var _createClass = (function () {\n        function defineProperties(target, props) {\n          for (var i = 0; i < props.length; i++) {\n            var descriptor = props[i];\n            descriptor.enumerable = descriptor.enumerable || false;\n            descriptor.configurable = true;\n            if ('value' in descriptor) descriptor.writable = true;\n            Object.defineProperty(target, descriptor.key, descriptor);\n          }\n        }\n        return function (Constructor, protoProps, staticProps) {\n          if (protoProps) defineProperties(Constructor.prototype, protoProps);\n          if (staticProps) defineProperties(Constructor, staticProps);\n          return Constructor;\n        };\n      })();\n      var _hogan = __webpack_require__(26);\n      var _hogan2 = _interopRequireDefault(_hogan);\n      var _lite = __webpack_require__(29);\n      var _lite2 = _interopRequireDefault(_lite);\n      var _autocomplete = __webpack_require__(49);\n      var _autocomplete2 = _interopRequireDefault(_autocomplete);\n      var _templates = __webpack_require__(64);\n      var _templates2 = _interopRequireDefault(_templates);\n      var _utils = __webpack_require__(65);\n      var _utils2 = _interopRequireDefault(_utils);\n      var _version = __webpack_require__(21);\n      var _version2 = _interopRequireDefault(_version);\n      var _zepto = __webpack_require__(20);\n      var _zepto2 = _interopRequireDefault(_zepto);\n      function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : { default: obj };\n      }\n      function _classCallCheck(instance, Constructor) {\n        if (!(instance instanceof Constructor)) {\n          throw new TypeError('Cannot call a class as a function');\n        }\n      }\n      var usage =\n        'Usage:\\n  documentationSearch({\\n  apiKey,\\n  indexName,\\n  inputSelector,\\n  [ appId ],\\n  [ algoliaOptions.{hitsPerPage} ]\\n  [ autocompleteOptions.{hint,debug} ]\\n})';\n      var DocSearch = (function () {\n        function DocSearch(_ref) {\n          var apiKey = _ref.apiKey,\n            indexName = _ref.indexName,\n            inputSelector = _ref.inputSelector,\n            _ref$appId = _ref.appId,\n            appId = _ref$appId === undefined ? 'BH4D9OD16A' : _ref$appId,\n            _ref$debug = _ref.debug,\n            debug = _ref$debug === undefined ? false : _ref$debug,\n            _ref$algoliaOptions = _ref.algoliaOptions,\n            algoliaOptions = _ref$algoliaOptions === undefined ? {} : _ref$algoliaOptions,\n            _ref$queryDataCallbac = _ref.queryDataCallback,\n            queryDataCallback = _ref$queryDataCallbac === undefined ? null : _ref$queryDataCallbac,\n            _ref$autocompleteOpti = _ref.autocompleteOptions,\n            autocompleteOptions =\n              _ref$autocompleteOpti === undefined\n                ? { debug: false, hint: false, autoselect: true }\n                : _ref$autocompleteOpti,\n            _ref$transformData = _ref.transformData,\n            transformData = _ref$transformData === undefined ? false : _ref$transformData,\n            _ref$queryHook = _ref.queryHook,\n            queryHook = _ref$queryHook === undefined ? false : _ref$queryHook,\n            _ref$handleSelected = _ref.handleSelected,\n            handleSelected = _ref$handleSelected === undefined ? false : _ref$handleSelected,\n            _ref$enhancedSearchIn = _ref.enhancedSearchInput,\n            enhancedSearchInput =\n              _ref$enhancedSearchIn === undefined ? false : _ref$enhancedSearchIn,\n            _ref$layout = _ref.layout,\n            layout = _ref$layout === undefined ? 'collumns' : _ref$layout;\n          _classCallCheck(this, DocSearch);\n          DocSearch.checkArguments({\n            apiKey: apiKey,\n            indexName: indexName,\n            inputSelector: inputSelector,\n            debug: debug,\n            algoliaOptions: algoliaOptions,\n            queryDataCallback: queryDataCallback,\n            autocompleteOptions: autocompleteOptions,\n            transformData: transformData,\n            queryHook: queryHook,\n            handleSelected: handleSelected,\n            enhancedSearchInput: enhancedSearchInput,\n            layout: layout,\n          });\n          this.apiKey = apiKey;\n          this.appId = appId;\n          this.indexName = indexName;\n          this.input = DocSearch.getInputFromSelector(inputSelector);\n          this.algoliaOptions = _extends({ hitsPerPage: 5 }, algoliaOptions);\n          this.queryDataCallback = queryDataCallback || null;\n          var autocompleteOptionsDebug =\n            autocompleteOptions && autocompleteOptions.debug ? autocompleteOptions.debug : false;\n          autocompleteOptions.debug = debug || autocompleteOptionsDebug;\n          this.autocompleteOptions = autocompleteOptions;\n          this.autocompleteOptions.cssClasses = this.autocompleteOptions.cssClasses || {};\n          this.autocompleteOptions.cssClasses.prefix =\n            this.autocompleteOptions.cssClasses.prefix || 'ds';\n          var inputAriaLabel =\n            this.input && typeof this.input.attr === 'function' && this.input.attr('aria-label');\n          this.autocompleteOptions.ariaLabel =\n            this.autocompleteOptions.ariaLabel || inputAriaLabel || 'search input';\n          this.isSimpleLayout = layout === 'simple';\n          this.client = (0, _lite2.default)(this.appId, this.apiKey);\n          this.client.addAlgoliaAgent('docsearch.js ' + _version2.default);\n          if (enhancedSearchInput) {\n            this.input = DocSearch.injectSearchBox(this.input);\n          }\n          this.autocomplete = (0, _autocomplete2.default)(this.input, autocompleteOptions, [\n            {\n              source: this.getAutocompleteSource(transformData, queryHook),\n              templates: {\n                suggestion: DocSearch.getSuggestionTemplate(this.isSimpleLayout),\n                footer: _templates2.default.footer,\n                empty: DocSearch.getEmptyTemplate(),\n              },\n            },\n          ]);\n          var customHandleSelected = handleSelected;\n          this.handleSelected = customHandleSelected || this.handleSelected;\n          if (customHandleSelected) {\n            (0, _zepto2.default)('.algolia-autocomplete').on(\n              'click',\n              '.ds-suggestions a',\n              function (event) {\n                event.preventDefault();\n              },\n            );\n          }\n          this.autocomplete.on(\n            'autocomplete:selected',\n            this.handleSelected.bind(null, this.autocomplete.autocomplete),\n          );\n          this.autocomplete.on('autocomplete:shown', this.handleShown.bind(null, this.input));\n          if (enhancedSearchInput) {\n            DocSearch.bindSearchBoxEvent();\n          }\n        }\n        _createClass(\n          DocSearch,\n          [\n            {\n              key: 'getAutocompleteSource',\n              value: function getAutocompleteSource(transformData, queryHook) {\n                var _this = this;\n                return function (query, callback) {\n                  if (queryHook) {\n                    query = queryHook(query) || query;\n                  }\n                  _this.client\n                    .search([\n                      { indexName: _this.indexName, query: query, params: _this.algoliaOptions },\n                    ])\n                    .then(function (data) {\n                      if (_this.queryDataCallback && typeof _this.queryDataCallback == 'function') {\n                        _this.queryDataCallback(data);\n                      }\n                      var hits = data.results[0].hits;\n                      if (transformData) {\n                        hits = transformData(hits) || hits;\n                      }\n                      callback(DocSearch.formatHits(hits));\n                    });\n                };\n              },\n            },\n            {\n              key: 'handleSelected',\n              value: function handleSelected(input, event, suggestion, datasetNumber) {\n                var context =\n                  arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n                if (context.selectionMethod === 'click') {\n                  return;\n                }\n                input.setVal('');\n                window.location.assign(suggestion.url);\n              },\n            },\n            {\n              key: 'handleShown',\n              value: function handleShown(input) {\n                var middleOfInput = input.offset().left + input.width() / 2;\n                var middleOfWindow = (0, _zepto2.default)(document).width() / 2;\n                if (isNaN(middleOfWindow)) {\n                  middleOfWindow = 900;\n                }\n                var alignClass =\n                  middleOfInput - middleOfWindow >= 0\n                    ? 'algolia-autocomplete-right'\n                    : 'algolia-autocomplete-left';\n                var otherAlignClass =\n                  middleOfInput - middleOfWindow < 0\n                    ? 'algolia-autocomplete-right'\n                    : 'algolia-autocomplete-left';\n                var autocompleteWrapper = (0, _zepto2.default)('.algolia-autocomplete');\n                if (!autocompleteWrapper.hasClass(alignClass)) {\n                  autocompleteWrapper.addClass(alignClass);\n                }\n                if (autocompleteWrapper.hasClass(otherAlignClass)) {\n                  autocompleteWrapper.removeClass(otherAlignClass);\n                }\n              },\n            },\n          ],\n          [\n            {\n              key: 'checkArguments',\n              value: function checkArguments(args) {\n                if (!args.apiKey || !args.indexName) {\n                  throw new Error(usage);\n                }\n                if (typeof args.inputSelector !== 'string') {\n                  throw new Error(\n                    'Error: inputSelector:' +\n                      args.inputSelector +\n                      \"  must be a string. Each selector must match only one element and separated by ','\",\n                  );\n                }\n                if (!DocSearch.getInputFromSelector(args.inputSelector)) {\n                  throw new Error(\n                    'Error: No input element in the page matches ' + args.inputSelector,\n                  );\n                }\n              },\n            },\n            {\n              key: 'injectSearchBox',\n              value: function injectSearchBox(input) {\n                input.before(_templates2.default.searchBox);\n                var newInput = input.prev().prev().find('input');\n                input.remove();\n                return newInput;\n              },\n            },\n            {\n              key: 'bindSearchBoxEvent',\n              value: function bindSearchBoxEvent() {\n                (0, _zepto2.default)('.searchbox [type=\"reset\"]').on('click', function () {\n                  (0, _zepto2.default)('input#docsearch').focus();\n                  (0, _zepto2.default)(this).addClass('hide');\n                  _autocomplete2.default.autocomplete.setVal('');\n                });\n                (0, _zepto2.default)('input#docsearch').on('keyup', function () {\n                  var searchbox = document.querySelector('input#docsearch');\n                  var reset = document.querySelector('.searchbox [type=\"reset\"]');\n                  reset.className = 'searchbox__reset';\n                  if (searchbox.value.length === 0) {\n                    reset.className += ' hide';\n                  }\n                });\n              },\n            },\n            {\n              key: 'getInputFromSelector',\n              value: function getInputFromSelector(selector) {\n                var input = (0, _zepto2.default)(selector).filter('input');\n                return input.length ? (0, _zepto2.default)(input[0]) : null;\n              },\n            },\n            {\n              key: 'formatHits',\n              value: function formatHits(receivedHits) {\n                var clonedHits = _utils2.default.deepClone(receivedHits);\n                var hits = clonedHits.map(function (hit) {\n                  if (hit._highlightResult) {\n                    hit._highlightResult = _utils2.default.mergeKeyWithParent(\n                      hit._highlightResult,\n                      'hierarchy',\n                    );\n                  }\n                  return _utils2.default.mergeKeyWithParent(hit, 'hierarchy');\n                });\n                var groupedHits = _utils2.default.groupBy(hits, 'lvl0');\n                _zepto2.default.each(groupedHits, function (level, collection) {\n                  var groupedHitsByLvl1 = _utils2.default.groupBy(collection, 'lvl1');\n                  var flattenedHits = _utils2.default.flattenAndFlagFirst(\n                    groupedHitsByLvl1,\n                    'isSubCategoryHeader',\n                  );\n                  groupedHits[level] = flattenedHits;\n                });\n                groupedHits = _utils2.default.flattenAndFlagFirst(groupedHits, 'isCategoryHeader');\n                return groupedHits.map(function (hit) {\n                  var url = DocSearch.formatURL(hit);\n                  var category = _utils2.default.getHighlightedValue(hit, 'lvl0');\n                  var subcategory = _utils2.default.getHighlightedValue(hit, 'lvl1') || category;\n                  var displayTitle = _utils2.default\n                    .compact([\n                      _utils2.default.getHighlightedValue(hit, 'lvl2') || subcategory,\n                      _utils2.default.getHighlightedValue(hit, 'lvl3'),\n                      _utils2.default.getHighlightedValue(hit, 'lvl4'),\n                      _utils2.default.getHighlightedValue(hit, 'lvl5'),\n                      _utils2.default.getHighlightedValue(hit, 'lvl6'),\n                    ])\n                    .join(\n                      '<span class=\"aa-suggestion-title-separator\" aria-hidden=\"true\"> 鈥� </span>',\n                    );\n                  var text = _utils2.default.getSnippetedValue(hit, 'content');\n                  var isTextOrSubcategoryNonEmpty =\n                    (subcategory && subcategory !== '') || (displayTitle && displayTitle !== '');\n                  var isLvl1EmptyOrDuplicate =\n                    !subcategory || subcategory === '' || subcategory === category;\n                  var isLvl2 = displayTitle && displayTitle !== '' && displayTitle !== subcategory;\n                  var isLvl1 =\n                    !isLvl2 && subcategory && subcategory !== '' && subcategory !== category;\n                  var isLvl0 = !isLvl1 && !isLvl2;\n                  return {\n                    isLvl0: isLvl0,\n                    isLvl1: isLvl1,\n                    isLvl2: isLvl2,\n                    isLvl1EmptyOrDuplicate: isLvl1EmptyOrDuplicate,\n                    isCategoryHeader: hit.isCategoryHeader,\n                    isSubCategoryHeader: hit.isSubCategoryHeader,\n                    isTextOrSubcategoryNonEmpty: isTextOrSubcategoryNonEmpty,\n                    category: category,\n                    subcategory: subcategory,\n                    title: displayTitle,\n                    text: text,\n                    url: url,\n                  };\n                });\n              },\n            },\n            {\n              key: 'formatURL',\n              value: function formatURL(hit) {\n                var url = hit.url,\n                  anchor = hit.anchor;\n                if (url) {\n                  var containsAnchor = url.indexOf('#') !== -1;\n                  if (containsAnchor) return url;\n                  else if (anchor) return hit.url + '#' + hit.anchor;\n                  return url;\n                } else if (anchor) return '#' + hit.anchor;\n                console.warn('no anchor nor url for : ', JSON.stringify(hit));\n                return null;\n              },\n            },\n            {\n              key: 'getEmptyTemplate',\n              value: function getEmptyTemplate() {\n                return function (args) {\n                  return _hogan2.default.compile(_templates2.default.empty).render(args);\n                };\n              },\n            },\n            {\n              key: 'getSuggestionTemplate',\n              value: function getSuggestionTemplate(isSimpleLayout) {\n                var stringTemplate = isSimpleLayout\n                  ? _templates2.default.suggestionSimple\n                  : _templates2.default.suggestion;\n                var template = _hogan2.default.compile(stringTemplate);\n                return function (suggestion) {\n                  return template.render(suggestion);\n                };\n              },\n            },\n          ],\n        );\n        return DocSearch;\n      })();\n      exports.default = DocSearch;\n    },\n    function (module, exports, __webpack_require__) {\n      var Hogan = __webpack_require__(27);\n      Hogan.Template = __webpack_require__(28).Template;\n      Hogan.template = Hogan.Template;\n      module.exports = Hogan;\n    },\n    function (module, exports, __webpack_require__) {\n      (function (Hogan) {\n        var rIsWhitespace = /\\S/,\n          rQuot = /\\\"/g,\n          rNewline = /\\n/g,\n          rCr = /\\r/g,\n          rSlash = /\\\\/g,\n          rLineSep = /\\u2028/,\n          rParagraphSep = /\\u2029/;\n        Hogan.tags = {\n          '#': 1,\n          '^': 2,\n          '<': 3,\n          $: 4,\n          '/': 5,\n          '!': 6,\n          '>': 7,\n          '=': 8,\n          _v: 9,\n          '{': 10,\n          '&': 11,\n          _t: 12,\n        };\n        Hogan.scan = function scan(text, delimiters) {\n          var len = text.length,\n            IN_TEXT = 0,\n            IN_TAG_TYPE = 1,\n            IN_TAG = 2,\n            state = IN_TEXT,\n            tagType = null,\n            tag = null,\n            buf = '',\n            tokens = [],\n            seenTag = false,\n            i = 0,\n            lineStart = 0,\n            otag = '{{',\n            ctag = '}}';\n          function addBuf() {\n            if (buf.length > 0) {\n              tokens.push({ tag: '_t', text: new String(buf) });\n              buf = '';\n            }\n          }\n          function lineIsWhitespace() {\n            var isAllWhitespace = true;\n            for (var j = lineStart; j < tokens.length; j++) {\n              isAllWhitespace =\n                Hogan.tags[tokens[j].tag] < Hogan.tags['_v'] ||\n                (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);\n              if (!isAllWhitespace) {\n                return false;\n              }\n            }\n            return isAllWhitespace;\n          }\n          function filterLine(haveSeenTag, noNewLine) {\n            addBuf();\n            if (haveSeenTag && lineIsWhitespace()) {\n              for (var j = lineStart, next; j < tokens.length; j++) {\n                if (tokens[j].text) {\n                  if ((next = tokens[j + 1]) && next.tag == '>') {\n                    next.indent = tokens[j].text.toString();\n                  }\n                  tokens.splice(j, 1);\n                }\n              }\n            } else if (!noNewLine) {\n              tokens.push({ tag: '\\n' });\n            }\n            seenTag = false;\n            lineStart = tokens.length;\n          }\n          function changeDelimiters(text, index) {\n            var close = '=' + ctag,\n              closeIndex = text.indexOf(close, index),\n              delimiters = trim(text.substring(text.indexOf('=', index) + 1, closeIndex)).split(\n                ' ',\n              );\n            otag = delimiters[0];\n            ctag = delimiters[delimiters.length - 1];\n            return closeIndex + close.length - 1;\n          }\n          if (delimiters) {\n            delimiters = delimiters.split(' ');\n            otag = delimiters[0];\n            ctag = delimiters[1];\n          }\n          for (i = 0; i < len; i++) {\n            if (state == IN_TEXT) {\n              if (tagChange(otag, text, i)) {\n                --i;\n                addBuf();\n                state = IN_TAG_TYPE;\n              } else {\n                if (text.charAt(i) == '\\n') {\n                  filterLine(seenTag);\n                } else {\n                  buf += text.charAt(i);\n                }\n              }\n            } else if (state == IN_TAG_TYPE) {\n              i += otag.length - 1;\n              tag = Hogan.tags[text.charAt(i + 1)];\n              tagType = tag ? text.charAt(i + 1) : '_v';\n              if (tagType == '=') {\n                i = changeDelimiters(text, i);\n                state = IN_TEXT;\n              } else {\n                if (tag) {\n                  i++;\n                }\n                state = IN_TAG;\n              }\n              seenTag = i;\n            } else {\n              if (tagChange(ctag, text, i)) {\n                tokens.push({\n                  tag: tagType,\n                  n: trim(buf),\n                  otag: otag,\n                  ctag: ctag,\n                  i: tagType == '/' ? seenTag - otag.length : i + ctag.length,\n                });\n                buf = '';\n                i += ctag.length - 1;\n                state = IN_TEXT;\n                if (tagType == '{') {\n                  if (ctag == '}}') {\n                    i++;\n                  } else {\n                    cleanTripleStache(tokens[tokens.length - 1]);\n                  }\n                }\n              } else {\n                buf += text.charAt(i);\n              }\n            }\n          }\n          filterLine(seenTag, true);\n          return tokens;\n        };\n        function cleanTripleStache(token) {\n          if (token.n.substr(token.n.length - 1) === '}') {\n            token.n = token.n.substring(0, token.n.length - 1);\n          }\n        }\n        function trim(s) {\n          if (s.trim) {\n            return s.trim();\n          }\n          return s.replace(/^\\s*|\\s*$/g, '');\n        }\n        function tagChange(tag, text, index) {\n          if (text.charAt(index) != tag.charAt(0)) {\n            return false;\n          }\n          for (var i = 1, l = tag.length; i < l; i++) {\n            if (text.charAt(index + i) != tag.charAt(i)) {\n              return false;\n            }\n          }\n          return true;\n        }\n        var allowedInSuper = { _t: true, '\\n': true, $: true, '/': true };\n        function buildTree(tokens, kind, stack, customTags) {\n          var instructions = [],\n            opener = null,\n            tail = null,\n            token = null;\n          tail = stack[stack.length - 1];\n          while (tokens.length > 0) {\n            token = tokens.shift();\n            if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {\n              throw new Error('Illegal content in < super tag.');\n            }\n            if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {\n              stack.push(token);\n              token.nodes = buildTree(tokens, token.tag, stack, customTags);\n            } else if (token.tag == '/') {\n              if (stack.length === 0) {\n                throw new Error('Closing tag without opener: /' + token.n);\n              }\n              opener = stack.pop();\n              if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {\n                throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);\n              }\n              opener.end = token.i;\n              return instructions;\n            } else if (token.tag == '\\n') {\n              token.last = tokens.length == 0 || tokens[0].tag == '\\n';\n            }\n            instructions.push(token);\n          }\n          if (stack.length > 0) {\n            throw new Error('missing closing tag: ' + stack.pop().n);\n          }\n          return instructions;\n        }\n        function isOpener(token, tags) {\n          for (var i = 0, l = tags.length; i < l; i++) {\n            if (tags[i].o == token.n) {\n              token.tag = '#';\n              return true;\n            }\n          }\n        }\n        function isCloser(close, open, tags) {\n          for (var i = 0, l = tags.length; i < l; i++) {\n            if (tags[i].c == close && tags[i].o == open) {\n              return true;\n            }\n          }\n        }\n        function stringifySubstitutions(obj) {\n          var items = [];\n          for (var key in obj) {\n            items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + '}');\n          }\n          return '{ ' + items.join(',') + ' }';\n        }\n        function stringifyPartials(codeObj) {\n          var partials = [];\n          for (var key in codeObj.partials) {\n            partials.push(\n              '\"' +\n                esc(key) +\n                '\":{name:\"' +\n                esc(codeObj.partials[key].name) +\n                '\", ' +\n                stringifyPartials(codeObj.partials[key]) +\n                '}',\n            );\n          }\n          return (\n            'partials: {' + partials.join(',') + '}, subs: ' + stringifySubstitutions(codeObj.subs)\n          );\n        }\n        Hogan.stringify = function (codeObj, text, options) {\n          return (\n            '{code: function (c,p,i) { ' +\n            Hogan.wrapMain(codeObj.code) +\n            ' },' +\n            stringifyPartials(codeObj) +\n            '}'\n          );\n        };\n        var serialNo = 0;\n        Hogan.generate = function (tree, text, options) {\n          serialNo = 0;\n          var context = { code: '', subs: {}, partials: {} };\n          Hogan.walk(tree, context);\n          if (options.asString) {\n            return this.stringify(context, text, options);\n          }\n          return this.makeTemplate(context, text, options);\n        };\n        Hogan.wrapMain = function (code) {\n          return 'var t=this;t.b(i=i||\"\");' + code + 'return t.fl();';\n        };\n        Hogan.template = Hogan.Template;\n        Hogan.makeTemplate = function (codeObj, text, options) {\n          var template = this.makePartials(codeObj);\n          template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));\n          return new this.template(template, text, this, options);\n        };\n        Hogan.makePartials = function (codeObj) {\n          var key,\n            template = { subs: {}, partials: codeObj.partials, name: codeObj.name };\n          for (key in template.partials) {\n            template.partials[key] = this.makePartials(template.partials[key]);\n          }\n          for (key in codeObj.subs) {\n            template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);\n          }\n          return template;\n        };\n        function esc(s) {\n          return s\n            .replace(rSlash, '\\\\\\\\')\n            .replace(rQuot, '\\\\\"')\n            .replace(rNewline, '\\\\n')\n            .replace(rCr, '\\\\r')\n            .replace(rLineSep, '\\\\u2028')\n            .replace(rParagraphSep, '\\\\u2029');\n        }\n        function chooseMethod(s) {\n          return ~s.indexOf('.') ? 'd' : 'f';\n        }\n        function createPartial(node, context) {\n          var prefix = '<' + (context.prefix || '');\n          var sym = prefix + node.n + serialNo++;\n          context.partials[sym] = { name: node.n, partials: {} };\n          context.code += 't.b(t.rp(\"' + esc(sym) + '\",c,p,\"' + (node.indent || '') + '\"));';\n          return sym;\n        }\n        Hogan.codegen = {\n          '#': function (node, context) {\n            context.code +=\n              'if(t.s(t.' +\n              chooseMethod(node.n) +\n              '(\"' +\n              esc(node.n) +\n              '\",c,p,1),' +\n              'c,p,0,' +\n              node.i +\n              ',' +\n              node.end +\n              ',\"' +\n              node.otag +\n              ' ' +\n              node.ctag +\n              '\")){' +\n              't.rs(c,p,' +\n              'function(c,p,t){';\n            Hogan.walk(node.nodes, context);\n            context.code += '});c.pop();}';\n          },\n          '^': function (node, context) {\n            context.code +=\n              'if(!t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n            Hogan.walk(node.nodes, context);\n            context.code += '};';\n          },\n          '>': createPartial,\n          '<': function (node, context) {\n            var ctx = { partials: {}, code: '', subs: {}, inPartial: true };\n            Hogan.walk(node.nodes, ctx);\n            var template = context.partials[createPartial(node, context)];\n            template.subs = ctx.subs;\n            template.partials = ctx.partials;\n          },\n          $: function (node, context) {\n            var ctx = { subs: {}, code: '', partials: context.partials, prefix: node.n };\n            Hogan.walk(node.nodes, ctx);\n            context.subs[node.n] = ctx.code;\n            if (!context.inPartial) {\n              context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n            }\n          },\n          '\\n': function (node, context) {\n            context.code += write('\"\\\\n\"' + (node.last ? '' : ' + i'));\n          },\n          _v: function (node, context) {\n            context.code +=\n              't.b(t.v(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n          },\n          _t: function (node, context) {\n            context.code += write('\"' + esc(node.text) + '\"');\n          },\n          '{': tripleStache,\n          '&': tripleStache,\n        };\n        function tripleStache(node, context) {\n          context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n        }\n        function write(s) {\n          return 't.b(' + s + ');';\n        }\n        Hogan.walk = function (nodelist, context) {\n          var func;\n          for (var i = 0, l = nodelist.length; i < l; i++) {\n            func = Hogan.codegen[nodelist[i].tag];\n            func && func(nodelist[i], context);\n          }\n          return context;\n        };\n        Hogan.parse = function (tokens, text, options) {\n          options = options || {};\n          return buildTree(tokens, '', [], options.sectionTags || []);\n        };\n        Hogan.cache = {};\n        Hogan.cacheKey = function (text, options) {\n          return [\n            text,\n            !!options.asString,\n            !!options.disableLambda,\n            options.delimiters,\n            !!options.modelGet,\n          ].join('||');\n        };\n        Hogan.compile = function (text, options) {\n          options = options || {};\n          var key = Hogan.cacheKey(text, options);\n          var template = this.cache[key];\n          if (template) {\n            var partials = template.partials;\n            for (var name in partials) {\n              delete partials[name].instance;\n            }\n            return template;\n          }\n          template = this.generate(\n            this.parse(this.scan(text, options.delimiters), text, options),\n            text,\n            options,\n          );\n          return (this.cache[key] = template);\n        };\n      })(true ? exports : Hogan);\n    },\n    function (module, exports, __webpack_require__) {\n      var Hogan = {};\n      (function (Hogan) {\n        Hogan.Template = function (codeObj, text, compiler, options) {\n          codeObj = codeObj || {};\n          this.r = codeObj.code || this.r;\n          this.c = compiler;\n          this.options = options || {};\n          this.text = text || '';\n          this.partials = codeObj.partials || {};\n          this.subs = codeObj.subs || {};\n          this.buf = '';\n        };\n        Hogan.Template.prototype = {\n          r: function (context, partials, indent) {\n            return '';\n          },\n          v: hoganEscape,\n          t: coerceToString,\n          render: function render(context, partials, indent) {\n            return this.ri([context], partials || {}, indent);\n          },\n          ri: function (context, partials, indent) {\n            return this.r(context, partials, indent);\n          },\n          ep: function (symbol, partials) {\n            var partial = this.partials[symbol];\n            var template = partials[partial.name];\n            if (partial.instance && partial.base == template) {\n              return partial.instance;\n            }\n            if (typeof template == 'string') {\n              if (!this.c) {\n                throw new Error('No compiler available.');\n              }\n              template = this.c.compile(template, this.options);\n            }\n            if (!template) {\n              return null;\n            }\n            this.partials[symbol].base = template;\n            if (partial.subs) {\n              if (!partials.stackText) partials.stackText = {};\n              for (key in partial.subs) {\n                if (!partials.stackText[key]) {\n                  partials.stackText[key] =\n                    this.activeSub !== undefined && partials.stackText[this.activeSub]\n                      ? partials.stackText[this.activeSub]\n                      : this.text;\n                }\n              }\n              template = createSpecializedPartial(\n                template,\n                partial.subs,\n                partial.partials,\n                this.stackSubs,\n                this.stackPartials,\n                partials.stackText,\n              );\n            }\n            this.partials[symbol].instance = template;\n            return template;\n          },\n          rp: function (symbol, context, partials, indent) {\n            var partial = this.ep(symbol, partials);\n            if (!partial) {\n              return '';\n            }\n            return partial.ri(context, partials, indent);\n          },\n          rs: function (context, partials, section) {\n            var tail = context[context.length - 1];\n            if (!isArray(tail)) {\n              section(context, partials, this);\n              return;\n            }\n            for (var i = 0; i < tail.length; i++) {\n              context.push(tail[i]);\n              section(context, partials, this);\n              context.pop();\n            }\n          },\n          s: function (val, ctx, partials, inverted, start, end, tags) {\n            var pass;\n            if (isArray(val) && val.length === 0) {\n              return false;\n            }\n            if (typeof val == 'function') {\n              val = this.ms(val, ctx, partials, inverted, start, end, tags);\n            }\n            pass = !!val;\n            if (!inverted && pass && ctx) {\n              ctx.push(typeof val == 'object' ? val : ctx[ctx.length - 1]);\n            }\n            return pass;\n          },\n          d: function (key, ctx, partials, returnFound) {\n            var found,\n              names = key.split('.'),\n              val = this.f(names[0], ctx, partials, returnFound),\n              doModelGet = this.options.modelGet,\n              cx = null;\n            if (key === '.' && isArray(ctx[ctx.length - 2])) {\n              val = ctx[ctx.length - 1];\n            } else {\n              for (var i = 1; i < names.length; i++) {\n                found = findInScope(names[i], val, doModelGet);\n                if (found !== undefined) {\n                  cx = val;\n                  val = found;\n                } else {\n                  val = '';\n                }\n              }\n            }\n            if (returnFound && !val) {\n              return false;\n            }\n            if (!returnFound && typeof val == 'function') {\n              ctx.push(cx);\n              val = this.mv(val, ctx, partials);\n              ctx.pop();\n            }\n            return val;\n          },\n          f: function (key, ctx, partials, returnFound) {\n            var val = false,\n              v = null,\n              found = false,\n              doModelGet = this.options.modelGet;\n            for (var i = ctx.length - 1; i >= 0; i--) {\n              v = ctx[i];\n              val = findInScope(key, v, doModelGet);\n              if (val !== undefined) {\n                found = true;\n                break;\n              }\n            }\n            if (!found) {\n              return returnFound ? false : '';\n            }\n            if (!returnFound && typeof val == 'function') {\n              val = this.mv(val, ctx, partials);\n            }\n            return val;\n          },\n          ls: function (func, cx, partials, text, tags) {\n            var oldTags = this.options.delimiters;\n            this.options.delimiters = tags;\n            this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));\n            this.options.delimiters = oldTags;\n            return false;\n          },\n          ct: function (text, cx, partials) {\n            if (this.options.disableLambda) {\n              throw new Error('Lambda features disabled.');\n            }\n            return this.c.compile(text, this.options).render(cx, partials);\n          },\n          b: function (s) {\n            this.buf += s;\n          },\n          fl: function () {\n            var r = this.buf;\n            this.buf = '';\n            return r;\n          },\n          ms: function (func, ctx, partials, inverted, start, end, tags) {\n            var textSource,\n              cx = ctx[ctx.length - 1],\n              result = func.call(cx);\n            if (typeof result == 'function') {\n              if (inverted) {\n                return true;\n              } else {\n                textSource =\n                  this.activeSub && this.subsText && this.subsText[this.activeSub]\n                    ? this.subsText[this.activeSub]\n                    : this.text;\n                return this.ls(result, cx, partials, textSource.substring(start, end), tags);\n              }\n            }\n            return result;\n          },\n          mv: function (func, ctx, partials) {\n            var cx = ctx[ctx.length - 1];\n            var result = func.call(cx);\n            if (typeof result == 'function') {\n              return this.ct(coerceToString(result.call(cx)), cx, partials);\n            }\n            return result;\n          },\n          sub: function (name, context, partials, indent) {\n            var f = this.subs[name];\n            if (f) {\n              this.activeSub = name;\n              f(context, partials, this, indent);\n              this.activeSub = false;\n            }\n          },\n        };\n        function findInScope(key, scope, doModelGet) {\n          var val;\n          if (scope && typeof scope == 'object') {\n            if (scope[key] !== undefined) {\n              val = scope[key];\n            } else if (doModelGet && scope.get && typeof scope.get == 'function') {\n              val = scope.get(key);\n            }\n          }\n          return val;\n        }\n        function createSpecializedPartial(\n          instance,\n          subs,\n          partials,\n          stackSubs,\n          stackPartials,\n          stackText,\n        ) {\n          function PartialTemplate() {}\n          PartialTemplate.prototype = instance;\n          function Substitutions() {}\n          Substitutions.prototype = instance.subs;\n          var key;\n          var partial = new PartialTemplate();\n          partial.subs = new Substitutions();\n          partial.subsText = {};\n          partial.buf = '';\n          stackSubs = stackSubs || {};\n          partial.stackSubs = stackSubs;\n          partial.subsText = stackText;\n          for (key in subs) {\n            if (!stackSubs[key]) stackSubs[key] = subs[key];\n          }\n          for (key in stackSubs) {\n            partial.subs[key] = stackSubs[key];\n          }\n          stackPartials = stackPartials || {};\n          partial.stackPartials = stackPartials;\n          for (key in partials) {\n            if (!stackPartials[key]) stackPartials[key] = partials[key];\n          }\n          for (key in stackPartials) {\n            partial.partials[key] = stackPartials[key];\n          }\n          return partial;\n        }\n        var rAmp = /&/g,\n          rLt = /</g,\n          rGt = />/g,\n          rApos = /\\'/g,\n          rQuot = /\\\"/g,\n          hChars = /[&<>\\\"\\']/;\n        function coerceToString(val) {\n          return String(val === null || val === undefined ? '' : val);\n        }\n        function hoganEscape(str) {\n          str = coerceToString(str);\n          return hChars.test(str)\n            ? str\n                .replace(rAmp, '&amp;')\n                .replace(rLt, '&lt;')\n                .replace(rGt, '&gt;')\n                .replace(rApos, '&#39;')\n                .replace(rQuot, '&quot;')\n            : str;\n        }\n        var isArray =\n          Array.isArray ||\n          function (a) {\n            return Object.prototype.toString.call(a) === '[object Array]';\n          };\n      })(true ? exports : Hogan);\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var AlgoliaSearchCore = __webpack_require__(30);\n      var createAlgoliasearch = __webpack_require__(41);\n      module.exports = createAlgoliasearch(AlgoliaSearchCore, '(lite) ');\n    },\n    function (module, exports, __webpack_require__) {\n      module.exports = AlgoliaSearchCore;\n      var errors = __webpack_require__(5);\n      var exitPromise = __webpack_require__(31);\n      var IndexCore = __webpack_require__(32);\n      var store = __webpack_require__(38);\n      var MAX_API_KEY_LENGTH = 500;\n      var RESET_APP_DATA_TIMER =\n        (Object({ NODE_ENV: 'production' }).RESET_APP_DATA_TIMER &&\n          parseInt(Object({ NODE_ENV: 'production' }).RESET_APP_DATA_TIMER, 10)) ||\n        60 * 2 * 1e3;\n      function AlgoliaSearchCore(applicationID, apiKey, opts) {\n        var debug = __webpack_require__(8)('algoliasearch');\n        var clone = __webpack_require__(3);\n        var isArray = __webpack_require__(6);\n        var map = __webpack_require__(7);\n        var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)';\n        if (opts._allowEmptyCredentials !== true && !applicationID) {\n          throw new errors.AlgoliaSearchError('Please provide an application ID. ' + usage);\n        }\n        if (opts._allowEmptyCredentials !== true && !apiKey) {\n          throw new errors.AlgoliaSearchError('Please provide an API key. ' + usage);\n        }\n        this.applicationID = applicationID;\n        this.apiKey = apiKey;\n        this.hosts = { read: [], write: [] };\n        opts = opts || {};\n        this._timeouts = opts.timeouts || { connect: 1 * 1e3, read: 2 * 1e3, write: 30 * 1e3 };\n        if (opts.timeout) {\n          this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout;\n        }\n        var protocol = opts.protocol || 'https:';\n        if (!/:$/.test(protocol)) {\n          protocol = protocol + ':';\n        }\n        if (protocol !== 'http:' && protocol !== 'https:') {\n          throw new errors.AlgoliaSearchError(\n            'protocol must be `http:` or `https:` (was `' + opts.protocol + '`)',\n          );\n        }\n        this._checkAppIdData();\n        if (!opts.hosts) {\n          var defaultHosts = map(this._shuffleResult, function (hostNumber) {\n            return applicationID + '-' + hostNumber + '.algolianet.com';\n          });\n          var mainSuffix = (opts.dsn === false ? '' : '-dsn') + '.algolia.net';\n          this.hosts.read = [this.applicationID + mainSuffix].concat(defaultHosts);\n          this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts);\n        } else if (isArray(opts.hosts)) {\n          this.hosts.read = clone(opts.hosts);\n          this.hosts.write = clone(opts.hosts);\n        } else {\n          this.hosts.read = clone(opts.hosts.read);\n          this.hosts.write = clone(opts.hosts.write);\n        }\n        this.hosts.read = map(this.hosts.read, prepareHost(protocol));\n        this.hosts.write = map(this.hosts.write, prepareHost(protocol));\n        this.extraHeaders = {};\n        this.cache = opts._cache || {};\n        this._ua = opts._ua;\n        this._useCache = opts._useCache === undefined || opts._cache ? true : opts._useCache;\n        this._useRequestCache = this._useCache && opts._useRequestCache;\n        this._useFallback = opts.useFallback === undefined ? true : opts.useFallback;\n        this._setTimeout = opts._setTimeout;\n        debug('init done, %j', this);\n      }\n      AlgoliaSearchCore.prototype.initIndex = function (indexName) {\n        return new IndexCore(this, indexName);\n      };\n      AlgoliaSearchCore.prototype.setExtraHeader = function (name, value) {\n        this.extraHeaders[name.toLowerCase()] = value;\n      };\n      AlgoliaSearchCore.prototype.getExtraHeader = function (name) {\n        return this.extraHeaders[name.toLowerCase()];\n      };\n      AlgoliaSearchCore.prototype.unsetExtraHeader = function (name) {\n        delete this.extraHeaders[name.toLowerCase()];\n      };\n      AlgoliaSearchCore.prototype.addAlgoliaAgent = function (algoliaAgent) {\n        if (this._ua.indexOf(';' + algoliaAgent) === -1) {\n          this._ua += ';' + algoliaAgent;\n        }\n      };\n      AlgoliaSearchCore.prototype._jsonRequest = function (initialOpts) {\n        this._checkAppIdData();\n        var requestDebug = __webpack_require__(8)('algoliasearch:' + initialOpts.url);\n        var body;\n        var cacheID;\n        var additionalUA = initialOpts.additionalUA || '';\n        var cache = initialOpts.cache;\n        var client = this;\n        var tries = 0;\n        var usingFallback = false;\n        var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback;\n        var headers;\n        if (\n          this.apiKey.length > MAX_API_KEY_LENGTH &&\n          initialOpts.body !== undefined &&\n          (initialOpts.body.params !== undefined || initialOpts.body.requests !== undefined)\n        ) {\n          initialOpts.body.apiKey = this.apiKey;\n          headers = this._computeRequestHeaders({\n            additionalUA: additionalUA,\n            withApiKey: false,\n            headers: initialOpts.headers,\n          });\n        } else {\n          headers = this._computeRequestHeaders({\n            additionalUA: additionalUA,\n            headers: initialOpts.headers,\n          });\n        }\n        if (initialOpts.body !== undefined) {\n          body = safeJSONStringify(initialOpts.body);\n        }\n        requestDebug('request start');\n        var debugData = [];\n        function doRequest(requester, reqOpts) {\n          client._checkAppIdData();\n          var startTime = new Date();\n          if (client._useCache && !client._useRequestCache) {\n            cacheID = initialOpts.url;\n          }\n          if (client._useCache && !client._useRequestCache && body) {\n            cacheID += '_body_' + reqOpts.body;\n          }\n          if (isCacheValidWithCurrentID(!client._useRequestCache, cache, cacheID)) {\n            requestDebug('serving response from cache');\n            var responseText = cache[cacheID];\n            return client._promise.resolve({\n              body: JSON.parse(responseText),\n              responseText: responseText,\n            });\n          }\n          if (tries >= client.hosts[initialOpts.hostType].length) {\n            if (!hasFallback || usingFallback) {\n              requestDebug('could not get any response');\n              return client._promise.reject(\n                new errors.AlgoliaSearchError(\n                  'Cannot connect to the AlgoliaSearch API.' +\n                    ' Send an email to support@algolia.com to report and resolve the issue.' +\n                    ' Application id was: ' +\n                    client.applicationID,\n                  { debugData: debugData },\n                ),\n              );\n            }\n            requestDebug('switching to fallback');\n            tries = 0;\n            reqOpts.method = initialOpts.fallback.method;\n            reqOpts.url = initialOpts.fallback.url;\n            reqOpts.jsonBody = initialOpts.fallback.body;\n            if (reqOpts.jsonBody) {\n              reqOpts.body = safeJSONStringify(reqOpts.jsonBody);\n            }\n            headers = client._computeRequestHeaders({\n              additionalUA: additionalUA,\n              headers: initialOpts.headers,\n            });\n            reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);\n            client._setHostIndexByType(0, initialOpts.hostType);\n            usingFallback = true;\n            return doRequest(client._request.fallback, reqOpts);\n          }\n          var currentHost = client._getHostByType(initialOpts.hostType);\n          var url = currentHost + reqOpts.url;\n          var options = {\n            body: reqOpts.body,\n            jsonBody: reqOpts.jsonBody,\n            method: reqOpts.method,\n            headers: headers,\n            timeouts: reqOpts.timeouts,\n            debug: requestDebug,\n            forceAuthHeaders: reqOpts.forceAuthHeaders,\n          };\n          requestDebug(\n            'method: %s, url: %s, headers: %j, timeouts: %d',\n            options.method,\n            url,\n            options.headers,\n            options.timeouts,\n          );\n          if (requester === client._request.fallback) {\n            requestDebug('using fallback');\n          }\n          return requester.call(client, url, options).then(success, tryFallback);\n          function success(httpResponse) {\n            var status =\n              (httpResponse &&\n                httpResponse.body &&\n                httpResponse.body.message &&\n                httpResponse.body.status) ||\n              httpResponse.statusCode ||\n              (httpResponse && httpResponse.body && 200);\n            requestDebug(\n              'received response: statusCode: %s, computed statusCode: %d, headers: %j',\n              httpResponse.statusCode,\n              status,\n              httpResponse.headers,\n            );\n            var httpResponseOk = Math.floor(status / 100) === 2;\n            var endTime = new Date();\n            debugData.push({\n              currentHost: currentHost,\n              headers: removeCredentials(headers),\n              content: body || null,\n              contentLength: body !== undefined ? body.length : null,\n              method: reqOpts.method,\n              timeouts: reqOpts.timeouts,\n              url: reqOpts.url,\n              startTime: startTime,\n              endTime: endTime,\n              duration: endTime - startTime,\n              statusCode: status,\n            });\n            if (httpResponseOk) {\n              if (client._useCache && !client._useRequestCache && cache) {\n                cache[cacheID] = httpResponse.responseText;\n              }\n              return { responseText: httpResponse.responseText, body: httpResponse.body };\n            }\n            var shouldRetry = Math.floor(status / 100) !== 4;\n            if (shouldRetry) {\n              tries += 1;\n              return retryRequest();\n            }\n            requestDebug('unrecoverable error');\n            var unrecoverableError = new errors.AlgoliaSearchError(\n              httpResponse.body && httpResponse.body.message,\n              { debugData: debugData, statusCode: status },\n            );\n            return client._promise.reject(unrecoverableError);\n          }\n          function tryFallback(err) {\n            requestDebug('error: %s, stack: %s', err.message, err.stack);\n            var endTime = new Date();\n            debugData.push({\n              currentHost: currentHost,\n              headers: removeCredentials(headers),\n              content: body || null,\n              contentLength: body !== undefined ? body.length : null,\n              method: reqOpts.method,\n              timeouts: reqOpts.timeouts,\n              url: reqOpts.url,\n              startTime: startTime,\n              endTime: endTime,\n              duration: endTime - startTime,\n            });\n            if (!(err instanceof errors.AlgoliaSearchError)) {\n              err = new errors.Unknown(err && err.message, err);\n            }\n            tries += 1;\n            if (\n              err instanceof errors.Unknown ||\n              err instanceof errors.UnparsableJSON ||\n              (tries >= client.hosts[initialOpts.hostType].length &&\n                (usingFallback || !hasFallback))\n            ) {\n              err.debugData = debugData;\n              return client._promise.reject(err);\n            }\n            if (err instanceof errors.RequestTimeout) {\n              return retryRequestWithHigherTimeout();\n            }\n            return retryRequest();\n          }\n          function retryRequest() {\n            requestDebug('retrying request');\n            client._incrementHostIndex(initialOpts.hostType);\n            return doRequest(requester, reqOpts);\n          }\n          function retryRequestWithHigherTimeout() {\n            requestDebug('retrying request with higher timeout');\n            client._incrementHostIndex(initialOpts.hostType);\n            client._incrementTimeoutMultipler();\n            reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);\n            return doRequest(requester, reqOpts);\n          }\n        }\n        function isCacheValidWithCurrentID(useRequestCache, currentCache, currentCacheID) {\n          return (\n            client._useCache &&\n            useRequestCache &&\n            currentCache &&\n            currentCache[currentCacheID] !== undefined\n          );\n        }\n        function interopCallbackReturn(request, callback) {\n          if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {\n            request.catch(function () {\n              delete cache[cacheID];\n            });\n          }\n          if (typeof initialOpts.callback === 'function') {\n            request.then(\n              function okCb(content) {\n                exitPromise(function () {\n                  initialOpts.callback(null, callback(content));\n                }, client._setTimeout || setTimeout);\n              },\n              function nookCb(err) {\n                exitPromise(function () {\n                  initialOpts.callback(err);\n                }, client._setTimeout || setTimeout);\n              },\n            );\n          } else {\n            return request.then(callback);\n          }\n        }\n        if (client._useCache && client._useRequestCache) {\n          cacheID = initialOpts.url;\n        }\n        if (client._useCache && client._useRequestCache && body) {\n          cacheID += '_body_' + body;\n        }\n        if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {\n          requestDebug('serving request from cache');\n          var maybePromiseForCache = cache[cacheID];\n          var promiseForCache =\n            typeof maybePromiseForCache.then !== 'function'\n              ? client._promise.resolve({ responseText: maybePromiseForCache })\n              : maybePromiseForCache;\n          return interopCallbackReturn(promiseForCache, function (content) {\n            return JSON.parse(content.responseText);\n          });\n        }\n        var request = doRequest(client._request, {\n          url: initialOpts.url,\n          method: initialOpts.method,\n          body: body,\n          jsonBody: initialOpts.body,\n          timeouts: client._getTimeoutsForRequest(initialOpts.hostType),\n          forceAuthHeaders: initialOpts.forceAuthHeaders,\n        });\n        if (client._useCache && client._useRequestCache && cache) {\n          cache[cacheID] = request;\n        }\n        return interopCallbackReturn(request, function (content) {\n          return content.body;\n        });\n      };\n      AlgoliaSearchCore.prototype._getSearchParams = function (args, params) {\n        if (args === undefined || args === null) {\n          return params;\n        }\n        for (var key in args) {\n          if (key !== null && args[key] !== undefined && args.hasOwnProperty(key)) {\n            params += params === '' ? '' : '&';\n            params +=\n              key +\n              '=' +\n              encodeURIComponent(\n                Object.prototype.toString.call(args[key]) === '[object Array]'\n                  ? safeJSONStringify(args[key])\n                  : args[key],\n              );\n          }\n        }\n        return params;\n      };\n      AlgoliaSearchCore.prototype._computeRequestHeaders = function (options) {\n        var forEach = __webpack_require__(2);\n        var ua = options.additionalUA ? this._ua + ';' + options.additionalUA : this._ua;\n        var requestHeaders = {\n          'x-algolia-agent': ua,\n          'x-algolia-application-id': this.applicationID,\n        };\n        if (options.withApiKey !== false) {\n          requestHeaders['x-algolia-api-key'] = this.apiKey;\n        }\n        if (this.userToken) {\n          requestHeaders['x-algolia-usertoken'] = this.userToken;\n        }\n        if (this.securityTags) {\n          requestHeaders['x-algolia-tagfilters'] = this.securityTags;\n        }\n        forEach(this.extraHeaders, function addToRequestHeaders(value, key) {\n          requestHeaders[key] = value;\n        });\n        if (options.headers) {\n          forEach(options.headers, function addToRequestHeaders(value, key) {\n            requestHeaders[key] = value;\n          });\n        }\n        return requestHeaders;\n      };\n      AlgoliaSearchCore.prototype.search = function (queries, opts, callback) {\n        var isArray = __webpack_require__(6);\n        var map = __webpack_require__(7);\n        var usage = 'Usage: client.search(arrayOfQueries[, callback])';\n        if (!isArray(queries)) {\n          throw new Error(usage);\n        }\n        if (typeof opts === 'function') {\n          callback = opts;\n          opts = {};\n        } else if (opts === undefined) {\n          opts = {};\n        }\n        var client = this;\n        var postObj = {\n          requests: map(queries, function prepareRequest(query) {\n            var params = '';\n            if (query.query !== undefined) {\n              params += 'query=' + encodeURIComponent(query.query);\n            }\n            return {\n              indexName: query.indexName,\n              params: client._getSearchParams(query.params, params),\n            };\n          }),\n        };\n        var JSONPParams = map(postObj.requests, function prepareJSONPParams(request, requestId) {\n          return (\n            requestId +\n            '=' +\n            encodeURIComponent(\n              '/1/indexes/' + encodeURIComponent(request.indexName) + '?' + request.params,\n            )\n          );\n        }).join('&');\n        var url = '/1/indexes/*/queries';\n        if (opts.strategy !== undefined) {\n          postObj.strategy = opts.strategy;\n        }\n        return this._jsonRequest({\n          cache: this.cache,\n          method: 'POST',\n          url: url,\n          body: postObj,\n          hostType: 'read',\n          fallback: { method: 'GET', url: '/1/indexes/*', body: { params: JSONPParams } },\n          callback: callback,\n        });\n      };\n      AlgoliaSearchCore.prototype.searchForFacetValues = function (queries) {\n        var isArray = __webpack_require__(6);\n        var map = __webpack_require__(7);\n        var usage =\n          'Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])';\n        if (!isArray(queries)) {\n          throw new Error(usage);\n        }\n        var client = this;\n        return client._promise.all(\n          map(queries, function performQuery(query) {\n            if (\n              !query ||\n              query.indexName === undefined ||\n              query.params.facetName === undefined ||\n              query.params.facetQuery === undefined\n            ) {\n              throw new Error(usage);\n            }\n            var clone = __webpack_require__(3);\n            var omit = __webpack_require__(14);\n            var indexName = query.indexName;\n            var params = query.params;\n            var facetName = params.facetName;\n            var filteredParams = omit(clone(params), function (keyName) {\n              return keyName === 'facetName';\n            });\n            var searchParameters = client._getSearchParams(filteredParams, '');\n            return client._jsonRequest({\n              cache: client.cache,\n              method: 'POST',\n              url:\n                '/1/indexes/' +\n                encodeURIComponent(indexName) +\n                '/facets/' +\n                encodeURIComponent(facetName) +\n                '/query',\n              hostType: 'read',\n              body: { params: searchParameters },\n            });\n          }),\n        );\n      };\n      AlgoliaSearchCore.prototype.setSecurityTags = function (tags) {\n        if (Object.prototype.toString.call(tags) === '[object Array]') {\n          var strTags = [];\n          for (var i = 0; i < tags.length; ++i) {\n            if (Object.prototype.toString.call(tags[i]) === '[object Array]') {\n              var oredTags = [];\n              for (var j = 0; j < tags[i].length; ++j) {\n                oredTags.push(tags[i][j]);\n              }\n              strTags.push('(' + oredTags.join(',') + ')');\n            } else {\n              strTags.push(tags[i]);\n            }\n          }\n          tags = strTags.join(',');\n        }\n        this.securityTags = tags;\n      };\n      AlgoliaSearchCore.prototype.setUserToken = function (userToken) {\n        this.userToken = userToken;\n      };\n      AlgoliaSearchCore.prototype.clearCache = function () {\n        this.cache = {};\n      };\n      AlgoliaSearchCore.prototype.setRequestTimeout = function (milliseconds) {\n        if (milliseconds) {\n          this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds;\n        }\n      };\n      AlgoliaSearchCore.prototype.setTimeouts = function (timeouts) {\n        this._timeouts = timeouts;\n      };\n      AlgoliaSearchCore.prototype.getTimeouts = function () {\n        return this._timeouts;\n      };\n      AlgoliaSearchCore.prototype._getAppIdData = function () {\n        var data = store.get(this.applicationID);\n        if (data !== null) this._cacheAppIdData(data);\n        return data;\n      };\n      AlgoliaSearchCore.prototype._setAppIdData = function (data) {\n        data.lastChange = new Date().getTime();\n        this._cacheAppIdData(data);\n        return store.set(this.applicationID, data);\n      };\n      AlgoliaSearchCore.prototype._checkAppIdData = function () {\n        var data = this._getAppIdData();\n        var now = new Date().getTime();\n        if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) {\n          return this._resetInitialAppIdData(data);\n        }\n        return data;\n      };\n      AlgoliaSearchCore.prototype._resetInitialAppIdData = function (data) {\n        var newData = data || {};\n        newData.hostIndexes = { read: 0, write: 0 };\n        newData.timeoutMultiplier = 1;\n        newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]);\n        return this._setAppIdData(newData);\n      };\n      AlgoliaSearchCore.prototype._cacheAppIdData = function (data) {\n        this._hostIndexes = data.hostIndexes;\n        this._timeoutMultiplier = data.timeoutMultiplier;\n        this._shuffleResult = data.shuffleResult;\n      };\n      AlgoliaSearchCore.prototype._partialAppIdDataUpdate = function (newData) {\n        var foreach = __webpack_require__(2);\n        var currentData = this._getAppIdData();\n        foreach(newData, function (value, key) {\n          currentData[key] = value;\n        });\n        return this._setAppIdData(currentData);\n      };\n      AlgoliaSearchCore.prototype._getHostByType = function (hostType) {\n        return this.hosts[hostType][this._getHostIndexByType(hostType)];\n      };\n      AlgoliaSearchCore.prototype._getTimeoutMultiplier = function () {\n        return this._timeoutMultiplier;\n      };\n      AlgoliaSearchCore.prototype._getHostIndexByType = function (hostType) {\n        return this._hostIndexes[hostType];\n      };\n      AlgoliaSearchCore.prototype._setHostIndexByType = function (hostIndex, hostType) {\n        var clone = __webpack_require__(3);\n        var newHostIndexes = clone(this._hostIndexes);\n        newHostIndexes[hostType] = hostIndex;\n        this._partialAppIdDataUpdate({ hostIndexes: newHostIndexes });\n        return hostIndex;\n      };\n      AlgoliaSearchCore.prototype._incrementHostIndex = function (hostType) {\n        return this._setHostIndexByType(\n          (this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length,\n          hostType,\n        );\n      };\n      AlgoliaSearchCore.prototype._incrementTimeoutMultipler = function () {\n        var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4);\n        return this._partialAppIdDataUpdate({ timeoutMultiplier: timeoutMultiplier });\n      };\n      AlgoliaSearchCore.prototype._getTimeoutsForRequest = function (hostType) {\n        return {\n          connect: this._timeouts.connect * this._timeoutMultiplier,\n          complete: this._timeouts[hostType] * this._timeoutMultiplier,\n        };\n      };\n      function prepareHost(protocol) {\n        return function prepare(host) {\n          return protocol + '//' + host.toLowerCase();\n        };\n      }\n      function safeJSONStringify(obj) {\n        if (Array.prototype.toJSON === undefined) {\n          return JSON.stringify(obj);\n        }\n        var toJSON = Array.prototype.toJSON;\n        delete Array.prototype.toJSON;\n        var out = JSON.stringify(obj);\n        Array.prototype.toJSON = toJSON;\n        return out;\n      }\n      function shuffle(array) {\n        var currentIndex = array.length;\n        var temporaryValue;\n        var randomIndex;\n        while (currentIndex !== 0) {\n          randomIndex = Math.floor(Math.random() * currentIndex);\n          currentIndex -= 1;\n          temporaryValue = array[currentIndex];\n          array[currentIndex] = array[randomIndex];\n          array[randomIndex] = temporaryValue;\n        }\n        return array;\n      }\n      function removeCredentials(headers) {\n        var newHeaders = {};\n        for (var headerName in headers) {\n          if (Object.prototype.hasOwnProperty.call(headers, headerName)) {\n            var value;\n            if (headerName === 'x-algolia-api-key' || headerName === 'x-algolia-application-id') {\n              value = '**hidden for security purposes**';\n            } else {\n              value = headers[headerName];\n            }\n            newHeaders[headerName] = value;\n          }\n        }\n        return newHeaders;\n      }\n    },\n    function (module, exports) {\n      module.exports = function exitPromise(fn, _setTimeout) {\n        _setTimeout(fn, 0);\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      var buildSearchMethod = __webpack_require__(13);\n      var deprecate = __webpack_require__(33);\n      var deprecatedMessage = __webpack_require__(34);\n      module.exports = IndexCore;\n      function IndexCore(algoliasearch, indexName) {\n        this.indexName = indexName;\n        this.as = algoliasearch;\n        this.typeAheadArgs = null;\n        this.typeAheadValueOption = null;\n        this.cache = {};\n      }\n      IndexCore.prototype.clearCache = function () {\n        this.cache = {};\n      };\n      IndexCore.prototype.search = buildSearchMethod('query');\n      IndexCore.prototype.similarSearch = buildSearchMethod('similarQuery');\n      IndexCore.prototype.browse = function (query, queryParameters, callback) {\n        var merge = __webpack_require__(35);\n        var indexObj = this;\n        var page;\n        var hitsPerPage;\n        if (\n          arguments.length === 0 ||\n          (arguments.length === 1 && typeof arguments[0] === 'function')\n        ) {\n          page = 0;\n          callback = arguments[0];\n          query = undefined;\n        } else if (typeof arguments[0] === 'number') {\n          page = arguments[0];\n          if (typeof arguments[1] === 'number') {\n            hitsPerPage = arguments[1];\n          } else if (typeof arguments[1] === 'function') {\n            callback = arguments[1];\n            hitsPerPage = undefined;\n          }\n          query = undefined;\n          queryParameters = undefined;\n        } else if (typeof arguments[0] === 'object') {\n          if (typeof arguments[1] === 'function') {\n            callback = arguments[1];\n          }\n          queryParameters = arguments[0];\n          query = undefined;\n        } else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {\n          callback = arguments[1];\n          queryParameters = undefined;\n        }\n        queryParameters = merge({}, queryParameters || {}, {\n          page: page,\n          hitsPerPage: hitsPerPage,\n          query: query,\n        });\n        var params = this.as._getSearchParams(queryParameters, '');\n        return this.as._jsonRequest({\n          method: 'POST',\n          url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/browse',\n          body: { params: params },\n          hostType: 'read',\n          callback: callback,\n        });\n      };\n      IndexCore.prototype.browseFrom = function (cursor, callback) {\n        return this.as._jsonRequest({\n          method: 'POST',\n          url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/browse',\n          body: { cursor: cursor },\n          hostType: 'read',\n          callback: callback,\n        });\n      };\n      IndexCore.prototype.searchForFacetValues = function (params, callback) {\n        var clone = __webpack_require__(3);\n        var omit = __webpack_require__(14);\n        var usage =\n          'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])';\n        if (params.facetName === undefined || params.facetQuery === undefined) {\n          throw new Error(usage);\n        }\n        var facetName = params.facetName;\n        var filteredParams = omit(clone(params), function (keyName) {\n          return keyName === 'facetName';\n        });\n        var searchParameters = this.as._getSearchParams(filteredParams, '');\n        return this.as._jsonRequest({\n          method: 'POST',\n          url:\n            '/1/indexes/' +\n            encodeURIComponent(this.indexName) +\n            '/facets/' +\n            encodeURIComponent(facetName) +\n            '/query',\n          hostType: 'read',\n          body: { params: searchParameters },\n          callback: callback,\n        });\n      };\n      IndexCore.prototype.searchFacet = deprecate(function (params, callback) {\n        return this.searchForFacetValues(params, callback);\n      }, deprecatedMessage(\n        'index.searchFacet(params[, callback])',\n        'index.searchForFacetValues(params[, callback])',\n      ));\n      IndexCore.prototype._search = function (params, url, callback, additionalUA) {\n        return this.as._jsonRequest({\n          cache: this.cache,\n          method: 'POST',\n          url: url || '/1/indexes/' + encodeURIComponent(this.indexName) + '/query',\n          body: { params: params },\n          hostType: 'read',\n          fallback: {\n            method: 'GET',\n            url: '/1/indexes/' + encodeURIComponent(this.indexName),\n            body: { params: params },\n          },\n          callback: callback,\n          additionalUA: additionalUA,\n        });\n      };\n      IndexCore.prototype.getObject = function (objectID, attrs, callback) {\n        var indexObj = this;\n        if (arguments.length === 1 || typeof attrs === 'function') {\n          callback = attrs;\n          attrs = undefined;\n        }\n        var params = '';\n        if (attrs !== undefined) {\n          params = '?attributes=';\n          for (var i = 0; i < attrs.length; ++i) {\n            if (i !== 0) {\n              params += ',';\n            }\n            params += attrs[i];\n          }\n        }\n        return this.as._jsonRequest({\n          method: 'GET',\n          url:\n            '/1/indexes/' +\n            encodeURIComponent(indexObj.indexName) +\n            '/' +\n            encodeURIComponent(objectID) +\n            params,\n          hostType: 'read',\n          callback: callback,\n        });\n      };\n      IndexCore.prototype.getObjects = function (objectIDs, attributesToRetrieve, callback) {\n        var isArray = __webpack_require__(6);\n        var map = __webpack_require__(7);\n        var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])';\n        if (!isArray(objectIDs)) {\n          throw new Error(usage);\n        }\n        var indexObj = this;\n        if (arguments.length === 1 || typeof attributesToRetrieve === 'function') {\n          callback = attributesToRetrieve;\n          attributesToRetrieve = undefined;\n        }\n        var body = {\n          requests: map(objectIDs, function prepareRequest(objectID) {\n            var request = { indexName: indexObj.indexName, objectID: objectID };\n            if (attributesToRetrieve) {\n              request.attributesToRetrieve = attributesToRetrieve.join(',');\n            }\n            return request;\n          }),\n        };\n        return this.as._jsonRequest({\n          method: 'POST',\n          url: '/1/indexes/*/objects',\n          hostType: 'read',\n          body: body,\n          callback: callback,\n        });\n      };\n      IndexCore.prototype.as = null;\n      IndexCore.prototype.indexName = null;\n      IndexCore.prototype.typeAheadArgs = null;\n      IndexCore.prototype.typeAheadValueOption = null;\n    },\n    function (module, exports) {\n      module.exports = function deprecate(fn, message) {\n        var warned = false;\n        function deprecated() {\n          if (!warned) {\n            console.warn(message);\n            warned = true;\n          }\n          return fn.apply(this, arguments);\n        }\n        return deprecated;\n      };\n    },\n    function (module, exports) {\n      module.exports = function deprecatedMessage(previousUsage, newUsage) {\n        var githubAnchorLink = previousUsage.toLowerCase().replace(/[\\.\\(\\)]/g, '');\n        return (\n          'algoliasearch: `' +\n          previousUsage +\n          '` was replaced by `' +\n          newUsage +\n          '`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#' +\n          githubAnchorLink\n        );\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      var foreach = __webpack_require__(2);\n      module.exports = function merge(destination) {\n        var sources = Array.prototype.slice.call(arguments);\n        foreach(sources, function (source) {\n          for (var keyName in source) {\n            if (source.hasOwnProperty(keyName)) {\n              if (typeof destination[keyName] === 'object' && typeof source[keyName] === 'object') {\n                destination[keyName] = merge({}, destination[keyName], source[keyName]);\n              } else if (source[keyName] !== undefined) {\n                destination[keyName] = source[keyName];\n              }\n            }\n          }\n        });\n        return destination;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var has = Object.prototype.hasOwnProperty;\n      var toStr = Object.prototype.toString;\n      var slice = Array.prototype.slice;\n      var isArgs = __webpack_require__(37);\n      var isEnumerable = Object.prototype.propertyIsEnumerable;\n      var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n      var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n      var dontEnums = [\n        'toString',\n        'toLocaleString',\n        'valueOf',\n        'hasOwnProperty',\n        'isPrototypeOf',\n        'propertyIsEnumerable',\n        'constructor',\n      ];\n      var equalsConstructorPrototype = function (o) {\n        var ctor = o.constructor;\n        return ctor && ctor.prototype === o;\n      };\n      var excludedKeys = {\n        $applicationCache: true,\n        $console: true,\n        $external: true,\n        $frame: true,\n        $frameElement: true,\n        $frames: true,\n        $innerHeight: true,\n        $innerWidth: true,\n        $outerHeight: true,\n        $outerWidth: true,\n        $pageXOffset: true,\n        $pageYOffset: true,\n        $parent: true,\n        $scrollLeft: true,\n        $scrollTop: true,\n        $scrollX: true,\n        $scrollY: true,\n        $self: true,\n        $webkitIndexedDB: true,\n        $webkitStorageInfo: true,\n        $window: true,\n      };\n      var hasAutomationEqualityBug = (function () {\n        if (typeof window === 'undefined') {\n          return false;\n        }\n        for (var k in window) {\n          try {\n            if (\n              !excludedKeys['$' + k] &&\n              has.call(window, k) &&\n              window[k] !== null &&\n              typeof window[k] === 'object'\n            ) {\n              try {\n                equalsConstructorPrototype(window[k]);\n              } catch (e) {\n                return true;\n              }\n            }\n          } catch (e) {\n            return true;\n          }\n        }\n        return false;\n      })();\n      var equalsConstructorPrototypeIfNotBuggy = function (o) {\n        if (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n          return equalsConstructorPrototype(o);\n        }\n        try {\n          return equalsConstructorPrototype(o);\n        } catch (e) {\n          return false;\n        }\n      };\n      var keysShim = function keys(object) {\n        var isObject = object !== null && typeof object === 'object';\n        var isFunction = toStr.call(object) === '[object Function]';\n        var isArguments = isArgs(object);\n        var isString = isObject && toStr.call(object) === '[object String]';\n        var theKeys = [];\n        if (!isObject && !isFunction && !isArguments) {\n          throw new TypeError('Object.keys called on a non-object');\n        }\n        var skipProto = hasProtoEnumBug && isFunction;\n        if (isString && object.length > 0 && !has.call(object, 0)) {\n          for (var i = 0; i < object.length; ++i) {\n            theKeys.push(String(i));\n          }\n        }\n        if (isArguments && object.length > 0) {\n          for (var j = 0; j < object.length; ++j) {\n            theKeys.push(String(j));\n          }\n        } else {\n          for (var name in object) {\n            if (!(skipProto && name === 'prototype') && has.call(object, name)) {\n              theKeys.push(String(name));\n            }\n          }\n        }\n        if (hasDontEnumBug) {\n          var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n          for (var k = 0; k < dontEnums.length; ++k) {\n            if (\n              !(skipConstructor && dontEnums[k] === 'constructor') &&\n              has.call(object, dontEnums[k])\n            ) {\n              theKeys.push(dontEnums[k]);\n            }\n          }\n        }\n        return theKeys;\n      };\n      keysShim.shim = function shimObjectKeys() {\n        if (Object.keys) {\n          var keysWorksWithArguments = (function () {\n            return (Object.keys(arguments) || '').length === 2;\n          })(1, 2);\n          if (!keysWorksWithArguments) {\n            var originalKeys = Object.keys;\n            Object.keys = function keys(object) {\n              if (isArgs(object)) {\n                return originalKeys(slice.call(object));\n              } else {\n                return originalKeys(object);\n              }\n            };\n          }\n        } else {\n          Object.keys = keysShim;\n        }\n        return Object.keys || keysShim;\n      };\n      module.exports = keysShim;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var toStr = Object.prototype.toString;\n      module.exports = function isArguments(value) {\n        var str = toStr.call(value);\n        var isArgs = str === '[object Arguments]';\n        if (!isArgs) {\n          isArgs =\n            str !== '[object Array]' &&\n            value !== null &&\n            typeof value === 'object' &&\n            typeof value.length === 'number' &&\n            value.length >= 0 &&\n            toStr.call(value.callee) === '[object Function]';\n        }\n        return isArgs;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      (function (global) {\n        var debug = __webpack_require__(8)('algoliasearch:src/hostIndexState.js');\n        var localStorageNamespace = 'algoliasearch-client-js';\n        var store;\n        var moduleStore = {\n          state: {},\n          set: function (key, data) {\n            this.state[key] = data;\n            return this.state[key];\n          },\n          get: function (key) {\n            return this.state[key] || null;\n          },\n        };\n        var localStorageStore = {\n          set: function (key, data) {\n            moduleStore.set(key, data);\n            try {\n              var namespace = JSON.parse(global.localStorage[localStorageNamespace]);\n              namespace[key] = data;\n              global.localStorage[localStorageNamespace] = JSON.stringify(namespace);\n              return namespace[key];\n            } catch (e) {\n              return localStorageFailure(key, e);\n            }\n          },\n          get: function (key) {\n            try {\n              return JSON.parse(global.localStorage[localStorageNamespace])[key] || null;\n            } catch (e) {\n              return localStorageFailure(key, e);\n            }\n          },\n        };\n        function localStorageFailure(key, e) {\n          debug('localStorage failed with', e);\n          cleanup();\n          store = moduleStore;\n          return store.get(key);\n        }\n        store = supportsLocalStorage() ? localStorageStore : moduleStore;\n        module.exports = {\n          get: getOrSet,\n          set: getOrSet,\n          supportsLocalStorage: supportsLocalStorage,\n        };\n        function getOrSet(key, data) {\n          if (arguments.length === 1) {\n            return store.get(key);\n          }\n          return store.set(key, data);\n        }\n        function supportsLocalStorage() {\n          try {\n            if ('localStorage' in global && global.localStorage !== null) {\n              if (!global.localStorage[localStorageNamespace]) {\n                global.localStorage.setItem(localStorageNamespace, JSON.stringify({}));\n              }\n              return true;\n            }\n            return false;\n          } catch (_) {\n            return false;\n          }\n        }\n        function cleanup() {\n          try {\n            global.localStorage.removeItem(localStorageNamespace);\n          } catch (_) {}\n        }\n      }).call(exports, __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\n      exports.coerce = coerce;\n      exports.disable = disable;\n      exports.enable = enable;\n      exports.enabled = enabled;\n      exports.humanize = __webpack_require__(40);\n      exports.names = [];\n      exports.skips = [];\n      exports.formatters = {};\n      var prevTime;\n      function selectColor(namespace) {\n        var hash = 0,\n          i;\n        for (i in namespace) {\n          hash = (hash << 5) - hash + namespace.charCodeAt(i);\n          hash |= 0;\n        }\n        return exports.colors[Math.abs(hash) % exports.colors.length];\n      }\n      function createDebug(namespace) {\n        function debug() {\n          if (!debug.enabled) return;\n          var self = debug;\n          var curr = +new Date();\n          var ms = curr - (prevTime || curr);\n          self.diff = ms;\n          self.prev = prevTime;\n          self.curr = curr;\n          prevTime = curr;\n          var args = new Array(arguments.length);\n          for (var i = 0; i < args.length; i++) {\n            args[i] = arguments[i];\n          }\n          args[0] = exports.coerce(args[0]);\n          if ('string' !== typeof args[0]) {\n            args.unshift('%O');\n          }\n          var index = 0;\n          args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n            if (match === '%%') return match;\n            index++;\n            var formatter = exports.formatters[format];\n            if ('function' === typeof formatter) {\n              var val = args[index];\n              match = formatter.call(self, val);\n              args.splice(index, 1);\n              index--;\n            }\n            return match;\n          });\n          exports.formatArgs.call(self, args);\n          var logFn = debug.log || exports.log || console.log.bind(console);\n          logFn.apply(self, args);\n        }\n        debug.namespace = namespace;\n        debug.enabled = exports.enabled(namespace);\n        debug.useColors = exports.useColors();\n        debug.color = selectColor(namespace);\n        if ('function' === typeof exports.init) {\n          exports.init(debug);\n        }\n        return debug;\n      }\n      function enable(namespaces) {\n        exports.save(namespaces);\n        exports.names = [];\n        exports.skips = [];\n        var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n        var len = split.length;\n        for (var i = 0; i < len; i++) {\n          if (!split[i]) continue;\n          namespaces = split[i].replace(/\\*/g, '.*?');\n          if (namespaces[0] === '-') {\n            exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n          } else {\n            exports.names.push(new RegExp('^' + namespaces + '$'));\n          }\n        }\n      }\n      function disable() {\n        exports.enable('');\n      }\n      function enabled(name) {\n        var i, len;\n        for (i = 0, len = exports.skips.length; i < len; i++) {\n          if (exports.skips[i].test(name)) {\n            return false;\n          }\n        }\n        for (i = 0, len = exports.names.length; i < len; i++) {\n          if (exports.names[i].test(name)) {\n            return true;\n          }\n        }\n        return false;\n      }\n      function coerce(val) {\n        if (val instanceof Error) return val.stack || val.message;\n        return val;\n      }\n    },\n    function (module, exports) {\n      var s = 1e3;\n      var m = s * 60;\n      var h = m * 60;\n      var d = h * 24;\n      var y = d * 365.25;\n      module.exports = function (val, options) {\n        options = options || {};\n        var type = typeof val;\n        if (type === 'string' && val.length > 0) {\n          return parse(val);\n        } else if (type === 'number' && isNaN(val) === false) {\n          return options.long ? fmtLong(val) : fmtShort(val);\n        }\n        throw new Error(\n          'val is not a non-empty string or a valid number. val=' + JSON.stringify(val),\n        );\n      };\n      function parse(str) {\n        str = String(str);\n        if (str.length > 100) {\n          return;\n        }\n        var match =\n          /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n            str,\n          );\n        if (!match) {\n          return;\n        }\n        var n = parseFloat(match[1]);\n        var type = (match[2] || 'ms').toLowerCase();\n        switch (type) {\n          case 'years':\n          case 'year':\n          case 'yrs':\n          case 'yr':\n          case 'y':\n            return n * y;\n          case 'days':\n          case 'day':\n          case 'd':\n            return n * d;\n          case 'hours':\n          case 'hour':\n          case 'hrs':\n          case 'hr':\n          case 'h':\n            return n * h;\n          case 'minutes':\n          case 'minute':\n          case 'mins':\n          case 'min':\n          case 'm':\n            return n * m;\n          case 'seconds':\n          case 'second':\n          case 'secs':\n          case 'sec':\n          case 's':\n            return n * s;\n          case 'milliseconds':\n          case 'millisecond':\n          case 'msecs':\n          case 'msec':\n          case 'ms':\n            return n;\n          default:\n            return undefined;\n        }\n      }\n      function fmtShort(ms) {\n        if (ms >= d) {\n          return Math.round(ms / d) + 'd';\n        }\n        if (ms >= h) {\n          return Math.round(ms / h) + 'h';\n        }\n        if (ms >= m) {\n          return Math.round(ms / m) + 'm';\n        }\n        if (ms >= s) {\n          return Math.round(ms / s) + 's';\n        }\n        return ms + 'ms';\n      }\n      function fmtLong(ms) {\n        return (\n          plural(ms, d, 'day') ||\n          plural(ms, h, 'hour') ||\n          plural(ms, m, 'minute') ||\n          plural(ms, s, 'second') ||\n          ms + ' ms'\n        );\n      }\n      function plural(ms, n, name) {\n        if (ms < n) {\n          return;\n        }\n        if (ms < n * 1.5) {\n          return Math.floor(ms / n) + ' ' + name;\n        }\n        return Math.ceil(ms / n) + ' ' + name + 's';\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var global = __webpack_require__(42);\n      var Promise = global.Promise || __webpack_require__(43).Promise;\n      module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {\n        var inherits = __webpack_require__(12);\n        var errors = __webpack_require__(5);\n        var inlineHeaders = __webpack_require__(44);\n        var jsonpRequest = __webpack_require__(46);\n        var places = __webpack_require__(47);\n        uaSuffix = uaSuffix || '';\n        function algoliasearch(applicationID, apiKey, opts) {\n          var cloneDeep = __webpack_require__(3);\n          opts = cloneDeep(opts || {});\n          opts._ua = opts._ua || algoliasearch.ua;\n          return new AlgoliaSearchBrowser(applicationID, apiKey, opts);\n        }\n        algoliasearch.version = __webpack_require__(48);\n        algoliasearch.ua = 'Algolia for vanilla JavaScript ' + uaSuffix + algoliasearch.version;\n        algoliasearch.initPlaces = places(algoliasearch);\n        global.__algolia = { debug: __webpack_require__(8), algoliasearch: algoliasearch };\n        var support = {\n          hasXMLHttpRequest: 'XMLHttpRequest' in global,\n          hasXDomainRequest: 'XDomainRequest' in global,\n        };\n        if (support.hasXMLHttpRequest) {\n          support.cors = 'withCredentials' in new XMLHttpRequest();\n        }\n        function AlgoliaSearchBrowser() {\n          AlgoliaSearch.apply(this, arguments);\n        }\n        inherits(AlgoliaSearchBrowser, AlgoliaSearch);\n        AlgoliaSearchBrowser.prototype._request = function request(url, opts) {\n          return new Promise(function wrapRequest(resolve, reject) {\n            if (!support.cors && !support.hasXDomainRequest) {\n              reject(new errors.Network('CORS not supported'));\n              return;\n            }\n            url = inlineHeaders(url, opts.headers);\n            var body = opts.body;\n            var req = support.cors ? new XMLHttpRequest() : new XDomainRequest();\n            var reqTimeout;\n            var timedOut;\n            var connected = false;\n            reqTimeout = setTimeout(onTimeout, opts.timeouts.connect);\n            req.onprogress = onProgress;\n            if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange;\n            req.onload = onLoad;\n            req.onerror = onError;\n            if (req instanceof XMLHttpRequest) {\n              req.open(opts.method, url, true);\n              if (opts.forceAuthHeaders) {\n                req.setRequestHeader(\n                  'x-algolia-application-id',\n                  opts.headers['x-algolia-application-id'],\n                );\n                req.setRequestHeader('x-algolia-api-key', opts.headers['x-algolia-api-key']);\n              }\n            } else {\n              req.open(opts.method, url);\n            }\n            if (support.cors) {\n              if (body) {\n                if (opts.method === 'POST') {\n                  req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');\n                } else {\n                  req.setRequestHeader('content-type', 'application/json');\n                }\n              }\n              req.setRequestHeader('accept', 'application/json');\n            }\n            if (body) {\n              req.send(body);\n            } else {\n              req.send();\n            }\n            function onLoad() {\n              if (timedOut) {\n                return;\n              }\n              clearTimeout(reqTimeout);\n              var out;\n              try {\n                out = {\n                  body: JSON.parse(req.responseText),\n                  responseText: req.responseText,\n                  statusCode: req.status,\n                  headers: (req.getAllResponseHeaders && req.getAllResponseHeaders()) || {},\n                };\n              } catch (e) {\n                out = new errors.UnparsableJSON({ more: req.responseText });\n              }\n              if (out instanceof errors.UnparsableJSON) {\n                reject(out);\n              } else {\n                resolve(out);\n              }\n            }\n            function onError(event) {\n              if (timedOut) {\n                return;\n              }\n              clearTimeout(reqTimeout);\n              reject(new errors.Network({ more: event }));\n            }\n            function onTimeout() {\n              timedOut = true;\n              req.abort();\n              reject(new errors.RequestTimeout());\n            }\n            function onConnect() {\n              connected = true;\n              clearTimeout(reqTimeout);\n              reqTimeout = setTimeout(onTimeout, opts.timeouts.complete);\n            }\n            function onProgress() {\n              if (!connected) onConnect();\n            }\n            function onReadyStateChange() {\n              if (!connected && req.readyState > 1) onConnect();\n            }\n          });\n        };\n        AlgoliaSearchBrowser.prototype._request.fallback = function requestFallback(url, opts) {\n          url = inlineHeaders(url, opts.headers);\n          return new Promise(function wrapJsonpRequest(resolve, reject) {\n            jsonpRequest(url, opts, function jsonpRequestDone(err, content) {\n              if (err) {\n                reject(err);\n                return;\n              }\n              resolve(content);\n            });\n          });\n        };\n        AlgoliaSearchBrowser.prototype._promise = {\n          reject: function rejectPromise(val) {\n            return Promise.reject(val);\n          },\n          resolve: function resolvePromise(val) {\n            return Promise.resolve(val);\n          },\n          delay: function delayPromise(ms) {\n            return new Promise(function resolveOnTimeout(resolve) {\n              setTimeout(resolve, ms);\n            });\n          },\n          all: function all(promises) {\n            return Promise.all(promises);\n          },\n        };\n        return algoliasearch;\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      (function (global) {\n        var win;\n        if (typeof window !== 'undefined') {\n          win = window;\n        } else if (typeof global !== 'undefined') {\n          win = global;\n        } else if (typeof self !== 'undefined') {\n          win = self;\n        } else {\n          win = {};\n        }\n        module.exports = win;\n      }).call(exports, __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      (function (process, global) {\n        (function (global, factory) {\n          true\n            ? (module.exports = factory())\n            : typeof define === 'function' && define.amd\n            ? define(factory)\n            : (global.ES6Promise = factory());\n        })(this, function () {\n          'use strict';\n          function objectOrFunction(x) {\n            var type = typeof x;\n            return x !== null && (type === 'object' || type === 'function');\n          }\n          function isFunction(x) {\n            return typeof x === 'function';\n          }\n          var _isArray = void 0;\n          if (Array.isArray) {\n            _isArray = Array.isArray;\n          } else {\n            _isArray = function (x) {\n              return Object.prototype.toString.call(x) === '[object Array]';\n            };\n          }\n          var isArray = _isArray;\n          var len = 0;\n          var vertxNext = void 0;\n          var customSchedulerFn = void 0;\n          var asap = function asap(callback, arg) {\n            queue[len] = callback;\n            queue[len + 1] = arg;\n            len += 2;\n            if (len === 2) {\n              if (customSchedulerFn) {\n                customSchedulerFn(flush);\n              } else {\n                scheduleFlush();\n              }\n            }\n          };\n          function setScheduler(scheduleFn) {\n            customSchedulerFn = scheduleFn;\n          }\n          function setAsap(asapFn) {\n            asap = asapFn;\n          }\n          var browserWindow = typeof window !== 'undefined' ? window : undefined;\n          var browserGlobal = browserWindow || {};\n          var BrowserMutationObserver =\n            browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n          var isNode =\n            typeof self === 'undefined' &&\n            typeof process !== 'undefined' &&\n            {}.toString.call(process) === '[object process]';\n          var isWorker =\n            typeof Uint8ClampedArray !== 'undefined' &&\n            typeof importScripts !== 'undefined' &&\n            typeof MessageChannel !== 'undefined';\n          function useNextTick() {\n            return function () {\n              return process.nextTick(flush);\n            };\n          }\n          function useVertxTimer() {\n            if (typeof vertxNext !== 'undefined') {\n              return function () {\n                vertxNext(flush);\n              };\n            }\n            return useSetTimeout();\n          }\n          function useMutationObserver() {\n            var iterations = 0;\n            var observer = new BrowserMutationObserver(flush);\n            var node = document.createTextNode('');\n            observer.observe(node, { characterData: true });\n            return function () {\n              node.data = iterations = ++iterations % 2;\n            };\n          }\n          function useMessageChannel() {\n            var channel = new MessageChannel();\n            channel.port1.onmessage = flush;\n            return function () {\n              return channel.port2.postMessage(0);\n            };\n          }\n          function useSetTimeout() {\n            var globalSetTimeout = setTimeout;\n            return function () {\n              return globalSetTimeout(flush, 1);\n            };\n          }\n          var queue = new Array(1e3);\n          function flush() {\n            for (var i = 0; i < len; i += 2) {\n              var callback = queue[i];\n              var arg = queue[i + 1];\n              callback(arg);\n              queue[i] = undefined;\n              queue[i + 1] = undefined;\n            }\n            len = 0;\n          }\n          function attemptVertx() {\n            try {\n              var vertx = Function('return this')().require('vertx');\n              vertxNext = vertx.runOnLoop || vertx.runOnContext;\n              return useVertxTimer();\n            } catch (e) {\n              return useSetTimeout();\n            }\n          }\n          var scheduleFlush = void 0;\n          if (isNode) {\n            scheduleFlush = useNextTick();\n          } else if (BrowserMutationObserver) {\n            scheduleFlush = useMutationObserver();\n          } else if (isWorker) {\n            scheduleFlush = useMessageChannel();\n          } else if (browserWindow === undefined && 'function' === 'function') {\n            scheduleFlush = attemptVertx();\n          } else {\n            scheduleFlush = useSetTimeout();\n          }\n          function then(onFulfillment, onRejection) {\n            var parent = this;\n            var child = new this.constructor(noop);\n            if (child[PROMISE_ID] === undefined) {\n              makePromise(child);\n            }\n            var _state = parent._state;\n            if (_state) {\n              var callback = arguments[_state - 1];\n              asap(function () {\n                return invokeCallback(_state, child, callback, parent._result);\n              });\n            } else {\n              subscribe(parent, child, onFulfillment, onRejection);\n            }\n            return child;\n          }\n          function resolve$1(object) {\n            var Constructor = this;\n            if (object && typeof object === 'object' && object.constructor === Constructor) {\n              return object;\n            }\n            var promise = new Constructor(noop);\n            resolve(promise, object);\n            return promise;\n          }\n          var PROMISE_ID = Math.random().toString(36).substring(2);\n          function noop() {}\n          var PENDING = void 0;\n          var FULFILLED = 1;\n          var REJECTED = 2;\n          var TRY_CATCH_ERROR = { error: null };\n          function selfFulfillment() {\n            return new TypeError('You cannot resolve a promise with itself');\n          }\n          function cannotReturnOwn() {\n            return new TypeError('A promises callback cannot return that same promise.');\n          }\n          function getThen(promise) {\n            try {\n              return promise.then;\n            } catch (error) {\n              TRY_CATCH_ERROR.error = error;\n              return TRY_CATCH_ERROR;\n            }\n          }\n          function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n            try {\n              then$$1.call(value, fulfillmentHandler, rejectionHandler);\n            } catch (e) {\n              return e;\n            }\n          }\n          function handleForeignThenable(promise, thenable, then$$1) {\n            asap(function (promise) {\n              var sealed = false;\n              var error = tryThen(\n                then$$1,\n                thenable,\n                function (value) {\n                  if (sealed) {\n                    return;\n                  }\n                  sealed = true;\n                  if (thenable !== value) {\n                    resolve(promise, value);\n                  } else {\n                    fulfill(promise, value);\n                  }\n                },\n                function (reason) {\n                  if (sealed) {\n                    return;\n                  }\n                  sealed = true;\n                  reject(promise, reason);\n                },\n                'Settle: ' + (promise._label || ' unknown promise'),\n              );\n              if (!sealed && error) {\n                sealed = true;\n                reject(promise, error);\n              }\n            }, promise);\n          }\n          function handleOwnThenable(promise, thenable) {\n            if (thenable._state === FULFILLED) {\n              fulfill(promise, thenable._result);\n            } else if (thenable._state === REJECTED) {\n              reject(promise, thenable._result);\n            } else {\n              subscribe(\n                thenable,\n                undefined,\n                function (value) {\n                  return resolve(promise, value);\n                },\n                function (reason) {\n                  return reject(promise, reason);\n                },\n              );\n            }\n          }\n          function handleMaybeThenable(promise, maybeThenable, then$$1) {\n            if (\n              maybeThenable.constructor === promise.constructor &&\n              then$$1 === then &&\n              maybeThenable.constructor.resolve === resolve$1\n            ) {\n              handleOwnThenable(promise, maybeThenable);\n            } else {\n              if (then$$1 === TRY_CATCH_ERROR) {\n                reject(promise, TRY_CATCH_ERROR.error);\n                TRY_CATCH_ERROR.error = null;\n              } else if (then$$1 === undefined) {\n                fulfill(promise, maybeThenable);\n              } else if (isFunction(then$$1)) {\n                handleForeignThenable(promise, maybeThenable, then$$1);\n              } else {\n                fulfill(promise, maybeThenable);\n              }\n            }\n          }\n          function resolve(promise, value) {\n            if (promise === value) {\n              reject(promise, selfFulfillment());\n            } else if (objectOrFunction(value)) {\n              handleMaybeThenable(promise, value, getThen(value));\n            } else {\n              fulfill(promise, value);\n            }\n          }\n          function publishRejection(promise) {\n            if (promise._onerror) {\n              promise._onerror(promise._result);\n            }\n            publish(promise);\n          }\n          function fulfill(promise, value) {\n            if (promise._state !== PENDING) {\n              return;\n            }\n            promise._result = value;\n            promise._state = FULFILLED;\n            if (promise._subscribers.length !== 0) {\n              asap(publish, promise);\n            }\n          }\n          function reject(promise, reason) {\n            if (promise._state !== PENDING) {\n              return;\n            }\n            promise._state = REJECTED;\n            promise._result = reason;\n            asap(publishRejection, promise);\n          }\n          function subscribe(parent, child, onFulfillment, onRejection) {\n            var _subscribers = parent._subscribers;\n            var length = _subscribers.length;\n            parent._onerror = null;\n            _subscribers[length] = child;\n            _subscribers[length + FULFILLED] = onFulfillment;\n            _subscribers[length + REJECTED] = onRejection;\n            if (length === 0 && parent._state) {\n              asap(publish, parent);\n            }\n          }\n          function publish(promise) {\n            var subscribers = promise._subscribers;\n            var settled = promise._state;\n            if (subscribers.length === 0) {\n              return;\n            }\n            var child = void 0,\n              callback = void 0,\n              detail = promise._result;\n            for (var i = 0; i < subscribers.length; i += 3) {\n              child = subscribers[i];\n              callback = subscribers[i + settled];\n              if (child) {\n                invokeCallback(settled, child, callback, detail);\n              } else {\n                callback(detail);\n              }\n            }\n            promise._subscribers.length = 0;\n          }\n          function tryCatch(callback, detail) {\n            try {\n              return callback(detail);\n            } catch (e) {\n              TRY_CATCH_ERROR.error = e;\n              return TRY_CATCH_ERROR;\n            }\n          }\n          function invokeCallback(settled, promise, callback, detail) {\n            var hasCallback = isFunction(callback),\n              value = void 0,\n              error = void 0,\n              succeeded = void 0,\n              failed = void 0;\n            if (hasCallback) {\n              value = tryCatch(callback, detail);\n              if (value === TRY_CATCH_ERROR) {\n                failed = true;\n                error = value.error;\n                value.error = null;\n              } else {\n                succeeded = true;\n              }\n              if (promise === value) {\n                reject(promise, cannotReturnOwn());\n                return;\n              }\n            } else {\n              value = detail;\n              succeeded = true;\n            }\n            if (promise._state !== PENDING) {\n            } else if (hasCallback && succeeded) {\n              resolve(promise, value);\n            } else if (failed) {\n              reject(promise, error);\n            } else if (settled === FULFILLED) {\n              fulfill(promise, value);\n            } else if (settled === REJECTED) {\n              reject(promise, value);\n            }\n          }\n          function initializePromise(promise, resolver) {\n            try {\n              resolver(\n                function resolvePromise(value) {\n                  resolve(promise, value);\n                },\n                function rejectPromise(reason) {\n                  reject(promise, reason);\n                },\n              );\n            } catch (e) {\n              reject(promise, e);\n            }\n          }\n          var id = 0;\n          function nextId() {\n            return id++;\n          }\n          function makePromise(promise) {\n            promise[PROMISE_ID] = id++;\n            promise._state = undefined;\n            promise._result = undefined;\n            promise._subscribers = [];\n          }\n          function validationError() {\n            return new Error('Array Methods must be provided an Array');\n          }\n          var Enumerator = (function () {\n            function Enumerator(Constructor, input) {\n              this._instanceConstructor = Constructor;\n              this.promise = new Constructor(noop);\n              if (!this.promise[PROMISE_ID]) {\n                makePromise(this.promise);\n              }\n              if (isArray(input)) {\n                this.length = input.length;\n                this._remaining = input.length;\n                this._result = new Array(this.length);\n                if (this.length === 0) {\n                  fulfill(this.promise, this._result);\n                } else {\n                  this.length = this.length || 0;\n                  this._enumerate(input);\n                  if (this._remaining === 0) {\n                    fulfill(this.promise, this._result);\n                  }\n                }\n              } else {\n                reject(this.promise, validationError());\n              }\n            }\n            Enumerator.prototype._enumerate = function _enumerate(input) {\n              for (var i = 0; this._state === PENDING && i < input.length; i++) {\n                this._eachEntry(input[i], i);\n              }\n            };\n            Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n              var c = this._instanceConstructor;\n              var resolve$$1 = c.resolve;\n              if (resolve$$1 === resolve$1) {\n                var _then = getThen(entry);\n                if (_then === then && entry._state !== PENDING) {\n                  this._settledAt(entry._state, i, entry._result);\n                } else if (typeof _then !== 'function') {\n                  this._remaining--;\n                  this._result[i] = entry;\n                } else if (c === Promise$1) {\n                  var promise = new c(noop);\n                  handleMaybeThenable(promise, entry, _then);\n                  this._willSettleAt(promise, i);\n                } else {\n                  this._willSettleAt(\n                    new c(function (resolve$$1) {\n                      return resolve$$1(entry);\n                    }),\n                    i,\n                  );\n                }\n              } else {\n                this._willSettleAt(resolve$$1(entry), i);\n              }\n            };\n            Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n              var promise = this.promise;\n              if (promise._state === PENDING) {\n                this._remaining--;\n                if (state === REJECTED) {\n                  reject(promise, value);\n                } else {\n                  this._result[i] = value;\n                }\n              }\n              if (this._remaining === 0) {\n                fulfill(promise, this._result);\n              }\n            };\n            Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n              var enumerator = this;\n              subscribe(\n                promise,\n                undefined,\n                function (value) {\n                  return enumerator._settledAt(FULFILLED, i, value);\n                },\n                function (reason) {\n                  return enumerator._settledAt(REJECTED, i, reason);\n                },\n              );\n            };\n            return Enumerator;\n          })();\n          function all(entries) {\n            return new Enumerator(this, entries).promise;\n          }\n          function race(entries) {\n            var Constructor = this;\n            if (!isArray(entries)) {\n              return new Constructor(function (_, reject) {\n                return reject(new TypeError('You must pass an array to race.'));\n              });\n            } else {\n              return new Constructor(function (resolve, reject) {\n                var length = entries.length;\n                for (var i = 0; i < length; i++) {\n                  Constructor.resolve(entries[i]).then(resolve, reject);\n                }\n              });\n            }\n          }\n          function reject$1(reason) {\n            var Constructor = this;\n            var promise = new Constructor(noop);\n            reject(promise, reason);\n            return promise;\n          }\n          function needsResolver() {\n            throw new TypeError(\n              'You must pass a resolver function as the first argument to the promise constructor',\n            );\n          }\n          function needsNew() {\n            throw new TypeError(\n              \"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\",\n            );\n          }\n          var Promise$1 = (function () {\n            function Promise(resolver) {\n              this[PROMISE_ID] = nextId();\n              this._result = this._state = undefined;\n              this._subscribers = [];\n              if (noop !== resolver) {\n                typeof resolver !== 'function' && needsResolver();\n                this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n              }\n            }\n            Promise.prototype.catch = function _catch(onRejection) {\n              return this.then(null, onRejection);\n            };\n            Promise.prototype.finally = function _finally(callback) {\n              var promise = this;\n              var constructor = promise.constructor;\n              return promise.then(\n                function (value) {\n                  return constructor.resolve(callback()).then(function () {\n                    return value;\n                  });\n                },\n                function (reason) {\n                  return constructor.resolve(callback()).then(function () {\n                    throw reason;\n                  });\n                },\n              );\n            };\n            return Promise;\n          })();\n          Promise$1.prototype.then = then;\n          Promise$1.all = all;\n          Promise$1.race = race;\n          Promise$1.resolve = resolve$1;\n          Promise$1.reject = reject$1;\n          Promise$1._setScheduler = setScheduler;\n          Promise$1._setAsap = setAsap;\n          Promise$1._asap = asap;\n          function polyfill() {\n            var local = void 0;\n            if (typeof global !== 'undefined') {\n              local = global;\n            } else if (typeof self !== 'undefined') {\n              local = self;\n            } else {\n              try {\n                local = Function('return this')();\n              } catch (e) {\n                throw new Error(\n                  'polyfill failed because global object is unavailable in this environment',\n                );\n              }\n            }\n            var P = local.Promise;\n            if (P) {\n              var promiseToString = null;\n              try {\n                promiseToString = Object.prototype.toString.call(P.resolve());\n              } catch (e) {}\n              if (promiseToString === '[object Promise]' && !P.cast) {\n                return;\n              }\n            }\n            local.Promise = Promise$1;\n          }\n          Promise$1.polyfill = polyfill;\n          Promise$1.Promise = Promise$1;\n          return Promise$1;\n        });\n      }).call(exports, __webpack_require__(9), __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = inlineHeaders;\n      var encode = __webpack_require__(45);\n      function inlineHeaders(url, headers) {\n        if (/\\?/.test(url)) {\n          url += '&';\n        } else {\n          url += '?';\n        }\n        return url + encode(headers);\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var stringifyPrimitive = function (v) {\n        switch (typeof v) {\n          case 'string':\n            return v;\n          case 'boolean':\n            return v ? 'true' : 'false';\n          case 'number':\n            return isFinite(v) ? v : '';\n          default:\n            return '';\n        }\n      };\n      module.exports = function (obj, sep, eq, name) {\n        sep = sep || '&';\n        eq = eq || '=';\n        if (obj === null) {\n          obj = undefined;\n        }\n        if (typeof obj === 'object') {\n          return map(objectKeys(obj), function (k) {\n            var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n            if (isArray(obj[k])) {\n              return map(obj[k], function (v) {\n                return ks + encodeURIComponent(stringifyPrimitive(v));\n              }).join(sep);\n            } else {\n              return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n            }\n          }).join(sep);\n        }\n        if (!name) return '';\n        return (\n          encodeURIComponent(stringifyPrimitive(name)) +\n          eq +\n          encodeURIComponent(stringifyPrimitive(obj))\n        );\n      };\n      var isArray =\n        Array.isArray ||\n        function (xs) {\n          return Object.prototype.toString.call(xs) === '[object Array]';\n        };\n      function map(xs, f) {\n        if (xs.map) return xs.map(f);\n        var res = [];\n        for (var i = 0; i < xs.length; i++) {\n          res.push(f(xs[i], i));\n        }\n        return res;\n      }\n      var objectKeys =\n        Object.keys ||\n        function (obj) {\n          var res = [];\n          for (var key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n          }\n          return res;\n        };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = jsonpRequest;\n      var errors = __webpack_require__(5);\n      var JSONPCounter = 0;\n      function jsonpRequest(url, opts, cb) {\n        if (opts.method !== 'GET') {\n          cb(new Error('Method ' + opts.method + ' ' + url + ' is not supported by JSONP.'));\n          return;\n        }\n        opts.debug('JSONP: start');\n        var cbCalled = false;\n        var timedOut = false;\n        JSONPCounter += 1;\n        var head = document.getElementsByTagName('head')[0];\n        var script = document.createElement('script');\n        var cbName = 'algoliaJSONP_' + JSONPCounter;\n        var done = false;\n        window[cbName] = function (data) {\n          removeGlobals();\n          if (timedOut) {\n            opts.debug('JSONP: Late answer, ignoring');\n            return;\n          }\n          cbCalled = true;\n          clean();\n          cb(null, { body: data, responseText: JSON.stringify(data) });\n        };\n        url += '&callback=' + cbName;\n        if (opts.jsonBody && opts.jsonBody.params) {\n          url += '&' + opts.jsonBody.params;\n        }\n        var ontimeout = setTimeout(timeout, opts.timeouts.complete);\n        script.onreadystatechange = readystatechange;\n        script.onload = success;\n        script.onerror = error;\n        script.async = true;\n        script.defer = true;\n        script.src = url;\n        head.appendChild(script);\n        function success() {\n          opts.debug('JSONP: success');\n          if (done || timedOut) {\n            return;\n          }\n          done = true;\n          if (!cbCalled) {\n            opts.debug('JSONP: Fail. Script loaded but did not call the callback');\n            clean();\n            cb(new errors.JSONPScriptFail());\n          }\n        }\n        function readystatechange() {\n          if (this.readyState === 'loaded' || this.readyState === 'complete') {\n            success();\n          }\n        }\n        function clean() {\n          clearTimeout(ontimeout);\n          script.onload = null;\n          script.onreadystatechange = null;\n          script.onerror = null;\n          head.removeChild(script);\n        }\n        function removeGlobals() {\n          try {\n            delete window[cbName];\n            delete window[cbName + '_loaded'];\n          } catch (e) {\n            window[cbName] = window[cbName + '_loaded'] = undefined;\n          }\n        }\n        function timeout() {\n          opts.debug('JSONP: Script timeout');\n          timedOut = true;\n          clean();\n          cb(new errors.RequestTimeout());\n        }\n        function error() {\n          opts.debug('JSONP: Script error');\n          if (done || timedOut) {\n            return;\n          }\n          clean();\n          cb(new errors.JSONPScriptError());\n        }\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      module.exports = createPlacesClient;\n      var buildSearchMethod = __webpack_require__(13);\n      function createPlacesClient(algoliasearch) {\n        return function places(appID, apiKey, opts) {\n          var cloneDeep = __webpack_require__(3);\n          opts = (opts && cloneDeep(opts)) || {};\n          opts.hosts = opts.hosts || [\n            'places-dsn.algolia.net',\n            'places-1.algolianet.com',\n            'places-2.algolianet.com',\n            'places-3.algolianet.com',\n          ];\n          if (arguments.length === 0 || typeof appID === 'object' || appID === undefined) {\n            appID = '';\n            apiKey = '';\n            opts._allowEmptyCredentials = true;\n          }\n          var client = algoliasearch(appID, apiKey, opts);\n          var index = client.initIndex('places');\n          index.search = buildSearchMethod('query', '/1/places/query');\n          index.getObject = function (objectID, callback) {\n            return this.as._jsonRequest({\n              method: 'GET',\n              url: '/1/places/' + encodeURIComponent(objectID),\n              hostType: 'read',\n              callback: callback,\n            });\n          };\n          return index;\n        };\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = '3.30.0';\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = __webpack_require__(50);\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var zepto = __webpack_require__(15);\n      var DOM = __webpack_require__(1);\n      DOM.element = zepto;\n      var _ = __webpack_require__(0);\n      _.isArray = zepto.isArray;\n      _.isFunction = zepto.isFunction;\n      _.isObject = zepto.isPlainObject;\n      _.bind = zepto.proxy;\n      _.each = function (collection, cb) {\n        zepto.each(collection, reverseArgs);\n        function reverseArgs(index, value) {\n          return cb(value, index);\n        }\n      };\n      _.map = zepto.map;\n      _.mixin = zepto.extend;\n      _.Event = zepto.Event;\n      var typeaheadKey = 'aaAutocomplete';\n      var Typeahead = __webpack_require__(51);\n      var EventBus = __webpack_require__(16);\n      function autocomplete(selector, options, datasets, typeaheadObject) {\n        datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 2);\n        var inputs = zepto(selector).each(function (i, input) {\n          var $input = zepto(input);\n          var eventBus = new EventBus({ el: $input });\n          var typeahead =\n            typeaheadObject ||\n            new Typeahead({\n              input: $input,\n              eventBus: eventBus,\n              dropdownMenuContainer: options.dropdownMenuContainer,\n              hint: options.hint === undefined ? true : !!options.hint,\n              minLength: options.minLength,\n              autoselect: options.autoselect,\n              autoselectOnBlur: options.autoselectOnBlur,\n              tabAutocomplete: options.tabAutocomplete,\n              openOnFocus: options.openOnFocus,\n              templates: options.templates,\n              debug: options.debug,\n              clearOnSelected: options.clearOnSelected,\n              cssClasses: options.cssClasses,\n              datasets: datasets,\n              keyboardShortcuts: options.keyboardShortcuts,\n              appendTo: options.appendTo,\n              autoWidth: options.autoWidth,\n              ariaLabel: options.ariaLabel || input.getAttribute('aria-label'),\n            });\n          $input.data(typeaheadKey, typeahead);\n        });\n        inputs.autocomplete = {};\n        _.each(['open', 'close', 'getVal', 'setVal', 'destroy', 'getWrapper'], function (method) {\n          inputs.autocomplete[method] = function () {\n            var methodArguments = arguments;\n            var result;\n            inputs.each(function (j, input) {\n              var typeahead = zepto(input).data(typeaheadKey);\n              result = typeahead[method].apply(typeahead, methodArguments);\n            });\n            return result;\n          };\n        });\n        return inputs;\n      }\n      autocomplete.sources = Typeahead.sources;\n      autocomplete.escapeHighlightedString = _.escapeHighlightedString;\n      var wasAutocompleteSet = 'autocomplete' in window;\n      var oldAutocomplete = window.autocomplete;\n      autocomplete.noConflict = function noConflict() {\n        if (wasAutocompleteSet) {\n          window.autocomplete = oldAutocomplete;\n        } else {\n          delete window.autocomplete;\n        }\n        return autocomplete;\n      };\n      module.exports = autocomplete;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var attrsKey = 'aaAttrs';\n      var _ = __webpack_require__(0);\n      var DOM = __webpack_require__(1);\n      var EventBus = __webpack_require__(16);\n      var Input = __webpack_require__(52);\n      var Dropdown = __webpack_require__(59);\n      var html = __webpack_require__(17);\n      var css = __webpack_require__(11);\n      function Typeahead(o) {\n        var $menu;\n        var $hint;\n        o = o || {};\n        if (!o.input) {\n          _.error('missing input');\n        }\n        this.isActivated = false;\n        this.debug = !!o.debug;\n        this.autoselect = !!o.autoselect;\n        this.autoselectOnBlur = !!o.autoselectOnBlur;\n        this.openOnFocus = !!o.openOnFocus;\n        this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n        this.autoWidth = o.autoWidth === undefined ? true : !!o.autoWidth;\n        this.clearOnSelected = !!o.clearOnSelected;\n        this.tabAutocomplete = o.tabAutocomplete === undefined ? true : !!o.tabAutocomplete;\n        o.hint = !!o.hint;\n        if (o.hint && o.appendTo) {\n          throw new Error(\n            \"[autocomplete.js] hint and appendTo options can't be used at the same time\",\n          );\n        }\n        this.css = o.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n        this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n        this.cssClasses.prefix = o.cssClasses.formattedPrefix = _.formatPrefix(\n          this.cssClasses.prefix,\n          this.cssClasses.noPrefix,\n        );\n        this.listboxId = o.listboxId = [this.cssClasses.root, 'listbox', _.getUniqueId()].join('-');\n        var domElts = buildDom(o);\n        this.$node = domElts.wrapper;\n        var $input = (this.$input = domElts.input);\n        $menu = domElts.menu;\n        $hint = domElts.hint;\n        if (o.dropdownMenuContainer) {\n          DOM.element(o.dropdownMenuContainer)\n            .css('position', 'relative')\n            .append($menu.css('top', '0'));\n        }\n        $input.on('blur.aa', function ($e) {\n          var active = document.activeElement;\n          if (_.isMsie() && ($menu[0] === active || $menu[0].contains(active))) {\n            $e.preventDefault();\n            $e.stopImmediatePropagation();\n            _.defer(function () {\n              $input.focus();\n            });\n          }\n        });\n        $menu.on('mousedown.aa', function ($e) {\n          $e.preventDefault();\n        });\n        this.eventBus = o.eventBus || new EventBus({ el: $input });\n        this.dropdown = new Typeahead.Dropdown({\n          appendTo: o.appendTo,\n          wrapper: this.$node,\n          menu: $menu,\n          datasets: o.datasets,\n          templates: o.templates,\n          cssClasses: o.cssClasses,\n          minLength: this.minLength,\n        })\n          .onSync('suggestionClicked', this._onSuggestionClicked, this)\n          .onSync('cursorMoved', this._onCursorMoved, this)\n          .onSync('cursorRemoved', this._onCursorRemoved, this)\n          .onSync('opened', this._onOpened, this)\n          .onSync('closed', this._onClosed, this)\n          .onSync('shown', this._onShown, this)\n          .onSync('empty', this._onEmpty, this)\n          .onSync('redrawn', this._onRedrawn, this)\n          .onAsync('datasetRendered', this._onDatasetRendered, this);\n        this.input = new Typeahead.Input({ input: $input, hint: $hint })\n          .onSync('focused', this._onFocused, this)\n          .onSync('blurred', this._onBlurred, this)\n          .onSync('enterKeyed', this._onEnterKeyed, this)\n          .onSync('tabKeyed', this._onTabKeyed, this)\n          .onSync('escKeyed', this._onEscKeyed, this)\n          .onSync('upKeyed', this._onUpKeyed, this)\n          .onSync('downKeyed', this._onDownKeyed, this)\n          .onSync('leftKeyed', this._onLeftKeyed, this)\n          .onSync('rightKeyed', this._onRightKeyed, this)\n          .onSync('queryChanged', this._onQueryChanged, this)\n          .onSync('whitespaceChanged', this._onWhitespaceChanged, this);\n        this._bindKeyboardShortcuts(o);\n        this._setLanguageDirection();\n      }\n      _.mixin(Typeahead.prototype, {\n        _bindKeyboardShortcuts: function (options) {\n          if (!options.keyboardShortcuts) {\n            return;\n          }\n          var $input = this.$input;\n          var keyboardShortcuts = [];\n          _.each(options.keyboardShortcuts, function (key) {\n            if (typeof key === 'string') {\n              key = key.toUpperCase().charCodeAt(0);\n            }\n            keyboardShortcuts.push(key);\n          });\n          DOM.element(document).keydown(function (event) {\n            var elt = event.target || event.srcElement;\n            var tagName = elt.tagName;\n            if (\n              elt.isContentEditable ||\n              tagName === 'INPUT' ||\n              tagName === 'SELECT' ||\n              tagName === 'TEXTAREA'\n            ) {\n              return;\n            }\n            var which = event.which || event.keyCode;\n            if (keyboardShortcuts.indexOf(which) === -1) {\n              return;\n            }\n            $input.focus();\n            event.stopPropagation();\n            event.preventDefault();\n          });\n        },\n        _onSuggestionClicked: function onSuggestionClicked(type, $el) {\n          var datum;\n          var context = { selectionMethod: 'click' };\n          if ((datum = this.dropdown.getDatumForSuggestion($el))) {\n            this._select(datum, context);\n          }\n        },\n        _onCursorMoved: function onCursorMoved(event, updateInput) {\n          var datum = this.dropdown.getDatumForCursor();\n          var currentCursorId = this.dropdown.getCurrentCursor().attr('id');\n          this.input.setActiveDescendant(currentCursorId);\n          if (datum) {\n            if (updateInput) {\n              this.input.setInputValue(datum.value, true);\n            }\n            this.eventBus.trigger('cursorchanged', datum.raw, datum.datasetName);\n          }\n        },\n        _onCursorRemoved: function onCursorRemoved() {\n          this.input.resetInputValue();\n          this._updateHint();\n          this.eventBus.trigger('cursorremoved');\n        },\n        _onDatasetRendered: function onDatasetRendered() {\n          this._updateHint();\n          this.eventBus.trigger('updated');\n        },\n        _onOpened: function onOpened() {\n          this._updateHint();\n          this.input.expand();\n          this.eventBus.trigger('opened');\n        },\n        _onEmpty: function onEmpty() {\n          this.eventBus.trigger('empty');\n        },\n        _onRedrawn: function onRedrawn() {\n          this.$node.css('top', 0 + 'px');\n          this.$node.css('left', 0 + 'px');\n          var inputRect = this.$input[0].getBoundingClientRect();\n          if (this.autoWidth) {\n            this.$node.css('width', inputRect.width + 'px');\n          }\n          var wrapperRect = this.$node[0].getBoundingClientRect();\n          var top = inputRect.bottom - wrapperRect.top;\n          this.$node.css('top', top + 'px');\n          var left = inputRect.left - wrapperRect.left;\n          this.$node.css('left', left + 'px');\n          this.eventBus.trigger('redrawn');\n        },\n        _onShown: function onShown() {\n          this.eventBus.trigger('shown');\n          if (this.autoselect) {\n            this.dropdown.cursorTopSuggestion();\n          }\n        },\n        _onClosed: function onClosed() {\n          this.input.clearHint();\n          this.input.removeActiveDescendant();\n          this.input.collapse();\n          this.eventBus.trigger('closed');\n        },\n        _onFocused: function onFocused() {\n          this.isActivated = true;\n          if (this.openOnFocus) {\n            var query = this.input.getQuery();\n            if (query.length >= this.minLength) {\n              this.dropdown.update(query);\n            } else {\n              this.dropdown.empty();\n            }\n            this.dropdown.open();\n          }\n        },\n        _onBlurred: function onBlurred() {\n          var cursorDatum;\n          var topSuggestionDatum;\n          cursorDatum = this.dropdown.getDatumForCursor();\n          topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();\n          var context = { selectionMethod: 'blur' };\n          if (!this.debug) {\n            if (this.autoselectOnBlur && cursorDatum) {\n              this._select(cursorDatum, context);\n            } else if (this.autoselectOnBlur && topSuggestionDatum) {\n              this._select(topSuggestionDatum, context);\n            } else {\n              this.isActivated = false;\n              this.dropdown.empty();\n              this.dropdown.close();\n            }\n          }\n        },\n        _onEnterKeyed: function onEnterKeyed(type, $e) {\n          var cursorDatum;\n          var topSuggestionDatum;\n          cursorDatum = this.dropdown.getDatumForCursor();\n          topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();\n          var context = { selectionMethod: 'enterKey' };\n          if (cursorDatum) {\n            this._select(cursorDatum, context);\n            $e.preventDefault();\n          } else if (this.autoselect && topSuggestionDatum) {\n            this._select(topSuggestionDatum, context);\n            $e.preventDefault();\n          }\n        },\n        _onTabKeyed: function onTabKeyed(type, $e) {\n          if (!this.tabAutocomplete) {\n            this.dropdown.close();\n            return;\n          }\n          var datum;\n          var context = { selectionMethod: 'tabKey' };\n          if ((datum = this.dropdown.getDatumForCursor())) {\n            this._select(datum, context);\n            $e.preventDefault();\n          } else {\n            this._autocomplete(true);\n          }\n        },\n        _onEscKeyed: function onEscKeyed() {\n          this.dropdown.close();\n          this.input.resetInputValue();\n        },\n        _onUpKeyed: function onUpKeyed() {\n          var query = this.input.getQuery();\n          if (this.dropdown.isEmpty && query.length >= this.minLength) {\n            this.dropdown.update(query);\n          } else {\n            this.dropdown.moveCursorUp();\n          }\n          this.dropdown.open();\n        },\n        _onDownKeyed: function onDownKeyed() {\n          var query = this.input.getQuery();\n          if (this.dropdown.isEmpty && query.length >= this.minLength) {\n            this.dropdown.update(query);\n          } else {\n            this.dropdown.moveCursorDown();\n          }\n          this.dropdown.open();\n        },\n        _onLeftKeyed: function onLeftKeyed() {\n          if (this.dir === 'rtl') {\n            this._autocomplete();\n          }\n        },\n        _onRightKeyed: function onRightKeyed() {\n          if (this.dir === 'ltr') {\n            this._autocomplete();\n          }\n        },\n        _onQueryChanged: function onQueryChanged(e, query) {\n          this.input.clearHintIfInvalid();\n          if (query.length >= this.minLength) {\n            this.dropdown.update(query);\n          } else {\n            this.dropdown.empty();\n          }\n          this.dropdown.open();\n          this._setLanguageDirection();\n        },\n        _onWhitespaceChanged: function onWhitespaceChanged() {\n          this._updateHint();\n          this.dropdown.open();\n        },\n        _setLanguageDirection: function setLanguageDirection() {\n          var dir = this.input.getLanguageDirection();\n          if (this.dir !== dir) {\n            this.dir = dir;\n            this.$node.css('direction', dir);\n            this.dropdown.setLanguageDirection(dir);\n          }\n        },\n        _updateHint: function updateHint() {\n          var datum;\n          var val;\n          var query;\n          var escapedQuery;\n          var frontMatchRegEx;\n          var match;\n          datum = this.dropdown.getDatumForTopSuggestion();\n          if (datum && this.dropdown.isVisible() && !this.input.hasOverflow()) {\n            val = this.input.getInputValue();\n            query = Input.normalizeQuery(val);\n            escapedQuery = _.escapeRegExChars(query);\n            frontMatchRegEx = new RegExp('^(?:' + escapedQuery + ')(.+$)', 'i');\n            match = frontMatchRegEx.exec(datum.value);\n            if (match) {\n              this.input.setHint(val + match[1]);\n            } else {\n              this.input.clearHint();\n            }\n          } else {\n            this.input.clearHint();\n          }\n        },\n        _autocomplete: function autocomplete(laxCursor) {\n          var hint;\n          var query;\n          var isCursorAtEnd;\n          var datum;\n          hint = this.input.getHint();\n          query = this.input.getQuery();\n          isCursorAtEnd = laxCursor || this.input.isCursorAtEnd();\n          if (hint && query !== hint && isCursorAtEnd) {\n            datum = this.dropdown.getDatumForTopSuggestion();\n            if (datum) {\n              this.input.setInputValue(datum.value);\n            }\n            this.eventBus.trigger('autocompleted', datum.raw, datum.datasetName);\n          }\n        },\n        _select: function select(datum, context) {\n          if (typeof datum.value !== 'undefined') {\n            this.input.setQuery(datum.value);\n          }\n          if (this.clearOnSelected) {\n            this.setVal('');\n          } else {\n            this.input.setInputValue(datum.value, true);\n          }\n          this._setLanguageDirection();\n          var event = this.eventBus.trigger('selected', datum.raw, datum.datasetName, context);\n          if (event.isDefaultPrevented() === false) {\n            this.dropdown.close();\n            _.defer(_.bind(this.dropdown.empty, this.dropdown));\n          }\n        },\n        open: function open() {\n          if (!this.isActivated) {\n            var query = this.input.getInputValue();\n            if (query.length >= this.minLength) {\n              this.dropdown.update(query);\n            } else {\n              this.dropdown.empty();\n            }\n          }\n          this.dropdown.open();\n        },\n        close: function close() {\n          this.dropdown.close();\n        },\n        setVal: function setVal(val) {\n          val = _.toStr(val);\n          if (this.isActivated) {\n            this.input.setInputValue(val);\n          } else {\n            this.input.setQuery(val);\n            this.input.setInputValue(val, true);\n          }\n          this._setLanguageDirection();\n        },\n        getVal: function getVal() {\n          return this.input.getQuery();\n        },\n        destroy: function destroy() {\n          this.input.destroy();\n          this.dropdown.destroy();\n          destroyDomStructure(this.$node, this.cssClasses);\n          this.$node = null;\n        },\n        getWrapper: function getWrapper() {\n          return this.dropdown.$container[0];\n        },\n      });\n      function buildDom(options) {\n        var $input;\n        var $wrapper;\n        var $dropdown;\n        var $hint;\n        $input = DOM.element(options.input);\n        $wrapper = DOM.element(html.wrapper.replace('%ROOT%', options.cssClasses.root)).css(\n          options.css.wrapper,\n        );\n        if (\n          !options.appendTo &&\n          $input.css('display') === 'block' &&\n          $input.parent().css('display') === 'table'\n        ) {\n          $wrapper.css('display', 'table-cell');\n        }\n        var dropdownHtml = html.dropdown\n          .replace('%PREFIX%', options.cssClasses.prefix)\n          .replace('%DROPDOWN_MENU%', options.cssClasses.dropdownMenu);\n        $dropdown = DOM.element(dropdownHtml)\n          .css(options.css.dropdown)\n          .attr({ role: 'listbox', id: options.listboxId });\n        if (options.templates && options.templates.dropdownMenu) {\n          $dropdown.html(_.templatify(options.templates.dropdownMenu)());\n        }\n        $hint = $input.clone().css(options.css.hint).css(getBackgroundStyles($input));\n        $hint\n          .val('')\n          .addClass(_.className(options.cssClasses.prefix, options.cssClasses.hint, true))\n          .removeAttr('id name placeholder required')\n          .prop('readonly', true)\n          .attr({ 'aria-hidden': 'true', autocomplete: 'off', spellcheck: 'false', tabindex: -1 });\n        if ($hint.removeData) {\n          $hint.removeData();\n        }\n        $input.data(attrsKey, {\n          'aria-autocomplete': $input.attr('aria-autocomplete'),\n          'aria-expanded': $input.attr('aria-expanded'),\n          'aria-owns': $input.attr('aria-owns'),\n          autocomplete: $input.attr('autocomplete'),\n          dir: $input.attr('dir'),\n          role: $input.attr('role'),\n          spellcheck: $input.attr('spellcheck'),\n          style: $input.attr('style'),\n          type: $input.attr('type'),\n        });\n        $input\n          .addClass(_.className(options.cssClasses.prefix, options.cssClasses.input, true))\n          .attr({\n            autocomplete: 'off',\n            spellcheck: false,\n            role: 'combobox',\n            'aria-autocomplete':\n              options.datasets && options.datasets[0] && options.datasets[0].displayKey\n                ? 'both'\n                : 'list',\n            'aria-expanded': 'false',\n            'aria-label': options.ariaLabel,\n            'aria-owns': options.listboxId,\n          })\n          .css(options.hint ? options.css.input : options.css.inputWithNoHint);\n        try {\n          if (!$input.attr('dir')) {\n            $input.attr('dir', 'auto');\n          }\n        } catch (e) {}\n        $wrapper = options.appendTo\n          ? $wrapper.appendTo(DOM.element(options.appendTo).eq(0)).eq(0)\n          : $input.wrap($wrapper).parent();\n        $wrapper.prepend(options.hint ? $hint : null).append($dropdown);\n        return { wrapper: $wrapper, input: $input, hint: $hint, menu: $dropdown };\n      }\n      function getBackgroundStyles($el) {\n        return {\n          backgroundAttachment: $el.css('background-attachment'),\n          backgroundClip: $el.css('background-clip'),\n          backgroundColor: $el.css('background-color'),\n          backgroundImage: $el.css('background-image'),\n          backgroundOrigin: $el.css('background-origin'),\n          backgroundPosition: $el.css('background-position'),\n          backgroundRepeat: $el.css('background-repeat'),\n          backgroundSize: $el.css('background-size'),\n        };\n      }\n      function destroyDomStructure($node, cssClasses) {\n        var $input = $node.find(_.className(cssClasses.prefix, cssClasses.input));\n        _.each($input.data(attrsKey), function (val, key) {\n          if (val === undefined) {\n            $input.removeAttr(key);\n          } else {\n            $input.attr(key, val);\n          }\n        });\n        $input\n          .detach()\n          .removeClass(_.className(cssClasses.prefix, cssClasses.input, true))\n          .insertAfter($node);\n        if ($input.removeData) {\n          $input.removeData(attrsKey);\n        }\n        $node.remove();\n      }\n      Typeahead.Dropdown = Dropdown;\n      Typeahead.Input = Input;\n      Typeahead.sources = __webpack_require__(61);\n      module.exports = Typeahead;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var specialKeyCodeMap;\n      specialKeyCodeMap = {\n        9: 'tab',\n        27: 'esc',\n        37: 'left',\n        39: 'right',\n        13: 'enter',\n        38: 'up',\n        40: 'down',\n      };\n      var _ = __webpack_require__(0);\n      var DOM = __webpack_require__(1);\n      var EventEmitter = __webpack_require__(10);\n      function Input(o) {\n        var that = this;\n        var onBlur;\n        var onFocus;\n        var onKeydown;\n        var onInput;\n        o = o || {};\n        if (!o.input) {\n          _.error('input is missing');\n        }\n        onBlur = _.bind(this._onBlur, this);\n        onFocus = _.bind(this._onFocus, this);\n        onKeydown = _.bind(this._onKeydown, this);\n        onInput = _.bind(this._onInput, this);\n        this.$hint = DOM.element(o.hint);\n        this.$input = DOM.element(o.input)\n          .on('blur.aa', onBlur)\n          .on('focus.aa', onFocus)\n          .on('keydown.aa', onKeydown);\n        if (this.$hint.length === 0) {\n          this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n        }\n        if (!_.isMsie()) {\n          this.$input.on('input.aa', onInput);\n        } else {\n          this.$input.on('keydown.aa keypress.aa cut.aa paste.aa', function ($e) {\n            if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n              return;\n            }\n            _.defer(_.bind(that._onInput, that, $e));\n          });\n        }\n        this.query = this.$input.val();\n        this.$overflowHelper = buildOverflowHelper(this.$input);\n      }\n      Input.normalizeQuery = function (str) {\n        return (str || '').replace(/^\\s*/g, '').replace(/\\s{2,}/g, ' ');\n      };\n      _.mixin(Input.prototype, EventEmitter, {\n        _onBlur: function onBlur() {\n          this.resetInputValue();\n          this.$input.removeAttr('aria-activedescendant');\n          this.trigger('blurred');\n        },\n        _onFocus: function onFocus() {\n          this.trigger('focused');\n        },\n        _onKeydown: function onKeydown($e) {\n          var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n          this._managePreventDefault(keyName, $e);\n          if (keyName && this._shouldTrigger(keyName, $e)) {\n            this.trigger(keyName + 'Keyed', $e);\n          }\n        },\n        _onInput: function onInput() {\n          this._checkInputValue();\n        },\n        _managePreventDefault: function managePreventDefault(keyName, $e) {\n          var preventDefault;\n          var hintValue;\n          var inputValue;\n          switch (keyName) {\n            case 'tab':\n              hintValue = this.getHint();\n              inputValue = this.getInputValue();\n              preventDefault = hintValue && hintValue !== inputValue && !withModifier($e);\n              break;\n            case 'up':\n            case 'down':\n              preventDefault = !withModifier($e);\n              break;\n            default:\n              preventDefault = false;\n          }\n          if (preventDefault) {\n            $e.preventDefault();\n          }\n        },\n        _shouldTrigger: function shouldTrigger(keyName, $e) {\n          var trigger;\n          switch (keyName) {\n            case 'tab':\n              trigger = !withModifier($e);\n              break;\n            default:\n              trigger = true;\n          }\n          return trigger;\n        },\n        _checkInputValue: function checkInputValue() {\n          var inputValue;\n          var areEquivalent;\n          var hasDifferentWhitespace;\n          inputValue = this.getInputValue();\n          areEquivalent = areQueriesEquivalent(inputValue, this.query);\n          hasDifferentWhitespace =\n            areEquivalent && this.query ? this.query.length !== inputValue.length : false;\n          this.query = inputValue;\n          if (!areEquivalent) {\n            this.trigger('queryChanged', this.query);\n          } else if (hasDifferentWhitespace) {\n            this.trigger('whitespaceChanged', this.query);\n          }\n        },\n        focus: function focus() {\n          this.$input.focus();\n        },\n        blur: function blur() {\n          this.$input.blur();\n        },\n        getQuery: function getQuery() {\n          return this.query;\n        },\n        setQuery: function setQuery(query) {\n          this.query = query;\n        },\n        getInputValue: function getInputValue() {\n          return this.$input.val();\n        },\n        setInputValue: function setInputValue(value, silent) {\n          if (typeof value === 'undefined') {\n            value = this.query;\n          }\n          this.$input.val(value);\n          if (silent) {\n            this.clearHint();\n          } else {\n            this._checkInputValue();\n          }\n        },\n        expand: function expand() {\n          this.$input.attr('aria-expanded', 'true');\n        },\n        collapse: function collapse() {\n          this.$input.attr('aria-expanded', 'false');\n        },\n        setActiveDescendant: function setActiveDescendant(activedescendantId) {\n          this.$input.attr('aria-activedescendant', activedescendantId);\n        },\n        removeActiveDescendant: function removeActiveDescendant() {\n          this.$input.removeAttr('aria-activedescendant');\n        },\n        resetInputValue: function resetInputValue() {\n          this.setInputValue(this.query, true);\n        },\n        getHint: function getHint() {\n          return this.$hint.val();\n        },\n        setHint: function setHint(value) {\n          this.$hint.val(value);\n        },\n        clearHint: function clearHint() {\n          this.setHint('');\n        },\n        clearHintIfInvalid: function clearHintIfInvalid() {\n          var val;\n          var hint;\n          var valIsPrefixOfHint;\n          var isValid;\n          val = this.getInputValue();\n          hint = this.getHint();\n          valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n          isValid = val !== '' && valIsPrefixOfHint && !this.hasOverflow();\n          if (!isValid) {\n            this.clearHint();\n          }\n        },\n        getLanguageDirection: function getLanguageDirection() {\n          return (this.$input.css('direction') || 'ltr').toLowerCase();\n        },\n        hasOverflow: function hasOverflow() {\n          var constraint = this.$input.width() - 2;\n          this.$overflowHelper.text(this.getInputValue());\n          return this.$overflowHelper.width() >= constraint;\n        },\n        isCursorAtEnd: function () {\n          var valueLength;\n          var selectionStart;\n          var range;\n          valueLength = this.$input.val().length;\n          selectionStart = this.$input[0].selectionStart;\n          if (_.isNumber(selectionStart)) {\n            return selectionStart === valueLength;\n          } else if (document.selection) {\n            range = document.selection.createRange();\n            range.moveStart('character', -valueLength);\n            return valueLength === range.text.length;\n          }\n          return true;\n        },\n        destroy: function destroy() {\n          this.$hint.off('.aa');\n          this.$input.off('.aa');\n          this.$hint = this.$input = this.$overflowHelper = null;\n        },\n      });\n      function buildOverflowHelper($input) {\n        return DOM.element('<pre aria-hidden=\"true\"></pre>')\n          .css({\n            position: 'absolute',\n            visibility: 'hidden',\n            whiteSpace: 'pre',\n            fontFamily: $input.css('font-family'),\n            fontSize: $input.css('font-size'),\n            fontStyle: $input.css('font-style'),\n            fontVariant: $input.css('font-variant'),\n            fontWeight: $input.css('font-weight'),\n            wordSpacing: $input.css('word-spacing'),\n            letterSpacing: $input.css('letter-spacing'),\n            textIndent: $input.css('text-indent'),\n            textRendering: $input.css('text-rendering'),\n            textTransform: $input.css('text-transform'),\n          })\n          .insertAfter($input);\n      }\n      function areQueriesEquivalent(a, b) {\n        return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n      }\n      function withModifier($e) {\n        return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n      }\n      module.exports = Input;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var types = [\n        __webpack_require__(54),\n        __webpack_require__(55),\n        __webpack_require__(56),\n        __webpack_require__(57),\n        __webpack_require__(58),\n      ];\n      var draining;\n      var currentQueue;\n      var queueIndex = -1;\n      var queue = [];\n      var scheduled = false;\n      function cleanUpNextTick() {\n        if (!draining || !currentQueue) {\n          return;\n        }\n        draining = false;\n        if (currentQueue.length) {\n          queue = currentQueue.concat(queue);\n        } else {\n          queueIndex = -1;\n        }\n        if (queue.length) {\n          nextTick();\n        }\n      }\n      function nextTick() {\n        if (draining) {\n          return;\n        }\n        scheduled = false;\n        draining = true;\n        var len = queue.length;\n        var timeout = setTimeout(cleanUpNextTick);\n        while (len) {\n          currentQueue = queue;\n          queue = [];\n          while (currentQueue && ++queueIndex < len) {\n            currentQueue[queueIndex].run();\n          }\n          queueIndex = -1;\n          len = queue.length;\n        }\n        currentQueue = null;\n        queueIndex = -1;\n        draining = false;\n        clearTimeout(timeout);\n      }\n      var scheduleDrain;\n      var i = -1;\n      var len = types.length;\n      while (++i < len) {\n        if (types[i] && types[i].test && types[i].test()) {\n          scheduleDrain = types[i].install(nextTick);\n          break;\n        }\n      }\n      function Item(fun, array) {\n        this.fun = fun;\n        this.array = array;\n      }\n      Item.prototype.run = function () {\n        var fun = this.fun;\n        var array = this.array;\n        switch (array.length) {\n          case 0:\n            return fun();\n          case 1:\n            return fun(array[0]);\n          case 2:\n            return fun(array[0], array[1]);\n          case 3:\n            return fun(array[0], array[1], array[2]);\n          default:\n            return fun.apply(null, array);\n        }\n      };\n      module.exports = immediate;\n      function immediate(task) {\n        var args = new Array(arguments.length - 1);\n        if (arguments.length > 1) {\n          for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n          }\n        }\n        queue.push(new Item(task, args));\n        if (!scheduled && !draining) {\n          scheduled = true;\n          scheduleDrain();\n        }\n      }\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      (function (process) {\n        exports.test = function () {\n          return typeof process !== 'undefined' && !process.browser;\n        };\n        exports.install = function (func) {\n          return function () {\n            process.nextTick(func);\n          };\n        };\n      }).call(exports, __webpack_require__(9));\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      (function (global) {\n        var Mutation = global.MutationObserver || global.WebKitMutationObserver;\n        exports.test = function () {\n          return Mutation;\n        };\n        exports.install = function (handle) {\n          var called = 0;\n          var observer = new Mutation(handle);\n          var element = global.document.createTextNode('');\n          observer.observe(element, { characterData: true });\n          return function () {\n            element.data = called = ++called % 2;\n          };\n        };\n      }).call(exports, __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      (function (global) {\n        exports.test = function () {\n          if (global.setImmediate) {\n            return false;\n          }\n          return typeof global.MessageChannel !== 'undefined';\n        };\n        exports.install = function (func) {\n          var channel = new global.MessageChannel();\n          channel.port1.onmessage = func;\n          return function () {\n            channel.port2.postMessage(0);\n          };\n        };\n      }).call(exports, __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      (function (global) {\n        exports.test = function () {\n          return (\n            'document' in global && 'onreadystatechange' in global.document.createElement('script')\n          );\n        };\n        exports.install = function (handle) {\n          return function () {\n            var scriptEl = global.document.createElement('script');\n            scriptEl.onreadystatechange = function () {\n              handle();\n              scriptEl.onreadystatechange = null;\n              scriptEl.parentNode.removeChild(scriptEl);\n              scriptEl = null;\n            };\n            global.document.documentElement.appendChild(scriptEl);\n            return handle;\n          };\n        };\n      }).call(exports, __webpack_require__(4));\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      exports.test = function () {\n        return true;\n      };\n      exports.install = function (t) {\n        return function () {\n          setTimeout(t, 0);\n        };\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _ = __webpack_require__(0);\n      var DOM = __webpack_require__(1);\n      var EventEmitter = __webpack_require__(10);\n      var Dataset = __webpack_require__(60);\n      var css = __webpack_require__(11);\n      function Dropdown(o) {\n        var that = this;\n        var onSuggestionClick;\n        var onSuggestionMouseEnter;\n        var onSuggestionMouseLeave;\n        o = o || {};\n        if (!o.menu) {\n          _.error('menu is required');\n        }\n        if (!_.isArray(o.datasets) && !_.isObject(o.datasets)) {\n          _.error('1 or more datasets required');\n        }\n        if (!o.datasets) {\n          _.error('datasets is required');\n        }\n        this.isOpen = false;\n        this.isEmpty = true;\n        this.minLength = o.minLength || 0;\n        this.templates = {};\n        this.appendTo = o.appendTo || false;\n        this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n        this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n        this.cssClasses.prefix =\n          o.cssClasses.formattedPrefix ||\n          _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);\n        onSuggestionClick = _.bind(this._onSuggestionClick, this);\n        onSuggestionMouseEnter = _.bind(this._onSuggestionMouseEnter, this);\n        onSuggestionMouseLeave = _.bind(this._onSuggestionMouseLeave, this);\n        var cssClass = _.className(this.cssClasses.prefix, this.cssClasses.suggestion);\n        this.$menu = DOM.element(o.menu)\n          .on('mouseenter.aa', cssClass, onSuggestionMouseEnter)\n          .on('mouseleave.aa', cssClass, onSuggestionMouseLeave)\n          .on('click.aa', cssClass, onSuggestionClick);\n        this.$container = o.appendTo ? o.wrapper : this.$menu;\n        if (o.templates && o.templates.header) {\n          this.templates.header = _.templatify(o.templates.header);\n          this.$menu.prepend(this.templates.header());\n        }\n        if (o.templates && o.templates.empty) {\n          this.templates.empty = _.templatify(o.templates.empty);\n          this.$empty = DOM.element(\n            '<div class=\"' +\n              _.className(this.cssClasses.prefix, this.cssClasses.empty, true) +\n              '\">' +\n              '</div>',\n          );\n          this.$menu.append(this.$empty);\n          this.$empty.hide();\n        }\n        this.datasets = _.map(o.datasets, function (oDataset) {\n          return initializeDataset(that.$menu, oDataset, o.cssClasses);\n        });\n        _.each(this.datasets, function (dataset) {\n          var root = dataset.getRoot();\n          if (root && root.parent().length === 0) {\n            that.$menu.append(root);\n          }\n          dataset.onSync('rendered', that._onRendered, that);\n        });\n        if (o.templates && o.templates.footer) {\n          this.templates.footer = _.templatify(o.templates.footer);\n          this.$menu.append(this.templates.footer());\n        }\n        var self = this;\n        DOM.element(window).resize(function () {\n          self._redraw();\n        });\n      }\n      _.mixin(Dropdown.prototype, EventEmitter, {\n        _onSuggestionClick: function onSuggestionClick($e) {\n          this.trigger('suggestionClicked', DOM.element($e.currentTarget));\n        },\n        _onSuggestionMouseEnter: function onSuggestionMouseEnter($e) {\n          var elt = DOM.element($e.currentTarget);\n          if (elt.hasClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))) {\n            return;\n          }\n          this._removeCursor();\n          var suggestion = this;\n          setTimeout(function () {\n            suggestion._setCursor(elt, false);\n          }, 0);\n        },\n        _onSuggestionMouseLeave: function onSuggestionMouseLeave($e) {\n          if ($e.relatedTarget) {\n            var elt = DOM.element($e.relatedTarget);\n            if (\n              elt.closest('.' + _.className(this.cssClasses.prefix, this.cssClasses.cursor, true))\n                .length > 0\n            ) {\n              return;\n            }\n          }\n          this._removeCursor();\n          this.trigger('cursorRemoved');\n        },\n        _onRendered: function onRendered(e, query) {\n          this.isEmpty = _.every(this.datasets, isDatasetEmpty);\n          if (this.isEmpty) {\n            if (query.length >= this.minLength) {\n              this.trigger('empty');\n            }\n            if (this.$empty) {\n              if (query.length < this.minLength) {\n                this._hide();\n              } else {\n                var html = this.templates.empty({\n                  query: this.datasets[0] && this.datasets[0].query,\n                });\n                this.$empty.html(html);\n                this.$empty.show();\n                this._show();\n              }\n            } else if (_.any(this.datasets, hasEmptyTemplate)) {\n              if (query.length < this.minLength) {\n                this._hide();\n              } else {\n                this._show();\n              }\n            } else {\n              this._hide();\n            }\n          } else if (this.isOpen) {\n            if (this.$empty) {\n              this.$empty.empty();\n              this.$empty.hide();\n            }\n            if (query.length >= this.minLength) {\n              this._show();\n            } else {\n              this._hide();\n            }\n          }\n          this.trigger('datasetRendered');\n          function isDatasetEmpty(dataset) {\n            return dataset.isEmpty();\n          }\n          function hasEmptyTemplate(dataset) {\n            return dataset.templates && dataset.templates.empty;\n          }\n        },\n        _hide: function () {\n          this.$container.hide();\n        },\n        _show: function () {\n          this.$container.css('display', 'block');\n          this._redraw();\n          this.trigger('shown');\n        },\n        _redraw: function redraw() {\n          if (!this.isOpen || !this.appendTo) return;\n          this.trigger('redrawn');\n        },\n        _getSuggestions: function getSuggestions() {\n          return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.suggestion));\n        },\n        _getCursor: function getCursor() {\n          return this.$menu\n            .find(_.className(this.cssClasses.prefix, this.cssClasses.cursor))\n            .first();\n        },\n        _setCursor: function setCursor($el, updateInput) {\n          $el\n            .first()\n            .addClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))\n            .attr('aria-selected', 'true');\n          this.trigger('cursorMoved', updateInput);\n        },\n        _removeCursor: function removeCursor() {\n          this._getCursor()\n            .removeClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))\n            .removeAttr('aria-selected');\n        },\n        _moveCursor: function moveCursor(increment) {\n          var $suggestions;\n          var $oldCursor;\n          var newCursorIndex;\n          var $newCursor;\n          if (!this.isOpen) {\n            return;\n          }\n          $oldCursor = this._getCursor();\n          $suggestions = this._getSuggestions();\n          this._removeCursor();\n          newCursorIndex = $suggestions.index($oldCursor) + increment;\n          newCursorIndex = ((newCursorIndex + 1) % ($suggestions.length + 1)) - 1;\n          if (newCursorIndex === -1) {\n            this.trigger('cursorRemoved');\n            return;\n          } else if (newCursorIndex < -1) {\n            newCursorIndex = $suggestions.length - 1;\n          }\n          this._setCursor(($newCursor = $suggestions.eq(newCursorIndex)), true);\n          this._ensureVisible($newCursor);\n        },\n        _ensureVisible: function ensureVisible($el) {\n          var elTop;\n          var elBottom;\n          var menuScrollTop;\n          var menuHeight;\n          elTop = $el.position().top;\n          elBottom =\n            elTop +\n            $el.height() +\n            parseInt($el.css('margin-top'), 10) +\n            parseInt($el.css('margin-bottom'), 10);\n          menuScrollTop = this.$menu.scrollTop();\n          menuHeight =\n            this.$menu.height() +\n            parseInt(this.$menu.css('padding-top'), 10) +\n            parseInt(this.$menu.css('padding-bottom'), 10);\n          if (elTop < 0) {\n            this.$menu.scrollTop(menuScrollTop + elTop);\n          } else if (menuHeight < elBottom) {\n            this.$menu.scrollTop(menuScrollTop + (elBottom - menuHeight));\n          }\n        },\n        close: function close() {\n          if (this.isOpen) {\n            this.isOpen = false;\n            this._removeCursor();\n            this._hide();\n            this.trigger('closed');\n          }\n        },\n        open: function open() {\n          if (!this.isOpen) {\n            this.isOpen = true;\n            if (!this.isEmpty) {\n              this._show();\n            }\n            this.trigger('opened');\n          }\n        },\n        setLanguageDirection: function setLanguageDirection(dir) {\n          this.$menu.css(dir === 'ltr' ? this.css.ltr : this.css.rtl);\n        },\n        moveCursorUp: function moveCursorUp() {\n          this._moveCursor(-1);\n        },\n        moveCursorDown: function moveCursorDown() {\n          this._moveCursor(+1);\n        },\n        getDatumForSuggestion: function getDatumForSuggestion($el) {\n          var datum = null;\n          if ($el.length) {\n            datum = {\n              raw: Dataset.extractDatum($el),\n              value: Dataset.extractValue($el),\n              datasetName: Dataset.extractDatasetName($el),\n            };\n          }\n          return datum;\n        },\n        getCurrentCursor: function getCurrentCursor() {\n          return this._getCursor().first();\n        },\n        getDatumForCursor: function getDatumForCursor() {\n          return this.getDatumForSuggestion(this._getCursor().first());\n        },\n        getDatumForTopSuggestion: function getDatumForTopSuggestion() {\n          return this.getDatumForSuggestion(this._getSuggestions().first());\n        },\n        cursorTopSuggestion: function cursorTopSuggestion() {\n          this._setCursor(this._getSuggestions().first(), false);\n        },\n        update: function update(query) {\n          _.each(this.datasets, updateDataset);\n          function updateDataset(dataset) {\n            dataset.update(query);\n          }\n        },\n        empty: function empty() {\n          _.each(this.datasets, clearDataset);\n          this.isEmpty = true;\n          function clearDataset(dataset) {\n            dataset.clear();\n          }\n        },\n        isVisible: function isVisible() {\n          return this.isOpen && !this.isEmpty;\n        },\n        destroy: function destroy() {\n          this.$menu.off('.aa');\n          this.$menu = null;\n          _.each(this.datasets, destroyDataset);\n          function destroyDataset(dataset) {\n            dataset.destroy();\n          }\n        },\n      });\n      Dropdown.Dataset = Dataset;\n      function initializeDataset($menu, oDataset, cssClasses) {\n        return new Dropdown.Dataset(_.mixin({ $menu: $menu, cssClasses: cssClasses }, oDataset));\n      }\n      module.exports = Dropdown;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var datasetKey = 'aaDataset';\n      var valueKey = 'aaValue';\n      var datumKey = 'aaDatum';\n      var _ = __webpack_require__(0);\n      var DOM = __webpack_require__(1);\n      var html = __webpack_require__(17);\n      var css = __webpack_require__(11);\n      var EventEmitter = __webpack_require__(10);\n      function Dataset(o) {\n        o = o || {};\n        o.templates = o.templates || {};\n        if (!o.source) {\n          _.error('missing source');\n        }\n        if (o.name && !isValidName(o.name)) {\n          _.error('invalid dataset name: ' + o.name);\n        }\n        this.query = null;\n        this._isEmpty = true;\n        this.highlight = !!o.highlight;\n        this.name = typeof o.name === 'undefined' || o.name === null ? _.getUniqueId() : o.name;\n        this.source = o.source;\n        this.displayFn = getDisplayFn(o.display || o.displayKey);\n        this.debounce = o.debounce;\n        this.cache = o.cache !== false;\n        this.templates = getTemplates(o.templates, this.displayFn);\n        this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});\n        this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});\n        this.cssClasses.prefix =\n          o.cssClasses.formattedPrefix ||\n          _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);\n        var clazz = _.className(this.cssClasses.prefix, this.cssClasses.dataset);\n        this.$el =\n          o.$menu && o.$menu.find(clazz + '-' + this.name).length > 0\n            ? DOM.element(o.$menu.find(clazz + '-' + this.name)[0])\n            : DOM.element(\n                html.dataset\n                  .replace('%CLASS%', this.name)\n                  .replace('%PREFIX%', this.cssClasses.prefix)\n                  .replace('%DATASET%', this.cssClasses.dataset),\n              );\n        this.$menu = o.$menu;\n        this.clearCachedSuggestions();\n      }\n      Dataset.extractDatasetName = function extractDatasetName(el) {\n        return DOM.element(el).data(datasetKey);\n      };\n      Dataset.extractValue = function extractValue(el) {\n        return DOM.element(el).data(valueKey);\n      };\n      Dataset.extractDatum = function extractDatum(el) {\n        var datum = DOM.element(el).data(datumKey);\n        if (typeof datum === 'string') {\n          datum = JSON.parse(datum);\n        }\n        return datum;\n      };\n      _.mixin(Dataset.prototype, EventEmitter, {\n        _render: function render(query, suggestions) {\n          if (!this.$el) {\n            return;\n          }\n          var that = this;\n          var hasSuggestions;\n          var renderArgs = [].slice.call(arguments, 2);\n          this.$el.empty();\n          hasSuggestions = suggestions && suggestions.length;\n          this._isEmpty = !hasSuggestions;\n          if (!hasSuggestions && this.templates.empty) {\n            this.$el\n              .html(getEmptyHtml.apply(this, renderArgs))\n              .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)\n              .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);\n          } else if (hasSuggestions) {\n            this.$el\n              .html(getSuggestionsHtml.apply(this, renderArgs))\n              .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)\n              .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);\n          } else if (suggestions && !Array.isArray(suggestions)) {\n            throw new TypeError('suggestions must be an array');\n          }\n          if (this.$menu) {\n            this.$menu\n              .addClass(\n                this.cssClasses.prefix + (hasSuggestions ? 'with' : 'without') + '-' + this.name,\n              )\n              .removeClass(\n                this.cssClasses.prefix + (hasSuggestions ? 'without' : 'with') + '-' + this.name,\n              );\n          }\n          this.trigger('rendered', query);\n          function getEmptyHtml() {\n            var args = [].slice.call(arguments, 0);\n            args = [{ query: query, isEmpty: true }].concat(args);\n            return that.templates.empty.apply(this, args);\n          }\n          function getSuggestionsHtml() {\n            var args = [].slice.call(arguments, 0);\n            var $suggestions;\n            var nodes;\n            var self = this;\n            var suggestionsHtml = html.suggestions\n              .replace('%PREFIX%', this.cssClasses.prefix)\n              .replace('%SUGGESTIONS%', this.cssClasses.suggestions);\n            $suggestions = DOM.element(suggestionsHtml).css(this.css.suggestions);\n            nodes = _.map(suggestions, getSuggestionNode);\n            $suggestions.append.apply($suggestions, nodes);\n            return $suggestions;\n            function getSuggestionNode(suggestion) {\n              var $el;\n              var suggestionHtml = html.suggestion\n                .replace('%PREFIX%', self.cssClasses.prefix)\n                .replace('%SUGGESTION%', self.cssClasses.suggestion);\n              $el = DOM.element(suggestionHtml)\n                .attr({ role: 'option', id: ['option', Math.floor(Math.random() * 1e8)].join('-') })\n                .append(that.templates.suggestion.apply(this, [suggestion].concat(args)));\n              $el.data(datasetKey, that.name);\n              $el.data(valueKey, that.displayFn(suggestion) || undefined);\n              $el.data(datumKey, JSON.stringify(suggestion));\n              $el.children().each(function () {\n                DOM.element(this).css(self.css.suggestionChild);\n              });\n              return $el;\n            }\n          }\n          function getHeaderHtml() {\n            var args = [].slice.call(arguments, 0);\n            args = [{ query: query, isEmpty: !hasSuggestions }].concat(args);\n            return that.templates.header.apply(this, args);\n          }\n          function getFooterHtml() {\n            var args = [].slice.call(arguments, 0);\n            args = [{ query: query, isEmpty: !hasSuggestions }].concat(args);\n            return that.templates.footer.apply(this, args);\n          }\n        },\n        getRoot: function getRoot() {\n          return this.$el;\n        },\n        update: function update(query) {\n          function handleSuggestions(suggestions) {\n            if (!this.canceled && query === this.query) {\n              var extraArgs = [].slice.call(arguments, 1);\n              this.cacheSuggestions(query, suggestions, extraArgs);\n              this._render.apply(this, [query, suggestions].concat(extraArgs));\n            }\n          }\n          this.query = query;\n          this.canceled = false;\n          if (this.shouldFetchFromCache(query)) {\n            handleSuggestions.apply(\n              this,\n              [this.cachedSuggestions].concat(this.cachedRenderExtraArgs),\n            );\n          } else {\n            var that = this;\n            var execSource = function () {\n              if (!that.canceled) {\n                that.source(query, handleSuggestions.bind(that));\n              }\n            };\n            if (this.debounce) {\n              var later = function () {\n                that.debounceTimeout = null;\n                execSource();\n              };\n              clearTimeout(this.debounceTimeout);\n              this.debounceTimeout = setTimeout(later, this.debounce);\n            } else {\n              execSource();\n            }\n          }\n        },\n        cacheSuggestions: function cacheSuggestions(query, suggestions, extraArgs) {\n          this.cachedQuery = query;\n          this.cachedSuggestions = suggestions;\n          this.cachedRenderExtraArgs = extraArgs;\n        },\n        shouldFetchFromCache: function shouldFetchFromCache(query) {\n          return (\n            this.cache &&\n            this.cachedQuery === query &&\n            this.cachedSuggestions &&\n            this.cachedSuggestions.length\n          );\n        },\n        clearCachedSuggestions: function clearCachedSuggestions() {\n          delete this.cachedQuery;\n          delete this.cachedSuggestions;\n          delete this.cachedRenderExtraArgs;\n        },\n        cancel: function cancel() {\n          this.canceled = true;\n        },\n        clear: function clear() {\n          this.cancel();\n          this.$el.empty();\n          this.trigger('rendered', '');\n        },\n        isEmpty: function isEmpty() {\n          return this._isEmpty;\n        },\n        destroy: function destroy() {\n          this.clearCachedSuggestions();\n          this.$el = null;\n        },\n      });\n      function getDisplayFn(display) {\n        display = display || 'value';\n        return _.isFunction(display) ? display : displayFn;\n        function displayFn(obj) {\n          return obj[display];\n        }\n      }\n      function getTemplates(templates, displayFn) {\n        return {\n          empty: templates.empty && _.templatify(templates.empty),\n          header: templates.header && _.templatify(templates.header),\n          footer: templates.footer && _.templatify(templates.footer),\n          suggestion: templates.suggestion || suggestionTemplate,\n        };\n        function suggestionTemplate(context) {\n          return '<p>' + displayFn(context) + '</p>';\n        }\n      }\n      function isValidName(str) {\n        return /^[_a-zA-Z0-9-]+$/.test(str);\n      }\n      module.exports = Dataset;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      module.exports = { hits: __webpack_require__(62), popularIn: __webpack_require__(63) };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _ = __webpack_require__(0);\n      var version = __webpack_require__(18);\n      var parseAlgoliaClientVersion = __webpack_require__(19);\n      module.exports = function search(index, params) {\n        var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);\n        if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {\n          params = params || {};\n          params.additionalUA = 'autocomplete.js ' + version;\n        }\n        return sourceFn;\n        function sourceFn(query, cb) {\n          index.search(query, params, function (error, content) {\n            if (error) {\n              _.error(error.message);\n              return;\n            }\n            cb(content.hits, content);\n          });\n        }\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      var _ = __webpack_require__(0);\n      var version = __webpack_require__(18);\n      var parseAlgoliaClientVersion = __webpack_require__(19);\n      module.exports = function popularIn(index, params, details, options) {\n        var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);\n        if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {\n          params = params || {};\n          params.additionalUA = 'autocomplete.js ' + version;\n        }\n        if (!details.source) {\n          return _.error(\"Missing 'source' key\");\n        }\n        var source = _.isFunction(details.source)\n          ? details.source\n          : function (hit) {\n              return hit[details.source];\n            };\n        if (!details.index) {\n          return _.error(\"Missing 'index' key\");\n        }\n        var detailsIndex = details.index;\n        options = options || {};\n        return sourceFn;\n        function sourceFn(query, cb) {\n          index.search(query, params, function (error, content) {\n            if (error) {\n              _.error(error.message);\n              return;\n            }\n            if (content.hits.length > 0) {\n              var first = content.hits[0];\n              var detailsParams = _.mixin({ hitsPerPage: 0 }, details);\n              delete detailsParams.source;\n              delete detailsParams.index;\n              var detailsAlgoliaVersion = parseAlgoliaClientVersion(detailsIndex.as._ua);\n              if (\n                detailsAlgoliaVersion &&\n                detailsAlgoliaVersion[0] >= 3 &&\n                detailsAlgoliaVersion[1] > 20\n              ) {\n                params.additionalUA = 'autocomplete.js ' + version;\n              }\n              detailsIndex.search(source(first), detailsParams, function (error2, content2) {\n                if (error2) {\n                  _.error(error2.message);\n                  return;\n                }\n                var suggestions = [];\n                if (options.includeAll) {\n                  var label = options.allTitle || 'All departments';\n                  suggestions.push(\n                    _.mixin(\n                      { facet: { value: label, count: content2.nbHits } },\n                      _.cloneDeep(first),\n                    ),\n                  );\n                }\n                _.each(content2.facets, function (values, facet) {\n                  _.each(values, function (count, value) {\n                    suggestions.push(\n                      _.mixin(\n                        { facet: { facet: facet, value: value, count: count } },\n                        _.cloneDeep(first),\n                      ),\n                    );\n                  });\n                });\n                for (var i = 1; i < content.hits.length; ++i) {\n                  suggestions.push(content.hits[i]);\n                }\n                cb(suggestions, content);\n              });\n              return;\n            }\n            cb([]);\n          });\n        }\n      };\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      var prefix = 'algolia-docsearch';\n      var suggestionPrefix = prefix + '-suggestion';\n      var footerPrefix = prefix + '-footer';\n      var templates = {\n        suggestion:\n          '\\n  <a class=\"' +\n          suggestionPrefix +\n          '\\n    {{#isCategoryHeader}}' +\n          suggestionPrefix +\n          '__main{{/isCategoryHeader}}\\n    {{#isSubCategoryHeader}}' +\n          suggestionPrefix +\n          '__secondary{{/isSubCategoryHeader}}\\n    \"\\n    aria-label=\"Link to the result\"\\n    href=\"{{{url}}}\"\\n    >\\n    <div class=\"' +\n          suggestionPrefix +\n          '--category-header\">\\n        <span class=\"' +\n          suggestionPrefix +\n          '--category-header-lvl0\">{{{category}}}</span>\\n    </div>\\n    <div class=\"' +\n          suggestionPrefix +\n          '--wrapper\">\\n      <div class=\"' +\n          suggestionPrefix +\n          '--subcategory-column\">\\n        <span class=\"' +\n          suggestionPrefix +\n          '--subcategory-column-text\">{{{subcategory}}}</span>\\n      </div>\\n      {{#isTextOrSubcategoryNonEmpty}}\\n      <div class=\"' +\n          suggestionPrefix +\n          '--content\">\\n        <div class=\"' +\n          suggestionPrefix +\n          '--subcategory-inline\">{{{subcategory}}}</div>\\n        <div class=\"' +\n          suggestionPrefix +\n          '--title\">{{{title}}}</div>\\n        {{#text}}<div class=\"' +\n          suggestionPrefix +\n          '--text\">{{{text}}}</div>{{/text}}\\n      </div>\\n      {{/isTextOrSubcategoryNonEmpty}}\\n    </div>\\n  </a>\\n  ',\n        suggestionSimple:\n          '\\n  <div class=\"' +\n          suggestionPrefix +\n          '\\n    {{#isCategoryHeader}}' +\n          suggestionPrefix +\n          '__main{{/isCategoryHeader}}\\n    {{#isSubCategoryHeader}}' +\n          suggestionPrefix +\n          '__secondary{{/isSubCategoryHeader}}\\n    suggestion-layout-simple\\n  \">\\n    <div class=\"' +\n          suggestionPrefix +\n          '--category-header\">\\n        {{^isLvl0}}\\n        <span class=\"' +\n          suggestionPrefix +\n          '--category-header-lvl0 ' +\n          suggestionPrefix +\n          '--category-header-item\">{{{category}}}</span>\\n          {{^isLvl1}}\\n          {{^isLvl1EmptyOrDuplicate}}\\n          <span class=\"' +\n          suggestionPrefix +\n          '--category-header-lvl1 ' +\n          suggestionPrefix +\n          '--category-header-item\">\\n              {{{subcategory}}}\\n          </span>\\n          {{/isLvl1EmptyOrDuplicate}}\\n          {{/isLvl1}}\\n        {{/isLvl0}}\\n        <div class=\"' +\n          suggestionPrefix +\n          '--title ' +\n          suggestionPrefix +\n          '--category-header-item\">\\n            {{#isLvl2}}\\n                {{{title}}}\\n            {{/isLvl2}}\\n            {{#isLvl1}}\\n                {{{subcategory}}}\\n            {{/isLvl1}}\\n            {{#isLvl0}}\\n                {{{category}}}\\n            {{/isLvl0}}\\n        </div>\\n    </div>\\n    <div class=\"' +\n          suggestionPrefix +\n          '--wrapper\">\\n      {{#text}}\\n      <div class=\"' +\n          suggestionPrefix +\n          '--content\">\\n        <div class=\"' +\n          suggestionPrefix +\n          '--text\">{{{text}}}</div>\\n      </div>\\n      {{/text}}\\n    </div>\\n  </div>\\n  ',\n        footer:\n          '\\n    <div class=\"' +\n          footerPrefix +\n          '\">\\n      Search by <a class=\"' +\n          footerPrefix +\n          '--logo\" href=\"https://www.algolia.com/docsearch\">Algolia</a>\\n    </div>\\n  ',\n        empty:\n          '\\n  <div class=\"' +\n          suggestionPrefix +\n          '\">\\n    <div class=\"' +\n          suggestionPrefix +\n          '--wrapper\">\\n        <div class=\"' +\n          suggestionPrefix +\n          '--content ' +\n          suggestionPrefix +\n          '--no-results\">\\n            <div class=\"' +\n          suggestionPrefix +\n          '--title\">\\n                <div class=\"' +\n          suggestionPrefix +\n          '--text\">\\n                    No results found for query <b>\"{{query}}\"</b>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n  </div>\\n  ',\n        searchBox:\n          '\\n  <form novalidate=\"novalidate\" onsubmit=\"return false;\" class=\"searchbox\">\\n    <div role=\"search\" class=\"searchbox__wrapper\">\\n      <input id=\"docsearch\" type=\"search\" name=\"search\" placeholder=\"Search the docs\" autocomplete=\"off\" required=\"required\" class=\"searchbox__input\"/>\\n      <button type=\"submit\" title=\"Submit your search query.\" class=\"searchbox__submit\" >\\n        <svg width=12 height=12 role=\"img\" aria-label=\"Search\">\\n          <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#sbx-icon-search-13\"></use>\\n        </svg>\\n      </button>\\n      <button type=\"reset\" title=\"Clear the search query.\" class=\"searchbox__reset hide\">\\n        <svg width=12 height=12 role=\"img\" aria-label=\"Reset\">\\n          <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#sbx-icon-clear-3\"></use>\\n        </svg>\\n      </button>\\n    </div>\\n</form>\\n\\n<div class=\"svg-icons\" style=\"height: 0; width: 0; position: absolute; visibility: hidden\">\\n  <svg xmlns=\"http://www.w3.org/2000/svg\">\\n    <symbol id=\"sbx-icon-clear-3\" viewBox=\"0 0 40 40\"><path d=\"M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z\" fill-rule=\"evenodd\"></symbol>\\n    <symbol id=\"sbx-icon-search-13\" viewBox=\"0 0 40 40\"><path d=\"M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z\" fill-rule=\"evenodd\"></symbol>\\n  </svg>\\n</div>\\n  ',\n      };\n      exports.default = templates;\n    },\n    function (module, exports, __webpack_require__) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', { value: true });\n      var _typeof =\n        typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n          ? function (obj) {\n              return typeof obj;\n            }\n          : function (obj) {\n              return obj &&\n                typeof Symbol === 'function' &&\n                obj.constructor === Symbol &&\n                obj !== Symbol.prototype\n                ? 'symbol'\n                : typeof obj;\n            };\n      var _zepto = __webpack_require__(20);\n      var _zepto2 = _interopRequireDefault(_zepto);\n      function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : { default: obj };\n      }\n      var utils = {\n        mergeKeyWithParent: function mergeKeyWithParent(object, property) {\n          if (object[property] === undefined) {\n            return object;\n          }\n          if (_typeof(object[property]) !== 'object') {\n            return object;\n          }\n          var newObject = _zepto2.default.extend({}, object, object[property]);\n          delete newObject[property];\n          return newObject;\n        },\n        groupBy: function groupBy(collection, property) {\n          var newCollection = {};\n          _zepto2.default.each(collection, function (index, item) {\n            if (item[property] === undefined) {\n              throw new Error('[groupBy]: Object has no key ' + property);\n            }\n            var key = item[property];\n            if (typeof key === 'string') {\n              key = key.toLowerCase();\n            }\n            if (!Object.prototype.hasOwnProperty.call(newCollection, key)) {\n              newCollection[key] = [];\n            }\n            newCollection[key].push(item);\n          });\n          return newCollection;\n        },\n        values: function values(object) {\n          return Object.keys(object).map(function (key) {\n            return object[key];\n          });\n        },\n        flatten: function flatten(array) {\n          var results = [];\n          array.forEach(function (value) {\n            if (!Array.isArray(value)) {\n              results.push(value);\n              return;\n            }\n            value.forEach(function (subvalue) {\n              results.push(subvalue);\n            });\n          });\n          return results;\n        },\n        flattenAndFlagFirst: function flattenAndFlagFirst(object, flag) {\n          var values = this.values(object).map(function (collection) {\n            return collection.map(function (item, index) {\n              item[flag] = index === 0;\n              return item;\n            });\n          });\n          return this.flatten(values);\n        },\n        compact: function compact(array) {\n          var results = [];\n          array.forEach(function (value) {\n            if (!value) {\n              return;\n            }\n            results.push(value);\n          });\n          return results;\n        },\n        getHighlightedValue: function getHighlightedValue(object, property) {\n          if (\n            object._highlightResult &&\n            object._highlightResult.hierarchy_camel &&\n            object._highlightResult.hierarchy_camel[property] &&\n            object._highlightResult.hierarchy_camel[property].matchLevel &&\n            object._highlightResult.hierarchy_camel[property].matchLevel !== 'none' &&\n            object._highlightResult.hierarchy_camel[property].value\n          ) {\n            return object._highlightResult.hierarchy_camel[property].value;\n          }\n          if (\n            object._highlightResult &&\n            object._highlightResult &&\n            object._highlightResult[property] &&\n            object._highlightResult[property].value\n          ) {\n            return object._highlightResult[property].value;\n          }\n          return object[property];\n        },\n        getSnippetedValue: function getSnippetedValue(object, property) {\n          if (\n            !object._snippetResult ||\n            !object._snippetResult[property] ||\n            !object._snippetResult[property].value\n          ) {\n            return object[property];\n          }\n          var snippet = object._snippetResult[property].value;\n          if (snippet[0] !== snippet[0].toUpperCase()) {\n            snippet = '鈥�' + snippet;\n          }\n          if (['.', '!', '?'].indexOf(snippet[snippet.length - 1]) === -1) {\n            snippet = snippet + '鈥�';\n          }\n          return snippet;\n        },\n        deepClone: function deepClone(object) {\n          return JSON.parse(JSON.stringify(object));\n        },\n      };\n      exports.default = utils;\n    },\n  ]);\n});\n"
  },
  {
    "path": "site/scripts/genrateRoutes.js",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\nconst globby = require('globby');\nconst fs = require('fs');\nconst path = require('path');\nconst matter = require('gray-matter');\nconst { ESLint } = require('eslint');\n\n(async () => {\n  const paths = await globby('components/*/index.*.md');\n  const components = {};\n\n  paths.forEach(path => {\n    const content = fs.readFileSync(path).toString();\n    const componentName = path.split('/')[1];\n\n    const { data } = matter(content);\n    components[componentName] = { ...components[componentName], ...data };\n  });\n  const TEMPLATE = `\nexport default [\n  ${Object.keys(components).map(\n    component => `\n  {\n    path: '${component}:lang(-cn)?',\n    meta: ${JSON.stringify(components[component])},\n    component: () => import('../../../components/${component}/demo/index.vue'),\n  }`,\n  )}\n];`;\n\n  const engine = new ESLint({\n    fix: true,\n    useEslintrc: false,\n    baseConfig: require(path.join(process.cwd(), '.eslintrc.js')),\n  });\n\n  const report = await engine.lintText(TEMPLATE);\n\n  fs.writeFileSync('site/src/router/demoRoutes.js', report[0].output);\n})();\n"
  },
  {
    "path": "site/scripts/pushToOSS.js",
    "content": "/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst OSS = require('ali-oss');\nconst path = require('path');\nconst fs = require('fs');\n\nconst accessKeyId = process.env.ALI_OSS_ACCESSKEY;\nconst accessKeySecret = process.env.ALI_OSS_SECRETKEY;\n\nconst client = new OSS({\n  bucket: '4x-antdv',\n  cname: 'true',\n  endpoint: '4x-antdv.oss-cn-beijing.aliyuncs.com',\n  region: 'oss-cn-beijing',\n  accessKeyId,\n  accessKeySecret,\n});\n\nconst assetsPath = path.join(process.cwd(), 'site', 'dist', 'assets');\n\nconst put = (target, source) => {\n  return new Promise((reslove, reject) => {\n    client\n      .put(target, source)\n      .then(res => {\n        if (res.res.status !== 200) {\n          console.log(`${res.name} upload failed!`);\n          reject();\n          process.exit(500);\n        } else {\n          console.log(`${res.name} upload success!`);\n          reslove();\n        }\n      })\n      .catch(err => {\n        if (err) {\n          err && console.log(err);\n          process.exit(500);\n        }\n      });\n  });\n};\n\nasync function upload() {\n  try {\n    const files = await fs.promises.readdir(assetsPath, {\n      withFileTypes: true,\n    });\n    for (const file of files) {\n      if (file.isFile()) {\n        await put(`assets/${file.name}`, path.join(assetsPath, file.name));\n      }\n    }\n    await put('index.html', path.join(process.cwd(), 'site', 'dist', 'index.html'));\n  } catch (err) {\n    console.error(err);\n  }\n}\nupload();\n"
  },
  {
    "path": "site/src/App.vue",
    "content": "<template>\n  <a-style-provider :hash-priority=\"hashPriority\">\n    <a-config-provider :locale=\"locale\" :theme=\"themeConfig\">\n      <SiteToken>\n        <router-view />\n      </SiteToken>\n    </a-config-provider>\n  </a-style-provider>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, provide, watch, ref } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { useI18n } from 'vue-i18n';\nimport useMediaQuery from './hooks/useMediaQuery';\nimport { GLOBAL_CONFIG } from './SymbolKey';\nimport enUS from '../../components/locale/en_US';\nimport zhCN from '../../components/locale/zh_CN';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/zh-cn';\nimport { theme as antdTheme } from 'ant-design-vue';\nimport SiteToken from './SiteToken.vue';\nimport type { GlobalConfig } from './type';\nfunction isZhCN(name: string) {\n  return /-cn\\/?$/.test(name);\n}\n\nexport type ThemeName = '' | 'light' | 'dark' | 'compact';\nconst getAlgorithm = (themes: ThemeName[] = []) =>\n  themes\n    .filter(theme => !!theme)\n    .map(theme => {\n      if (theme === 'dark') {\n        return antdTheme.darkAlgorithm;\n      }\n      if (theme === 'compact') {\n        return antdTheme.compactAlgorithm;\n      }\n      return antdTheme.defaultAlgorithm;\n    });\n\nexport default defineComponent({\n  components: {\n    SiteToken,\n  },\n  setup() {\n    const route = useRoute();\n    const i18n = useI18n();\n    const colSize = useMediaQuery();\n    const isMobile = computed(() => colSize.value === 'sm' || colSize.value === 'xs');\n    const theme = ref<ThemeName>((localStorage.getItem('theme') as ThemeName) || 'light');\n    const compactTheme = ref<ThemeName>((localStorage.getItem('compactTheme') as ThemeName) || '');\n    const themeConfig = computed(() => {\n      return { algorithm: getAlgorithm([...new Set([theme.value, compactTheme.value])]) };\n    });\n    const hashPriority = ref('low' as const);\n    watch(hashPriority, () => {\n      location.reload();\n    });\n    // useSiteToken();\n    const responsive = computed(() => {\n      if (colSize.value === 'xs') {\n        return 'crowded';\n      } else if (colSize.value === 'sm') {\n        return 'narrow';\n      }\n      return null;\n    });\n    const globalConfig: GlobalConfig = {\n      isMobile,\n      responsive,\n      lang: computed<any>(() => i18n.locale.value),\n      isZhCN: computed(() => i18n.locale.value === 'zh-CN'),\n      blocked: ref(false),\n    };\n    const changeTheme = (t: ThemeName) => {\n      theme.value = t;\n      localStorage.setItem('theme', t);\n    };\n\n    const changeCompactTheme = (t: ThemeName) => {\n      compactTheme.value = t;\n      localStorage.setItem('compactTheme', t);\n    };\n\n    provide('themeMode', {\n      theme,\n      compactTheme,\n      changeTheme,\n      changeCompactTheme,\n    });\n    provide(GLOBAL_CONFIG, globalConfig);\n    watch(\n      () => route.path,\n      val => {\n        i18n.locale.value = isZhCN(val) ? 'zh-CN' : 'en-US';\n      },\n      { immediate: true },\n    );\n    watch(\n      globalConfig.isZhCN,\n      val => {\n        if (val) {\n          dayjs.locale(zhCN.locale);\n        } else {\n          dayjs.locale(enUS.locale);\n        }\n      },\n      { immediate: true },\n    );\n    const locale = computed(() => {\n      return globalConfig.isZhCN.value ? zhCN : enUS;\n    });\n    setTimeout(() => {\n      const div = document.createElement('div');\n      div.className = 'adsbox';\n      document.body.appendChild(div);\n      globalConfig.blocked.value = 'none' === getComputedStyle(div).display;\n    }, 300);\n    watch(\n      theme,\n      () => {\n        if (theme.value === 'dark') {\n          document.getElementsByTagName('html')[0].setAttribute('data-doc-theme', 'dark');\n          document.getElementsByTagName('body')[0].setAttribute('data-theme', 'dark');\n          document.getElementsByTagName('html')[0].style.colorScheme = 'dark';\n        } else {\n          document.getElementsByTagName('html')[0].setAttribute('data-doc-theme', 'light');\n          document.getElementsByTagName('body')[0].setAttribute('data-theme', 'light');\n          document.getElementsByTagName('html')[0].style.colorScheme = 'light';\n        }\n      },\n      { immediate: true },\n    );\n    return { globalConfig, locale, themeConfig, hashPriority };\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/SiteToken.vue",
    "content": "<template>\n  <slot></slot>\n</template>\n<script lang=\"ts\" setup>\nimport useSiteToken from './hooks/useSiteToken';\nuseSiteToken();\n</script>\n"
  },
  {
    "path": "site/src/SymbolKey.ts",
    "content": "export const GLOBAL_CONFIG = Symbol('globalConfig');\n"
  },
  {
    "path": "site/src/components/ColorChunk/index.tsx",
    "content": "import { defineComponent, toRefs, computed } from 'vue';\nimport type { CSSProperties, PropType } from 'vue';\nimport { TinyColor, type ColorInput } from '@ctrl/tinycolor';\nimport useSiteToken from '../../hooks/useSiteToken';\n\nconst ColorChunk = defineComponent({\n  props: {\n    color: {\n      type: String as PropType<ColorInput>,\n      default: '#000',\n    },\n  },\n  setup(props, { attrs, slots }) {\n    const SiteToken = useSiteToken();\n\n    const token = computed(() => SiteToken.value.token);\n\n    const { color } = toRefs(props);\n\n    const dotColor = computed(() => {\n      const _color = new TinyColor(color.value).toHex8String();\n      return _color.endsWith('ff') ? _color.slice(0, -2) : _color;\n    });\n\n    return () => {\n      return (\n        <span\n          {...attrs}\n          style={{\n            padding: '0.2em 0.4em',\n            fontSize: '0.9em',\n            background: token.value.siteMarkdownCodeBg,\n            borderRadius: `${token.value.borderRadius}px`,\n            fontFamily: 'monospace',\n            ...(attrs.style as CSSProperties),\n          }}\n        >\n          <span\n            style={{\n              display: 'inline-block',\n              width: '6px',\n              height: '6px',\n              borderRadius: `${token.value.borderRadiusSM}px`,\n              marginRight: '4px',\n              border: `1px solid ${token.value.colorSplit}`,\n              backgroundColor: dotColor.value,\n            }}\n          />\n          {slots.default ? slots.default() : dotColor.value}\n        </span>\n      );\n    };\n  },\n});\n\nexport default ColorChunk;\n"
  },
  {
    "path": "site/src/components/ComponentTokenTable/index.tsx",
    "content": "import { defineComponent, toRefs, computed } from 'vue';\nimport type { PropType } from 'vue';\nimport { ConfigProvider, Table } from 'ant-design-vue';\nimport { getDesignToken } from '../antdv-token-previewer';\nimport tokenMeta from 'ant-design-vue/es/version/token-meta.json';\nimport tokenData from 'ant-design-vue/es/version/token.json';\nimport { useLocale } from '../../i18n';\nimport useSiteToken from '../../hooks/useSiteToken';\nimport { useColumns } from '../TokenTable';\nimport ColorChunk from '../ColorChunk';\n\nconst defaultToken = getDesignToken();\n\nconst locales = {\n  cn: {\n    token: 'Token 名称',\n    description: '描述',\n    type: '类型',\n    value: '默认值',\n  },\n  en: {\n    token: 'Token Name',\n    description: 'Description',\n    type: 'Type',\n    value: 'Default Value',\n  },\n};\n\ninterface SubTokenTableProps {\n  defaultOpen?: boolean;\n  title: string;\n  tokens: string[];\n}\n\nconst SubTokenTable = defineComponent({\n  props: {\n    defaultOpen: {\n      type: Boolean as PropType<SubTokenTableProps['defaultOpen']>,\n    },\n    title: {\n      type: String as PropType<SubTokenTableProps['title']>,\n    },\n    tokens: {\n      type: Array as PropType<SubTokenTableProps['tokens']>,\n    },\n  },\n  setup(props) {\n    const { defaultOpen, title, tokens } = toRefs(props);\n    const [, lang] = useLocale(locales);\n    const siteToken = useSiteToken();\n    const token = computed(() => siteToken.value.token);\n    const columns = useColumns();\n\n    return () => {\n      if (!tokens.value.length) {\n        return null;\n      }\n\n      const data = tokens.value\n        .sort((token1, token2) => {\n          const hasColor1 = token1.toLowerCase().includes('color');\n          const hasColor2 = token2.toLowerCase().includes('color');\n\n          if (hasColor1 && !hasColor2) {\n            return -1;\n          }\n\n          if (!hasColor1 && hasColor2) {\n            return 1;\n          }\n\n          return token1 < token2 ? -1 : 1;\n        })\n        .map(name => {\n          const meta = tokenMeta[name];\n\n          if (!meta) {\n            return null;\n          }\n\n          return {\n            name,\n            desc: lang.value === 'cn' ? meta.desc : meta.descEn,\n            type: meta.type,\n            value: (defaultToken as any)[name],\n          };\n        })\n        .filter(info => info);\n\n      return (\n        // Reuse `.markdown` style\n        <details class=\"markdown\" open={defaultOpen.value || process.env.NODE_ENV !== 'production'}>\n          <summary>\n            <h3 style={{ display: 'inline' }}>{title.value}</h3>\n          </summary>\n          <ConfigProvider\n            theme={{\n              token: {\n                borderRadius: 0,\n              },\n            }}\n          >\n            <Table\n              size=\"middle\"\n              columns={columns}\n              bordered\n              dataSource={data}\n              style={{ marginBottom: token.value.margin }}\n              pagination={false}\n              rowKey={record => record.name}\n              v-slots={{\n                bodyCell: ({ text, record, column }) => {\n                  if (column.key === 'type') {\n                    return (\n                      <span\n                        style={{\n                          margin: '0 1px',\n                          padding: '0.2em 0.4em',\n                          fontSize: '0.9em',\n                          background: `${token.value.siteMarkdownCodeBg}`,\n                          border: `1px solid ${token.value.colorSplit}`,\n                          borderRadius: '3px',\n                          fontFamily: 'monospace',\n                        }}\n                      >\n                        {record.type}\n                      </span>\n                    );\n                  }\n                  if (column.key === 'value') {\n                    const isColor =\n                      typeof record.value === 'string' &&\n                      (record.value.startsWith('#') || record.value.startsWith('rgb'));\n                    if (isColor) {\n                      return <ColorChunk color={record.value}>{record.value}</ColorChunk>;\n                    }\n                    return (\n                      <span>\n                        {typeof record.value !== 'string'\n                          ? JSON.stringify(record.value)\n                          : record.value}\n                      </span>\n                    );\n                  }\n                  return <span>{text} </span>;\n                },\n              }}\n            />\n          </ConfigProvider>\n        </details>\n      );\n    };\n  },\n});\n\nexport interface ComponentTokenTableProps {\n  component: string;\n}\n\nconst ComponentTokenTable = defineComponent({\n  props: {\n    component: {\n      type: String as PropType<ComponentTokenTableProps['component']>,\n    },\n  },\n  setup(props) {\n    const { component } = toRefs(props);\n\n    const mergedTokens = computed(() => {\n      const globalTokenSet = new Set<string>();\n      let componentTokens: Record<string, string> = {};\n\n      component.value.split(',').forEach(comp => {\n        const { global: globalTokens = [], component: singleComponentTokens = [] } =\n          tokenData[comp] || {};\n\n        globalTokens.forEach((token: string) => {\n          globalTokenSet.add(token);\n        });\n\n        componentTokens = {\n          ...componentTokens,\n          ...singleComponentTokens,\n        };\n      });\n\n      return {\n        mergedGlobalTokens: Array.from(globalTokenSet),\n        mergedComponentTokens: componentTokens,\n      };\n    });\n\n    return () => {\n      return (\n        <>\n          {/* Component Token 先不展示 */}\n          {/* <SubTokenTable title=\"Component Token\" tokens={mergedComponentTokens} defaultOpen /> */}\n          <SubTokenTable title=\"Global Token\" tokens={mergedTokens.value.mergedGlobalTokens} />\n        </>\n      );\n    };\n  },\n});\n\nexport default ComponentTokenTable;\n"
  },
  {
    "path": "site/src/components/Contributors/constants.ts",
    "content": "export const REPO_OWNER = 'VueComponent';\nexport const REPO_NAME = 'ant-design-vue';\nexport const REPO_PATH = `${REPO_OWNER}/${REPO_NAME}`;\nexport const REPO_BRANCH = 'main';\n"
  },
  {
    "path": "site/src/components/Contributors/index.vue",
    "content": "<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { REPO_PATH } from './constants';\nimport dayjs from 'dayjs';\n\ndefineProps({\n  isZn: Boolean,\n});\n\nconst route = useRoute();\nconst contributors = ref([]);\nconst lastCommitTime = ref(0);\n\nconst filterData = data => {\n  const arr = [];\n  data.forEach(item => {\n    if (!!item.author?.login || !!item.author?.html_url || !!item.author?.avatar_url) {\n      lastCommitTime.value = Math.max(lastCommitTime.value, +new Date(item.commit.author.date));\n\n      arr.push({\n        login: item.author.login,\n        url: item.author.html_url,\n        avatar: item.author.avatar_url,\n      });\n    }\n  });\n  contributors.value = arr.reduce((acc, curr) => {\n    if (!acc.find(item => item.login === curr.login)) {\n      acc.push(curr);\n    }\n    return acc;\n  }, []);\n};\nconst getContributors = async () => {\n  const path = route.path;\n  const parts = path.split('/');\n  const name = parts[2];\n  const componentName = name.includes('-') ? name.replace('-cn', '') : name;\n  const url = `https://api.github.com/repos/${REPO_PATH}/commits?path=/components/${componentName}`;\n  try {\n    const req = await fetch(url);\n    const res = await req.json();\n    filterData(res);\n  } catch (e) {\n    return null;\n  }\n};\nwatchEffect(() => {\n  getContributors();\n});\n</script>\n\n<template>\n  <div v-if=\"contributors.length > 0\" class=\"contributors-list\">\n    <ul class=\"acss-1ppw8kl\">\n      <li v-for=\"item in contributors\" :key=\"item.login\">\n        <a-tooltip :title=\"`${isZn ? '文档贡献者：' : 'Contributor: '}${item.login}`\">\n          <a :href=\"item.url\" target=\"_blank\">\n            <a-avatar :src=\"item.avatar\" size=\"small\" />\n          </a>\n        </a-tooltip>\n      </li>\n    </ul>\n    <span>\n      {{ isZn ? '最后更新' : 'Last updated' }} : {{ dayjs(lastCommitTime).format('YYYY/MM/DD') }}\n    </span>\n  </div>\n</template>\n\n<style scoped>\n.contributors-list {\n  margin-top: 120px !important;\n  display: flex;\n  gap: 8px;\n}\n\n.contributors-list span {\n  color: var(--primary-color);\n}\n\n.acss-1ppw8kl {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-flex-wrap: wrap;\n  -webkit-flex-wrap: wrap;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  clear: both;\n  flex: 1;\n}\n\n.acss-1ppw8kl li {\n  height: 24px;\n}\n\n.acss-1ppw8kl li,\n.acss-1ppw8kl .ant-avatar + .ant-avatar {\n  -webkit-transition: all 0.3s;\n  transition: all 0.3s;\n  -webkit-margin-end: -8px;\n  margin-inline-end: -8px;\n}\n\n.acss-1ppw8kl:hover li,\n.acss-1ppw8kl:hover .ant-avatar {\n  -webkit-margin-end: 0;\n  margin-inline-end: 0;\n}\n</style>\n"
  },
  {
    "path": "site/src/components/DemoBox.vue",
    "content": "<template>\n  <template v-if=\"inIframe\">\n    <div :id=\"sectionId\"><slot /></div>\n  </template>\n  <section v-else :id=\"sectionId\" class=\"code-box\">\n    <section class=\"code-box-demo\">\n      <template v-if=\"iframeDemo[iframeDemoKey]\">\n        <div class=\"browser-mockup with-url\">\n          <iframe :src=\"iframeDemo[iframeDemoKey]\" :height=\"iframeHeight\" />\n        </div>\n      </template>\n      <template v-else>\n        <slot />\n      </template>\n    </section>\n    <section class=\"code-box-meta markdown\">\n      <div class=\"code-box-title\">\n        <a :href=\"`#${sectionId}`\">{{ title }}</a>\n      </div>\n      <div class=\"code-box-description\" v-html=\"docHtml\"></div>\n      <div class=\"code-box-actions\">\n        <a-tooltip :title=\"$t('app.demo.codesandbox')\">\n          <CodeSandboxOutlined\n            class=\"code-box-code-copy code-box-code-action\"\n            @click=\"handleCodeSandbox\"\n          />\n        </a-tooltip>\n        <a-tooltip :title=\"$t(`app.demo.type.${type === 'JS' ? 'js' : 'ts'}`)\">\n          <span\n            class=\"code-expand-icon code-box-code-action\"\n            style=\"width: auto\"\n            @click=\"handleChangeType\"\n          >\n            {{ type }}\n          </span>\n        </a-tooltip>\n        <a-tooltip\n          v-if=\"!blocked\"\n          :title=\"$t(`app.demo.${copied ? 'copied' : 'copy'}`)\"\n          :open=\"copyTooltipVisible\"\n          @openChange=\"onCopyTooltipVisibleChange\"\n        >\n          <component\n            :is=\"copied && copyTooltipVisible ? 'CheckOutlined' : 'SnippetsOutlined'\"\n            key=\"copy\"\n            v-clipboard:copy=\"type === 'TS' ? sourceCode : jsSourceCode\"\n            v-clipboard:success=\"handleCodeCopied\"\n            class=\"code-box-code-copy code-box-code-action\"\n          />\n        </a-tooltip>\n        <a-tooltip v-else :title=\"$t('app.demo.copy')\">\n          <SnippetsOutlined class=\"code-box-code-copy code-box-code-action\" @click=\"warning\" />\n        </a-tooltip>\n        <a-tooltip :title=\"$t(`app.demo.code.${codeExpand ? 'hide' : 'show'}`)\">\n          <span class=\"code-expand-icon code-box-code-action\">\n            <img\n              alt=\"expand code\"\n              :src=\"\n                theme === 'dark'\n                  ? 'https://gw.alipayobjects.com/zos/antfincdn/btT3qDZn1U/wSAkBuJFbdxsosKKpqyq.svg'\n                  : 'https://gw.alipayobjects.com/zos/antfincdn/Z5c7kzvi30/expand.svg'\n              \"\n              :class=\"codeExpand ? 'code-expand-icon-hide' : 'code-expand-icon-show'\"\n              @click=\"handleCodeExpand\"\n            />\n            <img\n              alt=\"expand code\"\n              :src=\"\n                theme === 'dark'\n                  ? 'https://gw.alipayobjects.com/zos/antfincdn/CjZPwcKUG3/OpROPHYqWmrMDBFMZtKF.svg'\n                  : 'https://gw.alipayobjects.com/zos/antfincdn/4zAaozCvUH/unexpand.svg'\n              \"\n              :class=\"codeExpand ? 'code-expand-icon-show' : 'code-expand-icon-hide'\"\n              @click=\"handleCodeExpand\"\n            />\n          </span>\n        </a-tooltip>\n      </div>\n    </section>\n    <section :class=\"highlightClass\">\n      <div ref=\"codeRef\" class=\"highlight\">\n        <slot v-if=\"type === 'TS'\" name=\"htmlCode\" />\n        <slot v-else name=\"jsVersionHtml\" />\n      </div>\n      <div class=\"code-box-actions code-box-actions-bottom\">\n        <a-tooltip :title=\"$t(`app.demo.code.hide`)\">\n          <span class=\"code-expand-icon code-box-code-action\">\n            <img\n              alt=\"expand code\"\n              :src=\"\n                theme === 'dark'\n                  ? 'https://gw.alipayobjects.com/zos/antfincdn/CjZPwcKUG3/OpROPHYqWmrMDBFMZtKF.svg'\n                  : 'https://gw.alipayobjects.com/zos/antfincdn/4zAaozCvUH/unexpand.svg'\n              \"\n              :class=\"'code-expand-icon-show'\"\n              @click=\"handleCodeExpand($event, sectionId)\"\n            />\n          </span>\n        </a-tooltip>\n      </div>\n    </section>\n  </section>\n</template>\n\n<script lang=\"ts\">\nimport type { GlobalConfig } from '../type';\nimport { GLOBAL_CONFIG } from '../SymbolKey';\nimport { computed, defineComponent, inject, onMounted, ref } from 'vue';\nimport { CheckOutlined, SnippetsOutlined, CodeSandboxOutlined } from '@ant-design/icons-vue';\nimport { getCodeSandboxParams } from '../utils/generateOnlineDemo';\nimport packageInfo from '../../../package.json';\n\n// import { Modal } from 'ant-design-vue';\nexport default defineComponent({\n  name: 'DemoBox',\n  components: {\n    CheckOutlined,\n    SnippetsOutlined,\n    CodeSandboxOutlined,\n  },\n  props: {\n    jsfiddle: Object,\n  },\n  setup(props) {\n    const codeExpand = ref(false);\n    const type = ref('TS');\n    const copyTooltipVisible = ref(false);\n    const copied = ref(false);\n    const codeRef = ref<HTMLDivElement>();\n    const sectionId = computed(() => {\n      const relativePath = props.jsfiddle?.relativePath || '';\n      return `${relativePath.split('/').join('-').replace('.vue', '')}`.toLocaleLowerCase();\n    });\n    const inIframe = inject('inIframe', false);\n    const iframeHeight = computed(() => props.jsfiddle?.iframe);\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    const addDemosInfo: any = inject('addDemosInfo', () => {});\n\n    const globalConfig = inject<GlobalConfig>(GLOBAL_CONFIG);\n    const title = computed(\n      () =>\n        props.jsfiddle &&\n        props.jsfiddle.title &&\n        props.jsfiddle?.title[globalConfig.isZhCN.value ? 'zh-CN' : 'en-US'],\n    );\n    const warning = () => {\n      // Modal.warning({\n      //   content: globalConfig.isZhCN\n      //     ? '我们检测到你可能使用了 AdBlock 或 Adblock Plus，它会影响到复制、展开代码等功能。 你可以将 Ant Design Vue 加入白名单，以便我们更好地提供服务。'\n      //     : 'We have detected that you may have used AdBlock or Adblock Plus, which will affect functions such as copying and expanding code. You can add Ant Design Vue to the whitelist so that we can provide better services.',\n      // });\n    };\n    const iframeDemoKey = computed(() => {\n      return (\n        props.jsfiddle &&\n        props.jsfiddle.title &&\n        props.jsfiddle?.title['en-US'] &&\n        String(props.jsfiddle?.title['en-US']).split(' ').join('-').toLowerCase()\n      );\n    });\n    const onCopyTooltipVisibleChange = (visible: boolean) => {\n      if (visible) {\n        copyTooltipVisible.value = visible;\n        copied.value = false;\n      } else {\n        copyTooltipVisible.value = visible;\n      }\n    };\n    const docHtml = computed(() =>\n      props.jsfiddle && props.jsfiddle.docHtml\n        ? (\n            props.jsfiddle.docHtml.replace(\n              `<h2 id=\"zh-cn\">zh-CN <a class=\"header-anchor\" href=\"#zh-cn\">\n          <span aria-hidden=\"true\" class=\"anchor\">#</span>\n        </a></h2>`,\n              '',\n            ).split(`<h2 id=\"en-us\">en-US <a class=\"header-anchor\" href=\"#en-us\">\n          <span aria-hidden=\"true\" class=\"anchor\">#</span>\n        </a></h2>`)[globalConfig.isZhCN.value ? 0 : 1] || ''\n          ).trim()\n        : '',\n    );\n    const handleCodeExpand = (_, sectionId?) => {\n      if (globalConfig.blocked.value) {\n        warning();\n        return;\n      }\n      if (sectionId) {\n        const element = document.getElementById(sectionId);\n        if (element) {\n          element.scrollIntoView();\n        }\n      }\n      codeExpand.value = !codeExpand.value;\n    };\n    const handleCodeCopied = () => {\n      copied.value = true;\n    };\n    const handleChangeType = () => {\n      if (globalConfig.blocked.value) {\n        warning();\n        return;\n      }\n      type.value = type.value === 'TS' ? 'JS' : 'TS';\n    };\n    const handleCodeSandbox = () => {\n      const code = codeRef.value.innerText;\n      const params = getCodeSandboxParams(code, {\n        title: `${title.value} - ant-design-vue@${packageInfo.version}`,\n      });\n      const div = document.createElement('div');\n      div.style.display = 'none';\n      div.innerHTML = `<form action=\"https://codesandbox.io/api/v1/sandboxes/define\" method=\"POST\" target=\"_blank\">\n        <input type=\"hidden\" name=\"parameters\" value=\"${params}\" />\n        <input type=\"submit\" value=\"Open in sandbox\" />\n      </form>`;\n      document.body.appendChild(div);\n      (div.firstElementChild as HTMLFormElement).submit();\n      document.body.removeChild(div);\n    };\n    const highlightClass = computed(() => {\n      return {\n        'highlight-wrapper': true,\n        'highlight-wrapper-expand': codeExpand.value,\n      };\n    });\n    const iframeDemo = inject('iframeDemo', {});\n    onMounted(() => {\n      addDemosInfo({\n        href: `#${sectionId.value}`,\n        title,\n      });\n    });\n    const theme = computed(() => inject('themeMode', { theme: ref('light') }).theme.value);\n    return {\n      docHtml,\n      iframeDemo,\n      iframeDemoKey,\n      iframeHeight,\n      inIframe,\n      theme,\n      type,\n      warning,\n      blocked: globalConfig.blocked,\n      isZhCN: globalConfig.isZhCN,\n      sectionId,\n      title,\n      codeExpand,\n      copyTooltipVisible,\n      copied,\n      onCopyTooltipVisibleChange,\n      handleCodeExpand,\n      handleCodeCopied,\n      handleChangeType,\n      highlightClass,\n      sourceCode: decodeURIComponent(escape(window.atob(props.jsfiddle?.sourceCode))),\n      jsSourceCode: decodeURIComponent(escape(window.atob(props.jsfiddle?.jsSourceCode))),\n      codeRef,\n      handleCodeSandbox,\n    };\n  },\n});\n</script>\n\n<style></style>\n"
  },
  {
    "path": "site/src/components/SimpleLayout.vue",
    "content": "<template>\n  <div>\n    <router-view></router-view>\n  </div>\n</template>\n"
  },
  {
    "path": "site/src/components/TokenTable/index.tsx",
    "content": "import { defineComponent, toRefs, computed } from 'vue';\nimport type { PropType } from 'vue';\nimport type { TableProps } from 'ant-design-vue';\nimport { Table } from 'ant-design-vue';\nimport { getDesignToken } from '../antdv-token-previewer';\nimport tokenMeta from 'ant-design-vue/es/version/token-meta.json';\nimport { useLocale } from '../../i18n';\nimport useSiteToken from '../../hooks/useSiteToken';\nimport ColorChunk from '../ColorChunk';\n\ntype TokenTableProps = {\n  type: 'seed' | 'map' | 'alias';\n  lang: 'zh' | 'en';\n};\n\ntype TokenData = {\n  name: string;\n  desc: string;\n  type: string;\n  value: any;\n};\n\nconst defaultToken = getDesignToken();\n\nconst locales = {\n  cn: {\n    token: 'Token 名称',\n    description: '描述',\n    type: '类型',\n    value: '默认值',\n  },\n  en: {\n    token: 'Token Name',\n    description: 'Description',\n    type: 'Type',\n    value: 'Default Value',\n  },\n};\n\nexport function useColumns(): Exclude<TableProps<TokenData>['columns'], undefined> {\n  const [locale] = useLocale(locales);\n\n  return [\n    {\n      title: locale.value.token,\n      key: 'name',\n      dataIndex: 'name',\n    },\n    {\n      title: locale.value.description,\n      key: 'desc',\n      dataIndex: 'desc',\n    },\n    {\n      title: locale.value.type,\n      key: 'type',\n      dataIndex: 'type',\n    },\n    {\n      title: locale.value.value,\n      key: 'value',\n      dataIndex: 'value',\n    },\n  ];\n}\n\nconst TokenTable = defineComponent({\n  props: {\n    type: {\n      type: String as PropType<TokenTableProps['type']>,\n    },\n    lang: {\n      type: String as PropType<TokenTableProps['lang']>,\n    },\n  },\n  setup(props, { attrs }) {\n    const { type } = toRefs(props);\n    const SiteToken = useSiteToken();\n    const token = computed(() => SiteToken.value.token);\n\n    const [, lang] = useLocale(locales);\n    const columns = useColumns();\n\n    const data = computed<TokenData[]>(() => {\n      return Object.entries(tokenMeta)\n        .filter(([, meta]: any) => meta.source === type.value)\n        .map(([token, meta]: any) => ({\n          name: token,\n          desc: lang.value === 'cn' ? meta.desc : meta.descEn,\n          type: meta.type,\n          value: (defaultToken as any)[token],\n        }));\n    });\n\n    return () => {\n      return (\n        <Table\n          dataSource={data.value}\n          columns={columns}\n          pagination={false}\n          bordered\n          {...attrs}\n          v-slots={{\n            bodyCell: ({ text, record, column }) => {\n              if (column.key === 'type') {\n                return (\n                  <span\n                    style={{\n                      margin: '0 1px',\n                      padding: '0.2em 0.4em',\n                      fontSize: '0.9em',\n                      background: `${token.value.siteMarkdownCodeBg}`,\n                      border: `1px solid ${token.value.colorSplit}`,\n                      borderRadius: '3px',\n                      fontFamily: 'monospace',\n                    }}\n                  >\n                    {record.type}\n                  </span>\n                );\n              }\n              if (column.key === 'value') {\n                const isColor =\n                  typeof record.value === 'string' &&\n                  (record.value.startsWith('#') || record.value.startsWith('rgb'));\n                if (isColor) {\n                  return <ColorChunk color={record.value}>{record.value}</ColorChunk>;\n                }\n                return (\n                  <span>\n                    {typeof record.value !== 'string' ? JSON.stringify(record.value) : record.value}\n                  </span>\n                );\n              }\n              return <span>{text} </span>;\n            },\n          }}\n        ></Table>\n      );\n    };\n  },\n});\nexport default TokenTable;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/ColorPanel.tsx",
    "content": "import type { InputProps } from 'ant-design-vue';\nimport { ConfigProvider, Input, InputNumber, Select, theme } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType } from 'vue';\nimport { defineComponent, watchEffect, computed, toRefs, ref } from 'vue';\nimport { HexColorPicker, RgbaColorPicker } from '../vue-colorful';\nimport tinycolor from 'tinycolor2';\nimport makeStyle from './utils/makeStyle';\nimport type { ValueType } from 'ant-design-vue/es/input-number/src/utils/MiniDecimal';\n\nconst { useToken } = theme;\n\nconst useStyle = makeStyle('ColorPanel', token => ({\n  '.color-panel': {\n    padding: 12,\n    backgroundColor: '#fff',\n    borderRadius: 12,\n    border: '1px solid rgba(0, 0, 0, 0.06)',\n    boxShadow: token.boxShadow,\n    width: 224,\n    boxSizing: 'border-box',\n\n    '.color-panel-mode': {\n      display: 'flex',\n      alignItems: 'center',\n      marginBottom: 6,\n    },\n    '.color-panel-preview': {\n      width: 24,\n      height: 24,\n      borderRadius: 4,\n      boxShadow: '0 2px 3px -1px rgba(0,0,0,0.20), inset 0 0 0 1px rgba(0,0,0,0.09)',\n      flex: 'none',\n      overflow: 'hidden',\n      background:\n        'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAFpJREFUWAntljEKADAIA23p6v//qQ+wfUEcCu1yriEgp0FHRJSJcnehmmWm1Dv/lO4HIg1AAAKjTqm03ea88zMCCEDgO4HV5bS757f+7wRoAAIQ4B9gByAAgQ3pfiDmXmAeEwAAAABJRU5ErkJggg==) 0% 0% / 32px',\n    },\n    '.color-panel-preset-colors': {\n      paddingTop: 12,\n      display: 'flex',\n      flexWrap: 'wrap',\n      width: 200,\n    },\n    '.color-panel-preset-color-btn': {\n      borderRadius: 4,\n      width: 20,\n      height: 20,\n      border: 'none',\n      outline: 'none',\n      margin: 4,\n      cursor: 'pointer',\n      boxShadow: '0 2px 3px -1px rgba(0,0,0,0.20), inset 0 0 0 1px rgba(0,0,0,0.09)',\n    },\n    '.color-panel-mode-title': {\n      color: token.colorTextPlaceholder,\n      marginTop: 2,\n      fontSize: 12,\n      textAlign: 'center',\n    },\n    '.color-panel-rgba-input': {\n      display: 'flex',\n      alignItems: 'center',\n      '&-part': {\n        flex: 1,\n        width: 0,\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n\n        '&-title': {\n          color: token.colorTextPlaceholder,\n          marginTop: 2,\n          fontSize: 12,\n        },\n\n        '&:not(:last-child)': {\n          marginRight: 4,\n        },\n\n        [`${token.rootCls}-input-number`]: {\n          width: '100%',\n          input: {\n            fontSize: 12,\n            padding: '0 4px',\n          },\n        },\n      },\n    },\n  },\n}));\n\nexport type HexColorInputProps = {\n  value: string;\n  onChange?: (value: string) => void;\n  alpha?: boolean;\n};\n\nconst getHexValue = (value: string, alpha = false) => {\n  return alpha ? tinycolor(value).toHex8() : tinycolor(value).toHex();\n};\nconst HexColorInput = defineComponent({\n  name: 'HexColorInput',\n  props: {\n    value: { type: String },\n    alpha: { type: Boolean },\n    onChange: { type: Function as PropType<(value: string) => void> },\n  },\n  setup(props) {\n    const { value, alpha } = toRefs(props);\n\n    const hexValue = ref<string>(value.value);\n    const focusRef = ref<boolean>(false);\n\n    const handleChange: InputProps['onChange'] = e => {\n      hexValue.value = e.target.value;\n      props.onChange(getHexValue(e.target.value, alpha.value));\n    };\n\n    const handleBlur: InputProps['onBlur'] = (e: any) => {\n      focusRef.value = false;\n      hexValue.value = getHexValue(e.target.value, alpha.value);\n    };\n\n    const handleFocus = () => {\n      focusRef.value = true;\n    };\n\n    watchEffect(() => {\n      if (!focusRef.value) {\n        hexValue.value = getHexValue(value.value, alpha.value);\n      }\n    });\n\n    return () => {\n      return (\n        <div>\n          <Input\n            size=\"small\"\n            value={hexValue.value}\n            onFocus={handleFocus}\n            onChange={handleChange}\n            onBlur={handleBlur}\n            v-slots={{\n              prefix: () => '#',\n            }}\n          />\n          <div class=\"color-panel-mode-title\">HEX{alpha.value ? '8' : ''}</div>\n        </div>\n      );\n    };\n  },\n});\n\ntype RgbaColor = tinycolor.ColorFormats.RGBA;\n\nexport type RgbColorInputProps = {\n  value?: RgbaColor;\n  onChange?: (value: RgbaColor) => void;\n  alpha?: boolean;\n};\n\nconst RgbColorInput = defineComponent({\n  name: 'RgbColorInput',\n  props: {\n    value: { type: Object as PropType<RgbaColor>, default: () => ({ r: 0, g: 0, b: 0, a: 1 }) },\n    onChange: { type: Function as PropType<(value: RgbaColor) => void> },\n    alpha: { type: Boolean },\n  },\n  setup(props) {\n    const { value, alpha } = toRefs(props);\n\n    const handleChange = (val: ValueType, key: 'r' | 'g' | 'b' | 'a') => {\n      value.value[key] = val;\n      props.onChange(value.value);\n    };\n    return () => {\n      return (\n        <div class=\"color-panel-rgba-input\">\n          <ConfigProvider theme={{ components: { InputNumber: { handleWidth: 12 } } }}>\n            <div class=\"color-panel-rgba-input-part\">\n              <InputNumber\n                min={0}\n                max={255}\n                size=\"small\"\n                value={value.value.r}\n                onChange={val => handleChange(val, 'r')}\n              />\n              <div class=\"color-panel-mode-title\">R</div>\n            </div>\n            <div class=\"color-panel-rgba-input-part\">\n              <InputNumber\n                min={0}\n                max={255}\n                size=\"small\"\n                value={value.value.g}\n                onChange={val => handleChange(val, 'g')}\n              />\n              <div class=\"color-panel-mode-title\">G</div>\n            </div>\n            <div class=\"color-panel-rgba-input-part\">\n              <InputNumber\n                min={0}\n                max={255}\n                size=\"small\"\n                value={value.value.b}\n                onChange={val => handleChange(val, 'b')}\n              />\n              <div class=\"color-panel-mode-title\">B</div>\n            </div>\n            {alpha.value && (\n              <div class=\"color-panel-rgba-input-part\">\n                <InputNumber\n                  min={0}\n                  max={1}\n                  step={0.01}\n                  size=\"small\"\n                  value={value.value.a}\n                  onChange={val => handleChange(val, 'a')}\n                />\n                <div class=\"color-panel-mode-title\">A</div>\n              </div>\n            )}\n          </ConfigProvider>\n        </div>\n      );\n    };\n  },\n});\n\nexport type ColorPanelProps = {\n  color: string;\n  onChange: (color: string) => void;\n  alpha?: boolean;\n};\n\nconst colorModes = ['HEX', 'HEX8', 'RGB', 'RGBA'] as const;\n\ntype ColorMode = (typeof colorModes)[number];\n\nconst getColorStr = (color: any, mode: ColorMode) => {\n  switch (mode) {\n    case 'HEX':\n      return tinycolor(color).toHexString();\n    case 'HEX8':\n      return tinycolor(color).toHex8String();\n    case 'RGBA':\n    case 'RGB':\n    default:\n      return tinycolor(color).toRgbString();\n  }\n};\nconst ColorPanel = defineComponent({\n  name: 'ColorPanel',\n  inheritAttrs: false,\n  props: {\n    color: { type: String },\n    onChange: { type: Function as PropType<(color: string) => void> },\n    alpha: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { color, alpha } = toRefs(props);\n\n    const { token } = useToken();\n    const [wrapSSR, hashId] = useStyle();\n    const colorMode = ref<ColorMode>('HEX');\n\n    const presetColors = computed(() => {\n      return [\n        token.value.blue,\n        token.value.purple,\n        token.value.cyan,\n        token.value.green,\n        token.value.magenta,\n        token.value.pink,\n        token.value.red,\n        token.value.orange,\n        token.value.yellow,\n        token.value.volcano,\n        token.value.geekblue,\n        token.value.gold,\n        token.value.lime,\n        '#000',\n      ];\n    });\n\n    const handleColorModeChange = (value: ColorMode) => {\n      colorMode.value = value;\n      props.onChange(getColorStr(color.value, value));\n    };\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames(hashId.value, 'color-panel')}>\n          {(colorMode.value === 'HEX' || colorMode.value === 'RGB') && (\n            <HexColorPicker\n              style={{ height: '160px' }}\n              color={tinycolor(color.value).toHex()}\n              onChange={value => {\n                props.onChange(getColorStr(value, colorMode.value));\n              }}\n            />\n          )}\n          {(colorMode.value === 'RGBA' || colorMode.value === 'HEX8') && (\n            <RgbaColorPicker\n              style={{ height: '160px' }}\n              color={tinycolor(color.value).toRgb()}\n              onChange={value => {\n                props.onChange(getColorStr(value, colorMode.value));\n              }}\n            />\n          )}\n          <div style={{ marginTop: '12px' }}>\n            <div class=\"color-panel-mode\">\n              <div class=\"color-panel-preview\">\n                <div style={{ backgroundColor: color.value, width: '100%', height: '100%' }} />\n              </div>\n              <Select\n                value={colorMode.value}\n                onChange={handleColorModeChange}\n                options={colorModes\n                  .filter(item => alpha.value || item === 'HEX' || item === 'RGB')\n                  .map(item => ({ value: item, key: item }))}\n                size=\"small\"\n                bordered={false}\n                dropdownMatchSelectWidth={false}\n              />\n            </div>\n            {colorMode.value === 'HEX' && (\n              <HexColorInput\n                value={tinycolor(color.value).toHex()}\n                onChange={v => props.onChange(tinycolor(v).toHexString())}\n              />\n            )}\n            {colorMode.value === 'HEX8' && (\n              <HexColorInput\n                alpha\n                value={tinycolor(color.value).toHex8()}\n                onChange={v => props.onChange(tinycolor(v).toHex8String())}\n              />\n            )}\n            {(colorMode.value === 'RGBA' || colorMode.value === 'RGB') && (\n              <RgbColorInput\n                alpha={colorMode.value === 'RGBA'}\n                value={tinycolor(color.value).toRgb()}\n                onChange={v => props.onChange(tinycolor(v).toRgbString())}\n              />\n            )}\n          </div>\n          <div class=\"color-panel-preset-colors\">\n            {presetColors.value.map(presetColor => (\n              <button\n                key={presetColor}\n                class=\"color-panel-preset-color-btn\"\n                style={{ backgroundColor: presetColor }}\n                onClick={() => props.onChange(presetColor)}\n              />\n            ))}\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default ColorPanel;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/ColorPreview.tsx",
    "content": "import { defineComponent, toRefs } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport makeStyle from './utils/makeStyle';\nimport getColorBgImg from './utils/getColorBgImg';\n\nexport type ColorPreviewProps = {\n  color: string;\n  dark?: boolean;\n};\n\nconst useStyle = makeStyle('ColorPreview', () => ({\n  '.previewer-color-preview': {\n    width: '20px',\n    height: '20px',\n    position: 'relative',\n    borderRadius: '50%',\n    padding: 0,\n    display: 'inline-block',\n\n    '&::before': {\n      content: '\"\"',\n      width: '100%',\n      height: '100%',\n      borderRadius: '50%',\n      top: 0,\n      insetInlineStart: 0,\n      position: 'absolute',\n      zIndex: 2,\n      backgroundColor: 'var(--antd-token-previewer-color-preview)',\n      boxShadow: '0 2px 3px -1px rgba(0,0,0,0.20), inset 0 0 0 1px rgba(0,0,0,0.09)',\n    },\n  },\n}));\n\nconst ColorPreview = defineComponent({\n  name: 'ColorPreview',\n  inheritAttrs: false,\n  props: {\n    color: { type: String },\n    dark: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { color, dark } = toRefs(props);\n\n    const [warpSSR, hashId] = useStyle();\n\n    return () => {\n      return warpSSR(\n        <div\n          {...attrs}\n          class={classNames('previewer-color-preview', attrs.class, hashId.value)}\n          style={[\n            {\n              // @ts-ignore\n              ['--antd-token-previewer-color-preview']: color.value,\n              ...(attrs.style as CSSProperties),\n            },\n          ]}\n        >\n          <div\n            style={{\n              content: '\"\"',\n              width: '18px',\n              height: '18px',\n              borderRadius: '50%',\n              top: '1px',\n              insetInlineStart: '1px',\n              position: 'absolute',\n              zIndex: 1,\n              background: `${getColorBgImg(dark.value)} 0% 0% / 20px`,\n            }}\n          />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default ColorPreview;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/FilterPanel.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, toRefs, ref } from 'vue';\nimport makeStyle from './utils/makeStyle';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport { Segmented, Tag } from 'ant-design-vue';\n\nconst useStyle = makeStyle('FilterPanel', token => ({\n  '.previewer-filter-panel': {\n    // boxShadow:\n    //   '0 2px 4px 0 rgba(0,0,0,0.05), 0 1px 2px 0 rgba(25,15,15,0.07), 0 0 1px 0 rgba(0,0,0,0.08)',\n    // backgroundColor: '#fff',\n    // borderRadius: 6,\n    // padding: '8px 12px',\n    overflow: 'hidden',\n    display: 'flex',\n    alignItems: 'start',\n\n    '.component-tree-head': {\n      display: 'flex',\n      alignItems: 'center',\n      flex: 'none',\n      marginInlineEnd: 20,\n\n      '.component-tree-filter-type': {\n        color: token.colorTextSecondary,\n        marginInlineEnd: token.marginXS,\n        fontSize: token.fontSizeSM,\n      },\n\n      '.component-tree-filter-segmented': {\n        fontSize: token.fontSizeSM,\n      },\n    },\n\n    '.preview-panel-subtitle': {\n      fontSize: token.fontSizeSM,\n      color: token.colorTextSecondary,\n    },\n\n    [`${token.rootCls}-tag.previewer-token-filter-tag`]: {\n      color: token.colorPrimary,\n      backgroundColor: 'rgba(22,119,255,0.10)',\n      border: 'none',\n      borderRadius: 4,\n\n      '> .anticon': {\n        color: token.colorPrimary,\n      },\n    },\n  },\n}));\n\nexport type FilterMode = 'highlight' | 'filter';\n\nexport type FilterPanelProps = {\n  filterMode?: FilterMode;\n  onFilterModeChange?: (mode: FilterMode) => void;\n  selectedTokens: string[];\n  onSelectedTokensChange?: (newTokens: string[]) => void;\n  onTokenClick?: (token: string) => void;\n  className?: string;\n  style?: CSSProperties;\n};\n\nconst FilterPanel = defineComponent({\n  name: 'FilterPanel',\n  inheritAttrs: false,\n  props: {\n    filterMode: { type: String as PropType<FilterMode> },\n    onFilterModeChange: { type: Function as PropType<(mode: FilterMode) => void> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    onSelectedTokensChange: { type: Function as PropType<(newTokens: string[]) => void> },\n    onTokenClick: { type: Function as PropType<(token: string) => void> },\n  },\n  setup(props, { attrs }) {\n    const { filterMode: customFilterMode, selectedTokens } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const filterMode = ref<FilterMode>(customFilterMode.value || 'filter');\n\n    return () => {\n      if (selectedTokens.value.length === 0) {\n        return null;\n      }\n      return wrapSSR(\n        <div {...attrs} class={classNames('previewer-filter-panel', hashId.value, attrs.class)}>\n          {selectedTokens.value && selectedTokens.value.length > 0 && (\n            <>\n              <div class=\"component-tree-head\">\n                <div class=\"component-tree-filter-type\">筛选方式：</div>\n                <Segmented\n                  class=\"component-tree-filter-segmented\"\n                  size=\"small\"\n                  value={filterMode.value}\n                  onChange={value => {\n                    props.onFilterModeChange?.(value as any);\n                    filterMode.value = value as any;\n                  }}\n                  options={[\n                    { label: '过滤', value: 'filter' },\n                    { label: '高亮', value: 'highlight' },\n                  ]}\n                />\n              </div>\n              <div>\n                <span class=\"preview-panel-subtitle\">已选中：</span>\n                {selectedTokens.value.map(token => (\n                  <Tag\n                    key={token}\n                    closable\n                    onClose={() =>\n                      props.onSelectedTokensChange?.(\n                        selectedTokens.value?.filter(item => item !== token),\n                      )\n                    }\n                    style={{ marginBlock: '2px', cursor: 'pointer' }}\n                    class=\"previewer-token-filter-tag\"\n                    onClick={() => props.onTokenClick?.(token)}\n                  >\n                    {token}\n                  </Tag>\n                ))}\n              </div>\n            </>\n          )}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default FilterPanel;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/IconSwitch.tsx",
    "content": "import classNames from 'ant-design-vue/es/_util/classNames';\nimport makeStyle from './utils/makeStyle';\nimport type { PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\n\nconst useStyle = makeStyle('IconSwitch', () => {\n  const activeBackground = '#314659';\n  return {\n    '.theme-editor-icon-switch': {\n      display: 'inline-block',\n\n      '.holder': {\n        position: 'relative',\n        display: 'inline-flex',\n        background: '#ebedf0',\n        borderRadius: '100vw',\n        cursor: 'pointer',\n        transition: 'all 0.3s',\n\n        '&::before': {\n          position: 'absolute',\n          top: 0,\n          left: 'calc(100% - 32px)',\n          width: 32,\n          height: 32,\n          background: activeBackground,\n          borderRadius: '100vw',\n          transition: 'all 0.3s',\n          content: '\"\"',\n        },\n\n        '&.leftChecked::before': {\n          left: 0,\n        },\n\n        '&:hover': {\n          boxShadow: '0 0 3px fade(@active-background, 40%)',\n        },\n      },\n\n      '.icon': {\n        position: 'relative',\n        width: 32,\n        height: 32,\n        color: '#a3b1bf',\n        lineHeight: '32px',\n        textAlign: 'center',\n        transition: 'all 0.3s',\n        fontSize: 16,\n\n        '.anticon': {\n          fontSize: 14,\n        },\n\n        '&:first-child': {\n          marginInlineEnd: -4,\n        },\n\n        '&.active': {\n          color: '#fff',\n        },\n      },\n    },\n  };\n});\n\nexport interface IconSwitchProps {\n  leftChecked?: boolean;\n  onChange?: (leftChecked: boolean) => void;\n}\nconst IconSwitch = defineComponent({\n  name: 'IconSwitch',\n  props: {\n    leftChecked: { type: Boolean },\n    onChange: { type: Function as PropType<(leftChecked: boolean) => void> },\n  },\n  setup(props, { attrs, slots }) {\n    const { leftChecked } = toRefs(props);\n    const [wrapSSR, hashId] = useStyle();\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames('theme-editor-icon-switch', attrs.class, hashId.value)}>\n          <div\n            class={classNames('holder', leftChecked.value && 'leftChecked')}\n            onClick={() => {\n              props.onChange(!leftChecked.value);\n            }}\n          >\n            <span class={classNames('icon', leftChecked.value && 'active')}>\n              {slots.leftIcon && slots.leftIcon()}\n            </span>\n            <span class={classNames('icon', !leftChecked.value && 'active')}>\n              {slots.rightIcon && slots.rightIcon()}\n            </span>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\nexport default IconSwitch;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/PreviewDemo.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\nimport { antdComponents } from './component-panel';\nimport type { Theme } from './interface';\nimport ComponentDemoPro from './token-panel-pro/ComponentDemoPro';\n\nexport type PreviewDemoProps = {\n  theme: Theme;\n};\n\nconst PreviewDemo = defineComponent({\n  name: 'PreviewDemo',\n  props: {\n    theme: { type: Object as PropType<Theme> },\n  },\n  setup(props, { attrs }) {\n    const { theme } = toRefs(props);\n\n    return () => {\n      return (\n        <div {...attrs} style={{ ...(attrs.style as CSSProperties), overflow: 'auto' }}>\n          <ComponentDemoPro\n            theme={theme.value}\n            components={antdComponents}\n            componentDrawer={false}\n            showAll\n            style={{ minHeight: '100%' }}\n          />\n        </div>\n      );\n    };\n  },\n});\n\nexport default PreviewDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/ThemeEditor.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, computed } from 'vue';\nimport type { DerivativeFunc } from 'ant-design-vue/es/_util/cssinjs';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { SelectedToken, Theme } from './interface';\nimport type { Locale } from './locale';\nimport { useProvideLocaleContext, zhCN } from './locale';\nimport { mapRelatedAlias, seedRelatedAlias, seedRelatedMap } from './meta/TokenRelation';\nimport { getRelatedComponents } from './utils/statistic';\nimport makeStyle from './utils/makeStyle';\nimport useControlledTheme from './hooks/useControlledTheme';\n\nimport type { TokenPanelProProps } from './token-panel-pro';\nimport TokenPanelPro from './token-panel-pro';\nimport ComponentDemoPro from './token-panel-pro/ComponentDemoPro';\nimport { antdComponents } from './component-panel';\n\nconst useStyle = makeStyle('ThemeEditor', token => ({\n  '.antd-theme-editor': {\n    backgroundColor: token.colorBgLayout,\n    display: 'flex',\n  },\n}));\n\nconst defaultTheme: Theme = {\n  name: '默认主题',\n  key: 'default',\n  config: {},\n};\n\nexport type ThemeEditorProps = {\n  /**\n   * @deprecated\n   * @default true\n   */\n  simple?: boolean;\n  theme?: Theme;\n  onThemeChange?: (theme: Theme) => void;\n  darkAlgorithm?: DerivativeFunc<any, any>;\n  locale?: Locale;\n};\n\nconst ThemeEditor = defineComponent({\n  name: 'ThemeEditor',\n  inheritAttrs: false,\n  props: {\n    simple: { type: Boolean },\n    theme: { type: Object as PropType<Theme> },\n    onThemeChange: { type: Function as PropType<(theme: Theme) => void> },\n    darkAlgorithm: { type: Function as PropType<DerivativeFunc<any, any>> },\n    locale: { type: Object as PropType<Locale>, default: zhCN },\n  },\n  setup(props, { attrs, expose }) {\n    const { theme: customTheme, darkAlgorithm, locale } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const selectedTokens = ref<SelectedToken>({\n      seed: ['colorPrimary'],\n    });\n\n    const aliasOpen = ref<boolean>(false);\n\n    const { theme, infoFollowPrimary, onInfoFollowPrimaryChange, updateRef } = useControlledTheme({\n      theme: customTheme,\n      defaultTheme,\n      onChange: props.onThemeChange,\n      darkAlgorithm,\n    });\n\n    const handleTokenSelect: TokenPanelProProps['onTokenSelect'] = (token, type) => {\n      const tokens = typeof token === 'string' ? (token ? [token] : []) : token;\n      if (type === 'seed') {\n        return {\n          seed: tokens,\n        };\n      }\n\n      let newSelectedTokens = { ...selectedTokens.value };\n      tokens.forEach(newToken => {\n        newSelectedTokens = {\n          ...selectedTokens.value,\n          [type]: selectedTokens.value[type]?.includes(newToken)\n            ? selectedTokens.value[type]?.filter(t => t !== newToken)\n            : [...(selectedTokens.value[type] ?? []), newToken],\n        };\n      });\n      if (type === 'map') {\n        delete newSelectedTokens.alias;\n      }\n      selectedTokens.value = newSelectedTokens;\n    };\n\n    const computedSelectedTokens = computed(() => {\n      if (\n        selectedTokens.value.seed?.length &&\n        !selectedTokens.value.map?.length &&\n        !selectedTokens.value.alias?.length\n      ) {\n        return [\n          ...selectedTokens.value.seed,\n          ...((seedRelatedMap as any)[selectedTokens.value.seed[0]] ?? []),\n          ...((seedRelatedAlias as any)[selectedTokens.value.seed[0]] ?? []),\n        ];\n      }\n      if (selectedTokens.value.map?.length && !selectedTokens.value.alias?.length) {\n        return [\n          ...selectedTokens.value.map,\n          ...selectedTokens.value.map.reduce((result, item) => {\n            return result.concat((mapRelatedAlias as any)[item]);\n          }, []),\n        ];\n      }\n      if (selectedTokens.value.alias?.length) {\n        return [...selectedTokens.value.alias];\n      }\n      return [];\n    });\n\n    const relatedComponents = computed(() => {\n      return computedSelectedTokens.value ? getRelatedComponents(computedSelectedTokens.value) : [];\n    });\n\n    expose({\n      updateRef,\n    });\n\n    useProvideLocaleContext(locale);\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames(hashId.value, 'antd-theme-editor', attrs.class)}>\n          <div\n            style={{\n              flex: aliasOpen.value ? '0 0 860px' : `0 0 ${860 - 320}px`,\n              height: '100%',\n              backgroundColor: '#F7F8FA',\n              backgroundImage: 'linear-gradient(180deg, #FFFFFF 0%, rgba(246,247,249,0.00) 100%)',\n              display: 'flex',\n              transition: 'all 0.3s',\n            }}\n          >\n            <TokenPanelPro\n              aliasOpen={aliasOpen.value}\n              onAliasOpenChange={open => (aliasOpen.value = open)}\n              theme={theme.value}\n              style={{ flex: 1 }}\n              selectedTokens={selectedTokens.value}\n              onTokenSelect={handleTokenSelect}\n              infoFollowPrimary={infoFollowPrimary.value}\n              onInfoFollowPrimaryChange={onInfoFollowPrimaryChange}\n            />\n          </div>\n          <ComponentDemoPro\n            theme={theme.value}\n            components={antdComponents}\n            activeComponents={relatedComponents.value}\n            selectedTokens={computedSelectedTokens.value}\n            style={{ flex: 1, overflow: 'auto' }}\n            componentDrawer\n          />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default ThemeEditor;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/ThemeSelect.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, computed } from 'vue';\nimport makeStyle from './utils/makeStyle';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport { Button, Dropdown, Menu } from 'ant-design-vue';\nimport { CloseOutlined, PlusOutlined } from '@ant-design/icons-vue';\nimport type { Theme } from './interface';\n\ninterface ThemeItem extends Theme {\n  icon?: any;\n  closable?: boolean;\n  fixed?: boolean;\n}\n\nexport type ThemeSelectProps = {\n  onEnabledThemeChange: (themes: string[]) => void;\n  onShownThemeChange: (\n    themes: string[],\n    selectTheme: string,\n    info: { type: 'select' | 'deselect' },\n  ) => void;\n  enabledThemes: string[];\n  shownThemes: string[];\n  themes: ThemeItem[];\n  showAddTheme?: boolean;\n};\n\nconst useStyle = makeStyle('ThemeSelect', token => ({\n  '.previewer-theme-select': {\n    padding: `${token.paddingXXS}px ${token.paddingXS}px`,\n    borderRadius: 4,\n    backgroundColor: 'rgba(0, 0, 0, 0.02)',\n    height: token.controlHeight,\n    display: 'flex',\n    alignItems: 'center',\n    overflow: 'hidden',\n\n    [`${token.rootCls}-btn.previewer-theme-select-add-btn`]: {\n      minWidth: 0,\n      width: 16,\n      height: 16,\n      fontSize: 8,\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      marginInlineStart: token.marginSM,\n      boxShadow: 'none',\n    },\n\n    '.previewer-theme-select-tag': {\n      height: 22,\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      boxSizing: 'border-box',\n      borderRadius: 4,\n      backgroundColor: token.colorBgContainer,\n      border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n      paddingInline: 10,\n      fontSize: token.fontSizeSM,\n      position: 'relative',\n      cursor: 'pointer',\n      // transition: `all ${token.motionDurationMid}`,\n\n      '&:not(:last-child)': {\n        marginInlineEnd: token.marginXS,\n      },\n\n      '&.previewer-theme-select-tag-active': {\n        border: `${token.lineWidth}px ${token.lineType} ${token['blue-1']}`,\n        backgroundColor: 'rgba(22,119,255,0.10)',\n        color: token.colorPrimary,\n\n        '&::after': {\n          content: '\"\"',\n          borderStartEndRadius: 2,\n          position: 'absolute',\n          insetInlineEnd: 2,\n          top: 2,\n          width: 6,\n          height: 6,\n          background: `linear-gradient(to right top, transparent, transparent 50%, ${token.colorPrimary} 50%, ${token.colorPrimary} 100%)`,\n        },\n      },\n\n      '.previewer-theme-select-tag-close-btn': {\n        position: 'absolute',\n        top: -2,\n        insetInlineEnd: -2,\n        width: 12,\n        height: 12,\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        background: token.colorBgContainer,\n        boxShadow:\n          '0 2px 8px -2px rgba(0,0,0,0.05), 0 1px 4px -1px rgba(25,15,15,0.07), 0 0 1px 0 rgba(0,0,0,0.08)',\n        borderRadius: '50%',\n        opacity: 0,\n        pointerEvents: 'none',\n        zIndex: 2,\n        color: token.colorIcon,\n\n        '> .anticon': {\n          fontSize: 6,\n        },\n      },\n\n      '&:hover': {\n        '.previewer-theme-select-tag-close-btn': {\n          opacity: 1,\n          pointerEvents: 'initial',\n        },\n      },\n    },\n  },\n\n  '.previewer-theme-select-dropdown': {\n    '.previewer-theme-select-dropdown-title': {\n      [`${token.rootCls}-dropdown-menu-item-group-title`]: {\n        fontSize: token.fontSizeSM,\n        paddingBottom: token.padding,\n        paddingTop: 10,\n      },\n    },\n  },\n}));\n\nconst ThemeSelect = defineComponent({\n  name: 'ThemeSelect',\n  inheritAttrs: false,\n  props: {\n    onEnabledThemeChange: { type: Function as PropType<(themes: string[]) => void> },\n    onShownThemeChange: {\n      type: Function as PropType<\n        (themes: string[], selectTheme: string, info: { type: 'select' | 'deselect' }) => void\n      >,\n    },\n    enabledThemes: { type: Array as PropType<string[]> },\n    shownThemes: { type: Array as PropType<string[]> },\n    themes: { type: Array as PropType<ThemeItem[]> },\n    showAddTheme: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { enabledThemes, shownThemes, themes, showAddTheme } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const dropdownItems = computed(() => [\n      {\n        disabled: true,\n        label: '添加主题即可预览',\n        className: 'previewer-theme-select-dropdown-title',\n        type: 'group',\n        key: 'add-theme-to-preview',\n      },\n      ...themes.value\n        .filter(theme => !shownThemes.value.includes(theme.key))\n        .map(theme => ({\n          icon: theme.icon,\n          value: theme.key,\n          label: theme.name,\n          key: theme.key,\n          onClick: () => {\n            props.onShownThemeChange([...shownThemes.value, theme.key], theme.key, {\n              type: 'select',\n            });\n          },\n        })),\n    ]);\n\n    const shownThemeEntities = computed(() =>\n      themes.value.filter(theme => shownThemes.value.includes(theme.key)),\n    );\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames('previewer-theme-select', hashId.value, attrs.class)}>\n          {shownThemeEntities.value.map(theme => (\n            <span\n              onClick={() => {\n                if (theme.fixed) {\n                  return;\n                }\n                props.onEnabledThemeChange(\n                  enabledThemes.value.includes(theme.key)\n                    ? enabledThemes.value.filter(item => item !== theme.key)\n                    : [...enabledThemes.value, theme.key],\n                );\n              }}\n              key={theme.key}\n              class={classNames('previewer-theme-select-tag', {\n                'previewer-theme-select-tag-active': enabledThemes.value.includes(theme.key),\n              })}\n            >\n              {theme.name}\n              {theme.closable && (\n                <span\n                  class=\"previewer-theme-select-tag-close-btn\"\n                  onClick={e => {\n                    e.stopPropagation();\n                    props.onEnabledThemeChange(\n                      enabledThemes.value.filter(item => item !== theme.key),\n                    );\n                    props.onShownThemeChange(\n                      shownThemes.value.filter(item => item !== theme.key),\n                      theme.key,\n                      { type: 'deselect' },\n                    );\n                  }}\n                >\n                  <CloseOutlined />\n                </span>\n              )}\n            </span>\n          ))}\n          {showAddTheme.value && (\n            <Dropdown\n              placement=\"bottomRight\"\n              trigger={['click']}\n              overlayClassName={classNames('previewer-theme-select-dropdown', hashId.value)}\n              v-slots={{\n                overlay: () => <Menu items={dropdownItems.value} />,\n              }}\n            >\n              <Button\n                type=\"primary\"\n                shape=\"circle\"\n                class=\"previewer-theme-select-add-btn\"\n                icon={<PlusOutlined />}\n              />\n            </Dropdown>\n          )}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default ThemeSelect;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/TokenInput.tsx",
    "content": "import { Button, Popover, Input, InputNumber } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType } from 'vue';\nimport { defineComponent, toRefs, computed, ref, watch } from 'vue';\nimport { debounce } from 'lodash';\nimport ColorPanel from './ColorPanel';\nimport ColorPreview from './ColorPreview';\nimport type { MutableTheme } from './interface';\nimport { useInjectLocaleContext } from './locale';\nimport isColor from './utils/isColor';\nimport makeStyle from './utils/makeStyle';\n\nconst useStyle = makeStyle('TokenInput', token => ({\n  '.previewer-token-input': {\n    [`${token.rootCls}-input-group-addon, ${token.rootCls}-input-number-group-addon`]: {\n      border: '0 !important',\n      color: `rgba(0, 0, 0, 0.25) !important`,\n      fontSize: `${token.fontSizeSM}px !important`,\n      padding: '0 !important',\n      backgroundColor: 'transparent !important',\n\n      '&:first-child': {\n        paddingInlineStart: 0,\n      },\n\n      '&:last-child': {\n        paddingInlineEnd: 0,\n      },\n    },\n\n    [`${token.rootCls}-input-group-wrapper, ${token.rootCls}-input-number-group-wrapper`]: {\n      padding: 0,\n      height: 24,\n      width: '100%',\n\n      input: {\n        fontSize: token.fontSizeSM,\n        lineHeight: token.lineHeightSM,\n        padding: `2px ${token.paddingXS}px`,\n        height: 24,\n      },\n    },\n\n    [`${token.rootCls}-input-group-wrapper ${token.rootCls}-input, ${token.rootCls}-input-number-group-wrapper ${token.rootCls}-input-number`]:\n      {\n        background: 'white',\n        borderRadius: `${token.borderRadiusLG}px !important`,\n        whiteSpace: 'nowrap',\n        textOverflow: 'ellipsis',\n      },\n\n    '&&-light': {\n      [`${token.rootCls}-input-group-addon, ${token.rootCls}-input-number-group-addon`]: {\n        backgroundColor: token.colorBgContainer,\n      },\n\n      [`${token.rootCls}-input-group-wrapper ${token.rootCls}-input,\n        ${token.rootCls}-input-number-group-wrapper ${token.rootCls}-input-number-input`]: {\n        background: token.colorFillAlter,\n      },\n    },\n\n    '&&-readonly': {\n      input: {\n        cursor: 'text',\n        color: token.colorText,\n      },\n    },\n  },\n}));\n\nexport type TokenInputProps = {\n  theme?: MutableTheme;\n  value?: string | number;\n  onChange?: (value: string | number) => void;\n  light?: boolean;\n  readonly?: boolean;\n  onReset?: () => void;\n  canReset?: boolean;\n  hideTheme?: boolean;\n};\n\nconst TokenInput = defineComponent({\n  name: 'TokenInput',\n  inheritAttrs: false,\n  props: {\n    theme: { type: Object as PropType<MutableTheme> },\n    value: { type: [String, Number] },\n    onChange: { type: Function as PropType<(value: string | number) => void> },\n    light: { type: Boolean },\n    readonly: { type: Boolean },\n    onReset: { type: Function as PropType<() => void> },\n    canReset: { type: Boolean },\n    hideTheme: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { value, theme, light, readonly, canReset: customCanReset, hideTheme } = toRefs(props);\n\n    const valueRef = ref<number | string>(value.value || '');\n\n    const tokenValue = ref<string | number>(value.value || '');\n\n    const canReset = computed(() => customCanReset.value ?? valueRef.value !== tokenValue.value);\n\n    const locale = useInjectLocaleContext();\n\n    const [wrapSSR, hashId] = useStyle();\n\n    watch(\n      value,\n      val => {\n        if (val !== undefined) {\n          tokenValue.value = val;\n        }\n      },\n      { immediate: true },\n    );\n\n    const debouncedOnChange = debounce((newValue: number | string) => {\n      props.onChange?.(newValue);\n    }, 500);\n\n    const handleTokenChange = (newValue: number | string) => {\n      if (!readonly.value) {\n        tokenValue.value = newValue;\n        debouncedOnChange(newValue);\n      }\n    };\n\n    const handleReset = () => {\n      if (props.onReset) {\n        props.onReset();\n      } else {\n        handleTokenChange(valueRef.value);\n      }\n    };\n\n    return () => {\n      const addonAfter = !readonly.value && (\n        <span\n          style={{\n            display: 'flex',\n            alignItems: 'center',\n            minWidth: hideTheme.value ? '' : '80px',\n          }}\n        >\n          {canReset.value || hideTheme.value ? (\n            <Button\n              style={{\n                fontSize: '12px',\n              }}\n              onClick={handleReset}\n              type=\"link\"\n              size=\"small\"\n              disabled={!canReset.value}\n            >\n              {locale.value.reset}\n            </Button>\n          ) : (\n            <span style={{ padding: '0 8px' }}>{theme.value?.name}</span>\n          )}\n        </span>\n      );\n\n      let inputNode;\n      if (typeof valueRef.value === 'string' && isColor(valueRef.value)) {\n        inputNode = (\n          <Input\n            bordered={false}\n            addonAfter={addonAfter}\n            value={String(tokenValue.value)}\n            disabled={readonly.value}\n            addonBefore={\n              <Popover\n                trigger=\"click\"\n                placement=\"bottomRight\"\n                arrow-point-at-center\n                overlayInnerStyle={{ padding: 0 }}\n                v-slots={{\n                  content: () => (\n                    <ColorPanel\n                      alpha\n                      color={String(tokenValue.value)}\n                      style={{ border: 'none' }}\n                      onChange={(v: string) => {\n                        handleTokenChange(v);\n                      }}\n                    />\n                  ),\n                }}\n              >\n                <ColorPreview\n                  color={String(tokenValue.value)}\n                  dark={theme.value?.key === 'dark'}\n                  style={{\n                    cursor: 'pointer',\n                    marginInlineEnd: '8px',\n                    verticalAlign: 'top',\n                  }}\n                />\n              </Popover>\n            }\n            onChange={e => {\n              handleTokenChange(e.target.value);\n            }}\n          />\n        );\n      } else if (typeof valueRef.value === 'number') {\n        inputNode = (\n          <InputNumber\n            addonAfter={addonAfter}\n            bordered={false}\n            value={tokenValue.value}\n            disabled={readonly.value}\n            onChange={newValue => {\n              handleTokenChange(Number(newValue));\n            }}\n          />\n        );\n      } else {\n        inputNode = (\n          <Input\n            addonAfter={addonAfter}\n            bordered={false}\n            value={String(tokenValue.value)}\n            disabled={readonly.value}\n            onChange={e => {\n              handleTokenChange(\n                typeof value.value === 'number' ? Number(e.target.value) : e.target.value,\n              );\n            }}\n          />\n        );\n      }\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={classNames('previewer-token-input', hashId.value, attrs.class, {\n            'previewer-token-input-light': light.value,\n            'previewer-token-input-readonly': readonly.value,\n          })}\n        >\n          {inputNode}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default TokenInput;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/alert.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Alert, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Alert message=\"Success Tips\" type=\"success\" showIcon />\n        <Alert message=\"Informational Notes\" type=\"info\" showIcon />\n        <Alert message=\"Warning\" type=\"warning\" showIcon closable />\n        <Alert message=\"Error\" type=\"error\" showIcon />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorIconHover', 'colorIcon', 'colorText'],\n  key: 'alert',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/error.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Alert, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Alert message=\"Error\" type=\"error\" showIcon />\n\n        <Alert\n          message=\"Error\"\n          description=\"This is an error message about copywriting.\"\n          type=\"error\"\n          showIcon\n        />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorErrorBg', 'colorErrorBorder', 'colorError'],\n  key: 'error',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/index.ts",
    "content": "import Default from './alert';\nimport error from './error';\nimport info from './info';\nimport success from './success';\nimport warning from './warning';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, error, info, success, warning];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/info.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Alert, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Alert message=\"Informational Notes\" type=\"info\" showIcon />\n        <Alert\n          message=\"Informational Notes\"\n          description=\"Additional description and information about copywriting.\"\n          type=\"info\"\n          showIcon\n        />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo', 'colorInfoBorder', 'colorInfoBg'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Alert, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Alert message=\"Success Tips\" type=\"success\" showIcon />\n        <Alert\n          message=\"Success Tips\"\n          description=\"Detailed description and advice about successful copywriting.\"\n          type=\"success\"\n          showIcon\n        />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess', 'colorSuccessBorder', 'colorSuccessBg'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/alert/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Alert, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Alert message=\"Warning\" type=\"warning\" showIcon closable />\n        <Alert\n          message=\"Warning\"\n          description=\"This is a warning notice about copywriting.\"\n          type=\"warning\"\n          showIcon\n          closable\n        />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBorder', 'colorWarningBg'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/anchor/anchor.tsx",
    "content": "import { Anchor } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Link } = Anchor;\nconst Demo = () => {\n  return (\n    <div style={{ padding: '12px' }}>\n      <Anchor>\n        <Link href=\"#\" title=\"Basic demo\" />\n        <Link href=\"#components-anchor-demo-static\" title=\"Static demo\" />\n        <Link href=\"#api\" title=\"API\">\n          <Link href=\"#Anchor-Props\" title=\"Anchor Props\" />\n          <Link href=\"#Link-Props\" title=\"Link Props\" />\n        </Link>\n      </Anchor>\n    </div>\n  );\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorSplit', 'colorBgContainer'],\n  key: 'anchor',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/anchor/anchorInLayout.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Anchor, theme } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Link } = Anchor;\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <div style={{ background: token.value.colorBorderSecondary, padding: '12px' }}>\n          <Anchor>\n            <Link href=\"#components-anchor-demo-basic\" title=\"Basic demo\" />\n            <Link href=\"#components-anchor-demo-static\" title=\"Static demo\" />\n            <Link href=\"#api\" title=\"API\">\n              <Link href=\"#Anchor-Props\" title=\"Anchor Props\" />\n              <Link href=\"#Link-Props\" title=\"Link Props\" />\n            </Link>\n          </Anchor>\n        </div>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSplit'],\n  key: 'anchorInLayout',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/anchor/index.ts",
    "content": "import Demo from './anchor';\nimport AnchorLayout from './anchorInLayout';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, AnchorLayout];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/autoComplete/auto-complete.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { AutoComplete } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst mockVal = (str: string, repeat = 1) => ({\n  value: str.repeat(repeat),\n});\n\nconst Demo = defineComponent({\n  setup() {\n    const value = ref('');\n    const options = ref<{ value: string }[]>([]);\n    const onSearch = (searchText: string) => {\n      options.value = !searchText\n        ? []\n        : [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];\n    };\n    const onSelect = (data: string) => {\n      // eslint-disable-next-line no-console\n      console.log('onSelect', data);\n    };\n    const onChange = (data: string) => {\n      value.value = data;\n    };\n\n    return () => {\n      return (\n        <>\n          {' '}\n          <AutoComplete\n            options={options.value}\n            style={{ width: 200 }}\n            onSelect={onSelect}\n            onSearch={onSearch}\n            placeholder=\"input here\"\n          />{' '}\n          <br /> <br />{' '}\n          <AutoComplete\n            value={value.value}\n            options={options.value}\n            style={{ width: 200 }}\n            onSelect={onSelect}\n            onSearch={onSearch}\n            onChange={onChange}\n            placeholder=\"control mode\"\n          />{' '}\n        </>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [],\n  key: 'autoComplete',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/autoComplete/index.ts",
    "content": "import Default from './auto-complete';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/avatar/avatar.tsx",
    "content": "import { Avatar, Space } from 'ant-design-vue';\nimport { UserOutlined } from '@ant-design/icons-vue';\n\nexport default () => (\n  <Space direction=\"vertical\">\n    <Space>\n      <Avatar size={64} icon={<UserOutlined />} />\n      <Avatar size=\"large\" icon={<UserOutlined />} />\n      <Avatar icon={<UserOutlined />} />\n      <Avatar size=\"small\" icon={<UserOutlined />} />\n    </Space>\n    <Space>\n      <Avatar shape=\"square\" size={64} icon={<UserOutlined />} />\n      <Avatar shape=\"square\" size=\"large\" icon={<UserOutlined />} />\n      <Avatar shape=\"square\" icon={<UserOutlined />} />\n      <Avatar shape=\"square\" size=\"small\" icon={<UserOutlined />} />\n    </Space>\n  </Space>\n);\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/avatar/index.tsx",
    "content": "import Default from './avatar';\n// import Progress from './progress';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [\n  {\n    demo: <Default />,\n    key: 'default',\n  },\n];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/badge/badge.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Badge, Avatar, Space, theme } from 'ant-design-vue';\nimport { ClockCircleFilled } from '@ant-design/icons-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => (\n      <Space size=\"large\">\n        <Badge count={5}>\n          <Avatar shape=\"square\" size=\"large\" />\n        </Badge>\n        <Badge count={0} showZero>\n          <Avatar shape=\"square\" size=\"large\" />\n        </Badge>\n        <Badge count={<ClockCircleFilled style={{ color: token.value.colorError }} />}>\n          <Avatar shape=\"square\" size=\"large\" />\n        </Badge>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorBorderBg', 'colorBgContainer'],\n  key: 'badge',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/badge/index.ts",
    "content": "import Default from './badge';\nimport Progress from './progress';\nimport warning from './warning';\nimport success from './success';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, Progress, warning, success];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/badge/progress.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Badge, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space size=\"small\">\n        <Badge dot status={'processing'} />\n        Process\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary'],\n  key: 'progress',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/badge/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Badge, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space size=\"small\">\n        <Badge dot status={'success'} />\n        Success\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/badge/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Badge, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space size=\"small\">\n        <Badge dot status={'warning'} />\n        Warning\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/breadcrumb/breadcrumb.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Breadcrumb } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Breadcrumb>\n        <Breadcrumb.Item>Home</Breadcrumb.Item>\n        <Breadcrumb.Item>\n          <a href=\"\">Application Center</a>\n        </Breadcrumb.Item>\n        <Breadcrumb.Item>\n          <a href=\"\">Application List</a>\n        </Breadcrumb.Item>\n        <Breadcrumb.Item>An Application</Breadcrumb.Item>\n      </Breadcrumb>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorText', 'colorPrimary', 'colorPrimaryActive', 'colorPrimaryHover'],\n  key: 'breadcrumb',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/breadcrumb/index.ts",
    "content": "import Default from './breadcrumb';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/button-icon.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Button, Space, Tooltip } from 'ant-design-vue';\nimport { SearchOutlined } from '@ant-design/icons-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Button type=\"primary\">Primary Button</Button>\n        <Tooltip title=\"search\">\n          <Button type=\"primary\" shape=\"circle\" icon={<SearchOutlined />} />\n        </Tooltip>\n        <Button type=\"primary\" shape=\"circle\">\n          A\n        </Button>\n        <Button type=\"primary\" ghost icon={<SearchOutlined />}>\n          Search\n        </Button>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary'],\n  key: 'button-icon',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/button.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Button, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Button type=\"primary\">Primary Button</Button>\n        <Button>Default Button</Button>\n        <Button type=\"dashed\">Dashed Button</Button> <br />\n        <Button type=\"text\">Text Button</Button>\n        <Button ghost>Ghost Button</Button>\n        <Button type=\"link\">Link Button</Button>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorText',\n    'colorPrimary',\n    'colorPrimaryActive',\n    'colorPrimaryHover',\n    'controlOutline',\n    'controlTmpOutline',\n  ],\n  key: 'button',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/dangerButton.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Button, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Button type=\"primary\" danger>\n          primary\n        </Button>\n        <Button type=\"default\" danger>\n          default\n        </Button>\n        <Button type=\"text\" danger>\n          text\n        </Button>\n        {/*<Button ghost danger>*/}\n        {/*  ghost*/}\n        {/*</Button>*/}\n        <Button type=\"link\" danger>\n          link\n        </Button>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorError',\n    'colorErrorActive',\n    'colorErrorHover',\n    'colorErrorBorder',\n    'colorErrorOutline',\n  ],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/defaultButton.tsx",
    "content": "import { Button } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Button>default</Button>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainer'],\n  key: 'defaultButton',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/disabled.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Button, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Button disabled type=\"primary\">\n          Primary\n        </Button>\n        <Button disabled>Default</Button>\n        <Button disabled type=\"dashed\">\n          Dashed\n        </Button>\n        <br />\n        <Button disabled type=\"text\">\n          Text\n        </Button>\n        <Button disabled ghost>\n          Ghost\n        </Button>\n        <Button disabled type=\"link\">\n          Link\n        </Button>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextDisabled', 'colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/button/index.ts",
    "content": "import Default from './button';\nimport DefaultButton from './defaultButton';\nimport ButtonIconDemo from './button-icon';\nimport DangerButton from './dangerButton';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [\n  Default,\n  ButtonIconDemo,\n  DangerButton,\n  DefaultButton,\n  disabled,\n];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/calendar/calendar.tsx",
    "content": "import { Calendar } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Calendar />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/calendar/disabled.tsx",
    "content": "import { Calendar } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Calendar disabledDate={() => true} />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled', 'colorTextDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/calendar/index.ts",
    "content": "import Default from './calendar';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/card/card.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Card, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Card\n          title=\"Default size card\"\n          style={{ width: '300px' }}\n          v-slots={{\n            extra: () => <a href=\"#\">More</a>,\n          }}\n        >\n          <p>Card content</p>\n          <p>Card content</p>\n          <p>Card content</p>\n        </Card>\n        <Card\n          loading\n          size=\"small\"\n          title=\"Small size card\"\n          style={{ width: '300px' }}\n          v-slots={{\n            extra: () => <a href=\"#\">More</a>,\n          }}\n        >\n          <p>Card content</p>\n          <p>Card content</p>\n          <p>Card content</p>\n        </Card>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorText',\n    'colorTextHeading',\n    'colorTextSecondary',\n    'colorBgContainer',\n    'colorBorderSecondary',\n    'colorPrimary',\n    'colorBgContainer',\n  ],\n  key: 'card',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/card/cardGrid.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { CSSProperties } from 'vue';\n\nimport { Card } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst gridStyle: CSSProperties = {\n  width: '25%',\n  textAlign: 'center',\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Card title=\"Card Title\">\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n        <Card.Grid hoverable={false} style={gridStyle}>\n          Content\n        </Card.Grid>\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n        <Card.Grid style={gridStyle}>Content</Card.Grid>\n      </Card>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBorderSecondary'],\n  key: 'cardGrid',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/card/index.ts",
    "content": "import Default from './card';\nimport inner from './inner';\nimport cardGrid from './cardGrid';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, inner, cardGrid];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/card/inner.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Card, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Card type=\"inner\" title=\"Inner Card title\">\n          Inner Card content\n        </Card>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter'],\n  key: 'inner',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/carousel/carousel.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { CSSProperties } from 'vue';\n\nimport { Carousel } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst contentStyle = {\n  height: '160px',\n  color: '#fff',\n  lineHeight: '160px',\n  textAlign: 'center',\n  background: '#364d79',\n};\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Carousel>\n        <div>\n          <h3 style={contentStyle as CSSProperties}>1</h3>\n        </div>\n        <div>\n          <h3 style={contentStyle as CSSProperties}>2</h3>\n        </div>\n        <div>\n          <h3 style={contentStyle as CSSProperties}>3</h3>\n        </div>\n        <div>\n          <h3 style={contentStyle as CSSProperties}>4</h3>\n        </div>\n      </Carousel>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorText', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/carousel/index.ts",
    "content": "import Default from './carousel';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/cascader/cascader.tsx",
    "content": "import { Cascader } from 'ant-design-vue';\n\nimport options from './data';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = (props: any) => <Cascader options={options} {...props} placeholder=\"Please select\" />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainer', 'colorPrimary'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/cascader/data.ts",
    "content": "const options = [\n  {\n    value: 'zhejiang',\n    label: 'Zhejiang',\n    children: [\n      {\n        value: 'hangzhou',\n        label: 'Hangzhou',\n        children: [{ value: 'xihu', label: 'West Lake' }],\n      },\n    ],\n  },\n  {\n    value: 'jiangsu',\n    label: 'Jiangsu',\n    children: [\n      {\n        value: 'nanjing',\n        label: 'Nanjing',\n        children: [{ value: 'zhonghuamen', label: 'Zhong Hua Men' }],\n      },\n    ],\n  },\n];\n\nexport default options;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/cascader/disable.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Cascader } from 'ant-design-vue';\n\nimport options from './data';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Cascader options={options} open disabled placeholder=\"Please select\" />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/cascader/highlight.tsx",
    "content": "import { Cascader } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst Demo = () => {\n  return (\n    <Cascader options={options} placeholder=\"Please select\" searchValue={'jiang'} showSearch />\n  );\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorHighlight'],\n  key: 'highlight',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/cascader/index.ts",
    "content": "import Default from './cascader';\nimport HighLight from './highlight';\nimport disable from './disable';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, HighLight, disable];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/checkbox/checkbox.tsx",
    "content": "import { Checkbox, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = (props: any) => (\n  <Space>\n    <Checkbox {...props}>Checkbox</Checkbox>\n    <Checkbox {...props} checked>\n      选中态\n    </Checkbox>\n  </Space>\n);\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorText', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/checkbox/disabled.tsx",
    "content": "import { Checkbox } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Checkbox disabled>Checkbox</Checkbox>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextDisabled', 'colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/checkbox/index.ts",
    "content": "import Default from './checkbox';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/collapse/collapse.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Collapse } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Panel } = Collapse;\nconst text = `  A dog is a type of domesticated animal.  Known for its loyalty and faithfulness,  it can be found as a welcome guest in many households across the world.`;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Collapse activeKey={['1']}>\n        <Panel header=\"This is panel header 1\" key=\"1\">\n          <p>{text}</p>\n        </Panel>\n        <Panel header=\"This is panel header 2\" key=\"2\">\n          <p>{text}</p>\n        </Panel>\n        <Panel header=\"This is panel header 3\" key=\"3\">\n          <p>{text}</p>\n        </Panel>\n      </Collapse>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextSecondary', 'colorText', 'colorFillAlter', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/collapse/index.ts",
    "content": "import Default from './collapse';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/danger.tsx",
    "content": "import { DatePicker } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <DatePicker status={'error'} />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorBorder', 'colorErrorHover', 'colorErrorOutline'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/date-picker.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { DatePicker, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction=\"vertical\">\n        <DatePicker picker=\"week\" />\n        <DatePicker picker=\"month\" />\n        <DatePicker picker=\"quarter\" />\n        <DatePicker picker=\"year\" />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorPrimary',\n    'colorPrimaryBorder',\n    'colorPrimaryHover',\n    'controlOutline',\n    'colorBgElevated',\n    'colorBgContainer',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/disabled.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { DatePicker, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction=\"vertical\">\n        <DatePicker disabled />\n        <DatePicker disabled picker=\"week\" />\n        <DatePicker disabled picker=\"month\" />\n        <DatePicker disabled picker=\"quarter\" />\n        <DatePicker disabled picker=\"year\" />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled', 'colorTextDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/icon.tsx",
    "content": "import { DatePicker } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <DatePicker />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorIcon', 'colorIconHover'],\n  key: 'icon',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/index.ts",
    "content": "import Default from './date-picker';\nimport danger from './danger';\nimport warning from './warning';\nimport icon from './icon';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, warning, icon, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/datePicker/warning.tsx",
    "content": "import { DatePicker } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <DatePicker status={'warning'} />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBorder', 'colorWarningHover', 'colorWarningOutline'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/descriptions/descriptions.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Descriptions } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Descriptions title=\"User Info\" bordered>\n        <Descriptions.Item label=\"Product\">Cloud Database</Descriptions.Item>\n        <Descriptions.Item label=\"Billing Mode\">Prepaid</Descriptions.Item>\n        <Descriptions.Item label=\"Automatic Renewal\">YES</Descriptions.Item>\n        <Descriptions.Item label=\"Order time\">2018-04-24 18:00:00</Descriptions.Item>\n      </Descriptions>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSplit', 'colorText', 'colorFillAlter'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/descriptions/index.ts",
    "content": "import Default from './descriptions';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/divider/divider.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Divider } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi\n          ista probare, quae sunt a te dicta? Refert tamen, quo modo.\n        </p>\n        <Divider plain>Text</Divider>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi\n          ista probare, quae sunt a te dicta? Refert tamen, quo modo.\n        </p>\n        <Divider orientation=\"left\" plain>\n          Left Text\n        </Divider>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi\n          ista probare, quae sunt a te dicta? Refert tamen, quo modo.\n        </p>\n        <Divider orientation=\"right\" plain>\n          Right Text\n        </Divider>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi\n          ista probare, quae sunt a te dicta? Refert tamen, quo modo.\n        </p>\n      </>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSplit', 'colorText'],\n  key: 'divider',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/divider/index.ts",
    "content": "import Default from './divider';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/drawer/drawer.tsx",
    "content": "import { Button, Drawer } from 'ant-design-vue';\nimport { defineComponent, ref } from 'vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    () => {\n      const visible = ref(false);\n\n      const showDrawer = () => {\n        visible.value = true;\n      };\n\n      const onClose = () => {\n        visible.value = false;\n      };\n\n      return (\n        <>\n          <Button type=\"primary\" onClick={showDrawer}>\n            Open\n          </Button>\n          <Drawer title=\"Basic Drawer\" placement=\"right\" onClose={onClose} open={visible.value}>\n            <p>Some contents...</p>\n            <p>Some contents...</p>\n            <p>Some contents...</p>\n          </Drawer>\n        </>\n      );\n    };\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgMask', 'colorBgElevated'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/drawer/index.ts",
    "content": "import Default from './drawer';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/dropdown/dropdown.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Dropdown } from 'ant-design-vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\n\nimport menu from './menu';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Dropdown\n          v-slots={{\n            overlay: () => menu,\n          }}\n        >\n          <a class=\"ant-dropdown-link\" onClick={e => e.preventDefault()}>\n            Hover me <DownOutlined />\n          </a>\n        </Dropdown>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorError', 'colorErrorHover', 'colorBgElevated'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/dropdown/dropdownError.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport { Dropdown, Typography } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Dropdown\n          menu={{\n            items: [\n              {\n                label: 'item 1',\n                key: '1',\n              },\n              {\n                label: 'a danger item',\n                danger: true,\n                key: '3',\n              },\n              {\n                label: 'danger disabled item',\n                danger: true,\n                disabled: true,\n                key: '2',\n              },\n            ],\n          }}\n        >\n          {' '}\n          <Typography.Text type={'danger'}>\n            Hover me <DownOutlined />\n          </Typography.Text>\n        </Dropdown>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorHover', 'colorBgElevated'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/dropdown/index.ts",
    "content": "import Default from './dropdown';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/dropdown/menu.tsx",
    "content": "import { Menu } from 'ant-design-vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\n\nconst menu = (\n  <Menu>\n    <Menu.Item>\n      <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.antgroup.com\">\n        1st menu item\n      </a>\n    </Menu.Item>\n    <Menu.Item icon={<DownOutlined />} disabled>\n      <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.aliyun.com\">\n        2nd menu item (disabled)\n      </a>\n    </Menu.Item>\n    <Menu.Item disabled>\n      <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.luohanacademy.com\">\n        3rd menu item (disabled)\n      </a>\n    </Menu.Item>\n    <Menu.Item danger>a danger item</Menu.Item>\n  </Menu>\n);\n\nexport default menu;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/empty/empty.tsx",
    "content": "import { Empty } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Empty />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextDisabled'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/empty/index.ts",
    "content": "import Default from './empty';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/form/danger.tsx",
    "content": "import { defineComponent, ref, reactive } from 'vue';\nimport { Form, FormItem, Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => {\n      const onFinish = () => {};\n      const onFinishFailed = () => {};\n      const formRef = ref();\n      const formData = reactive({\n        username: '',\n      });\n\n      return (\n        <Form\n          ref={formRef}\n          model={formData}\n          labelCol={{ span: 8 }}\n          wrapperCol={{ span: 16 }}\n          onFinish={onFinish}\n          onFinishFailed={onFinishFailed}\n        >\n          <FormItem\n            label=\"Username\"\n            name=\"username\"\n            rules={[{ required: true, message: 'Please input your username!' }]}\n          >\n            <Input status={'error'} v-model={[formData.username, 'value']} />\n          </FormItem>\n        </Form>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorBorder', 'colorErrorHover'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/form/form.tsx",
    "content": "/* eslint-disable no-console */\nimport { defineComponent, ref, toRaw, reactive } from 'vue';\nimport { Form, FormItem, Input, Button, Checkbox } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => {\n      const onFinish = () => {};\n      const onFinishFailed = () => {};\n      const formRef = ref();\n      const formData = reactive({\n        username: '',\n        password: '',\n      });\n\n      const onSubmit = () => {\n        formRef.value\n          .validate()\n          .then(() => {\n            console.log('values', formData, toRaw(formData));\n          })\n          .catch(error => {\n            console.log('error', error);\n          });\n      };\n      const resetForm = () => {\n        formRef.value.resetFields();\n      };\n\n      return (\n        <Form\n          ref={formRef}\n          model={formData}\n          labelCol={{ span: 8 }}\n          wrapperCol={{ span: 16 }}\n          onFinish={onFinish}\n          onFinishFailed={onFinishFailed}\n        >\n          <FormItem\n            label=\"Username\"\n            name=\"username\"\n            rules={[{ required: true, message: 'Please input your username!' }]}\n          >\n            <Input v-model={[formData.username, 'value']} />\n          </FormItem>\n          <FormItem\n            label=\"Password\"\n            name=\"password\"\n            rules={[{ required: true, message: 'Please input your password!' }]}\n          >\n            <Input.Password v-model={[formData.password, 'value']} />\n          </FormItem>\n          <FormItem name=\"remember\" wrapperCol={{ offset: 8, span: 16 }}>\n            <Checkbox>Remember me</Checkbox>\n          </FormItem>\n          <FormItem wrapperCol={{ offset: 8, span: 16 }}>\n            <Button type=\"primary\" onClick={onSubmit}>\n              Submit\n            </Button>\n            <Button style={{ marginLeft: '16px' }} onClick={resetForm}>\n              Reset\n            </Button>\n          </FormItem>\n        </Form>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'controlOutline', 'colorErrorBorder', 'colorErrorHover'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/form/index.tsx",
    "content": "import Default from './form';\n\nimport warning from './warning';\nimport danger from './danger';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, warning, danger];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/form/warning.tsx",
    "content": "import { defineComponent, ref, reactive } from 'vue';\nimport { Form, FormItem, Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => {\n      const onFinish = () => {};\n      const onFinishFailed = () => {};\n      const formRef = ref();\n      const formData = reactive({\n        username: '',\n      });\n\n      return (\n        <Form\n          ref={formRef}\n          model={formData}\n          labelCol={{ span: 8 }}\n          wrapperCol={{ span: 16 }}\n          onFinish={onFinish}\n          onFinishFailed={onFinishFailed}\n        >\n          <FormItem\n            label=\"Username\"\n            name=\"username\"\n            rules={[{ required: true, message: 'Please input your username!' }]}\n          >\n            <Input status={'warning'} v-model={[formData.username, 'value']} />\n          </FormItem>\n        </Form>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'controlOutline', 'colorWarningBorder', 'colorWarningHover'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/grid/grid.tsx",
    "content": "import { Row, Col } from 'ant-design-vue';\nimport makeStyle from '../../utils/makeStyle';\nimport type { ComponentDemo } from '../../interface';\nimport { defineComponent } from 'vue';\n\nconst useStyle = makeStyle('GridDemo', token => ({\n  '.previewer-grid-demo': {\n    [`${token.rootCls}-row`]: {\n      marginBottom: 16,\n    },\n    [`${token.rootCls}-row > div:not(.gutter-row)`]: {\n      padding: '16px 0',\n      background: '#0092ff',\n      color: '#fff',\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n\n      '&:nth-child(2n + 1)': {\n        background: 'rgba(0,146,255,.75)',\n      },\n    },\n  },\n}));\n\nconst Demo = defineComponent({\n  setup() {\n    const [, hashId] = useStyle();\n\n    return () => (\n      <div class={['previewer-grid-demo', hashId.value]}>\n        <Row>\n          <Col span={24}>col</Col>\n        </Row>\n        <Row>\n          <Col span={12}>col-12</Col> <Col span={12}>col-12</Col>\n        </Row>\n        <Row>\n          <Col span={8}>col-8</Col> <Col span={8}>col-8</Col>\n          <Col span={8}>col-8</Col>\n        </Row>\n        <Row>\n          <Col span={6}>col-6</Col> <Col span={6}>col-6</Col>\n          <Col span={6}>col-6</Col>\n          <Col span={6}>col-6</Col>\n        </Row>\n      </div>\n    );\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/grid/index.ts",
    "content": "import Default from './grid';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/icon/icon.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Space } from 'ant-design-vue';\nimport {\n  HomeOutlined,\n  SettingFilled,\n  SmileOutlined,\n  SyncOutlined,\n  LoadingOutlined,\n} from '@ant-design/icons-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <HomeOutlined /> <SettingFilled /> <SmileOutlined /> <SyncOutlined spin />\n        <SmileOutlined rotate={180} /> <LoadingOutlined />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/icon/index.ts",
    "content": "import Default from './icon';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/image/disabled.tsx",
    "content": "import { Image } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => {\n  return <Image width={200} height={200} src=\"error\" placeholder />;\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/image/image.tsx",
    "content": "import { Image } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => {\n  return (\n    <Image\n      width={200}\n      src=\"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png\"\n    />\n  );\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgMask'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/image/index.ts",
    "content": "import Default from './image';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/index.ts",
    "content": "import Alert from './alert';\nimport Anchor from './anchor';\nimport AutoComplete from './autoComplete';\nimport Avatar from './avatar';\nimport Badge from './badge';\nimport Breadcrumb from './breadcrumb';\nimport Button from './button';\nimport Calendar from './calendar';\nimport Card from './card';\nimport Carousel from './carousel';\nimport Cascader from './cascader';\nimport Checkbox from './checkbox';\nimport Collapse from './collapse';\nimport DatePicker from './datePicker';\nimport Descriptions from './descriptions';\nimport Dropdown from './dropdown';\nimport Empty from './empty';\nimport Form from './form';\nimport Grid from './grid';\nimport Icon from './icon';\nimport Image from './image';\nimport InputNumber from './inputNumber';\nimport Input from './input';\nimport List from './list';\nimport Mentions from './mentions';\nimport Modal from './modal';\nimport Notification from './notification';\nimport Pagination from './pagination';\nimport Popconfirm from './popconfirm';\nimport Popover from './popover';\nimport Radio from './radio';\nimport Rate from './rate';\nimport Select from './select';\nimport Skeleton from './skeleton';\nimport Slider from './slider';\nimport Spin from './spin';\nimport Statistic from './statistic';\nimport Switch from './switch';\nimport Table from './table';\nimport Tabs from './tabs';\nimport Tag from './tag';\nimport TimePicker from './timePicker';\nimport Timeline from './timeline';\nimport Tooltip from './tooltip';\nimport Transfer from './transfer';\nimport TreeSelect from './treeSelect';\nimport Tree from './tree';\nimport Typography from './typography';\nimport Upload from './upload';\nimport Divider from './divider';\nimport Space from './space';\nimport Menu from './menu';\nimport Steps from './steps';\nimport Segmented from './segmented';\nimport Drawer from './drawer';\nimport Message from './message';\nimport Progress from './progress';\nimport Result from './result';\n\nimport type { ComponentDemo } from '../interface';\n\nexport type PreviewerDemos = Record<string, ComponentDemo[]>;\n\nconst ComponentDemos: PreviewerDemos = {\n  Alert,\n  Anchor,\n  AutoComplete,\n  Avatar,\n  Badge,\n  Breadcrumb,\n  Button,\n  Calendar,\n  Card,\n  Carousel,\n  Cascader,\n  Checkbox,\n  Collapse,\n  DatePicker,\n  Descriptions,\n  Dropdown,\n  Empty,\n  Form,\n  Grid,\n  Icon,\n  Image,\n  InputNumber,\n  Input,\n  List,\n  Mentions,\n  Modal,\n  Notification,\n  Pagination,\n  Popconfirm,\n  Popover,\n  Radio,\n  Rate,\n  Select,\n  Skeleton,\n  Slider,\n  Spin,\n  Statistic,\n  Switch,\n  Table,\n  Tabs,\n  Tag,\n  TimePicker,\n  Timeline,\n  Tooltip,\n  Transfer,\n  TreeSelect,\n  Tree,\n  Typography,\n  Upload,\n  Divider,\n  Space,\n  Menu,\n  Steps,\n  Segmented,\n  Drawer,\n  Message,\n  Result,\n  Progress,\n};\n\nexport default ComponentDemos;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/clearIcon.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Input } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Input placeholder=\"Basic usage\" value={'右侧的图标就是 colorIcon'} allowClear />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorIcon', 'colorIconHover'],\n  key: 'clearIcon',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Input status={'error'} defaultValue={'hello'} onChange={onChange} />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorOutline', 'colorErrorBorder', 'colorErrorHover'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/disabled.tsx",
    "content": "import { Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Input placeholder=\"Basic usage\" disabled />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/index.ts",
    "content": "import Default from './input';\nimport clearIcon from './clearIcon';\nimport danger from './danger';\nimport warning from './warning';\nimport withAddon from './withAddon';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, clearIcon, danger, warning, withAddon, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/input.tsx",
    "content": "import { Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Input placeholder=\"Basic usage\" />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'controlOutline', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Input, theme } from 'ant-design-vue';\nimport { CheckCircleFilled } from '@ant-design/icons-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <Input\n          defaultValue={\"I'm the content\"}\n          suffix={<CheckCircleFilled style={{ color: token.value.colorSuccess }} />}\n          onChange={onChange}\n        />\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Input status={'warning'} defaultValue={3} onChange={onChange} />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBorder', 'colorWarningHover', 'colorWarningOutline'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/input/withAddon.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Input } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Input addonBefore=\"http://\" addonAfter=\".com\" defaultValue=\"mysite\" />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter'],\n  key: 'withAddon',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/inputNumber/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { InputNumber } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <InputNumber status={'error'} min={1} max={10} defaultValue={3} onChange={onChange} />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorErrorBorder', 'colorErrorOutline', 'colorErrorHover', 'colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/inputNumber/disabled.tsx",
    "content": "import { InputNumber } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <InputNumber min={1} max={10} defaultValue={3} disabled />;\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/inputNumber/index.ts",
    "content": "import Default from './inputNumber';\nimport danger from './danger';\nimport warning from './warning';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, warning, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/inputNumber/inputNumber.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { InputNumber } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\nconst Demo = defineComponent({\n  setup() {\n    return () => <InputNumber min={1} max={10} defaultValue={3} onChange={onChange} />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorPrimaryBorder',\n    'controlOutline',\n    'colorPrimaryHover',\n    'colorPrimary',\n    'colorBgContainer',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/inputNumber/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { InputNumber } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <InputNumber status={'warning'} min={1} max={10} defaultValue={3} onChange={onChange} />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBorder', 'colorWarningOutline', 'colorWarningHover'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/list/index.ts",
    "content": "import Default from './list';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/list/list.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { List, ListItem, ListItemMeta, Avatar } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst data = [\n  { title: 'Ant Design Vue Title 1' },\n  { title: 'Ant Design Vue Title 2' },\n  { title: 'Ant Design Vue Title 3' },\n  { title: 'Ant Design Vue Title 4' },\n];\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <List\n        itemLayout=\"horizontal\"\n        dataSource={data}\n        v-slots={{\n          renderItem: ({ item }: any) => (\n            <ListItem>\n              <ListItemMeta\n                v-slots={{\n                  avatar: () => <Avatar src=\"https://joeschmoe.io/api/v1/random\" />,\n                  title: () => <a href=\"https://www.antdv.com\">{item.title}</a>,\n                }}\n                description=\"Ant Design, a design language for background applications, is refined by Ant UED Team\"\n              />\n            </ListItem>\n          ),\n        }}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/mentions/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Mentions } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\nfunction onSelect() {}\n\nconst Demo = defineComponent({\n  setup() {\n    const options = [\n      {\n        value: 'afc163',\n        label: 'afc163',\n      },\n      {\n        value: 'zombieJ',\n        label: 'zombieJ',\n      },\n      {\n        value: 'yesmeck',\n        label: 'yesmeck',\n      },\n    ];\n    return () => (\n      <Mentions\n        style={{ width: '100%' }}\n        onChange={onChange}\n        onSelect={onSelect}\n        status={'error'}\n        defaultValue=\"@afc163\"\n        options={options}\n      ></Mentions>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorOutline', 'colorErrorBorder', 'colorErrorHover'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/mentions/disabled.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Mentions } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const options = [\n      {\n        value: 'afc163',\n        label: 'afc163',\n      },\n      {\n        value: 'zombieJ',\n        label: 'zombieJ',\n      },\n      {\n        value: 'yesmeck',\n        label: 'yesmeck',\n      },\n    ];\n    return () => (\n      <Mentions\n        style={{ width: '100%' }}\n        status={'error'}\n        disabled\n        defaultValue=\"@afc163\"\n        options={options}\n      ></Mentions>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled', 'colorTextDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/mentions/index.ts",
    "content": "import Default from './mentions';\nimport danger from './danger';\nimport warning from './warning';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, warning, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/mentions/mentions.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Mentions } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\nfunction onSelect() {}\nconst Demo = defineComponent({\n  setup() {\n    const options = [\n      {\n        value: 'afc163',\n        label: 'afc163',\n      },\n      {\n        value: 'zombieJ',\n        label: 'zombieJ',\n      },\n      {\n        value: 'yesmeck',\n        label: 'yesmeck',\n      },\n    ];\n    return () => (\n      <Mentions\n        style={{ width: '100%' }}\n        onChange={onChange}\n        onSelect={onSelect}\n        defaultValue=\"@afc163\"\n        options={options}\n      ></Mentions>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorBgContainer',\n    'colorBorder',\n    'colorPrimary',\n    'colorPrimaryHover',\n    'controlOutline',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/mentions/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Mentions } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\nfunction onSelect() {}\n\nconst Demo = defineComponent({\n  setup() {\n    const options = [\n      {\n        value: 'afc163',\n        label: 'afc163',\n      },\n      {\n        value: 'zombieJ',\n        label: 'zombieJ',\n      },\n      {\n        value: 'yesmeck',\n        label: 'yesmeck',\n      },\n    ];\n    return () => (\n      <Mentions\n        style={{ width: '100%' }}\n        onChange={onChange}\n        onSelect={onSelect}\n        status={'warning'}\n        defaultValue=\"@afc163\"\n        options={options}\n      ></Mentions>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBorder', 'colorWarningHover', 'colorWarningOutline'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/menu/data.tsx",
    "content": "import type { MenuProps } from 'ant-design-vue';\n\nimport { AppstoreOutlined, MailOutlined, SettingOutlined } from '@ant-design/icons-vue';\n\ntype MenuItem = Required<MenuProps>['items'][number];\n\nconst getItem = (\n  label: any,\n  key: string,\n  icon?: any,\n  children?: MenuItem[],\n  type?: 'group',\n): MenuItem =>\n  ({\n    key,\n    icon,\n    children,\n    label,\n    type,\n  } as MenuItem);\n\nconst items: MenuProps['items'] = [\n  getItem('Navigation One', 'sub1', <MailOutlined />, [\n    getItem('Item 1', 'g1', null, [getItem('Option 1', '1'), getItem('Option 2', '2')], 'group'),\n    getItem('Item 2', 'g2', null, [getItem('Option 3', '3'), getItem('Option 4', '4')], 'group'),\n  ]),\n\n  getItem('Navigation Two', 'sub2', <AppstoreOutlined />, [\n    getItem('Option 5', '5'),\n    getItem('Option 6', '6'),\n    getItem('Submenu', 'sub3', null, [getItem('Option 7', '7'), getItem('Option 8', '8')]),\n  ]),\n\n  getItem('Navigation Three', 'sub4', <SettingOutlined />, [\n    getItem('Option 9', '9'),\n    getItem('Option 10', '10'),\n    getItem('Option 11', '11'),\n    getItem('Option 12', '12'),\n  ]),\n];\n\nexport default items;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/menu/index.ts",
    "content": "import Default from './menu';\nimport danger from './menuDanger';\nimport MenuInLayout from './menuInLayout';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, MenuInLayout];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/menu/menu.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport type { MenuProps } from 'ant-design-vue';\nimport { Menu } from 'ant-design-vue';\n\nimport items from './data';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => {\n      const onClick: MenuProps['onClick'] = e => {\n        // eslint-disable-next-line no-console\n        console.log('click ', e);\n      };\n\n      const selectedKeys = ref(['1']);\n      const openKeys = ref(['sub1', 'sub2']);\n\n      return (\n        <div>\n          <Menu\n            onClick={onClick}\n            style={{ width: '256px' }}\n            selectedKeys={selectedKeys.value}\n            openKeys={openKeys.value}\n            onSelect={val => (selectedKeys.value = val as any)}\n            onOpenChange={val => (openKeys.value = val as any)}\n            // v-model={[selectedKeys.value, 'selectedKeys']}\n            // v-model={[openKeys.value, 'openKeys']}\n            mode=\"inline\"\n            items={items}\n          />\n        </div>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorBgContainer', 'colorFillAlter', 'colorSplit', 'colorPrimaryHover'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/menu/menuDanger.tsx",
    "content": "import type { MenuProps } from 'ant-design-vue';\nimport { Menu } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst items: MenuProps['items'] = [\n  {\n    key: '0',\n    danger: true,\n    label: '危险',\n  },\n  {\n    key: '1',\n    danger: true,\n    label: '危险选中',\n  },\n  {\n    key: '2',\n    danger: true,\n    disabled: true,\n    label: '危险禁用',\n  },\n];\n\nconst Demo = () => {\n  const onClick: MenuProps['onClick'] = e => {\n    // eslint-disable-next-line no-console\n    console.log('click ', e);\n  };\n\n  return <Menu onClick={onClick} style={{ width: '256px' }} selectedKeys={['1']} items={items} />;\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorHover', 'colorErrorOutline'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/menu/menuInLayout.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Menu, theme } from 'ant-design-vue';\n\nimport items from './data';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <div style={{ background: token.value.colorBorderSecondary, padding: '12px' }}>\n          <Menu\n            style={{ width: '256px' }}\n            selectedKeys={['1']}\n            openKeys={['sub1']}\n            mode=\"inline\"\n            items={items}\n          />\n        </div>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSplit'],\n  key: 'menuInLayout',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/error.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { message, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const error = () => {\n      message.error('This is an error message');\n    };\n\n    return () => <Button onClick={error}>Error</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'error',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/index.ts",
    "content": "import Default from './message';\nimport error from './error';\nimport info from './info';\nimport success from './success';\nimport warning from './warning';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, error, info, success, warning];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/info.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { message, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const info = () => {\n      message.info('This is an info message');\n    };\n\n    return () => <Button onClick={info}>Info</Button>;\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/message.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { message, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const info = () => {\n      message.info('Hello, Ant Design Vue!');\n    };\n\n    return () => <Button onClick={info}>Info</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorText', 'colorBgElevated'],\n  key: 'message',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { message, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const success = () => {\n      message.success('This is an success message');\n    };\n\n    return () => <Button onClick={success}>Success</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/message/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { message, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const warning = () => {\n      message.warning('This is an warning message');\n    };\n\n    return () => <Button onClick={warning}>Warning</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/index.ts",
    "content": "import Default from './modal';\nimport info from './info';\nimport withButton from './modalWithButton';\nimport warning from './warning';\nimport success from './success';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, info, withButton, warning, success];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/info.tsx",
    "content": "import { Modal, Button } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const info = () => {\n      Modal.info({\n        title: 'This is a info message',\n        content: () => (\n          <div>\n            <p>some messages...some messages...</p>\n            <p>some messages...some messages...</p>\n          </div>\n        ),\n        onOk() {\n          // eslint-disable-next-line no-console\n          console.log('i am ok');\n        },\n      });\n    };\n\n    return () => <Button onClick={info}>info</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo'],\n  key: 'info',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/modal.tsx",
    "content": "import { Button, Modal } from 'ant-design-vue';\nimport { defineComponent, ref } from 'vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const isModalVisible = ref(false);\n    const showModal = () => {\n      isModalVisible.value = true;\n    };\n    const handleOk = () => {\n      isModalVisible.value = false;\n    };\n    const handleCancel = () => {\n      isModalVisible.value = false;\n    };\n\n    return () => {\n      return (\n        <>\n          <Button type=\"primary\" onClick={showModal}>\n            Open Modal\n          </Button>\n          <Modal\n            title=\"Basic Modal\"\n            open={isModalVisible.value}\n            onOk={handleOk}\n            onCancel={handleCancel}\n          >\n            <p>Some contents...</p> <p>Some contents...</p> <p>Some contents...</p>\n          </Modal>\n        </>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgMask', 'colorBgElevated'],\n  key: 'default',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/modalWithButton.tsx",
    "content": "import { Button, Modal } from 'ant-design-vue';\nimport { defineComponent, ref } from 'vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const isModalVisible = ref(false);\n    const showModal = () => {\n      isModalVisible.value = true;\n    };\n    const handleOk = () => {\n      isModalVisible.value = false;\n    };\n    const handleCancel = () => {\n      isModalVisible.value = false;\n    };\n\n    return () => {\n      return (\n        <>\n          <Button type=\"primary\" onClick={showModal}>\n            Open Modal\n          </Button>\n          <Modal\n            title=\"Basic Modal\"\n            open={isModalVisible.value}\n            onOk={handleOk}\n            onCancel={handleCancel}\n          >\n            <p>Some contents...</p> <p>Some contents...</p> <p>Some contents...</p>\n          </Modal>\n        </>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgMask'],\n  key: 'modalWithButton',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/success.tsx",
    "content": "import { Modal, Button } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const success = () => {\n      Modal.success({\n        title: 'This is a success message',\n        content: () => (\n          <div>\n            <p>some messages...some messages...</p>\n            <p>some messages...some messages...</p>\n          </div>\n        ),\n      });\n    };\n\n    return () => <Button onClick={success}>Success</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/modal/warning.tsx",
    "content": "import { Modal, Button } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const warning = () => {\n      Modal.warning({\n        title: 'This is a warning message',\n        content: () => (\n          <div>\n            <p>some messages...some messages...</p>\n            <p>some messages...some messages...</p>\n          </div>\n        ),\n      });\n    };\n\n    return () => <Button onClick={warning}>Warning</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/error.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { notification, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const error = () => {\n      notification.error({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n      });\n    };\n\n    return () => <Button onClick={error}>Error</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'error',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/index.ts",
    "content": "import Demo from './notification';\nimport info from './info';\nimport error from './error';\nimport success from './success';\nimport warning from './warning';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, info, error, success, warning];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/info.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { notification, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const info = () => {\n      notification.info({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n      });\n    };\n\n    return () => <Button onClick={info}>Info</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/notification.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { notification, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const open = () => {\n      notification.open({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n      });\n    };\n\n    return () => <Button onClick={open}>Open</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorIcon', 'colorIconHover', 'colorBgElevated'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { notification, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const success = () => {\n      notification.success({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n      });\n    };\n\n    return () => <Button onClick={success}>Success</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/notification/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { notification, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const warning = () => {\n      notification.warning({\n        message: 'Notification Title',\n        description:\n          'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n      });\n    };\n\n    return () => <Button onClick={warning}>Warning</Button>;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/pagination/disabled.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Pagination } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Pagination showQuickJumper defaultCurrent={2} total={10} disabled />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['controlItemBgActiveDisabled', 'colorBgContainerDisabled', 'colorFillAlter'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/pagination/index.tsx",
    "content": "import Demo from './pagination';\nimport disabled from './disabled';\nimport outline from './outline';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, disabled, outline];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/pagination/outline.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Pagination, Space } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Pagination showQuickJumper pageSize={1} defaultCurrent={2} total={10} />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'controlOutline', 'colorPrimaryHover', 'colorBgContainer'],\n  key: 'outline',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/pagination/pagination.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Pagination, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'}>\n        <Pagination showQuickJumper defaultCurrent={2} total={500} />\n\n        <Pagination simple />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/popconfirm/index.ts",
    "content": "import Demo from './popconfirm';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/popconfirm/popconfirm.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Popconfirm, message } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nfunction confirm() {\n  message.success('Click on Yes');\n}\nfunction cancel() {\n  message.error('Click on No');\n}\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div\n        style={{\n          width: '260px',\n          paddingTop: '80px',\n        }}\n      >\n        <Popconfirm\n          title=\"Are you sure delete this task?\"\n          ok-text=\"Yes\"\n          cancel-text=\"No\"\n          onConfirm={confirm}\n          onCancel={cancel}\n          placement={'topLeft'}\n          getPopupContainer={node => {\n            if (node) {\n              return node.parentNode as HTMLElement;\n            }\n            return document.body;\n          }}\n        >\n          <a href=\"#\">Delete</a>\n        </Popconfirm>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgElevated', 'colorWarning'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/popover/index.ts",
    "content": "import Demo from './popover';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/popover/popover.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Popover, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const content = () => (\n      <div>\n        <p>Content</p> <p>Content</p>\n      </div>\n    );\n\n    return () => {\n      return (\n        <div>\n          <Popover v-slots={{ content }} title=\"Title\">\n            <Button type=\"primary\">Hover me</Button>\n          </Popover>\n        </div>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgElevated'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Progress, Space } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space direction={'vertical'} size={'large'}>\n        <Space size={'large'}>\n          <Progress percent={70} status=\"exception\" type={'dashboard'} />\n          <Progress percent={80} status=\"exception\" type={'circle'} />\n        </Space>\n        <Progress percent={50} status=\"exception\" />\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/index.ts",
    "content": "import Demo from './progress';\nimport info from './info';\nimport danger from './danger';\nimport success from './success';\nimport progressInBg from './progressInBg';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, info, danger, success, progressInBg];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/info.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Progress } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <>\n        <Progress percent={30} />\n        <Progress percent={50} status=\"active\" />\n        <Progress percent={70} type={'dashboard'} />\n        <Progress percent={80} type={'circle'} />\n        <Progress steps={8} percent={30} />\n      </>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/progress.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Progress } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <>\n        <Progress percent={30} />\n        <Progress percent={50} status=\"active\" />\n        <Progress percent={70} status=\"exception\" />\n        <Progress percent={100} />\n        <Progress percent={50} showInfo={false} />\n        <Progress steps={8} />\n      </>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillSecondary', 'colorText', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/progressInBg.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Progress, theme } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <div style={{ padding: 24, background: token.value.colorBgLayout }}>\n          <Progress percent={30} />\n          <Progress percent={50} status=\"active\" />\n          <Progress percent={70} status=\"exception\" />\n          <Progress percent={100} />\n          <Progress percent={50} showInfo={false} />\n          <Progress steps={8} />\n        </div>\n      );\n    };\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillSecondary', 'colorText', 'colorBgContainer'],\n  key: 'layout',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/progress/success.tsx",
    "content": "import { Progress, Space } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => (\n  <Space direction={'vertical'} size={'large'}>\n    <Space size={'large'}>\n      <Progress percent={70} status=\"success\" type={'dashboard'} />\n      <Progress percent={80} status=\"success\" type={'circle'} />\n    </Space>\n    <Progress percent={50} status=\"success\" />\n  </Space>\n);\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/radio/button.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Radio, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        <Radio.Group value={'a'} buttonStyle=\"solid\">\n          <Radio.Button value={'a'} checked>\n            Hangzhou\n          </Radio.Button>\n          <Radio.Button value={'b'}>Shanghai</Radio.Button>\n        </Radio.Group>\n\n        <div>\n          <Radio.Button>Apple</Radio.Button>\n          <Radio.Button checked>Orange</Radio.Button>\n        </div>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimaryActive', 'colorPrimaryHover'],\n  key: 'button',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/radio/disabled.tsx",
    "content": "import { Radio } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Radio disabled>Radio</Radio>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/radio/index.ts",
    "content": "import Default from './radio';\nimport Button from './button';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, Button, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/radio/radio.tsx",
    "content": "import { Radio } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Radio checked>Radio</Radio>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'controlOutline', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/rate/index.ts",
    "content": "import Demo from './rate';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/rate/rate.tsx",
    "content": "import { Rate } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Rate />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillContent'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Result status={'error'} title=\"Demo示意\" subTitle=\"status 为 error\" />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/index.ts",
    "content": "import Demo from './result';\nimport info from './info';\nimport warning from './warning';\nimport danger from './danger';\nimport ResultWithDesc from './resultWithDesc';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, info, warning, danger, ResultWithDesc];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/info.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Result status={'info'} title=\"Demo示意\" subTitle=\"status 为info\" />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/result.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Button, Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Result\n        status=\"success\"\n        title=\"Successfully Purchased Cloud Server ECS!\"\n        subTitle=\"Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.\"\n        extra={[\n          <Button type=\"primary\" key=\"console\">\n            Go Console\n          </Button>,\n          <Button key=\"buy\">Buy Again</Button>,\n        ]}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'result',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/resultWithDesc.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Result title=\"Demo示意\" subTitle=\"背景色为 colorFillAlter\">\n        Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.\n      </Result>\n    );\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter'],\n  key: 'resultWithDesc',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Result\n        status=\"success\"\n        title=\"Successfully Purchased Cloud Server ECS!\"\n        subTitle=\"Order number: 2017182818828182881 Cloud server configuration takes 1-5 minutes, please wait.\"\n        style={{ padding: 24 }}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'result',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/result/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Result } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Result status={'warning'} title=\"Demo示意\" subTitle=\"status 为warning\" />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/segmented/index.ts",
    "content": "import Demo from './segmented';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/segmented/segmented.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Segmented } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Segmented value={'Daily'} options={['Daily', 'Weekly', 'Monthly', 'Quarterly', 'Yearly']} />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  key: 'default',\n  tokens: [],\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst handleChange = (value: any) => {\n  // eslint-disable-next-line no-console\n  console.log(`selected ${value}`);\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Select\n        mode=\"multiple\"\n        allowClear\n        style={{\n          width: '100%',\n        }}\n        status={'error'}\n        options={options}\n        placeholder=\"Please select\"\n        value={['a10', 'c12']}\n        onChange={handleChange}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorOutline', 'colorErrorBorder', 'colorErrorHover'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/data.ts",
    "content": "import type { SelectProps } from 'ant-design-vue';\n\nconst options: SelectProps['options'] = [];\n\nfor (let i = 10; i < 36; i++) {\n  options.push({ value: i.toString(36) + i, label: i.toString(36) + i });\n}\n\nexport default options;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/disabled.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Select\n        mode=\"multiple\"\n        allowClear\n        style={{\n          width: '100%',\n        }}\n        disabled\n        options={options}\n        placeholder=\"Please select\"\n        value={['a10', 'c12']}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled', 'colorTextDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/icon.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst handleChange = (value: any) => {\n  // eslint-disable-next-line no-console\n  console.log(`selected ${value}`);\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Select\n        allowClear\n        style={{\n          width: '100%',\n        }}\n        options={options}\n        placeholder=\"Please select\"\n        value={['a10', 'c12']}\n        onChange={handleChange}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorIcon', 'colorIconHover'],\n  key: 'icon',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/index.ts",
    "content": "import Default from './select';\nimport SelectTag from './selectTag';\nimport danger from './danger';\nimport warning from './warning';\nimport icon from './icon';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, SelectTag, danger, warning, icon, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/select.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Option } = Select;\n\nfunction handleChange() {}\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space align={'start'}>\n        <Select value=\"lucy\" style={{ width: '120px' }} onChange={handleChange}>\n          <Option value=\"jack\">Jack</Option> <Option value=\"lucy\">Lucy</Option>\n          <Option value=\"disabled\" disabled>\n            Disabled\n          </Option>\n          <Option value=\"Yiminghe\">yiminghe</Option>\n        </Select>\n        <Select value=\"lucy\" style={{ width: '120px' }} disabled>\n          <Option value=\"lucy\">Lucy</Option>\n        </Select>\n        <Select value=\"lucy\" style={{ width: '120px' }} loading>\n          <Option value=\"lucy\">Lucy</Option>\n        </Select>\n        <Select value=\"lucy\" style={{ width: '120px' }} allowClear>\n          <Option value=\"lucy\">Lucy</Option>\n        </Select>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'controlOutline',\n    'colorPrimary',\n    'colorPrimaryHover',\n    'colorText',\n    'colorBgElevated',\n    'colorBgContainer',\n  ],\n  key: 'select',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/selectTag.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst handleChange = (value: any) => {\n  // eslint-disable-next-line no-console\n  console.log(`selected ${value}`);\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Select\n        mode=\"multiple\"\n        allowClear\n        style={{\n          width: '100%',\n        }}\n        options={options}\n        listHeight={200}\n        placeholder=\"Please select\"\n        value={['a10', 'c12', 'e14']}\n        getPopupContainer={node => {\n          if (node) {\n            return node.parentNode as HTMLElement;\n          }\n          return document.body;\n        }}\n        onChange={handleChange}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorFillSecondary'],\n  key: 'selectTag',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/select/warning.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Select } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport options from './data';\n\nconst handleChange = (value: any) => {\n  // eslint-disable-next-line no-console\n  console.log(`selected ${value}`);\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Select\n        mode=\"multiple\"\n        allowClear\n        style={{\n          width: '100%',\n        }}\n        status={'warning'}\n        options={options}\n        placeholder=\"Please select\"\n        value={['a10', 'c12']}\n        onChange={handleChange}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarningHover', 'colorWarningOutline'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/skeleton/index.ts",
    "content": "import Demo from './skeleton';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/skeleton/skeleton.tsx",
    "content": "import { Skeleton } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Skeleton active />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillContent', 'colorTextPlaceholder'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/slider/index.ts",
    "content": "import Demo from './slider';\nimport SliderInBg from './sliderInBg';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, SliderInBg];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/slider/slider.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Slider } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <>\n        <Slider defaultValue={30} />\n        <Slider range defaultValue={[20, 50]} />\n      </>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorFillSecondary',\n    'colorFillContentHover',\n    'colorBgContainer',\n    'colorPrimary',\n    'colorPrimaryHover',\n    'colorPrimaryBorderHover',\n    'colorPrimaryBorder',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/slider/sliderInBg.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Slider, theme } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <div style={{ padding: '12px', background: token.value.colorFillSecondary }}>\n          <Slider defaultValue={30} />\n          <Slider range defaultValue={[20, 50]} />\n        </div>\n      );\n    };\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorFillSecondary',\n    'colorFillContentHover',\n    'colorBgContainer',\n    'colorPrimary',\n    'colorPrimaryHover',\n    'colorPrimaryBorderHover',\n    'colorPrimaryBorder',\n  ],\n  key: 'sliderInBg',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/space/index.ts",
    "content": "import Demo from './space';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/space/space.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport { Button, Popconfirm, Space, Upload } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Space>\n        Space\n        <Button type=\"primary\">Button</Button>\n        <Upload>\n          <Button>\n            <UploadOutlined /> Click to Upload\n          </Button>\n        </Upload>\n        <Popconfirm title=\"Are you sure delete this task?\" okText=\"Yes\" cancelText=\"No\">\n          <Button>Confirm</Button>\n        </Popconfirm>\n      </Space>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/spin/index.ts",
    "content": "import Default from './spin';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/spin/spin.tsx",
    "content": "import { Spin } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Spin />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/statistic/index.ts",
    "content": "import Demo from './statistic';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/statistic/statistic.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Statistic, Row, Col, Button } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Row gutter={16}>\n        <Col span={12}>\n          <Statistic title=\"Active Users\" value={112893} />\n        </Col>\n        <Col span={12}>\n          <Statistic title=\"Account Balance (CNY)\" value={112893} precision={2} />\n          <Button style={{ marginTop: 16 }} type=\"primary\">\n            Recharge\n          </Button>\n        </Col>\n        <Col span={12}>\n          <Statistic title=\"Active Users\" value={112893} loading />\n        </Col>\n      </Row>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/steps/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Steps } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Steps\n        current={1}\n        items={[\n          {\n            title: 'Error',\n            status: 'error',\n            description: 'This is a description.',\n          },\n          {\n            title: 'In Progress\"',\n            status: 'error',\n            subTitle: 'Left 00:00:08',\n            description: 'This is a description.',\n          },\n        ]}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/steps/index.ts",
    "content": "import Demo from './steps';\nimport danger from './danger';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, danger];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/steps/steps.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Steps } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Steps\n        current={1}\n        items={[\n          {\n            title: 'Finished',\n            description: 'This is a description.',\n          },\n          {\n            title: 'In Progress\"',\n            subTitle: 'Left 00:00:08',\n            description: 'This is a description.',\n          },\n          {\n            title: 'Waiting\"',\n            description: 'This is a description.',\n          },\n        ]}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/switch/index.ts",
    "content": "import Demo from './switch';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/switch/switch.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { Switch } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nfunction onChange() {}\nconst Demo = defineComponent({\n  setup() {\n    const checked = ref(true);\n    return () => <Switch v-model={[checked.value, 'checked']} onChange={onChange} />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'controlOutline', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/table/filterTable.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { TableProps } from 'ant-design-vue';\nimport { Table } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\ntype TableData = { name: string; age: number; address: string };\n\nconst columns: TableProps<TableData>['columns'] = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    filters: [\n      {\n        text: 'Joe',\n        value: 'Joe',\n      },\n      {\n        text: 'Jim',\n        value: 'Jim',\n      },\n      {\n        text: 'Submenu',\n        value: 'Submenu',\n        children: [\n          {\n            text: 'Green',\n            value: 'Green',\n          },\n          {\n            text: 'Black',\n            value: 'Black',\n          },\n        ],\n      },\n    ],\n    // specify the condition of filtering result\n    // here is that finding the name started with `value`\n    onFilter: (value, record) => record.name.indexOf(String(value)) === 0,\n    sorter: (a, b) => a.name.length - b.name.length,\n    sortDirections: ['descend'],\n  },\n  {\n    title: 'Age',\n    dataIndex: 'age',\n    defaultSortOrder: 'descend',\n    sorter: (a, b) => a.age - b.age,\n  },\n  {\n    title: 'Address',\n    dataIndex: 'address',\n    filters: [\n      {\n        text: 'London',\n        value: 'London',\n      },\n      {\n        text: 'New York',\n        value: 'New York',\n      },\n    ],\n    onFilter: (value, record) => record.address.indexOf(String(value)) === 0,\n  },\n];\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n  },\n  {\n    key: '4',\n    name: 'Jim Red',\n    age: 32,\n    address: 'London No. 2 Lake Park',\n  },\n];\n\nconst onChange: TableProps<TableData>['onChange'] = (pagination, filters, sorter, extra) => {\n  // eslint-disable-next-line no-console\n  console.log('params', pagination, filters, sorter, extra);\n};\n\nconst Demo = defineComponent({\n  setup() {\n    return () => <Table columns={columns} dataSource={data} onChange={onChange} />;\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillSecondary', 'colorFillContentHover', 'colorFillContent', 'colorFillAlter'],\n  key: 'filterTable',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/table/index.ts",
    "content": "import Default from './table';\nimport Filter from './filterTable';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, Filter];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/table/table.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Table, Tag, Space } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst columns = [\n  {\n    title: 'Name',\n    dataIndex: 'name',\n    key: 'name',\n  },\n  { title: 'Age', dataIndex: 'age', key: 'age' },\n  { title: 'Address', dataIndex: 'address', key: 'address' },\n  {\n    title: 'Tags',\n    key: 'tags',\n    dataIndex: 'tags',\n  },\n  {\n    title: 'Action',\n    key: 'action',\n  },\n];\nconst data = [\n  {\n    key: '1',\n    name: 'John Brown',\n    age: 32,\n    address: 'New York No. 1 Lake Park',\n    tags: ['nice', 'developer'],\n  },\n  {\n    key: '2',\n    name: 'Jim Green',\n    age: 42,\n    address: 'London No. 1 Lake Park',\n    tags: ['loser'],\n  },\n  {\n    key: '3',\n    name: 'Joe Black',\n    age: 32,\n    address: 'Sidney No. 1 Lake Park',\n    tags: ['cool', 'teacher'],\n  },\n];\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Table\n        columns={columns}\n        dataSource={data}\n        pagination={false}\n        v-slots={{\n          bodyCell: ({ column, text, record }) => {\n            if (column.key === 'name') {\n              return <a>{record.name}</a>;\n            } else if (column.key === 'tags') {\n              return (\n                <span>\n                  {record.tags.map((tag: string) => {\n                    let color = tag.length > 5 ? 'geekblue' : 'green';\n                    if (tag === 'loser') {\n                      color = 'volcano';\n                    }\n                    return (\n                      <Tag color={color} key={tag}>\n                        {tag.toUpperCase()}\n                      </Tag>\n                    );\n                  })}\n                </span>\n              );\n            } else if (column.key === 'action') {\n              return (\n                <Space size=\"middle\">\n                  <a>Invite {record.name}</a> <a>Delete</a>\n                </Space>\n              );\n            } else {\n              return text;\n            }\n          },\n        }}\n      />\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimaryActive', 'colorBgContainer'],\n  key: 'table',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tabs/cardTabs.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Tabs } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { TabPane } = Tabs;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Tabs type={'card'} defaultActiveKey=\"1\">\n        <TabPane tab=\"Tab 1\" key=\"1\">\n          Content of Tab Pane 1\n        </TabPane>\n        <TabPane tab=\"Tab 2\" key=\"2\">\n          Content of Tab Pane 2\n        </TabPane>\n        <TabPane tab=\"Tab 3\" key=\"3\">\n          Content of Tab Pane 3\n        </TabPane>\n      </Tabs>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter'],\n  key: 'cardTabs',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tabs/index.ts",
    "content": "import Default from './tabs';\nimport card from './cardTabs';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, card];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tabs/tabs.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Tabs } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { TabPane } = Tabs;\nfunction callback() {}\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Tabs defaultActiveKey=\"1\" onChange={callback}>\n        <TabPane tab=\"Tab 1\" key=\"1\">\n          Content of Tab Pane 1\n        </TabPane>\n        <TabPane tab=\"Tab 2\" key=\"2\">\n          Content of Tab Pane 2\n        </TabPane>\n        <TabPane tab=\"Tab 3\" key=\"3\">\n          Content of Tab Pane 3\n        </TabPane>\n      </Tabs>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'colorPrimaryActive', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/closable.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Tag closable>Error</Tag>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter', 'colorIcon', 'colorIconHover'],\n  key: 'closable',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/error.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Tag color=\"error\">Error</Tag>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorBg', 'colorErrorBorder'],\n  key: 'error',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/index.ts",
    "content": "import Default from './tag';\nimport error from './error';\nimport info from './info';\nimport success from './success';\nimport warning from './warning';\nimport multiTags from './multiTags';\nimport closable from './closable';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [\n  Default,\n  error,\n  info,\n  success,\n  warning,\n  multiTags,\n  closable,\n];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/info.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Tag color=\"processing\">Info</Tag>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorInfo', 'colorInfoBg', 'colorInfoBorder'],\n  key: 'info',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/multiTags.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { CheckableTag } = Tag;\n\nconst Checkable = () => (\n  <div>\n    <CheckableTag checked>Error</CheckableTag>\n    <CheckableTag checked={false}>Error</CheckableTag>\n  </div>\n);\n\nconst componentDemo: ComponentDemo = {\n  demo: <Checkable />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'colorPrimaryActive'],\n  key: 'multiTags',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/success.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Tag color=\"success\">Success</Tag>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess', 'colorSuccessBg', 'colorSuccessBorder'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/tag.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Divider, Space, Tag, theme } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    const { token } = theme.useToken();\n\n    return () => {\n      return (\n        <Space direction={'vertical'}>\n          <div style={{ padding: '12px' }}>\n            <Tag color=\"magenta\">magenta</Tag>\n            <Tag color=\"red\">red</Tag>\n            <Tag color=\"volcano\">volcano</Tag>\n            <Tag color=\"orange\">orange</Tag>\n            <Tag color=\"gold\">gold</Tag>\n            <Tag color=\"lime\">lime</Tag>\n            <Tag color=\"green\">green</Tag>\n            <Tag color=\"cyan\">cyan</Tag>\n            <Tag color=\"blue\">blue</Tag>\n            <Tag color=\"geekblue\">geekblue</Tag>\n            <Tag color=\"purple\">purple</Tag>\n          </div>\n          <Divider />\n          <div style={{ background: token.value.colorFillSecondary, padding: '12px' }}>\n            <Tag color=\"magenta\">magenta</Tag>\n            <Tag color=\"red\">red</Tag>\n            <Tag color=\"volcano\">volcano</Tag>\n            <Tag color=\"orange\">orange</Tag>\n            <Tag color=\"gold\">gold</Tag>\n            <Tag color=\"lime\">lime</Tag>\n            <Tag color=\"green\">green</Tag>\n            <Tag color=\"cyan\">cyan</Tag>\n            <Tag color=\"blue\">blue</Tag>\n            <Tag color=\"geekblue\">geekblue</Tag>\n            <Tag color=\"purple\">purple</Tag>\n          </div>\n        </Space>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'blue-1',\n    'blue-3',\n    'blue-6',\n    'blue-7',\n    'cyan-1',\n    'cyan-3',\n    'cyan-6',\n    'cyan-7',\n    'geekblue-1',\n    'geekblue-3',\n    'geekblue-6',\n    'geekblue-7',\n    'gold-1',\n    'gold-3',\n    'gold-6',\n    'gold-7',\n    'green-1',\n    'green-3',\n    'green-6',\n    'green-7',\n    'lime-1',\n    'lime-3',\n    'lime-6',\n    'lime-7',\n    'magenta-1',\n    'magenta-3',\n    'magenta-6',\n    'magenta-7',\n    'orange-1',\n    'orange-3',\n    'orange-6',\n    'orange-7',\n    'pink-1',\n    'pink-3',\n    'pink-6',\n    'pink-7',\n    'purple-1',\n    'purple-3',\n    'purple-6',\n    'purple-7',\n    'volcano-1',\n    'volcano-3',\n    'volcano-6',\n    'volcano-7',\n    'yellow-1',\n    'yellow-3',\n    'yellow-6',\n    'yellow-7',\n    'red-1',\n    'red-3',\n    'red-6',\n    'red-7',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tag/warning.tsx",
    "content": "import { Tag } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <Tag color=\"warning\">Warning</Tag>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning', 'colorWarningBg', 'colorWarningBorder'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timePicker/index.ts",
    "content": "import Demo from './time-picker';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timePicker/time-picker.tsx",
    "content": "import { TimePicker } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = () => <TimePicker />;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timeline/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Timeline } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Timeline>\n        <Timeline.Item color={'red'}>Create a services site 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'red'}>Solve initial network problems 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'red'}>Technical testing 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'red'}>Network problems being solved 2015-09-01</Timeline.Item>\n      </Timeline>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timeline/index.ts",
    "content": "import Default from './timeline';\nimport danger from './danger';\nimport success from './success';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, success];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timeline/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Timeline } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Timeline>\n        <Timeline.Item color={'green'}>Create a services site 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'green'}>Solve initial network problems 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'green'}>Technical testing 2015-09-01</Timeline.Item>\n        <Timeline.Item color={'green'}>Network problems being solved 2015-09-01</Timeline.Item>\n      </Timeline>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/timeline/timeline.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Timeline } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Timeline>\n        <Timeline.Item>Create a services site 2015-09-01</Timeline.Item>\n        <Timeline.Item>Solve initial network problems 2015-09-01</Timeline.Item>\n        <Timeline.Item>Technical testing 2015-09-01</Timeline.Item>\n        {/*<Timeline.Item>Network problems being solved 2015-09-01</Timeline.Item>*/}\n      </Timeline>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorText', 'colorSplit', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tooltip/index.ts",
    "content": "import Demo from './tooltip';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tooltip/tooltip.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Tooltip } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Tooltip title=\"prompt text\">\n          <span>Tooltip will show on mouse enter.</span>\n        </Tooltip>\n      </div>\n    );\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgSpotlight', 'colorTextLightSolid'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/danger.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { Transfer } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nimport mockData from './data';\n\nconst initialTargetKeys = mockData.filter(item => +item.key > 10).map(item => item.key);\n\nconst Demo = defineComponent({\n  setup() {\n    const targetKeys = ref(initialTargetKeys);\n    const selectedKeys = ref<string[]>([]);\n    const onScroll = () => {};\n\n    return () => {\n      return (\n        <Transfer\n          dataSource={mockData}\n          titles={['Source', 'Target']}\n          targetKeys={targetKeys.value}\n          status={'error'}\n          selectedKeys={selectedKeys.value}\n          onChange={nextTargetKeys => {\n            targetKeys.value = nextTargetKeys;\n          }}\n          onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {\n            selectedKeys.value = [...sourceSelectedKeys, ...targetSelectedKeys];\n          }}\n          onScroll={onScroll}\n          render={item => item.title}\n        />\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/data.ts",
    "content": "const mockData: any[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n  });\n}\nexport default mockData;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/disabled.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { Transfer } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst mockData: any[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n  });\n}\n\nconst initialTargetKeys = mockData.filter(item => +item.key > 10).map(item => item.key);\n\nconst Demo = defineComponent({\n  setup() {\n    const targetKeys = ref(initialTargetKeys);\n    const selectedKeys = ref<string[]>([]);\n    const onScroll = () => {};\n\n    return () => {\n      <Transfer\n        dataSource={mockData}\n        titles={['Source', 'Target']}\n        targetKeys={targetKeys.value}\n        disabled\n        selectedKeys={selectedKeys.value}\n        onChange={nextTargetKeys => {\n          targetKeys.value = nextTargetKeys;\n        }}\n        onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {\n          selectedKeys.value = [...sourceSelectedKeys, ...targetSelectedKeys];\n        }}\n        onScroll={onScroll}\n        render={item => item.title}\n      />;\n    };\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/index.ts",
    "content": "import Default from './transfer';\nimport danger from './danger';\nimport warning from './warning';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, warning, danger, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/transfer.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { Transfer } from 'ant-design-vue';\n\nimport mockData from './data';\nimport type { ComponentDemo } from '../../interface';\n\nconst initialTargetKeys = mockData.filter(item => +item.key > 10).map(item => item.key);\n\nconst Demo = defineComponent({\n  setup() {\n    const targetKeys = ref(initialTargetKeys);\n    const selectedKeys = ref<string[]>(['1', '2']);\n    const onScroll = () => {};\n    return () => {\n      return (\n        <Transfer\n          dataSource={mockData}\n          titles={['Source', 'Target']}\n          targetKeys={targetKeys.value}\n          selectedKeys={selectedKeys.value}\n          onChange={nextTargetKeys => {\n            targetKeys.value = nextTargetKeys;\n          }}\n          onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {\n            selectedKeys.value = [...sourceSelectedKeys, ...targetSelectedKeys];\n          }}\n          onScroll={onScroll}\n          render={item => item.title}\n        />\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['controlItemBgActiveHover', 'controlItemBgActive', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/transfer/warning.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { Transfer } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst mockData: any[] = [];\nfor (let i = 0; i < 20; i++) {\n  mockData.push({\n    key: i.toString(),\n    title: `content${i + 1}`,\n    description: `description of content${i + 1}`,\n  });\n}\n\nconst initialTargetKeys = mockData.filter(item => +item.key > 10).map(item => item.key);\n\nconst Demo = defineComponent({\n  setup() {\n    const targetKeys = ref(initialTargetKeys);\n    const selectedKeys = ref<string[]>([]);\n    const onScroll = () => {};\n\n    return () => {\n      return (\n        <Transfer\n          dataSource={mockData}\n          titles={['Source', 'Target']}\n          targetKeys={targetKeys.value}\n          status={'warning'}\n          selectedKeys={selectedKeys.value}\n          onChange={nextTargetKeys => {\n            targetKeys.value = nextTargetKeys;\n          }}\n          onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {\n            selectedKeys.value = [...sourceSelectedKeys, ...targetSelectedKeys];\n          }}\n          onScroll={onScroll}\n          render={item => item.title}\n        />\n      );\n    };\n  },\n});\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tree/disabled.tsx",
    "content": "import { Tree } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst treeData = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        disabled: true,\n        children: [\n          { title: 'leaf', key: '0-0-0-0', disableCheckbox: true },\n          { title: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [\n          {\n            title: <span style={{ color: '#1890ff' }}>sss</span>,\n            key: '0-0-1-0',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst Demo = () => {\n  return (\n    <Tree\n      disabled\n      checkable\n      expandedKeys={['0-0-0', '0-0-1']}\n      selectedKeys={['0-0-0', '0-0-1']}\n      checkedKeys={['0-0-0', '0-0-1']}\n      treeData={treeData}\n    />\n  );\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextDisabled', 'colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tree/index.ts",
    "content": "import Demo from './tree';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Demo, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/tree/tree.tsx",
    "content": "import { Tree } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst treeData = [\n  {\n    title: 'parent 1',\n    key: '0-0',\n    children: [\n      {\n        title: 'parent 1-0',\n        key: '0-0-0',\n        disabled: true,\n        children: [\n          { title: 'leaf', key: '0-0-0-0', disableCheckbox: true },\n          { title: 'leaf', key: '0-0-0-1' },\n        ],\n      },\n      {\n        title: 'parent 1-1',\n        key: '0-0-1',\n        children: [\n          {\n            title: <span style={{ color: '#1890ff' }}>sss</span>,\n            key: '0-0-1-0',\n          },\n        ],\n      },\n    ],\n  },\n];\nconst Demo = () => {\n  return (\n    <Tree\n      checkable\n      expandedKeys={['0-0-0', '0-0-1']}\n      selectedKeys={['0-0-0', '0-0-1']}\n      checkedKeys={['0-0-0', '0-0-1']}\n      treeData={treeData}\n    />\n  );\n};\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'controlOutline', 'colorBgContainer'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/treeSelect/disabled.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { TreeSelect } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { TreeNode } = TreeSelect;\n\nconst Demo = defineComponent({\n  setup() {\n    const value = ref(undefined);\n    const onChange = () => {\n      value.value = value.value;\n    };\n    return () => {\n      return (\n        <TreeSelect\n          disabled\n          showSearch\n          style={{ width: '100%' }}\n          value={value.value}\n          dropdownStyle={{ maxHeight: '400px', overflow: 'auto' }}\n          placeholder=\"Please select\"\n          allowClear\n          treeDefaultExpandAll\n          onChange={onChange}\n        >\n          <TreeNode value=\"parent 1\" title=\"parent 1\">\n            <TreeNode value=\"parent 1-0\" title=\"parent 1-0\">\n              <TreeNode value=\"leaf1\" title=\"leaf1\" />\n              <TreeNode value=\"leaf2\" title=\"leaf2\" />\n            </TreeNode>\n            <TreeNode value=\"parent 1-1\" title=\"parent 1-1\">\n              <TreeNode value=\"leaf3\" title={'leaf3'} />\n            </TreeNode>\n          </TreeNode>\n        </TreeSelect>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorTextDisabled', 'colorBgContainerDisabled'],\n  key: 'disabled',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/treeSelect/index.ts",
    "content": "import Default from './tree-select';\nimport disabled from './disabled';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, disabled];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/treeSelect/tree-select.tsx",
    "content": "import { defineComponent, ref } from 'vue';\nimport { TreeSelect } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { TreeNode } = TreeSelect;\n\nconst Demo = defineComponent({\n  setup() {\n    const value = ref(undefined);\n    const onChange = () => {\n      value.value = value.value;\n    };\n    return () => {\n      return (\n        <TreeSelect\n          showSearch\n          style={{ width: '100%' }}\n          value={value.value}\n          dropdownStyle={{ maxHeight: '400px', overflow: 'auto' }}\n          placeholder=\"Please select\"\n          allowClear\n          treeDefaultExpandAll\n          onChange={onChange}\n        >\n          <TreeNode value=\"parent 1\" title=\"parent 1\">\n            <TreeNode value=\"parent 1-0\" title=\"parent 1-0\">\n              <TreeNode value=\"leaf1\" title=\"leaf1\" />\n              <TreeNode value=\"leaf2\" title=\"leaf2\" />\n            </TreeNode>\n            <TreeNode value=\"parent 1-1\" title=\"parent 1-1\">\n              <TreeNode value=\"leaf3\" title={'leaf3'} />\n            </TreeNode>\n          </TreeNode>\n        </TreeSelect>\n      );\n    };\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: [\n    'colorPrimary',\n    'colorPrimaryActive',\n    'controlOutline',\n    'colorBgElevated',\n    'colorBgContainer',\n  ],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/Heading4.tsx",
    "content": "import { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Title } = Typography;\n\nconst Demo = () => <Title level={4}>Heading 4</Title>;\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['fontSizeHeading4'],\n  key: 'heading4',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/error.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Title, Text } = Typography;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Title type={'danger'} level={4}>\n          Error Title\n        </Title>\n        <Text type={'danger'}>error Text</Text>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorHover', 'colorErrorActive'],\n  key: 'error',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/index.tsx",
    "content": "import TypographyDemo from './typography';\nimport Heading4 from './Heading4';\nimport warning from './warning';\nimport success from './success';\nimport error from './error';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [TypographyDemo, Heading4, error, warning, success];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/success.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Title, Text } = Typography;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Title type={'success'} level={4}>\n          Success Title\n        </Title>\n        <Text type={'success'}>success Text</Text>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'success',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/typography.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Title, Paragraph, Text, Link } = Typography;\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Typography>\n        <Title level={4}>《故乡》 </Title>\n        <Paragraph>——鲁迅</Paragraph>\n        <Paragraph>\n          <Text strong>深蓝的天空中挂着一轮金黄的圆月</Text>\n          ，下面是海边的沙地，都种着一望无际的碧绿的西瓜，其间有一个十一二岁的少年，项带银圈，手捏一柄钢叉，\n          <Text mark>向一匹猹尽力的刺去</Text>\n          ，那猹却将身一扭，反从他的胯下逃走了。\n        </Paragraph>\n        <Paragraph>\n          <ul>\n            <li>\n              <Link href=\"#\">狂人日记</Link>\n            </li>\n            <li>\n              <Link href=\"#\">呐喊</Link>\n            </li>\n            <li>\n              <Link href=\"#\">彷徨</Link>\n            </li>\n          </ul>\n        </Paragraph>\n      </Typography>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorSuccess'],\n  key: 'default',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/typographyFull.tsx",
    "content": "import { Typography, Divider } from 'ant-design-vue';\n\nconst { Title, Paragraph, Text, Link } = Typography;\nconst blockContent = `AntV 是蚂蚁金服全新一代数据可视化解决方案，致力于提供一套简单方便、专业可靠、不限可能的数据可视化最佳实践。得益于丰富的业务场景和用户需求挑战，AntV 经历多年积累与不断打磨，已支撑整个阿里集团内外 20000+ 业务系统，通过了日均千万级 UV 产品的严苛考验。我们正在基础图表，图分析，图编辑，地理空间可视化，智能可视化等各个可视化的领域耕耘，欢迎同路人一起前行。`;\nexport default () => (\n  <Typography>\n    <Title>Introduction</Title>{' '}\n    <Paragraph>\n      {' '}\n      In the process of internal desktop applications development, many different design specs and\n      implementations would be involved, which might cause designers and developers difficulties and\n      duplication and reduce the efficiency of development.{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      After massive project practice and summaries, Ant Design, a design language for background\n      applications, is refined by Ant UED Team, which aims to{' '}\n      <Text strong>\n        {' '}\n        uniform the user interface specs for internal background projects, lower the unnecessary\n        cost of design differences and implementation and liberate the resources of design and\n        front-end development{' '}\n      </Text>{' '}\n      .{' '}\n    </Paragraph>{' '}\n    <Title level={2}>Guidelines and Resources</Title>{' '}\n    <Paragraph>\n      {' '}\n      We supply a series of design principles, practical patterns and high quality design resources\n      (<Text code>Sketch</Text> and <Text code>Axure</Text>), to help people create their product\n      prototypes beautifully and efficiently.{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      <ul>\n        {' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/spec/proximity\">Principles</Link>{' '}\n        </li>{' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/spec/overview\">Patterns</Link>{' '}\n        </li>{' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/resources\">Resource Download</Link>{' '}\n        </li>{' '}\n      </ul>{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      Press <Text keyboard>Esc</Text> to exit...{' '}\n    </Paragraph>{' '}\n    <Divider /> <Title>介绍</Title>{' '}\n    <Paragraph>\n      {' '}\n      蚂蚁的企业级产品是一个庞大且复杂的体系。这类产品不仅量级巨大且功能复杂，而且变动和并发频繁，常常需要设计与开发能够快速的做出响应。同时这类产品中有存在很多类似的页面以及组件，可以通过抽象得到一些稳定且高复用性的内容。{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      随着商业化的趋势，越来越多的企业级产品对更好的用户体验有了进一步的要求。带着这样的一个终极目标，我们（蚂蚁金服体验技术部）经过大量的项目实践和总结，逐步打磨出一个服务于企业级产品的设计体系\n      Ant Design。基于<Text mark>『确定』和『自然』</Text>{' '}\n      的设计价值观，通过模块化的解决方案，降低冗余的生产成本，让设计者专注于{' '}\n      <Text strong>更好的用户体验</Text>。{' '}\n    </Paragraph>{' '}\n    <Title level={2}>设计资源</Title>{' '}\n    <Paragraph>\n      {' '}\n      我们提供完善的设计原则、最佳实践和设计资源文件（<Text code>Sketch</Text> 和{' '}\n      <Text code>Axure</Text>），来帮助业务快速设计出高质量的产品原型。{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      <ul>\n        {' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/spec/proximity-cn\">设计原则</Link>{' '}\n        </li>{' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/spec/overview-cn\">设计模式</Link>{' '}\n        </li>{' '}\n        <li>\n          {' '}\n          <Link href=\"/docs/resources-cn\">设计资源</Link>{' '}\n        </li>{' '}\n      </ul>{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      <blockquote>{blockContent}</blockquote> <pre>{blockContent}</pre>{' '}\n    </Paragraph>{' '}\n    <Paragraph>\n      {' '}\n      按<Text keyboard>Esc</Text>键退出阅读……{' '}\n    </Paragraph>{' '}\n  </Typography>\n);\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/warning.tsx",
    "content": "import { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nimport { defineComponent } from 'vue';\nconst { Title, Text } = Typography;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Title type={'warning'} level={4}>\n          Error Title\n        </Title>\n        <Text type={'warning'}>error Text</Text>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/warningText.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Text } = Typography;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Text type={'warning'}>Warning Title</Text>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/typography/warningTitle.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { Typography } from 'ant-design-vue';\nimport type { ComponentDemo } from '../../interface';\n\nconst { Title } = Typography;\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Title type={'warning'} level={4}>\n          Warning Text\n        </Title>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorWarning'],\n  key: 'warning',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/upload/avatar.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { PlusOutlined } from '@ant-design/icons-vue';\nimport { Upload } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Upload\n          name=\"avatar\"\n          listType=\"picture-card\"\n          class=\"avatar-uploader\"\n          showUploadList={false}\n          action=\"https://www.mocky.io/v2/5cc8019d300000980a055e76\"\n        >\n          <div>\n            <PlusOutlined />\n            <div style={{ marginTop: 8 }}>Upload</div>\n          </div>\n        </Upload>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorFillAlter'],\n  key: 'avatar',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/upload/danger.tsx",
    "content": "import { defineComponent } from 'vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\nimport { Upload, Button } from 'ant-design-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <div>\n        <Upload\n          defaultFileList={[\n            {\n              uid: '3',\n              name: 'zzz.png',\n              status: 'error',\n              response: 'Server Error 500',\n              url: 'http://www.baidu.com/zzz.png',\n            },\n          ]}\n        >\n          <Button icon={<UploadOutlined />}>Upload</Button>\n        </Upload>\n        <Upload\n          listType={'picture'}\n          defaultFileList={[\n            {\n              uid: '3',\n              name: 'zzz.png',\n              status: 'error',\n              response: 'Server Error 500',\n            },\n          ]}\n        >\n          <Button icon={<UploadOutlined />}>Upload</Button>\n        </Upload>\n      </div>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorError', 'colorErrorBg'],\n  key: 'danger',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/upload/index.ts",
    "content": "import Default from './upload';\nimport danger from './danger';\nimport avatar from './avatar';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst previewerDemo: ComponentDemo[] = [Default, danger, avatar];\n\nexport default previewerDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-demos/upload/upload.tsx",
    "content": "import { defineComponent } from 'vue';\nimport type { UploadProps } from 'ant-design-vue';\nimport { Upload, message, Button } from 'ant-design-vue';\nimport { UploadOutlined } from '@ant-design/icons-vue';\n\nimport type { ComponentDemo } from '../../interface';\n\nconst props: UploadProps = {\n  name: 'file',\n  action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',\n  headers: { authorization: 'authorization-text' },\n  onChange(info) {\n    if (info.file.status === 'done') {\n      message.success(`${info.file.name} file uploaded successfully`);\n    } else if (info.file.status === 'error') {\n      message.error(`${info.file.name} file upload failed.`);\n    }\n  },\n};\nconst Demo = defineComponent({\n  setup() {\n    return () => (\n      <Upload {...props}>\n        <Button icon={<UploadOutlined />}>Click to Upload</Button>\n      </Upload>\n    );\n  },\n});\n\nconst componentDemo: ComponentDemo = {\n  demo: <Demo />,\n  tokens: ['colorPrimary', 'colorPrimaryHover', 'colorPrimaryActive'],\n  key: 'upload',\n};\n\nexport default componentDemo;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-panel/ComponentCard.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref } from 'vue';\nimport type { CardProps } from 'ant-design-vue';\nimport { Button, Card } from 'ant-design-vue';\nimport { Control } from '../icons';\nimport makeStyle from '../utils/makeStyle';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { MutableTheme, TokenName } from '../interface';\nimport ComponentTokenDrawer from './ComponentTokenDrawer';\n\nconst useStyle = makeStyle('ComponentCard', token => ({\n  [`${token.rootCls}-card.component-card`]: {\n    borderRadius: 6,\n    boxShadow: `0 1px 2px 0 rgba(25,15,15,0.07)`,\n\n    [`${token.rootCls}-card-head`]: {\n      paddingInline: 18,\n\n      [`${token.rootCls}-card-head-title`]: {\n        paddingBlock: token.paddingSM,\n        fontSize: token.fontSize,\n      },\n    },\n\n    [`${token.rootCls}-card-body`]: {\n      padding: 18,\n      overflow: 'auto',\n    },\n\n    '.component-token-control-icon': {\n      color: token.colorIcon,\n      transition: `color ${token.motionDurationMid}`,\n      fontSize: token.fontSizeLG,\n      cursor: 'pointer',\n\n      '&:hover': {\n        color: token.colorIconHover,\n      },\n    },\n  },\n}));\n\nexport const getComponentDemoId = (component: string) => `antdv-token-previewer-${component}`;\n\nexport interface ComponentCardProps {\n  title: CardProps['title'];\n  component?: string;\n  onTokenClick?: (token: TokenName) => void;\n  drawer?: boolean;\n  theme?: MutableTheme;\n}\n\nconst ComponentCard = defineComponent({\n  name: 'ComponentCard',\n  inheritAttrs: false,\n  props: {\n    title: { type: String as PropType<CardProps['title']> },\n    component: { type: String },\n    onTokenClick: { type: Function as PropType<(token: TokenName) => void> },\n    drawer: { type: Boolean },\n    theme: { type: Object as PropType<MutableTheme> },\n  },\n  setup(props, { attrs, slots }) {\n    const { component, title, theme, drawer } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const drawerOpen = ref(false);\n\n    return () => {\n      return wrapSSR(\n        <>\n          <Card\n            {...attrs}\n            class={classNames('component-card', attrs.class, hashId.value)}\n            title={title.value}\n            v-slots={{\n              extra: () =>\n                drawer.value &&\n                theme.value && (\n                  <Button\n                    type=\"text\"\n                    onClick={e => {\n                      e.stopPropagation();\n                      drawerOpen.value = true;\n                    }}\n                  >\n                    <Control class=\"component-token-control-icon\" />\n                  </Button>\n                ),\n            }}\n          >\n            {slots.default && slots.default()}\n          </Card>\n          {drawer.value && theme.value && (\n            <ComponentTokenDrawer\n              open={drawerOpen.value}\n              theme={theme.value}\n              component={component.value}\n              onClose={() => (drawerOpen.value = false)}\n            />\n          )}\n        </>,\n      );\n    };\n  },\n});\n\nexport default ComponentCard;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-panel/ComponentDemoGroup.tsx",
    "content": "import type { CSSProperties, PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\nimport { ConfigProvider, Tooltip } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport ComponentDemos from '../component-demos';\nimport type { ComponentDemo, MutableTheme, TokenName } from '../interface';\nimport { useInjectLocaleContext } from '../locale';\nimport makeStyle from '../utils/makeStyle';\nimport ComponentCard, { getComponentDemoId } from './ComponentCard';\n\nconst useStyle = makeStyle('ComponentDemoGroup', token => ({\n  '.previewer-component-demo-group': {\n    display: 'flex',\n    width: '100%',\n    overflow: 'hidden',\n\n    '&:first-child': {\n      '.previewer-component-demo-group-item': {\n        paddingTop: token.padding,\n      },\n    },\n\n    '&:last-child': {\n      '.previewer-component-demo-group-item': {\n        paddingBottom: token.padding,\n      },\n    },\n  },\n}));\n\nconst useDemoStyle = makeStyle('ComponentDemoBlock', token => ({\n  '.previewer-component-demo-group-item': {\n    flex: '1 1 50%',\n    paddingInline: token.padding,\n    paddingBlock: token.padding / 2,\n    width: 0,\n    backgroundColor: token.colorBgLayout,\n\n    '.previewer-component-demo-group-item-relative-token': {\n      color: token.colorTextSecondary,\n      paddingBottom: 8,\n\n      '&:not(:first-child)': {\n        marginTop: 12,\n      },\n    },\n  },\n}));\n\nexport type ComponentDemoBlockProps = {\n  component: string;\n  onTokenClick?: (token: TokenName) => void;\n  size?: 'small' | 'middle' | 'large';\n  disabled?: boolean;\n  demos?: (ComponentDemo & { active?: boolean })[];\n  theme: MutableTheme;\n  componentDrawer?: boolean;\n};\n\nexport const ComponentDemoBlock = defineComponent({\n  name: 'ComponentDemoBlock',\n  inheritAttrs: false,\n  props: {\n    component: { type: String },\n    onTokenClick: { type: Function as PropType<(token: TokenName) => void> },\n    size: { type: String as PropType<'small' | 'middle' | 'large'>, default: 'middle' },\n    disabled: { type: Boolean, default: false },\n    demos: {\n      type: Array as PropType<(ComponentDemo & { active?: boolean })[]>,\n      default: () => [],\n    },\n    theme: { type: Object as PropType<MutableTheme> },\n    componentDrawer: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { component, size, disabled, demos, theme, componentDrawer } = toRefs(props);\n\n    const [, hashId] = useDemoStyle();\n    const locale = useInjectLocaleContext();\n\n    return () => {\n      return (\n        <div {...attrs} class={classNames('previewer-component-demo-group-item', hashId.value)}>\n          <ComponentCard\n            title={component.value}\n            component={component.value}\n            onTokenClick={props.onTokenClick}\n            drawer={componentDrawer.value}\n            theme={theme.value}\n          >\n            <ConfigProvider componentSize={size.value} componentDisabled={disabled.value}>\n              {demos.value.some(item => item.active)\n                ? demos.value.map(demo => (\n                    <div key={demo.key} style={{ display: demo.active ? '' : 'none' }}>\n                      {demo.tokens && (\n                        <div class=\"previewer-component-demo-group-item-relative-token\">\n                          <Tooltip title={demo.tokens.join(', ')}>\n                            <span>\n                              {locale.value.demo.relatedTokens}:{' '}\n                              {demo.tokens.slice(0, 2).join(', ')}\n                              {demo.tokens.length > 2 ? '...' : ''}\n                            </span>\n                          </Tooltip>\n                        </div>\n                      )}\n                      {demo.demo}\n                    </div>\n                  ))\n                : demos.value[0]?.demo}\n            </ConfigProvider>\n          </ComponentCard>\n        </div>\n      );\n    };\n  },\n});\n\nexport type ComponentDemoGroupProps = {\n  themes: MutableTheme[];\n  components: Record<string, string[]>;\n  activeComponents?: string[];\n  size?: 'small' | 'middle' | 'large';\n  disabled?: boolean;\n  selectedTokens?: string[];\n  onTokenClick?: (token: TokenName) => void;\n  componentDrawer?: boolean;\n  hideTokens?: boolean;\n};\n\nconst ComponentDemoGroup = defineComponent({\n  name: 'ComponentDemoGroup',\n  inheritAttrs: false,\n  props: {\n    themes: { type: Array as PropType<MutableTheme[]> },\n    components: { type: Object as PropType<Record<string, string[]>> },\n    activeComponents: { type: Array as PropType<string[]> },\n    size: { type: String as PropType<'small' | 'middle' | 'large'> },\n    disabled: { type: Boolean },\n    selectedTokens: { type: Array as PropType<string[]> },\n    onTokenClick: { type: Function as PropType<(token: TokenName) => void> },\n    componentDrawer: { type: Boolean },\n    hideTokens: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const {\n      themes,\n      components,\n      size,\n      disabled,\n      activeComponents,\n      selectedTokens,\n      componentDrawer,\n      hideTokens,\n    } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    return () => {\n      return wrapSSR(\n        <>\n          {Object.entries(components.value)\n            .reduce<string[]>((result, [, group]) => result.concat(group), [])\n            .map(item => {\n              const componentDemos = ComponentDemos[item];\n              if (!componentDemos) {\n                return null;\n              }\n              const demos: ComponentDemo[] = componentDemos.map((demo, index) => {\n                return {\n                  ...demo,\n                  tokens: hideTokens.value ? undefined : demo.tokens,\n                  active:\n                    ((!selectedTokens.value || selectedTokens.value.length === 0) && index === 0) ||\n                    selectedTokens.value?.some(token => demo.tokens?.includes(token as any)),\n                };\n              });\n\n              return (\n                <div\n                  {...attrs}\n                  class={classNames('previewer-component-demo-group', hashId.value, attrs.class)}\n                  key={item}\n                  id={getComponentDemoId(item)}\n                  style={{\n                    display:\n                      !activeComponents.value ||\n                      activeComponents.value.length === 0 ||\n                      activeComponents.value.includes(item)\n                        ? ''\n                        : 'none',\n                    ...(attrs.style as CSSProperties),\n                  }}\n                >\n                  {themes.value.length > 1 ? (\n                    themes.value.map(theme => (\n                      <ConfigProvider key={theme.key} theme={theme.config}>\n                        <ComponentDemoBlock\n                          component={item}\n                          onTokenClick={props.onTokenClick}\n                          demos={demos}\n                          disabled={disabled.value}\n                          size={size.value}\n                          theme={theme}\n                          componentDrawer={componentDrawer.value}\n                        />\n                      </ConfigProvider>\n                    ))\n                  ) : (\n                    <ComponentDemoBlock\n                      component={item}\n                      onTokenClick={props.onTokenClick}\n                      demos={demos}\n                      disabled={disabled.value}\n                      size={size.value}\n                      theme={themes.value[0]}\n                      componentDrawer={componentDrawer.value}\n                    />\n                  )}\n                </div>\n              );\n            })}\n        </>,\n      );\n    };\n  },\n});\n\nexport default ComponentDemoGroup;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-panel/ComponentTokenDrawer.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, computed } from 'vue';\nimport { BuildOutlined, CarOutlined } from '@ant-design/icons-vue';\nimport { ConfigProvider, Drawer, Empty, Tag, theme as antdTheme, Tooltip } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport ComponentDemos from '../component-demos';\nimport type { AliasToken, ComponentDemo, MutableTheme, TokenName, TokenValue } from '../interface';\nimport { useInjectLocaleContext } from '../locale';\nimport TokenCard from '../token-panel/token-card';\nimport getDesignToken from '../utils/getDesignToken';\nimport makeStyle from '../utils/makeStyle';\nimport { getComponentToken } from '../utils/statistic';\nimport ComponentCard from './ComponentCard';\n\nconst { defaultAlgorithm } = antdTheme;\n\nconst useStyle = makeStyle('ComponentTokenDrawer', token => ({\n  '.previewer-component-token-drawer': {\n    [`&${token.rootCls}-drawer ${token.rootCls}-drawer-body`]: {\n      padding: '0 !important',\n    },\n\n    '.previewer-component-drawer-subtitle': {\n      fontWeight: token.fontWeightStrong,\n      marginBottom: token.marginSM,\n      marginInlineStart: token.marginXS,\n      color: token.colorText,\n    },\n\n    '.previewer-component-token-drawer-theme': {\n      fontWeight: 'normal',\n      marginInlineStart: 8,\n      borderRadius: 4,\n      backgroundColor: token.colorInfoBg,\n      color: token.colorPrimary,\n      borderColor: token.colorInfoBg,\n    },\n  },\n}));\n\nexport type ComponentFullDemosProps = {\n  demos: ComponentDemo[];\n};\n\nconst useComponentFullDemosStyle = makeStyle('ComponentFullDemos', token => ({\n  '.previewer-component-full-demos': {\n    flex: 1,\n    overflow: 'auto',\n    padding: 24,\n    backgroundColor: token.colorBgLayout,\n    '> *:not(:last-child)': {\n      marginBottom: 12,\n    },\n  },\n}));\n\nconst ComponentFullDemos = defineComponent({\n  name: 'ComponentFullDemos',\n  inheritAttrs: false,\n  props: {\n    demos: { type: Array as PropType<ComponentDemo[]> },\n  },\n  setup(props, { attrs }) {\n    const { demos } = toRefs(props);\n    const [, hashId] = useComponentFullDemosStyle();\n    const locale = useInjectLocaleContext();\n\n    return () => {\n      return (\n        <div\n          {...attrs}\n          class={classNames('previewer-component-full-demos', hashId.value, attrs.class)}\n        >\n          {demos.value?.map(demo => (\n            <ComponentCard\n              key={demo.key}\n              title={\n                <Tooltip title={demo.tokens?.join(', ')}>\n                  <span>\n                    {locale.value.demo.relatedTokens}: {demo.tokens?.join(', ')}\n                    {(demo.tokens?.length || 0) > 2 ? '...' : ''}\n                  </span>\n                </Tooltip>\n              }\n            >\n              {demo.demo}\n            </ComponentCard>\n          ))}\n        </div>\n      );\n    };\n  },\n});\n\nexport type ComponentTokenDrawerProps = {\n  open?: boolean;\n  component?: string;\n  onClose?: () => void;\n  theme: MutableTheme;\n  onTokenClick?: (token: TokenName) => void;\n};\n\nconst ComponentTokenDrawer = defineComponent({\n  name: 'ComponentTokenDrawer',\n  inheritAttrs: false,\n  props: {\n    open: { type: Boolean },\n    component: { type: String, default: 'Button' },\n    onClose: { type: Function },\n    theme: { type: Object as PropType<MutableTheme> },\n    onTokenClick: { type: Function as PropType<(token: TokenName) => void> },\n  },\n  setup(props) {\n    const { open, component, theme } = toRefs(props);\n\n    const [, hashId] = useStyle();\n\n    const componentToken = computed(\n      () =>\n        getComponentToken(component.value) || {\n          global: [],\n        },\n    );\n\n    const componentTokenData = computed(() => Object.keys(componentToken.value.component ?? {}));\n\n    const aliasTokenData = computed(() => {\n      return componentToken.value.global.slice().sort();\n    });\n\n    const handleComponentTokenChange = (token: string, value: TokenValue) => {\n      theme.value.onThemeChange?.(\n        {\n          ...theme.value.config,\n          components: {\n            ...theme.value.config.components,\n            [component.value]: {\n              ...(theme.value.config.components as any)?.[component.value],\n              [token]: value,\n            },\n          },\n        },\n        ['components', component.value, token],\n      );\n    };\n\n    return () => {\n      return (\n        <Drawer\n          v-model={[open.value, 'open']}\n          v-slots={{\n            title: () => (\n              <div style={{ display: 'flex', alignItems: 'center' }}>\n                <span>{`${component.value} 组件 Token`}</span>\n                <Tag class=\"previewer-component-token-drawer-theme\">{theme.value.name}</Tag>\n              </div>\n            ),\n          }}\n          onClose={props.onClose as any}\n          width={1200}\n          class={classNames('previewer-component-token-drawer', hashId.value)}\n        >\n          <div style={{ display: 'flex', height: '100%' }}>\n            <ConfigProvider theme={theme.value.config}>\n              <ConfigProvider theme={theme.value.config}>\n                <ComponentFullDemos demos={ComponentDemos[component.value]} />\n              </ConfigProvider>\n            </ConfigProvider>\n            <div\n              style={{ flex: '0 0 400px', overflow: 'auto', overflowX: 'hidden', padding: '24px' }}\n            >\n              <div class=\"previewer-component-drawer-subtitle\">Related Tokens / 相关 token</div>\n              <TokenCard\n                icon={<BuildOutlined />}\n                hideUsageCount\n                defaultOpen\n                title=\"Component Token\"\n                tokenArr={componentTokenData.value}\n                tokenPath={['components', component.value]}\n                themes={[theme.value]}\n                fallback={() => componentToken.value.component}\n                onTokenChange={(_, tokenName, value) =>\n                  handleComponentTokenChange(tokenName, value)\n                }\n                placeholder={\n                  <Empty\n                    image={Empty.PRESENTED_IMAGE_SIMPLE}\n                    description=\"暂无相关 Component Token\"\n                    style={{\n                      marginBlock: 0,\n                      paddingBlock: '32px',\n                    }}\n                  />\n                }\n              />\n              <TokenCard\n                icon={<CarOutlined />}\n                hideUsageCount\n                themes={[theme.value]}\n                defaultOpen\n                title=\"Alias Token\"\n                tokenArr={aliasTokenData.value}\n                tokenPath={['components', component.value]}\n                fallback={themeConfig => getDesignToken(themeConfig) as AliasToken}\n                onTokenChange={(_, tokenName, value) =>\n                  handleComponentTokenChange(tokenName, value)\n                }\n                placeholder={\n                  <Empty\n                    image={Empty.PRESENTED_IMAGE_SIMPLE}\n                    description=\"暂无相关 Alias Token\"\n                    style={{\n                      marginBlock: 0,\n                      paddingBlock: '32px',\n                    }}\n                  />\n                }\n              />\n            </div>\n          </div>\n        </Drawer>\n      );\n    };\n  },\n});\n\nexport default defineComponent({\n  name: 'ComponentTokenDrawerProvider',\n  inheritAttrs: false,\n  props: {\n    open: { type: Boolean },\n    component: { type: String },\n    onClose: { type: Function },\n    theme: { type: Object as PropType<MutableTheme> },\n  },\n  setup(props, { attrs }) {\n    return () => (\n      <ConfigProvider\n        theme={{\n          algorithm: defaultAlgorithm,\n          ...props.theme,\n        }}\n      >\n        <ComponentTokenDrawer {...props} {...attrs} />\n      </ConfigProvider>\n    );\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-panel/ComponentTree.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, watch, computed, ref } from 'vue';\nimport { SearchOutlined } from '@ant-design/icons-vue';\nimport { Badge, Input, Tree } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { FilterMode } from '../FilterPanel';\nimport makeStyle from '../utils/makeStyle';\nimport { getRelatedComponents } from '../utils/statistic';\n\nconst { DirectoryTree } = Tree;\n\nconst useStyle = makeStyle('ComponentTree', token => ({\n  '.component-tree-wrapper': {\n    minWidth: 200,\n    borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n    height: '100%',\n    overflow: 'hidden',\n    display: 'flex',\n    flexDirection: 'column',\n    paddingBlock: token.paddingXS,\n\n    '.component-tree-search': {\n      margin: '0 8px 12px',\n      width: 'calc(100% - 16px)',\n      backgroundColor: 'rgba(0, 0, 0, 2%)',\n      borderRadius: token.borderRadiusLG,\n      height: 24,\n      input: {\n        fontSize: 12,\n      },\n      '&:hover': {\n        backgroundColor: 'rgba(0, 0, 0, 4%)',\n      },\n    },\n\n    [`${token.rootCls}-tree.component-tree`]: {\n      fontSize: token.fontSizeSM,\n\n      '.component-tree-item.component-tree-item-highlight': {\n        color: token.colorPrimary,\n      },\n\n      [`${token.rootCls}-tree-node-content-wrapper`]: {\n        transition: `background-color ${token.motionDurationSlow}`,\n        borderRadius: 4,\n      },\n\n      [`${token.rootCls}-tree-treenode-selected ${token.rootCls}-tree-node-content-wrapper`]: {\n        color: token.colorTextLightSolid,\n\n        '.component-tree-item.component-tree-item-highlight': {\n          color: token.colorTextLightSolid,\n        },\n      },\n\n      '.component-tree-item': {\n        transition: `color ${token.motionDurationMid}`,\n        lineHeight: `24px`,\n        height: 24,\n        display: 'inline-block',\n      },\n    },\n  },\n}));\n\nexport type ComponentTreeProps = {\n  onSelect?: (component: string) => void;\n  components: Record<string, string[]>;\n  selectedTokens?: string[];\n  filterMode?: FilterMode;\n  activeComponent?: string;\n};\n\nconst getTreeItemId = (component: string) => `component-tree-item-${component}`;\n\nconst ComponentTree = defineComponent({\n  name: 'ComponentTree',\n  inheritAttrs: false,\n  props: {\n    onSelect: { type: Function as PropType<(component: string) => void> },\n    components: { type: Object as PropType<Record<string, string[]>> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    filterMode: { type: String as PropType<FilterMode>, default: 'filter' },\n    activeComponent: { type: String },\n  },\n  setup(props, { attrs }) {\n    const { components, selectedTokens, filterMode, activeComponent } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const treeRef = ref<HTMLDivElement>(null);\n    const search = ref<string>('');\n\n    const relatedComponents = computed(() => {\n      return selectedTokens.value ? getRelatedComponents(selectedTokens.value) : [];\n    });\n\n    watch(activeComponent, val => {\n      treeRef.value?.querySelector<HTMLElement>(`#${getTreeItemId(val || '')}`)?.scrollIntoView({\n        block: 'nearest',\n        inline: 'nearest',\n      });\n    });\n\n    const treeData = computed(() =>\n      Object.entries(components.value)\n        .filter(\n          ([, group]) =>\n            (filterMode.value === 'highlight' ||\n              !relatedComponents.value.length ||\n              group.some(item => relatedComponents.value.includes(item))) &&\n            (!search.value ||\n              group.some(item => item.toLowerCase().includes(search.value.toLowerCase()))),\n        )\n        .map(([type, group]) => ({\n          title: type,\n          key: `type-${type}`,\n          children: group\n            .filter(\n              item =>\n                (filterMode.value === 'highlight' ||\n                  !relatedComponents.value.length ||\n                  relatedComponents.value.includes(item)) &&\n                (!search.value || item.toLowerCase().includes(search.value.toLowerCase())),\n            )\n            .map(item => ({\n              title: (\n                <span\n                  id={getTreeItemId(item)}\n                  class={classNames('component-tree-item', {\n                    'component-tree-item-highlight':\n                      filterMode.value === 'highlight' && relatedComponents.value.includes(item),\n                  })}\n                >\n                  {item}\n                </span>\n              ),\n              switcherIcon: () => (\n                <Badge\n                  color={\n                    filterMode.value === 'highlight' && relatedComponents.value.includes(item)\n                      ? activeComponent.value === item\n                        ? 'white'\n                        : 'blue'\n                      : 'transparent'\n                  }\n                />\n              ),\n              key: item,\n            })),\n        })),\n    );\n\n    const watcher = filterMode => {\n      if (filterMode === 'highlight') {\n        setTimeout(() => {\n          treeRef.value?.getElementsByClassName('component-tree-item-active')[0]?.scrollIntoView({\n            block: 'start',\n            inline: 'nearest',\n            behavior: 'smooth',\n          });\n        }, 100);\n      }\n    };\n    watch(selectedTokens, () => {\n      watcher(filterMode.value);\n    });\n\n    watch(filterMode, val => {\n      watcher(val);\n    });\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames('component-tree-wrapper', hashId.value, attrs.class)}>\n          <Input\n            allowClear\n            placeholder=\"Type to search\"\n            value={search.value}\n            onChange={e => (search.value = e.target.value)}\n            prefix={<SearchOutlined />}\n            bordered={false}\n            class=\"component-tree-search\"\n          />\n          <div ref={treeRef} style={{ overflow: 'auto', flex: 1 }}>\n            <DirectoryTree\n              selectedKeys={[activeComponent.value ?? '']}\n              showIcon={false}\n              defaultExpandAll\n              treeData={treeData.value}\n              class=\"component-tree\"\n              onSelect={node => props.onSelect?.(node[0] as string)}\n              expandAction=\"doubleclick\"\n            />\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default ComponentTree;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/component-panel/index.tsx",
    "content": "import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons-vue';\nimport { Breadcrumb, Segmented, Switch } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType } from 'vue';\nimport { defineComponent, ref, watch, watchEffect, computed, toRefs } from 'vue';\nimport type { FilterMode } from '../FilterPanel';\nimport type { Theme, TokenName } from '../interface';\nimport makeStyle from '../utils/makeStyle';\nimport { getRelatedComponents } from '../utils/statistic';\nimport { getComponentDemoId } from './ComponentCard';\nimport ComponentDemoGroup from './ComponentDemoGroup';\nimport ComponentTree from './ComponentTree';\n\nconst BREADCRUMB_HEIGHT = 40;\n\nconst useStyle = makeStyle('ComponentPanel', token => ({\n  '.component-panel': {\n    boxShadow:\n      '0 2px 4px 0 rgba(0,0,0,0.05), 0 1px 2px 0 rgba(25,15,15,0.07), 0 0 1px 0 rgba(0,0,0,0.08)',\n    backgroundColor: '#fff',\n    display: 'flex',\n    borderRadius: 6,\n    height: '100%',\n    overflow: 'hidden',\n\n    '.component-panel-main': {\n      display: 'flex',\n      flexDirection: 'column',\n      flex: 1,\n      width: 0,\n\n      '.component-panel-head': {\n        padding: `${token.paddingSM}px ${token.paddingSM}px`,\n        flex: 'none',\n        backgroundColor: token.colorBgContainer,\n        display: 'flex',\n        alignItems: 'center',\n        borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBgContainer}`,\n\n        '> *:not(:first-child)': {\n          marginInlineStart: token.margin,\n        },\n\n        [`${token.rootCls}-segmented-item`]: {\n          minWidth: 52,\n        },\n      },\n\n      '.component-panel-toggle-side-icon': {\n        flex: 'none',\n        cursor: 'pointer',\n        marginInlineEnd: token.marginXS,\n\n        '.anticon': {\n          color: token.colorIcon,\n          transition: `color ${token.motionDurationMid}`,\n\n          '&:hover': {\n            color: token.colorIconHover,\n          },\n        },\n      },\n    },\n\n    '.component-panel-side': {\n      flex: 'none',\n      width: 200,\n      overflow: 'hidden',\n      transition: `transform ${token.motionDurationMid}, width ${token.motionDurationMid}`,\n    },\n\n    '.component-panel-side.component-panel-side-hidden': {\n      width: 0,\n      transform: 'translateX(-200px)',\n    },\n\n    '.component-demos-wrapper': {\n      display: 'flex',\n      flex: 1,\n      height: 0,\n      position: 'relative',\n\n      '.component-demos-breadcrumb-wrapper': {\n        position: 'absolute',\n        top: 0,\n        insetInlineStart: 0,\n        width: '100%',\n        height: BREADCRUMB_HEIGHT,\n        zIndex: 20,\n        backgroundColor: token.colorBgContainer,\n        padding: '8px 16px',\n        transition: 'opacity 0.3s',\n        background: 'rgba(255, 255, 255, .6)',\n        backdropFilter: 'blur(10px)',\n        borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBgContainer}`,\n      },\n    },\n\n    '.component-demos': {\n      height: '100%',\n      overflow: 'auto',\n      flex: 1,\n    },\n  },\n}));\n\nexport const antdComponents = {\n  General: ['Button', 'Icon', 'Typography'],\n  Layout: ['Divider', 'Grid', 'Space'],\n  Navigation: ['Breadcrumb', 'Dropdown', 'Menu', 'Pagination', 'Steps'],\n  'Date Entry': [\n    'AutoComplete',\n    'Cascader',\n    'Checkbox',\n    'DatePicker',\n    'Form',\n    'Input',\n    'InputNumber',\n    'Mentions',\n    'Radio',\n    'Rate',\n    'Select',\n    'Slider',\n    'Switch',\n    'TimePicker',\n    'Transfer',\n    'TreeSelect',\n    'Upload',\n  ],\n  'Data Display': [\n    'Avatar',\n    'Badge',\n    'Calendar',\n    'Card',\n    'Carousel',\n    'Collapse',\n    'Descriptions',\n    'Empty',\n    'Image',\n    'List',\n    'Popover',\n    'Segmented',\n    'Statistic',\n    'Table',\n    'Tabs',\n    'Tag',\n    'Timeline',\n    'Tooltip',\n    'Tree',\n  ],\n  Feedback: [\n    'Alert',\n    'Drawer',\n    'Message',\n    'Modal',\n    'Notification',\n    'Popconfirm',\n    'Progress',\n    'Result',\n    'Skeleton',\n    'Spin',\n  ],\n  Other: ['Anchor'],\n};\n\nexport type ComponentPanelProps = {\n  themes: Theme[];\n  selectedTokens?: string[];\n  filterMode?: FilterMode;\n  onTokenClick?: (token: TokenName) => void;\n};\n\nconst Index = defineComponent({\n  name: 'Index',\n  inheritAttrs: false,\n  props: {\n    themes: { type: Array as PropType<Theme[]> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    filterMode: { type: String as PropType<FilterMode> },\n    onTokenClick: { type: Function as PropType<(token: TokenName) => void> },\n  },\n  setup(props, { attrs }) {\n    const { themes, selectedTokens, filterMode } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const showSide = ref<boolean>(true);\n    const demosRef = ref<HTMLDivElement>(null);\n    const componentSize = ref<'large' | 'small' | 'middle'>('middle');\n    const componentDisabled = ref<boolean>(false);\n    const activeComponent = ref<string | undefined>();\n    const showBreadcrumb = ref<boolean>(false);\n\n    const relatedComponents = computed(() => {\n      return selectedTokens.value ? getRelatedComponents(selectedTokens.value) : [];\n    });\n\n    watch(selectedTokens, () => {\n      showSide.value = true;\n    });\n\n    watchEffect(() => {\n      const handleScroll = () => {\n        if (demosRef.value) {\n          showBreadcrumb.value = demosRef.value.scrollTop > 10;\n          for (let i = 0; i < demosRef.value.children.length; i++) {\n            if (\n              demosRef.value.children[i].getBoundingClientRect().top +\n                demosRef.value.children[i].clientHeight -\n                demosRef.value.getBoundingClientRect().top >\n              BREADCRUMB_HEIGHT\n            ) {\n              activeComponent.value = demosRef.value.children[i]?.id.split('-').pop();\n              break;\n            }\n          }\n        }\n      };\n\n      demosRef.value?.addEventListener('scroll', handleScroll);\n      const demosWrapper = demosRef.value;\n      return () => {\n        demosWrapper?.removeEventListener('scroll', handleScroll);\n      };\n    });\n\n    const scrollToComponent = (component: string) => {\n      demosRef.value?.scrollTo({\n        top:\n          (demosRef.value?.querySelector<HTMLElement>(`#${getComponentDemoId(component)}`)\n            ?.offsetTop || 0) - 38,\n        behavior: 'smooth',\n      });\n    };\n\n    const activeComponentCategory = computed(() => {\n      if (!activeComponent.value) {\n        return undefined;\n      }\n      const key = Object.entries(antdComponents).find(([, value]) =>\n        value.includes(activeComponent.value),\n      )?.[0];\n      if (key) {\n        return (antdComponents as any)[key];\n      } else {\n        return undefined;\n      }\n    });\n\n    return () => {\n      const demoGroup = () => (\n        <ComponentDemoGroup\n          themes={themes.value}\n          components={antdComponents}\n          size={componentSize.value}\n          disabled={componentDisabled.value}\n          activeComponents={filterMode.value === 'highlight' ? undefined : relatedComponents.value}\n          selectedTokens={selectedTokens.value}\n          onTokenClick={props.onTokenClick}\n        />\n      );\n      return wrapSSR(\n        <div {...attrs} class={classNames('component-panel', hashId.value, attrs.class)}>\n          <div\n            class={classNames('component-panel-side', {\n              'component-panel-side-hidden': !showSide.value,\n            })}\n          >\n            <ComponentTree\n              activeComponent={activeComponent.value}\n              filterMode={filterMode.value}\n              selectedTokens={selectedTokens.value}\n              components={antdComponents}\n              onSelect={component => {\n                if (component.startsWith('type-')) {\n                  scrollToComponent((antdComponents as any)[component.split('-')[1]][0]);\n                } else {\n                  scrollToComponent(component);\n                }\n              }}\n            />\n          </div>\n          <div class=\"component-panel-main\">\n            <div class=\"component-panel-head\">\n              <div\n                class=\"component-panel-toggle-side-icon\"\n                onClick={() => (showSide.value = !showSide.value)}\n              >\n                {showSide.value ? <MenuFoldOutlined /> : <MenuUnfoldOutlined />}\n              </div>\n              <div>\n                <span style={{ marginRight: '8px' }}>组件尺寸：</span>\n                <Segmented\n                  value={componentSize.value}\n                  onChange={value => (componentSize.value = value as any)}\n                  options={[\n                    { label: '大', value: 'large' },\n                    { label: '中', value: 'middle' },\n                    { label: '小', value: 'small' },\n                  ]}\n                />\n              </div>\n              <div>\n                <span style={{ marginRight: '8px', verticalAlign: 'middle' }}>禁用：</span>\n                <Switch\n                  checked={componentDisabled.value}\n                  onChange={checked => (componentDisabled.value = checked as boolean)}\n                />\n              </div>\n            </div>\n            <div class=\"component-demos-wrapper\">\n              {activeComponent.value && (\n                <div\n                  class=\"component-demos-breadcrumb-wrapper\"\n                  style={{ opacity: showBreadcrumb.value ? 1 : 0 }}\n                >\n                  <Breadcrumb>\n                    <Breadcrumb.Item>\n                      <a\n                        onClick={() =>\n                          activeComponentCategory.value &&\n                          scrollToComponent(activeComponentCategory.value?.[0])\n                        }\n                      >\n                        {\n                          Object.entries(antdComponents).find(([, value]) =>\n                            value.includes(activeComponent.value),\n                          )?.[0]\n                        }\n                      </a>\n                    </Breadcrumb.Item>\n                    <Breadcrumb.Item>{activeComponent.value}</Breadcrumb.Item>\n                  </Breadcrumb>\n                </div>\n              )}\n              <div class=\"component-demos\" ref={demosRef}>\n                {demoGroup()}\n              </div>\n            </div>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default Index;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/hooks/useControlledTheme.tsx",
    "content": "import type { DerivativeFunc } from 'ant-design-vue/es/_util/cssinjs';\nimport { theme as antTheme } from 'ant-design-vue';\nimport type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport type { Ref } from 'vue';\nimport { watchEffect, ref, computed } from 'vue';\nimport type { MutableTheme, Theme } from '../interface';\nimport deepUpdateObj from '../utils/deepUpdateObj';\nimport getDesignToken from '../utils/getDesignToken';\nimport getValueByPath from '../utils/getValueByPath';\n\nconst { darkAlgorithm: defaultDark, compactAlgorithm, defaultAlgorithm } = antTheme;\n\nexport type ThemeCode = 'light' | 'dark' | 'compact';\nexport const themeMap: Record<ThemeCode, DerivativeFunc<any, any>> = {\n  dark: defaultDark,\n  compact: compactAlgorithm,\n  light: defaultAlgorithm,\n};\n\nexport type SetThemeState = (theme: Theme, modifiedPath: string[], updated?: boolean) => void;\n\nexport type UseControlledTheme = (options: {\n  theme?: Ref<Theme>;\n  defaultTheme: Theme;\n  onChange?: (theme: Theme) => void;\n  darkAlgorithm?: Ref<DerivativeFunc<any, any>>;\n}) => {\n  theme: Ref<MutableTheme>;\n  infoFollowPrimary: Ref<boolean>;\n  onInfoFollowPrimaryChange: (value: boolean) => void;\n  updateRef: () => void;\n};\n\nconst useControlledTheme: UseControlledTheme = ({ theme: customTheme, defaultTheme, onChange }) => {\n  const theme = ref<Theme>(customTheme.value ?? defaultTheme);\n  const infoFollowPrimary = ref<boolean>(false);\n  const themeRef = ref<Theme>(theme.value);\n  const renderHolder = ref(0);\n\n  const forceUpdate = () => (renderHolder.value = renderHolder.value + 1);\n\n  const getNewTheme = (newTheme: Theme, force?: boolean): Theme => {\n    const newToken = { ...newTheme.config.token };\n    if (infoFollowPrimary.value || force) {\n      newToken.colorInfo = getDesignToken(newTheme.config).colorPrimary;\n    }\n    return { ...newTheme, config: { ...newTheme.config, token: newToken } };\n  };\n\n  const handleSetTheme: SetThemeState = newTheme => {\n    if (customTheme.value) {\n      onChange?.(getNewTheme(newTheme));\n    } else {\n      theme.value = getNewTheme(newTheme);\n    }\n  };\n\n  const handleResetTheme = (path: string[]) => {\n    let newConfig = { ...theme.value.config };\n    newConfig = deepUpdateObj(newConfig, path, getValueByPath(themeRef.value?.config, path));\n    handleSetTheme({ ...theme.value, config: newConfig }, path);\n  };\n\n  const getCanReset = (origin: ThemeConfig, current: ThemeConfig) => (path: string[]) => {\n    return getValueByPath(origin, path) !== getValueByPath(current, path);\n  };\n\n  // Controlled theme change\n  watchEffect(() => {\n    if (customTheme.value) {\n      theme.value = customTheme.value;\n    }\n  });\n\n  const handleInfoFollowPrimaryChange = (value: boolean) => {\n    infoFollowPrimary.value = value;\n    if (value) {\n      theme.value = getNewTheme(theme.value, true);\n    }\n  };\n\n  return {\n    theme: computed(() => ({\n      ...theme.value,\n      onThemeChange: (config, path) => handleSetTheme({ ...theme.value, config }, path),\n      onReset: handleResetTheme,\n      getCanReset: getCanReset(themeRef.value?.config, theme.value.config),\n    })),\n    infoFollowPrimary,\n    onInfoFollowPrimaryChange: handleInfoFollowPrimaryChange,\n    updateRef: () => {\n      themeRef.value = theme.value;\n      forceUpdate();\n    },\n  };\n};\n\nexport default useControlledTheme;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Arrow.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Arrow = defineComponent({\n  name: 'Arrow',\n  props: {\n    rotate: { type: Number },\n  },\n  setup(props, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            transform: `rotate(${props.rotate})`,\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 16 16\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Arrow-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Arrow-\\u4E3B\\u9898\\u9884\\u89C8\\u5668---\\u7EC4\\u4EF6\\u9884\\u89C8\"\n              transform=\"translate(-335.000000, -153.000000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Arrow-\\u7F16\\u7EC4-18\" transform=\"translate(0.000000, 70.000000)\">\n                <g id=\"Arrow-\\u7F16\\u7EC4-13\" transform=\"translate(331.000000, 79.000000)\">\n                  <g\n                    id=\"Arrow-\\u6298\\u53E0\\u7BAD\\u5934_Black@2x\"\n                    transform=\"translate(12.000000, 12.000000) rotate(90.000000) translate(-12.000000, -12.000000) translate(4.000000, 4.000000)\"\n                  >\n                    <rect\n                      id=\"Arrow-\\u77E9\\u5F62\"\n                      opacity=\"0\"\n                      x=\"0\"\n                      y=\"0\"\n                      width=\"16\"\n                      height=\"16\"\n                    ></rect>\n                    <path\n                      d=\"M8.576,10.6224 C8.46400007,10.7357654 8.31136002,10.7997014 8.152,10.8 L7.848,10.8 C7.68897547,10.7980619 7.53693306,10.7343763 7.424,10.6224 L3.3184,6.4672 C3.16044703,6.30862179 3.16044703,6.05217821 3.3184,5.8936 L3.8864,5.3192 C3.95991079,5.24354153 4.06091047,5.20085176 4.1664,5.20085176 C4.27188953,5.20085176 4.37288921,5.24354153 4.4464,5.3192 L8,8.9168 L11.5536,5.3192 C11.6284927,5.24307539 11.7308111,5.20020394 11.8376,5.20020394 C11.9443889,5.20020394 12.0467073,5.24307539 12.1216,5.3192 L12.6816,5.8936 C12.839553,6.05217821 12.839553,6.30862179 12.6816,6.4672 L8.576,10.6224 Z\"\n                      id=\"Arrow-\\u8DEF\\u5F84\"\n                    ></path>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Arrow;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Brush.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Brush = defineComponent({\n  name: 'Brush',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 14 18\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Brush-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n            fill-opacity=\"0.649999976\"\n          >\n            <g\n              id=\"Brush-\\u4E3B\\u9898\\u7F16\\u8F91\\u5668---\\u591A\\u4E3B\\u9898\"\n              transform=\"translate(-17.000000, -121.000000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Brush-brush\" transform=\"translate(14.000000, 120.000000)\">\n                <path\n                  d=\"M8.20652175,3.2826087 L8.20652175,4.10326086 C8.20652175,4.55649455 7.83910325,4.92391304 7.38586957,4.92391304 C6.93263588,4.92391304 6.56521738,4.55649455 6.56521738,4.10326086 L6.56521738,3.2826087 L4.92391304,3.2826087 L4.92391304,8.20652175 L14.7717391,8.20652175 L14.7717391,3.2826087 L13.1304348,3.2826087 L13.1304348,5.74456522 C13.1304348,6.19779891 12.7630163,6.5652174 12.3097826,6.5652174 C11.8565489,6.5652174 11.4891304,6.19779891 11.4891304,5.74456522 L11.4891304,3.2826087 L8.20652175,3.2826087 Z M4.92391304,9.84782609 L4.92391304,11.4891304 L7.72233695,11.4891304 C8.08431263,11.4890155 8.42799204,11.6482243 8.66197039,11.9244136 C8.89594874,12.2006029 8.99650752,12.5657753 8.93690217,12.9228098 L8.60043479,14.9399728 C8.51784643,15.435105 8.73592476,15.9322123 9.15616576,16.2067558 C9.57640676,16.4812994 10.1192454,16.4812994 10.5394864,16.2067558 C10.9597274,15.9322123 11.1778057,15.435105 11.0952174,14.9399728 L10.75875,12.9228098 C10.6991446,12.5657753 10.7997034,12.2006029 11.0336818,11.9244136 C11.2676601,11.6482243 11.6113395,11.4890155 11.9733152,11.4891304 L14.7717391,11.4891304 L14.7717391,9.84782609 L4.92391304,9.84782609 Z M12.7143641,14.6699783 C12.9035912,15.807501 12.4022968,16.9492894 11.4368082,17.5798421 C10.4713197,18.2103948 9.2243325,18.2103948 8.25884395,17.5798421 C7.2933554,16.9492894 6.79206095,15.807501 6.98128804,14.6699783 L7.23815217,13.1304348 L4.92391304,13.1304348 C4.48861206,13.1304348 4.07113988,12.9575121 3.76333561,12.6497079 C3.45553133,12.3419036 3.2826087,11.9244314 3.2826087,11.4891304 L3.2826087,3.2826087 C3.2826087,2.84730772 3.45553133,2.42983554 3.76333561,2.12203126 C4.07113988,1.81422698 4.48861206,1.64130434 4.92391304,1.64130434 L14.7717391,1.64130434 C15.2070401,1.64130434 15.6245123,1.81422698 15.9323166,2.12203126 C16.2401208,2.42983554 16.4130435,2.84730772 16.4130435,3.2826087 L16.4130435,11.4891304 C16.4130435,11.9244314 16.2401208,12.3419036 15.9323166,12.6497079 C15.6245123,12.9575121 15.2070401,13.1304348 14.7717391,13.1304348 L12.4575,13.1304348 L12.7143641,14.6699783 L12.7143641,14.6699783 Z\"\n                  id=\"Brush-\\u5F62\\u72B6\"\n                ></path>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Brush;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Compact.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Compact = defineComponent({\n  name: 'Compact',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 17 16\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Compact-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Compact-\\u9ED8\\u8BA4\"\n              transform=\"translate(-9.000000, -82.500000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Compact-\\u9009\\u9879\\u4E00\" transform=\"translate(9.268811, 79.500000)\">\n                <g id=\"Compact-smaller\" transform=\"translate(0.000000, 3.000000)\">\n                  <rect\n                    id=\"Compact-\\u77E9\\u5F62\"\n                    opacity=\"0\"\n                    x=\"0\"\n                    y=\"0\"\n                    width=\"16\"\n                    height=\"16\"\n                  ></rect>\n                  <path\n                    id=\"Compact-\\u5F62\\u72B6\"\n                    d=\"M10,14 L10,12 C10,10.8666667 10.8666667,10 12,10 L14,10 C14.4,10 14.6666667,10.2666667 14.6666667,10.6666667 C14.6666667,11.0666667 14.4,11.3333333 14,11.3333333 L12,11.3333333 C11.6,11.3333333 11.3333333,11.6 11.3333333,12 L11.3333333,14 C11.3333333,14.4 11.0666667,14.6666667 10.6666667,14.6666667 C10.2666667,14.6666667 10,14.4 10,14 L10,14 Z M4.66666667,14 L4.66666667,12 C4.66666667,11.6 4.4,11.3333333 4,11.3333333 L2,11.3333333 C1.6,11.3333333 1.33333333,11.0666667 1.33333333,10.6666667 C1.33333333,10.2666667 1.6,10 2,10 L4,10 C5.13333333,10 6,10.8666667 6,12 L6,14 C6,14.4 5.73333333,14.6666667 5.33333333,14.6666667 C4.93333333,14.6666667 4.66666666,14.4 4.66666667,14 L4.66666667,14 Z M12,6 C10.8666667,6 10,5.13333333 10,4 L10,2 C10,1.6 10.2666667,1.33333333 10.6666667,1.33333333 C11.0666667,1.33333333 11.3333333,1.6 11.3333333,2 L11.3333333,4 C11.3333333,4.4 11.6,4.66666667 12,4.66666667 L14,4.66666667 C14.4,4.66666667 14.6666667,4.93333334 14.6666667,5.33333333 C14.6666667,5.73333331 14.4,6 14,6 L12,6 L12,6 Z M2,6 C1.6,6 1.33333333,5.73333333 1.33333333,5.33333333 C1.33333333,4.93333333 1.6,4.66666666 2,4.66666667 L4,4.66666667 C4.4,4.66666667 4.66666667,4.4 4.66666667,4 L4.66666667,2 C4.66666667,1.6 4.93333334,1.33333333 5.33333333,1.33333333 C5.73333331,1.33333333 6,1.6 6,2 L6,4 C6,5.13333333 5.13333333,6 4,6 L2,6 Z\"\n                  ></path>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Compact;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Control.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Control = defineComponent({\n  name: 'Control',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 17 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Control-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Control-\\u4E3B\\u9898\\u9884\\u89C8\\u5668---\\u7EC4\\u4EF6\\u9884\\u89C8\"\n              transform=\"translate(-1372.000000, -505.000000)\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Control-\\u7F16\\u7EC4-18\" transform=\"translate(0.000000, 70.000000)\">\n                <g id=\"Control-\\u7F16\\u7EC4-14\" transform=\"translate(536.000000, 420.000000)\">\n                  <g\n                    id=\"Control-\\u7CFB\\u7EDF\\u63A7\\u5236\"\n                    transform=\"translate(836.000000, 15.000000)\"\n                  >\n                    <rect\n                      id=\"Control-\\u77E9\\u5F62\"\n                      fill=\"#000000\"\n                      opacity=\"0\"\n                      x=\"0\"\n                      y=\"0\"\n                      width=\"16\"\n                      height=\"16\"\n                    ></rect>\n                    <path\n                      d=\"M6,3.5625 L13.75,3.5625 L13.75,4.1875 L6,4.1875 L6,3.5625 Z M2.1875,3.5625 L3.8125,3.5625 L3.8125,4.1875 L2.1875,4.1875 L2.1875,3.5625 Z M8.3125,11.8125 L13.75,11.8125 L13.75,12.4375 L8.3125,12.4375 L8.3125,11.8125 Z M2.1875,11.8125 L6.125,11.8125 L6.125,12.4375 L2.1875,12.4375 L2.1875,11.8125 Z M12.625,7.6875 L13.75,7.6875 L13.75,8.3125 L12.625,8.3125 L12.625,7.6875 Z M2.1875,7.6875 L10.4375,7.6875 L10.4375,8.3125 L2.1875,8.3125 L2.1875,7.6875 Z\"\n                      id=\"Control-\\u5F62\\u72B6\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M1.875,3.875 C1.875,4.04758898 2.01491102,4.1875 2.1875,4.1875 C2.36008898,4.1875 2.5,4.04758898 2.5,3.875 C2.5,3.70241102 2.36008898,3.5625 2.1875,3.5625 C2.01491102,3.5625 1.875,3.70241102 1.875,3.875 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M13.4375,3.875 C13.4375,4.04758898 13.577411,4.1875 13.75,4.1875 C13.922589,4.1875 14.0625,4.04758898 14.0625,3.875 C14.0625,3.70241102 13.922589,3.5625 13.75,3.5625 C13.577411,3.5625 13.4375,3.70241102 13.4375,3.875 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M13.4375,8 C13.4375,8.17258898 13.577411,8.3125 13.75,8.3125 C13.922589,8.3125 14.0625,8.17258898 14.0625,8 C14.0625,7.82741102 13.922589,7.6875 13.75,7.6875 C13.577411,7.6875 13.4375,7.82741102 13.4375,8 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M13.4375,12.125 C13.4375,12.297589 13.577411,12.4375 13.75,12.4375 C13.922589,12.4375 14.0625,12.297589 14.0625,12.125 C14.0625,11.952411 13.922589,11.8125 13.75,11.8125 C13.577411,11.8125 13.4375,11.952411 13.4375,12.125 L13.4375,12.125 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M1.875,8 C1.875,8.17258898 2.01491102,8.3125 2.1875,8.3125 C2.36008898,8.3125 2.5,8.17258898 2.5,8 C2.5,7.82741102 2.36008898,7.6875 2.1875,7.6875 C2.01491102,7.6875 1.875,7.82741102 1.875,8 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M1.875,12.125 C1.875,12.297589 2.01491102,12.4375 2.1875,12.4375 C2.36008898,12.4375 2.5,12.297589 2.5,12.125 C2.5,11.952411 2.36008898,11.8125 2.1875,11.8125 C2.01491102,11.8125 1.875,11.952411 1.875,12.125 L1.875,12.125 Z\"\n                      id=\"Control-\\u8DEF\\u5F84\"\n                      fill=\"currentColor\"\n                    ></path>\n                    <path\n                      d=\"M4.90625,5.25 C4.13125,5.25 3.5,4.61875 3.5,3.84375 C3.5,3.06875 4.13125,2.4375 4.90625,2.4375 C5.68125,2.4375 6.3125,3.06875 6.3125,3.84375 C6.3125,4.61875 5.68125,5.25 4.90625,5.25 Z M4.90625,3.0625 C4.475,3.0625 4.125,3.4125 4.125,3.84375 C4.125,4.275 4.475,4.625 4.90625,4.625 C5.3375,4.625 5.6875,4.275 5.6875,3.84375 C5.6875,3.4125 5.3375,3.0625 4.90625,3.0625 Z M11.53125,9.4375 C10.75625,9.4375 10.125,8.80625 10.125,8.03125 C10.125,7.25625 10.75625,6.625 11.53125,6.625 C12.30625,6.625 12.9375,7.25625 12.9375,8.03125 C12.9375,8.80625 12.30625,9.4375 11.53125,9.4375 Z M11.53125,7.25 C11.1,7.25 10.75,7.6 10.75,8.03125 C10.75,8.4625 11.1,8.8125 11.53125,8.8125 C11.9625,8.8125 12.3125,8.4625 12.3125,8.03125 C12.3125,7.6 11.9625,7.25 11.53125,7.25 Z M7.21875,13.5 C6.44375,13.5 5.8125,12.86875 5.8125,12.09375 C5.8125,11.31875 6.44375,10.6875 7.21875,10.6875 C7.99375,10.6875 8.625,11.31875 8.625,12.09375 C8.625,12.86875 7.99375,13.5 7.21875,13.5 Z M7.21875,11.3125 C6.7875,11.3125 6.4375,11.6625 6.4375,12.09375 C6.4375,12.525 6.7875,12.875 7.21875,12.875 C7.65,12.875 8,12.525 8,12.09375 C8,11.6625 7.65,11.3125 7.21875,11.3125 Z\"\n                      id=\"Control-\\u5F62\\u72B6\"\n                      fill=\"currentColor\"\n                    ></path>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Control;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Dark.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Dark = defineComponent({\n  name: 'Dark',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 17 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Dark-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1px\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Dark-\\u9ED8\\u8BA4\"\n              transform=\"translate(-9.000000, -49.500000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Dark-\\u7F16\\u7EC4-17\" transform=\"translate(0.000000, 42.500000)\">\n                <g id=\"Dark-moon\" transform=\"translate(9.268811, 7.500000)\">\n                  <rect\n                    id=\"Dark-\\u77E9\\u5F62\"\n                    opacity=\"0\"\n                    x=\"0\"\n                    y=\"0\"\n                    width=\"16\"\n                    height=\"16\"\n                  ></rect>\n                  <path\n                    d=\"M8,1.33333333 C8.14933333,1.33333333 8.29688889,1.33844444 8.44266667,1.34866666 C8.14755556,1.98422221 8,2.64577777 8,3.33333333 C8,3.96533333 8.12333333,4.56955555 8.37,5.146 C8.61666667,5.72244445 8.94822222,6.21888889 9.36466667,6.63533333 C9.78111112,7.05177777 10.2775556,7.38333332 10.854,7.63 C11.4304444,7.87666668 12.0346667,8.00000001 12.6666667,8 C13.3542222,8 14.0157778,7.85244444 14.6513333,7.55733333 C14.6615556,7.70311111 14.6666667,7.85066667 14.6666667,8 C14.6666667,8.604 14.5868889,9.19422222 14.4273333,9.77066667 C14.2677778,10.3471111 14.0446667,10.8793333 13.758,11.3673333 C13.4713333,11.8553333 13.1233333,12.3042222 12.714,12.714 C12.3046667,13.1237778 11.8557778,13.4717778 11.3673333,13.758 C10.8788889,14.0442222 10.3466667,14.2673333 9.77066667,14.4273333 C9.19466667,14.5873333 8.60444445,14.6671111 8,14.6666685 C7.39555555,14.6662222 6.80533333,14.5864444 6.22933333,14.4273333 C5.65333333,14.2682222 5.1211111,14.0451111 4.63266666,13.758 C4.14422221,13.4708889 3.69533332,13.1228889 3.28599998,12.714 C2.87666665,12.3051111 2.52866665,11.8562222 2.24199998,11.3673333 C1.95533332,10.8784444 1.73222221,10.3462222 1.57266666,9.77066667 C1.4131111,9.19511112 1.33333333,8.6048889 1.33333333,8 C1.33333333,7.3951111 1.4131111,6.80488888 1.57266666,6.22933333 C1.73222221,5.65377778 1.95533332,5.12155555 2.24199998,4.63266666 C2.52866665,4.14377776 2.87666665,3.69488887 3.28599998,3.28599998 C3.69533332,2.8771111 4.14422221,2.5291111 4.63266666,2.24199998 C5.1211111,1.95488887 5.65333333,1.73177776 6.22933333,1.57266666 C6.80533333,1.41355555 7.39555555,1.33377778 8,1.33333333 Z M6.68733333,2.828 C6.11444444,2.97377778 5.58066667,3.20977778 5.086,3.536 C4.59133333,3.86222222 4.166,4.24933333 3.81,4.69733333 C3.454,5.14533333 3.17444444,5.65488889 2.97133333,6.226 C2.76822221,6.79711111 2.66666666,7.38822222 2.66666666,7.99933333 C2.66666666,8.72155555 2.80733332,9.41155555 3.08866666,10.0693333 C3.36999999,10.7271111 3.74933332,11.2948889 4.22666666,11.7726667 C4.70399999,12.2504444 5.27177777,12.6297778 5.92999998,12.9106667 C6.5882222,13.1915556 7.2782222,13.3322222 7.99999998,13.3326667 C8.6111111,13.3326667 9.20222221,13.2311111 9.77333331,13.028 C10.3444444,12.8248889 10.854,12.5453333 11.302,12.1893333 C11.75,11.8333333 12.1371111,11.408 12.4633333,10.9133333 C12.7895555,10.4186666 13.0255555,9.88488887 13.1713333,9.31199998 C13.022,9.32577777 12.8535555,9.33266666 12.666,9.33266666 C11.8535555,9.33266666 11.0775555,9.17377777 10.338,8.85599998 C9.59844443,8.5382222 8.96044443,8.11111109 8.42399998,7.57466666 C7.88755554,7.03822222 7.46044443,6.40022222 7.14266666,5.66066666 C6.82488889,4.92111109 6.66599999,4.14511109 6.66599998,3.33266666 C6.66599998,3.1451111 6.67288888,2.97666666 6.68666666,2.82733333 L6.68733333,2.828 Z\"\n                    id=\"Dark-\\u5F62\\u72B6\"\n                  ></path>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Dark;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Light.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Light = defineComponent({\n  name: 'Light',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 13 13\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Light-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1px\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Light-\\u4E3B\\u9898\\u5305\"\n              transform=\"translate(-2943.000000, -292.000000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Light-\\u7F16\\u7EC4-12\" transform=\"translate(2415.000000, 222.000000)\">\n                <g\n                  id=\"Light-\\u89C6\\u56FE\\u5207\\u6362-\\u7F16\\u8F91\\u6001\"\n                  transform=\"translate(518.000000, 60.000000)\"\n                >\n                  <g id=\"Light-eye\" transform=\"translate(8.000000, 8.000000)\">\n                    <g id=\"Light-sun\" transform=\"translate(2.000000, 2.000000)\">\n                      <rect\n                        id=\"Light-\\u77E9\\u5F62\"\n                        opacity=\"0\"\n                        x=\"0\"\n                        y=\"0\"\n                        width=\"13\"\n                        height=\"13\"\n                      ></rect>\n                      <path\n                        d=\"M6.5,9.75 C4.7051875,9.75 3.25,8.2948125 3.25,6.5 C3.25,4.7051875 4.7051875,3.25 6.5,3.25 C8.2948125,3.25 9.75,4.7051875 9.75,6.5 C9.75,8.2948125 8.2948125,9.75 6.5,9.75 Z M6.5,8.66666667 C7.69661696,8.66666667 8.66666667,7.69661696 8.66666667,6.5 C8.66666667,5.30338304 7.69661696,4.33333333 6.5,4.33333333 C5.30338305,4.33333333 4.33333336,5.30338305 4.33333336,6.5 C4.33333336,7.69661695 5.30338305,8.66666667 6.5,8.66666667 Z M5.95833333,1.08333333 C5.95833333,0.784179087 6.20084576,0.541666658 6.5,0.541666658 C6.79915424,0.541666658 7.04166667,0.784179087 7.04166667,1.08333333 L7.04166667,2.16666667 C7.04166667,2.46582091 6.79915424,2.70833334 6.5,2.70833334 C6.20084576,2.70833334 5.95833333,2.46582091 5.95833333,2.16666667 L5.95833333,1.08333333 L5.95833333,1.08333333 Z M5.95833333,10.8333333 C5.95833333,10.5341791 6.20084576,10.2916667 6.5,10.2916667 C6.79915424,10.2916667 7.04166667,10.5341791 7.04166667,10.8333333 L7.04166667,11.9166667 C7.04166667,12.2158209 6.79915424,12.4583333 6.5,12.4583333 C6.20084576,12.4583333 5.95833333,12.2158209 5.95833333,11.9166667 L5.95833333,10.8333333 L5.95833333,10.8333333 Z M1.08333333,7.04166667 C0.784179087,7.04166667 0.541666658,6.79915424 0.541666658,6.5 C0.541666658,6.20084576 0.784179087,5.95833333 1.08333333,5.95833333 L2.16666667,5.95833333 C2.46582091,5.95833333 2.70833334,6.20084576 2.70833334,6.5 C2.70833334,6.79915424 2.46582091,7.04166667 2.16666667,7.04166667 L1.08333333,7.04166667 L1.08333333,7.04166667 Z M10.8333333,7.04166667 C10.5341791,7.04166667 10.2916667,6.79915424 10.2916667,6.5 C10.2916667,6.20084576 10.5341791,5.95833333 10.8333333,5.95833333 L11.9166667,5.95833333 C12.2158209,5.95833333 12.4583333,6.20084576 12.4583333,6.5 C12.4583333,6.79915424 12.2158209,7.04166667 11.9166667,7.04166667 L10.8333333,7.04166667 L10.8333333,7.04166667 Z M2.05454167,2.82045833 C1.84926545,2.60791971 1.85220137,2.27007933 2.06114035,2.06114035 C2.27007933,1.85220137 2.60791971,1.84926545 2.82045833,2.05454167 L3.63295833,2.86704167 C3.83823455,3.07958029 3.83529863,3.41742067 3.62635965,3.62635965 C3.41742067,3.83529863 3.07958029,3.83823455 2.86704167,3.63295833 L2.05454167,2.82045833 L2.05454167,2.82045833 Z M9.36704167,10.1329583 C9.16176545,9.92041971 9.16470137,9.58257933 9.37364035,9.37364035 C9.58257933,9.16470137 9.92041971,9.16176545 10.1329583,9.36704167 L10.9454583,10.1795417 C11.1507346,10.3920803 11.1477986,10.7299207 10.9388596,10.9388596 C10.7299207,11.1477986 10.3920803,11.1507346 10.1795417,10.9454583 L9.36704167,10.1329583 L9.36704167,10.1329583 Z M2.82045833,10.9454583 C2.60791971,11.1507346 2.27007933,11.1477986 2.06114035,10.9388596 C1.85220137,10.7299207 1.84926545,10.3920803 2.05454167,10.1795417 L2.86704167,9.36704167 C3.07958029,9.16176545 3.41742067,9.16470137 3.62635965,9.37364035 C3.83529863,9.58257933 3.83823455,9.92041971 3.63295833,10.1329583 L2.82045833,10.9454583 L2.82045833,10.9454583 Z M10.1329583,3.63295833 C9.92041971,3.83823455 9.58257933,3.83529863 9.37364035,3.62635965 C9.16470137,3.41742067 9.16176545,3.07958029 9.36704167,2.86704167 L10.1795417,2.05454167 C10.3920803,1.84926545 10.7299207,1.85220137 10.9388596,2.06114035 C11.1477986,2.27007933 11.1507346,2.60791971 10.9454583,2.82045833 L10.1329583,3.63295833 L10.1329583,3.63295833 Z\"\n                        id=\"Light-\\u5F62\\u72B6\"\n                      ></path>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Light;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Margin.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Margin = defineComponent({\n  name: 'Margin',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 16 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Margin-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Margin-margin\"\n              transform=\"translate(0.000000, 0.942377)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <rect\n                id=\"Margin-\\u77E9\\u5F62\"\n                opacity=\"0\"\n                x=\"0\"\n                y=\"0\"\n                width=\"16\"\n                height=\"15.9807923\"\n              ></rect>\n              <path\n                d=\"M11.6666667,2.75858915 L4.33333333,2.75858915 C4.01904762,2.75858915 3.80952382,2.54931688 3.80952382,2.23540845 C3.80952382,1.92150003 4.01904763,1.71222775 4.33333334,1.71222775 L11.6666667,1.71222775 C11.9809524,1.71222775 12.1904762,1.92150003 12.1904762,2.23540845 C12.1904762,2.54931688 11.9809524,2.75858915 11.6666667,2.75858915 Z M11.6666667,14.2685646 L4.33333333,14.2685646 C4.01904762,14.2685646 3.8095238,14.0592923 3.8095238,13.7453839 C3.8095238,13.4314755 4.01904762,13.2222032 4.33333333,13.2222032 L11.6666667,13.2222032 C11.9809524,13.2222032 12.1904762,13.4314755 12.1904762,13.7453839 C12.1904762,14.0592923 11.9809524,14.2685646 11.6666667,14.2685646 Z M13.7619048,12.1758418 C13.447619,12.1758418 13.2380952,11.9665695 13.2380952,11.6526611 L13.2380952,4.32813125 C13.2380952,4.01422283 13.4476191,3.80495055 13.7619048,3.80495055 C14.0761905,3.80495055 14.2857143,4.01422283 14.2857143,4.32813125 L14.2857143,11.6526611 C14.2857143,11.9665695 14.0761905,12.1758418 13.7619048,12.1758418 Z M2.23809524,12.1758418 C1.92380953,12.1758418 1.71428572,11.9665695 1.71428572,11.6526611 L1.71428572,4.32813125 C1.71428572,4.01422283 1.92380953,3.80495055 2.23809524,3.80495055 C2.55238096,3.80495055 2.76190477,4.01422283 2.76190477,4.32813125 L2.76190477,11.6526611 C2.76190477,11.9665695 2.55238096,12.1758418 2.23809524,12.1758418 Z M11.6666667,12.1758418 L4.33333333,12.1758418 C4.01904762,12.1758418 3.8095238,11.9665695 3.8095238,11.6526611 L3.8095238,4.32813125 C3.8095238,4.01422283 4.01904763,3.80495055 4.33333334,3.80495055 L11.6666667,3.80495055 C11.9809524,3.80495055 12.1904762,4.01422283 12.1904762,4.32813125 L12.1904762,11.6526611 C12.1904762,11.9665695 11.9809524,12.1758418 11.6666667,12.1758418 Z M4.85714286,11.1294804 L11.1428571,11.1294804 L11.1428571,4.85131196 L4.85714286,4.85131196 L4.85714286,11.1294804 Z\"\n                id=\"Margin-\\u5F62\\u72B6\"\n              ></path>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Margin;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Motion.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Motion = defineComponent({\n  name: 'Motion',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 16 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Motion-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Motion-\\u5BCC\\u6587\\u672C\\u7F16\\u8F91\\u5668_\\u52A8\\u6548\"\n              transform=\"translate(0.000000, 0.903962)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <rect\n                id=\"Motion-\\u77E9\\u5F62\"\n                opacity=\"0\"\n                x=\"0\"\n                y=\"0\"\n                width=\"16\"\n                height=\"15.9807923\"\n              ></rect>\n              <path\n                d=\"M6.55644444,12.5262777 L7.99555556,13.9627734 C8.13290682,14.0984321 8.18701716,14.2971622 8.13737053,14.4836147 C8.0877239,14.6700672 7.94192169,14.8156943 7.75524511,14.8652814 C7.56856853,14.9148684 7.36959959,14.860823 7.23377778,14.7236366 L5.79555556,13.2862532 C5.60250935,13.0737079 5.61045949,12.7472435 5.8136232,12.5443237 C6.01678692,12.3414038 6.3436437,12.3334632 6.55644444,12.5262777 L6.55644444,12.5262777 Z M12.2435556,12.6630023 L13.3857778,13.8038533 C13.5231286,13.9395121 13.5772386,14.138242 13.527592,14.3246942 C13.4779453,14.5111464 13.3321433,14.6567734 13.145467,14.7063605 C12.9587906,14.7559476 12.7598219,14.7019025 12.624,14.5647165 L11.4817778,13.4238655 C11.3444269,13.2882067 11.2903169,13.0894768 11.3399636,12.9030246 C11.3896103,12.7165724 11.5354123,12.5709454 11.7220886,12.5213583 C11.9087649,12.4717712 12.1077337,12.5258163 12.2435556,12.6630023 L12.2435556,12.6630023 Z M7.29511111,0.990809123 C7.37066667,1.03342457 7.43377778,1.09645992 7.47644444,1.17192476 L9.23911111,4.29439403 L12.7564444,5.00376364 C12.9258902,5.03768098 13.0638332,5.16026877 13.1172645,5.32441904 C13.1706959,5.4885693 13.1313024,5.66874209 13.0142222,5.79570068 L10.5866667,8.43430705 L10.9982222,11.9953603 C11.018176,12.1667991 10.94398,12.3356549 10.8041422,12.4370491 C10.6643043,12.5384432 10.4805781,12.5566027 10.3235556,12.4845501 L7.06133333,10.9930095 L3.79733333,12.4845501 C3.64031082,12.5566027 3.45658456,12.5384432 3.3167467,12.4370491 C3.17690884,12.3356549 3.10271286,12.1667991 3.12266667,11.9953603 L3.53511111,8.43519487 L1.10577778,5.79570068 C0.988697555,5.66874209 0.949304077,5.4885693 1.00273546,5.32441904 C1.05616684,5.16026877 1.19410976,5.03768098 1.36355556,5.00376364 L4.88177778,4.29439403 L6.64266667,1.17192476 C6.70502264,1.06136833 6.80886024,0.980137913 6.93126543,0.94615878 C7.05367063,0.912179648 7.18458201,0.928244805 7.29511111,0.990809123 Z M7.05955556,2.62440123 L5.57688889,5.25235374 L2.61688889,5.84808216 L4.65955556,8.07030012 L4.31288889,11.0666987 L7.05955556,9.81131866 L9.80533333,11.0666987 L9.45866667,8.07030012 L11.5031111,5.84896999 L8.54222222,5.25235374 L7.05866667,2.62440123 L7.05955556,2.62440123 Z M13.1528889,7.76045031 L14.5911111,9.19694597 C14.7892424,9.40878705 14.7837079,9.73933037 14.5785954,9.9444359 C14.373483,10.1495414 14.0425491,10.1554552 13.8302222,9.95780926 L12.3911111,8.5213136 C12.2537603,8.38565475 12.1996502,8.18692487 12.2492969,8.00047265 C12.2989436,7.81402043 12.4447456,7.66839345 12.6314219,7.61880637 C12.8180983,7.56921929 13.017067,7.62326436 13.1528889,7.76045031 L13.1528889,7.76045031 Z\"\n                id=\"Motion-\\u5F62\\u72B6\"\n              ></path>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Motion;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/Pick.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Pick = defineComponent({\n  name: 'Pick',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 14 14\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Pick-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n            fill-opacity=\"0.65\"\n          >\n            <g\n              id=\"Pick-\\u4E3B\\u9898\\u7F16\\u8F91\\u5668---\\u591A\\u4E3B\\u9898\"\n              transform=\"translate(-541.000000, -387.000000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Pick-\\u7F16\\u7EC4-11\" transform=\"translate(76.000000, 340.000000)\">\n                <g id=\"Pick-Map-Token-\\u9762\\u677F\" transform=\"translate(0.000000, 27.000000)\">\n                  <g id=\"Pick-token-\\u663E\\u793A\" transform=\"translate(-1.002041, -1.000000)\">\n                    <g id=\"Pick-\\u7F16\\u7EC4-2\" transform=\"translate(12.024490, 20.000000)\">\n                      <g id=\"Pick-shangyeguanxi\" transform=\"translate(453.924490, 1.000000)\">\n                        <path\n                          d=\"M12.6274816,8.17204883 C12.6358384,8.04673242 12.6401539,7.92030859 12.6401539,7.79288672 C12.6401539,5.50309375 11.2701899,3.53286719 9.30406641,2.65472266 C9.31862927,2.54983203 9.32632854,2.44274023 9.32632854,2.33384375 C9.32632854,1.05430664 8.28750187,0.0169394531 7.00623025,0.0169394531 C5.72484902,0.0169394531 4.68607715,1.05430664 4.68607715,2.33384375 C4.68607715,2.44267188 4.69376272,2.54968164 4.70829819,2.65451758 C2.74188703,3.53256641 1.37158055,5.50290234 1.37158055,7.79288672 C1.37158055,7.92044531 1.37592338,8.04699219 1.38428025,8.17243164 C0.593775725,8.54169531 0.0460860491,9.34289453 0.0460860491,10.2719531 C0.0460860491,11.5515449 1.08474833,12.5888574 2.36612955,12.5888574 C2.80723496,12.5888574 3.21958454,12.4658926 3.57069612,12.2524336 C4.52158393,12.9838105 5.71288912,13.4188223 7.00595625,13.4188223 C8.30016046,13.4188223 9.49238354,12.9830449 10.4436412,12.2505195 C10.7943281,12.4630762 11.2059516,12.5854668 11.6462213,12.5854668 C12.9274382,12.5854668 13.9661004,11.5489746 13.9661004,10.2703672 C13.9661004,9.34171875 13.4181916,8.54095703 12.6274816,8.17204883 Z M7.00623025,1.00913477 C7.73549676,1.00913477 8.32698463,1.59684766 8.33166995,2.32357617 C8.33168365,2.32647461 8.33177955,2.32935938 8.33177955,2.33225781 C8.33177955,2.69178711 8.18805519,3.01775195 7.95488499,3.25620313 C7.71417991,3.50236523 7.37813809,3.65527148 7.00623025,3.65527148 C6.6343361,3.65527148 6.29829428,3.50236523 6.0575618,3.25620313 C5.8243779,3.01775195 5.68062614,2.69178711 5.68062614,2.33225781 C5.68062614,2.32931836 5.68072204,2.32639258 5.68073574,2.32345313 C5.68547586,1.59679297 6.27704593,1.00913477 7.00623025,1.00913477 Z M2.36612955,11.5993965 C1.63399978,11.5993965 1.04047065,11.0058047 1.04047065,10.2734297 C1.04047065,9.84645703 1.24229576,9.46667969 1.55566445,9.22416797 C1.7797654,9.05074023 2.06088482,8.94746289 2.36614325,8.94746289 C2.41639403,8.94746289 2.46597352,8.95036133 2.51477213,8.95580273 C3.17696454,9.02969922 3.69181585,9.59136719 3.69181585,10.273416 C3.69181585,10.4903613 3.6397293,10.6951113 3.5473928,10.8758809 C3.39166744,11.1807637 3.12143934,11.4173555 2.79339819,11.5289863 C2.65931847,11.574623 2.51562151,11.5993965 2.36612955,11.5993965 Z M7.00127093,12.4178633 C5.99141928,12.4178633 5.0570808,12.0957402 4.29537321,11.549084 C4.53905114,11.1824316 4.68111783,10.7425937 4.68111783,10.2695605 C4.68111783,8.99117188 3.64429132,7.95466602 2.36460887,7.95280664 C2.3626772,7.89787305 2.36134833,7.84278906 2.36134833,7.78737695 C2.36134833,5.92565039 3.46242679,4.32079102 5.05001172,3.58529883 C5.46299149,4.22481445 6.18258597,4.64830078 7.00128463,4.64830078 C7.81990109,4.64830078 8.53950926,4.22481445 8.95248903,3.58529883 C10.5400329,4.32079102 11.6411113,5.92565039 11.6411113,7.78737695 C11.6411113,7.84277539 11.6397824,7.89787305 11.6378508,7.95280664 C10.3582094,7.95465234 9.32139662,8.99040625 9.32139662,10.2679746 C9.32139662,10.7413906 9.4639017,11.1815293 9.70827832,11.5482363 C8.94635153,12.0953848 8.01158836,12.4178633 7.00127093,12.4178633 Z M11.6459473,8.94746289 C11.9510962,8.94746289 12.2321197,9.0506582 12.4561658,9.22397656 C12.7696578,9.46647461 12.9715652,9.84632031 12.9715652,10.273375 C12.9715652,11.0056953 12.3780634,11.5993418 11.6459473,11.5993418 C11.4964143,11.5993418 11.3526762,11.574541 11.2185828,11.528877 C10.8907472,11.4172324 10.6206287,11.1807227 10.464917,10.8759902 C10.3725257,10.6951797 10.320398,10.490375 10.320398,10.273375 C10.320398,9.59128516 10.8354138,9.0295625 11.4976062,8.95577539 C11.5463226,8.95034766 11.5957925,8.94746289 11.6459473,8.94746289 Z M7.00557266,6.21029883 C7.91351399,6.21029883 8.64954587,6.94483166 8.64954587,7.85092383 C8.64954587,8.757016 7.91351399,9.49154883 7.00557266,9.49154883 C6.09763132,9.49154883 5.36159944,8.757016 5.36159944,7.85092383 C5.36159944,6.94483166 6.09763132,6.21029883 7.00557266,6.21029883 Z\"\n                          id=\"Pick-\\u5F62\\u72B6\"\n                        ></path>\n                      </g>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Pick;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/SearchDropdown.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst SearchDropdown = defineComponent({\n  name: 'SearchDropdown',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 18 18\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"SearchDropdown-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"SearchDropdown-\\u4E3B\\u9898\\u9884\\u89C8\\u5668---\\u7EC4\\u4EF6\\u9884\\u89C8\"\n              transform=\"translate(-23.000000, -198.000000)\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"SearchDropdown-\\u7F16\\u7EC4-18\" transform=\"translate(0.000000, 70.000000)\">\n                <g id=\"SearchDropdown-search-outlined\" transform=\"translate(7.000000, 5.000000)\">\n                  <rect\n                    id=\"SearchDropdown-\\u77E9\\u5F62\"\n                    fill=\"#000000\"\n                    opacity=\"0\"\n                    x=\"0\"\n                    y=\"0\"\n                    width=\"18\"\n                    height=\"18\"\n                  ></rect>\n                  <path\n                    d=\"M15.958,14.99375 L11.41325,10.449 C12.1185,9.53725 12.5,8.4225 12.5,7.25 C12.5,5.8465 11.95225,4.5305 10.96175,3.53825 C9.97125,2.546 8.65175,2 7.25,2 C5.84825,2 4.52875,2.54775 3.53825,3.53825 C2.546,4.52875 2,5.8465 2,7.25 C2,8.65175 2.54775,9.97125 3.53825,10.96175 C4.52875,11.954 5.8465,12.5 7.25,12.5 C8.4225,12.5 9.5355,12.1185 10.44725,11.415 L14.992,15.958 C15.048,16.014 15.139,16.014 15.195,15.958 L15.958,15.19675 C16.014,15.14075 16.014,15.04975 15.958,14.99375 Z M10.022,10.022 C9.28,10.76225 8.2965,11.17 7.25,11.17 C6.2035,11.17 5.22,10.76225 4.478,10.022 C3.73775,9.28 3.33,8.2965 3.33,7.25 C3.33,6.2035 3.73775,5.21825 4.478,4.478 C5.22,3.73775 6.2035,3.33 7.25,3.33 C8.2965,3.33 9.28175,3.736 10.022,4.478 C10.76225,5.22 11.17,6.2035 11.17,7.25 C11.17,8.2965 10.76225,9.28175 10.022,10.022 Z\"\n                    id=\"SearchDropdown-\\u5F62\\u72B6\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path\n                    d=\"M17.8616348,7.7578125 L14.0131973,7.7578125 C13.8977676,7.7578125 13.8333145,7.8796875 13.9047988,7.96289062 L15.8290176,10.1941406 C15.8840957,10.2580078 15.9901504,10.2580078 16.0458145,10.1941406 L17.9700332,7.96289062 C18.0415176,7.8796875 17.9770645,7.7578125 17.8616348,7.7578125 Z\"\n                    id=\"SearchDropdown-\\u8DEF\\u5F84\"\n                    fill=\"currentColor\"\n                  ></path>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default SearchDropdown;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/ShapeLine.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst ShapeLine = defineComponent({\n  name: 'ShapeLine',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 16 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"ShapeLine-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"ShapeLine-shape-line\"\n              transform=\"translate(0.000000, 0.923169)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <rect\n                id=\"ShapeLine-\\u77E9\\u5F62\"\n                opacity=\"0\"\n                x=\"0\"\n                y=\"0\"\n                width=\"16\"\n                height=\"15.9807923\"\n              ></rect>\n              <path\n                d=\"M5.22,13.3173269 C4.90928357,14.1946577 4.03334945,14.7416208 3.10760502,14.6363783 C2.18186059,14.5311359 1.45139881,13.801551 1.34602985,12.8769179 C1.24066088,11.9522848 1.78828141,11.0774022 2.66666667,10.7670588 L2.66666667,5.21373349 C1.78828141,4.90339007 1.24066088,4.02850749 1.34602985,3.1038744 C1.45139881,2.1792413 2.18186059,1.44965643 3.10760502,1.34441396 C4.03334945,1.23917149 4.90928357,1.78613461 5.22,2.66346539 L10.78,2.66346539 C11.0907164,1.78613461 11.9666505,1.23917149 12.892395,1.34441396 C13.8181394,1.44965643 14.5486012,2.1792413 14.6539702,3.1038744 C14.7593391,4.02850749 14.2117186,4.90339007 13.3333333,5.21373349 L13.3333333,10.7670588 C14.2117186,11.0774022 14.7593391,11.9522848 14.6539702,12.8769179 C14.5486012,13.801551 13.8181394,14.5311359 12.892395,14.6363783 C11.9666505,14.7416208 11.0907164,14.1946577 10.78,13.3173269 L5.22,13.3173269 Z M5.22,11.9855942 L10.78,11.9855942 C10.9819939,11.4165133 11.430235,10.9688103 12,10.7670588 L12,5.21373349 C11.430235,5.01198206 10.9819939,4.56427905 10.78,3.99519808 L5.22,3.99519808 C5.01800608,4.56427905 4.56976496,5.01198206 4,5.21373349 L4,10.7670588 C4.56976496,10.9688103 5.01800608,11.4165133 5.22,11.9855942 Z M3.33333333,3.99519809 C3.5715347,3.9952345 3.79165744,3.86832906 3.91076865,3.66229434 C4.02987987,3.45625961 4.02987987,3.20240385 3.91076865,2.99636913 C3.79165744,2.79033441 3.5715347,2.66342897 3.33333333,2.66346538 C2.96518335,2.66352168 2.66676872,2.96162371 2.66676872,3.32933173 C2.66676872,3.69703976 2.96518335,3.99514178 3.33333333,3.99519809 L3.33333333,3.99519809 Z M12.6666667,3.99519809 C12.904868,3.9952345 13.1249908,3.86832906 13.244102,3.66229434 C13.3632132,3.45625961 13.3632132,3.20240385 13.244102,2.99636913 C13.1249908,2.79033441 12.904868,2.66342897 12.6666667,2.66346538 C12.2985167,2.66352168 12.0001021,2.96162371 12.0001021,3.32933173 C12.0001021,3.69703976 12.2985167,3.99514178 12.6666667,3.99519809 L12.6666667,3.99519809 Z M12.6666667,13.3173269 C12.904868,13.3173633 13.1249908,13.1904579 13.244102,12.9844232 C13.3632132,12.7783885 13.3632132,12.5245327 13.244102,12.318498 C13.1249908,12.1124633 12.904868,11.9855578 12.6666667,11.9855942 C12.2985167,11.9856505 12.0001021,12.2837526 12.0001021,12.6514606 C12.0001021,13.0191686 12.2985167,13.3172706 12.6666667,13.3173269 L12.6666667,13.3173269 Z M3.33333333,13.3173269 C3.5715347,13.3173633 3.79165744,13.1904579 3.91076865,12.9844232 C4.02987987,12.7783885 4.02987987,12.5245327 3.91076865,12.318498 C3.79165744,12.1124633 3.5715347,11.9855578 3.33333333,11.9855942 C2.96518335,11.9856505 2.66676872,12.2837526 2.66676872,12.6514606 C2.66676872,13.0191686 2.96518335,13.3172706 3.33333333,13.3173269 L3.33333333,13.3173269 Z\"\n                id=\"ShapeLine-\\u5F62\\u72B6\"\n              ></path>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default ShapeLine;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/TokenPanel.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst TokenPanel = defineComponent({\n  name: 'TokenPanel',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 20 19\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"TokenPanel-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n            fill-opacity=\"0.85\"\n          >\n            <g\n              id=\"TokenPanel-\\u4E3B\\u9898\\u7F16\\u8F91\\u5668---\\u591A\\u4E3B\\u9898\"\n              transform=\"translate(-14.000000, -70.000000)\"\n              fill=\"currentColor\"\n            >\n              <g id=\"TokenPanel-\\u7F16\\u7EC4-3\" transform=\"translate(10.000000, 66.000000)\">\n                <g id=\"TokenPanel-\\u7F16\\u7EC4-20\" transform=\"translate(4.000000, 4.000000)\">\n                  <rect\n                    id=\"TokenPanel-\\u77E9\\u5F62\"\n                    opacity=\"0.600000024\"\n                    x=\"1\"\n                    y=\"12\"\n                    width=\"7\"\n                    height=\"7\"\n                    rx=\"0.434782594\"\n                  ></rect>\n                  <path\n                    d=\"M12.3540059,0 L19.5652174,0 C19.8053412,8.08981097e-16 20,0.194658804 20,0.434782609 L20,7.6459941 C20,7.88611791 19.8053412,8.08077671 19.5652174,8.08077671 C19.4499059,8.08077671 19.3393172,8.03496939 19.2577797,7.95343183 L12.0465682,0.74222034 C11.876775,0.572427169 11.876775,0.297138048 12.0465682,0.127344878 C12.1281057,0.0458073219 12.2386944,-6.44951433e-16 12.3540059,0 Z\"\n                    id=\"TokenPanel-\\u77E9\\u5F62\"\n                    opacity=\"0.400000006\"\n                  ></path>\n                  <circle\n                    id=\"TokenPanel-\\u692D\\u5706\\u5F62\"\n                    cx=\"4.34782609\"\n                    cy=\"4.34782609\"\n                    r=\"4.34782609\"\n                  ></circle>\n                  <circle id=\"TokenPanel-\\u692D\\u5706\\u5F62\" cx=\"15.5\" cy=\"15.5\" r=\"3.5\"></circle>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default TokenPanel;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/icons/index.ts",
    "content": "export { default as Light } from './Light';\nexport { default as DarkTheme } from './Dark';\nexport { default as Pick } from './Pick';\nexport { default as CompactTheme } from './Compact';\nexport { default as Control } from './Control';\n\nexport { default as Motion } from './Motion';\nexport { default as ShapeLine } from './ShapeLine';\n\nexport { default as Arrow } from './Arrow';\nexport { default as SearchDropdown } from './SearchDropdown';\nexport { default as Brush } from './Brush';\n\nexport { default as Margin } from './Margin';\n\nexport { default as TokenPanelIcon } from './TokenPanel';\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/index.tsx",
    "content": "export type { MutableTheme, PreviewerProps, Theme } from './interface';\nexport * from './locale';\nexport * from './meta';\nexport * from './overviews';\nexport { default as PreviewDemo } from './PreviewDemo';\nexport type { PreviewDemoProps } from './PreviewDemo';\nexport { default as Previewer } from './previewer';\nexport { default as ThemeEditor } from './ThemeEditor';\nexport type { ThemeEditorProps } from './ThemeEditor';\nexport { default as TokenPanel } from './token-panel';\nexport type { TokenPanelRef, TokenPreviewProps } from './token-panel';\nexport { default as getDesignToken } from './utils/getDesignToken';\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/interface.ts",
    "content": "import type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport type { VueNode } from 'ant-design-vue/es/_util/type';\n\nexport type Theme = {\n  name: string;\n  key: string;\n  config: ThemeConfig;\n};\n\nexport type AliasToken = Exclude<ThemeConfig['token'], undefined>;\nexport type TokenValue = string | number | string[] | number[] | boolean;\nexport type TokenName = keyof AliasToken;\n\n// 修改线  以上都是改过的\nexport interface ComponentDemo {\n  tokens?: TokenName[];\n  demo: VueNode;\n  key: string;\n}\n\nexport interface MutableTheme extends Theme {\n  onThemeChange?: (newTheme: ThemeConfig, path: string[]) => void;\n  onReset?: (path: string[]) => void;\n  getCanReset?: (path: string[]) => boolean;\n}\n\nexport type PreviewerProps = {\n  onSave?: (themeConfig: ThemeConfig) => void;\n  showTheme?: boolean;\n  theme?: Theme;\n  onThemeChange?: (config: ThemeConfig) => void;\n};\n\nexport type SelectedToken = {\n  seed?: string[];\n  map?: string[];\n  alias?: string[];\n};\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/locale/context.ts",
    "content": "import type { Ref, InjectionKey } from 'vue';\nimport { inject, provide, computed } from 'vue';\n\nimport type { Locale } from './interface';\nimport zhCN from './zh-CN';\n\nconst contextKey: InjectionKey<Ref<Locale>> = Symbol('localeContext');\n\nexport const useProvideLocaleContext = (props: Ref<Locale>) => {\n  provide(contextKey, props);\n  return props;\n};\n\nexport const useInjectLocaleContext = () => {\n  return inject(\n    contextKey,\n    computed(() => zhCN),\n  );\n};\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/locale/en-US.ts",
    "content": "import type { Locale } from './interface';\n\nconst locale: Locale = {\n  _lang: 'en-US',\n  followPrimary: 'Follow Brand Color',\n  reset: 'Reset',\n  next: 'Next',\n  groupView: 'Group View',\n  fill: 'Fill',\n  border: 'Border',\n  background: 'Background',\n  text: 'Text',\n  demo: {\n    overview: 'Overview',\n    components: 'Components',\n    relatedTokens: 'Related Tokens',\n  },\n};\n\nexport default locale;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/locale/index.ts",
    "content": "export { useProvideLocaleContext, useInjectLocaleContext } from './context';\nexport { default as enUS } from './en-US';\nexport type { Locale } from './interface';\nexport { default as zhCN } from './zh-CN';\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/locale/interface.tsx",
    "content": "export type Locale = {\n  _lang: string;\n  followPrimary: string;\n  reset: string;\n  next: string;\n  groupView: string;\n  fill: string;\n  background: string;\n  border: string;\n  text: string;\n  demo: {\n    overview: string;\n    components: string;\n    relatedTokens: string;\n  };\n};\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/locale/zh-CN.ts",
    "content": "import type { Locale } from './interface';\n\nconst locale: Locale = {\n  _lang: 'zh-CN',\n  followPrimary: '跟随主色',\n  reset: '重置',\n  next: '下一步',\n  groupView: '分组显示',\n  fill: '填充',\n  border: '描边',\n  background: '背景',\n  text: '文本',\n  demo: {\n    overview: '概览',\n    components: '组件',\n    relatedTokens: '关联 Token',\n  },\n};\n\nexport default locale;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/meta/TokenRelation.ts",
    "content": "import type { AliasToken, MapToken, SeedToken } from 'ant-design-vue/es/theme/interface';\nimport defaultMap from 'ant-design-vue/es/theme/themes/default';\nimport seedToken from 'ant-design-vue/es/theme/themes/seed';\nimport formatToken from 'ant-design-vue/es/theme/util/alias';\n\nexport type PureAliasToken = Omit<AliasToken, keyof MapToken>;\n\ntype SeedRelatedMap = {\n  [key in keyof SeedToken]?: (keyof MapToken)[];\n};\n\ntype SeedRelatedAlias = {\n  [key in keyof SeedToken]?: (keyof PureAliasToken)[];\n};\n\ntype MapRelatedAlias = {\n  [key in keyof MapToken]?: (keyof PureAliasToken)[];\n};\n\n// Alias Token 优先级排序，数字小的排在前面，在 map 中的优先级比不在 map 中的优先级高，都不在 map 中的按字母顺序排序\nconst tokenOrder: {\n  [key in keyof AliasToken]?: number;\n} = {\n  // example\n  // 0-20 留给 text\n  colorTextHeading: 1,\n  colorTextLabel: 2,\n  colorTextDescription: 3,\n  colorTextDisabled: 4,\n  colorTextPlaceholder: 5,\n  colorIcon: 10,\n  colorIconHover: 11,\n  // 21-40 留给 border\n  colorBorderBg: 21,\n  controlTmpOutline: 22,\n  // 41-60 留给 fill\n  colorFillAlter: 41,\n  colorFillContent: 42,\n  colorFillContentHover: 43,\n\n  // 61-80 留给 bg\n  controlItemBgActive: 61,\n  controlItemBgActiveHover: 62,\n  controlItemBgHover: 63,\n};\n\nexport function sortToken<T extends (keyof AliasToken)[]>(arr: T): T {\n  if (!arr) {\n    return arr;\n  }\n  return arr.sort((a, b) => {\n    if (tokenOrder[a] && !tokenOrder[b]) {\n      return -1;\n    }\n    if (!tokenOrder[a] && tokenOrder[b]) {\n      return 1;\n    }\n    if (tokenOrder[a] && tokenOrder[b]) {\n      return tokenOrder[a]! - tokenOrder[b]!;\n    }\n    return a.localeCompare(b);\n  });\n}\n\nexport const seedRelatedMap: SeedRelatedMap = {\n  colorPrimary: [\n    'colorPrimaryBg',\n    'colorPrimaryBgHover',\n    'colorPrimaryBorder',\n    'colorPrimaryBorderHover',\n    'colorPrimaryHover',\n    'colorPrimary',\n    'colorPrimaryActive',\n    'colorPrimaryTextHover',\n    'colorPrimaryText',\n    'colorPrimaryTextActive',\n  ],\n  colorError: [\n    'colorErrorBg',\n    'colorErrorBgHover',\n    'colorErrorBorder',\n    'colorErrorBorderHover',\n    'colorErrorHover',\n    'colorError',\n    'colorErrorActive',\n    'colorErrorTextHover',\n    'colorErrorText',\n    'colorErrorTextActive',\n  ],\n  colorWarning: [\n    'colorWarningBg',\n    'colorWarningBgHover',\n    'colorWarningBorder',\n    'colorWarningBorderHover',\n    'colorWarningHover',\n    'colorWarning',\n    'colorWarningActive',\n    'colorWarningTextHover',\n    'colorWarningText',\n    'colorWarningTextActive',\n  ],\n  colorSuccess: [\n    'colorSuccessBg',\n    'colorSuccessBgHover',\n    'colorSuccessBorder',\n    'colorSuccessBorderHover',\n    'colorSuccessHover',\n    'colorSuccess',\n    'colorSuccessActive',\n    'colorSuccessTextHover',\n    'colorSuccessText',\n    'colorSuccessTextActive',\n  ],\n  colorInfo: [\n    'colorInfoBg',\n    'colorInfoBgHover',\n    'colorInfoBorder',\n    'colorInfoBorderHover',\n    'colorInfoHover',\n    'colorInfo',\n    'colorInfoActive',\n    'colorInfoTextHover',\n    'colorInfoText',\n    'colorInfoTextActive',\n  ],\n  colorTextBase: ['colorText', 'colorTextSecondary', 'colorTextTertiary', 'colorTextQuaternary'],\n  colorBgBase: [\n    'colorBgContainer',\n    'colorBgElevated',\n    'colorBgLayout',\n    'colorBgSpotlight',\n    'colorBgMask',\n    'colorBorder',\n    'colorBorderSecondary',\n    'colorFill',\n    'colorFillSecondary',\n    'colorFillTertiary',\n    'colorFillQuaternary',\n  ],\n};\n\nconst getMapRelatedAlias = () => {\n  const mapRelatedAlias: any = {};\n  const mapFn = defaultMap;\n  const mapToken = mapFn({ ...seedToken });\n  const aliasToken = formatToken({ ...mapToken, override: {} });\n  Object.keys(mapToken).forEach(mapKey => {\n    delete (aliasToken as any)[mapKey];\n  });\n\n  Object.keys(mapToken).forEach(mapKey => {\n    const newAlias = formatToken({\n      ...mapToken,\n      [mapKey]: 'changed',\n      override: {},\n    });\n    Object.keys(aliasToken).forEach(aliasKey => {\n      if ((aliasToken as any)[aliasKey] !== (newAlias as any)[aliasKey]) {\n        if (!mapRelatedAlias[mapKey]) {\n          mapRelatedAlias[mapKey] = [];\n        }\n        mapRelatedAlias[mapKey].push(aliasKey);\n      }\n    });\n    mapRelatedAlias[mapKey] = sortToken(mapRelatedAlias[mapKey]);\n  });\n\n  return mapRelatedAlias;\n};\n\nexport const mapRelatedAlias: MapRelatedAlias = getMapRelatedAlias();\n\nconst getSeedRelatedAlias = (): SeedRelatedAlias => {\n  const result: SeedRelatedAlias = {};\n  Object.keys(seedToken).forEach(key => {\n    const seedKey = key as keyof SeedToken;\n    const arr = mapRelatedAlias[seedKey] || [];\n    seedRelatedMap[seedKey]?.forEach(mapKey => {\n      arr.push(...(mapRelatedAlias[mapKey] ?? []));\n    });\n    if (arr.length) {\n      (result as any)[key] = sortToken(Array.from(new Set(arr)));\n    }\n  });\n  return result;\n};\n\nexport const seedRelatedAlias = getSeedRelatedAlias();\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/meta/category.ts",
    "content": "import type { AliasToken } from '../interface';\nimport type { TokenTree } from './interface';\nimport { seedRelatedAlias, seedRelatedMap } from './TokenRelation';\n\nconst category: TokenTree<keyof AliasToken> = [\n  {\n    name: '颜色',\n    nameEn: 'Color',\n    desc: '',\n    descEn: '',\n    groups: [\n      {\n        key: 'brandColor',\n        type: 'Color',\n        name: '品牌色',\n        nameEn: 'Brand Color',\n        desc: '品牌色是体现产品特性和传播理念最直观的视觉元素之一。在你完成品牌主色的选取之后，我们会自动帮你生成一套完整的色板，并赋予它们有效的设计语义。',\n        descEn: '',\n        seedToken: ['colorPrimary'],\n        mapToken: seedRelatedMap.colorPrimary,\n        aliasToken: seedRelatedAlias.colorPrimary,\n      },\n      {\n        key: 'successColor',\n        type: 'Color',\n        name: '成功色',\n        nameEn: 'Success Color',\n        desc: '',\n        descEn: '',\n        seedToken: ['colorSuccess'],\n        mapToken: seedRelatedMap.colorSuccess,\n        aliasToken: seedRelatedAlias.colorSuccess,\n      },\n      {\n        key: 'warningColor',\n        type: 'Color',\n        name: '警戒色',\n        nameEn: 'Warning Color',\n        desc: '',\n        descEn: '',\n        seedToken: ['colorWarning'],\n        mapToken: seedRelatedMap.colorWarning,\n        aliasToken: seedRelatedAlias.colorWarning,\n      },\n      {\n        key: 'errorColor',\n        type: 'Color',\n        name: '错误色',\n        nameEn: 'Error Color',\n        desc: '',\n        descEn: '',\n        seedToken: ['colorError'],\n        mapToken: seedRelatedMap.colorError,\n        aliasToken: seedRelatedAlias.colorError,\n      },\n      {\n        key: 'infoColor',\n        type: 'Color',\n        name: '信息色',\n        nameEn: 'Info Color',\n        desc: '',\n        descEn: '',\n        seedToken: ['colorInfo'],\n        mapToken: seedRelatedMap.colorInfo,\n        aliasToken: seedRelatedAlias.colorInfo,\n      },\n      {\n        key: 'neutralColor',\n        type: 'Color',\n        name: '中性色',\n        nameEn: 'Neutral Color',\n        desc: '中性色主要被大量的应用在界面的文字、背景、边框和填充的 4 种场景。合理地选择中性色能够令页面信息具备良好的主次关系，助力阅读体验。',\n        descEn: '',\n        seedToken: ['colorTextBase', 'colorBgBase'],\n        mapToken: seedRelatedMap.colorTextBase?.concat(seedRelatedMap.colorBgBase ?? []),\n        aliasToken: seedRelatedAlias.colorTextBase?.concat(seedRelatedAlias.colorBgBase ?? []),\n        aliasTokenDescription:\n          '你可以利用 Alias Token 来精准控制部分组件的效果。例如 Input 、InputNumber、Select 等Control 类组件都共享了相同的 controlXX token 。只需修改值，即可实现不改变 Button 的情况下，修改 Control 类组件的效果。',\n        mapTokenGroups: ['text', 'border', 'fill', 'background'],\n      },\n    ],\n  },\n  {\n    name: '尺寸',\n    nameEn: 'Size',\n    desc: '',\n    descEn: '',\n    groups: [\n      {\n        key: 'font',\n        name: '文字',\n        nameEn: 'Font',\n        desc: '',\n        descEn: '',\n        seedToken: ['fontSize'],\n        groups: [\n          {\n            key: 'fontSize',\n            type: 'FontSize',\n            name: '字号',\n            nameEn: 'Font Size',\n            desc: '',\n            descEn: '',\n            mapToken: [\n              'fontSize',\n              'fontSizeSM',\n              'fontSizeLG',\n              'fontSizeXL',\n              'fontSizeHeading1',\n              'fontSizeHeading2',\n              'fontSizeHeading3',\n              'fontSizeHeading4',\n              'fontSizeHeading5',\n            ],\n            aliasToken: ['fontSizeIcon'],\n          },\n          {\n            key: 'lineHeight',\n            type: 'LineHeight',\n            name: '行高',\n            nameEn: 'Line Height',\n            desc: '',\n            descEn: '',\n            mapToken: [\n              'lineHeight',\n              'lineHeightSM',\n              'lineHeightLG',\n              'lineHeightHeading1',\n              'lineHeightHeading2',\n              'lineHeightHeading3',\n              'lineHeightHeading4',\n              'lineHeightHeading5',\n            ],\n          },\n        ],\n      },\n      {\n        key: 'spacing',\n        name: '间距',\n        nameEn: 'Spacing',\n        desc: '',\n        descEn: '',\n        seedToken: ['sizeStep', 'sizeUnit'],\n        groups: [\n          {\n            key: 'margin',\n            type: 'Margin',\n            name: '外间距',\n            nameEn: 'Margin',\n            desc: '',\n            descEn: '',\n            mapToken: [\n              'marginXXS',\n              'marginXS',\n              'marginSM',\n              'margin',\n              'marginMD',\n              'marginLG',\n              'marginXL',\n              'marginXXL',\n            ],\n          },\n          {\n            key: 'padding',\n            type: 'Padding',\n            name: '内间距',\n            nameEn: 'Padding',\n            desc: '',\n            descEn: '',\n            mapToken: [\n              'paddingXXS',\n              'paddingXS',\n              'paddingSM',\n              'padding',\n              'paddingMD',\n              'paddingLG',\n              'paddingXL',\n            ],\n            aliasToken: [\n              'paddingContentHorizontal',\n              'paddingContentVertical',\n              'paddingContentHorizontalSM',\n              'paddingContentVerticalSM',\n              'paddingContentHorizontalLG',\n              'paddingContentVerticalLG',\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    name: '风格',\n    nameEn: 'Style',\n    desc: '',\n    descEn: '',\n    groups: [\n      {\n        key: 'borderRadius',\n        type: 'BorderRadius',\n        name: '圆角',\n        nameEn: 'Border Radius',\n        desc: '',\n        descEn: '',\n        seedToken: ['borderRadius'],\n        mapToken: ['borderRadius', 'borderRadiusSM', 'borderRadiusLG', 'borderRadiusXS'],\n      },\n      {\n        key: 'boxShadow',\n        type: 'BoxShadow',\n        name: '阴影',\n        nameEn: 'Shadow',\n        desc: '',\n        descEn: '',\n        mapToken: ['boxShadow', 'boxShadowSecondary'],\n      },\n    ],\n  },\n  {\n    name: '其他',\n    nameEn: 'Others',\n    desc: '',\n    descEn: '',\n    groups: [\n      {\n        key: 'other',\n        type: 'other',\n        name: '其他',\n        nameEn: 'Others',\n        desc: '',\n        descEn: '',\n        seedToken: ['wireframe'],\n      },\n    ],\n  },\n];\n\nexport default category;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/meta/index.ts",
    "content": "export { default as tokenCategory } from './category';\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/meta/interface.ts",
    "content": "import type { ComponentTokenMap } from 'ant-design-vue/es/theme/interface';\n\nexport interface TokenMeta {\n  type: string;\n\n  // Name\n  name: string;\n  nameEn: string;\n\n  // Description\n  desc: string;\n  descEn: string;\n\n  // Source\n  source: 'seed' | 'map' | 'alias' | 'custom' | keyof ComponentTokenMap;\n}\n\nexport type TokenMetaMap = Record<string, TokenMeta>;\n\n// 二级分类，如品牌色、中性色等\nexport type TokenGroup<T> = {\n  key: string;\n\n  // Group name\n  name: string;\n  nameEn: string;\n\n  // Description\n  desc: string;\n  descEn: string;\n\n  // Type\n  type?: string;\n\n  // Seed token\n  seedToken?: T[];\n  mapToken?: T[];\n  aliasToken?: T[];\n\n  // Children Group\n  groups?: TokenGroup<T>[];\n\n  // Extra\n  mapTokenGroups?: string[];\n  aliasTokenDescription?: string;\n};\n\n// 一级分类，如颜色、尺寸等\nexport type TokenCategory<T> = {\n  // Category name\n  name: string;\n  nameEn: string;\n\n  // Description\n  desc: string;\n  descEn: string;\n\n  groups: TokenGroup<T>[];\n};\n\nexport type TokenTree<T extends string = string> = TokenCategory<T>[];\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/overviews/Error.tsx",
    "content": "import { Card, Space } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport Alert from '../component-demos/alert/error';\nimport Button from '../component-demos/button/dangerButton';\nimport Message from '../component-demos/message/error';\nimport Progress from '../component-demos/progress/danger';\nimport Tag from '../component-demos/tag/error';\nimport Badge from '../component-demos/badge/badge';\nimport Menu from '../component-demos/menu/menuDanger';\nimport Upload from '../component-demos/upload/danger';\nimport Dropdown from '../component-demos/dropdown/dropdownError';\nimport Notification from '../component-demos/notification/error';\nimport Timeline from '../component-demos/timeline/danger';\n\nexport const Error = defineComponent({\n  name: 'Error',\n  setup() {\n    return () => {\n      return (\n        <Card size={'small'}>\n          <Space align={'start'} size={'large'}>\n            <Space direction={'vertical'} size={'large'}>\n              <Space align={'center'} size={'large'} style={{ marginTop: '8px' }}>\n                {Button.demo}\n                <div>{Tag.demo}</div>\n                {Badge.demo}\n              </Space>\n              {Alert.demo}\n            </Space>\n            <Space direction={'vertical'} align={'center'} size={'large'}>\n              {Message.demo}\n              {Progress.demo}\n            </Space>\n          </Space>\n          <Space size={'large'} style={{ marginTop: '32px' }}>\n            <div>{Notification.demo}</div>\n            <div>{Timeline.demo}</div>\n          </Space>\n          <Space size={'large'}>\n            {Menu.demo}\n            <div style={{ width: 300 }}>{Upload.demo}</div>\n            {Dropdown.demo}\n          </Space>\n        </Card>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/overviews/Primary.tsx",
    "content": "import { Card, Space } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport Menu from '../component-demos/menu/menu';\nimport SelectTag from '../component-demos/select/selectTag';\nimport Button from '../component-demos/button/button-icon';\nimport Switch from '../component-demos/switch/switch';\nimport Radio from '../component-demos/radio/radio';\nimport RadioButton from '../component-demos/radio/button';\nimport Checkbox from '../component-demos/checkbox/checkbox';\nimport Tabs from '../component-demos/tabs/tabs';\nimport Pagination from '../component-demos/pagination/outline';\nimport Steps from '../component-demos/steps/steps';\nimport Popconfirm from '../component-demos/popconfirm/popconfirm';\nimport Timeline from '../component-demos/timeline/timeline';\nimport Table from '../component-demos/table/table';\n\nexport const Primary = defineComponent({\n  name: 'Primary',\n  setup() {\n    return () => {\n      return (\n        <Card size={'small'}>\n          <Space direction={'vertical'}>\n            <Space align={'start'} size={'large'}>\n              {Menu.demo}\n              <Space direction={'vertical'} size={'large'}>\n                <Space size={'large'} align={'start'}>\n                  <Space direction={'vertical'} size={'large'}>\n                    <div>{Button.demo}</div>\n                    <div>\n                      <span>{Radio.demo}</span>\n                      {Checkbox.demo}\n                      {Switch.demo}\n                    </div>\n                    <div>{RadioButton.demo}</div>\n                    {Tabs.demo}\n                  </Space>\n                  {SelectTag.demo}\n                </Space>\n                {Pagination.demo}\n                <div style={{ padding: '12px' }}>{Steps.demo}</div>\n                <Space size={'large'} align={'start'}>\n                  {Popconfirm.demo}\n                  {Timeline.demo}\n                </Space>\n              </Space>\n            </Space>\n            {Table.demo}\n          </Space>\n        </Card>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/overviews/Success.tsx",
    "content": "import { Card, Space } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport Alert from '../component-demos/alert/success';\nimport Message from '../component-demos/message/success';\nimport Progress from '../component-demos/progress/success';\nimport Tag from '../component-demos/tag/success';\nimport Input from '../component-demos/input/success';\nimport Result from '../component-demos/result/success';\nimport Notification from '../component-demos/notification/success';\nimport Timeline from '../component-demos/timeline/success';\n\nexport const Success = defineComponent({\n  name: 'Success',\n  setup() {\n    return () => {\n      return (\n        <Card size={'small'}>\n          <Space align={'start'} size={'large'}>\n            <Space direction={'vertical'} size={'large'}>\n              <Space align={'center'} size={'large'}>\n                <div>{Tag.demo}</div>\n                {Input.demo}\n              </Space>\n              {Alert.demo}\n            </Space>\n            <Space direction={'vertical'} align={'center'} size={'large'}>\n              {Message.demo}\n              {Progress.demo}\n            </Space>\n          </Space>\n          <Space size={'large'} style={{ marginTop: '32px' }}>\n            <div>{Notification.demo}</div>\n            <div>{Timeline.demo}</div>\n          </Space>\n          {Result.demo}\n        </Card>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/overviews/Warning.tsx",
    "content": "import { Card, Space } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nimport Alert from '../component-demos/alert/warning';\nimport Message from '../component-demos/message/warning';\nimport Popconfirm from '../component-demos/popconfirm/popconfirm';\nimport Modal from '../component-demos/modal/warning';\nimport Badge from '../component-demos/badge/warning';\nimport Text from '../component-demos/typography/warningText';\nimport Title from '../component-demos/typography/warningTitle';\nimport Tag from '../component-demos/tag/warning';\nimport Input from '../component-demos/input/warning';\nimport Result from '../component-demos/result/warning';\nimport Notification from '../component-demos/notification/warning';\n\nexport const Warning = defineComponent({\n  name: 'Warning',\n  setup() {\n    return () => {\n      return (\n        <Card size={'small'}>\n          <Space align={'start'} size={'large'}>\n            <Space direction={'vertical'} size={'large'}>\n              <Space size={'large'}>\n                <div style={{ width: '200px' }}>{Title.demo}</div>\n                <div style={{ width: '100%' }}>{Input.demo}</div>\n              </Space>\n              {Alert.demo}\n            </Space>\n            <Space direction={'vertical'} align={'center'} size={'large'}>\n              {Message.demo}\n              {Popconfirm.demo}\n              <Space size={'large'}>\n                {Badge.demo}\n                {Tag.demo}\n                {Text.demo}\n              </Space>\n            </Space>\n          </Space>\n          <Space size={'large'} style={{ marginTop: '32px' }}>\n            <div>{Notification.demo}</div>\n            <div>{Modal.demo}</div>\n          </Space>\n          {Result.demo}\n        </Card>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/overviews/index.ts",
    "content": "export * from './Primary';\nexport * from './Success';\nexport * from './Warning';\nexport * from './Error';\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/previewer.tsx",
    "content": "import { Button, Layout, message, theme as antdTheme } from 'ant-design-vue';\nimport type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport { defineComponent, toRefs, watchEffect, computed, ref } from 'vue';\nimport type { PropType } from 'vue';\nimport ComponentPanel from './component-panel';\nimport type { FilterMode } from './FilterPanel';\nimport FilterPanel from './FilterPanel';\nimport { Arrow, CompactTheme, DarkTheme } from './icons';\nimport type { MutableTheme, PreviewerProps, Theme } from './interface';\nimport type { ThemeSelectProps } from './ThemeSelect';\nimport ThemeSelect from './ThemeSelect';\nimport type { TokenPanelRef } from './token-panel';\nimport TokenPanel from './token-panel';\nimport type { TokenType } from './utils/classifyToken';\nimport makeStyle from './utils/makeStyle';\n\nconst { darkAlgorithm } = antdTheme;\n\nconst { Header, Sider, Content } = Layout;\nconst SIDER_WIDTH = 340;\n\nconst useStyle = makeStyle('layout', token => ({\n  [`.previewer-layout${token.rootCls}-layout`]: {\n    [`${token.rootCls}-layout-header`]: {\n      backgroundColor: 'white !important',\n      display: 'flex',\n      alignItems: 'center',\n      borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n      paddingInline: `${token.paddingLG}px !important`,\n    },\n\n    [`${token.rootCls}-layout-sider`]: {\n      padding: 0,\n      borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`,\n      transition: `all ${token.motionDurationSlow}`,\n      overflow: 'visible !important',\n\n      [`${token.rootCls}-btn${token.rootCls}-btn-circle.previewer-sider-collapse-btn`]: {\n        position: 'absolute',\n        transform: 'translateX(50%)',\n        border: 'none',\n        boxShadow:\n          '0 2px 8px -2px rgba(0,0,0,0.05), 0 1px 4px -1px rgba(25,15,15,0.07), 0 0 1px 0 rgba(0,0,0,0.08)',\n        marginTop: token.margin,\n        insetInlineEnd: 0,\n        color: 'rgba(0,0,0,0.25)',\n\n        '&:hover': {\n          color: 'rgba(0,0,0,0.45)',\n          boxShadow:\n            '0 2px 8px -2px rgba(0,0,0,0.18), 0 1px 4px -1px rgba(25,15,15,0.18), 0 0 1px 0 rgba(0,0,0,0.18)',\n        },\n\n        '.previewer-sider-collapse-btn-icon': {\n          fontSize: 16,\n          marginTop: 4,\n          transition: 'transform 0.3s',\n        },\n\n        '&-collapsed': {\n          borderRadius: { _skip_check_: true, value: '0 100px 100px 0' },\n          transform: 'translateX(90%)',\n          '.previewer-sider-collapse-btn-icon': {\n            transform: 'rotate(180deg)',\n          },\n        },\n      },\n\n      '.previewer-sider-handler': {\n        position: 'absolute',\n        insetInlineEnd: 0,\n        height: '100%',\n        width: 8,\n        transform: 'translateX(50%)',\n        cursor: 'ew-resize',\n        opacity: 0,\n        backgroundColor: 'transparent',\n      },\n    },\n  },\n}));\n\nconst Previewer = defineComponent({\n  name: 'Previewer',\n  inheritAttrs: false,\n  props: {\n    onSave: { type: Function as PropType<(themeConfig: ThemeConfig) => void> },\n    showTheme: { type: Boolean },\n    theme: { type: Object as PropType<Theme> },\n    onThemeChange: { type: Function as PropType<(config: ThemeConfig) => void> },\n  },\n  setup(props, { attrs }) {\n    const { showTheme, theme } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const selectedTokens = ref<string[]>([]);\n    const siderVisible = ref<boolean>(true);\n    const siderWidth = ref<number>(SIDER_WIDTH);\n    const filterMode = ref<FilterMode>('filter');\n    const filterTypes = ref<TokenType[]>([]);\n\n    const tokenPanelRef = ref<TokenPanelRef>(null);\n    const dragRef = ref(false);\n    const siderRef = ref<HTMLDivElement>(null);\n\n    const defaultThemes = computed<ThemeSelectProps['themes']>(() => [\n      {\n        name: '默认主题',\n        key: 'default',\n        config: {},\n        fixed: true,\n      },\n      {\n        name: '暗色主题',\n        key: 'dark',\n        config: {\n          algorithm: darkAlgorithm,\n        },\n        icon: <DarkTheme style={{ fontSize: '16px' }} />,\n        closable: true,\n      },\n      {\n        name: '紧凑主题',\n        key: 'compact',\n        config: {},\n        icon: <CompactTheme style={{ fontSize: '16px' }} />,\n        closable: true,\n      },\n    ]);\n\n    const themes = ref<ThemeSelectProps['themes']>(\n      theme.value\n        ? [\n            {\n              ...theme.value,\n              fixed: true,\n            },\n          ]\n        : defaultThemes.value,\n    );\n\n    const shownThemes = ref<string[]>(\n      showTheme.value && !theme.value ? ['light', 'dark'] : [themes.value[0].key],\n    );\n    const enabledThemes = ref<string[]>(\n      showTheme.value && !theme.value ? ['light', 'dark'] : [themes.value[0].key],\n    );\n\n    watchEffect(() => {\n      themes.value = theme.value\n        ? [\n            {\n              ...theme.value,\n              fixed: true,\n            },\n          ]\n        : defaultThemes.value;\n      shownThemes.value = theme.value ? [theme.value.key] : shownThemes.value;\n      enabledThemes.value = theme.value ? [theme.value.key] : enabledThemes.value;\n    });\n\n    watchEffect(() => {\n      const handleMouseUp = () => {\n        dragRef.value = false;\n        document.body.style.cursor = '';\n        if (siderRef.value) {\n          siderRef.value.style.transition = 'all 0.3s';\n        }\n      };\n      const handleMouseMove = (e: MouseEvent) => {\n        if (dragRef.value) {\n          e.preventDefault();\n          siderWidth.value = e.clientX > SIDER_WIDTH ? e.clientX : SIDER_WIDTH;\n        }\n      };\n\n      window.addEventListener('mouseup', handleMouseUp);\n      window.addEventListener('mousemove', handleMouseMove);\n\n      return () => {\n        window.removeEventListener('mouseup', handleMouseUp);\n        window.removeEventListener('mousemove', handleMouseMove);\n      };\n    });\n\n    const handleTokenClick = (tokenName: string) => {\n      tokenPanelRef.value?.scrollToToken(tokenName);\n    };\n\n    const mutableThemes = computed(() =>\n      enabledThemes.value.map<MutableTheme>(item => {\n        const themeEntity = themes.value.find(themeItem => themeItem.key === item)!;\n        return {\n          name: themeEntity.name,\n          key: themeEntity.key,\n          config: themeEntity.config,\n          onThemeChange: newTheme => {\n            if (themeEntity.key === theme.value?.key) {\n              props.onThemeChange?.(newTheme);\n            } else {\n              themes.value = themes.value.map(themeItem =>\n                themeItem.key === themeEntity.key\n                  ? {\n                      ...themeItem,\n                      config: newTheme,\n                    }\n                  : themeItem,\n              );\n            }\n          },\n        };\n      }),\n    );\n\n    const componentPanel = computed(() => (\n      <ComponentPanel\n        filterMode={filterMode.value}\n        selectedTokens={selectedTokens.value}\n        themes={mutableThemes.value}\n        onTokenClick={handleTokenClick}\n        style={{ flex: 1, height: 0, marginTop: '12px' }}\n      />\n    ));\n\n    return () => {\n      return wrapSSR(\n        <Layout {...attrs} class={classNames('previewer-layout', hashId.value, attrs.class)}>\n          <Header class=\"previewer-header\">\n            <span style={{ fontSize: '16px', fontWeight: 'bold', marginRight: '16px' }}>\n              主题预览器\n            </span>\n            {showTheme.value && (\n              <div>\n                <ThemeSelect\n                  showAddTheme\n                  enabledThemes={enabledThemes.value}\n                  shownThemes={shownThemes.value}\n                  themes={themes.value}\n                  onEnabledThemeChange={value => {\n                    if (value.length > 2) {\n                      message.warning({\n                        content: '最多同时展示两个主题',\n                      });\n                      return;\n                    }\n                    enabledThemes.value = value;\n                  }}\n                  onShownThemeChange={(value, selectTheme, { type }) => {\n                    if (type === 'select' && enabledThemes.value.length < 2) {\n                      enabledThemes.value = [...enabledThemes.value, selectTheme];\n                    }\n                    shownThemes.value = value;\n                  }}\n                />\n              </div>\n            )}\n            <Button\n              type=\"primary\"\n              style={{ marginLeft: 'auto' }}\n              onClick={() => props.onSave?.(themes.value[0].config)}\n            >\n              保存\n            </Button>\n          </Header>\n          <Layout\n            style={{\n              height: 'calc(100vh - 64px)',\n            }}\n          >\n            <Sider\n              style={{\n                backgroundColor: 'white',\n                height: '100%',\n                overflow: 'auto',\n                flex: `0 0 ${siderWidth.value}px`,\n                willChange: 'auto',\n              }}\n              width={siderVisible.value ? siderWidth.value : 0}\n              ref={siderRef}\n            >\n              <div\n                class=\"previewer-sider-handler\"\n                onMousedown={() => {\n                  dragRef.value = true;\n                  document.body.style.cursor = 'ew-resize';\n                  if (siderRef.value) {\n                    siderRef.value.style.transition = 'none';\n                  }\n                }}\n              />\n              <Button\n                onClick={() => (siderVisible.value = !siderVisible.value)}\n                class={classNames(\n                  'previewer-sider-collapse-btn',\n                  !siderVisible.value && 'previewer-sider-collapse-btn-collapsed',\n                )}\n                size=\"small\"\n                icon={\n                  <Arrow\n                    rotate={siderVisible.value ? 0 : 180}\n                    class=\"previewer-sider-collapse-btn-icon\"\n                  />\n                }\n                shape=\"circle\"\n              />\n              <TokenPanel\n                ref={tokenPanelRef}\n                filterTypes={filterTypes.value}\n                onFilterTypesChange={types => (filterTypes.value = types)}\n                themes={mutableThemes.value}\n                selectedTokens={selectedTokens.value}\n                enableTokenSelect\n                onTokenSelect={tokenName =>\n                  (selectedTokens.value = selectedTokens.value.includes(tokenName)\n                    ? selectedTokens.value.filter(item => item !== tokenName)\n                    : [...selectedTokens.value, tokenName])\n                }\n              />\n            </Sider>\n            <Content\n              style={{\n                padding: '16px 20px 28px 24px',\n                height: '100%',\n                overflow: 'hidden',\n                display: 'flex',\n                flexDirection: 'column',\n              }}\n            >\n              <FilterPanel\n                selectedTokens={selectedTokens.value}\n                onSelectedTokensChange={tokens => (selectedTokens.value = tokens)}\n                filterMode={filterMode.value}\n                onFilterModeChange={mode => (filterMode.value = mode)}\n                onTokenClick={handleTokenClick}\n              />\n              {componentPanel.value}\n            </Content>\n          </Layout>\n        </Layout>,\n      );\n    };\n  },\n});\n\nexport { PreviewerProps };\n\nexport default Previewer;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel/index.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, watchEffect, computed } from 'vue';\nimport { CheckOutlined } from '@ant-design/icons-vue';\nimport { Dropdown, Input, Menu, Switch, theme as antdTheme } from 'ant-design-vue';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport { SearchDropdown } from '../icons';\nimport type { AliasToken, MutableTheme, TokenValue } from '../interface';\nimport type { TokenType } from '../utils/classifyToken';\nimport { classifyToken, getTypeOfToken, TOKEN_SORTS } from '../utils/classifyToken';\nimport getDesignToken from '../utils/getDesignToken';\nimport makeStyle from '../utils/makeStyle';\nimport TokenCard, { IconMap, TextMap } from './token-card';\nimport { getTokenItemId } from './token-item';\n\nconst { useToken } = antdTheme;\n\nconst useStyle = makeStyle('AliasTokenPreview', token => ({\n  '.preview-panel-wrapper': {\n    overflow: 'auto',\n    height: '100%',\n    '.preview-panel': {\n      height: '100%',\n      minWidth: 300,\n      backgroundColor: 'white',\n      display: 'flex',\n      flexDirection: 'column',\n      '.preview-panel-token-wrapper': {\n        position: 'relative',\n        flex: 1,\n        overflow: 'hidden',\n        '&::before, &::after': {\n          position: 'absolute',\n          zIndex: 1,\n          opacity: 0,\n          transition: 'opacity .3s',\n          content: '\"\"',\n          pointerEvents: 'none',\n          insetInlineStart: 0,\n          insetInlineEnd: 0,\n          height: 40,\n        },\n\n        '&::before': {\n          top: 0,\n          boxShadow: 'inset 0 10px 8px -8px #00000014',\n        },\n\n        '&::after': {\n          bottom: 0,\n          boxShadow: 'inset 0 -10px 8px -8px #00000014',\n        },\n\n        '&.preview-panel-token-wrapper-ping-top': {\n          '&::before': {\n            opacity: 1,\n          },\n        },\n      },\n      '.preview-panel-space': {\n        marginBottom: 20,\n        paddingInlineStart: token.paddingXS,\n        display: 'flex',\n        justifyContent: 'space-between',\n        alignItems: 'center',\n\n        '.preview-hide-token': {\n          color: token.colorTextSecondary,\n          fontSize: token.fontSizeSM,\n          lineHeight: token.lineHeightSM,\n          display: 'flex',\n          alignItems: 'center',\n          '>*:first-child': {\n            marginInlineEnd: 2,\n          },\n        },\n      },\n      '.preview-panel-search': {\n        backgroundColor: 'rgba(0, 0, 0, 2%)',\n        borderRadius: token.borderRadiusLG,\n\n        [`${token.rootCls}-input-group-addon`]: {\n          backgroundColor: 'inherit',\n          border: 'none',\n          padding: 0,\n          transition: `background-color ${token.motionDurationSlow}`,\n\n          '&:hover': {\n            backgroundColor: 'rgba(0, 0, 0, 4%)',\n          },\n        },\n\n        input: {\n          fontSize: token.fontSizeSM,\n          paddingInlineStart: 4,\n        },\n\n        '.previewer-token-type-dropdown-icon-active': {\n          color: token.colorPrimary,\n        },\n      },\n    },\n  },\n}));\n\nexport interface TokenPreviewProps {\n  themes: MutableTheme[];\n  selectedTokens?: string[];\n  onTokenSelect?: (token: string) => void;\n  filterTypes?: TokenType[];\n  onFilterTypesChange?: (types: TokenType[]) => void;\n  enableTokenSelect?: boolean;\n}\n\nexport type TokenPanelRef = {\n  scrollToToken: (token: string) => void;\n};\nexport default defineComponent({\n  name: 'TokenPreview',\n  props: {\n    themes: { type: Array as PropType<MutableTheme[]> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    onTokenSelect: { type: Function as PropType<(token: string) => void> },\n    filterTypes: { type: Array as PropType<TokenType[]> },\n    onFilterTypesChange: { type: Function as PropType<(types: TokenType[]) => void> },\n    enableTokenSelect: { type: Boolean },\n  },\n  setup(props, { attrs, expose }) {\n    const { filterTypes, themes, selectedTokens, enableTokenSelect } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const { token } = useToken();\n\n    const search = ref<string>('');\n    const showAll = ref<boolean>(false);\n    const showTokenListShadowTop = ref<boolean>(false);\n    const cardWrapperRef = ref<HTMLDivElement>(null);\n    const activeCards = ref<TokenType[]>([]);\n    const activeToken = ref<string | undefined>();\n\n    const mergedFilterTypes = ref<TokenType[]>(filterTypes.value || []);\n\n    // TODO: Split AliasToken and SeedToken\n    const groupedToken = computed(() => classifyToken(token.value as any));\n\n    watchEffect(() => {\n      const handleTokenListScroll = () => {\n        showTokenListShadowTop.value = (cardWrapperRef.value?.scrollTop ?? 0) > 0;\n      };\n      cardWrapperRef.value?.addEventListener('scroll', handleTokenListScroll);\n      const wrapper = cardWrapperRef.value;\n      return () => {\n        wrapper?.removeEventListener('scroll', handleTokenListScroll);\n      };\n    });\n\n    expose({\n      scrollToToken: tokenName => {\n        const type = getTypeOfToken(tokenName);\n        if (!activeCards.value.includes(type)) {\n          activeCards.value = [...activeCards.value, type];\n        }\n        activeToken.value = tokenName;\n        setTimeout(() => {\n          const node = cardWrapperRef.value?.querySelector<HTMLElement>(\n            `#${getTokenItemId(tokenName)}`,\n          );\n          if (!node) {\n            return;\n          }\n          node?.scrollIntoView({\n            block: 'center',\n            inline: 'nearest',\n          });\n        }, 100);\n      },\n    });\n\n    const handleAliasTokenChange = (theme: MutableTheme, tokenName: string, value: TokenValue) => {\n      theme.onThemeChange?.(\n        {\n          ...theme.config,\n          token: {\n            ...theme.config.token,\n            [tokenName]: value,\n          },\n        },\n        ['token', tokenName],\n      );\n    };\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames('preview-panel-wrapper', hashId.value)}>\n          <div class={classNames('preview-panel')}>\n            <div style={{ padding: '16px' }}>\n              <h3 class={classNames('preview-panel-space', hashId.value)}>\n                <span>Alias Token 预览</span>\n                <span class=\"preview-hide-token\">\n                  <span>显示所有</span>\n                  <Switch\n                    checked={showAll.value}\n                    onChange={value => (showAll.value = value as any)}\n                    size=\"small\"\n                  />\n                </span>\n              </h3>\n              <Input\n                allowClear\n                onChange={e => {\n                  search.value = e.target.value;\n                }}\n                bordered={false}\n                addonBefore={\n                  <>\n                    <Dropdown\n                      v-slots={{\n                        overlay: () => (\n                          <Menu\n                            items={[\n                              {\n                                label: '筛选项',\n                                type: 'group',\n                                key: 'title-key',\n                                style: { fontSize: '12px' },\n                              },\n                              ...TOKEN_SORTS.map(type => ({\n                                icon: (\n                                  <span>\n                                    <CheckOutlined\n                                      style={{\n                                        opacity: mergedFilterTypes.value.includes(type) ? 1 : 0,\n                                        marginInlineEnd: '8px',\n                                        fontSize: '12px',\n                                      }}\n                                    />\n                                    {IconMap[type]}\n                                  </span>\n                                ),\n                                label: TextMap[type],\n                                key: type,\n                                onClick: () => {\n                                  const newTypes = mergedFilterTypes.value.includes(type)\n                                    ? mergedFilterTypes.value.filter(item => type !== item)\n                                    : [...mergedFilterTypes.value, type];\n                                  mergedFilterTypes.value = newTypes;\n                                  props.onFilterTypesChange?.(newTypes);\n                                },\n                              })),\n                            ]}\n                          />\n                        ),\n                      }}\n                      trigger={['click']}\n                    >\n                      <SearchDropdown\n                        style={{\n                          width: '32px',\n                          cursor: 'pointer',\n                          fontSize: '18px',\n                          paddingTop: '2px',\n                          transition: 'color 0.3s',\n                        }}\n                        class={classNames({\n                          'previewer-token-type-dropdown-icon-active':\n                            mergedFilterTypes.value.length > 0,\n                        })}\n                      />\n                    </Dropdown>\n                  </>\n                }\n                class=\"preview-panel-search\"\n                placeholder=\"搜索 Token / 色值 / 文本 / 圆角等\"\n              />\n            </div>\n            <div\n              class={classNames('preview-panel-token-wrapper', {\n                'preview-panel-token-wrapper-ping-top': showTokenListShadowTop.value,\n              })}\n            >\n              <div\n                ref={cardWrapperRef}\n                style={{ height: '100%', overflow: 'auto', padding: '0 16px' }}\n              >\n                <div>\n                  {TOKEN_SORTS.filter(\n                    type =>\n                      type !== 'seed' &&\n                      (mergedFilterTypes.value.includes(type) ||\n                        mergedFilterTypes.value.length === 0) &&\n                      (!search.value ||\n                        groupedToken.value[type].some(item =>\n                          item.toLowerCase().includes(search.value.toLowerCase()),\n                        )),\n                  ).map(key => (\n                    <TokenCard\n                      title={TextMap[key]}\n                      icon={IconMap[key]}\n                      key={key}\n                      tokenPath={['token']}\n                      tokenArr={groupedToken.value[key]}\n                      keyword={search.value}\n                      hideUseless={!showAll.value}\n                      open={activeCards.value.includes(key)}\n                      onOpenChange={open => {\n                        activeCards.value = open\n                          ? [...activeCards.value, key]\n                          : activeCards.value.filter(item => item !== key);\n                      }}\n                      onTokenChange={handleAliasTokenChange}\n                      activeToken={activeToken.value}\n                      onActiveTokenChange={tokenName => (activeToken.value = tokenName)}\n                      themes={themes.value}\n                      selectedTokens={selectedTokens.value}\n                      onTokenSelect={props.onTokenSelect}\n                      enableTokenSelect={enableTokenSelect.value}\n                      fallback={config => getDesignToken(config) as AliasToken}\n                    />\n                  ))}\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel/token-card/index.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref } from 'vue';\nimport {\n  AlignLeftOutlined,\n  BgColorsOutlined,\n  BorderHorizontalOutlined,\n  BulbOutlined,\n  CaretRightOutlined,\n  ControlOutlined,\n  FileUnknownOutlined,\n  FontColorsOutlined,\n  FontSizeOutlined,\n  FormatPainterOutlined,\n  HighlightOutlined,\n  RadiusSettingOutlined,\n  TabletOutlined,\n} from '@ant-design/icons-vue';\nimport { Collapse, Space } from 'ant-design-vue';\nimport type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport PropTypes from 'ant-design-vue/es/_util/vue-types';\nimport { Motion, ShapeLine } from '../../icons';\nimport type { MutableTheme, TokenValue } from '../../interface';\nimport type { TokenType } from '../../utils/classifyToken';\nimport makeStyle from '../../utils/makeStyle';\nimport { getRelatedComponents } from '../../utils/statistic';\nimport TokenItem from '../token-item';\n\nconst { Panel } = Collapse;\n\nexport interface TokenCardProps {\n  title: string;\n  icon?: any;\n  tokenArr: string[];\n  tokenPath: string[];\n  keyword?: string;\n  hideUseless?: boolean;\n  defaultOpen?: boolean;\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  activeToken?: string;\n  onActiveTokenChange?: (token: string | undefined) => void;\n  onTokenChange?: (theme: MutableTheme, tokenName: string, value: TokenValue) => void;\n  themes: MutableTheme[];\n  selectedTokens?: string[];\n  onTokenSelect?: (token: string) => void;\n  enableTokenSelect?: boolean;\n  hideUsageCount?: boolean;\n  placeholder?: any;\n  fallback?: (config: ThemeConfig) => Record<string, TokenValue>;\n}\n\nexport const IconMap: Record<TokenType, any> = {\n  seed: <BulbOutlined />,\n  colorText: <FontColorsOutlined />,\n  colorBg: <BgColorsOutlined />,\n  colorSplit: <BorderHorizontalOutlined />,\n  colorFill: <HighlightOutlined />,\n  colorCommon: <FormatPainterOutlined />,\n  space: <ShapeLine />,\n  font: <FontSizeOutlined />,\n  line: <AlignLeftOutlined />,\n  screen: <TabletOutlined />,\n  motion: <Motion />,\n  radius: <RadiusSettingOutlined />,\n  control: <ControlOutlined />,\n  others: <FileUnknownOutlined />,\n};\nexport const TextMap: Record<TokenType, string> = {\n  seed: 'Seed Token',\n  colorCommon: 'Common Color 通用颜色',\n  colorText: 'Text Color 文本颜色',\n  colorBg: 'Background Color 背景颜色',\n  colorFill: 'Fill Color 填充颜色',\n  colorSplit: 'Split Color 分割线颜色',\n  space: 'Space 间距',\n  font: 'Font 文本',\n  line: 'Line 线',\n  screen: 'Screen 屏幕',\n  motion: 'Motion 动画',\n  radius: 'Radius 圆角',\n  control: 'Control 控件',\n  others: 'Others 未分类',\n};\n\nconst useStyle = makeStyle('TokenCard', token => ({\n  '.token-card': {\n    width: '100%',\n    height: 'auto',\n    borderRadius: token.borderRadiusLG,\n    border: `1px solid rgba(0,0,0,0.09)`,\n    marginBottom: token.marginSM,\n\n    [`${token.rootCls}-collapse.token-card-collapse`]: {\n      [`> ${token.rootCls}-collapse-item > ${token.rootCls}-collapse-content > ${token.rootCls}-collapse-content-box`]:\n        {\n          padding: {\n            _skip_check_: true,\n            value: `0 ${token.paddingXS}px 12px !important`,\n          },\n        },\n    },\n  },\n  [`.token-card ${token.rootCls}-input-group >${token.rootCls}-input:not(:first-child):not(:last-child)`]:\n    {\n      background: 'white',\n      borderRadius: token.borderRadiusLG,\n    },\n}));\n\nexport default defineComponent({\n  name: 'TokenCard',\n  props: {\n    title: { type: String as PropType<string> },\n    icon: PropTypes.any,\n    tokenArr: { type: Array as PropType<string[]> },\n    tokenPath: { type: Array as PropType<string[]> },\n    keyword: { type: String as PropType<string> },\n    hideUseless: { type: Boolean },\n    defaultOpen: { type: Boolean },\n    open: { type: Boolean },\n    activeToken: { type: String as PropType<string> },\n    themes: { type: Array as PropType<MutableTheme[]> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    enableTokenSelect: { type: Boolean },\n    hideUsageCount: { type: Boolean },\n    placeholder: PropTypes.any,\n    onOpenChange: { type: Function as PropType<(open: boolean) => void> },\n    onActiveTokenChange: { type: Function as PropType<(token: string | undefined) => void> },\n    onTokenChange: {\n      type: Function as PropType<\n        (theme: MutableTheme, tokenName: string, value: TokenValue) => void\n      >,\n    },\n    onTokenSelect: { type: Function as PropType<(token: string) => void> },\n    fallback: { type: Function as PropType<(config: ThemeConfig) => Record<string, TokenValue>> },\n  },\n  setup(props, { attrs, slots }) {\n    const {\n      title,\n      tokenArr,\n      keyword,\n      hideUseless,\n      defaultOpen,\n      activeToken,\n      tokenPath,\n      selectedTokens,\n      themes,\n      enableTokenSelect,\n      hideUsageCount,\n    } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const activeKeys = ref(!!defaultOpen.value ? ['1'] : []);\n\n    return () => {\n      const icon = slots.icon ? slots.icon() : props.icon;\n\n      const placeholder = slots.placeholder ? slots.placeholder() : props.placeholder;\n\n      return wrapSSR(\n        <div {...attrs} class={classNames('token-card', hashId.value)}>\n          <Collapse\n            ghost\n            v-slots={{\n              expandIcon: ({ isActive }) => (\n                <CaretRightOutlined\n                  rotate={isActive ? 450 : 360}\n                  style={{ fontSize: '12px', color: 'rgba(0,0,0,0.45)' }}\n                />\n              ),\n            }}\n            expandIconPosition=\"end\"\n            class=\"token-card-collapse\"\n            v-model={[activeKeys.value, 'activeKey']}\n            onChange={() => {\n              // onOpenChange?.(keys.length > 0);\n              props.onOpenChange(activeKeys.value.length > 0);\n            }}\n          >\n            <Panel\n              v-slots={{\n                header: () => (\n                  <Space size=\"small\">\n                    <span>{title.value}</span>\n                    <span>{icon}</span>\n                  </Space>\n                ),\n              }}\n              key=\"1\"\n            >\n              {tokenArr.value\n                .filter(\n                  tokenName =>\n                    (!keyword.value ||\n                      tokenName.toLowerCase().includes(keyword.value.toLowerCase())) &&\n                    (!hideUseless.value || getRelatedComponents(tokenName).length > 0),\n                )\n                .map(tokenName => {\n                  return (\n                    <TokenItem\n                      tokenPath={tokenPath.value}\n                      onActiveChange={active =>\n                        props.onActiveTokenChange?.(active ? tokenName : undefined)\n                      }\n                      active={activeToken.value === tokenName}\n                      tokenName={tokenName}\n                      key={tokenName}\n                      onTokenChange={props.onTokenChange}\n                      themes={themes.value}\n                      selectedTokens={selectedTokens.value}\n                      onTokenSelect={props.onTokenSelect}\n                      enableTokenSelect={enableTokenSelect.value}\n                      hideUsageCount={hideUsageCount.value}\n                      fallback={props.fallback}\n                    />\n                  );\n                })}\n              {tokenArr.value.length === 0 && placeholder}\n            </Panel>\n          </Collapse>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel/token-item/index.tsx",
    "content": "import { CaretRightOutlined } from '@ant-design/icons-vue';\nimport { Collapse, Space } from 'ant-design-vue';\nimport type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType, CSSProperties } from 'vue';\nimport { defineComponent, toRefs, watch, computed, ref } from 'vue';\nimport ColorPreview from '../../ColorPreview';\nimport { Pick } from '../../icons';\nimport type { MutableTheme, TokenValue } from '../../interface';\nimport TokenInput from '../../TokenInput';\nimport getValueByPath from '../../utils/getValueByPath';\nimport isColor from '../../utils/isColor';\nimport makeStyle from '../../utils/makeStyle';\nimport { getRelatedComponents } from '../../utils/statistic';\n\nconst { Panel } = Collapse;\n\nexport interface TokenItemProps {\n  tokenName: string;\n  tokenPath: string[];\n  active?: boolean;\n  onActiveChange?: (active: boolean) => void;\n  onTokenChange?: (theme: MutableTheme, tokenName: string, value: TokenValue) => void;\n  themes: MutableTheme[];\n  selectedTokens?: string[];\n  onTokenSelect?: (token: string) => void;\n  enableTokenSelect?: boolean;\n  hideUsageCount?: boolean;\n  fallback?: (config: ThemeConfig) => Record<string, TokenValue>;\n}\n\nconst AdditionInfo = defineComponent({\n  name: 'AdditionInfo',\n  props: {\n    info: { type: [String, Number] },\n    visible: { type: Boolean },\n    tokenName: { type: String },\n    dark: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { info, visible, dark } = toRefs(props);\n\n    return () => {\n      if (typeof info.value === 'string' && isColor(info.value)) {\n        return (\n          <ColorPreview\n            dark={dark.value}\n            color={String(info.value)}\n            style={{ display: visible.value ? 'block' : 'none', ...(attrs.style as CSSProperties) }}\n          />\n        );\n      }\n\n      if (info.value.toString().length < 6 && String(info.value) !== '') {\n        return (\n          <div\n            {...attrs}\n            style={{\n              height: '20px',\n              overflow: 'hidden',\n              backgroundColor: 'rgba(0,0,0,0.04)',\n              borderRadius: '8px',\n              display: visible.value ? 'block' : 'none',\n              padding: '0 6px',\n              lineHeight: '20px',\n              ...(attrs.style as CSSProperties),\n            }}\n          >\n            {info.value}\n          </div>\n        );\n      }\n\n      return null;\n    };\n  },\n});\n\nconst ShowUsageButton = ({\n  selected,\n  toggleSelected,\n}: {\n  selected: boolean;\n  toggleSelected: (v: boolean) => void;\n}) => {\n  return (\n    <span\n      style={{ marginInlineStart: '12px', verticalAlign: 'middle', cursor: 'pointer' }}\n      onClick={() => toggleSelected(!selected)}\n    >\n      <Pick\n        style={{\n          color: selected ? '#1890ff' : undefined,\n          fontSize: '16px',\n          transition: 'color 0.3s',\n        }}\n      />\n    </span>\n  );\n};\n\nconst useStyle = makeStyle('TokenItem', token => ({\n  [`${token.rootCls}-collapse.previewer-token-item-collapse`]: {\n    [`.previewer-token-item${token.rootCls}-collapse-item`]: {\n      transition: `background-color ${token.motionDurationSlow}`,\n      borderRadius: { _skip_check_: true, value: `4px !important` },\n\n      [`&:not(${token.rootCls}-collapse-item-active):hover`]: {\n        backgroundColor: '#f5f5f5',\n      },\n\n      [`> ${token.rootCls}-collapse-header`]: {\n        padding: '12px 8px',\n      },\n\n      [`${token.rootCls}-collapse-header-text`]: {\n        flex: 1,\n        width: 0,\n      },\n      [`${token.rootCls}-collapse-content-box`]: {\n        padding: '0 4px',\n      },\n      [`${token.rootCls}-collapse-expand-icon`]: {\n        paddingInlineEnd: `${token.paddingXXS}px !important`,\n      },\n      '.previewer-token-count': {\n        height: 16,\n        fontSize: token.fontSizeSM,\n        lineHeight: '16px',\n        borderRadius: 100,\n        paddingInline: token.paddingXXS * 1.5,\n        color: token.colorTextSecondary,\n        backgroundColor: token.colorFillAlter,\n      },\n\n      '.previewer-token-item-name': {\n        transition: 'color 0.3s',\n      },\n\n      '.previewer-token-item-highlighted.previewer-token-item-name': {\n        color: `${token.colorPrimary} !important`,\n      },\n\n      '&:hover .previewer-token-preview': {\n        '> .previewer-color-preview:not(:last-child)': {\n          transform: 'translateX(-100%)',\n          marginInlineEnd: 4,\n        },\n      },\n\n      '.previewer-token-preview': {\n        display: 'flex',\n        alignItems: 'center',\n        position: 'relative',\n\n        '> .previewer-color-preview': {\n          position: 'absolute',\n          insetInlineEnd: 0,\n          top: 0,\n          bottom: 0,\n          margin: 'auto',\n        },\n\n        '> .previewer-color-preview:not(:last-child)': {\n          transform: 'translateX(-50%)',\n          marginInlineEnd: 0,\n          transition: 'transform 0.3s, margin-right 0.3s',\n        },\n\n        '> *:not(:last-child)': {\n          marginInlineEnd: 4,\n        },\n      },\n    },\n  },\n}));\n\nexport const getTokenItemId = (token: string) => `previewer-token-panel-item-${token}`;\n\nexport default defineComponent({\n  name: 'TokenItem',\n  props: {\n    tokenName: { type: String },\n    tokenPath: { type: Array as PropType<string[]> },\n    active: { type: Boolean },\n    themes: { type: Array as PropType<MutableTheme[]> },\n    selectedTokens: { type: Array as PropType<string[]> },\n    enableTokenSelect: { type: Boolean },\n    hideUsageCount: { type: Boolean },\n    onActiveChange: { type: Function as PropType<(active: boolean) => void> },\n    onTokenChange: {\n      type: Function as PropType<\n        (theme: MutableTheme, tokenName: string, value: TokenValue) => void\n      >,\n    },\n    onTokenSelect: { type: Function as PropType<(token: string) => void> },\n    fallback: { type: Function as PropType<(config: ThemeConfig) => Record<string, TokenValue>> },\n  },\n  setup(props, { attrs }) {\n    const {\n      tokenName,\n      active,\n      tokenPath,\n      selectedTokens,\n      themes,\n      enableTokenSelect,\n      hideUsageCount,\n    } = toRefs(props);\n\n    const infoVisible = ref(false);\n    const [wrapSSR, hashId] = useStyle();\n\n    watch(\n      active,\n      val => {\n        if (val) {\n          infoVisible.value = true;\n        }\n      },\n      { immediate: true },\n    );\n\n    const handleTokenChange = (theme: MutableTheme, value: TokenValue) => {\n      props.onTokenChange?.(theme, tokenName.value, value);\n    };\n\n    const count = computed(() => getRelatedComponents(tokenName.value).length);\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} onMouseenter={() => props.onActiveChange?.(false)}>\n          <Collapse\n            collapsible=\"header\"\n            ghost\n            onChange={key => (infoVisible.value = Array.isArray(key) ? key.length > 0 : !!key)}\n            class={classNames('previewer-token-item-collapse', hashId.value)}\n            expandIcon={({ isActive }) => (\n              <CaretRightOutlined\n                rotate={isActive ? 90 : 0}\n                style={{ fontSize: '12px', cursor: 'pointer' }}\n              />\n            )}\n            activeKey={infoVisible.value ? tokenName.value : undefined}\n          >\n            <Panel\n              key={tokenName.value}\n              class=\"previewer-token-item\"\n              header={\n                <div\n                  style={{\n                    display: 'flex',\n                    alignItems: 'center',\n                    gap: 8,\n                  }}\n                  id={getTokenItemId(tokenName.value)}\n                >\n                  <span\n                    style={{\n                      flex: 1,\n                      width: 0,\n                      display: 'flex',\n                      overflow: 'hidden',\n                      alignItems: 'center',\n                    }}\n                  >\n                    <span\n                      title={tokenName.value}\n                      class={classNames('previewer-token-item-name', {\n                        'previewer-token-item-highlighted': active.value,\n                      })}\n                      style={{\n                        marginInlineEnd: '5px',\n                        overflow: 'hidden',\n                        textOverflow: 'ellipsis',\n                      }}\n                    >\n                      {tokenName.value}\n                    </span>\n                    {!hideUsageCount.value && (\n                      <span class=\"previewer-token-count\">{count.value}</span>\n                    )}\n                  </span>\n                  {!infoVisible.value && (\n                    <div\n                      class=\"previewer-token-preview\"\n                      style={{\n                        minWidth: themes.value.length * 20 + (themes.value.length - 1) * 4,\n                      }}\n                    >\n                      {themes.value.map(({ config, key }, index) => {\n                        return (\n                          <AdditionInfo\n                            key={key}\n                            dark={key === 'dark'}\n                            tokenName={tokenName.value}\n                            info={\n                              getValueByPath(config, [...tokenPath.value, tokenName.value]) ??\n                              props.fallback?.(config)[tokenName.value] ??\n                              ''\n                            }\n                            visible={!infoVisible.value}\n                            style={{\n                              zIndex: 10 - index,\n                            }}\n                          />\n                        );\n                      })}\n                    </div>\n                  )}\n                </div>\n              }\n              extra={\n                enableTokenSelect.value ? (\n                  <ShowUsageButton\n                    selected={!!selectedTokens.value?.includes(tokenName.value)}\n                    toggleSelected={() => {\n                      props.onTokenSelect?.(tokenName.value);\n                    }}\n                  />\n                ) : undefined\n              }\n            >\n              <Space\n                direction=\"vertical\"\n                style={{\n                  background: '#fafafa',\n                  borderRadius: '4px',\n                  padding: '8px',\n                  width: '100%',\n                }}\n              >\n                {themes.value.map(theme => {\n                  return (\n                    <div key={theme.key}>\n                      <TokenInput\n                        hideTheme={themes.value.length === 1}\n                        theme={theme}\n                        onChange={value => handleTokenChange(theme, value)}\n                        value={\n                          getValueByPath(theme.config, [...tokenPath.value, tokenName.value]) ??\n                          props.fallback?.(theme.config)[tokenName.value]\n                        }\n                      />\n                    </div>\n                  );\n                })}\n              </Space>\n            </Panel>\n          </Collapse>\n        </div>,\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/AliasPanel.tsx",
    "content": "import {\n  CaretRightOutlined,\n  QuestionCircleOutlined,\n  RightOutlined,\n  ShrinkOutlined,\n} from '@ant-design/icons-vue';\nimport { Button, Collapse, Empty, Tooltip } from 'ant-design-vue';\nimport type { MutableTheme, AliasToken, SelectedToken } from '../interface';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport useMergedState from 'ant-design-vue/es/_util/hooks/useMergedState';\nimport { defineComponent, toRefs, computed } from 'vue';\nimport type { PropType, Ref } from 'vue';\nimport { Pick } from '../icons';\nimport { mapRelatedAlias, seedRelatedAlias } from '../meta/TokenRelation';\nimport makeStyle from '../utils/makeStyle';\nimport { getRelatedComponents } from '../utils/statistic';\nimport TokenDetail from './TokenDetail';\n\nconst { Panel } = Collapse;\n\nconst useStyle = makeStyle('TokenPanelProAlias', token => ({\n  '.token-panel-pro-color-alias': {\n    display: 'flex',\n    flexDirection: 'column',\n    marginTop: 45,\n    borderTop: `1px solid ${token.colorSplit}`,\n\n    '.token-panel-pro-color-alias-title': {\n      display: 'flex',\n      alignItems: 'center',\n      padding: '0 16px',\n      flex: '0 0 60px',\n\n      '&-text': {\n        fontSize: token.fontSizeLG,\n        fontWeight: token.fontWeightStrong,\n      },\n    },\n\n    '.token-panel-pro-color-alias-description': {\n      color: token.colorTextTertiary,\n      fontSize: token.fontSizeSM,\n      lineHeight: token.lineHeightSM,\n      padding: '0 16px 12px',\n    },\n\n    [`.token-panel-pro-alias-collapse${token.rootCls}-collapse`]: {\n      [`> ${token.rootCls}-collapse-item > ${token.rootCls}-collapse-content > ${token.rootCls}-collapse-content-box`]:\n        {\n          paddingBlock: '0',\n        },\n\n      [`> ${token.rootCls}-collapse-item`]: {\n        [`> ${token.rootCls}-collapse-header`]: {\n          alignItems: 'center',\n          padding: '8px 16px',\n          [`> ${token.rootCls}-collapse-header-text`]: {\n            flex: 1,\n\n            '.token-panel-pro-token-collapse-map-collapse-count': {\n              color: token.colorTextSecondary,\n              display: 'inline-block',\n              fontSize: 12,\n              lineHeight: '16px',\n              padding: '0 6px',\n              backgroundColor: token.colorFillAlter,\n              borderRadius: 999,\n            },\n          },\n\n          '.token-panel-pro-token-picked': {\n            color: token.colorPrimary,\n          },\n        },\n      },\n    },\n\n    '.token-panel-pro-color-alias-expand': {\n      height: '100%',\n      width: 20,\n      transform: 'translateX(-50%)',\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n\n      '&:hover': {\n        '.token-panel-pro-color-alias-expand-handler': {\n          opacity: 1,\n        },\n      },\n\n      '.token-panel-pro-color-alias-expand-handler': {\n        height: 100,\n        width: 16,\n        borderRadius: 999,\n        border: `1px solid ${token.colorSplit}`,\n        backgroundColor: '#fff',\n        margin: 'auto',\n        cursor: 'pointer',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        opacity: 0,\n        transition: 'box-shadow 0.2s',\n\n        '&:hover': {\n          boxShadow: token.boxShadow,\n        },\n      },\n    },\n  },\n}));\n\nexport type AliasPanelProps = {\n  theme: MutableTheme;\n  activeSeeds?: string[];\n  selectedTokens?: SelectedToken;\n  onTokenSelect?: (token: string, type: keyof SelectedToken) => void;\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  description?: string;\n};\n\nconst AliasPanel = defineComponent({\n  name: 'AliasPanel',\n  inheritAttrs: false,\n  props: {\n    theme: { type: Object as PropType<MutableTheme> },\n    activeSeeds: { type: Array as PropType<string[]> },\n    selectedTokens: { type: Object as PropType<SelectedToken> },\n    onTokenSelect: {\n      type: Function as PropType<(token: string, type: keyof SelectedToken) => void>,\n    },\n    open: { type: Boolean },\n    onOpenChange: { type: Function as PropType<(open: boolean) => void> },\n    description: { type: String },\n  },\n  setup(props, { attrs }) {\n    const { activeSeeds, theme, selectedTokens, open: customOpen, description } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const [open, setOpen] = useMergedState(customOpen.value ?? true, {\n      value: customOpen,\n      onChange: props.onOpenChange,\n    });\n\n    const shownAlias = computed(() =>\n      (selectedTokens as Ref<SelectedToken>).value?.map?.length\n        ? Array.from(\n            new Set(\n              (selectedTokens as Ref<SelectedToken>).value?.map.reduce<string[]>((result, map) => {\n                return result.concat(...((mapRelatedAlias as any)[map] ?? []));\n              }, []),\n            ),\n          )\n        : activeSeeds.value?.reduce<(keyof AliasToken)[]>(\n            (result, item) => result.concat((seedRelatedAlias as any)[item] ?? []),\n            [],\n          ),\n    );\n\n    return () => {\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={classNames(attrs.class, 'token-panel-pro-color-alias', hashId.value)}\n        >\n          {open.value ? (\n            <>\n              <div class=\"token-panel-pro-color-alias-title\">\n                <span class=\"token-panel-pro-color-alias-title-text\">Alias Token</span>\n                <Tooltip\n                  placement=\"topLeft\"\n                  arrowPointAtCenter\n                  title=\"别名变量（Alias Token）是 Map Token 的别名。Alias Token 用于批量控制某些共性组件的样式。\"\n                >\n                  <QuestionCircleOutlined style={{ fontSize: '14px', marginLeft: '4px' }} />\n                </Tooltip>\n                <Button\n                  type=\"text\"\n                  style={{ marginLeft: 'auto' }}\n                  onClick={() => setOpen(false)}\n                  v-slots={{\n                    icon: () => <ShrinkOutlined />,\n                  }}\n                />\n              </div>\n              {description.value && (\n                <div class=\"token-panel-pro-color-alias-description\">{description.value}</div>\n              )}\n              <div style={{ flex: 1, overflow: 'auto' }}>\n                <Collapse\n                  class=\"token-panel-pro-alias-collapse\"\n                  ghost\n                  v-slots={{\n                    expandIcon: ({ isActive }) => (\n                      <CaretRightOutlined rotate={isActive ? 90 : 0} style={{ fontSize: '12px' }} />\n                    ),\n                  }}\n                >\n                  {shownAlias.value?.map(aliasToken => (\n                    <Panel\n                      key={aliasToken}\n                      v-slots={{\n                        header: () => (\n                          <div style={{ display: 'flex', alignItems: 'center' }}>\n                            <span style={{ marginRight: '8px' }}>{aliasToken}</span>\n                            <span class=\"token-panel-pro-token-collapse-map-collapse-count\">\n                              {getRelatedComponents(aliasToken).length}\n                            </span>\n                            <div\n                              style={{ padding: '4px', marginLeft: 'auto' }}\n                              onClick={e => {\n                                e.stopPropagation();\n                                props.onTokenSelect?.(aliasToken, 'alias');\n                              }}\n                            >\n                              <Pick\n                                class={classNames('token-panel-pro-token-pick', {\n                                  'token-panel-pro-token-picked': (\n                                    selectedTokens as Ref<SelectedToken>\n                                  ).value?.alias?.includes(aliasToken),\n                                })}\n                              />\n                            </div>\n                          </div>\n                        ),\n                      }}\n                    >\n                      <TokenDetail\n                        style={{ paddingBottom: '10px' }}\n                        themes={[theme.value]}\n                        path={['token']}\n                        tokenName={aliasToken as keyof AliasToken}\n                      />\n                    </Panel>\n                  ))}\n                </Collapse>\n                {!shownAlias.value?.length && (\n                  <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description=\"暂无相关 Alias Token\" />\n                )}\n              </div>\n            </>\n          ) : (\n            <div class=\"token-panel-pro-color-alias-expand\">\n              <div class=\"token-panel-pro-color-alias-expand-handler\" onClick={() => setOpen(true)}>\n                <RightOutlined style={{ fontSize: '12px' }} />\n              </div>\n            </div>\n          )}\n        </div>,\n      );\n    };\n  },\n});\n\nexport default AliasPanel;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/ComponentDemoPro.tsx",
    "content": "import { ConfigProvider, Segmented, Space, theme as antdTheme } from 'ant-design-vue';\nimport type { MutableTheme } from '../interface';\nimport type { PropType, CSSProperties } from 'vue';\nimport { defineComponent, toRefs, ref, computed } from 'vue';\nimport ComponentDemoGroup from '../component-panel/ComponentDemoGroup';\nimport { useInjectLocaleContext } from '../locale';\nimport { Error, Primary, Success, Warning } from '../overviews';\n\nexport type ComponentDemoProProps = {\n  selectedTokens?: string[];\n  theme: MutableTheme;\n  components: Record<string, string[]>;\n  activeComponents?: string[];\n  componentDrawer?: boolean;\n  showAll?: boolean;\n};\n\nconst ComponentDemoPro = defineComponent({\n  name: 'ComponentDemoPro',\n  inheritAttrs: false,\n  props: {\n    selectedTokens: { type: Array as PropType<string[]> },\n    theme: { type: Object as PropType<MutableTheme> },\n    components: { type: Object as PropType<Record<string, string[]>> },\n    activeComponents: { type: Array as PropType<string[]> },\n    componentDrawer: { type: Boolean },\n    showAll: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    const { selectedTokens, theme, components, activeComponents, componentDrawer, showAll } =\n      toRefs(props);\n\n    const mode = ref<'overview' | 'component'>('overview');\n\n    const { token } = antdTheme.useToken();\n\n    const locale = useInjectLocaleContext();\n\n    const overviewDemo = computed(() => {\n      if (showAll.value) {\n        return (\n          <Space direction=\"vertical\">\n            <Primary />\n            <Success />\n            <Error />\n            <Warning />\n          </Space>\n        );\n      }\n      if (selectedTokens.value?.includes('colorError')) {\n        return <Error />;\n      }\n      if (selectedTokens.value?.includes('colorSuccess')) {\n        return <Success />;\n      }\n      if (selectedTokens.value?.includes('colorWarning')) {\n        return <Warning />;\n      }\n      return <Primary />;\n    });\n\n    return () => {\n      return (\n        <div\n          {...attrs}\n          style={{\n            ...(attrs.style as CSSProperties),\n            background: token.value.colorBgLayout,\n            paddingBottom: '24px',\n          }}\n        >\n          <div style={{ margin: 'auto', maxWidth: '960px' }}>\n            <Segmented\n              options={[\n                { value: 'overview', label: locale.value.demo.overview },\n                { value: 'component', label: locale.value.demo.components },\n              ]}\n              value={mode.value}\n              onChange={val => (mode.value = val as any)}\n              style={{ margin: '12px 0 0 12px' }}\n            />\n\n            <ConfigProvider\n              theme={{\n                components: {\n                  Select: {\n                    zIndexPopup: 10,\n                  },\n                  DatePicker: {\n                    zIndexPopup: 10,\n                  },\n                  Dropdown: {\n                    zIndexPopup: 10,\n                  },\n                  Mentions: {\n                    zIndexPopup: 10,\n                  },\n                  Tooltip: {\n                    zIndexPopup: 10,\n                  },\n                  Popover: {\n                    zIndexPopup: 10,\n                  },\n                  Popconfirm: {\n                    zIndexPopup: 10,\n                  },\n                },\n              }}\n            >\n              {mode.value === 'overview' ? (\n                <div style={{ margin: '12px' }}>{overviewDemo.value}</div>\n              ) : (\n                <ComponentDemoGroup\n                  selectedTokens={selectedTokens.value}\n                  themes={[theme.value]}\n                  components={components.value}\n                  activeComponents={activeComponents.value}\n                  componentDrawer={componentDrawer.value}\n                  hideTokens\n                />\n              )}\n            </ConfigProvider>\n          </div>\n        </div>\n      );\n    };\n  },\n});\n\nexport default defineComponent({\n  name: 'ComponentDemoProProvider',\n  inheritAttrs: false,\n  props: {\n    selectedTokens: { type: Array as PropType<string[]> },\n    theme: { type: Object as PropType<MutableTheme> },\n    components: { type: Object as PropType<Record<string, string[]>> },\n    activeComponents: { type: Array as PropType<string[]> },\n    componentDrawer: { type: Boolean },\n    showAll: { type: Boolean },\n  },\n  setup(props, { attrs }) {\n    return () => (\n      <ConfigProvider theme={props.theme.config}>\n        <ComponentDemoPro {...props} {...attrs} />\n      </ConfigProvider>\n    );\n  },\n});\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/InputNumberPlus.tsx",
    "content": "import { InputNumber, Slider } from 'ant-design-vue';\nimport type { PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\n\nexport type InputNumberPlusProps = {\n  value?: number;\n  onChange?: (value: number | null) => void;\n  min?: number;\n  max?: number;\n};\n\nconst InputNumberPlus = defineComponent({\n  name: 'InputNumberPlus',\n  props: {\n    value: { type: Number },\n    onChange: { type: Function as PropType<(value: number | null) => void> },\n    min: { type: Number },\n    max: { type: Number },\n  },\n  setup(props) {\n    const { value, min, max } = toRefs(props);\n    return () => {\n      return (\n        <div style={{ display: 'flex', width: '200px' }}>\n          <Slider\n            style={{ flex: '0 0 120px', marginRight: '12px' }}\n            value={value.value}\n            min={min.value}\n            max={max.value}\n            onChange={props.onChange}\n          />\n          <InputNumber\n            value={value.value}\n            min={min.value}\n            max={max.value}\n            onChange={props.onChange}\n            style={{ flex: 1 }}\n          />\n        </div>\n      );\n    };\n  },\n});\n\nexport default InputNumberPlus;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/TokenContent.tsx",
    "content": "import { CaretRightOutlined, ExpandOutlined, QuestionCircleOutlined } from '@ant-design/icons-vue';\nimport {\n  Button,\n  Checkbox,\n  Collapse,\n  ConfigProvider,\n  Popover,\n  Switch,\n  Tooltip,\n  Typography,\n} from 'ant-design-vue';\nimport type { MutableTheme, SelectedToken } from '../interface';\nimport type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport seed from 'ant-design-vue/es/theme/themes/seed';\nimport tokenMeta from 'ant-design-vue/es/version/token-meta.json';\nimport classNames from 'ant-design-vue/es/_util/classNames';\n\nimport type { PropType } from 'vue';\nimport { toRefs, defineComponent, watchEffect, computed, watch, ref } from 'vue';\nimport { debounce } from 'lodash';\n\nimport type { ThemeCode } from '../hooks/useControlledTheme';\nimport { themeMap } from '../hooks/useControlledTheme';\nimport { CompactTheme, DarkTheme, Light, Pick } from '../icons';\n\nimport { useInjectLocaleContext } from '../locale';\nimport type { TokenCategory, TokenGroup } from '../meta/interface';\nimport getDesignToken from '../utils/getDesignToken';\nimport makeStyle from '../utils/makeStyle';\nimport ColorPanel from '../ColorPanel';\nimport IconSwitch from '../IconSwitch';\nimport InputNumberPlus from './InputNumberPlus';\nimport TokenDetail from './TokenDetail';\nimport TokenPreview from './TokenPreview';\n\nconst { Panel } = Collapse;\n\nconst useStyle = makeStyle('ColorTokenContent', token => ({\n  '.token-panel-pro-color': {\n    height: '100%',\n    display: 'flex',\n    '.token-panel-pro-color-seeds': {\n      height: '100%',\n      flex: 1,\n      width: 0,\n      borderInlineEnd: `1px solid ${token.colorBorderSecondary}`,\n      display: 'flex',\n      flexDirection: 'column',\n      boxSizing: 'border-box',\n\n      '.token-panel-pro-color-themes': {\n        display: 'flex',\n        alignItems: 'center',\n        padding: '0 16px',\n        flex: '0 0 60px',\n\n        '> span': {\n          fontSize: token.fontSizeLG,\n          fontWeight: token.fontWeightStrong,\n        },\n      },\n    },\n    [`.token-panel-pro-token-collapse${token.rootCls}-collapse`]: {\n      flex: 1,\n      overflow: 'auto',\n      [`> ${token.rootCls}-collapse-item-active`]: {\n        backgroundColor: '#fff',\n        boxShadow:\n          '0 6px 16px -8px rgba(0,0,0,0.08), 0 9px 28px 0 rgba(0,0,0,0.05), 0 12px 48px -8px rgba(0,0,0,0.03), inset 0 0 0 2px #1677FF',\n        transition: 'box-shadow 0.2s ease-in-out',\n        borderRadius: 8,\n      },\n      [`> ${token.rootCls}-collapse-item > ${token.rootCls}-collapse-content > ${token.rootCls}-collapse-content-box`]:\n        {\n          paddingBlock: '0 12px',\n        },\n\n      '.token-panel-pro-token-collapse-description': {\n        color: token.colorTextTertiary,\n        marginBottom: 16,\n      },\n\n      '.token-panel-pro-token-collapse-subtitle': {\n        color: token.colorTextSecondary,\n        fontSize: 12,\n      },\n\n      '.token-panel-pro-token-collapse-seed-block': {\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'flex-end',\n\n        '+ .token-panel-pro-token-collapse-seed-block': {\n          marginTop: 8,\n        },\n\n        '&-name-cn': {\n          fontWeight: token.fontWeightStrong,\n          marginInlineEnd: 4,\n        },\n\n        '&-name': {\n          color: token.colorTextTertiary,\n        },\n\n        '&-sample': {\n          flex: 'none',\n\n          '&:not(:last-child)': {\n            marginInlineEnd: 16,\n          },\n\n          '&-theme': {\n            color: token.colorTextTertiary,\n            marginBottom: 2,\n            fontSize: '12px',\n            textAlign: 'end',\n          },\n\n          '&-card': {\n            cursor: 'pointer',\n            border: `1px solid ${token.colorBorderSecondary}`,\n            borderRadius: 4,\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'space-between',\n            padding: '4px 8px',\n\n            '&-value': {\n              fontFamily: 'Monaco,'.concat(token.fontFamily),\n            },\n          },\n        },\n      },\n\n      [`.token-panel-pro-token-collapse-map-collapse${token.rootCls}-collapse`]: {\n        borderRadius: 4,\n        backgroundColor: '#fff',\n\n        [`> ${token.rootCls}-collapse-item`]: {\n          '&:not(:first-child)': {\n            [`> ${token.rootCls}-collapse-header`]: {\n              [`> ${token.rootCls}-collapse-header-text`]: {\n                '.token-panel-pro-token-collapse-map-collapse-preview': {\n                  '.token-panel-pro-token-collapse-map-collapse-preview-color': {\n                    marginTop: -1,\n                  },\n                },\n              },\n            },\n          },\n          [`> ${token.rootCls}-collapse-header`]: {\n            padding: { value: '0 12px 0 16px', _skip_check_: true },\n\n            [`> ${token.rootCls}-collapse-expand-icon`]: {\n              alignSelf: 'center',\n            },\n\n            [`> ${token.rootCls}-collapse-header-text`]: {\n              flex: 1,\n\n              '.token-panel-pro-token-collapse-map-collapse-token': {\n                color: token.colorTextSecondary,\n                marginInlineStart: 4,\n                marginInlineEnd: 8,\n              },\n\n              '.token-panel-pro-token-collapse-map-collapse-preview': {\n                display: 'flex',\n                flex: 'none',\n                '.token-panel-pro-token-collapse-map-collapse-preview-color': {\n                  height: 56,\n                  width: 56,\n                  position: 'relative',\n                  borderInline: '1px solid #e8e8e8',\n                },\n                '> *': {\n                  marginInlineEnd: 8,\n                },\n              },\n            },\n          },\n\n          [`> ${token.rootCls}-collapse-content > ${token.rootCls}-collapse-content-box`]: {\n            padding: '0',\n          },\n        },\n      },\n    },\n\n    '.token-panel-pro-token-collapse-map-collapse-count': {\n      color: token.colorTextSecondary,\n      // display: 'inline-block',\n      fontSize: '12px',\n      lineHeight: '16px',\n      padding: '0 6px',\n      backgroundColor: token.colorFillAlter,\n      borderRadius: 999,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    },\n\n    '.token-panel-pro-token-pick': {\n      transition: 'color 0.3s',\n    },\n\n    '.token-panel-pro-token-picked': {\n      color: token.colorPrimary,\n    },\n\n    [`.token-panel-pro-grouped-map-collapse${token.rootCls}-collapse`]: {\n      borderRadius: '4px',\n      [`> ${token.rootCls}-collapse-item`]: {\n        [`> ${token.rootCls}-collapse-header`]: {\n          padding: '6px 12px',\n          color: token.colorIcon,\n          fontSize: '12px',\n          lineHeight: token.lineHeightSM,\n\n          [`> ${token.rootCls}-collapse-header-text`]: {\n            fontSize: '12px',\n          },\n\n          [`${token.rootCls}-collapse-expand-icon`]: {\n            lineHeight: '20px',\n            height: '20px',\n          },\n        },\n        [`> ${token.rootCls}-collapse-content > ${token.rootCls}-collapse-content-box`]: {\n          padding: 0,\n\n          [`.token-panel-pro-token-collapse-map-collapse${token.rootCls}-collapse`]: {\n            border: 'none',\n\n            [`${token.rootCls}-collapse-item:last-child`]: {\n              borderBottom: 'none',\n            },\n          },\n        },\n      },\n    },\n  },\n}));\n\nexport type SeedTokenProps = {\n  theme: MutableTheme;\n  tokenName: string;\n  disabled?: boolean;\n};\n\nconst getSeedValue = (config: ThemeConfig, token: string) => {\n  // @ts-ignore\n  return config.token?.[token] || seed[token] || getDesignToken(config)[token];\n};\n\nconst seedRange: Record<string, { min: number; max: number }> = {\n  borderRadius: {\n    min: 0,\n    max: 16,\n  },\n  fontSize: {\n    min: 12,\n    max: 32,\n  },\n  sizeStep: {\n    min: 0,\n    max: 16,\n  },\n  sizeUnit: {\n    min: 0,\n    max: 16,\n  },\n};\n\nconst SeedTokenPreview = defineComponent({\n  name: 'SeedTokenPreview',\n  props: {\n    theme: { type: Object as PropType<MutableTheme> },\n    tokenName: { type: String },\n    disabled: { type: Boolean },\n  },\n  setup(props) {\n    const { theme, tokenName, disabled } = toRefs(props);\n\n    const tokenPath = computed(() => ['token', tokenName.value]);\n    const tokenValue = ref(getSeedValue(theme.value.config, tokenName.value));\n\n    const locale = useInjectLocaleContext();\n\n    const debouncedOnChange = debounce((newValue: number | string) => {\n      theme.value.onThemeChange?.(\n        {\n          ...theme.value.config,\n          token: {\n            ...theme.value.config.token,\n            [tokenName.value]: newValue,\n          },\n        },\n        ['token', tokenName.value],\n      );\n    }, 500);\n\n    const handleChange = (value: any) => {\n      tokenValue.value = value;\n      debouncedOnChange(value);\n    };\n\n    watchEffect(() => {\n      tokenValue.value = getSeedValue(theme.value.config, tokenName.value);\n    });\n\n    const showReset = computed(() => theme.value.getCanReset?.(tokenPath.value));\n\n    return () => {\n      return (\n        <div class=\"token-panel-pro-token-collapse-seed-block-sample\">\n          <div class=\"token-panel-pro-token-collapse-seed-block-sample-theme\">\n            <Typography.Link\n              style={{\n                fontSize: '12px',\n                padding: 0,\n                opacity: showReset.value ? 1 : 0,\n                pointerEvents: showReset.value ? 'auto' : 'none',\n              }}\n              onClick={() => theme.value.onReset?.(tokenPath.value)}\n            >\n              {locale.value.reset}\n            </Typography.Link>\n          </div>\n          {tokenName.value.startsWith('color') && (\n            <Popover\n              trigger=\"click\"\n              placement=\"bottomRight\"\n              overlayInnerStyle={{ padding: 0 }}\n              v-slots={{\n                content: () => (\n                  <ColorPanel\n                    color={tokenValue.value}\n                    onChange={handleChange}\n                    style={{ border: 'none' }}\n                  />\n                ),\n              }}\n            >\n              <div\n                class=\"token-panel-pro-token-collapse-seed-block-sample-card\"\n                style={{ pointerEvents: disabled.value ? 'none' : 'auto' }}\n              >\n                <div\n                  style={{\n                    backgroundColor: tokenValue.value,\n                    width: '48px',\n                    height: '32px',\n                    borderRadius: '4px',\n                    marginRight: '14px',\n                    boxShadow: '0 2px 3px -1px rgba(0,0,0,0.20), inset 0 0 0 1px rgba(0,0,0,0.09)',\n                  }}\n                />\n                <div class=\"token-panel-pro-token-collapse-seed-block-sample-card-value\">\n                  {tokenValue.value}\n                </div>\n              </div>\n            </Popover>\n          )}\n          {['fontSize', 'sizeUnit', 'sizeStep', 'borderRadius'].includes(tokenName.value) && (\n            <InputNumberPlus\n              value={tokenValue.value}\n              onChange={handleChange}\n              min={seedRange[tokenName.value].min}\n              max={seedRange[tokenName.value].max}\n            />\n          )}\n          {tokenName.value === 'wireframe' && (\n            <Switch checked={tokenValue.value} onChange={handleChange} />\n          )}\n        </div>\n      );\n    };\n  },\n});\n\nexport type MapTokenCollapseContentProps = {\n  mapTokens?: string[];\n  theme: MutableTheme;\n  selectedTokens?: SelectedToken;\n  onTokenSelect?: (token: string | string[], type: keyof SelectedToken) => void;\n  type?: string;\n};\n\nconst MapTokenCollapseContent = defineComponent({\n  name: 'MapTokenCollapseContent',\n  props: {\n    mapTokens: { type: Array as PropType<string[]> },\n    theme: { type: Object as PropType<MutableTheme> },\n    selectedTokens: { type: Object as PropType<SelectedToken> },\n    onTokenSelect: {\n      type: Function as PropType<(token: string | string[], type: keyof SelectedToken) => void>,\n    },\n    type: { type: String },\n  },\n  setup(props) {\n    const { mapTokens, theme, selectedTokens, type } = toRefs(props);\n\n    const locale = useInjectLocaleContext();\n\n    return () => {\n      return (\n        <Collapse class=\"token-panel-pro-token-collapse-map-collapse\">\n          {mapTokens.value?.map(mapToken => (\n            <Panel\n              header={\n                <div style={{ display: 'flex', alignItems: 'center' }}>\n                  <div\n                    style={{\n                      flex: 1,\n                      whiteSpace: 'nowrap',\n                      width: 0,\n                      overflow: 'hidden',\n                      display: 'flex',\n                      alignItems: 'center',\n                      marginRight: 8,\n                    }}\n                  >\n                    {locale.value._lang === 'zh-CN' && (\n                      <span style={{ fontWeight: 500, flex: 'none' }}>\n                        {(tokenMeta as any)[mapToken]?.name}\n                      </span>\n                    )}\n                    <span\n                      class=\"token-panel-pro-token-collapse-map-collapse-token\"\n                      style={{ flex: 'none' }}\n                    >\n                      {mapToken}\n                    </span>\n                    <span class=\"token-panel-pro-token-collapse-map-collapse-count\">\n                      {(getDesignToken(theme.value.config) as any)[mapToken]}\n                    </span>\n                  </div>\n                  <div class=\"token-panel-pro-token-collapse-map-collapse-preview\">\n                    <div class=\"token-panel-pro-token-collapse-map-collapse-preview-color\">\n                      <TokenPreview\n                        theme={theme.value.config}\n                        tokenName={mapToken}\n                        type={type.value}\n                      />\n                    </div>\n                  </div>\n                  <div\n                    style={{ flex: 'none', margin: '4px' }}\n                    onClick={e => {\n                      e.stopPropagation();\n                      props.onTokenSelect(mapToken, 'map');\n                    }}\n                  >\n                    <Pick\n                      class={classNames('token-panel-pro-token-pick', {\n                        'token-panel-pro-token-picked': (\n                          selectedTokens.value as SelectedToken\n                        )?.map?.includes(mapToken),\n                      })}\n                    />\n                  </div>\n                </div>\n              }\n              key={mapToken}\n            >\n              <TokenDetail\n                style={{ margin: '8px' }}\n                themes={[theme.value]}\n                path={['token']}\n                tokenName={mapToken}\n              />\n            </Panel>\n          ))}\n        </Collapse>\n      );\n    };\n  },\n});\n\nexport type MapTokenCollapseProps = {\n  theme: MutableTheme;\n  group: TokenGroup<string>;\n  selectedTokens?: SelectedToken;\n  onTokenSelect?: (token: string | string[], type: keyof SelectedToken) => void;\n  groupFn?: (token: string) => string;\n};\n\nconst MapTokenCollapse = defineComponent({\n  name: 'MapTokenCollapse',\n  props: {\n    theme: { type: Object as PropType<MutableTheme> },\n    group: { type: Object as PropType<TokenGroup<string>> },\n    selectedTokens: { type: Object as PropType<SelectedToken> },\n    onTokenSelect: {\n      type: Function as PropType<(token: string | string[], type: keyof SelectedToken) => void>,\n    },\n    groupFn: { type: Function as PropType<(token: string) => string> },\n  },\n  setup(props) {\n    const { theme, selectedTokens, groupFn, group } = toRefs(props);\n\n    const locale = useInjectLocaleContext();\n\n    const groupedTokens = computed(() => {\n      const grouped: Record<string, string[]> = {};\n      if (groupFn.value) {\n        group.value.mapToken?.forEach(token => {\n          const key = groupFn.value(token) ?? 'light';\n          grouped[key] = [...(grouped[key] ?? []), token];\n        });\n      }\n      return grouped;\n    });\n\n    return () => {\n      if (groupFn.value) {\n        return (\n          <Collapse\n            class=\"token-panel-pro-grouped-map-collapse\"\n            activeKey={Object.keys(groupedTokens.value)}\n            expandIconPosition=\"end\"\n            expandIcon={({ isActive }) => (\n              <CaretRightOutlined rotate={isActive ? 450 : 360} style={{ fontSize: '12px' }} />\n            )}\n          >\n            {(group.value.mapTokenGroups ?? Object.keys(groupedTokens.value)).map(key => (\n              <Panel key={key} header={(locale.value as any)[key] ?? ''}>\n                <MapTokenCollapseContent\n                  mapTokens={groupedTokens.value[key]}\n                  theme={theme.value}\n                  selectedTokens={selectedTokens.value}\n                  onTokenSelect={props.onTokenSelect}\n                  type={group.value.type}\n                />\n              </Panel>\n            ))}\n          </Collapse>\n        );\n      }\n\n      if (group.value.groups) {\n        return (\n          <Collapse\n            class=\"token-panel-pro-grouped-map-collapse\"\n            activeKey={group.value.groups.map(item => item.key)}\n            expandIconPosition=\"end\"\n            expandIcon={({ isActive }) => (\n              <CaretRightOutlined rotate={isActive ? 450 : 360} style={{ fontSize: '12px' }} />\n            )}\n          >\n            {group.value.groups.map(item => (\n              <Panel key={item.key} header={item.name}>\n                <MapTokenCollapseContent\n                  mapTokens={item.mapToken}\n                  theme={theme.value}\n                  selectedTokens={selectedTokens.value}\n                  onTokenSelect={props.onTokenSelect}\n                  type={item.type}\n                />\n              </Panel>\n            ))}\n          </Collapse>\n        );\n      }\n\n      return (\n        <MapTokenCollapseContent\n          mapTokens={group.value.mapToken ?? []}\n          theme={theme.value}\n          selectedTokens={selectedTokens.value}\n          onTokenSelect={props.onTokenSelect}\n          type={group.value.type}\n        />\n      );\n    };\n  },\n});\n\nconst groupMapToken = (token: string): string => {\n  if (token.startsWith('colorFill')) {\n    return 'fill';\n  }\n  if (token.startsWith('colorBorder') || token.startsWith('colorSplit')) {\n    return 'border';\n  }\n  if (token.startsWith('colorBg')) {\n    return 'background';\n  }\n  if (token.startsWith('colorText')) {\n    return 'text';\n  }\n  return '';\n};\n\nexport type ColorTokenContentProps = {\n  category: TokenCategory<string>;\n  theme: MutableTheme;\n  selectedTokens?: SelectedToken;\n  infoFollowPrimary?: boolean;\n  activeGroup: string;\n  onTokenSelect?: (token: string | string[], type: keyof SelectedToken) => void;\n  onInfoFollowPrimaryChange?: (value: boolean) => void;\n  onActiveGroupChange: (value: string) => void;\n};\n\nconst TokenContent = defineComponent({\n  name: 'TokenContent',\n  inheritAttrs: false,\n  props: {\n    category: { type: Object as PropType<TokenCategory<string>> },\n    theme: { type: Object as PropType<MutableTheme> },\n    selectedTokens: { type: Object as PropType<SelectedToken> },\n    infoFollowPrimary: { type: Boolean },\n    activeGroup: { type: String },\n    onTokenSelect: {\n      type: Function as PropType<(token: string | string[], type: keyof SelectedToken) => void>,\n    },\n    onInfoFollowPrimaryChange: {\n      type: Function as PropType<(value: boolean) => void>,\n    },\n    onActiveGroupChange: {\n      type: Function as PropType<(value: string) => void>,\n    },\n  },\n  emits: ['update:activeGroup'],\n  setup(props, { attrs, emit }) {\n    const { category, theme, selectedTokens, infoFollowPrimary, activeGroup } = toRefs(props);\n\n    const curActiveGroup = ref('');\n\n    watch(\n      activeGroup,\n      val => {\n        curActiveGroup.value = val;\n      },\n      { immediate: true },\n    );\n\n    watch(curActiveGroup, val => {\n      props.onActiveGroupChange?.(val);\n      emit('update:activeGroup', val);\n    });\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const grouped = ref<boolean>(true);\n    const locale = useInjectLocaleContext();\n\n    const switchAlgorithm = (themeStr: 'dark' | 'compact') => () => {\n      let newAlgorithm = theme.value.config.algorithm;\n      if (!newAlgorithm) {\n        newAlgorithm = themeMap[themeStr];\n      } else if (Array.isArray(newAlgorithm)) {\n        newAlgorithm = newAlgorithm.includes(themeMap[themeStr])\n          ? newAlgorithm.filter(item => item !== themeMap[themeStr])\n          : [...newAlgorithm, themeMap[themeStr]];\n      } else {\n        newAlgorithm =\n          newAlgorithm === themeMap[themeStr] ? undefined : [newAlgorithm, themeMap[themeStr]];\n      }\n      theme.value.onThemeChange?.({ ...theme.value.config, algorithm: newAlgorithm }, [\n        'config',\n        'algorithm',\n      ]);\n    };\n\n    const isLeftChecked = (str: ThemeCode) => {\n      if (!theme.value.config.algorithm) {\n        return true;\n      }\n      return Array.isArray(theme.value.config.algorithm)\n        ? !theme.value.config.algorithm.includes(themeMap[str])\n        : theme.value.config.algorithm !== themeMap[str];\n    };\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames(hashId.value, attrs.class, 'token-panel-pro-color')}>\n          <div class=\"token-panel-pro-color-seeds\">\n            <div class=\"token-panel-pro-color-themes\">\n              <span style={{ marginRight: '12px' }}>\n                {locale.value._lang === 'zh-CN' ? category.value.name : category.value.nameEn}\n              </span>\n              {category.value.nameEn === 'Color' && (\n                <IconSwitch\n                  onChange={switchAlgorithm('dark')}\n                  leftChecked={isLeftChecked('dark')}\n                  v-slots={{\n                    leftIcon: () => <Light />,\n                    rightIcon: () => <DarkTheme />,\n                  }}\n                  style={{ marginLeft: 'auto' }}\n                />\n              )}\n\n              {category.value.nameEn === 'Size' && (\n                <IconSwitch\n                  onChange={switchAlgorithm('compact')}\n                  leftChecked={isLeftChecked('compact')}\n                  v-slots={{\n                    leftIcon: () => <ExpandOutlined />,\n                    rightIcon: () => <CompactTheme />,\n                  }}\n                  style={{ marginLeft: 'auto' }}\n                />\n              )}\n            </div>\n            <ConfigProvider\n              theme={{\n                token: {\n                  colorBorder: '#f0f0f0',\n                },\n              }}\n            >\n              <Collapse\n                class=\"token-panel-pro-token-collapse\"\n                expandIconPosition={'end'}\n                ghost\n                accordion\n                v-model={[curActiveGroup.value, 'activeKey']}\n                v-slots={{\n                  expandIcon: ({ isActive }) => (\n                    <CaretRightOutlined\n                      rotate={isActive ? 450 : 360}\n                      style={{ fontSize: '12px' }}\n                    />\n                  ),\n                }}\n              >\n                {category.value.groups.map((group, index) => {\n                  return (\n                    <Panel\n                      header={\n                        <span style={{ fontWeight: 500 }}>\n                          {locale.value._lang === 'zh-CN' ? group.name : group.nameEn}\n                        </span>\n                      }\n                      key={group.key}\n                    >\n                      <div>\n                        <div class=\"token-panel-pro-token-collapse-description\">\n                          {locale.value._lang === 'zh-CN' ? group.desc : group.descEn}\n                        </div>\n                        {group.seedToken?.map(seedToken => (\n                          <div key={seedToken} class=\"token-panel-pro-token-collapse-seed-block\">\n                            <div style={{ marginRight: 'auto' }}>\n                              <div class=\"token-panel-pro-token-collapse-subtitle\">\n                                <span style={{ fontSize: '12px' }}>Seed Token</span>\n                                <Tooltip\n                                  placement=\"topLeft\"\n                                  arrowPointAtCenter\n                                  title={\n                                    locale.value._lang === 'zh-CN'\n                                      ? (tokenMeta as any)[seedToken]?.desc\n                                      : (tokenMeta as any)[seedToken]?.descEn\n                                  }\n                                >\n                                  <QuestionCircleOutlined\n                                    style={{ fontSize: '14px', marginLeft: '8px' }}\n                                  />\n                                </Tooltip>\n                              </div>\n                              <div>\n                                <span class=\"token-panel-pro-token-collapse-seed-block-name-cn\">\n                                  {locale.value._lang === 'zh-CN'\n                                    ? (tokenMeta as any)[seedToken]?.name\n                                    : (tokenMeta as any)[seedToken]?.nameEn}\n                                </span>\n                                {seedToken === 'colorInfo' && (\n                                  <Checkbox\n                                    style={{ marginLeft: '12px' }}\n                                    checked={infoFollowPrimary.value}\n                                    onChange={e =>\n                                      props.onInfoFollowPrimaryChange(e.target.checked)\n                                    }\n                                  >\n                                    {locale.value.followPrimary}\n                                  </Checkbox>\n                                )}\n                              </div>\n                            </div>\n                            <SeedTokenPreview\n                              theme={theme.value}\n                              tokenName={seedToken}\n                              disabled={seedToken === 'colorInfo' && infoFollowPrimary.value}\n                            />\n                          </div>\n                        ))}\n                        {(group.mapToken || group.groups) && (\n                          <div style={{ marginTop: '16px', marginBottom: '24px' }}>\n                            <div\n                              class=\"token-panel-pro-token-collapse-subtitle\"\n                              style={{\n                                marginBottom: '10px',\n                                display: 'flex',\n                                alignItems: 'center',\n                              }}\n                            >\n                              <span>Map Token</span>\n                              <Tooltip\n                                placement=\"topLeft\"\n                                arrowPointAtCenter\n                                title=\"梯度变量（Map Token） 是基于 Seed 派生的梯度变量，我们精心设计的梯度变量模型具有良好的视觉设计语义，可在亮暗色模式切换时保证视觉梯度的一致性。\"\n                              >\n                                <QuestionCircleOutlined\n                                  style={{ fontSize: '14px', marginLeft: '8px' }}\n                                />\n                              </Tooltip>\n                              {group.mapTokenGroups && (\n                                <div\n                                  style={{\n                                    marginLeft: 'auto',\n                                    display: 'flex',\n                                    alignItems: 'center',\n                                  }}\n                                >\n                                  <label style={{ marginRight: '4px' }}>\n                                    {locale.value.groupView}\n                                  </label>\n                                  <Switch\n                                    checked={grouped.value}\n                                    onChange={v => (grouped.value = v as boolean)}\n                                    size=\"small\"\n                                  />\n                                </div>\n                              )}\n                            </div>\n                            <MapTokenCollapse\n                              group={group}\n                              theme={theme.value}\n                              selectedTokens={selectedTokens.value}\n                              onTokenSelect={props.onTokenSelect}\n                              groupFn={\n                                group.mapTokenGroups && grouped.value ? groupMapToken : undefined\n                              }\n                            />\n                          </div>\n                        )}\n                        {index < category.value.groups.length - 1 && (\n                          <Button\n                            type=\"primary\"\n                            style={{ borderRadius: '4px', marginBottom: '12px' }}\n                            onClick={() => {\n                              curActiveGroup.value = category.value.groups[index + 1]?.key;\n                            }}\n                          >\n                            {locale.value.next}\n                          </Button>\n                        )}\n                      </div>\n                    </Panel>\n                  );\n                })}\n              </Collapse>\n            </ConfigProvider>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default TokenContent;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/TokenDetail.tsx",
    "content": "import { Tooltip } from 'ant-design-vue';\nimport type { MutableTheme, TokenValue } from '../interface';\nimport tokenMeta from 'ant-design-vue/es/version/token-meta.json';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType } from 'vue';\nimport { defineComponent, computed, toRefs } from 'vue';\nimport { useInjectLocaleContext } from '../locale';\nimport { mapRelatedAlias } from '../meta/TokenRelation';\nimport TokenInput from '../TokenInput';\nimport deepUpdateObj from '../utils/deepUpdateObj';\nimport getDesignToken from '../utils/getDesignToken';\nimport getValueByPath from '../utils/getValueByPath';\nimport makeStyle from '../utils/makeStyle';\nimport { getRelatedComponents } from '../utils/statistic';\n\nconst useStyle = makeStyle('TokenDetail', token => ({\n  '.token-panel-token-detail': {\n    '.token-panel-pro-token-collapse-map-collapse-token-description': {\n      color: token.colorTextPlaceholder,\n      marginBottom: 8,\n      fontSize: 12,\n    },\n\n    '.token-panel-pro-token-collapse-map-collapse-token-usage-tag-container': {\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      color: token.colorTextSecondary,\n    },\n\n    '.token-panel-pro-token-collapse-map-collapse-token-usage-tag': {\n      display: 'inline-block',\n      marginInlineEnd: 8,\n      borderRadius: 4,\n      height: 20,\n      padding: '0 8px',\n      fontSize: 12,\n      lineHeight: '20px',\n      backgroundColor: 'rgba(0,0,0,0.015)',\n    },\n\n    '.token-panel-pro-token-collapse-map-collapse-token-inputs': {\n      padding: '8px 10px',\n      backgroundColor: 'rgba(0,0,0,0.02)',\n      marginTop: 12,\n      '> *:not(:last-child)': {\n        marginBottom: 8,\n      },\n    },\n  },\n}));\n\nexport type TokenDetailProps = {\n  themes: MutableTheme[];\n  path: string[];\n  tokenName: string;\n};\n\nconst TokenDetail = defineComponent({\n  name: 'TokenDetail',\n  inheritAttrs: false,\n  props: {\n    themes: { type: Array as PropType<MutableTheme[]> },\n    path: { type: Array as PropType<string[]> },\n    tokenName: { type: String },\n  },\n  setup(props, { attrs }) {\n    const { themes, path, tokenName } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n    const tokenPath = computed(() => [...path.value, tokenName.value]);\n    const locale = useInjectLocaleContext();\n\n    const handleTokenChange = (theme: MutableTheme) => (value: TokenValue) => {\n      theme.onThemeChange?.(deepUpdateObj(theme.config, [...path.value, tokenName.value], value), [\n        ...path.value,\n        tokenName.value,\n      ]);\n    };\n\n    const relatedComponents = computed(() => {\n      return getRelatedComponents([\n        tokenName.value,\n        ...((mapRelatedAlias as any)[tokenName.value] ?? []),\n      ]);\n    });\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames(hashId.value, attrs.class, 'token-panel-token-detail')}>\n          <div class=\"token-panel-pro-token-collapse-map-collapse-token-description\">\n            {\n              (tokenMeta as any)[tokenName.value]?.[\n                locale.value._lang === 'zh-CN' ? 'desc' : 'descEn'\n              ]\n            }\n          </div>\n          {relatedComponents.value.length > 0 && (\n            <Tooltip title={getRelatedComponents(tokenName.value).join(', ')} placement=\"topLeft\">\n              <div class=\"token-panel-pro-token-collapse-map-collapse-token-usage-tag-container\">\n                {relatedComponents.value.map(item => (\n                  <span\n                    key={item}\n                    class=\"token-panel-pro-token-collapse-map-collapse-token-usage-tag\"\n                  >\n                    {item}\n                  </span>\n                ))}\n              </div>\n            </Tooltip>\n          )}\n          <div class=\"token-panel-pro-token-collapse-map-collapse-token-inputs\">\n            {themes.value.map(themeItem => {\n              return (\n                <div key={themeItem.key}>\n                  <TokenInput\n                    hideTheme={themes.value.length === 1}\n                    theme={themeItem}\n                    canReset={themeItem.getCanReset?.(tokenPath.value)}\n                    onReset={() => themeItem.onReset?.(tokenPath.value)}\n                    onChange={handleTokenChange(themeItem)}\n                    value={\n                      getValueByPath(themeItem.config, tokenPath.value) ??\n                      (getDesignToken(themeItem.config) as any)[tokenName.value]\n                    }\n                  />\n                </div>\n              );\n            })}\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n\nexport default TokenDetail;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/TokenPreview.tsx",
    "content": "import type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport type { PropType } from 'vue';\nimport { toRefs, defineComponent } from 'vue';\n\nimport getColorBgImg from '../utils/getColorBgImg';\nimport getDesignToken from '../utils/getDesignToken';\n\nexport type TokenPreviewProps = {\n  theme: ThemeConfig;\n  tokenName: string;\n  type?: string;\n};\n\nconst TokenPreview = defineComponent({\n  name: 'TokenPreview',\n  props: {\n    theme: { type: Object as PropType<ThemeConfig> },\n    tokenName: { type: String },\n    type: { type: String },\n  },\n  setup(props) {\n    const { theme, tokenName, type } = toRefs(props);\n\n    return () => {\n      if (type.value === 'Color') {\n        return (\n          <div\n            style={{\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n            }}\n          >\n            <div\n              style={{\n                height: '100%',\n                width: '100%',\n                backgroundColor: (getDesignToken(theme.value) as any)[tokenName.value],\n                transition: 'background-color 0.2s',\n              }}\n            />\n          </div>\n        );\n      }\n      if (type.value === 'FontSize') {\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              display: 'flex',\n              alignItems: 'center',\n              justifyContent: 'center',\n              overflow: 'hidden',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n              fontSize: `${(getDesignToken(theme.value) as any)[tokenName.value]}px`,\n              fontWeight: 700,\n            }}\n          >\n            <span>Aa</span>\n          </div>\n        );\n      }\n      if (type.value === 'LineHeight') {\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              display: 'flex',\n              alignItems: 'center',\n              justifyContent: 'center',\n              fontWeight: 700,\n              overflow: 'hidden',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n            }}\n          >\n            <span\n              style={{\n                fontSize: `${\n                  (getDesignToken(theme.value) as any)[\n                    tokenName.value.replace('lineHeight', 'fontSize')\n                  ]\n                }px`,\n                lineHeight: (getDesignToken(theme.value) as any)[tokenName.value],\n                background: '#fff2f0',\n                paddingInline: '8px',\n              }}\n            >\n              Aa\n            </span>\n          </div>\n        );\n      }\n      if (type.value === 'Margin') {\n        const margin = (getDesignToken(theme.value) as any)[tokenName.value];\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              overflow: 'hidden',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n            }}\n          >\n            <div\n              style={{\n                width: '100%',\n                height: '100%',\n                overflow: 'hidden',\n                background: '#fff1b8',\n                transform: 'translate(10%, 10%) scale(0.8)',\n              }}\n            >\n              <div\n                style={{\n                  marginLeft: `${margin}px`,\n                  marginTop: `${margin}px`,\n                  width: `calc(100% - ${margin}px)`,\n                  height: `calc(100% - ${margin}px)`,\n                  background: '#bae0ff',\n                }}\n              />\n            </div>\n          </div>\n        );\n      }\n      if (type.value === 'Padding') {\n        const padding = `${(getDesignToken(theme.value) as any)[tokenName.value]}px`;\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              overflow: 'hidden',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n            }}\n          >\n            <div\n              style={{\n                width: '100%',\n                height: '100%',\n                overflow: 'hidden',\n                background: '#d9f7be',\n                transform: 'translate(10%, 10%) scale(0.8)',\n                paddingLeft: padding,\n                paddingTop: padding,\n              }}\n            >\n              <div\n                style={{\n                  width: `100%`,\n                  height: `100%`,\n                  background: '#bae0ff',\n                }}\n              />\n            </div>\n          </div>\n        );\n      }\n      if (type.value === 'BorderRadius') {\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              overflow: 'hidden',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n            }}\n          >\n            <div\n              style={{\n                width: '100%',\n                height: '100%',\n                overflow: 'hidden',\n                transform: 'translate(30%, 30%)',\n                border: '2px solid rgba(0,0,0,0.45)',\n                background: '#fff',\n                borderRadius: `${(getDesignToken(theme.value) as any)[tokenName.value]}px`,\n              }}\n            />\n          </div>\n        );\n      }\n      if (type.value === 'BoxShadow') {\n        return (\n          <div\n            style={{\n              width: '100%',\n              height: '100%',\n              position: 'relative',\n              overflow: 'hidden',\n              display: 'flex',\n              alignItems: 'center',\n              justifyContent: 'center',\n              background: `${getColorBgImg(false)} 0% 0% / 28px`,\n            }}\n          >\n            <div\n              style={{\n                width: '60%',\n                height: '50%',\n                borderRadius: '6px',\n                background: '#fff',\n                border: '1px solid #d9d9d9',\n                boxShadow: (getDesignToken(theme.value) as any)[tokenName.value],\n              }}\n            />\n          </div>\n        );\n      }\n      return null;\n    };\n  },\n});\n\nexport default TokenPreview;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/token-panel-pro/index.tsx",
    "content": "import { Tabs } from 'ant-design-vue';\nimport type { Theme, SelectedToken } from '../interface';\nimport classNames from 'ant-design-vue/es/_util/classNames';\nimport type { PropType } from 'vue';\nimport { toRefs, defineComponent, watchEffect, computed, ref } from 'vue';\nimport { useInjectLocaleContext } from '../locale';\nimport { tokenCategory } from '../meta';\nimport type { TokenGroup } from '../meta/interface';\nimport makeStyle from '../utils/makeStyle';\nimport AliasPanel from './AliasPanel';\nimport TokenContent from './TokenContent';\n\nconst { TabPane } = Tabs;\n\nconst useStyle = makeStyle('TokenPanelPro', token => ({\n  '.token-panel-pro': {\n    height: '100%',\n    display: 'flex',\n    borderInlineEnd: `1px solid ${token.colorBorderSecondary}`,\n    [`.token-panel-pro-tabs${token.rootCls}-tabs`]: {\n      height: '100%',\n      overflow: 'auto',\n      [`${token.rootCls}-tabs-content`]: {\n        height: '100%',\n        [`${token.rootCls}-tabs-tabpane`]: {\n          height: '100%',\n        },\n      },\n    },\n  },\n}));\n\nexport type TokenPanelProProps = {\n  theme: Theme;\n  selectedTokens?: SelectedToken;\n  infoFollowPrimary?: boolean;\n  aliasOpen?: boolean;\n  activeTheme?: string;\n  onTokenSelect?: (token: string | string[], type: keyof SelectedToken) => void;\n  onInfoFollowPrimaryChange?: (value: boolean) => void;\n  onAliasOpenChange?: (value: boolean) => void;\n};\n\nconst TokenPanelPro = defineComponent({\n  name: 'TokenPanelPro',\n  inheritAttrs: false,\n  props: {\n    theme: { type: Object as PropType<Theme> },\n    selectedTokens: { type: Object as PropType<SelectedToken> },\n    infoFollowPrimary: { type: Boolean },\n    aliasOpen: { type: Boolean },\n    activeTheme: { type: String },\n    onTokenSelect: {\n      type: Function as PropType<(token: string | string[], type: keyof SelectedToken) => void>,\n    },\n    onInfoFollowPrimaryChange: { type: Function as PropType<(value: boolean) => void> },\n    onAliasOpenChange: { type: Function as PropType<(value: boolean) => void> },\n  },\n  setup(props, { attrs }) {\n    const { theme, selectedTokens, infoFollowPrimary, aliasOpen } = toRefs(props);\n\n    const [wrapSSR, hashId] = useStyle();\n\n    const activeGroup = ref<string>('brandColor');\n    const locale = useInjectLocaleContext();\n\n    const activeCategory = computed(() => {\n      return tokenCategory.reduce<TokenGroup<string> | undefined>((result, category) => {\n        return result ?? category.groups.find(group => group.key === activeGroup.value);\n      }, undefined);\n    });\n\n    watchEffect(() => {\n      props.onTokenSelect(activeCategory.value?.seedToken ?? [], 'seed');\n    });\n\n    return () => {\n      return wrapSSR(\n        <div {...attrs} class={classNames(hashId.value, attrs.class, 'token-panel-pro')}>\n          <Tabs\n            defaultActiveKey=\"color\"\n            tabBarGutter={32}\n            tabBarStyle={{ padding: '0 16px', margin: 0 }}\n            style={{ height: '100%', flex: '0 0 540px' }}\n            class=\"token-panel-pro-tabs\"\n            onChange={key => {\n              activeGroup.value =\n                tokenCategory.find(category => category.nameEn === key)?.groups[0].key ?? '';\n            }}\n          >\n            {tokenCategory.map(category => (\n              <TabPane\n                key={category.nameEn}\n                tab={locale.value._lang === 'zh-CN' ? category.name : category.nameEn}\n              >\n                <TokenContent\n                  category={category}\n                  theme={theme.value}\n                  selectedTokens={selectedTokens.value}\n                  onTokenSelect={props.onTokenSelect}\n                  infoFollowPrimary={infoFollowPrimary.value}\n                  onInfoFollowPrimaryChange={props.onInfoFollowPrimaryChange}\n                  v-model={[activeGroup.value, 'activeGroup']}\n                />\n              </TabPane>\n            ))}\n          </Tabs>\n          <AliasPanel\n            open={aliasOpen.value}\n            description={activeCategory.value?.aliasTokenDescription}\n            onOpenChange={props.onAliasOpenChange}\n            activeSeeds={activeCategory.value?.seedToken}\n            theme={theme.value}\n            style={{ flex: aliasOpen.value ? '0 0 320px' : 'none', width: 0 }}\n            selectedTokens={selectedTokens.value}\n            onTokenSelect={props.onTokenSelect}\n          />\n        </div>,\n      );\n    };\n  },\n});\n\nexport default TokenPanelPro;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/classifyToken.ts",
    "content": "import type { GlobalToken } from 'ant-design-vue/es/theme/interface';\nimport type { TokenValue } from '../interface';\n\nfunction defineTokenType<T extends string>(types: T[]) {\n  return types;\n}\n\nexport const TOKEN_SORTS = defineTokenType([\n  'seed',\n  'colorCommon',\n  'colorText',\n  'colorBg',\n  'colorFill',\n  'colorSplit',\n  'font',\n  'radius',\n  'space',\n  'screen',\n  'line',\n  'motion',\n  'control',\n  'others',\n]);\n\nexport type TokenType = (typeof TOKEN_SORTS)[number];\n\nexport function getTypeOfToken(tokenName: string): TokenType {\n  if (tokenName.startsWith('color')) {\n    if (\n      tokenName.startsWith('colorLink') ||\n      tokenName.startsWith('colorText') ||\n      tokenName.startsWith('colorIcon') ||\n      tokenName.startsWith('colorPlaceholder') ||\n      tokenName.startsWith('colorIcon')\n    ) {\n      return 'colorText';\n    }\n    if (tokenName.startsWith('colorBg') || tokenName.startsWith('colorPopupBg')) {\n      return 'colorBg';\n    }\n    if (tokenName.startsWith('colorBorder') || tokenName.startsWith('colorSplit')) {\n      return 'colorSplit';\n    }\n    if (tokenName.startsWith('colorFill')) {\n      return 'colorFill';\n    }\n    return 'colorCommon';\n  }\n  if (tokenName.startsWith('font')) {\n    return 'font';\n  }\n  if (tokenName.startsWith('screen')) {\n    return 'screen';\n  }\n  if (tokenName.startsWith('line')) {\n    return 'line';\n  }\n  if (tokenName.startsWith('motion')) {\n    return 'motion';\n  }\n  if (tokenName.startsWith('borderRadius')) {\n    return 'radius';\n  }\n  if (tokenName.startsWith('control')) {\n    return 'control';\n  }\n  if (tokenName.startsWith('margin') || tokenName.startsWith('padding')) {\n    return 'space';\n  }\n  return 'others';\n}\n\nexport const classifyToken = (token: Record<string, TokenValue>): Record<string, string[]> => {\n  const groupedToken: Record<string, string[]> = {};\n  Object.keys(token || {})\n    .sort((a, b) => a.localeCompare(b))\n    .forEach(key => {\n      const type = getTypeOfToken(key as keyof GlobalToken);\n      if (!groupedToken[type]) {\n        groupedToken[type] = [];\n      }\n      groupedToken[type].push(key);\n    });\n  return groupedToken;\n};\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/deepUpdateObj.ts",
    "content": "const deepUpdateObj = (obj: any, path: string[], value: any): any => {\n  if (path.length === 0) {\n    return obj;\n  }\n  if (path.length === 1) {\n    if (value === null || value === undefined) {\n      const newObj = { ...obj };\n      delete newObj[path[0]];\n      return newObj;\n    }\n    return {\n      ...obj,\n      [path[0]]: value,\n    };\n  }\n  return {\n    ...obj,\n    [path[0]]: deepUpdateObj(obj[path[0]] ?? {}, path.slice(1), value),\n  };\n};\n\nexport default deepUpdateObj;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/getColorBgImg.ts",
    "content": "const getColorBgImg = (dark?: boolean) => {\n  return dark\n    ? 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAAZUlEQVRIDe2VMQoAMAgDa9/g/1/oIzrpZBCh2dLFkkoDF0Fz99OdiOjks+2/7S8fRRmMMIVoRGSoYzvvqF8ZIMKlC1GhQBc6IkPzq32QmdAzkEGihpWOSPsAss8HegYySNSw0hE9WQ4StafZFqkAAAAASUVORK5CYII=)'\n    : 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAFpJREFUWAntljEKADAIA23p6v//qQ+wfUEcCu1yriEgp0FHRJSJcnehmmWm1Dv/lO4HIg1AAAKjTqm03ea88zMCCEDgO4HV5bS757f+7wRoAAIQ4B9gByAAgQ3pfiDmXmAeEwAAAABJRU5ErkJggg==)';\n};\n\nexport default getColorBgImg;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/getDesignToken.ts",
    "content": "import type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';\nimport type { GlobalToken, MapToken } from 'ant-design-vue/es/theme/interface';\nimport defaultMap from 'ant-design-vue/es/theme/themes/default';\nimport seed from 'ant-design-vue/es/theme/themes/seed';\nimport formatToken from 'ant-design-vue/es/theme/util/alias';\n\nexport default function getDesignToken(config: ThemeConfig = {}): GlobalToken {\n  const seedToken = { ...seed, ...config.token };\n  const mapFn = config.algorithm ?? defaultMap;\n  const mapToken = Array.isArray(mapFn)\n    ? mapFn.reduce<MapToken>((result, fn) => fn(seedToken, result), undefined as any)\n    : mapFn(seedToken);\n  const mergedMapToken = {\n    ...mapToken,\n    ...config.components,\n    override: config.token ?? {},\n  };\n  return formatToken(mergedMapToken);\n}\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/getValueByPath.ts",
    "content": "export default function getValueByPath(obj: any, path: string[]): any {\n  if (!obj) {\n    return undefined;\n  }\n  return path.reduce((prev, key) => {\n    if (prev) {\n      return prev[key];\n    }\n    return undefined;\n  }, obj);\n}\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/isColor.ts",
    "content": "export default function isColor(str: string) {\n  return str.startsWith('rgb') || str.startsWith('#');\n}\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/makeStyle.tsx",
    "content": "import type { CSSInterpolation } from 'ant-design-vue/es/_util/cssinjs';\nimport { useStyleRegister } from 'ant-design-vue/es/_util/cssinjs';\nimport { theme as antdTheme } from 'ant-design-vue';\nimport type { GlobalToken } from 'ant-design-vue/es/theme/interface';\nimport { mergeToken } from 'ant-design-vue/es/theme/internal';\nimport { computed } from 'vue';\nimport useConfigInject from 'ant-design-vue/es/config-provider/hooks/useConfigInject';\n\nimport type { UseComponentStyleResult } from 'ant-design-vue/es/theme/internal';\nconst makeStyle = (\n  path: string,\n  styleFn: (token: GlobalToken & { rootCls: string }) => CSSInterpolation,\n) => {\n  return (): UseComponentStyleResult => {\n    const { theme, token, hashId } = antdTheme.useToken();\n\n    const { getPrefixCls } = useConfigInject('', {});\n\n    const rootCls = getPrefixCls();\n\n    const componentInfo = computed(() => {\n      return {\n        theme: theme.value,\n        token: token.value,\n        hashId: hashId.value,\n        path: [path],\n      };\n    });\n    return [\n      useStyleRegister(componentInfo, () => {\n        const mergedToken = mergeToken<GlobalToken & { rootCls: string }>(token.value, {\n          rootCls: `.${rootCls}`,\n        });\n        const styleInterpolation = styleFn(mergedToken);\n\n        return [styleInterpolation];\n      }),\n      hashId,\n    ];\n  };\n};\n\nexport default makeStyle;\n"
  },
  {
    "path": "site/src/components/antdv-token-previewer/utils/statistic.ts",
    "content": "import tokenStatistic from 'ant-design-vue/es/version/token.json';\n\nconst tokenRelatedComponents: {\n  [key in string]?: string[];\n} = {};\n\nconst getRelatedComponentsSingle = (token: string): string[] => {\n  if (!tokenRelatedComponents[token]) {\n    tokenRelatedComponents[token] = Object.entries(tokenStatistic)\n      .filter(([, tokens]) => {\n        return ((tokens as any).global as string[]).includes(token);\n      })\n      .map(([component]) => component);\n  }\n  return tokenRelatedComponents[token] ?? [];\n};\n\nexport const getRelatedComponents = (token: string | string[]): string[] => {\n  const mergedTokens = Array.isArray(token) ? token : [token];\n  return Array.from(\n    new Set(\n      mergedTokens.reduce<string[]>((result, item) => {\n        return result.concat(getRelatedComponentsSingle(item));\n      }, []),\n    ),\n  );\n};\n\nexport const getComponentToken = (component: string) =>\n  tokenStatistic[component] as { component?: Record<string, any>; global: string[] };\n"
  },
  {
    "path": "site/src/components/demoContainer.vue",
    "content": "<template>\n  <div>\n    <demo-box :jsfiddle=\"jsfiddle\">\n      <template #component>\n        <slot />\n      </template>\n      <template #description>\n        <div class=\"demo-description\" v-html=\"cnHtml\" />\n      </template>\n      <template #us-description>\n        <div class=\"demo-description\" v-html=\"usHtml\" />\n      </template>\n      <template #code>\n        {{ codeStr }}\n      </template>\n    </demo-box>\n  </div>\n</template>\n\n<script>\nimport marked from 'marked';\nimport Prism from 'prismjs';\n// import 'prismjs/components/prism-jsx.min.js';\n// import 'prismjs/components/prism-bash.min.js';\nconst replaceDelimiters = function (str) {\n  return str.replace(/({{|}})/g, '<span>$1</span>');\n};\nconst renderHighlight = function (str, lang) {\n  if (!(lang && Prism.languages[lang])) {\n    return '';\n  }\n\n  try {\n    return replaceDelimiters(Prism.highlight(str, Prism.languages[lang], lang));\n  } catch (err) {}\n};\nconst renderer = new marked.Renderer();\nrenderer.heading = function (text, level) {\n  return (\n    '<h' + level + ' id=\"' + text.replace(/[^\\w]+/g, '-') + '\">' + text + '</h' + level + '>\\n'\n  );\n};\nmarked.setOptions({\n  renderer,\n  gfm: true,\n  tables: true,\n  breaks: true,\n  pedantic: true,\n  sanitize: true,\n  smartLists: true,\n  smartypants: true,\n  html: true,\n  highlight: renderHighlight,\n});\nconst cnReg = /<cn>([\\S\\s\\t]*?)<\\/cn>/;\nconst usReg = /<us>([\\S\\s\\t]*?)<\\/us>/;\nexport default {\n  name: 'DemoContainer',\n  props: ['code'],\n  data() {\n    const cn = this.code.match(cnReg) || [];\n    const us = this.code.match(usReg) || [];\n    const cnHtml = marked(cn[1].trim());\n    const usHtml = marked(us[1].trim());\n    const sourceCode = this.code.replace(cn[0], '').replace(us[0], '').trim();\n    const codeHtml = marked('```html\\n' + sourceCode + '```');\n    return {\n      codeStr: window.btoa(unescape(encodeURIComponent(codeHtml))),\n      cnHtml,\n      usHtml,\n      jsfiddle: {\n        sourceCode: window.btoa(unescape(encodeURIComponent(sourceCode))),\n        cn: cn[1].trim(),\n        us: us[1].trim(),\n      },\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "site/src/components/demoSort.jsx",
    "content": "import { defineComponent, inject } from 'vue';\nimport { GLOBAL_CONFIG } from '../SymbolKey';\n\nexport default defineComponent({\n  props: {\n    cols: {\n      type: [Number, String],\n      default: 2,\n    },\n  },\n  setup() {\n    return {\n      globalConfig: inject(GLOBAL_CONFIG),\n    };\n  },\n  render() {\n    const { cols, globalConfig, $slots } = this;\n    // 手机访问强制开启单行 demo 模式\n    const isSingleCol = cols === 1 || globalConfig.isMobile.value;\n    const leftChildren = [];\n    const rightChildren = [];\n    const children = $slots.default?.() || [];\n    children.forEach((demo, index) => {\n      if (index % 2 === 0 || isSingleCol) {\n        leftChildren.push(demo);\n      } else {\n        rightChildren.push(demo);\n      }\n    });\n    return (\n      <a-row gutter={16}>\n        <a-col\n          span={isSingleCol ? 24 : 12}\n          class={isSingleCol ? 'code-boxes-col-1-1' : 'code-boxes-col-2-1'}\n        >\n          {leftChildren}\n        </a-col>\n        {isSingleCol ? null : (\n          <a-col class=\"code-boxes-col-2-1\" span={12}>\n            {rightChildren}\n          </a-col>\n        )}\n      </a-row>\n    );\n  },\n});\n"
  },
  {
    "path": "site/src/components/rice/CarbonAds.vue",
    "content": "<template>\n  <div id=\"carbon-ads\" :class=\"isMobile ? 'carbon-mobile' : ''\" />\n</template>\n<script>\nconst carbonUrls = {\n  'www.antdv.com': '//cdn.carbonads.com/carbon.js?serve=CK7DL2JW&placement=antdvcom',\n  // 'tangjinzhou.gitee.io':\n  //   '//cdn.carbonads.com/carbon.js?serve=CK7DL2JN&placement=tangjinzhougiteeio',\n  // 'ant-design-vue.gitee.io':\n  //   '//cdn.carbonads.com/carbon.js?serve=CK7DL2JN&placement=antdesignvuegiteeio',\n  'vue.ant.design': '//cdn.carbonads.com/carbon.js?serve=CK7DL2JW&placement=vueantdesign',\n};\nconst carbonUrl =\n  carbonUrls[location.host] ||\n  '//cdn.carbonads.com/carbon.js?serve=CK7DL2JW&placement=vueantdesign';\nexport default {\n  props: {\n    isMobile: Boolean,\n  },\n  watch: {\n    $route(e, t) {\n      const adId = '#carbonads';\n      // if(isGitee) {\n      //   adId = '#cf';\n      // }\n      if (e.path !== t.path && this.$el.querySelector(adId)) {\n        this.$el.innerHTML = '';\n        this.load();\n      }\n      this.adInterval && clearInterval(this.adInterval);\n      this.adInterval = setInterval(() => {\n        if (!this.$el.querySelector(adId)) {\n          this.$el.innerHTML = '';\n          this.load();\n        }\n      }, 20000);\n    },\n  },\n  mounted() {\n    this.load();\n  },\n  methods: {\n    load() {\n      // if(isGitee) {\n      //   axios.get('https://api.codefund.app/properties/162/funder.html?template=horizontal')\n      //   .then(function (response) {\n      //     document.getElementById(\"codefund-ads\").innerHTML = response.data;\n      //   });\n      // } else\n      if (carbonUrl) {\n        const e = document.createElement('script');\n        e.id = '_carbonads_js';\n        e.src = carbonUrl;\n        this.$el.appendChild(e);\n      }\n    },\n  },\n};\n</script>\n<style lang=\"less\">\n#carbon-ads {\n  width: 280px;\n  float: right;\n  margin-top: 75px;\n  position: relative;\n  right: 0;\n  bottom: 0;\n  padding: 0;\n  overflow: hidden;\n  z-index: 9;\n  background-color: #fff;\n  border-radius: 3px;\n  font-size: 13px;\n  background: #f5f5f5;\n  font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;\n}\n#carbonads {\n  overflow: hidden;\n}\n#carbon-ads a {\n  display: inline-block;\n  color: #7f8c8d;\n  font-weight: normal;\n}\n#carbon-ads span {\n  color: #7f8c8d;\n}\n#carbon-ads img {\n  float: left;\n  padding-right: 10px;\n}\n#carbon-ads .carbon-img,\n#carbon-ads .carbon-text {\n  display: block;\n  font-weight: normal;\n  color: #34495e;\n}\n#carbon-ads .carbon-text {\n  padding-top: 6px;\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp: 4;\n  overflow: hidden;\n}\n#carbon-ads .carbon-poweredby {\n  color: #aaa;\n  font-weight: normal;\n  line-height: 1.2;\n  margin-top: 6px;\n}\n#carbon-ads.carbon-mobile {\n  width: 100%;\n  position: relative;\n  right: 0;\n  bottom: 0;\n  padding: 0;\n  margin-bottom: 15px;\n  margin-top: 5px;\n  .carbon-img {\n    float: left;\n    margin-right: 10px;\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/components/rice/GoogleAds.vue",
    "content": "<template>\n  <div v-if=\"false\" id=\"api\" class=\"google-ads\">\n    <ins\n      ref=\"ins\"\n      class=\"adsbygoogle\"\n      style=\"display: block\"\n      data-ad-client=\"ca-pub-4801326429087140\"\n      data-ad-slot=\"7647023136\"\n      data-ad-format=\"auto\"\n      data-full-width-responsive=\"true\"\n    ></ins>\n  </div>\n</template>\n<script>\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  mounted() {\n    // this.load();\n  },\n  methods: {\n    load() {\n      if (this.scriptDom) {\n        this.$el.removeChild(this.scriptDom);\n      }\n      this.$refs.ins.innerHTML = '';\n      const e = document.createElement('script');\n      e.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';\n      e.async = true;\n      this.$el.appendChild(e);\n      this.scriptDom = e;\n      (window.adsbygoogle = window.adsbygoogle || []).push({});\n    },\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/components/rice/GoogleAdsMin.vue",
    "content": "<template>\n  <div\n    style=\"\n      width: 300px;\n      float: right;\n      margin-top: 75px;\n      position: relative;\n      right: 0;\n      bottom: 0;\n      padding: 0;\n      z-index: 9;\n    \"\n  >\n    <ins\n      ref=\"ins\"\n      class=\"adsbygoogle\"\n      style=\"display: inline-block; width: 300px; height: 100px\"\n      data-ad-client=\"ca-pub-4801326429087140\"\n      data-ad-slot=\"2774992529\"\n    ></ins>\n  </div>\n</template>\n<script>\nexport default {\n  mounted() {\n    this.load();\n  },\n  methods: {\n    load() {\n      if (this.scriptDom) {\n        this.$el.removeChild(this.scriptDom);\n      }\n      this.$refs.ins.innerHTML = '';\n      const e = document.createElement('script');\n      e.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';\n      e.async = true;\n      this.$el.appendChild(e);\n      this.scriptDom = e;\n      (window.adsbygoogle = window.adsbygoogle || []).push({});\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "site/src/components/rice/GoogleAdsTop.vue",
    "content": "<template>\n  <div class=\"google-ads\">\n    <ins\n      ref=\"ins\"\n      class=\"adsbygoogle\"\n      data-ad-client=\"ca-pub-4801326429087140\"\n      data-ad-slot=\"2425414214\"\n      style=\"display: inline-block; width: 728px; height: 90px\"\n    ></ins>\n  </div>\n</template>\n<script>\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  mounted() {\n    this.load();\n  },\n  methods: {\n    load() {\n      if (this.scriptDom) {\n        this.$el.removeChild(this.scriptDom);\n      }\n      this.$refs.ins.innerHTML = '';\n      const e = document.createElement('script');\n      e.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';\n      e.async = true;\n      this.$el.appendChild(e);\n      this.scriptDom = e;\n      (window.adsbygoogle = window.adsbygoogle || []).push({});\n    },\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/components/rice/WWAds.vue",
    "content": "<template>\n  <div id=\"rice\">\n    <div class=\"wwads-cn wwads-horizontal\" data-id=\"62\" style=\"max-width: 350px\"></div>\n  </div>\n</template>\n<script>\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  // mounted() {\n  //   // this.load();\n  // },\n  // methods: {\n  //   load() {\n  //     if (this.scriptDom) {\n  //       this.$el.removeChild(this.scriptDom);\n  //     }\n  //     this.$refs.inner.innerHTML = '';\n  //     const e = document.createElement('script');\n  //     e.src = 'https://wwads.cn/js/makemoney.js';\n  //     e.async = true;\n  //     this.$el.appendChild(e);\n  //     this.scriptDom = e;\n  //   },\n  // },\n});\n</script>\n<style scoped>\n#rice {\n  /* width: 180px; */\n  /* position: fixed; */\n  /* z-index: 19; */\n  padding: 10px;\n  border-radius: 3px;\n  font-size: 13px;\n  float: right;\n  /* background-color: red;\n  max-height: 150px; */\n}\n</style>\n"
  },
  {
    "path": "site/src/components/rice/right_bottom_rice.vue",
    "content": "<template>\n  <div v-if=\"isCN\" id=\"right-bottom\">\n    <img v-if=\"isCN\" width=\"150\" :src=\"`https://next.antdv.com/common_rice.png?v=${v}`\" />\n    <div v-if=\"isMobile\" class=\"close\" @click=\"visible = false\">\n      <close-outlined />\n    </div>\n    <!-- <span v-if=\"isCN\">广告</span> -->\n  </div>\n</template>\n\n<script>\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\ndayjs.extend(isBetween);\nimport { CloseOutlined } from '@ant-design/icons-vue';\nconst isEffective = (start, end) => {\n  return dayjs().isBetween(start, end);\n};\nexport default {\n  components: {\n    CloseOutlined,\n  },\n  props: ['isCN', 'isMobile'],\n  data() {\n    return {\n      isEffective,\n      visible: true,\n      v: dayjs().date(),\n      ads: [],\n    };\n  },\n};\n</script>\n\n<style lang=\"less\" scoped>\n#right-bottom {\n  position: fixed;\n  bottom: 10px;\n  right: 10px;\n  width: 150px;\n  .close {\n    position: absolute;\n    text-align: center;\n    top: -8px;\n    right: -8px;\n    font-size: 16px;\n    padding: 15px;\n    color: #6e3041;\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/components/rice/sponsors.vue",
    "content": "<template>\n  <div class=\"snd-ad\" style=\"padding-left: 40px\">\n    <div class=\"sponsorsWrap\">\n      <span v-if=\"!isCN\" class=\"sponsorsTitle\">\n        {{ isCN ? '赞助商' : 'Sponsors' }}\n      </span>\n      <ul>\n        <!-- <li class=\"sponsorsItem\">\n          <a href=\"https://tipe.io/?ref=ant-design-vue\" target=\"_blank\">\n            <img height=\"51\" src=\"https://cdn.tipe.io/tipe/tipe-cat-no-text.svg\" alt=\"tipe\" />\n          </a>\n        </li> -->\n        <li class=\"sponsorsItem\" style=\"padding: 10px 0\">\n          <a-button type=\"primary\" ghost style=\"font-size: 12px\" @click=\"handleClick\">\n            {{ isCN ? '成为赞助商' : 'Become a Sponsor' }}\n          </a-button>\n        </li>\n      </ul>\n    </div>\n    <a-modal v-model:open=\"visible\" title=\"成为赞助商\" @ok=\"visible = false\">\n      如果您有品牌推广、活动推广、招聘推广、社区合作等需求，欢迎联系我们，成为赞助商。\n      <br />\n      您的广告将出现在 And Design Vue 文档所有子页面及 GitHub Readme 等页面。\n      <br />\n      咨询邮箱：\n      <a href=\"mailto:antdv@foxmail.com\">antdv@foxmail.com</a>\n      <br />\n    </a-modal>\n  </div>\n</template>\n<script>\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\ndayjs.extend(isBetween);\nexport default {\n  props: ['isCN'],\n  data() {\n    return {\n      top: 50,\n      effectiveTime: {\n        bmatch: {\n          start: '2019-03-11',\n          end: '2019-06-11',\n        },\n        kkb: {\n          start: '2020-11-16 22:00:00',\n          end: '2021-05-17 22:00:00',\n        },\n      },\n      visible: false,\n    };\n  },\n  methods: {\n    isEffective({ start, end }) {\n      return dayjs().isBetween(start, end);\n    },\n    handleClick() {\n      if (this.isCN) {\n        this.visible = true;\n      } else {\n        window.open('https://opencollective.com/ant-design-vue#sponsor');\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "site/src/components/rice/top_rice.vue",
    "content": "<template>\n  <div class=\"top-rice\">\n    <!-- Mentorbook banner -->\n    <div v-if=\"showMentorbook\" class=\"mentorbook-banner\">\n      <a href=\"https://mentorbook.ai/\" target=\"_blank\" class=\"banner-content\">\n        <div class=\"brand-name\">Mentorbook.AI</div>\n        <div class=\"main-slogan\">\n          {{ isCN ? '你的 AI 导师，你的学习助手' : 'Your AI Mentor, Your Learning Journey' }}\n        </div>\n        <div class=\"value-props\">\n          {{\n            isCN\n              ? '✨ 个性化课程 · 即时反馈 · 100+ 学科领域'\n              : '✨ Personalized Courses · Instant Feedback · 100+ Subjects'\n          }}\n        </div>\n      </a>\n      <a href=\"https://mentorbook.ai/\" target=\"_blank\" class=\"start-button\">\n        {{ isCN ? '免费开始' : 'Get Started Free' }}\n      </a>\n    </div>\n  </div>\n</template>\n<script>\nimport dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\ndayjs.extend(isBetween);\n// import WWAds from './WWAds.vue';\nconst isEffective = (start, end) => {\n  return dayjs().isBetween(start, end);\n};\nexport default {\n  components: {\n    // WWAds,\n  },\n  props: ['isCN', 'isMobile'],\n  data() {\n    return {\n      show: true,\n      showMentorbook: true,\n      cnAds: [\n        {\n          img: `https://yidengfe.com/launches/01/yd.png?v=${Date.now()}`,\n          href: 'https://yidengfe.com/launches/01/yd.html',\n          visible: true,\n        },\n      ].filter(ad => ad.visible),\n      enAds: [\n        {\n          img: `https://yidengfe.com/launches/01/yd.png?v=${Date.now()}`,\n          href: 'https://yidengfe.com/launches/01/yd.html',\n          visible: true,\n        },\n      ].filter(ad => ad.visible),\n    };\n  },\n  computed: {\n    otherAds() {\n      return this.isCN ? this.cnAds : this.enAds;\n    },\n  },\n};\n</script>\n\n<style lang=\"less\" scoped>\n.top-rice {\n  width: 100%;\n  margin-bottom: 16px;\n\n  .mentorbook-banner {\n    display: flex;\n    width: 100%;\n    background: linear-gradient(135deg, #0b1021 0%, #182a4a 100%);\n    position: relative;\n    overflow: hidden;\n    padding: 0 16px;\n    height: 48px;\n    box-sizing: border-box;\n    align-items: center;\n    justify-content: space-between;\n\n    // Dots pattern background\n    &::before {\n      content: '';\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      bottom: 0;\n      background-image: radial-gradient(circle, rgba(127, 179, 255, 0.12) 2px, transparent 2px);\n      background-size: 28px 28px;\n      background-position: 0 0;\n      pointer-events: none;\n      z-index: 0;\n    }\n\n    // Left brace\n    &::after {\n      content: '{';\n      position: absolute;\n      left: 20px;\n      top: 50%;\n      transform: translateY(-50%);\n      font-size: 32px;\n      font-family: monospace;\n      color: #5df2a3;\n      opacity: 0.08;\n      pointer-events: none;\n      z-index: 0;\n    }\n\n    .banner-content {\n      position: relative;\n      z-index: 1;\n      flex: 1;\n      height: 48px;\n      display: flex;\n      flex-direction: row;\n      justify-content: center;\n      align-items: center;\n      gap: 12px;\n      text-decoration: none;\n      transition: opacity 0.3s;\n\n      &:hover {\n        opacity: 0.9;\n      }\n    }\n\n    .start-button {\n      position: relative;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      height: 32px;\n      padding: 0 16px;\n      background: #5df2a3;\n      color: #0b1021;\n      font-family: 'Inter', system-ui, -apple-system, sans-serif;\n      font-weight: 600;\n      font-size: 14px;\n      text-decoration: none;\n      border-radius: 6px;\n      white-space: nowrap;\n      transition: all 0.3s;\n      margin-left: 16px;\n\n      &:hover {\n        background: #4dd893;\n        transform: translateY(-1px);\n        box-shadow: 0 4px 12px rgba(93, 242, 163, 0.3);\n      }\n\n      &:active {\n        transform: translateY(0);\n      }\n\n      @media (max-width: 768px) {\n        font-size: 12px;\n        padding: 0 12px;\n        height: 28px;\n      }\n\n      @media (max-width: 480px) {\n        font-size: 11px;\n        padding: 0 10px;\n        height: 26px;\n        margin-left: 8px;\n      }\n    }\n\n    .brand-name {\n      font-family: 'Inter', system-ui, -apple-system, sans-serif;\n      font-weight: 800;\n      font-size: 20px;\n      color: #5df2a3;\n      line-height: 48px;\n      white-space: nowrap;\n\n      @media (max-width: 768px) {\n        font-size: 18px;\n      }\n\n      @media (max-width: 480px) {\n        font-size: 16px;\n      }\n    }\n\n    .main-slogan {\n      font-family: 'Inter', system-ui, -apple-system, sans-serif;\n      font-weight: 600;\n      font-size: 16px;\n      color: #eaf2ff;\n      line-height: 48px;\n      white-space: nowrap;\n\n      @media (max-width: 768px) {\n        font-size: 14px;\n      }\n\n      @media (max-width: 480px) {\n        display: none;\n      }\n    }\n\n    .value-props {\n      font-family: 'Inter', system-ui, -apple-system, sans-serif;\n      font-weight: 500;\n      font-size: 14px;\n      color: #7fb3ff;\n      line-height: 48px;\n      white-space: nowrap;\n\n      @media (max-width: 1024px) {\n        display: none;\n      }\n    }\n  }\n\n  .ad-link {\n    display: block;\n    width: 100%;\n    text-decoration: none;\n    transition: opacity 0.3s;\n    margin-top: 16px;\n\n    &:hover {\n      opacity: 0.9;\n    }\n  }\n\n  .ad-image {\n    width: 100%;\n    max-width: 1200px;\n    height: auto;\n    display: block;\n    margin: 0 auto;\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/components/surelyVue.vue",
    "content": "<template>\n  <div class=\"container\">\n    <a-carousel autoplay>\n      <a style=\"display: inline-block\" href=\"https://www.surelyvue.com/\" target=\"_blank\">\n        <div :class=\"cls\">\n          <div class=\"logo\">\n            <img height=\"80\" src=\"https://www.surelyvue.com/surely-vue-logo.png\" alt=\"\" />\n          </div>\n          <div class=\"desc\">\n            <div class=\"title\">Surely Table</div>\n            <div class=\"sub-title\">\n              构建更快的网站\n              <br />\n              更快的构建网站\n            </div>\n          </div>\n        </div>\n      </a>\n    </a-carousel>\n  </div>\n  <div class=\"placeholder\"></div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nexport default defineComponent({\n  props: {\n    type: { type: String as PropType<'x' | 'y'> },\n  },\n  setup(props) {\n    return {\n      cls: {\n        wrap: true,\n        [`wrap-${props.type}`]: true,\n      },\n    };\n  },\n});\n</script>\n<style scoped>\n.container {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 9;\n  width: 100%;\n  height: 100px;\n}\n.wrap {\n  display: flex;\n  background-color: #f4f8fa;\n  padding: 8px 16px;\n  width: 100%;\n  height: 100px;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n.logo {\n  width: 80px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.placeholder {\n  height: 116px;\n}\n.desc {\n  margin-left: 16px;\n  overflow: hidden;\n  color: rgba(0, 0, 0, 0.85);\n  font-family: Avenir, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n    Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n    'Noto Color Emoji', sans-serif;\n}\n.title {\n  font-size: 18px;\n}\n.sub-title {\n  opacity: 0.7;\n  margin-top: 5px;\n}\n</style>\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/HexColorPicker.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\n\nimport { ColorPicker } from './common/ColorPicker';\nimport type { ColorModel } from '../types';\nimport { equalHex } from '../utils/compare';\nimport { hexToHsva, hsvaToHex } from '../utils/convert';\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: '000',\n  toHsva: hexToHsva,\n  fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n  equal: equalHex,\n};\n\nexport const HexColorPicker = defineComponent({\n  name: 'HexColorPicker',\n  inheritAttrs: false,\n  props: {\n    colorModel: { type: Object as PropType<ColorModel<string>> },\n    color: { type: String as PropType<string> },\n    onChange: { type: Function as PropType<(newColor: string) => void> },\n  },\n  setup(props, { attrs }) {\n    return () => <ColorPicker {...props} {...attrs} colorModel={colorModel} />;\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/RgbaColorPicker.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\n\nimport { AlphaColorPicker } from './common/AlphaColorPicker';\nimport type { ColorModel, RgbaColor } from '../types';\nimport { equalColorObjects } from '../utils/compare';\nimport { rgbaToHsva, hsvaToRgba } from '../utils/convert';\n\nconst colorModel: ColorModel<RgbaColor> = {\n  defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n  toHsva: rgbaToHsva,\n  fromHsva: hsvaToRgba,\n  equal: equalColorObjects,\n};\n\nexport const RgbaColorPicker = defineComponent({\n  name: 'RgbaColorPicker',\n  inheritAttrs: false,\n  props: {\n    colorModel: { type: Object as PropType<ColorModel<RgbaColor>> },\n    color: { type: Object as PropType<RgbaColor> },\n    onChange: { type: Function as PropType<(newColor: RgbaColor) => void> },\n  },\n  setup(props, { attrs }) {\n    return () => <AlphaColorPicker {...props} {...attrs} colorModel={colorModel} />;\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/Alpha.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, computed } from 'vue';\n\nimport type { Interaction } from './Interactive';\nimport { Interactive } from './Interactive';\nimport { Pointer } from './Pointer';\n\nimport { hsvaToHslaString } from '../../utils/convert';\nimport { formatClassName } from '../../utils/format';\nimport { clamp } from '../../utils/clamp';\nimport { round } from '../../utils/round';\nimport type { HsvaColor } from '../../types';\n\nexport interface AlphaProps {\n  hsva: HsvaColor;\n  onChange: (newAlpha: { a: number }) => void;\n}\n\nexport const Alpha = defineComponent({\n  name: 'Alpha',\n  props: {\n    hsva: { type: Object as PropType<HsvaColor> },\n    onChange: { type: Function as PropType<(newAlpha: { a: number }) => void> },\n  },\n  setup(props, { attrs }) {\n    const { hsva } = toRefs(props);\n\n    const handleMove = (interaction: Interaction) => {\n      props.onChange({ a: interaction.left });\n    };\n\n    const handleKey = (offset: Interaction) => {\n      // Alpha always fit into [0, 1] range\n      props.onChange({ a: clamp(hsva.value.a + offset.left) });\n    };\n\n    // We use `Object.assign` instead of the spread operator\n    // to prevent adding the polyfill (about 150 bytes gzipped)\n    const colorFrom = computed(() => hsvaToHslaString(Object.assign({}, hsva.value, { a: 0 })));\n    const colorTo = computed(() => hsvaToHslaString(Object.assign({}, hsva.value, { a: 1 })));\n\n    return () => {\n      const gradientStyle = {\n        backgroundImage: `linear-gradient(90deg, ${colorFrom.value}, ${colorTo.value})`,\n      };\n\n      const nodeClassName = formatClassName(['vue-colorful__alpha', attrs.class]);\n\n      const ariaValue = round(hsva.value.a * 100);\n\n      return (\n        <div {...attrs} class={nodeClassName}>\n          <div class=\"vue-colorful__alpha-gradient\" style={gradientStyle} />\n          <Interactive\n            onMove={handleMove}\n            onKey={handleKey}\n            aria-label=\"Alpha\"\n            aria-valuetext={`${ariaValue}%`}\n            aria-valuenow={ariaValue}\n            aria-valuemin=\"0\"\n            aria-valuemax=\"100\"\n          >\n            <Pointer\n              class=\"vue-colorful__alpha-pointer\"\n              left={hsva.value.a}\n              color={hsvaToHslaString(hsva.value)}\n            />\n          </Interactive>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/AlphaColorPicker.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, computed } from 'vue';\n\nimport { Hue } from './Hue';\nimport { Saturation } from './Saturation';\nimport { Alpha } from './Alpha';\n\nimport type { ColorModel, ColorPickerBaseProps, AnyColor } from '../../types';\nimport { useColorManipulation } from '../../hooks/useColorManipulation';\nimport { useStyleSheet } from '../../hooks/useStyleSheet';\nimport { formatClassName } from '../../utils/format';\n\nexport interface AlphaColorPickerProps<T extends AnyColor>\n  extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n}\n\nexport const AlphaColorPicker = defineComponent({\n  name: 'AlphaColorPicker',\n  props: {\n    colorModel: { type: Object as PropType<ColorModel<AnyColor>> },\n    color: { type: [String, Object] as PropType<AnyColor> },\n    onChange: { type: Function as PropType<(newColor: AnyColor) => void> },\n  },\n  setup(props, { attrs }) {\n    const { colorModel, color } = toRefs(props);\n\n    const nodeRef = ref<HTMLDivElement>(null);\n    useStyleSheet(nodeRef);\n\n    const mergedColor = computed(() => color.value || colorModel.value.defaultColor);\n\n    const [hsva, updateHsva] = useColorManipulation<AnyColor>(\n      colorModel,\n      mergedColor,\n      props.onChange,\n    );\n\n    return () => {\n      const nodeClassName = formatClassName(['vue-colorful', attrs.class]);\n\n      return (\n        <div {...attrs} ref={nodeRef} class={nodeClassName}>\n          <Saturation hsva={hsva.value} onChange={updateHsva} />\n          <Hue hue={hsva.value.h} onChange={updateHsva} />\n          <Alpha hsva={hsva.value} onChange={updateHsva} class=\"vue-colorful__last-control\" />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/ColorInput.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, watchEffect } from 'vue';\n\nimport type { ColorInputBaseProps } from '../../types';\n\nexport interface ColorInputProps extends ColorInputBaseProps {\n  /** Blocks typing invalid characters and limits string length */\n  escape: (value: string) => string;\n  /** Checks that value is valid color string */\n  validate: (value: string) => boolean;\n  /** Processes value before displaying it in the input */\n  format?: (value: string) => string;\n  /** Processes value before sending it in `onChange` */\n  process?: (value: string) => string;\n}\n\nexport const ColorInput = defineComponent({\n  name: 'ColorInput',\n  props: {\n    color: { type: String as PropType<string>, default: '' },\n    onChange: { type: Function as PropType<(newColor: string) => void> },\n    onBlur: { type: Function as PropType<(newColor: string) => void> },\n    escape: { type: Function as PropType<(value: string) => string> },\n    validate: { type: Function as PropType<(value: string) => boolean> },\n    format: { type: Function as PropType<(value: string) => string> },\n    process: { type: Function as PropType<(value: string) => string> },\n  },\n  setup(props, { attrs }) {\n    const { color } = toRefs(props);\n    const { escape, validate, format, process } = props;\n\n    const value = ref(escape(color.value));\n\n    // Trigger `onChange` handler only if the input value is a valid color\n    const handleChange = e => {\n      const inputValue = escape(e.target.value);\n      value.value = inputValue;\n      if (validate(inputValue)) {\n        props.onChange(process ? process(inputValue) : inputValue);\n      }\n    };\n\n    // Take the color from props if the last typed color (in local state) is not valid\n    const handleBlur = e => {\n      if (!validate(e.target.value)) {\n        value.value = escape(color.value);\n      }\n      props.onBlur(e);\n    };\n\n    // Update the local state when `color` property value is changed\n    watchEffect(() => {\n      value.value = escape(color.value);\n    });\n\n    return () => {\n      return (\n        <input\n          {...attrs}\n          value={format ? format(value.value) : value.value}\n          spellcheck=\"false\" // the element should not be checked for spelling errors\n          onChange={handleChange}\n          onBlur={handleBlur}\n        />\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/ColorPicker.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, computed } from 'vue';\n\nimport { Hue } from './Hue';\nimport { Saturation } from './Saturation';\n\nimport type { ColorModel, ColorPickerBaseProps, AnyColor } from '../../types';\nimport { useColorManipulation } from '../../hooks/useColorManipulation';\nimport { useStyleSheet } from '../../hooks/useStyleSheet';\nimport { formatClassName } from '../../utils/format';\n\nexport interface ColorPickerProps<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = defineComponent({\n  name: 'ColorPicker',\n  props: {\n    colorModel: { type: Object as PropType<ColorModel<AnyColor>> },\n    color: { type: [String, Object] as PropType<AnyColor> },\n    onChange: { type: Function as PropType<(newColor: AnyColor) => void> },\n  },\n  setup(props, { attrs }) {\n    const { colorModel, color } = toRefs(props);\n\n    const nodeRef = ref<HTMLDivElement>(null);\n    useStyleSheet(nodeRef);\n\n    const mergedColor = computed(() => color.value || colorModel.value.defaultColor);\n\n    const [hsva, updateHsva] = useColorManipulation<AnyColor>(\n      colorModel,\n      mergedColor,\n      props.onChange,\n    );\n\n    return () => {\n      const nodeClassName = formatClassName(['vue-colorful', attrs.class]);\n\n      return (\n        <div {...attrs} ref={nodeRef} class={nodeClassName}>\n          <Saturation hsva={hsva.value} onChange={updateHsva} />\n          <Hue hue={hsva.value.h} onChange={updateHsva} class=\"vue-colorful__last-control\" />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/Hue.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\n\nimport type { Interaction } from './Interactive';\nimport { Interactive } from './Interactive';\nimport { Pointer } from './Pointer';\n\nimport { hsvaToHslString } from '../../utils/convert';\nimport { formatClassName } from '../../utils/format';\nimport { clamp } from '../../utils/clamp';\nimport { round } from '../../utils/round';\n\nexport interface Props {\n  className?: string;\n  hue: number;\n  onChange: (newHue: { h: number }) => void;\n}\n\nexport const Hue = defineComponent({\n  name: 'Hue',\n  props: {\n    hue: { type: Number },\n    onChange: { type: Function as PropType<(newHue: { h: number }) => void> },\n  },\n  setup(props, { attrs }) {\n    const { hue } = toRefs(props);\n\n    const handleMove = (interaction: Interaction) => {\n      props.onChange({ h: 360 * interaction.left });\n    };\n\n    const handleKey = (offset: Interaction) => {\n      // Hue measured in degrees of the color circle ranging from 0 to 360\n      props.onChange({\n        h: clamp(hue.value + offset.left * 360, 0, 360),\n      });\n    };\n    return () => {\n      const nodeClassName = formatClassName(['vue-colorful__hue', attrs.class]);\n\n      return (\n        <div class={nodeClassName}>\n          <Interactive\n            onMove={handleMove}\n            onKey={handleKey}\n            aria-label=\"Hue\"\n            aria-valuenow={round(hue.value)}\n            aria-valuemax=\"360\"\n            aria-valuemin=\"0\"\n          >\n            <Pointer\n              class=\"vue-colorful__hue-pointer\"\n              left={hue.value / 360}\n              color={hsvaToHslString({ h: hue.value, s: 100, v: 100, a: 1 })}\n            />\n          </Interactive>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/Interactive.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs, ref, onUnmounted } from 'vue';\n\nimport { clamp } from '../../utils/clamp';\n\nexport interface Interaction {\n  left: number;\n  top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => 'touches' in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n  for (let i = 0; i < touches.length; i++) {\n    if (touches[i].identifier === touchId) return touches[i];\n  }\n  return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n  return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n  node: HTMLDivElement,\n  event: MouseEvent | TouchEvent,\n  touchId: null | number,\n): Interaction => {\n  const rect = node.getBoundingClientRect();\n\n  // Get user's pointer position from `touches` array if it's a `TouchEvent`\n  const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n  return {\n    left: clamp((pointer.pageX - (rect.left + getParentWindow(node).scrollX)) / rect.width),\n    top: clamp((pointer.pageY - (rect.top + getParentWindow(node).scrollY)) / rect.height),\n  };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n  !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n  return hasTouch && !isTouch(event);\n};\n\nexport interface InteractiveProps {\n  onMove: (interaction: Interaction) => void;\n  onKey: (offset: Interaction) => void;\n}\n\nexport const Interactive = defineComponent({\n  name: 'Interactive',\n  props: {\n    onMove: { type: Function as PropType<(interaction: Interaction) => void> },\n    onKey: { type: Function as PropType<(offset: Interaction) => void> },\n  },\n  setup(props, { attrs, slots }) {\n    const { onMove, onKey } = toRefs(props);\n\n    const container = ref<HTMLDivElement>(null);\n    const touchId = ref<null | number>(null);\n    const hasTouch = ref(false);\n\n    const dragEventObj = () => {\n      const handleMoveStart = (event: MouseEvent | TouchEvent) => {\n        const el = container.value;\n        if (!el) return;\n\n        // Prevent text selection\n        preventDefaultMove(event);\n\n        if (isInvalid(event, hasTouch.value) || !el) return;\n\n        if (isTouch(event)) {\n          hasTouch.value = true;\n          const changedTouches = event.changedTouches || [];\n          if (changedTouches.length) touchId.value = changedTouches[0].identifier;\n        }\n\n        el.focus();\n        onMove.value(getRelativePosition(el, event, touchId.value));\n        toggleDocumentEvents(true);\n      };\n\n      const handleMove = (event: MouseEvent | TouchEvent) => {\n        // Prevent text selection\n        preventDefaultMove(event);\n\n        // If user moves the pointer outside of the window or iframe bounds and release it there,\n        // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n        // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n        // and `event.touches`. It allows us to detect that the user is just moving his pointer\n        // without pressing it down\n        const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n        if (isDown && container.value) {\n          onMove.value(getRelativePosition(container.value, event, touchId.value));\n        } else {\n          toggleDocumentEvents(false);\n        }\n      };\n\n      const handleMoveEnd = () => toggleDocumentEvents(false);\n\n      const handleKeyDown = (event: any) => {\n        const keyCode = event.which || event.keyCode;\n\n        // Ignore all keys except arrow ones\n        if (keyCode < 37 || keyCode > 40) return;\n        // Do not scroll page by arrow keys when document is focused on the element\n        event.preventDefault();\n        // Send relative offset to the parent component.\n        // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n        // to reduce the size of the library\n        onKey.value({\n          left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n          top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n        });\n      };\n\n      function toggleDocumentEvents(state?: boolean) {\n        const touch = hasTouch.value;\n        const el = container.value;\n        const parentWindow = getParentWindow(el);\n\n        // Add or remove additional pointer event listeners\n        const toggleEvent = state\n          ? parentWindow.addEventListener\n          : parentWindow.removeEventListener;\n        toggleEvent(touch ? 'touchmove' : 'mousemove', handleMove);\n        toggleEvent(touch ? 'touchend' : 'mouseup', handleMoveEnd);\n      }\n\n      return { handleMoveStart, handleKeyDown, toggleDocumentEvents };\n    };\n\n    const { handleMoveStart, handleKeyDown, toggleDocumentEvents } = dragEventObj();\n\n    // Remove window event listeners before unmounting\n    onUnmounted(() => {\n      toggleDocumentEvents(false);\n    });\n\n    return () => {\n      return (\n        <div\n          {...attrs}\n          onTouchstart={handleMoveStart}\n          onMousedown={handleMoveStart}\n          onKeydown={handleKeyDown}\n          class=\"vue-colorful__interactive\"\n          ref={container}\n          role=\"slider\"\n        >\n          {slots.default && slots.default()}\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/Pointer.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\nimport { formatClassName } from '../../utils/format';\n\nexport interface PointerProps {\n  top?: number;\n  left: number;\n  color: string;\n}\n\nexport const Pointer = defineComponent({\n  name: 'Pointer',\n  props: {\n    top: { type: Number, default: 0.5 },\n    left: { type: Number },\n    color: { type: String },\n  },\n  setup(props, { attrs }) {\n    const { color, left, top } = toRefs(props);\n\n    return () => {\n      const nodeClassName = formatClassName(['vue-colorful__pointer', attrs.class]);\n\n      const style = {\n        top: `${top.value * 100}%`,\n        left: `${left.value * 100}%`,\n        ...(attrs.style as CSSProperties),\n      };\n\n      return (\n        <div {...attrs} class={nodeClassName} style={style}>\n          <div class=\"vue-colorful__pointer-fill\" style={{ backgroundColor: color.value }} />\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/components/common/Saturation.tsx",
    "content": "import type { PropType } from 'vue';\nimport { defineComponent, toRefs } from 'vue';\n\nimport type { Interaction } from './Interactive';\nimport { Interactive } from './Interactive';\nimport { Pointer } from './Pointer';\nimport type { HsvaColor } from '../../types';\nimport { hsvaToHslString } from '../../utils/convert';\nimport { clamp } from '../../utils/clamp';\nimport { round } from '../../utils/round';\n\nexport interface SaturationProps {\n  hsva: HsvaColor;\n  onChange: (newColor: { s: number; v: number }) => void;\n}\n\nexport const Saturation = defineComponent({\n  name: 'Saturation',\n  props: {\n    hsva: { type: Object as PropType<HsvaColor> },\n    onChange: { type: Function as PropType<(newColor: { s: number; v: number }) => void> },\n  },\n  setup(props, { attrs }) {\n    const { hsva } = toRefs(props);\n\n    const handleMove = (interaction: Interaction) => {\n      props.onChange({\n        s: interaction.left * 100,\n        v: 100 - interaction.top * 100,\n      });\n    };\n\n    const handleKey = (offset: Interaction) => {\n      // Saturation and brightness always fit into [0, 100] range\n      props.onChange({\n        s: clamp(hsva.value.s + offset.left * 100, 0, 100),\n        v: clamp(hsva.value.v - offset.top * 100, 0, 100),\n      });\n    };\n\n    return () => {\n      const containerStyle = {\n        backgroundColor: hsvaToHslString({ h: hsva.value.h, s: 100, v: 100, a: 1 }),\n      };\n\n      return (\n        <div {...attrs} class=\"vue-colorful__saturation\" style={containerStyle}>\n          <Interactive\n            onMove={handleMove}\n            onKey={handleKey}\n            aria-label=\"Color\"\n            aria-valuetext={`Saturation ${round(hsva.value.s)}%, Brightness ${round(\n              hsva.value.v,\n            )}%`}\n          >\n            <Pointer\n              class=\"vue-colorful__saturation-pointer\"\n              top={1 - hsva.value.v / 100}\n              left={hsva.value.s / 100}\n              color={hsvaToHslString(hsva.value)}\n            />\n          </Interactive>\n        </div>\n      );\n    };\n  },\n});\n"
  },
  {
    "path": "site/src/components/vue-colorful/css/styles.css",
    "content": ".vue-colorful {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 200px;\n  height: 200px;\n  user-select: none;\n  cursor: default;\n}\n\n.vue-colorful__saturation {\n  position: relative;\n  flex-grow: 1;\n  border-color: transparent;\n  border-bottom: 12px solid #000;\n  border-radius: 8px 8px 0 0;\n  background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0)),\n    linear-gradient(to right, #fff, rgba(255, 255, 255, 0));\n}\n\n.vue-colorful__pointer-fill,\n.vue-colorful__alpha-gradient {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  pointer-events: none;\n  border-radius: inherit;\n}\n\n/* Improve elements rendering on light backgrounds */\n.vue-colorful__alpha-gradient,\n.vue-colorful__saturation {\n  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.vue-colorful__hue,\n.vue-colorful__alpha {\n  position: relative;\n  height: 24px;\n}\n\n.vue-colorful__hue {\n  background: linear-gradient(\n    to right,\n    #f00 0%,\n    #ff0 17%,\n    #0f0 33%,\n    #0ff 50%,\n    #00f 67%,\n    #f0f 83%,\n    #f00 100%\n  );\n}\n\n/* Round bottom corners of the last element: `Hue` for `ColorPicker` or `Alpha` for `AlphaColorPicker` */\n.vue-colorful__last-control {\n  border-radius: 0 0 8px 8px;\n}\n\n.vue-colorful__interactive {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  border-radius: inherit;\n  outline: none;\n  /* Don't trigger the default scrolling behavior when the event is originating from this element */\n  touch-action: none;\n}\n\n.vue-colorful__pointer {\n  position: absolute;\n  z-index: 1;\n  box-sizing: border-box;\n  width: 28px;\n  height: 28px;\n  transform: translate(-50%, -50%);\n  background-color: #fff;\n  border: 2px solid #fff;\n  border-radius: 50%;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.vue-colorful__interactive:focus .vue-colorful__pointer {\n  transform: translate(-50%, -50%) scale(1.1);\n}\n\n/* Chessboard-like pattern for alpha related elements */\n.vue-colorful__alpha,\n.vue-colorful__alpha-pointer {\n  background-color: #fff;\n  background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill-opacity=\".05\"><rect x=\"8\" width=\"8\" height=\"8\"/><rect y=\"8\" width=\"8\" height=\"8\"/></svg>');\n}\n\n/* Display the saturation pointer over the hue one */\n.vue-colorful__saturation-pointer {\n  z-index: 3;\n}\n\n/* Display the hue pointer over the alpha one */\n.vue-colorful__hue-pointer {\n  z-index: 2;\n}\n"
  },
  {
    "path": "site/src/components/vue-colorful/css/styles.css.d.ts",
    "content": "declare const cssString: string;\nexport default cssString;\n"
  },
  {
    "path": "site/src/components/vue-colorful/hooks/useColorManipulation.ts",
    "content": "import type { Ref } from 'vue';\nimport { ref, watch } from 'vue';\nimport type { ColorModel, AnyColor, HsvaColor } from '../types';\nimport { equalColorObjects } from '../utils/compare';\nimport { useEventCallback } from './useEventCallback';\n\nexport function useColorManipulation<T extends AnyColor>(\n  colorModel: Ref<ColorModel<T>>,\n  color: Ref<T>,\n  onChange?: (color: T) => void,\n): [Ref<HsvaColor>, (color: Partial<HsvaColor>) => void] {\n  // Save onChange callback in the ref for avoiding \"useCallback hell\"\n  const onChangeCallback = useEventCallback<T>(onChange);\n\n  // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n  // all internal calculations are based on HSVA model\n  const hsva = ref<HsvaColor>(colorModel.value.toHsva(color.value));\n\n  // By using this ref we're able to prevent extra updates\n  // and the effects recursion during the color conversion\n  const cache = ref({ color, hsva: hsva.value });\n\n  // Update local HSVA-value if `color` property value is changed,\n  // but only if that's not the same color that we just sent to the parent\n\n  watch(color, val => {\n    if (!colorModel.value.equal(val, cache.value.color)) {\n      const newHsva = colorModel.value.toHsva(val);\n      cache.value = { hsva: newHsva, color: val };\n      hsva.value = newHsva;\n    }\n  });\n  watch(colorModel, val => {\n    if (!val.equal(color.value, cache.value.color)) {\n      const newHsva = val.toHsva(color.value);\n      cache.value = { hsva: newHsva, color: color.value };\n      hsva.value = newHsva;\n    }\n\n    let newColor;\n    if (\n      !equalColorObjects(hsva.value, cache.value.hsva) &&\n      !val.equal((newColor = val.fromHsva(hsva.value)), cache.value.color)\n    ) {\n      cache.value = { hsva: hsva.value, color: newColor };\n      onChangeCallback(newColor);\n    }\n  });\n  // Trigger `onChange` callback only if an updated color is different from cached one;\n  // save the new color to the ref to prevent unnecessary updates\n\n  watch(hsva, val => {\n    let newColor;\n    if (\n      !equalColorObjects(val, cache.value.hsva) &&\n      !colorModel.value.equal((newColor = colorModel.value.fromHsva(val)), cache.value.color)\n    ) {\n      cache.value = { hsva: val, color: newColor };\n      onChangeCallback(newColor);\n    }\n  });\n\n  // Merge the current HSVA color object with updated params.\n  // For example, when a child component sends `h` or `s` only\n  const handleChange = (params: Partial<HsvaColor>) => {\n    hsva.value = Object.assign({}, hsva.value, params);\n  };\n\n  return [hsva, handleChange];\n}\n"
  },
  {
    "path": "site/src/components/vue-colorful/hooks/useEventCallback.ts",
    "content": "import { ref } from 'vue';\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n  const callbackRef = ref(handler);\n  const fn = ref((value: T) => {\n    callbackRef.value && callbackRef.value(value);\n  });\n  callbackRef.value = handler;\n\n  return fn.value;\n}\n"
  },
  {
    "path": "site/src/components/vue-colorful/hooks/useStyleSheet.ts",
    "content": "import type { Ref } from 'vue';\nimport { watchEffect, computed } from 'vue';\n\nimport { getNonce } from '../utils/nonce';\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from '../css/styles.css';\n\nconst styleElementMap = new Map<Document, HTMLStyleElement>();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: Ref<HTMLDivElement>): void => {\n  const parentDocument = computed(() => (nodeRef.value ? nodeRef.value.ownerDocument : document));\n  watchEffect(() => {\n    if (typeof parentDocument.value !== 'undefined' && !styleElementMap.has(parentDocument.value)) {\n      const styleElement = parentDocument.value.createElement('style');\n      styleElement.innerHTML = styles;\n      styleElementMap.set(parentDocument.value, styleElement);\n\n      // Conform to CSP rules by setting `nonce` attribute to the inline styles\n      const nonce = getNonce();\n      if (nonce) styleElement.setAttribute('nonce', nonce);\n\n      parentDocument.value.head.appendChild(styleElement);\n    }\n  });\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/index.ts",
    "content": "export { HexColorPicker } from './components/HexColorPicker';\nexport { RgbaColorPicker } from './components/RgbaColorPicker';\n"
  },
  {
    "path": "site/src/components/vue-colorful/types.ts",
    "content": "import type { InputHTMLAttributes } from 'vue';\n\nexport interface RgbColor {\n  r: number;\n  g: number;\n  b: number;\n}\n\nexport interface RgbaColor extends RgbColor {\n  a: number;\n}\n\nexport interface HslColor {\n  h: number;\n  s: number;\n  l: number;\n}\n\nexport interface HslaColor extends HslColor {\n  a: number;\n}\n\nexport interface HsvColor {\n  h: number;\n  s: number;\n  v: number;\n}\n\nexport interface HsvaColor extends HsvColor {\n  a: number;\n}\n\nexport type ObjectColor = RgbColor | HslColor | HsvColor | RgbaColor | HslaColor | HsvaColor;\n\nexport type AnyColor = string | ObjectColor;\n\nexport interface ColorModel<T extends AnyColor> {\n  defaultColor: T;\n  toHsva: (defaultColor: T) => HsvaColor;\n  fromHsva: (hsva: HsvaColor) => T;\n  equal: (first: T, second: T) => boolean;\n}\n\ntype ColorPickerHTMLAttributes = Omit<\n  InputHTMLAttributes,\n  'color' | 'onChange' | 'onChangeCapture'\n>;\n\nexport interface ColorPickerBaseProps<T extends AnyColor> extends ColorPickerHTMLAttributes {\n  color: T;\n  onChange: (newColor: T) => void;\n}\n\ntype ColorInputHTMLAttributes = Omit<InputHTMLAttributes, 'onChange' | 'value'>;\n\nexport interface ColorInputBaseProps extends ColorInputHTMLAttributes {\n  color?: string;\n  onChange?: (newColor: string) => void;\n}\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/clamp.ts",
    "content": "// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n  return number > max ? max : number < min ? min : number;\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/compare.ts",
    "content": "import { hexToRgba } from './convert';\nimport type { ObjectColor } from '../types';\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n  if (first === second) return true;\n\n  for (const prop in first) {\n    // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n    // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n    // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n    // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n    // there is or not), and then as a type TS can iterate over.\n    if (\n      (first as unknown as Record<string, number>)[prop] !==\n      (second as unknown as Record<string, number>)[prop]\n    )\n      return false;\n  }\n\n  return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n  return first.replace(/\\s/g, '') === second.replace(/\\s/g, '');\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n  if (first.toLowerCase() === second.toLowerCase()) return true;\n\n  // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n  return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/convert.ts",
    "content": "import { round } from './round';\nimport type { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from '../types';\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n  grad: 360 / 400,\n  turn: 360,\n  rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n  if (hex[0] === '#') hex = hex.substring(1);\n\n  if (hex.length < 6) {\n    return {\n      r: parseInt(hex[0] + hex[0], 16),\n      g: parseInt(hex[1] + hex[1], 16),\n      b: parseInt(hex[2] + hex[2], 16),\n      a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n    };\n  }\n\n  return {\n    r: parseInt(hex.substring(0, 2), 16),\n    g: parseInt(hex.substring(2, 4), 16),\n    b: parseInt(hex.substring(4, 6), 16),\n    a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n  };\n};\n\nexport const parseHue = (value: string, unit = 'deg'): number => {\n  return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n  const matcher =\n    /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hslString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return hslaToHsva({\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    l: Number(match[4]),\n    a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n  });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n  s *= (l < 50 ? l : 100 - l) / 100;\n\n  return {\n    h,\n    s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n    v: l + s,\n    a,\n  };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n  const hh = ((200 - s) * v) / 100;\n\n  return {\n    h: round(h),\n    s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n    l: round(hh / 2),\n    a: round(a, 2),\n  };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n  const { h, s, l } = hsvaToHsla(hsva);\n  return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n  const { h, s, v } = roundHsva(hsva);\n  return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n  const { h, s, v, a } = roundHsva(hsva);\n  return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n  const { h, s, l, a } = hsvaToHsla(hsva);\n  return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n  h = (h / 360) * 6;\n  s = s / 100;\n  v = v / 100;\n\n  const hh = Math.floor(h),\n    b = v * (1 - s),\n    c = v * (1 - (h - hh) * s),\n    d = v * (1 - (1 - h + hh) * s),\n    module = hh % 6;\n\n  return {\n    r: round([v, c, b, b, d, v][module] * 255),\n    g: round([d, v, v, c, b, b][module] * 255),\n    b: round([b, b, d, v, v, c][module] * 255),\n    a: round(a, 2),\n  };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n  const { r, g, b } = hsvaToRgba(hsva);\n  return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n  const { r, g, b, a } = hsvaToRgba(hsva);\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n  const matcher =\n    /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hsvString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return roundHsva({\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    v: Number(match[4]),\n    a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n  });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n  const matcher =\n    /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(rgbaString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return rgbaToHsva({\n    r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n    g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n    b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n    a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n  });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n  const hex = number.toString(16);\n  return hex.length < 2 ? '0' + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n  const alphaHex = a < 1 ? format(round(a * 255)) : '';\n  return '#' + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n  const max = Math.max(r, g, b);\n  const delta = max - Math.min(r, g, b);\n\n  // prettier-ignore\n  const hh = delta\n    ? max === r\n      ? (g - b) / delta\n      : max === g\n        ? 2 + (b - r) / delta\n        : 4 + (r - g) / delta\n    : 0;\n\n  return {\n    h: round(60 * (hh < 0 ? hh + 6 : hh)),\n    s: round(max ? (delta / max) * 100 : 0),\n    v: round((max / 255) * 100),\n    a,\n  };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n  h: round(hsva.h),\n  s: round(hsva.s),\n  v: round(hsva.v),\n  a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n  const { h, s, v } = roundHsva(hsva);\n  return { h, s, v };\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/format.ts",
    "content": "export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(' ');\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/nonce.ts",
    "content": "declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n  if (nonce) return nonce;\n  if (typeof __webpack_nonce__ !== 'undefined') return __webpack_nonce__;\n  return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n  nonce = hash;\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/round.ts",
    "content": "export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n  return Math.round(base * number) / base;\n};\n"
  },
  {
    "path": "site/src/components/vue-colorful/utils/validate.ts",
    "content": "const matcher = /^#?([0-9A-F]{3,8})$/i;\n\nexport const validHex = (value: string, alpha?: boolean): boolean => {\n  const match = matcher.exec(value);\n  const length = match ? match[1].length : 0;\n\n  return (\n    length === 3 || // '#rgb' format\n    length === 6 || // '#rrggbb' format\n    (!!alpha && length === 4) || // '#rgba' format\n    (!!alpha && length === 8) // '#rrggbbaa' format\n  );\n};\n"
  },
  {
    "path": "site/src/demo.js",
    "content": "export default {\n  avatar: {\n    category: 'Components',\n    subtitle: '头像',\n    type: 'Data Display',\n    title: 'Avatar',\n  },\n  badge: {\n    category: 'Components',\n    subtitle: '徽标数',\n    type: 'Data Display',\n    title: 'Badge',\n  },\n  comment: {\n    category: 'Components',\n    subtitle: '评论',\n    type: 'Data Display',\n    title: 'Comment',\n  },\n  configProvider: {\n    category: 'Components',\n    subtitle: '全局化配置',\n    type: 'Other',\n    title: 'ConfigProvider',\n  },\n  empty: {\n    category: 'Components',\n    subtitle: '空状态',\n    type: 'Data Display',\n    title: 'Empty',\n  },\n  breadcrumb: {\n    category: 'Components',\n    subtitle: '面包屑',\n    type: 'Navigation',\n    title: 'Breadcrumb',\n  },\n  button: {\n    category: 'Components',\n    subtitle: '按钮',\n    type: 'General',\n    title: 'Button',\n  },\n  card: {\n    category: 'Components',\n    subtitle: '卡片',\n    type: 'Data Display',\n    title: 'Card',\n    cols: 1,\n  },\n  checkbox: {\n    category: 'Components',\n    subtitle: '多选框',\n    type: 'Data Entry',\n    title: 'Checkbox',\n  },\n  grid: {\n    category: 'Components',\n    subtitle: '栅格',\n    type: 'Layout',\n    title: 'Grid',\n    cols: 1,\n  },\n  icon: {\n    category: 'Components',\n    subtitle: '图标',\n    type: 'General',\n    title: 'Icon',\n  },\n  input: {\n    category: 'Components',\n    subtitle: '输入框',\n    type: 'Data Entry',\n    title: 'Input',\n  },\n  mentions: {\n    category: 'Components',\n    subtitle: '提及',\n    type: 'Data Entry',\n    title: 'Mentions',\n  },\n  select: {\n    category: 'Components',\n    subtitle: '选择器',\n    type: 'Data Entry',\n    title: 'Select',\n  },\n  menu: {\n    category: 'Components',\n    subtitle: '导航菜单',\n    type: 'Navigation',\n    title: 'Menu',\n    cols: 1,\n  },\n  pagination: {\n    category: 'Components',\n    subtitle: '分页',\n    type: 'Navigation',\n    title: 'Pagination',\n    cols: 1,\n  },\n  pageHeader: {\n    category: 'Components',\n    subtitle: '页头',\n    type: 'Navigation',\n    title: 'PageHeader',\n    cols: 1,\n  },\n  popconfirm: {\n    category: 'Components',\n    subtitle: '气泡确认框',\n    type: 'Feedback',\n    title: 'Popconfirm',\n  },\n  popover: {\n    category: 'Components',\n    subtitle: '气泡卡片',\n    type: 'Data Display',\n    title: 'Popover',\n  },\n  radio: {\n    category: 'Components',\n    subtitle: '单选框',\n    type: 'Data Entry',\n    title: 'Radio',\n  },\n  rate: {\n    category: 'Components',\n    subtitle: '评分',\n    type: 'Data Entry',\n    title: 'Rate',\n    cols: 1,\n  },\n  tabs: {\n    category: 'Components',\n    subtitle: '标签页',\n    type: 'Data Display',\n    title: 'Tabs',\n    cols: 1,\n  },\n  tag: {\n    category: 'Components',\n    subtitle: '标签',\n    type: 'Data Display',\n    title: 'Tag',\n  },\n  tooltip: {\n    category: 'Components',\n    subtitle: '文字提示',\n    type: 'Data Display',\n    title: 'Tooltip',\n  },\n  dropdown: {\n    category: 'Components',\n    subtitle: '下拉菜单',\n    type: 'Navigation',\n    title: 'Dropdown',\n  },\n  divider: {\n    category: 'Components',\n    subtitle: '分割线',\n    type: 'Other',\n    title: 'Divider',\n  },\n  collapse: {\n    category: 'Components',\n    subtitle: '折叠面板',\n    type: 'Data Display',\n    title: 'Collapse',\n    cols: 1,\n  },\n  notification: {\n    category: 'Components',\n    subtitle: '通知提醒框',\n    type: 'Feedback',\n    title: 'Notification',\n  },\n  message: {\n    category: 'Components',\n    subtitle: '全局提示',\n    type: 'Feedback',\n    title: 'Message',\n  },\n  spin: {\n    category: 'Components',\n    subtitle: '加载中',\n    type: 'Feedback',\n    title: 'Spin',\n  },\n  result: {\n    category: 'Components',\n    subtitle: '结果',\n    type: 'Feedback',\n    title: 'Result',\n  },\n  switch: {\n    category: 'Components',\n    subtitle: '开关',\n    type: 'Data Entry',\n    title: 'Switch',\n  },\n  autoComplete: {\n    category: 'Components',\n    subtitle: '自动完成',\n    type: 'Data Entry',\n    title: 'AutoComplete',\n    cols: 2,\n  },\n  affix: {\n    category: 'Components',\n    subtitle: '固钉',\n    type: 'Navigation',\n    title: 'Affix',\n  },\n  cascader: {\n    category: 'Components',\n    subtitle: '级联选择',\n    type: 'Data Entry',\n    title: 'Cascader',\n  },\n  backTop: {\n    category: 'Components',\n    subtitle: '回到顶部',\n    type: 'Other',\n    title: 'BackTop',\n  },\n  watermark: {\n    category: 'Components',\n    subtitle: '水印',\n    type: 'Other',\n    title: 'Watermark',\n    cols: 1,\n  },\n  modal: {\n    category: 'Components',\n    subtitle: '对话框',\n    type: 'Feedback',\n    title: 'Modal',\n  },\n  alert: {\n    category: 'Components',\n    subtitle: '警告提示',\n    type: 'Feedback',\n    title: 'Alert',\n  },\n  timePicker: {\n    category: 'Components',\n    subtitle: '时间选择框',\n    type: 'Data Entry',\n    title: 'TimePicker',\n  },\n  steps: {\n    category: 'Components',\n    subtitle: '步骤条',\n    type: 'Navigation',\n    title: 'Steps',\n    cols: 1,\n  },\n  calendar: {\n    category: 'Components',\n    subtitle: '日历',\n    type: 'Data Display',\n    title: 'Calendar',\n    cols: 1,\n  },\n  datePicker: {\n    category: 'Components',\n    subtitle: '日期选择框',\n    type: 'Data Entry',\n    title: 'DatePicker',\n  },\n  slider: {\n    category: 'Components',\n    subtitle: '滑动输入条',\n    type: 'Data Entry',\n    title: 'Slider',\n  },\n  progress: {\n    category: 'Components',\n    subtitle: '进度条',\n    type: 'Feedback',\n    title: 'Progress',\n  },\n  timeline: {\n    category: 'Components',\n    subtitle: '时间轴',\n    type: 'Data Display',\n    title: 'Timeline',\n  },\n  table: {\n    category: 'Components',\n    subtitle: '表格',\n    type: 'Data Display',\n    title: 'Table',\n    cols: 1,\n  },\n  inputNumber: {\n    category: 'Components',\n    subtitle: '数字输入框',\n    type: 'Data Entry',\n    title: 'InputNumber',\n  },\n  transfer: {\n    category: 'Components',\n    subtitle: '穿梭框',\n    type: 'Data Entry',\n    title: 'Transfer',\n    cols: '1',\n  },\n  upload: {\n    category: 'Components',\n    subtitle: '上传',\n    type: 'Data Entry',\n    title: 'Upload',\n  },\n  carousel: {\n    category: 'Components',\n    type: 'Data Display',\n    title: 'Carousel',\n    subtitle: '走马灯',\n  },\n  tree: {\n    category: 'Components',\n    subtitle: '树形控件',\n    type: 'Data Display',\n    title: 'Tree',\n  },\n  treeSelect: {\n    category: 'Components',\n    subtitle: '树选择',\n    type: 'Data Entry',\n    title: 'TreeSelect',\n  },\n  layout: {\n    category: 'Components',\n    subtitle: '布局',\n    type: 'Layout',\n    title: 'Layout',\n    cols: 1,\n  },\n  form: {\n    category: 'Components',\n    subtitle: '表单',\n    type: 'Data Entry',\n    title: 'Form',\n    cols: 1,\n  },\n  anchor: {\n    category: 'Components',\n    subtitle: '锚点',\n    type: 'Other',\n    title: 'Anchor',\n    cols: 2,\n  },\n  image: {\n    category: 'Components',\n    subtitle: '图片',\n    type: 'Data Display',\n    title: 'Image',\n    cols: 2,\n  },\n  list: {\n    category: 'Components',\n    subtitle: '列表',\n    type: 'Data Display',\n    title: 'List',\n    cols: 1,\n  },\n  drawer: {\n    category: 'Components',\n    type: 'Feedback',\n    title: 'Drawer',\n    subtitle: '抽屉',\n  },\n  skeleton: {\n    category: 'Components',\n    type: 'Feedback',\n    title: 'Skeleton',\n    subtitle: '骨架屏',\n  },\n  statistic: {\n    category: 'Components',\n    subtitle: '统计数值',\n    type: 'Data Display',\n    title: 'Statistic',\n  },\n  descriptions: {\n    category: 'Components',\n    subtitle: '描述列表',\n    type: 'Data Display',\n    title: 'Descriptions',\n  },\n  space: {\n    category: 'Components',\n    subtitle: '间距',\n    type: 'Layout',\n    title: 'Space',\n  },\n  segmented: {\n    category: 'Components',\n    subtitle: '分段控制器',\n    type: 'Data Display',\n    title: 'Segmented',\n  },\n  // colorPicker: {\n  //   category: 'Components',\n  //   subtitle: '取色器',\n  //   type: 'Data Entry',\n  //   title: 'ColorPicker (Beta)',\n  // },\n};\n"
  },
  {
    "path": "site/src/directives/clipboard/clipboard-action.js",
    "content": "import select from './select';\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nclass ClipboardAction {\n  /**\n   * @param {Object} options\n   */\n  constructor(options) {\n    this.resolveOptions(options);\n    this.initSelection();\n  }\n\n  /**\n   * Defines base properties passed from constructor.\n   * @param {Object} options\n   */\n  resolveOptions(options = {}) {\n    this.action = options.action;\n    this.container = options.container;\n    this.emitter = options.emitter;\n    this.target = options.target;\n    this.text = options.text;\n    this.trigger = options.trigger;\n\n    this.selectedText = '';\n  }\n\n  /**\n   * Decides which selection strategy is going to be applied based\n   * on the existence of `text` and `target` properties.\n   */\n  initSelection() {\n    if (this.text) {\n      this.selectFake();\n    } else if (this.target) {\n      this.selectTarget();\n    }\n  }\n\n  /**\n   * Creates a fake textarea element, sets its value from `text` property,\n   * and makes a selection on it.\n   */\n  selectFake() {\n    const isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n    this.removeFake();\n\n    this.fakeHandlerCallback = () => this.removeFake();\n    this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n    this.fakeElem = document.createElement('textarea');\n    // Prevent zooming on iOS\n    this.fakeElem.style.fontSize = '12pt';\n    // Reset box model\n    this.fakeElem.style.border = '0';\n    this.fakeElem.style.padding = '0';\n    this.fakeElem.style.margin = '0';\n    // Move element out of screen horizontally\n    this.fakeElem.style.position = 'absolute';\n    this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n    // Move element to the same position vertically\n    const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n    this.fakeElem.style.top = `${yPosition}px`;\n\n    this.fakeElem.setAttribute('readonly', '');\n    this.fakeElem.value = this.text;\n\n    this.container.appendChild(this.fakeElem);\n\n    this.selectedText = select(this.fakeElem);\n    this.copyText();\n  }\n\n  /**\n   * Only removes the fake element after another click event, that way\n   * a user can hit `Ctrl+C` to copy because selection still exists.\n   */\n  removeFake() {\n    if (this.fakeHandler) {\n      this.container.removeEventListener('click', this.fakeHandlerCallback);\n      this.fakeHandler = null;\n      this.fakeHandlerCallback = null;\n    }\n\n    if (this.fakeElem) {\n      this.container.removeChild(this.fakeElem);\n      this.fakeElem = null;\n    }\n  }\n\n  /**\n   * Selects the content from element passed on `target` property.\n   */\n  selectTarget() {\n    this.selectedText = select(this.target);\n    this.copyText();\n  }\n\n  /**\n   * Executes the copy operation based on the current selection.\n   */\n  copyText() {\n    let succeeded;\n\n    try {\n      succeeded = document.execCommand(this.action);\n    } catch (err) {\n      succeeded = false;\n    }\n\n    this.handleResult(succeeded);\n  }\n\n  /**\n   * Fires an event based on the copy operation result.\n   * @param {Boolean} succeeded\n   */\n  handleResult(succeeded) {\n    this.emitter.emit(succeeded ? 'success' : 'error', {\n      action: this.action,\n      text: this.selectedText,\n      trigger: this.trigger,\n      clearSelection: this.clearSelection.bind(this),\n    });\n  }\n\n  /**\n   * Moves focus away from `target` and back to the trigger, removes current selection.\n   */\n  clearSelection() {\n    if (this.trigger) {\n      this.trigger.focus();\n    }\n    document.activeElement.blur();\n    window.getSelection().removeAllRanges();\n  }\n\n  /**\n   * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n   * @param {String} action\n   */\n  set action(action = 'copy') {\n    this._action = action;\n\n    if (this._action !== 'copy' && this._action !== 'cut') {\n      throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n    }\n  }\n\n  /**\n   * Gets the `action` property.\n   * @return {String}\n   */\n  get action() {\n    return this._action;\n  }\n\n  /**\n   * Sets the `target` property using an element\n   * that will be have its content copied.\n   * @param {Element} target\n   */\n  set target(target) {\n    if (target !== undefined) {\n      if (target && typeof target === 'object' && target.nodeType === 1) {\n        if (this.action === 'copy' && target.hasAttribute('disabled')) {\n          throw new Error(\n            'Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute',\n          );\n        }\n\n        if (\n          this.action === 'cut' &&\n          (target.hasAttribute('readonly') || target.hasAttribute('disabled'))\n        ) {\n          throw new Error(\n            'Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes',\n          );\n        }\n\n        this._target = target;\n      } else {\n        throw new Error('Invalid \"target\" value, use a valid Element');\n      }\n    }\n  }\n\n  /**\n   * Gets the `target` property.\n   * @return {String|HTMLElement}\n   */\n  get target() {\n    return this._target;\n  }\n\n  /**\n   * Destroy lifecycle.\n   */\n  destroy() {\n    this.removeFake();\n  }\n}\n\nexport default ClipboardAction;\n"
  },
  {
    "path": "site/src/directives/clipboard/clipboard.js",
    "content": "import ClipboardAction from './clipboard-action';\nimport Emitter from './tiny-emitter';\nimport listen from './listen';\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\nclass Clipboard extends Emitter {\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  constructor(trigger, options) {\n    super();\n\n    this.resolveOptions(options);\n    this.listenClick(trigger);\n  }\n\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n  resolveOptions(options = {}) {\n    this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n    this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n    this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n    this.container = typeof options.container === 'object' ? options.container : document.body;\n  }\n\n  /**\n   * Adds a click event listener to the passed trigger.\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   */\n  listenClick(trigger) {\n    this.listener = listen(trigger, 'click', e => this.onClick(e));\n  }\n\n  /**\n   * Defines a new `ClipboardAction` on each click event.\n   * @param {Event} e\n   */\n  onClick(e) {\n    const trigger = e.delegateTarget || e.currentTarget;\n\n    if (this.clipboardAction) {\n      this.clipboardAction = null;\n    }\n\n    this.clipboardAction = new ClipboardAction({\n      action: this.action(trigger),\n      target: this.target(trigger),\n      text: this.text(trigger),\n      container: this.container,\n      trigger,\n      emitter: this,\n    });\n  }\n\n  /**\n   * Default `action` lookup function.\n   * @param {Element} trigger\n   */\n  defaultAction(trigger) {\n    return getAttributeValue('action', trigger);\n  }\n\n  /**\n   * Default `target` lookup function.\n   * @param {Element} trigger\n   */\n  defaultTarget(trigger) {\n    const selector = getAttributeValue('target', trigger);\n\n    if (selector) {\n      return document.querySelector(selector);\n    }\n  }\n\n  /**\n   * Returns the support of the given action, or all actions if no action is\n   * given.\n   * @param {String} [action]\n   */\n  static isSupported(action = ['copy', 'cut']) {\n    const actions = typeof action === 'string' ? [action] : action;\n    let support = !!document.queryCommandSupported;\n\n    actions.forEach(action => {\n      support = support && !!document.queryCommandSupported(action);\n    });\n\n    return support;\n  }\n\n  /**\n   * Default `text` lookup function.\n   * @param {Element} trigger\n   */\n  defaultText(trigger) {\n    return getAttributeValue('text', trigger);\n  }\n\n  /**\n   * Destroy lifecycle.\n   */\n  destroy() {\n    this.listener.destroy();\n\n    if (this.clipboardAction) {\n      this.clipboardAction.destroy();\n      this.clipboardAction = null;\n    }\n  }\n}\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\nfunction getAttributeValue(suffix, element) {\n  const attribute = `data-clipboard-${suffix}`;\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n\nexport default Clipboard;\n"
  },
  {
    "path": "site/src/directives/clipboard/closest.js",
    "content": "const DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n  const proto = Element.prototype;\n\n  proto.matches =\n    proto.matchesSelector ||\n    proto.mozMatchesSelector ||\n    proto.msMatchesSelector ||\n    proto.oMatchesSelector ||\n    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest(element, selector) {\n  while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n    if (typeof element.matches === 'function' && element.matches(selector)) {\n      return element;\n    }\n    element = element.parentNode;\n  }\n}\n\nexport default closest;\n"
  },
  {
    "path": "site/src/directives/clipboard/delegate.js",
    "content": "/* eslint-disable prefer-spread */\n/* eslint-disable prefer-rest-params */\nimport closest from './closest';\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n  const listenerFn = listener.apply(this, arguments);\n\n  element.addEventListener(type, listenerFn, useCapture);\n\n  return {\n    destroy() {\n      element.removeEventListener(type, listenerFn, useCapture);\n    },\n  };\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n  // Handle the regular Element usage\n  if (typeof elements.addEventListener === 'function') {\n    return _delegate.apply(null, arguments);\n  }\n\n  // Handle Element-less usage, it defaults to global delegation\n  if (typeof type === 'function') {\n    // Use `document` as the first parameter, then apply arguments\n    // This is a short way to .unshift `arguments` without running into deoptimizations\n    return _delegate.bind(null, document).apply(null, arguments);\n  }\n\n  // Handle Selector-based usage\n  if (typeof elements === 'string') {\n    elements = document.querySelectorAll(elements);\n  }\n\n  // Handle Array-like based usage\n  return Array.prototype.map.call(elements, function (element) {\n    return _delegate(element, selector, type, callback, useCapture);\n  });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n  return function (e) {\n    e.delegateTarget = closest(e.target, selector);\n\n    if (e.delegateTarget) {\n      callback.call(element, e);\n    }\n  };\n}\n\nexport default delegate;\n"
  },
  {
    "path": "site/src/directives/clipboard/index.js",
    "content": "import Clipboard from './clipboard'; // FIXME: workaround for browserify\n\nconst VueClipboardConfig = {\n  autoSetContainer: false,\n  appendToBody: true, // This fixes IE, see #50\n};\n\nconst VueClipboard = {\n  install(app) {\n    // Vue.prototype.$clipboardConfig = VueClipboardConfig;\n    // Vue.prototype.$copyText = function(text, container) {\n    //   return new Promise(function(resolve, reject) {\n    //     const fakeElement = document.createElement('button');\n    //     const clipboard = new Clipboard(fakeElement, {\n    //       text() {\n    //         return text;\n    //       },\n    //       action() {\n    //         return 'copy';\n    //       },\n    //       container: typeof container === 'object' ? container : document.body,\n    //     });\n    //     clipboard.on('success', function(e) {\n    //       clipboard.destroy();\n    //       resolve(e);\n    //     });\n    //     clipboard.on('error', function(e) {\n    //       clipboard.destroy();\n    //       reject(e);\n    //     });\n    //     if (VueClipboardConfig.appendToBody) document.body.appendChild(fakeElement);\n    //     fakeElement.click();\n    //     if (VueClipboardConfig.appendToBody) document.body.removeChild(fakeElement);\n    //   });\n    // };\n\n    app.directive('clipboard', {\n      mounted(el, binding) {\n        if (binding.arg === 'success') {\n          el._vClipboard_success = binding.value;\n        } else if (binding.arg === 'error') {\n          el._vClipboard_error = binding.value;\n        } else {\n          const clipboard = new Clipboard(el, {\n            text() {\n              return binding.value;\n            },\n            action() {\n              return binding.arg === 'cut' ? 'cut' : 'copy';\n            },\n            container: VueClipboardConfig.autoSetContainer ? el : undefined,\n          });\n          clipboard.on('success', function (e) {\n            const callback = el._vClipboard_success;\n            callback && callback(e);\n          });\n          clipboard.on('error', function (e) {\n            const callback = el._vClipboard_error;\n            callback && callback(e);\n          });\n          el._vClipboard = clipboard;\n        }\n      },\n      updated(el, binding) {\n        if (binding.arg === 'success') {\n          el._vClipboard_success = binding.value;\n        } else if (binding.arg === 'error') {\n          el._vClipboard_error = binding.value;\n        } else {\n          el._vClipboard.text = function () {\n            return binding.value;\n          };\n          el._vClipboard.action = function () {\n            return binding.arg === 'cut' ? 'cut' : 'copy';\n          };\n        }\n      },\n      unmounted(el, binding) {\n        if (binding.arg === 'success') {\n          delete el._vClipboard_success;\n        } else if (binding.arg === 'error') {\n          delete el._vClipboard_error;\n        } else {\n          el._vClipboard.destroy();\n          delete el._vClipboard;\n        }\n      },\n    });\n  },\n};\n\nexport default VueClipboard;\n"
  },
  {
    "path": "site/src/directives/clipboard/is.js",
    "content": "/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexport const node = function (value) {\n  return value !== undefined && value instanceof HTMLElement && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexport const nodeList = function (value) {\n  const type = Object.prototype.toString.call(value);\n\n  return (\n    value !== undefined &&\n    (type === '[object NodeList]' || type === '[object HTMLCollection]') &&\n    'length' in value &&\n    (value.length === 0 || node(value[0]))\n  );\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexport const string = function (value) {\n  return typeof value === 'string' || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexport const fn = function (value) {\n  const type = Object.prototype.toString.call(value);\n\n  return type === '[object Function]';\n};\n\nexport default {\n  node,\n  nodeList,\n  string,\n  fn,\n};\n"
  },
  {
    "path": "site/src/directives/clipboard/listen.js",
    "content": "import is from './is';\nimport delegate from './delegate';\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n  if (!target && !type && !callback) {\n    throw new Error('Missing required arguments');\n  }\n\n  if (!is.string(type)) {\n    throw new TypeError('Second argument must be a String');\n  }\n\n  if (!is.fn(callback)) {\n    throw new TypeError('Third argument must be a Function');\n  }\n\n  if (is.node(target)) {\n    return listenNode(target, type, callback);\n  } else if (is.nodeList(target)) {\n    return listenNodeList(target, type, callback);\n  } else if (is.string(target)) {\n    return listenSelector(target, type, callback);\n  } else {\n    throw new TypeError(\n      'First argument must be a String, HTMLElement, HTMLCollection, or NodeList',\n    );\n  }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n  node.addEventListener(type, callback);\n\n  return {\n    destroy() {\n      node.removeEventListener(type, callback);\n    },\n  };\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n  Array.prototype.forEach.call(nodeList, function (node) {\n    node.addEventListener(type, callback);\n  });\n\n  return {\n    destroy() {\n      Array.prototype.forEach.call(nodeList, function (node) {\n        node.removeEventListener(type, callback);\n      });\n    },\n  };\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n  return delegate(document.body, selector, type, callback);\n}\n\nexport default listen;\n"
  },
  {
    "path": "site/src/directives/clipboard/select.js",
    "content": "function select(element) {\n  let selectedText;\n\n  if (element.nodeName === 'SELECT') {\n    element.focus();\n\n    selectedText = element.value;\n  } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n    const isReadOnly = element.hasAttribute('readonly');\n\n    if (!isReadOnly) {\n      element.setAttribute('readonly', '');\n    }\n\n    element.select();\n    element.setSelectionRange(0, element.value.length);\n\n    if (!isReadOnly) {\n      element.removeAttribute('readonly');\n    }\n\n    selectedText = element.value;\n  } else {\n    if (element.hasAttribute('contenteditable')) {\n      element.focus();\n    }\n\n    const selection = window.getSelection();\n    const range = document.createRange();\n\n    range.selectNodeContents(element);\n    selection.removeAllRanges();\n    selection.addRange(range);\n\n    selectedText = selection.toString();\n  }\n\n  return selectedText;\n}\nexport default select;\n"
  },
  {
    "path": "site/src/directives/clipboard/tiny-emitter.js",
    "content": "/* eslint-disable prefer-rest-params */\nfunction E() {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on(name, callback, ctx) {\n    const e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx,\n    });\n\n    return this;\n  },\n\n  once(name, callback, ctx) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n    function listener() {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    }\n\n    listener._ = callback;\n    return this.on(name, listener, ctx);\n  },\n\n  emit(name) {\n    const data = [].slice.call(arguments, 1);\n    const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    let i = 0;\n    const len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off(name, callback) {\n    const e = this.e || (this.e = {});\n    const evts = e[name];\n    const liveEvents = [];\n\n    if (evts && callback) {\n      for (let i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    liveEvents.length ? (e[name] = liveEvents) : delete e[name];\n\n    return this;\n  },\n};\n\nexport default E;\n"
  },
  {
    "path": "site/src/hooks/useMediaQuery.ts",
    "content": "import { ref } from 'vue';\n\nexport const MediaQueryEnum = {\n  xs: {\n    maxWidth: 575,\n    matchMedia: '(max-width: 575px)',\n  },\n  sm: {\n    minWidth: 576,\n    maxWidth: 767,\n    matchMedia: '(min-width: 576px) and (max-width: 767px)',\n  },\n  md: {\n    minWidth: 768,\n    maxWidth: 991,\n    matchMedia: '(min-width: 768px) and (max-width: 991px)',\n  },\n  lg: {\n    minWidth: 992,\n    maxWidth: 1199,\n    matchMedia: '(min-width: 992px) and (max-width: 1199px)',\n  },\n  xl: {\n    minWidth: 1200,\n    maxWidth: 1599,\n    matchMedia: '(min-width: 1200px) and (max-width: 1599px)',\n  },\n  xxl: {\n    minWidth: 1600,\n    matchMedia: '(min-width: 1600px)',\n  },\n  xxxl: {\n    minWidth: 2000,\n    matchMedia: '(min-width: 2000px)',\n  },\n};\n\nexport type MediaQueryKey = keyof typeof MediaQueryEnum;\n\n/**\n * loop query screen className\n * Array.find will throw a error\n * `Rendered more hooks than during the previous render.`\n * So should use Array.forEach\n */\nexport const getScreenClassName = () => {\n  let className: MediaQueryKey = 'md';\n  // support ssr\n  if (typeof window === 'undefined') {\n    return className;\n  }\n  const mediaQueryKey = (Object.keys(MediaQueryEnum) as MediaQueryKey[]).find(key => {\n    const { matchMedia } = MediaQueryEnum[key];\n    if (window.matchMedia(matchMedia).matches) {\n      return true;\n    }\n    return false;\n  });\n  className = mediaQueryKey as unknown as MediaQueryKey;\n  return className;\n};\n\nconst useMedia = () => {\n  const colSpan = ref(getScreenClassName());\n  (Object.keys(MediaQueryEnum) as MediaQueryKey[]).forEach(key => {\n    const { matchMedia } = MediaQueryEnum[key];\n    const mediaQuery = window.matchMedia(matchMedia);\n    if (mediaQuery.matches) {\n      colSpan.value = key;\n    }\n    mediaQuery.onchange = e => {\n      if (e.matches) {\n        colSpan.value = key;\n      }\n    };\n  });\n  return colSpan;\n};\n\nexport default useMedia;\n"
  },
  {
    "path": "site/src/hooks/useMenus.ts",
    "content": "import { groupBy, sortBy } from 'lodash-es';\nimport type { ComputedRef } from 'vue';\nimport { computed, inject } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { GLOBAL_CONFIG } from '../SymbolKey';\nconst typeOrder: any = {\n  组件总览: { order: -1, en: 'Overview' },\n  通用: { order: 0, en: 'General' },\n  布局: { order: 1, en: 'Layout' },\n  导航: { order: 2, en: 'Navigation' },\n  数据录入: { order: 3, en: 'Data Entry' },\n  数据展示: { order: 4, en: 'Data Display' },\n  反馈: { order: 5, en: 'Feedback' },\n  其他: { order: 6, en: 'Other' },\n  废弃: { order: 7, en: 'Deprecated' },\n};\nconst useMenus = (): {\n  menus: ComputedRef<any[]>;\n  dataSource: ComputedRef<any[]>;\n  currentMenuIndex: ComputedRef<number>;\n  activeMenuItem: ComputedRef<string>;\n} => {\n  const route = useRoute();\n  const router = useRouter();\n  const routes = router.getRoutes();\n  const globalConfig = inject<any>(GLOBAL_CONFIG);\n  const menus = computed(() => {\n    const path = route.path;\n    const category = path.split('/')[1];\n    const pattern = /^\\/iframe/;\n    const isZhCN = globalConfig.isZhCN.value;\n    const ms = routes\n      .filter(r => {\n        const inCategory =\n          r.meta &&\n          r.meta.category &&\n          (r.meta.category as string).toLowerCase() === category &&\n          !pattern.test(r.path);\n        if (inCategory && category === 'docs') {\n          if (isZhCN) {\n            return r.path.indexOf('-cn') >= 0;\n          } else {\n            return r.path.indexOf('-cn') === -1;\n          }\n        } else {\n          return inCategory;\n        }\n      })\n      .map(r => ({ ...r.meta, path: r.path.split(':lang')[0].replace('-cn', '') }));\n    // if (category === 'docs') {\n    //   ms.push({\n    //     enTitle: 'Change Log',\n    //     title: '更新日志',\n    //     category: 'docs',\n    //     target: '_blank',\n    //     path: globalConfig.isZhCN.value\n    //       ? 'https://github.com/vueComponent/ant-design-vue/blob/main/CHANGELOG.zh-CN.md'\n    //       : 'https://github.com/vueComponent/ant-design-vue/blob/main/CHANGELOG.en-US.md',\n    //   } as any);\n    // }\n    return ms;\n  });\n  const activeMenuItem = computed(() => {\n    return route.path.split('-cn')[0];\n  });\n  const currentMenuIndex = computed(() => {\n    return menus.value.findIndex(m => m.path === activeMenuItem.value);\n  });\n  const dataSource = computed(() => {\n    const group = groupBy(menus.value, (m: any) => m.type || m.category);\n    const keys: string[] = Object.keys(group);\n    const newMenus = keys\n      .map(key => {\n        return {\n          title: key,\n          order: typeOrder[key] && typeOrder[key].order,\n          enTitle: typeOrder[key] && typeOrder[key].en,\n          children: sortBy(group[key], 'title'),\n        };\n      })\n      .sort((a, b) => a.order - b.order);\n    return keys.length === 1 ? menus.value : newMenus;\n  });\n  return { menus, dataSource, activeMenuItem, currentMenuIndex };\n};\n\nexport default useMenus;\n"
  },
  {
    "path": "site/src/hooks/useSiteToken.ts",
    "content": "import { TinyColor } from '@ctrl/tinycolor';\nimport { computed, watch } from 'vue';\nimport { theme } from '../../../components';\nimport { useConfigContextInject } from '../../../components/config-provider/context';\n\nconst { useToken } = theme;\n\nconst useSiteToken = () => {\n  const result = useToken();\n  const { getPrefixCls, iconPrefixCls } = useConfigContextInject();\n  const rootPrefixCls = computed(() => getPrefixCls());\n  const { token } = result;\n\n  const mergedToken = computed(() => ({\n    theme: result.theme.value,\n    hashId: result.hashId.value,\n    token: {\n      ...token.value,\n      headerHeight: 64,\n      menuItemBorder: 2,\n      mobileMaxWidth: 767.99,\n      siteMarkdownCodeBg: token.value.colorFillTertiary,\n      antCls: `.${rootPrefixCls.value}`,\n      iconCls: `.${iconPrefixCls.value}`,\n      /** 56 */\n      marginFarXS: (token.value.marginXXL / 6) * 7,\n      /** 80 */\n      marginFarSM: (token.value.marginXXL / 3) * 5,\n      /** 96 */\n      marginFar: token.value.marginXXL * 2,\n      codeFamily: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,\n    },\n  }));\n  let styleDom: HTMLStyleElement | null = null;\n  watch(\n    mergedToken,\n    () => {\n      styleDom = styleDom || document.createElement('style');\n      const tokenValue = mergedToken.value.token;\n      const demoGridColor = token.value.colorPrimary;\n      styleDom.innerHTML = `\n      :root {\n        --header-height: ${tokenValue.headerHeight}px;\n        --menu-item-border: ${tokenValue.menuItemBorder}px;\n\n        --primary-color: ${tokenValue.colorPrimary};\n        --component-background: ${tokenValue.colorBgContainer};\n        --body-background: ${tokenValue.colorBgContainer};\n        --site-text-color: ${tokenValue.colorText};\n        --demo-grid-color: ${demoGridColor};\n        --demo-grid-color-65: ${new TinyColor(demoGridColor).setAlpha(0.75).toHex8String()};\n        --demo-grid-color-75: ${new TinyColor(demoGridColor).setAlpha(0.75).toHex8String()};\n        --site-text-color-secondary: ${tokenValue.colorTextSecondary};\n        --site-border-color-split: ${tokenValue.colorSplit};\n        --border-radius-base: ${tokenValue.borderRadius};\n        --font-size-base: ${tokenValue.fontSize}px;\n        --font-size-max: ${Math.max(tokenValue.fontSize - 1, 12)}px;\n        --font-family: ${tokenValue.fontFamily};\n        --code-family: ${tokenValue.codeFamily};\n\n        --border-color-base: ${tokenValue.colorBorder};\n        --purple-3: ${tokenValue['purple-3']};\n        --purple-6: ${tokenValue['purple-6']};\n        --text-color: ${tokenValue.colorText};\n        --search-icon-color: #ced4d9;\n        --ease-in-out-circ: ${tokenValue.motionEaseInOutCirc};\n        --shadow-2: ${tokenValue.boxShadowSecondary};\n        --link-color: ${tokenValue.colorLink};\n        --error-color: ${tokenValue.colorError};\n        --white: ${tokenValue.colorWhite};\n        --green-6: ${tokenValue['green-6']};\n        --gray-8: ${tokenValue['gray-8']};\n        --magenta-7: ${tokenValue['magenta-7']};\n        --line-height-base: ${tokenValue.lineHeight};\n        --screen-md-min: ${tokenValue.screenMDMin}px;\n        --screen-sm-min: ${tokenValue.screenSMMin}px;\n        --screen-lg: ${tokenValue.screenLG}px;\n        --mobile-max-width: ${tokenValue.mobileMaxWidth}px;\n        --box-shadow-base: ${tokenValue.boxShadow}\n        --animation-duration-base: ${tokenValue.motionDurationSlow};\n        --ease-in-out: ${tokenValue.motionEaseInOut};\n        --shadow-1-down: ${tokenValue.boxShadowCard};\n        --box-shadow: ${tokenValue.boxShadow};\n      }\n    `;\n      if (styleDom && !document.body.contains(styleDom)) {\n        document.body.appendChild(styleDom);\n      }\n    },\n    { immediate: true },\n  );\n\n  return mergedToken;\n};\n\nexport default useSiteToken;\n"
  },
  {
    "path": "site/src/i18n.js",
    "content": "import { computed } from 'vue';\nimport { createI18n, useI18n } from 'vue-i18n';\nimport enUS from './locale/en-US';\nimport zhCN from './locale/zh-CN';\nimport { isZhCN } from './utils/util';\n\nconst i18n = createI18n({\n  legacy: false,\n  locale: isZhCN(location.pathname) ? 'zh-CN' : 'en-US',\n  fallbackLocale: 'en-US',\n  messages: {\n    'zh-CN': zhCN,\n    'en-US': enUS,\n  },\n});\n\n/**\n * @description: 传入localMap，根据当前的语言类型输入i18nmessage,只是中英两种\n * @param {object} localeMap  {en:{xxx:xxx},cn:{xxx:xxx} }\n * @return {object} [i18nMessage, localeType]\n */\nexport function useLocale(localeMap = {}) {\n  const { locale } = useI18n();\n\n  const localeType = computed(() => (locale.value === 'zh-CN' ? 'cn' : 'en'));\n\n  const i18nMessage = computed(() => (localeMap && localeMap[localeType.value]) || {});\n\n  return [i18nMessage, localeType];\n}\n\nexport default i18n;\n"
  },
  {
    "path": "site/src/index.less",
    "content": "@import './theme/static/index.less';\n\n.drawer > * {\n  -webkit-transition: opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-box-shadow 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\n  transition: opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-box-shadow 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\n  transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    box-shadow 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\n  transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    box-shadow 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),\n    -webkit-box-shadow 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\n}\n\n.drawer .drawer-mask {\n  background: #000;\n  opacity: 0;\n  width: 100%;\n  height: 0;\n  position: absolute;\n  top: 0;\n  left: 0;\n  -webkit-transition: opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), height 0s ease 0.3s;\n  transition: opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), height 0s ease 0.3s;\n}\n\n.drawer-content-wrapper {\n  position: absolute;\n  background: #fff;\n}\n\n.drawer-content {\n  overflow: auto;\n  z-index: 1;\n  position: relative;\n}\n\n.drawer-handle {\n  position: fixed;\n  top: 100px;\n  width: 41px;\n  height: 40px;\n  cursor: pointer;\n  z-index: 100;\n  text-align: center;\n  line-height: 40px;\n  font-size: 16px;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  background: #fff;\n  -webkit-box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\n  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\n  border-radius: 0 4px 4px 0;\n}\n\n.drawer-left,\n.drawer-right {\n  width: 0;\n  height: 100%;\n}\n\n.drawer-left .drawer-content,\n.drawer-left .drawer-content-wrapper,\n.drawer-right .drawer-content,\n.drawer-right .drawer-content-wrapper {\n  height: 100%;\n}\n\n.drawer-left {\n  top: 0;\n  left: 0;\n}\n.drawer-left .ant-drawer-body {\n  padding: 0;\n}\n"
  },
  {
    "path": "site/src/layouts/BaseLayout.vue",
    "content": "<template>\n  <div>\n    <HeaderCom />\n    <div style=\"padding: 20px; margin: 0 auto; width: 960px\">\n      <slot></slot>\n    </div>\n    <FooterCom />\n  </div>\n</template>\n\n<script>\nimport Header from './header/index.vue';\nimport Footer from './Footer.vue';\nimport NProgress from 'nprogress';\nexport default {\n  components: {\n    HeaderCom: Header,\n    FooterCom: Footer,\n  },\n  props: ['name'],\n  beforeCreate() {},\n  methods: {\n    mountedCallback() {\n      NProgress.done();\n      document.documentElement.scrollTop = 0;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "site/src/layouts/Demo.vue",
    "content": "<template>\n  <article>\n    <section class=\"markdown\">\n      <h1>\n        {{ frontmatter.title }}\n        <span v-if=\"isZhCN\" class=\"subtitle\">{{ frontmatter.subtitle }}</span>\n      </h1>\n      <section class=\"markdown\" v-html=\"description\"></section>\n    </section>\n    <section class=\"markdown\">\n      <h2>{{ $t('app.component.examples') }}</h2>\n    </section>\n    <slot />\n    <!-- <GoogleAds v-if=\"showAd\" :key=\"`goo-${route.path}`\" /> -->\n    <section class=\"markdown api-container\" v-html=\"api\"></section>\n    <Contributor :is-zn=\"isZhCN\" />\n  </article>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed } from 'vue';\nimport { useRoute } from 'vue-router';\n// import GoogleAds from '../components/rice/GoogleAds.vue';\nimport Contributor from '../components/Contributors/index.vue';\n\nconst showAd = location.host.indexOf('antdv.com') > -1;\nexport default defineComponent({\n  name: 'Demo',\n  components: {\n    // GoogleAds,\n    Contributor,\n  },\n  props: ['pageData', 'isZhCN'],\n  setup(props) {\n    const route = useRoute();\n    const frontmatter = computed(() => props?.pageData?.frontmatter || {});\n    const docHtml = computed(() => {\n      return props?.pageData?.html || '';\n    });\n    const description = computed(() => {\n      return docHtml.value.split('<h2 id=\"api\">API <a class=\"header-anchor\" href=\"#api\">')[0];\n    });\n    const api = computed(() => {\n      return `\n      <h2 id=\"api\"><span>API</span><a href=\"#api\" class=\"anchor\">#</a></h2>\n      ${docHtml.value.split('<h2 id=\"api\">API <a class=\"header-anchor\" href=\"#api\">')[1]}\n      `;\n    });\n    return { frontmatter, description, api, route, showAd, docHtml };\n  },\n});\n</script>\n<style lang=\"less\" scoped></style>\n"
  },
  {
    "path": "site/src/layouts/Footer.vue",
    "content": "<template>\n  <footer id=\"footer\">\n    <div class=\"footer-wrap\">\n      <a-row>\n        <a-col :md=\"6\" :sm=\"24\" :xs=\"24\">\n          <div class=\"footer-center\">\n            <h2>Ant Design</h2>\n            <div>\n              <a href=\"https://github.com/vueComponent/ant-design-vue\" target=\"_blank \">\n                <span>GitHub</span>\n              </a>\n              <span></span>\n              <span>\n                <i class=\"anticon anticon-github\"></i>\n              </span>\n            </div>\n            <div>\n              <a href=\"https://ant.design/docs/react/introduce-cn\" target=\"_blank\">Ant Design</a>\n              <span>-</span>\n              <span>React</span>\n            </div>\n            <div>\n              <a href=\"https://github.com/NG-ZORRO/ng-zorro-antd\" target=\"_blank\">Ant Design</a>\n              <span>-</span>\n              <span>Angular</span>\n            </div>\n            <div>\n              <a href=\"https://github.com/websemantics/awesome-ant-design\" target=\"_blank \">\n                <span>Awesome Ant Design</span>\n              </a>\n            </div>\n            <div>\n              <a href=\"http://library.ant.design/\" rel=\"noopener noreferrer\" target=\"_blank\">\n                AntD Library\n              </a>\n            </div>\n          </div>\n        </a-col>\n        <a-col :md=\"6\" :sm=\"24\" :xs=\"24\">\n          <div class=\"footer-center\">\n            <h2>{{ isCN ? '社区' : 'Community' }}</h2>\n            <div v-if=\"isCN\">\n              <a href=\"https://zhuanlan.zhihu.com/ant-design-vue\" target=\"_blank\">\n                <span>知乎专栏</span>\n              </a>\n            </div>\n            <div>\n              <a href=\"https://github.com/vueComponent/ant-design-vue/releases\" target=\"_blank\">\n                <span>{{ isCN ? '更新记录' : 'Change Log' }}</span>\n              </a>\n            </div>\n            <div>\n              <a\n                rel=\"noopener noreferrer\"\n                target=\"_blank\"\n                :href=\"`https://vuecomponent.github.io/issue-helper/${isCN ? '?lang=zh' : ''}`\"\n              >\n                <span>{{ isCN ? '报告 Bug' : 'Bug Report' }}</span>\n              </a>\n            </div>\n          </div>\n        </a-col>\n        <!-- <a-col :md=\"6\" :sm=\"24\" :xs=\"24\">\n          <div class=\"footer-center\">\n            <h2>{{ isCN ? '友情链接' : 'Links' }}</h2>\n            <div>\n              <a href=\"https://cn.vuejs.org/\" target=\"_blank\">Vue</a>\n            </div>\n            <div>\n              <a href=\"https://cli.vuejs.org/\" target=\"_blank\">Vue CLI</a>\n            </div>\n            <div>\n              <a href=\"https://vitejs.dev/\" target=\"_blank\">Vite</a>\n            </div>\n            <div>\n              <a href=\"https://antdv.formilyjs.org/\" target=\"_blank\">@formily/antdv</a>\n            </div>\n          </div>\n        </a-col> -->\n        <a-col :md=\"12\" :sm=\"24\" :xs=\"24\">\n          <div class=\"footer-center\">\n            <h2>\n              <img\n                alt=\"\"\n                class=\"title-icon\"\n                src=\"https://gw.alipayobjects.com/zos/rmsportal/nBVXkrFdWHxbZlmMbsaH.svg\"\n              />\n              <span>{{ isCN ? '友情链接' : 'Links' }}</span>\n            </h2>\n            <div>\n              <a href=\"https://www.demoget.com?atp=tangjinzhou\" target=\"_blank\">DemoGet</a>\n              <span>-</span>\n              <span>{{ isCN ? '好看好用的录屏工具' : 'Beautiful Screen Recordings' }}</span>\n            </div>\n          </div>\n        </a-col>\n      </a-row>\n    </div>\n  </footer>\n</template>\n<script>\nimport dayjs from 'dayjs';\nimport { computed } from 'vue';\nexport default {\n  props: {\n    isCN: Boolean,\n  },\n  setup() {\n    const showJeecg = computed(() => {\n      return dayjs().isBefore(dayjs('2023-09-10'));\n    });\n    return {\n      dayjs,\n      showJeecg,\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "site/src/layouts/Iframe.vue",
    "content": "<template>\n  <router-view></router-view>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, provide } from 'vue';\nexport default defineComponent({\n  name: 'IframeLayout',\n  setup() {\n    provide('inIframe', true);\n    return {};\n  },\n});\n</script>\n<style lang=\"less\" scoped></style>\n"
  },
  {
    "path": "site/src/layouts/Menu.vue",
    "content": "<template>\n  <a-config-provider :theme=\"{ components: { Menu: { colorItemBg: colorBgContainer } } }\">\n    <a-menu\n      :inline-indent=\"30\"\n      class=\"aside-container menu-site\"\n      mode=\"inline\"\n      :theme=\"isDark ? 'dark' : 'light'\"\n      :selected-keys=\"[activeMenuItem]\"\n    >\n      <a-menu-item v-if=\"showOverview\" key=\"/components/overview\">\n        <router-link :to=\"getLocalizedPathname('/components/overview', isZhCN)\">\n          {{ isZhCN ? '组件总览' : 'Components Overview' }}\n        </router-link>\n      </a-menu-item>\n      <a-menu-item-group v-if=\"isZhCN\" key=\"advanced\" title=\"高级组件\">\n        <a-menu-item key=\"surely-table\">\n          <a\n            href=\"https://www.surelyvue.com\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            style=\"position: relative\"\n          >\n            Surely Table\n          </a>\n        </a-menu-item>\n      </a-menu-item-group>\n      <template v-for=\"m in menus\">\n        <template v-if=\"m.children\">\n          <a-menu-item-group :key=\"m.order\" :title=\"isZhCN ? m.title : m.enTitle\">\n            <template v-for=\"n in m.children\">\n              <a-menu-item v-if=\"n.path\" :key=\"n.path\">\n                <a v-if=\"n.target\" :target=\"n.target\" :href=\"n.path\">\n                  <span>{{ isZhCN ? n.title : n.enTitle || n.title }}</span>\n                  <span v-if=\"isZhCN\" class=\"chinese\">{{ n.subtitle }}</span>\n                </a>\n                <router-link v-else :to=\"getLocalizedPathname(n.path, isZhCN)\">\n                  <span>{{ isZhCN ? n.title : n.enTitle || n.title }}</span>\n                  <span v-if=\"isZhCN\" class=\"chinese\">{{ n.subtitle }}</span>\n                </router-link>\n                <a-tag v-if=\"n.tag\" color=\"green\" style=\"margin-left: auto\">{{ n.tag }}</a-tag>\n              </a-menu-item>\n            </template>\n          </a-menu-item-group>\n        </template>\n        <template v-else>\n          <a-menu-item :key=\"m.path\">\n            <a v-if=\"m.target\" :target=\"m.target\" :href=\"m.path\">\n              {{ isZhCN ? `${m.title} ${m.subtitle || ''}` : m.enTitle || m.title }}\n            </a>\n            <router-link v-else :to=\"getLocalizedPathname(m.path, isZhCN)\">\n              {{ isZhCN ? `${m.title} ${m.subtitle || ''}` : m.enTitle || m.title }}\n            </router-link>\n          </a-menu-item>\n        </template>\n      </template>\n    </a-menu>\n  </a-config-provider>\n</template>\n<script lang=\"ts\">\nimport { getLocalizedPathname } from '../utils/util';\nimport { computed, defineComponent, watch, inject } from 'vue';\nimport { useRoute } from 'vue-router';\nimport useSiteToken from '../hooks/useSiteToken';\n\nexport default defineComponent({\n  name: 'Menu',\n  props: ['menus', 'isZhCN', 'activeMenuItem'],\n  setup(props) {\n    const siteToken = useSiteToken();\n    const route = useRoute();\n    const showOverview = computed(() => {\n      return route.path.indexOf('/components') === 0;\n    });\n    const themeMode = inject('themeMode');\n    const isDark = computed<boolean>(() => (themeMode as any).theme.value === 'dark');\n    const colorBgContainer = computed(() => siteToken.value.token.colorBgContainer);\n    watch(\n      [() => props.activeMenuItem, () => props.isZhCN, () => props.menus],\n      () => {\n        const menus = props.menus.reduce(\n          (pre, current) => [...pre, current, ...(current.children || [])],\n          [{ path: '/components/overview', title: '组件总览', enTitle: 'Components Overview' }],\n        );\n        const item = menus.find(m => m.path === props.activeMenuItem);\n        let title = props.isZhCN\n          ? 'Ant Design Vue - 一套企业级 Vue 组件库'\n          : 'Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js';\n        if (item && item.title) {\n          title = props.isZhCN\n            ? `${item.subtitle || ''} ${item.title} - Ant Design Vue`\n            : `${item.enTitle || item.title} - Ant Design Vue`;\n        }\n        document.title = title.trim();\n      },\n      { immediate: true, flush: 'post' },\n    );\n    return {\n      getLocalizedPathname,\n      showOverview,\n      isDark,\n      colorBgContainer,\n    };\n  },\n});\n</script>\n<style lang=\"less\" scoped></style>\n"
  },
  {
    "path": "site/src/layouts/PrevAndNext.vue",
    "content": "<template>\n  <section class=\"prev-next-nav\">\n    <router-link\n      v-if=\"prev\"\n      key=\"prev\"\n      class=\"prev-page\"\n      :to=\"getLocalizedPathname(prev.path, isZhCN)\"\n    >\n      <span role=\"img\" aria-label=\"left\" class=\"anticon anticon-left footer-nav-icon-before\">\n        <svg\n          viewBox=\"64 64 896 896\"\n          focusable=\"false\"\n          data-icon=\"left\"\n          width=\"1em\"\n          height=\"1em\"\n          fill=\"currentColor\"\n          aria-hidden=\"true\"\n        >\n          <path\n            d=\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"\n          ></path>\n        </svg>\n      </span>\n      <span v-if=\"isZhCN\" class=\"chinese\">{{ prev.subtitle || prev.title }}</span>\n      <span v-else>{{ prev.enTitle || prev.title }}</span>\n    </router-link>\n    <router-link\n      v-if=\"next\"\n      key=\"next\"\n      class=\"next-page\"\n      :to=\"getLocalizedPathname(next.path, isZhCN)\"\n    >\n      <span v-if=\"isZhCN\" class=\"chinese\">{{ next.subtitle || next.title }}</span>\n      <span v-else>{{ next.enTitle || next.title }}</span>\n      <span role=\"img\" aria-label=\"right\" class=\"anticon anticon-right footer-nav-icon-after\">\n        <svg\n          viewBox=\"64 64 896 896\"\n          focusable=\"false\"\n          data-icon=\"right\"\n          width=\"1em\"\n          height=\"1em\"\n          fill=\"currentColor\"\n          aria-hidden=\"true\"\n        >\n          <path\n            d=\"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\"\n          ></path>\n        </svg>\n      </span>\n    </router-link>\n  </section>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue';\nimport { getLocalizedPathname } from '../utils/util';\nexport default defineComponent({\n  name: 'PrevAndNext',\n  props: ['menus', 'isZhCN', 'currentMenuIndex'],\n  setup(props) {\n    return {\n      getLocalizedPathname,\n      prev: computed(() => props.menus[props.currentMenuIndex - 1]),\n      next: computed(() => props.menus[props.currentMenuIndex + 1]),\n    };\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/layouts/header/Ecosystem.vue",
    "content": "<template>\n  <a-menu class=\"ecosystem\">\n    <a-menu-item-group key=\"ecosystem\" :title=\"$t('app.header.menu.ecosystem')\">\n      <a-menu-item key=\"pro\">\n        <a target=\"_blank\" href=\"https://pro.antdv.com\">Pro For Vue2(Free)</a>\n      </a-menu-item>\n      <a-menu-item key=\"vip\">\n        <a target=\"_blank\" href=\"https://store.antdv.com/pro\">Pro For Vue3(VIP)</a>\n      </a-menu-item>\n      <a-menu-item key=\"design\">\n        <router-link :to=\"getLocalizedPathname('/docs/vue/download/', isZhCN)\">\n          {{ isZhCN ? '设计资源' : 'Design Resources' }}\n        </router-link>\n      </a-menu-item>\n      <!-- <a-menu-item key=\"vscode\">\n        <a\n          target=\"_blank\"\n          href=\"https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper\"\n        >\n          VS Code Extension\n        </a>\n      </a-menu-item> -->\n      <a-menu-item key=\"awesome\">\n        <a target=\"_blank\" href=\"https://github.com/vueComponent/ant-design-vue-awesome\">Awesome</a>\n      </a-menu-item>\n      <a-menu-item key=\"qq1\">\n        <a>QQ 1群(217490093) 已满</a>\n      </a-menu-item>\n      <a-menu-item key=\"qq2\">\n        <a>QQ 2群(809774695) 已满</a>\n      </a-menu-item>\n      <a-menu-item key=\"qq3\">\n        <a>QQ 3群(927828249)</a>\n      </a-menu-item>\n    </a-menu-item-group>\n  </a-menu>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue';\nimport type { GlobalConfig } from '../../type';\nimport { GLOBAL_CONFIG } from '../../SymbolKey';\nimport { getLocalizedPathname } from '../../utils/util';\n\nexport default defineComponent({\n  props: {\n    isRTL: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  setup(props) {\n    const downstyle = computed(() => (props.isRTL ? '-1px 2px 0 0' : '-1px 0 0 2px'));\n    return {\n      downstyle,\n      isZhCN: inject<GlobalConfig>(GLOBAL_CONFIG).isZhCN.value,\n      getLocalizedPathname,\n    };\n  },\n});\n</script>\n<style scoped>\n.ecosystem a {\n  color: rgba(0, 0, 0, 0.65);\n}\n</style>\n"
  },
  {
    "path": "site/src/layouts/header/Github.less",
    "content": ".github-btn {\n  font: bold 11px/14px 'Helvetica Neue', Helvetica, Arial, sans-serif;\n  height: 20px;\n  overflow: hidden;\n}\n.gh-btn,\n.gh-count,\n.gh-ico {\n  float: left;\n}\n.gh-btn,\n.gh-count {\n  padding: 2px 5px 2px 4px;\n  color: #333;\n  text-decoration: none;\n  white-space: nowrap;\n  cursor: pointer;\n  border-radius: 3px;\n}\n.gh-btn {\n  background-color: #eee;\n  background-image: -webkit-gradient(\n    linear,\n    left top,\n    left bottom,\n    color-stop(0, #fcfcfc),\n    color-stop(100%, #eee)\n  );\n  background-image: -webkit-linear-gradient(top, #fcfcfc 0, #eee 100%);\n  background-image: -moz-linear-gradient(top, #fcfcfc 0, #eee 100%);\n  background-image: -ms-linear-gradient(top, #fcfcfc 0, #eee 100%);\n  background-image: -o-linear-gradient(top, #fcfcfc 0, #eee 100%);\n  background-image: linear-gradient(to bottom, #fcfcfc 0, #eee 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc', endColorstr='#eeeeee', GradientType=0);\n  background-repeat: no-repeat;\n  border: 1px solid #d5d5d5;\n}\n.gh-btn:hover,\n.gh-btn:focus {\n  text-decoration: none;\n  background-color: #ddd;\n  background-image: -webkit-gradient(\n    linear,\n    left top,\n    left bottom,\n    color-stop(0, #eee),\n    color-stop(100%, #ddd)\n  );\n  background-image: -webkit-linear-gradient(top, #eee 0, #ddd 100%);\n  background-image: -moz-linear-gradient(top, #eee 0, #ddd 100%);\n  background-image: -ms-linear-gradient(top, #eee 0, #ddd 100%);\n  background-image: -o-linear-gradient(top, #eee 0, #ddd 100%);\n  background-image: linear-gradient(to bottom, #eee 0, #ddd 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);\n  border-color: #ccc;\n}\n.gh-btn:active {\n  background-image: none;\n  background-color: #dcdcdc;\n  border-color: #b5b5b5;\n  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n}\n.gh-ico {\n  width: 14px;\n  height: 14px;\n  margin-right: 4px;\n  background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjQwcHgiIGhlaWdodD0iNDBweCIgdmlld0JveD0iMTIgMTIgNDAgNDAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMTIgMTIgNDAgNDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiMzMzMzMzMiIGQ9Ik0zMiAxMy40Yy0xMC41IDAtMTkgOC41LTE5IDE5YzAgOC40IDUuNSAxNS41IDEzIDE4YzEgMC4yIDEuMy0wLjQgMS4zLTAuOWMwLTAuNSAwLTEuNyAwLTMuMiBjLTUuMyAxLjEtNi40LTIuNi02LjQtMi42QzIwIDQxLjYgMTguOCA0MSAxOC44IDQxYy0xLjctMS4yIDAuMS0xLjEgMC4xLTEuMWMxLjkgMC4xIDIuOSAyIDIuOSAyYzEuNyAyLjkgNC41IDIuMSA1LjUgMS42IGMwLjItMS4yIDAuNy0yLjEgMS4yLTIuNmMtNC4yLTAuNS04LjctMi4xLTguNy05LjRjMC0yLjEgMC43LTMuNyAyLTUuMWMtMC4yLTAuNS0wLjgtMi40IDAuMi01YzAgMCAxLjYtMC41IDUuMiAyIGMxLjUtMC40IDMuMS0wLjcgNC44LTAuN2MxLjYgMCAzLjMgMC4yIDQuNyAwLjdjMy42LTIuNCA1LjItMiA1LjItMmMxIDIuNiAwLjQgNC42IDAuMiA1YzEuMiAxLjMgMiAzIDIgNS4xYzAgNy4zLTQuNSA4LjktOC43IDkuNCBjMC43IDAuNiAxLjMgMS43IDEuMyAzLjVjMCAyLjYgMCA0LjYgMCA1LjJjMCAwLjUgMC40IDEuMSAxLjMgMC45YzcuNS0yLjYgMTMtOS43IDEzLTE4LjFDNTEgMjEuOSA0Mi41IDEzLjQgMzIgMTMuNHoiLz48L3N2Zz4=');\n  background-size: 100% 100%;\n  background-repeat: no-repeat;\n}\n.gh-count {\n  position: relative;\n  display: none; /* hidden to start */\n  margin-left: 4px;\n  background-color: #fafafa;\n  border: 1px solid #d4d4d4;\n}\n.gh-count:hover,\n.gh-count:focus {\n  color: #4183c4;\n}\n.gh-count:before,\n.gh-count:after {\n  content: '';\n  position: absolute;\n  display: inline-block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.gh-count:before {\n  top: 50%;\n  left: -3px;\n  margin-top: -4px;\n  border-width: 4px 4px 4px 0;\n  border-right-color: #fafafa;\n}\n.gh-count:after {\n  top: 50%;\n  left: -4px;\n  z-index: -1;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #d4d4d4;\n}\n.github-btn-large {\n  height: 30px;\n}\n.github-btn-large .gh-btn,\n.github-btn-large .gh-count {\n  padding: 3px 10px 3px 8px;\n  font-size: 16px;\n  line-height: 22px;\n  border-radius: 4px;\n}\n.github-btn-large .gh-ico {\n  width: 20px;\n  height: 20px;\n}\n.github-btn-large .gh-count {\n  margin-left: 6px;\n}\n.github-btn-large .gh-count:before {\n  left: -5px;\n  margin-top: -6px;\n  border-width: 6px 6px 6px 0;\n}\n.github-btn-large .gh-count:after {\n  left: -6px;\n  margin-top: -7px;\n  border-width: 7px 7px 7px 0;\n}\n"
  },
  {
    "path": "site/src/layouts/header/Github.vue",
    "content": "<template>\n  <a-tooltip placement=\"bottom\">\n    <template #title>Github</template>\n    <span id=\"github-btn\" class=\"github-btn\" :style=\"githubIconStyles\">\n      <a class=\"gh-btn\" href=\"https://github.com/vueComponent/ant-design-vue\" target=\"_blank\">\n        <GithubOutlined class=\"github-icon\" />\n      </a>\n    </span>\n  </a-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, computed } from 'vue';\nimport { GithubOutlined } from '@ant-design/icons-vue';\nexport default defineComponent({\n  components: {\n    GithubOutlined,\n  },\n  setup() {\n    const themeMode = inject('themeMode');\n    const githubIconStyles = computed(() => {\n      let iconBackgroundColor = 'rgba(0,0,0,0.06)';\n      if ((themeMode as any).theme.value === 'dark') {\n        iconBackgroundColor = 'rgba(255,255,255,0.12)';\n      }\n      return {\n        '--github-icon-background-color': iconBackgroundColor,\n      };\n    });\n    return {\n      githubIconStyles,\n    };\n  },\n});\n</script>\n\n<style lang=\"less\" scoped>\n@import './Github.less';\n#github-btn {\n  display: flex;\n  flex-flow: nowrap;\n  height: auto;\n\n  .gh-btn {\n    color: currentColor;\n    height: auto;\n    padding: 6px;\n    background: transparent;\n    border: 0;\n    transition: all 0.2s;\n\n    &:hover {\n      background: var(--github-icon-background-color);\n    }\n\n    .gh-ico {\n      width: 20px;\n      height: 20px;\n      margin: 0;\n    }\n\n    .gh-text {\n      display: none;\n    }\n  }\n\n  .github-icon {\n    font-size: 18px;\n    color: var(--text-color);\n  }\n\n  .gh-count {\n    height: auto;\n    padding: 4px 8px;\n    font-weight: normal;\n    background: #fff;\n\n    &:hover {\n      color: var(--primary-color);\n    }\n  }\n\n  &.responsive-mode {\n    .gh-count {\n      display: none !important;\n    }\n  }\n}\n\n.ant-row-rtl {\n  #github-btn {\n    .gh-count {\n      display: none !important;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/layouts/header/Logo.vue",
    "content": "<template>\n  <h1>\n    <a id=\"logo\" :href=\"isZhCN ? '/index-cn' : '/index'\">\n      <img alt=\"logo\" :src=\"logo\" />\n      Ant Design Vue\n    </a>\n  </h1>\n</template>\n\n<script lang=\"ts\">\nimport type { GlobalConfig } from '../../type';\nimport { GLOBAL_CONFIG } from '../../SymbolKey';\nimport { defineComponent, inject } from 'vue';\nimport logo from '../../assets/logo.svg';\nexport default defineComponent({\n  setup() {\n    return { logo, isZhCN: inject<GlobalConfig>(GLOBAL_CONFIG).isZhCN.value };\n  },\n});\n</script>\n\n<style lang=\"less\" scoped>\n#logo {\n  height: var(--header-height);\n  padding-left: 40px;\n  overflow: hidden;\n  color: var(--site-text-color);\n  font-size: 18px;\n  line-height: var(--header-height);\n  white-space: nowrap;\n  text-decoration: none;\n\n  .ant-row-rtl & {\n    float: right;\n    padding-right: 40px;\n    padding-left: 0;\n  }\n\n  img {\n    position: relative;\n    top: -1.5px;\n    height: 32px;\n    margin-right: 16px;\n\n    .ant-row-rtl & {\n      margin-right: 0;\n      margin-left: 16px;\n    }\n  }\n}\n\n@media only screen and (max-width: 767.99px) {\n  #logo {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/layouts/header/Menu.vue",
    "content": "<template>\n  <Navigation @langChange=\"onLangChange\" />\n  <template v-if=\"isMobile\">\n    <Ecosystem />\n  </template>\n  <template v-else>\n    <a-select\n      key=\"version\"\n      class=\"version\"\n      size=\"small\"\n      :dropdown-match-select-width=\"false\"\n      :default-value=\"antdVersion\"\n    >\n      <a-select-option :value=\"antdVersion\">{{ antdVersion }}</a-select-option>\n      <a-select-option value=\"3.x\" @click=\"changeVersion('3x')\">3.x</a-select-option>\n      <a-select-option value=\"2.x\" @click=\"changeVersion('2x')\">\n        2.x (Not Recommended)\n      </a-select-option>\n      <a-select-option value=\"1.x\" @click=\"changeVersion('1x')\">1.x (For Vue 2)</a-select-option>\n    </a-select>\n    <a-button\n      key=\"lang-button\"\n      size=\"small\"\n      class=\"header-button header-lang-button\"\n      @click=\"onLangChange\"\n    >\n      {{ $t('app.header.lang') }}\n    </a-button>\n    <More />\n    <Github />\n  </template>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue';\nimport Github from './Github.vue';\nimport More from './More.vue';\nimport Navigation from './Navigation.vue';\nimport Ecosystem from './Ecosystem.vue';\nimport { version } from 'ant-design-vue';\nimport { isZhCN, getLocalizedPathname } from '../../utils/util';\nimport { useRoute } from 'vue-router';\nexport default defineComponent({\n  name: 'HeaderMenu',\n  components: {\n    Navigation,\n    Github,\n    More,\n    Ecosystem,\n  },\n  props: ['isMobile'],\n  setup() {\n    const antdVersion = ref(version);\n    const route = useRoute();\n    const onLangChange = () => {\n      const {\n        location: { pathname },\n      } = window;\n      const currentProtocol = `${window.location.protocol}//`;\n      const currentHref = window.location.href.substring(currentProtocol.length);\n\n      localStorage.setItem('locale', isZhCN(pathname) ? 'en-US' : 'zh-CN');\n\n      window.location.href =\n        currentProtocol +\n        currentHref.replace(\n          window.location.pathname,\n          getLocalizedPathname(pathname, !isZhCN(pathname)).path,\n        );\n    };\n\n    const changeVersion = (v: string) => {\n      location.href = `https://${v}.antdv.com${route.fullPath}`;\n    };\n    return {\n      onLangChange,\n      antdVersion,\n      changeVersion,\n    };\n  },\n});\n</script>\n<style lang=\"less\" scoped></style>\n"
  },
  {
    "path": "site/src/layouts/header/More.vue",
    "content": "<template>\n  <a-dropdown placement=\"bottom\">\n    <a-button size=\"small\" class=\"header-button\">\n      {{ $t('app.header.menu.more') }}\n      <DownOutlined\n        :style=\"{\n          fontSize: '9px',\n          margin: downstyle,\n          verticalAlign: 'middle',\n        }\"\n      />\n    </a-button>\n    <template #overlay>\n      <Ecosystem />\n    </template>\n  </a-dropdown>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue';\nimport { DownOutlined } from '@ant-design/icons-vue';\nimport type { GlobalConfig } from '../../type';\nimport { GLOBAL_CONFIG } from '../../SymbolKey';\nimport { getLocalizedPathname } from '../../utils/util';\nimport Ecosystem from './Ecosystem.vue';\n\nexport default defineComponent({\n  components: {\n    DownOutlined,\n    Ecosystem,\n  },\n  props: {\n    isRTL: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  setup(props) {\n    const downstyle = computed(() => (props.isRTL ? '-1px 2px 0 0' : '-1px 0 0 2px'));\n    return {\n      downstyle,\n      isZhCN: inject<GlobalConfig>(GLOBAL_CONFIG).isZhCN.value,\n      getLocalizedPathname,\n    };\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/layouts/header/Navigation.vue",
    "content": "<template>\n  <a-menu\n    id=\"nav\"\n    class=\"menu-site\"\n    :mode=\"menuMode\"\n    :selected-keys=\"[activeMenuItem]\"\n    disabled-overflow\n  >\n    <a-menu-item key=\"docs/vue\">\n      <router-link :to=\"getLocalizedPathname('/docs/vue/introduce', isZhCN)\">\n        {{ $t('app.header.menu.documentation') }}\n      </router-link>\n    </a-menu-item>\n    <a-menu-item key=\"components\">\n      <router-link :to=\"getLocalizedPathname('/components/overview/', isZhCN)\">\n        {{ $t('app.header.menu.components') }}\n      </router-link>\n    </a-menu-item>\n    <a-sub-menu v-if=\"isZhCN\" key=\"advanced\">\n      <template #title>\n        <span style=\"position: relative\">\n          高级组件\n          <a-badge color=\"red\" style=\"position: absolute; top: -35px; right: -15px\" />\n        </span>\n      </template>\n      <a-menu-item key=\"surely-table\">\n        <a\n          href=\"https://www.surelyvue.com\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          style=\"position: relative\"\n        >\n          Surely Table\n        </a>\n      </a-menu-item>\n    </a-sub-menu>\n    <a-menu-item key=\"store\">\n      <a\n        href=\"https://store.antdv.com/pro/\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        style=\"position: relative\"\n      >\n        {{ $t('app.header.menu.store') }}\n        <!-- <a-badge color=\"red\" style=\"position: absolute; top: -35px; right: -15px\" /> -->\n      </a>\n    </a-menu-item>\n    <a-menu-item v-if=\"isZhCN\" key=\"geektime\">\n      <a\n        href=\"https://time.geekbang.org/course/intro/100024601?code=KHKYcoBU6vZa8nMglg7AWfDxxi3BWrz9INAzAY3umPk%3D\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        style=\"position: relative\"\n      >\n        实战课程\n        <!-- <a-badge color=\"red\" style=\"position: absolute; top: -35px; right: -15px\" /> -->\n      </a>\n    </a-menu-item>\n    <template v-if=\"isMobile\">\n      <a-menu-item key=\"switch-lang\" @click=\"$emit('langChange')\">\n        {{ $t('app.header.lang') }}\n      </a-menu-item>\n      <a-menu-item key=\"github\">\n        <a\n          href=\"https://github.com/vueComponent/ant-design-vue\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          Github\n        </a>\n      </a-menu-item>\n    </template>\n  </a-menu>\n</template>\n<script lang=\"ts\">\nimport type { GlobalConfig } from '../../type';\nimport { GLOBAL_CONFIG } from '../../SymbolKey';\nimport { getLocalizedPathname } from '../../utils/util';\nimport { computed, defineComponent, inject, ref, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nexport default defineComponent({\n  emits: ['langChange'],\n  setup() {\n    const globalConfig = inject<GlobalConfig>(GLOBAL_CONFIG);\n    const menuMode = computed(() => {\n      return globalConfig.isMobile.value ? 'inline' : 'horizontal';\n    });\n    const route = useRoute();\n    const activeMenuItem = ref('home');\n    watch(\n      () => route.path,\n      pathname => {\n        const modules = pathname.split('/');\n        if (pathname === '/docs/resources' || pathname === '/docs/resources-cn') {\n          activeMenuItem.value = 'docs/resources';\n        } else if (modules[1] === 'components') {\n          activeMenuItem.value = 'components';\n        } else if (modules[1] === 'docs') {\n          activeMenuItem.value = `${modules[1]}/${modules[2]}`;\n        } else {\n          activeMenuItem.value = 'home';\n        }\n      },\n      { immediate: true },\n    );\n    return {\n      isMobile: globalConfig.isMobile,\n      isZhCN: globalConfig.isZhCN,\n      getLocalizedPathname,\n      menuMode,\n      activeMenuItem,\n    };\n  },\n});\n</script>\n<style lang=\"less\">\n#nav {\n  height: 100%;\n  font-size: 14px;\n  border: 0;\n\n  &.ant-menu-horizontal {\n    border-bottom: none;\n\n    & > .ant-menu-item,\n    & > .ant-menu-submenu {\n      min-width: (40px + 12px * 2);\n      height: var(--header-height);\n      padding-right: 12px;\n      padding-left: 12px;\n      line-height: var(--header-height);\n\n      &::after {\n        top: 0;\n        right: 12px;\n        bottom: auto;\n        left: 12px;\n        border-width: var(--menu-item-border);\n      }\n    }\n\n    & .ant-menu-submenu-title .anticon {\n      margin: 0;\n    }\n\n    & > .ant-menu-item-selected {\n      a {\n        color: var(--primary-color);\n      }\n    }\n  }\n\n  & > .ant-menu-item,\n  & > .ant-menu-submenu {\n    text-align: center;\n  }\n}\n\n.header-link {\n  color: var(--site-text-color);\n}\n\n.ant-menu-item-active .header-link {\n  color: var(--primary-color);\n}\n\n// Popover menu is only used for mobile\n.popover-menu {\n  width: 300px;\n\n  .ant-popover-inner-content {\n    padding: 0;\n\n    #nav {\n      .ant-menu-item,\n      .ant-menu-submenu {\n        text-align: left;\n      }\n\n      .ant-menu-item-group-title {\n        padding-left: 24px;\n      }\n\n      .ant-menu-item-group-list {\n        padding: 0 16px;\n      }\n\n      .ant-menu-item,\n      a {\n        color: #333;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/layouts/header/SearchBox.less",
    "content": "#search-box {\n  position: relative;\n  display: flex;\n  flex: auto !important;\n  align-items: center;\n  height: 22px;\n  margin: 0 auto 0 0 !important;\n  padding-left: 16px;\n  line-height: 22px;\n  white-space: nowrap;\n  border-left: 1px solid var(--site-border-color-split);\n  transition: width 0.5s;\n\n  .ant-row-rtl & {\n    margin: 0 0 0 auto !important;\n    padding-right: 16px;\n    padding-left: 0;\n    border-right: 1px solid var(--site-border-color-split);\n    border-left: none;\n  }\n\n  > * {\n    flex: auto;\n  }\n\n  .anticon {\n    position: absolute;\n    top: 50%;\n    z-index: 1;\n    flex: none;\n    color: var(--search-icon-color);\n    transform: translateY(-50%);\n    pointer-events: none;\n  }\n\n  input {\n    width: 100%;\n    max-width: 200px;\n    padding-left: 20px;\n    font-size: 14px;\n    background: transparent;\n    border: 0;\n    box-shadow: none;\n\n    .ant-row-rtl & {\n      padding-right: 20px;\n      padding-left: 11px;\n    }\n\n    &::placeholder {\n      color: #a3b1bf;\n    }\n  }\n\n  // ================ Narrow ================\n  &.narrow-mode {\n    flex: none !important;\n    width: 30px;\n\n    &:hover {\n      .anticon {\n        color: #a3b1bf;\n      }\n    }\n\n    .anticon {\n      right: 0;\n      left: auto;\n\n      .ant-row-rtl & {\n        right: auto;\n        left: 0;\n      }\n    }\n\n    input {\n      max-width: none;\n      padding-right: 20px;\n      padding-left: 11px;\n      cursor: pointer;\n\n      .ant-row-rtl & {\n        padding-right: 11px;\n        padding-left: 20px;\n      }\n    }\n\n    &.focused {\n      width: 500px;\n\n      .anticon {\n        color: var(--search-icon-color);\n      }\n\n      input {\n        cursor: text;\n      }\n    }\n  }\n}\n\n.component-select {\n  &.ant-select-dropdown {\n    font-size: 14px;\n    border: 0;\n    border-radius: 0;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.25);\n  }\n  .ant-select-dropdown-menu {\n    max-height: 200px;\n  }\n  .ant-select-dropdown-menu-item {\n    border-radius: 0 !important;\n  }\n  .ant-component-decs {\n    position: absolute;\n    right: 16px;\n    color: #aaa;\n    font-size: 12px;\n\n    .ant-row-rtl & {\n      right: auto;\n      left: 16px;\n    }\n  }\n}\n\n@media only screen and (max-width: 767.99px) {\n  #search-box {\n    display: none;\n  }\n}\n"
  },
  {
    "path": "site/src/layouts/header/SearchBox.vue",
    "content": "<template>\n  <div id=\"search-box\" :class=\"{ 'narrow-mode': responsive, focused: !!focused }\">\n    <SearchOutlined />\n    <a-input\n      ref=\"inputRef\"\n      :placeholder=\"searchPlaceholder\"\n      @focus=\"triggerFocus(true)\"\n      @blur=\"triggerFocus(false)\"\n    ></a-input>\n  </div>\n</template>\n<script lang=\"ts\">\nimport { ref, defineComponent } from 'vue';\nimport { SearchOutlined } from '@ant-design/icons-vue';\nexport default defineComponent({\n  name: 'SearchBox',\n  components: {\n    SearchOutlined,\n  },\n  props: ['isZhCN', 'responsive'],\n  emits: ['triggerFocus'],\n  setup(props, { emit }) {\n    const inputRef = ref();\n    const focused = ref(false);\n    function triggerFocus(focus: boolean) {\n      focused.value = focus;\n      emit('triggerFocus', focus);\n    }\n    return {\n      inputRef,\n      focused,\n      triggerFocus,\n      searchPlaceholder: props.isZhCN ? '搜索文档' : 'Search Docs',\n    };\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/layouts/header/index.less",
    "content": "@import './SearchBox.less';\n\n#header {\n  position: relative;\n  z-index: 10;\n  max-width: 100%;\n  background: var(--component-background);\n  box-shadow: var(--box-shadow);\n\n  .menu-row {\n    display: flex;\n    align-items: center;\n    margin: 0;\n\n    > * {\n      flex: none;\n      margin: 0 16px 0 0;\n\n      &:last-child {\n        margin-right: 40px;\n      }\n    }\n  }\n\n  // Adjust github button style\n\n  .ant-row-rtl {\n    .menu-row {\n      > * {\n        &:last-child {\n          margin-right: 16px;\n          margin-left: 40px;\n        }\n      }\n    }\n  }\n\n  // Buttons\n  .header-button {\n    color: var(--text-color);\n  }\n}\n\n@media only screen and (max-width: 767.99px) {\n  #header {\n    text-align: center;\n  }\n}\n\n// Popover menu is only used for mobile\n.popover-menu {\n  width: 300px;\n\n  .ant-popover-inner-content {\n    padding: 0;\n\n    #nav {\n      .ant-menu-item,\n      .ant-menu-submenu {\n        text-align: left;\n      }\n\n      .ant-menu-item-group-title {\n        padding-left: 24px;\n      }\n\n      .ant-menu-item-group-list {\n        padding: 0 16px;\n      }\n\n      .ant-menu-item,\n      a {\n        color: #333;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/layouts/header/index.vue",
    "content": "<template>\n  <header id=\"header\" :class=\"headerClassName\">\n    <a-row :style=\"{ flexFlow: 'nowrap', height: 64, position: 'relative' }\">\n      <a-col v-bind=\"colProps[0]\">\n        <Logo />\n      </a-col>\n      <a-col v-bind=\"colProps[1]\" class=\"menu-row\">\n        <SearchBox\n          key=\"search\"\n          :is-zh-c-n=\"isZhCN\"\n          :responsive=\"responsive\"\n          @triggerFocus=\"onTriggerSearching\"\n        />\n        <Menu v-if=\"!isMobile\" />\n      </a-col>\n      <a-popover\n        v-model:open=\"menuOpen\"\n        overlay-class-name=\"popover-menu\"\n        placement=\"bottomRight\"\n        trigger=\"click\"\n        arrow-point-at-center\n      >\n        <UnorderedListOutlined class=\"nav-phone-icon\" />\n        <template #content>\n          <Menu :is-mobile=\"isMobile\" />\n        </template>\n      </a-popover>\n    </a-row>\n    <a-modal\n      title=\"新版发布，邀您体验\"\n      :open=\"visibleAlertBanner\"\n      :footer=\"null\"\n      @update:open=\"visibleAlertBanner = false\"\n    >\n      <ul>\n        <li class=\"alert-list-item\">\n          <strong>Ant Design Vue 4</strong>\n          ：五大新组件，全新 Design Token\n        </li>\n        <li class=\"alert-list-item\">\n          <strong>Surely Table</strong>\n          ：支持高性能编辑模式了\n          <a target=\"_blank\" href=\"https://www.surelyvue.com/\">立即体验</a>\n        </li>\n        <li class=\"alert-list-item\">\n          <strong>Admin Pro</strong>\n          ：已同步更新 v4 版本\n          <a target=\"_blank\" href=\"https://store.antdv.com/pro/preview/workplace\">立即体验</a>\n        </li>\n      </ul>\n    </a-modal>\n  </header>\n</template>\n<script lang=\"ts\">\nimport type { GlobalConfig } from '../../type';\nimport { GLOBAL_CONFIG } from '../../SymbolKey';\nimport { getLocalizedPathname } from '../../utils/util';\nimport { computed, defineComponent, inject, onMounted, ref, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nimport Logo from './Logo.vue';\nimport Menu from './Menu.vue';\nimport { UnorderedListOutlined } from '@ant-design/icons-vue';\nimport SearchBox from './SearchBox.vue';\nexport default defineComponent({\n  components: {\n    Logo,\n    Menu,\n    UnorderedListOutlined,\n    SearchBox,\n    // CloseOutlined,\n  },\n  setup() {\n    const route = useRoute();\n    const cancelButtonProps: any = {\n      style: { display: 'none' },\n    };\n    const globalConfig = inject<GlobalConfig>(GLOBAL_CONFIG);\n    const isHome = computed(() => {\n      return ['', 'index', 'index-cn'].includes(route.path);\n    });\n\n    const menuOpen = ref(false);\n    const colProps = isHome.value\n      ? [{ flex: 'none' }, { flex: 'auto' }]\n      : [\n          {\n            xxxl: 4,\n            xxl: 4,\n            xl: 5,\n            lg: 6,\n            md: 6,\n            sm: 24,\n            xs: 24,\n          },\n          {\n            xxxl: 20,\n            xxl: 20,\n            xl: 19,\n            lg: 18,\n            md: 18,\n            sm: 0,\n            xs: 0,\n          },\n        ];\n    const searching = ref(false);\n    const onTriggerSearching = (value: boolean) => {\n      searching.value = value;\n    };\n    const initDocSearch = () => {\n      window.docsearch({\n        apiKey: '92003c1d1d07beef165b08446f4224a3',\n        indexName: 'antdv',\n        inputSelector: '#search-box input',\n        algoliaOptions: { facetFilters: [`tags:${globalConfig.isZhCN.value ? 'cn' : 'en'}`] },\n        transformData(hits: any[]) {\n          hits.forEach(hit => {\n            hit.url = hit.url.replace('www.antdv.com', window.location.host);\n            hit.url = hit.url.replace('https:', window.location.protocol);\n          });\n          return hits;\n        },\n        debug: false, // Set debug to true if you want to inspect the dropdown\n      });\n    };\n    onMounted(() => {\n      setTimeout(() => {\n        initDocSearch();\n      });\n    });\n    const visibleAdblockBanner = ref(false);\n    watch(globalConfig?.blocked, val => {\n      visibleAdblockBanner.value = val;\n    });\n    // const alertKey = 'ant-design-vue-4-alert';\n    const visibleAlertBanner = ref(false);\n    // watch(visibleAlertBanner, () => {\n    //   if (!visibleAlertBanner.value) {\n    //     localStorage.setItem(alertKey, version);\n    //   }\n    // });\n    return {\n      isZhCN: globalConfig.isZhCN,\n      isMobile: globalConfig.isMobile,\n      responsive: globalConfig.responsive,\n      getLocalizedPathname,\n      visibleAdblockBanner,\n      headerClassName: {\n        clearfix: true,\n        'home-header': isHome.value,\n      },\n      colProps,\n      menuOpen,\n      onTriggerSearching,\n      visibleAlertBanner,\n      cancelButtonProps,\n    };\n  },\n});\n</script>\n<style lang=\"less\" src=\"./index.less\"></style>\n<style scope>\n.adblock-banner,\n.alert-banner {\n  position: relative;\n  z-index: 100;\n  padding: 16px;\n  line-height: 28px;\n  color: #8590a6;\n  text-align: center;\n  background-color: #141414;\n}\n.alert-banner {\n  color: #fff;\n  padding: 5px;\n}\n.alert-banner a {\n  color: #fff;\n  text-decoration: underline;\n}\n.alert-banner .close-icon {\n  top: 12px;\n}\n.close-icon {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n}\n.alert-list-item {\n  padding: 8px 0;\n}\n</style>\n"
  },
  {
    "path": "site/src/layouts/icons/Compact.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Compact = defineComponent({\n  name: 'Compact',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 17 16\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Compact-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Compact-\\u9ED8\\u8BA4\"\n              transform=\"translate(-9.000000, -82.500000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Compact-\\u9009\\u9879\\u4E00\" transform=\"translate(9.268811, 79.500000)\">\n                <g id=\"Compact-smaller\" transform=\"translate(0.000000, 3.000000)\">\n                  <rect\n                    id=\"Compact-\\u77E9\\u5F62\"\n                    opacity=\"0\"\n                    x=\"0\"\n                    y=\"0\"\n                    width=\"16\"\n                    height=\"16\"\n                  ></rect>\n                  <path\n                    id=\"Compact-\\u5F62\\u72B6\"\n                    d=\"M10,14 L10,12 C10,10.8666667 10.8666667,10 12,10 L14,10 C14.4,10 14.6666667,10.2666667 14.6666667,10.6666667 C14.6666667,11.0666667 14.4,11.3333333 14,11.3333333 L12,11.3333333 C11.6,11.3333333 11.3333333,11.6 11.3333333,12 L11.3333333,14 C11.3333333,14.4 11.0666667,14.6666667 10.6666667,14.6666667 C10.2666667,14.6666667 10,14.4 10,14 L10,14 Z M4.66666667,14 L4.66666667,12 C4.66666667,11.6 4.4,11.3333333 4,11.3333333 L2,11.3333333 C1.6,11.3333333 1.33333333,11.0666667 1.33333333,10.6666667 C1.33333333,10.2666667 1.6,10 2,10 L4,10 C5.13333333,10 6,10.8666667 6,12 L6,14 C6,14.4 5.73333333,14.6666667 5.33333333,14.6666667 C4.93333333,14.6666667 4.66666666,14.4 4.66666667,14 L4.66666667,14 Z M12,6 C10.8666667,6 10,5.13333333 10,4 L10,2 C10,1.6 10.2666667,1.33333333 10.6666667,1.33333333 C11.0666667,1.33333333 11.3333333,1.6 11.3333333,2 L11.3333333,4 C11.3333333,4.4 11.6,4.66666667 12,4.66666667 L14,4.66666667 C14.4,4.66666667 14.6666667,4.93333334 14.6666667,5.33333333 C14.6666667,5.73333331 14.4,6 14,6 L12,6 L12,6 Z M2,6 C1.6,6 1.33333333,5.73333333 1.33333333,5.33333333 C1.33333333,4.93333333 1.6,4.66666666 2,4.66666667 L4,4.66666667 C4.4,4.66666667 4.66666667,4.4 4.66666667,4 L4.66666667,2 C4.66666667,1.6 4.93333334,1.33333333 5.33333333,1.33333333 C5.73333331,1.33333333 6,1.6 6,2 L6,4 C6,5.13333333 5.13333333,6 4,6 L2,6 Z\"\n                  ></path>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Compact;\n"
  },
  {
    "path": "site/src/layouts/icons/Dark.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Dark = defineComponent({\n  name: 'Dark',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 17 17\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Dark-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1px\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Dark-\\u9ED8\\u8BA4\"\n              transform=\"translate(-9.000000, -49.500000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Dark-\\u7F16\\u7EC4-17\" transform=\"translate(0.000000, 42.500000)\">\n                <g id=\"Dark-moon\" transform=\"translate(9.268811, 7.500000)\">\n                  <rect\n                    id=\"Dark-\\u77E9\\u5F62\"\n                    opacity=\"0\"\n                    x=\"0\"\n                    y=\"0\"\n                    width=\"16\"\n                    height=\"16\"\n                  ></rect>\n                  <path\n                    d=\"M8,1.33333333 C8.14933333,1.33333333 8.29688889,1.33844444 8.44266667,1.34866666 C8.14755556,1.98422221 8,2.64577777 8,3.33333333 C8,3.96533333 8.12333333,4.56955555 8.37,5.146 C8.61666667,5.72244445 8.94822222,6.21888889 9.36466667,6.63533333 C9.78111112,7.05177777 10.2775556,7.38333332 10.854,7.63 C11.4304444,7.87666668 12.0346667,8.00000001 12.6666667,8 C13.3542222,8 14.0157778,7.85244444 14.6513333,7.55733333 C14.6615556,7.70311111 14.6666667,7.85066667 14.6666667,8 C14.6666667,8.604 14.5868889,9.19422222 14.4273333,9.77066667 C14.2677778,10.3471111 14.0446667,10.8793333 13.758,11.3673333 C13.4713333,11.8553333 13.1233333,12.3042222 12.714,12.714 C12.3046667,13.1237778 11.8557778,13.4717778 11.3673333,13.758 C10.8788889,14.0442222 10.3466667,14.2673333 9.77066667,14.4273333 C9.19466667,14.5873333 8.60444445,14.6671111 8,14.6666685 C7.39555555,14.6662222 6.80533333,14.5864444 6.22933333,14.4273333 C5.65333333,14.2682222 5.1211111,14.0451111 4.63266666,13.758 C4.14422221,13.4708889 3.69533332,13.1228889 3.28599998,12.714 C2.87666665,12.3051111 2.52866665,11.8562222 2.24199998,11.3673333 C1.95533332,10.8784444 1.73222221,10.3462222 1.57266666,9.77066667 C1.4131111,9.19511112 1.33333333,8.6048889 1.33333333,8 C1.33333333,7.3951111 1.4131111,6.80488888 1.57266666,6.22933333 C1.73222221,5.65377778 1.95533332,5.12155555 2.24199998,4.63266666 C2.52866665,4.14377776 2.87666665,3.69488887 3.28599998,3.28599998 C3.69533332,2.8771111 4.14422221,2.5291111 4.63266666,2.24199998 C5.1211111,1.95488887 5.65333333,1.73177776 6.22933333,1.57266666 C6.80533333,1.41355555 7.39555555,1.33377778 8,1.33333333 Z M6.68733333,2.828 C6.11444444,2.97377778 5.58066667,3.20977778 5.086,3.536 C4.59133333,3.86222222 4.166,4.24933333 3.81,4.69733333 C3.454,5.14533333 3.17444444,5.65488889 2.97133333,6.226 C2.76822221,6.79711111 2.66666666,7.38822222 2.66666666,7.99933333 C2.66666666,8.72155555 2.80733332,9.41155555 3.08866666,10.0693333 C3.36999999,10.7271111 3.74933332,11.2948889 4.22666666,11.7726667 C4.70399999,12.2504444 5.27177777,12.6297778 5.92999998,12.9106667 C6.5882222,13.1915556 7.2782222,13.3322222 7.99999998,13.3326667 C8.6111111,13.3326667 9.20222221,13.2311111 9.77333331,13.028 C10.3444444,12.8248889 10.854,12.5453333 11.302,12.1893333 C11.75,11.8333333 12.1371111,11.408 12.4633333,10.9133333 C12.7895555,10.4186666 13.0255555,9.88488887 13.1713333,9.31199998 C13.022,9.32577777 12.8535555,9.33266666 12.666,9.33266666 C11.8535555,9.33266666 11.0775555,9.17377777 10.338,8.85599998 C9.59844443,8.5382222 8.96044443,8.11111109 8.42399998,7.57466666 C7.88755554,7.03822222 7.46044443,6.40022222 7.14266666,5.66066666 C6.82488889,4.92111109 6.66599999,4.14511109 6.66599998,3.33266666 C6.66599998,3.1451111 6.67288888,2.97666666 6.68666666,2.82733333 L6.68733333,2.828 Z\"\n                    id=\"Dark-\\u5F62\\u72B6\"\n                  ></path>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Dark;\n"
  },
  {
    "path": "site/src/layouts/icons/Light.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Light = defineComponent({\n  name: 'Light',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"0 0 13 13\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            id=\"Light-\\u9875\\u9762-1\"\n            stroke=\"none\"\n            stroke-width=\"1px\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n          >\n            <g\n              id=\"Light-\\u4E3B\\u9898\\u5305\"\n              transform=\"translate(-2943.000000, -292.000000)\"\n              fill=\"currentColor\"\n              fill-rule=\"nonzero\"\n            >\n              <g id=\"Light-\\u7F16\\u7EC4-12\" transform=\"translate(2415.000000, 222.000000)\">\n                <g\n                  id=\"Light-\\u89C6\\u56FE\\u5207\\u6362-\\u7F16\\u8F91\\u6001\"\n                  transform=\"translate(518.000000, 60.000000)\"\n                >\n                  <g id=\"Light-eye\" transform=\"translate(8.000000, 8.000000)\">\n                    <g id=\"Light-sun\" transform=\"translate(2.000000, 2.000000)\">\n                      <rect\n                        id=\"Light-\\u77E9\\u5F62\"\n                        opacity=\"0\"\n                        x=\"0\"\n                        y=\"0\"\n                        width=\"13\"\n                        height=\"13\"\n                      ></rect>\n                      <path\n                        d=\"M6.5,9.75 C4.7051875,9.75 3.25,8.2948125 3.25,6.5 C3.25,4.7051875 4.7051875,3.25 6.5,3.25 C8.2948125,3.25 9.75,4.7051875 9.75,6.5 C9.75,8.2948125 8.2948125,9.75 6.5,9.75 Z M6.5,8.66666667 C7.69661696,8.66666667 8.66666667,7.69661696 8.66666667,6.5 C8.66666667,5.30338304 7.69661696,4.33333333 6.5,4.33333333 C5.30338305,4.33333333 4.33333336,5.30338305 4.33333336,6.5 C4.33333336,7.69661695 5.30338305,8.66666667 6.5,8.66666667 Z M5.95833333,1.08333333 C5.95833333,0.784179087 6.20084576,0.541666658 6.5,0.541666658 C6.79915424,0.541666658 7.04166667,0.784179087 7.04166667,1.08333333 L7.04166667,2.16666667 C7.04166667,2.46582091 6.79915424,2.70833334 6.5,2.70833334 C6.20084576,2.70833334 5.95833333,2.46582091 5.95833333,2.16666667 L5.95833333,1.08333333 L5.95833333,1.08333333 Z M5.95833333,10.8333333 C5.95833333,10.5341791 6.20084576,10.2916667 6.5,10.2916667 C6.79915424,10.2916667 7.04166667,10.5341791 7.04166667,10.8333333 L7.04166667,11.9166667 C7.04166667,12.2158209 6.79915424,12.4583333 6.5,12.4583333 C6.20084576,12.4583333 5.95833333,12.2158209 5.95833333,11.9166667 L5.95833333,10.8333333 L5.95833333,10.8333333 Z M1.08333333,7.04166667 C0.784179087,7.04166667 0.541666658,6.79915424 0.541666658,6.5 C0.541666658,6.20084576 0.784179087,5.95833333 1.08333333,5.95833333 L2.16666667,5.95833333 C2.46582091,5.95833333 2.70833334,6.20084576 2.70833334,6.5 C2.70833334,6.79915424 2.46582091,7.04166667 2.16666667,7.04166667 L1.08333333,7.04166667 L1.08333333,7.04166667 Z M10.8333333,7.04166667 C10.5341791,7.04166667 10.2916667,6.79915424 10.2916667,6.5 C10.2916667,6.20084576 10.5341791,5.95833333 10.8333333,5.95833333 L11.9166667,5.95833333 C12.2158209,5.95833333 12.4583333,6.20084576 12.4583333,6.5 C12.4583333,6.79915424 12.2158209,7.04166667 11.9166667,7.04166667 L10.8333333,7.04166667 L10.8333333,7.04166667 Z M2.05454167,2.82045833 C1.84926545,2.60791971 1.85220137,2.27007933 2.06114035,2.06114035 C2.27007933,1.85220137 2.60791971,1.84926545 2.82045833,2.05454167 L3.63295833,2.86704167 C3.83823455,3.07958029 3.83529863,3.41742067 3.62635965,3.62635965 C3.41742067,3.83529863 3.07958029,3.83823455 2.86704167,3.63295833 L2.05454167,2.82045833 L2.05454167,2.82045833 Z M9.36704167,10.1329583 C9.16176545,9.92041971 9.16470137,9.58257933 9.37364035,9.37364035 C9.58257933,9.16470137 9.92041971,9.16176545 10.1329583,9.36704167 L10.9454583,10.1795417 C11.1507346,10.3920803 11.1477986,10.7299207 10.9388596,10.9388596 C10.7299207,11.1477986 10.3920803,11.1507346 10.1795417,10.9454583 L9.36704167,10.1329583 L9.36704167,10.1329583 Z M2.82045833,10.9454583 C2.60791971,11.1507346 2.27007933,11.1477986 2.06114035,10.9388596 C1.85220137,10.7299207 1.84926545,10.3920803 2.05454167,10.1795417 L2.86704167,9.36704167 C3.07958029,9.16176545 3.41742067,9.16470137 3.62635965,9.37364035 C3.83529863,9.58257933 3.83823455,9.92041971 3.63295833,10.1329583 L2.82045833,10.9454583 L2.82045833,10.9454583 Z M10.1329583,3.63295833 C9.92041971,3.83823455 9.58257933,3.83529863 9.37364035,3.62635965 C9.16470137,3.41742067 9.16176545,3.07958029 9.36704167,2.86704167 L10.1795417,2.05454167 C10.3920803,1.84926545 10.7299207,1.85220137 10.9388596,2.06114035 C11.1477986,2.27007933 11.1507346,2.60791971 10.9454583,2.82045833 L10.1329583,3.63295833 L10.1329583,3.63295833 Z\"\n                        id=\"Light-\\u5F62\\u72B6\"\n                      ></path>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Light;\n"
  },
  {
    "path": "site/src/layouts/icons/ThemeEditorIcon.tsx",
    "content": "import type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\n\nconst Dark = defineComponent({\n  name: 'Dark',\n  setup(_, { attrs }) {\n    return () => {\n      return (\n        <svg\n          {...attrs}\n          width=\"1em\"\n          height=\"1em\"\n          style={{\n            verticalAlign: '-0.125em',\n            ...(attrs.style as CSSProperties),\n          }}\n          class={['nanqu-token-panel-icon', attrs.class].filter(Boolean).join(' ')}\n          viewBox=\"64 64 896 896\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"currentColor\"\n        >\n          <path d=\"M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 00-12.8 0l-48 48a9.11 9.11 0 000 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z\"></path>\n        </svg>\n      );\n    };\n  },\n});\n\nexport default Dark;\n"
  },
  {
    "path": "site/src/layouts/icons/ThemeIcon.vue",
    "content": "<template>\n  <Icon v-bind=\"$attrs\">\n    <template #component>\n      <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 21 21\" fill=\"currentColor\" v-bind=\"$attrs\">\n        <g fillRule=\"evenodd\">\n          <g fillRule=\"nonzero\">\n            <path\n              d=\"M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </template>\n  </Icon>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport Icon from '@ant-design/icons-vue';\nexport default defineComponent({\n  name: 'ThemeIcon',\n  components: {\n    Icon,\n  },\n  setup() {\n    return {};\n  },\n});\n</script>\n<style lang=\"less\" scoped></style>\n"
  },
  {
    "path": "site/src/layouts/index.vue",
    "content": "<template>\n  <TopAd :is-c-n=\"isZhCN\" />\n  <Header />\n  <div v-if=\"headers.length\" class=\"toc-affix\" :style=\"y > 102 ? 'position:fixed; top: 16px;' : ''\">\n    <a-anchor style=\"width: 160px\" :items=\"headers\">\n      <template #customTitle=\"item\">\n        <LinkOutlined v-if=\"item.target\" />\n        {{ item.title }}\n      </template>\n    </a-anchor>\n    <a v-if=\"isAdVisible\" :href=\"'https://mentorbook.ai'\" target=\"_blank\" style=\"\">\n      <img\n        :src=\"isZhCN ? '/MPU_176x250_bf_zh.svg' : '/MPU_176x250_bf_en.svg'\"\n        style=\"width: 152px; display: block; margin-top: 16px\"\n      />\n    </a>\n  </div>\n  <div class=\"main-wrapper\">\n    <a-row>\n      <template v-if=\"isMobile\">\n        <a-drawer\n          key=\"mobile-menu\"\n          v-model:open=\"visible\"\n          :closable=\"false\"\n          placement=\"left\"\n          class=\"drawer drawer-left\"\n          wrapper-class-name=\"drawer-wrapper\"\n          width=\"60%\"\n        >\n          <surelyVueVue />\n          <Menu :menus=\"dataSource\" :active-menu-item=\"activeMenuItem\" :is-zh-c-n=\"isZhCN\" />\n        </a-drawer>\n        <div class=\"drawer-handle\" @click=\"handleClickShowButton\">\n          <close-outlined v-if=\"visible\" :style=\"iconStyle\" />\n          <MenuOutlined v-else :style=\"iconStyle\" />\n        </div>\n      </template>\n      <template v-else>\n        <a-col :xxxl=\"4\" :xxl=\"4\" :xl=\"5\" :lg=\"6\" :md=\"6\" :sm=\"24\" :xs=\"24\" class=\"main-menu\">\n          <a-affix>\n            <section class=\"main-menu-inner\">\n              <!-- <Sponsors :is-c-n=\"isZhCN\" /> -->\n              <div>\n                <surelyVueVue />\n              </div>\n              <Menu :menus=\"dataSource\" :active-menu-item=\"activeMenuItem\" :is-zh-c-n=\"isZhCN\" />\n            </section>\n          </a-affix>\n        </a-col>\n      </template>\n      <a-col :xxxl=\"20\" :xxl=\"20\" :xl=\"19\" :lg=\"18\" :md=\"18\" :sm=\"24\" :xs=\"24\">\n        <section :class=\"mainContainerClass\">\n          <Demo v-if=\"isDemo\" :page-data=\"pageData\" :is-zh-c-n=\"isZhCN\">\n            <component :is=\"matchCom\" />\n          </Demo>\n          <router-view v-else />\n        </section>\n        <a-float-button-group trigger=\"click\">\n          <template #icon>\n            <ThemeIcon />\n          </template>\n          <a-float-button\n            :tooltip=\"$t('app.floatButton.theme-editor')\"\n            @click=\"$router.push(isZhCN ? '/theme-editor-cn' : '/theme-editor')\"\n          >\n            <template #icon>\n              <ThemeEditorIcon />\n            </template>\n          </a-float-button>\n          <a-float-button\n            :tooltip=\"$t('app.floatButton.dark-theme')\"\n            :type=\"themeMode.theme.value === 'dark' ? 'primary' : 'default'\"\n            @click=\"themeMode.changeTheme(themeMode.theme.value === 'dark' ? 'light' : 'dark')\"\n          >\n            <template #icon>\n              <DarkIcon />\n            </template>\n          </a-float-button>\n          <a-float-button\n            :tooltip=\"$t('app.floatButton.compact-theme')\"\n            :type=\"themeMode.compactTheme.value === 'compact' ? 'primary' : 'default'\"\n            @click=\"\n              themeMode.changeCompactTheme(\n                themeMode.compactTheme.value === 'compact' ? '' : 'compact',\n              )\n            \"\n          >\n            <template #icon>\n              <CompactIcon />\n            </template>\n          </a-float-button>\n        </a-float-button-group>\n        <PrevAndNext :menus=\"menus\" :current-menu-index=\"currentMenuIndex\" :is-zh-c-n=\"isZhCN\" />\n        <Footer />\n      </a-col>\n    </a-row>\n  </div>\n</template>\n<script lang=\"ts\">\nimport { GLOBAL_CONFIG } from '../SymbolKey';\nimport { defineComponent, inject, computed, ref, provide, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nimport Header from './header/index.vue';\nimport Footer from './Footer.vue';\nimport Menu from './Menu.vue';\nimport PrevAndNext from './PrevAndNext.vue';\nimport Demo from './Demo.vue';\nimport useMenus from '../hooks/useMenus';\nimport TopAd from '../components/rice/top_rice.vue';\nimport Sponsors from '../components/rice/sponsors.vue';\nimport RightBottomAd from '../components/rice/right_bottom_rice.vue';\nimport { CloseOutlined, MenuOutlined, LinkOutlined } from '@ant-design/icons-vue';\nimport ThemeIcon from './icons/ThemeIcon.vue';\nimport ThemeEditorIcon from './icons/ThemeEditorIcon';\nimport DarkIcon from './icons/Dark';\nimport CompactIcon from './icons/Compact';\nimport surelyVueVue from '../components/surelyVue.vue';\nimport WWAdsVue from '../components/rice/WWAds.vue';\nimport { useWindowScroll } from '@vueuse/core';\nimport type { GlobalConfig } from '../type';\n\nconst rControl = /[\\u0000-\\u001f]/g;\nconst rSpecial = /[\\s~`!@#$%^&*()\\-_+=[\\]{}|\\\\;:\"'<>,.?/]+/g;\n\nexport default defineComponent({\n  name: 'Layout',\n  components: {\n    TopAd,\n    Sponsors,\n    RightBottomAd,\n    Demo,\n    Header,\n    Footer,\n    Menu,\n    PrevAndNext,\n    CloseOutlined,\n    MenuOutlined,\n    ThemeIcon,\n    ThemeEditorIcon,\n    DarkIcon,\n    CompactIcon,\n    surelyVueVue,\n    WWAdsVue,\n    LinkOutlined,\n  },\n  setup() {\n    const { y } = useWindowScroll();\n    const visible = ref(false);\n    const route = useRoute();\n    const globalConfig = inject<GlobalConfig>(GLOBAL_CONFIG);\n    const { menus, activeMenuItem, currentMenuIndex, dataSource } = useMenus();\n\n    const demos = ref<any[]>([]);\n\n    provide('addDemosInfo', (info: any) => {\n      if (!demos.value.find(d => d.href === info.href)) {\n        demos.value.push(info);\n      }\n    });\n\n    const themeMode = inject('themeMode', {\n      theme: ref('light'),\n      compactTheme: ref('light'),\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      changeTheme: (_key: any) => void 0,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      changeCompactTheme: (_key: any) => void 0,\n    });\n\n    watch(\n      () => route.path,\n      () => {\n        demos.value.length = 0;\n      },\n    );\n\n    const isDemo = computed(() => {\n      return (\n        route.path.indexOf('/components') === 0 && route.path.indexOf('/components/overview') !== 0\n      );\n    });\n    const isTablePage = computed(() => {\n      return route.path.indexOf('/components/table') === 0;\n    });\n    const matchCom = computed(() => {\n      return route.matched[route.matched.length - 1]?.components?.default;\n    });\n    const isZhCN = globalConfig.isZhCN;\n    const pageData = computed(() =>\n      isDemo.value\n        ? matchCom.value[isZhCN.value ? 'CN' : 'US']?.pageData\n        : (matchCom.value as any)?.pageData,\n    );\n    const slugifyTitle = (str: string) => {\n      return (\n        str\n          // Remove control characters\n          .replace(rControl, '')\n          // Replace special characters\n          .replace(rSpecial, '-')\n          // Remove continuos separators\n          .replace(/\\-{2,}/g, '-')\n          // Remove prefixing and trailing separtors\n          .replace(/^\\-+|\\-+$/g, '')\n          // ensure it doesn't start with a number (#121)\n          .replace(/^(\\d)/, '_$1')\n      );\n    };\n    const headers = computed(() => {\n      let tempHeaders = (pageData.value?.headers || []).filter((h: Header) => h.level === 2);\n      if (isDemo.value) {\n        tempHeaders = [...demos.value];\n        if (isTablePage.value) {\n          tempHeaders.push(\n            ...[\n              {\n                title: '大数据渲染',\n                enTitle: 'Virtualized Table',\n                href: 'https://surelyvue.com/doc/performance',\n                target: '_blank',\n              },\n              {\n                title: '行拖拽排序',\n                enTitle: 'Row Drag Sort',\n                href: 'https://surelyvue.com/doc/dragable#drag-row',\n                target: '_blank',\n              },\n              {\n                title: '列拖拽排序',\n                enTitle: 'Column Drag Sort',\n                href: 'https://surelyvue.com/doc/dragable#drag-column',\n                target: '_blank',\n              },\n              {\n                title: '更多高性能示例',\n                enTitle: 'More high-performance examples ',\n                href: 'https://surelyvue.com',\n                target: '_blank',\n              },\n            ],\n          );\n        }\n        tempHeaders.push({ title: 'API', href: '#api' });\n      }\n\n      return tempHeaders.map(header => ({\n        ...header,\n        key: header.title,\n        title: isZhCN.value ? header.title : header.enTitle || header.title,\n        href: (header.href || `#${slugifyTitle(header.title)}`).toLocaleLowerCase(),\n      }));\n    });\n\n    const mainContainerClass = computed(() => {\n      return {\n        'main-container': true,\n        'main-container-component': isDemo.value,\n      };\n    });\n    const isAdVisible = computed(() => {\n      const now = new Date();\n      const startDate = new Date('2025-11-24T00:00:00');\n      const endDate = new Date('2025-11-30T23:59:59');\n      return now >= startDate && now <= endDate;\n    });\n    const handleClickShowButton = () => {\n      visible.value = !visible.value;\n    };\n    return {\n      themeMode,\n      visible,\n      isMobile: globalConfig.isMobile,\n      isZhCN,\n      mainContainerClass,\n      menus,\n      currentMenuIndex,\n      activeMenuItem,\n      headers,\n      isDemo,\n      matchCom,\n      pageData,\n      dataSource,\n      handleClickShowButton,\n      isAdVisible,\n      iconStyle: {\n        // color: '#fff',\n        fontSize: '20px',\n      },\n      y,\n    };\n  },\n});\n</script>\n<style lang=\"less\" scoped>\n.toc-affix {\n  background-color: rgba(0, 0, 0, 0);\n  backdrop-filter: blur(10px);\n}\n\n.toc-affix :deep(.ant-anchor) {\n  font-size: 12px;\n  max-width: 110px;\n\n  .ant-anchor-ink::before {\n    display: none;\n  }\n  .ant-anchor-ink-ball {\n    display: none;\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/locale/en-US.js",
    "content": "import theme from '../theme/en-US';\nexport default {\n  ...theme,\n  'navBar.lang': 'Languages',\n  'layout.user.link.help': 'Help',\n  'layout.user.link.privacy': 'Privacy',\n  'layout.user.link.terms': 'Terms',\n  'app.preview.down.block': 'Download this page to your local project',\n  'app.welcome.link.fetch-blocks': 'Get all block',\n  'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development',\n  'app.docs.components.icon.search.placeholder': 'Search icon here, click icon to copy code',\n  'app.docs.components.icon.pick-theme': 'Select the Icon Theme',\n  'app.docs.components.icon.outlined': 'Outlined',\n  'app.docs.components.icon.filled': 'Filled',\n  'app.docs.components.icon.two-tone': 'Two Tone',\n  'app.docs.components.icon.category.direction': 'Directional Icons',\n  'app.docs.components.icon.category.suggestion': 'Suggested Icons',\n  'app.docs.components.icon.category.editor': 'Editor Icons',\n  'app.docs.components.icon.category.data': 'Data Icons',\n  'app.docs.components.icon.category.other': 'Application Icons',\n  'app.docs.components.icon.category.logo': 'Brand and Logos',\n  'app.docs.components.icon.pic-searcher.intro': 'AI Search by image is online, welcome to use! 🎉',\n};\n"
  },
  {
    "path": "site/src/locale/zh-CN.js",
    "content": "import theme from '../theme/zh-CN';\n\nexport default {\n  ...theme,\n  'navBar.lang': '语言',\n  'layout.user.link.help': '帮助',\n  'layout.user.link.privacy': '隐私',\n  'layout.user.link.terms': '条款',\n  'app.preview.down.block': '下载此页面到本地项目',\n  'app.welcome.link.fetch-blocks': '获取全部区块',\n  'app.welcome.link.block-list': '基于 block 开发，快速构建标准页面',\n  'app.docs.components.icon.search.placeholder': '在此搜索图标，点击图标可复制代码',\n  'app.docs.components.icon.pick-theme': '选择图标主题风格',\n  'app.docs.components.icon.outlined': '线框风格',\n  'app.docs.components.icon.filled': '实底风格',\n  'app.docs.components.icon.two-tone': '双色风格',\n  'app.docs.components.icon.category.direction': '方向性图标',\n  'app.docs.components.icon.category.suggestion': '提示建议性图标',\n  'app.docs.components.icon.category.editor': '编辑类图标',\n  'app.docs.components.icon.category.data': '数据类图标',\n  'app.docs.components.icon.category.other': '网站通用图标',\n  'app.docs.components.icon.category.logo': '品牌和标识',\n  'app.docs.components.icon.pic-searcher.intro': 'AI 截图搜索上线了，快来体验吧！🎉',\n  'app.docs.components.icon.pic-searcher.title': '上传图片搜索图标',\n  'app.docs.components.icon.pic-searcher.upload-text': '点击/拖拽/粘贴上传图片',\n  'app.docs.components.icon.pic-searcher.upload-hint':\n    '我们会通过上传的图片进行匹配，得到最相似的图标',\n};\n"
  },
  {
    "path": "site/src/main.js",
    "content": "/* eslint-disable no-console */\nimport 'docsearch.js/dist/cdn/docsearch.css';\nimport './index.less';\nimport 'nprogress/nprogress.css';\nimport { createApp, Transition, TransitionGroup, version as vueVersion } from 'vue';\nimport i18n from './i18n';\nimport NProgress from 'nprogress';\nimport router from './router';\nimport Antd from 'ant-design-vue';\nimport demoBox from './components/DemoBox.vue';\nimport demoContainer from './components/demoContainer.vue';\nimport demoSort from './components/demoSort.jsx';\nimport clipboard from './directives/clipboard';\nimport App from './App.vue';\nconsole.log('vue version: ', vueVersion);\nconsole.log('ant design vue version: ', Antd.version);\nconst app = createApp(App);\n\napp.use(Antd);\napp.use(clipboard);\napp.component('Transition', Transition);\napp.component('TransitionGroup', TransitionGroup);\napp.component('DemoBox', demoBox);\napp.component('DemoContainer', demoContainer);\napp.component('DemoSort', demoSort);\napp.component('VNodes', function (_, { attrs: { value } }) {\n  return value;\n});\n\n// app.component('tempVar', {\n//   functional: true,\n//   render: (h, ctx) => {\n//     return ctx.scopedSlots && ctx.scopedSlots.default && ctx.scopedSlots.default(ctx.props);\n//   },\n// });\n\nrouter.beforeEach((to, from, next) => {\n  if (to.path !== from.path) {\n    NProgress.start();\n  }\n  next();\n});\n\nrouter.afterEach((to, from) => {\n  if (to.path !== from.path) {\n    NProgress.done();\n    document.documentElement.scrollTop = 0;\n  }\n});\n\napp.use(router);\napp.use(i18n);\n\napp.config.globalProperties.$i18n = i18n;\n\napp.mount('#app');\n\n// setTimeout(() => {\n//   const clicked = localStorage.getItem('surveybyantdv_22_03_14');\n//   if (!clicked) {\n//     const btn = document.getElementsByClassName('surveybyantdv-launch-button')?.[0];\n//     if (btn) {\n//       btn.click();\n//       localStorage.setItem('surveybyantdv_22_03_14', true);\n//     }\n//   }\n// }, 3000);\n"
  },
  {
    "path": "site/src/mock/user.js",
    "content": "// 代码中会兼容本地 service mock 以及部署站点的静态数据\nmodule.exports = {\n  // 支持值为 Object 和 Array\n  'GET /api/currentUser': {\n    name: 'Serati Ma',\n    avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',\n    userid: '00000001',\n    email: 'antdesign@alipay.com',\n    signature: '海纳百川，有容乃大',\n    title: '交互专家',\n    group: '蚂蚁金服－某某某事业群－某某平台部－某某技术部－UED',\n  },\n  // GET POST 可省略\n  'GET /api/users': [\n    {\n      key: '1',\n      name: 'John Brown',\n      age: 32,\n      address: 'New York No. 1 Lake Park',\n    },\n    {\n      key: '2',\n      name: 'Jim Green',\n      age: 42,\n      address: 'London No. 1 Lake Park',\n    },\n    {\n      key: '3',\n      name: 'Joe Black',\n      age: 32,\n      address: 'Sidney No. 1 Lake Park',\n    },\n  ],\n  'POST /api/login/account': (req, res) => {\n    const { password, userName, type } = req.body;\n    if (password === 'antdv' && userName === 'admin') {\n      res.send({ status: 'ok', type });\n      return;\n    }\n    if (password === 'antdv' && userName === 'user') {\n      res.send({ status: 'ok', type });\n      return;\n    }\n    res.send({ status: 'error', type });\n  },\n  'GET /api/login/captcha': (req, res) => {\n    return res.json('captcha-xxx');\n  },\n  'POST /api/register': (req, res) => {\n    res.send({ status: 'ok' });\n  },\n};\n"
  },
  {
    "path": "site/src/router/index.js",
    "content": "/* eslint-disable import/no-unresolved */\nimport Layout from '../layouts/index.vue';\nimport Iframe from '../layouts/Iframe.vue';\n// import Iframe from '../components/iframe.jsx';\nimport demoRoutes from './demoRoutes';\n// import otherRoutes from './otherRoutes';\nimport { createRouter, createWebHistory } from 'vue-router';\nconst routes = [\n  // ...otherRoutes,\n  {\n    path: '/components',\n    component: Layout,\n    children: [\n      {\n        path: 'overview:lang(.*)',\n        component: () => import('../views/ComponentOverview.vue'),\n      },\n      ...demoRoutes,\n    ],\n  },\n  {\n    path: '/iframe',\n    component: Iframe,\n    children: [\n      {\n        path: 'layout:lang(.*)',\n        meta: {\n          category: 'Components',\n          subtitle: '布局',\n          type: '布局',\n          cols: 1,\n          title: 'Layout',\n          cover: 'https://gw.alipayobjects.com/zos/alicdn/hzEndUVEx/Layout.svg',\n        },\n        props: route => {\n          const hash = route.hash.replace('#', '');\n          return { iframeName: hash };\n        },\n        component: () => import('../../../components/layout/demo/index.vue'),\n      },\n      {\n        path: 'float-button:lang(.*)',\n        meta: {\n          category: 'Components',\n          subtitle: '悬浮按钮',\n          type: '悬浮按钮',\n          cols: 1,\n          title: 'FloatButton',\n          cover:\n            'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HS-wTIIwu0kAAAAAAAAAAAAADrJ8AQ/original',\n        },\n        props: route => {\n          const hash = route.hash.replace('#', '');\n          return { iframeName: hash };\n        },\n        component: () => import('../../../components/float-button/demo/index.vue'),\n      },\n    ],\n  },\n  {\n    path: '/docs',\n    component: Layout,\n    // props: route => {\n    //   const name = route.path.split('/docs/vue/')[1].split('/')[0];\n    //   return { name, showApi: true };\n    // },\n    children: [\n      {\n        path: 'vue/introduce-cn',\n        meta: { enTitle: 'Ant Design of Vue', title: 'Ant Design of Vue', category: 'docs' },\n        component: () => import('../vueDocs/introduce.zh-CN.md'),\n      },\n      {\n        path: 'vue/introduce',\n        meta: { enTitle: 'Ant Design of Vue', title: 'Ant Design of Vue', category: 'docs' },\n        component: () => import('../vueDocs/introduce.en-US.md'),\n      },\n      {\n        path: 'vue/getting-started-cn',\n        meta: { enTitle: 'Getting Started', title: '快速上手', category: 'docs' },\n        component: () => import('../vueDocs/getting-started.zh-CN.md'),\n      },\n      {\n        path: 'vue/getting-started',\n        meta: { enTitle: 'Getting Started', title: '快速上手', category: 'docs' },\n        component: () => import('../vueDocs/getting-started.en-US.md'),\n      },\n      {\n        path: 'vue/compatible-style-cn',\n        meta: { enTitle: 'Compatible Style', title: '样式兼容', category: 'docs' },\n        component: () => import('../vueDocs/compatible-style.zh-CN.md'),\n      },\n      {\n        path: 'vue/compatible-style',\n        meta: { enTitle: 'Compatible Style', title: '样式兼容', category: 'docs' },\n        component: () => import('../vueDocs/compatible-style.en-US.md'),\n      },\n      {\n        path: 'vue/customize-theme-cn',\n        meta: { enTitle: 'Customize Theme', title: '定制主题', category: 'docs' },\n        component: () => import('../vueDocs/customize-theme.zh-CN.md'),\n      },\n      {\n        path: 'vue/customize-theme',\n        meta: { enTitle: 'Customize Theme', title: '定制主题', category: 'docs' },\n        component: () => import('../vueDocs/customize-theme.en-US.md'),\n      },\n      {\n        path: 'vue/ssr-extract-ssr',\n        meta: { enTitle: 'SSR Static style export', title: 'SSR 静态样式导出', category: 'docs' },\n        component: () => import('../vueDocs/extract-ssr.en-US.md'),\n      },\n      {\n        path: 'vue/ssr-extract-ssr-cn',\n        meta: { enTitle: 'SSR Static style export', title: 'SSR 静态样式导出', category: 'docs' },\n        component: () => import('../vueDocs/extract-ssr.zh-CN.md'),\n      },\n      {\n        path: 'vue/replace-date-cn',\n        meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },\n        component: () => import('../vueDocs/replace-date.zh-CN.md'),\n      },\n      {\n        path: 'vue/replace-date',\n        meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },\n        component: () => import('../vueDocs/replace-date.en-US.md'),\n      },\n      {\n        path: 'vue/migration-v2-cn',\n        meta: { enTitle: 'V1 to V2', title: '从 v1 到 v2', category: 'docs' },\n        component: () => import('../vueDocs/migration-v2.zh-CN.md'),\n      },\n      {\n        path: 'vue/migration-v2',\n        meta: { enTitle: 'V1 to V2', title: '从 v1 到 v2', category: 'docs' },\n        component: () => import('../vueDocs/migration-v2.en-US.md'),\n      },\n      {\n        path: 'vue/migration-v3-cn',\n        meta: { enTitle: 'V2 to V3', title: '从 v2 到 v3', category: 'docs' },\n        component: () => import('../vueDocs/migration-v3.zh-CN.md'),\n      },\n      {\n        path: 'vue/migration-v3',\n        meta: { enTitle: 'V2 to V3', title: '从 v2 到 v3', category: 'docs' },\n        component: () => import('../vueDocs/migration-v3.en-US.md'),\n      },\n      {\n        path: 'vue/migration-v4-cn',\n        meta: { enTitle: 'V3 to V4', title: '从 V3 到 V4', category: 'docs' },\n        component: () => import('../vueDocs/migration-v4.zh-CN.md'),\n      },\n      {\n        path: 'vue/migration-v4',\n        meta: { enTitle: 'V3 to V4', title: '从 V3 到 V4', category: 'docs' },\n        component: () => import('../vueDocs/migration-v4.en-US.md'),\n      },\n      {\n        path: 'vue/i18n-cn',\n        meta: { enTitle: 'Internationalization', title: '国际化', category: 'docs' },\n        component: () => import('../vueDocs/i18n.zh-CN.md'),\n      },\n      {\n        path: 'vue/i18n',\n        meta: { enTitle: 'Internationalization', title: '国际化', category: 'docs' },\n        component: () => import('../vueDocs/i18n.en-US.md'),\n      },\n      {\n        path: 'vue/faq-cn',\n        meta: { enTitle: 'FAQ', title: '常见问题', category: 'docs' },\n        component: () => import('../vueDocs/faq.zh-CN.md'),\n      },\n      {\n        path: 'vue/faq',\n        meta: { enTitle: 'FAQ', title: '常见问题', category: 'docs' },\n        component: () => import('../vueDocs/faq.en-US.md'),\n      },\n      {\n        path: 'vue/download-cn',\n        meta: { enTitle: 'Download Design Resources', title: '下载设计资源', category: 'docs' },\n        component: () => import('../vueDocs/download.zh-CN.md'),\n      },\n      {\n        path: 'vue/download',\n        meta: { enTitle: 'Download Design Resources', title: '下载设计资源', category: 'docs' },\n        component: () => import('../vueDocs/download.en-US.md'),\n      },\n      {\n        path: 'vue/sponsor-cn',\n        meta: { enTitle: 'Sponsor', title: '支持我们', category: 'docs' },\n        component: () => import('../vueDocs/sponsor.zh-CN.md'),\n      },\n      {\n        path: 'vue/sponsor',\n        meta: { enTitle: 'Sponsor', title: '支持我们', category: 'docs' },\n        component: () => import('../vueDocs/sponsor.en-US.md'),\n      },\n      {\n        path: 'vue/changelog-cn',\n        meta: { enTitle: 'Change Log', title: '更新日志', category: 'docs' },\n        component: () => import('../../../CHANGELOG.zh-CN.md'),\n      },\n      {\n        path: 'vue/changelog',\n        meta: { enTitle: 'Change Log', title: '更新日志', category: 'docs' },\n        component: () => import('../../../CHANGELOG.en-US.md'),\n      },\n      { path: '', redirect: '/docs/vue/introduce/' },\n    ],\n  },\n  {\n    path: '/theme-editor',\n    component: () => import('../views/theme-editor/index.vue'),\n  },\n  {\n    path: '/theme-editor-cn',\n    component: () => import('../views/theme-editor/index.vue'),\n  },\n  { path: '/debugger', component: () => import('../../debugger') },\n  { path: '/:lang(.*)', redirect: '/components/overview' },\n];\n\nexport default createRouter({\n  history: createWebHistory(),\n  fallback: false,\n  routes,\n  scrollBehavior: to => {\n    if (to.hash) {\n      return { el: to.hash, top: 80, behavior: 'auto' };\n    }\n  },\n});\n"
  },
  {
    "path": "site/src/services/login.js",
    "content": "import request from '../utils/request';\n\nexport async function fakeAccountLogin(params) {\n  return request('/api/login/account', {\n    method: 'POST',\n    data: params,\n  });\n}\n\nexport async function getFakeCaptcha(mobile) {\n  return request(`/api/login/captcha?mobile=${mobile}`);\n}\n"
  },
  {
    "path": "site/src/services/user.js",
    "content": "import request from '../utils/request';\n\nexport async function query() {\n  return request('/api/users');\n}\n\nexport async function queryCurrent() {\n  return request('/api/currentUser');\n}\n\nexport async function queryNotices() {\n  return request('/api/notices');\n}\n"
  },
  {
    "path": "site/src/theme/en-US.js",
    "content": "export default {\n  'app.theme.switch.default': 'Light',\n  'app.theme.switch.dark': 'Dark',\n  'app.theme.switch.compact': 'Compact theme',\n  'app.header.search': 'Search...',\n  'app.header.menu.documentation': 'Docs',\n  'app.header.menu.components': 'Components',\n  'app.header.menu.spec': 'Design',\n  'app.header.menu.resource': 'Resources',\n  'app.header.menu.more': 'More',\n  'app.header.menu.mobile': 'Mobile',\n  'app.header.menu.pro.v4': 'Ant Design Pro',\n  'app.header.menu.charts': 'Ant Design Charts',\n  'app.header.menu.ecosystem': 'Ecosystem',\n  'app.header.menu.store': 'Store',\n  'app.header.lang': '中文',\n  'app.content.edit-page': 'Edit this page on GitHub!',\n  'app.content.edit-demo': 'Edit this demo on GitHub!',\n  'app.content.contributors': 'contributors',\n  'app.component.examples': 'Examples',\n  'app.component.examples.expand': 'Expand all code',\n  'app.component.examples.collapse': 'Collapse all code',\n  'app.component.examples.visible': 'Expand debug examples',\n  'app.component.examples.hide': 'Collapse debug examples',\n  'app.demo.debug': \"Debug only, won't display at online\",\n  'app.demo.type.js': 'Switch to TypeScript',\n  'app.demo.type.ts': 'Switch to JavaScript',\n  'app.demo.copy': 'Copy code',\n  'app.demo.copied': 'Copied!',\n  'app.demo.code.show': 'Show code',\n  'app.demo.code.hide': 'Hide code',\n  'app.demo.codepen': 'Open in CodePen',\n  'app.demo.codesandbox': 'Open in CodeSandbox',\n  'app.demo.stackblitz': 'Open in Stackblitz',\n  'app.demo.riddle': 'Open in Riddle',\n  'app.home.introduce':\n    'A design system for enterprise-level products. Create an efficient and enjoyable work experience.',\n  'app.home.recommend': 'Recommended',\n  'app.home.popularize': 'Popular',\n  'app.home.design-and-framework': 'Design language and framework',\n  'app.home.design-values': 'Design values',\n  'app.home.design-values-description':\n    'This is Ant Design\\'s internal standard for evaluating design quality. Based on the assumption that \"everyone is pursuing happiness at work\", we have added the two values of \"Meaningfulness\" and \"Growth\" on the basis of \"Certainty\" and \"Naturalness\" to guide each designer towards better judgment and decision-making.',\n  'app.home.certainty': 'Certainty',\n  'app.home.meaningful': 'Meaningfulness',\n  'app.home.growth': 'Growth',\n  'app.home.natural': 'Naturalness',\n  'app.home.design-guide': 'Guidelines',\n  'app.home.components': 'Components',\n  'app.home.detail': 'More details',\n  'app.home.global-style': 'Global style',\n  'app.home.design-patterns': 'Design patterns',\n  'app.home.more': 'Learn More',\n  'app.home.play-video': 'Play video',\n  'app.home.qr': '4.0 is out',\n  'app.home.qr.desc': '4.0 is out',\n  'app.home.getting-started': 'Getting Started',\n  'app.home.design-language': 'Design Language',\n  'app.home.product-antv-slogan': 'A new way to do data visualization',\n  'app.home.product-pro-slogan': 'Out-of-the-box UI solution for enterprise applications',\n  'app.home.product-mobile-slogan': 'Mobile UI components with Ant Design',\n  'app.home.product-hitu': 'HiTu',\n  'app.home.product-hitu-slogan': 'A new generation of graphical solutions',\n  'app.home.product-kitchen-slogan': 'A Sketch plugin to enhance designers',\n  'app.home.product-icons-slogan': 'A set of premium icons',\n  'app.home.view-more': 'More',\n  'app.footer.repo': 'GitHub Repository',\n  'app.footer.awesome': 'Awesome Ant Design',\n  'app.footer.course': 'Ant Design Practical Tutorial',\n  'app.footer.chinamirror': 'China Mirror 🇨🇳',\n  'app.footer.primary-color-changing': 'Changing primary color...',\n  'app.footer.primary-color-changed': 'Changed primary color successfully!',\n  'app.footer.scaffold': 'Scaffold',\n  'app.footer.kitchen': 'Sketch Toolkit',\n  'app.footer.landing': 'Landing Templates',\n  'app.footer.scaffolds': 'Scaffold Market',\n  'app.footer.dev-tools': 'Developer Tools',\n  'app.footer.umi': 'React Application Framework',\n  'app.footer.dumi': 'Component doc generator',\n  'app.footer.remax': 'Mini Program Framework',\n  'app.footer.hooks': 'React Hooks Library',\n  'app.footer.resources': 'Resources',\n  'app.footer.data-vis': 'Data Visualization',\n  'app.footer.eggjs': 'Enterprise Node Framework',\n  'app.footer.motion': 'Motion Solution',\n  'app.footer.design-resources': 'Design Resources',\n  'app.footer.antd-library': 'Axure library',\n  'app.footer.antux': 'Sitemap Template',\n  'app.footer.community': 'Community',\n  'app.footer.help': 'Help',\n  'app.footer.change-log': 'Change Log',\n  'app.footer.faq': 'FAQ',\n  'app.footer.feedback': 'Feedback',\n  'app.footer.stackoverflow': 'StackOverflow',\n  'app.footer.segmentfault': 'SegmentFault',\n  'app.footer.discussions': 'Discussions',\n  'app.footer.bug-report': 'Bug Report',\n  'app.footer.issues': 'Issues',\n  'app.footer.version': 'Version: ',\n  'app.footer.author': 'Created by XTech',\n  'app.footer.work_with_us': 'Work with Us',\n  'app.footer.more-product': 'More Products',\n  'app.footer.company': 'XTech',\n  'app.footer.ant-design': 'UI Design Language',\n  'app.footer.yuque': 'YuQue',\n  'app.footer.yuque.slogan': 'Write your document as a team',\n  'app.footer.fengdie': 'FengDie',\n  'app.footer.fengdie.slogan': 'Console Applications Builder',\n  'app.footer.antv.slogan': 'Data Visualization',\n  'app.footer.egg.slogan': 'Enterprise Node.js Framework',\n  'app.footer.zhihu': 'Ant Design Blog',\n  'app.footer.zhihu.xtech': 'Experience Cloud Blog',\n  'app.footer.seeconf': 'Experience Tech Conference',\n  'app.footer.xtech': 'Ant Financial Experience Tech',\n  'app.footer.xtech.slogan': 'Experience The Beauty',\n  'app.publish.title': 'antd@3.0.0 has been released! 🎉 🎉 🎉',\n  'app.publish.greeting': 'Hello, ',\n  'app.publish.intro': ' has been released, so please upgrade. ',\n  'app.publish.old-version-guide': 'If you need documentation for an older version, please visit ',\n  'app.publish.old-version-tips': ', or switch the version via the dropdown in the header nav bar.',\n  'app.docs.color.pick-primary': 'Pick your primary color',\n  'app.docs.color.pick-background': 'Pick your background color',\n  'app.docs.components.icon.search.placeholder': 'Search icons here, click icon to copy code',\n  'app.docs.components.icon.pick-theme': 'Select the Icon Theme',\n  'app.docs.components.icon.outlined': 'Outlined',\n  'app.docs.components.icon.filled': 'Filled',\n  'app.docs.components.icon.two-tone': 'Two Tone',\n  'app.docs.components.icon.category.direction': 'Directional Icons',\n  'app.docs.components.icon.category.suggestion': 'Suggested Icons',\n  'app.docs.components.icon.category.editor': 'Editor Icons',\n  'app.docs.components.icon.category.data': 'Data Icons',\n  'app.docs.components.icon.category.other': 'Application Icons',\n  'app.docs.components.icon.category.logo': 'Brand and Logos',\n  'app.docs.components.icon.pic-searcher.intro':\n    'AI Search by image is online, you are welcome to use it! 🎉',\n  'app.docs.components.icon.pic-searcher.title': 'Search by image',\n  'app.docs.components.icon.pic-searcher.upload-text':\n    'Click, drag, or paste file to this area to upload',\n  'app.docs.components.icon.pic-searcher.upload-hint':\n    'We will find the best matching icon based on the image provided',\n  'app.docs.components.icon.pic-searcher.server-error':\n    'Predict service is temporarily unavailable',\n  'app.docs.components.icon.pic-searcher.matching': 'Matching...',\n  'app.docs.components.icon.pic-searcher.modelloading': 'Model is loading...',\n  'app.docs.components.icon.pic-searcher.result-tip': 'Matched the following icons for you:',\n  'app.docs.components.icon.pic-searcher.th-icon': 'Icon',\n  'app.docs.components.icon.pic-searcher.th-score': 'Probability',\n  'app.components.overview.search': 'Search in components',\n  'app.floatButton.theme-editor': 'Theme Editor',\n  'app.floatButton.dark-theme': 'Dark Theme',\n  'app.floatButton.compact-theme': 'Compact theme',\n};\n"
  },
  {
    "path": "site/src/theme/static/common.less",
    "content": "html {\n  &.rtl {\n    direction: rtl;\n  }\n}\n\nbody {\n  overflow-x: hidden;\n  color: var(--site-text-color);\n  font-size: var(--font-size-base);\n  font-family: var(--font-family);\n  background: var(--body-background);\n  transition: background 1s cubic-bezier(0.075, 0.82, 0.165, 1);\n}\n\na {\n  transition: color 0.3s ease;\n}\n\n.main-wrapper {\n  position: relative;\n  padding: 0;\n  background: var(--component-background);\n}\n\n.main-container {\n  position: relative;\n  min-height: 500px;\n  padding: 40px 170px 32px 64px;\n  background: var(--component-background);\n\n  .ant-row-rtl & {\n    padding: 0 64px 144px 170px;\n  }\n}\n\n.main-menu {\n  z-index: 1;\n\n  &-inner {\n    height: 100%;\n    max-height: 100vh;\n    overflow: hidden;\n  }\n\n  &:hover &-inner {\n    overflow-y: auto;\n  }\n}\n\n.aside-container {\n  min-height: 100%;\n  padding-bottom: 48px;\n\n  &.ant-menu-inline {\n    .ant-menu-submenu-title h4,\n    > .ant-menu-item,\n    .ant-menu-item a {\n      overflow: hidden;\n      font-size: 14px;\n      text-overflow: ellipsis;\n    }\n\n    > .ant-menu-item-group > .ant-menu-item-group-title {\n      margin-top: 16px;\n      margin-bottom: 16px;\n      font-size: 13px;\n\n      &::after {\n        position: relative;\n        top: 12px;\n        display: block;\n        width: calc(100% - 20px);\n        height: 1px;\n        background: var(--site-border-color-split);\n        content: '';\n      }\n    }\n\n    > .ant-menu-item,\n    > .ant-menu-submenu > .ant-menu-submenu-title,\n    > .ant-menu-item-group > .ant-menu-item-group-title,\n    > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,\n    &.ant-menu-inline > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item {\n      padding-left: 40px !important;\n\n      .ant-row-rtl & {\n        padding-right: 40px !important;\n        padding-left: 16px !important;\n      }\n\n      .ant-menu-title-content {\n        display: flex;\n        align-items: center;\n      }\n    }\n\n    // Nest Category > Type > Article\n    &.ant-menu-inline {\n      .ant-menu-item-group-title {\n        padding-left: 60px;\n\n        .ant-row-rtl & {\n          padding-right: 60px;\n          padding-left: 16px;\n        }\n      }\n\n      .ant-menu-item-group-list > .ant-menu-item {\n        padding-left: 80px !important;\n\n        .ant-row-rtl & {\n          padding-right: 80px !important;\n          padding-left: 16px !important;\n        }\n      }\n    }\n\n    .ant-menu-item-group:first-child {\n      .ant-menu-item-group-title {\n        margin-top: 0;\n      }\n    }\n  }\n\n  a[disabled] {\n    color: #ccc;\n  }\n\n  .menu-item-link-outside {\n    position: relative;\n    .anticon {\n      position: absolute;\n      top: 16px;\n      right: -10px;\n      color: var(--primary-color);\n      font-size: 12px;\n      opacity: 0;\n      transition: all 0.3s;\n    }\n    &:hover .anticon {\n      opacity: 1;\n    }\n  }\n}\n\n.aside-container .chinese {\n  margin-left: 6px;\n  font-weight: normal;\n  font-size: 12px;\n  opacity: 0.67;\n}\n\n.outside-link {\n  display: inline-block;\n}\n\n.outside-link-icon {\n  margin-left: 5px;\n  color: #aaa;\n  font-size: 12px;\n  .ant-row-rtl & {\n    margin-right: 5px;\n    margin-left: 0;\n    transform: rotate(180deg);\n  }\n}\n\n// reset menu text color\n.menu-site {\n  .ant-menu-item > a {\n    color: var(--site-text-color);\n  }\n\n  .ant-menu-item-selected > a,\n  .ant-menu-item > a:hover {\n    color: var(--primary-color);\n  }\n}\n\n#app {\n  height: 100%;\n  transition: transform 0.3s var(--ease-in-out-circ);\n}\n\n.drawer-content {\n  padding: 40px 0;\n  &-wrapper {\n    background-color: var(--component-background);\n  }\n}\n\n.drawer {\n  z-index: 1029;\n}\n\n#_hj_feedback_container {\n  [class$='icon_emotion_path1']::before {\n    color: var(--primary-color) !important;\n  }\n}\n\n.fixed-widgets {\n  position: fixed;\n  right: 32px;\n  bottom: 102px;\n  z-index: 100;\n  display: flex;\n  flex-direction: column;\n  cursor: pointer;\n  &-tooltip {\n    .ant-tooltip-inner {\n      min-width: 100px;\n    }\n  }\n  & > div {\n    display: block;\n  }\n  &-active {\n    color: var(--primary-color);\n  }\n  & &-avatar {\n    color: #000;\n    background-color: #fff;\n    box-shadow: var(--shadow-2);\n    transition: color 0.3s;\n    &:hover {\n      color: var(--primary-color);\n    }\n  }\n}\n\n// keep transition consistent to make mode toggle animation be more smooth, include:\n// nav bar background\n// nav search border\n// nav menu background\n// wrapper content\n// sidemenu background\n// sidemenu active background\n// content background\n// affix toc\n#header,\n#header #search-box,\n#header #nav.ant-menu,\n.main-wrapper,\n.main-wrapper > .ant-row > .main-menu .main-menu-inner > .ant-menu,\n.main-wrapper\n  > .ant-row\n  > .main-menu\n  .main-menu-inner\n  > .ant-menu.aside-container.ant-menu-inline\n  > .ant-menu-item-group\n  > .ant-menu-item-group-title::after,\n.main-wrapper .main-container,\n#demo-toc.toc {\n  transition: all 0.3s var(--ease-in-out-circ);\n}\n\n// remove margin-bottom from dark theme (why need margin-bottom in dark theme?)\n#header > .ant-row > .ant-col h1 {\n  margin-bottom: 0;\n}\n"
  },
  {
    "path": "site/src/theme/static/demo.less",
    "content": ".code-boxes-col-1-1 {\n  width: 100%;\n}\n\n.code-boxes-col-2-1 {\n  display: inline-block;\n  vertical-align: top;\n}\n\n.code-box {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  margin: 0 0 16px;\n  border: 1px solid var(--site-border-color-split);\n  border-radius: var(--border-radius-base);\n  transition: all 0.2s;\n  .code-box-title {\n    &,\n    a {\n      color: var(--site-text-color);\n      background: var(--component-background);\n    }\n  }\n  &,\n  .code-box-demo {\n    background-color: var(--component-background);\n  }\n  .markdown {\n    pre {\n      margin: 0.5em 0;\n      padding: 6px 12px;\n    }\n    pre code {\n      margin: 0;\n      background: #f5f5f5;\n    }\n  }\n  &:target {\n    border: 1px solid var(--primary-color);\n  }\n\n  &-expand-trigger {\n    position: relative;\n    margin-left: 12px;\n    color: #3b4357;\n    font-size: 20px;\n    cursor: pointer;\n    opacity: 0.75;\n    transition: all 0.3s;\n\n    &:hover {\n      opacity: 1;\n    }\n\n    .ant-row-rtl & {\n      margin-right: 8px;\n      margin-left: 0;\n    }\n  }\n\n  &-title {\n    position: absolute;\n    top: -14px;\n    margin-left: 16px;\n    padding: 1px 8px;\n    color: #777;\n    background: var(--body-background);\n    border-radius: var(--border-radius-base) var(--border-radius-base) 0 0;\n    transition: background-color 0.4s;\n\n    .ant-row-rtl & {\n      margin-right: 16px;\n      margin-left: 0;\n      border-radius: var(--border-radius-base) 0 0 var(--border-radius-base);\n    }\n\n    a,\n    a:hover {\n      color: var(--site-text-color);\n      font-weight: 500;\n      font-size: var(--font-size-base);\n    }\n  }\n\n  &-description {\n    padding: 18px 24px 12px;\n  }\n\n  a.edit-button {\n    position: absolute;\n    top: 7px;\n    right: -16px;\n    padding-right: 6px;\n    font-size: 12px;\n    text-decoration: none;\n    background: inherit;\n    transform: scale(0.9);\n\n    .anticon {\n      color: var(--site-text-color-secondary);\n      transition: all 0.3s;\n      &:hover {\n        color: var(--site-text-color);\n      }\n    }\n\n    .ant-row.ant-row-rtl & {\n      right: auto;\n      left: -22px;\n      margin-right: 0;\n      padding-right: 8px;\n      padding-left: 6px;\n    }\n  }\n\n  &-demo {\n    padding: 42px 24px 50px;\n    color: var(--site-text-color);\n    border-bottom: 1px solid var(--site-border-color-split);\n  }\n\n  iframe {\n    width: 100%;\n    border: 0;\n  }\n\n  &-meta {\n    &.markdown {\n      position: relative;\n      width: 100%;\n      font-size: var(--font-size-base);\n      border-radius: 0 0 var(--border-radius-base) var(--border-radius-base);\n      transition: background-color 0.4s;\n    }\n\n    blockquote {\n      line-height: 1.5;\n    }\n\n    h4,\n    section& p {\n      margin: 0;\n    }\n\n    > p {\n      width: 100%;\n      margin: 0.5em 0;\n      padding-right: 25px;\n      font-size: 12px;\n      word-break: break-word;\n\n      .ant-row-rtl & {\n        padding-right: 0;\n        padding-left: 25px;\n      }\n    }\n  }\n\n  &.expand &-meta {\n    border-bottom: 1px dashed var(--site-border-color-split);\n    border-radius: 0;\n  }\n\n  .code-expand-icon {\n    cursor: pointer;\n  }\n\n  .code-expand-icon-show,\n  .code-expand-icon-hide {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    max-width: 100%;\n    margin: 0;\n    box-shadow: none;\n    transition: all 0.4s;\n    user-select: none;\n\n    .ant-row-rtl & {\n      right: 0;\n      left: auto;\n    }\n  }\n\n  .code-expand-icon-show {\n    opacity: 0.55;\n    pointer-events: auto;\n    &:hover {\n      opacity: 1;\n    }\n  }\n\n  .code-expand-icon.ant-tooltip-open .code-expand-icon-show {\n    opacity: 1;\n  }\n\n  .code-expand-icon-hide {\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  .highlight-wrapper {\n    display: none;\n    overflow: auto;\n    border-radius: 0 0 var(--border-radius-base) var(--border-radius-base);\n\n    &-expand {\n      display: block;\n    }\n  }\n\n  .highlight {\n    position: relative;\n\n    .ant-tabs-nav-list {\n      margin: 0 auto;\n    }\n\n    pre {\n      margin: 0;\n      padding: 0;\n      background: var(--component-background);\n    }\n    &:not(:first-child) {\n      border-top: 1px dashed var(--site-border-color-split);\n    }\n  }\n\n  &-actions {\n    display: flex;\n    justify-content: center;\n    padding: 12px 0;\n    border-top: 1px dashed var(--site-border-color-split);\n    opacity: 0.7;\n    transition: opacity 0.3s;\n\n    &:hover {\n      opacity: 1;\n    }\n  }\n\n  &-actions > &-code-action {\n    position: relative;\n    display: flex;\n    align-items: center;\n    width: 16px;\n    height: 16px;\n    margin-left: 16px;\n    color: var(--site-text-color-secondary);\n    cursor: pointer;\n    transition: all 0.24s;\n\n    .ant-row-rtl & {\n      margin-right: 16px;\n      margin-left: 0;\n    }\n\n    &:first-child {\n      margin-left: 0;\n\n      .ant-row-rtl & {\n        margin-right: 0;\n      }\n    }\n\n    &:hover {\n      color: var(--site-text-color);\n    }\n  }\n\n  &-code-copy {\n    width: 14px;\n    height: 14px;\n    font-size: 14px;\n    text-align: center;\n    background: var(--component-background);\n    cursor: pointer;\n    transition: transform 0.24s;\n\n    &:hover {\n      transform: scale(1.2);\n    }\n    &.anticon-check {\n      color: var(--green-6) !important;\n      font-weight: bold;\n    }\n  }\n\n  &-codepen {\n    width: 14px;\n    height: 14px;\n    overflow: hidden;\n    border: 0;\n    cursor: pointer;\n  }\n\n  &-riddle {\n    width: 14px;\n    height: 14px;\n    overflow: hidden;\n    border: 0;\n    cursor: pointer;\n  }\n\n  &-codesandbox {\n    width: 16px;\n    height: 16px;\n    overflow: hidden;\n    border: 0;\n    cursor: pointer;\n    &:hover {\n      opacity: 1;\n    }\n  }\n\n  .highlight-wrapper:hover &-code-copy,\n  .highlight-wrapper:hover &-codepen,\n  .highlight-wrapper:hover &-codesandbox,\n  .highlight-wrapper:hover &-riddle {\n    opacity: 1;\n  }\n\n  pre {\n    width: auto;\n    margin: 0;\n    code {\n      background: var(--component-background);\n      border: none;\n    }\n  }\n\n  &-debug {\n    border-color: var(--purple-3);\n  }\n\n  &-debug &-title a {\n    color: var(--purple-6);\n  }\n}\n\n.all-code-box-controls {\n  float: right;\n\n  .ant-row-rtl & {\n    float: left;\n  }\n}\n\n.ant-row-rtl {\n  #components-tooltip-demo-placement,\n  #components-popover-demo-placement,\n  #components-popconfirm-demo-placement {\n    .code-box-demo {\n      direction: ltr;\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/docsearch.less",
    "content": ".algolia-autocomplete {\n  .ds-dropdown-menu {\n    border: none;\n    box-shadow: var(--box-shadow);\n\n    [class^='ds-dataset-'] {\n      background: var(--component-background);\n      border: none;\n      .algolia-docsearch-suggestion {\n        background: var(--component-background);\n      }\n    }\n\n    &::before {\n      display: none;\n    }\n  }\n\n  .algolia-docsearch-suggestion--title {\n    color: var(--site-text-color);\n  }\n\n  .algolia-docsearch-suggestion--highlight {\n    color: var(--primary-color);\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/footer.less",
    "content": "@padding-space: 144px;\n\n#footer {\n  clear: both;\n  font-size: 14px;\n  background-color: #000;\n  position: relative;\n  z-index: 8;\n  margin-left: -1px;\n  color: rgba(255, 255, 255, 0.65);\n\n  .ant-row {\n    text-align: center;\n    .footer-center {\n      display: inline-block;\n      text-align: left;\n      > h2 {\n        font-size: 16px;\n        margin: 0 auto 24px;\n        font-weight: 500;\n        position: relative;\n\n        > .title-icon {\n          width: 27px;\n          margin-right: 16px;\n        }\n        > .anticon {\n          font-size: 16px;\n          position: absolute;\n          left: -22px;\n          top: 3px;\n          color: #aaa;\n        }\n      }\n      > div {\n        margin: 12px 0;\n      }\n    }\n  }\n  .footer-wrap {\n    position: relative;\n    padding: 86px 144px 93px 144px;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.25);\n  }\n  .bottom-bar {\n    text-align: center;\n    padding: 16px 144px;\n    margin: 0;\n    line-height: 32px;\n    overflow: hidden;\n    font-size: 16px;\n    font-variant: tabular-nums;\n    a {\n      color: rgba(255, 255, 255, 0.65);\n      margin-left: 4px;\n      &:hover {\n        color: #fff;\n      }\n    }\n    .translate-button {\n      text-align: left;\n    }\n    .heart {\n      color: #f73f51;\n      font-size: 22px;\n    }\n  }\n  a {\n    color: rgba(255, 255, 255, 0.9);\n  }\n  h2 {\n    color: rgba(255, 255, 255, 1);\n    & > span {\n      color: rgba(255, 255, 255, 1);\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/header.less",
    "content": "#header {\n  // ===================== Home Page =====================\n  &.home-header {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    max-width: 1280px;\n    margin-right: auto;\n    margin-left: auto;\n    background: transparent;\n    box-shadow: none;\n\n    #logo {\n      padding-right: 16px;\n      padding-left: 40px;\n\n      html.rtl & {\n        padding-right: 40px;\n        padding-left: 16px;\n      }\n    }\n\n    .ant-menu {\n      background: transparent;\n    }\n  }\n}\n\n@media (max-width: var(--screen-sm-min)) {\n  #header.home-header {\n    .ant-row {\n      .ant-col {\n        margin: 0 auto;\n\n        a {\n          padding-right: 0;\n          padding-left: 0;\n        }\n\n        &:last-child {\n          display: none;\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/highlight.dark.less",
    "content": "html[data-doc-theme='dark'] {\n  pre code {\n    background: #262626;\n    border-color: #262626;\n  }\n\n  code[class*='language-'],\n  pre[class*='language-'] {\n    color: black;\n  }\n\n  :not(pre) > code[class*='language-'],\n  pre[class*='language-'] {\n    background: #262626;\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/highlight.less",
    "content": "/**\n* prism.js default theme for JavaScript, CSS and HTML\n* Based on dabblet (http://dabblet.com)\n* @author Lea Verou\n*/\n\npre code {\n  display: block;\n  padding: 16px 32px;\n  color: var(--site-text-color);\n  font-size: var(--font-size-base);\n  font-family: 'Lucida Console', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  line-height: 2;\n  white-space: pre;\n  background: white;\n  border: 1px solid #e9e9e9;\n  border-radius: var(--border-radius-base);\n}\n\ncode[class*='language-'],\npre[class*='language-'] {\n  color: black;\n  font-family: 'Lucida Console', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  line-height: 1.5;\n  direction: ltr;\n  white-space: pre;\n  text-align: left;\n  word-wrap: normal;\n  word-break: normal;\n  word-spacing: normal;\n  -moz-tab-size: 4;\n  -o-tab-size: 4;\n  tab-size: 4;\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n  background: none;\n}\n\ncode[class*='css'] {\n  direction: ltr;\n}\n\npre[class*='language-']::-moz-selection,\npre[class*='language-'] ::-moz-selection,\ncode[class*='language-']::-moz-selection,\ncode[class*='language-'] ::-moz-selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\npre[class*='language-']::selection,\npre[class*='language-'] ::selection,\ncode[class*='language-']::selection,\ncode[class*='language-'] ::selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\n@media print {\n  code[class*='language-'],\n  pre[class*='language-'] {\n    text-shadow: none;\n  }\n}\n\n/* Code blocks */\npre[class*='language-'] {\n  margin: 16px 0;\n  padding: 12px 20px;\n  overflow: auto;\n}\n\n:not(pre) > code[class*='language-'],\npre[class*='language-'] {\n  background: #f5f5f5;\n}\n\n/* Inline code */\n:not(pre) > code[class*='language-'] {\n  padding: 0.1em;\n  white-space: normal;\n  border-radius: 0.3em;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray;\n}\n\n.token.punctuation {\n  color: #999;\n}\n\n.namespace {\n  opacity: 0.7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #f81d22;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #0b8235;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #0b8235;\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #008dff;\n}\n\n.token.function {\n  color: #f81d22;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90;\n}\n\n.token.important,\n.token.bold {\n  font-weight: bold;\n}\n.token.italic {\n  font-style: italic;\n}\n\n.token.entity {\n  cursor: help;\n}\n"
  },
  {
    "path": "site/src/theme/static/icons.less",
    "content": "ul.anticons-list {\n  margin: 10px 0;\n  overflow: hidden;\n  direction: ltr;\n  list-style: none;\n  li {\n    position: relative;\n    float: left;\n    width: 16.66%;\n    height: 100px;\n    margin: 3px 0;\n    padding: 10px 0 0;\n    overflow: hidden;\n    color: #555;\n    text-align: center;\n    list-style: none;\n    background-color: inherit;\n    border-radius: 4px;\n    cursor: pointer;\n    transition: color 0.3s ease-in-out, background-color 0.3s ease-in-out;\n    .rtl & {\n      margin: 3px 0;\n      padding: 10px 0 0;\n    }\n    .anticon {\n      margin: 12px 0 8px;\n      font-size: 36px;\n      transition: transform 0.3s ease-in-out;\n      will-change: transform;\n    }\n\n    .anticon-class {\n      display: block;\n      font-family: 'Lucida Console', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n      white-space: nowrap;\n      text-align: center;\n      transform: scale(0.83);\n      .ant-badge {\n        transition: color 0.3s ease-in-out;\n      }\n    }\n\n    &:hover {\n      color: #fff;\n      background-color: var(--primary-color);\n      .anticon {\n        transform: scale(1.4);\n      }\n      .ant-badge {\n        color: #fff;\n      }\n    }\n\n    &.TwoTone:hover {\n      background-color: #8ecafe;\n    }\n\n    &.copied:hover {\n      color: rgba(255, 255, 255, 0.2);\n    }\n\n    &::after {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      color: #fff;\n      line-height: 110px;\n      text-align: center;\n      opacity: 0;\n      transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n      content: 'Copied!';\n    }\n\n    &.copied::after {\n      top: -10px;\n      opacity: 1;\n    }\n  }\n}\n\n.copied-code {\n  padding: 2px 4px 2px;\n  font-size: 12px;\n  background: transparent;\n  border-radius: 2px;\n}\n\n.icons-affix {\n  display: flex;\n  justify-content: space-between;\n  transition: all 0.25s;\n}\n\n.icons-affixed {\n  padding: 12px;\n  margin: -8px;\n  border-radius: 6px;\n  border: 1px solid var(--border-color-base);\n  background-color: var(--body-background);\n}\n"
  },
  {
    "path": "site/src/theme/static/index.less",
    "content": "@import './reset.css';\n@import './var';\n@import './common';\n@import './header';\n@import './footer';\n@import './page-nav';\n@import './markdown';\n@import './preview-img';\n@import './toc';\n@import './not-found';\n@import './highlight';\n@import './highlight.dark';\n@import './demo';\n@import './icons';\n@import './mock-browser';\n@import './responsive';\n@import './resource';\n@import './docsearch';\n@import './nprogress';\n"
  },
  {
    "path": "site/src/theme/static/markdown.less",
    "content": ".markdown {\n  color: var(--site-text-color);\n  font-size: 14px;\n  line-height: 2;\n}\n\n.highlight {\n  line-height: 1.5;\n}\n\n.markdown img {\n  max-width: ~'calc(100% - 32px)';\n}\n\n.markdown p > img {\n  margin: 34px 0;\n  box-shadow: 0 8px 20px rgba(143, 168, 191, 0.35);\n}\n\n.markdown p > img.markdown-inline-image {\n  margin: 0;\n  box-shadow: none;\n}\n\n.markdown h1 {\n  margin-top: 8px;\n  margin-bottom: 20px;\n  color: var(--site-text-color);\n  font-weight: 500;\n  font-size: 30px;\n  font-family: var(--font-family);\n  line-height: 38px;\n\n  .subtitle {\n    margin-left: 12px;\n  }\n}\n\n.markdown h2 {\n  font-size: 24px;\n  line-height: 32px;\n}\n\n.markdown h2,\n.markdown h3,\n.markdown h4,\n.markdown h5,\n.markdown h6 {\n  clear: both;\n  margin: 1.6em 0 0.6em;\n  color: var(--site-text-color);\n  font-weight: 500;\n  font-family: var(--font-family);\n}\n\n.markdown h3 {\n  font-size: 18px;\n}\n.markdown h4 {\n  font-size: 16px;\n}\n.markdown h5 {\n  font-size: 14px;\n}\n.markdown h6 {\n  font-size: 12px;\n}\n\n.markdown hr {\n  clear: both;\n  height: 1px;\n  margin: 56px 0;\n  background: var(--site-border-color-split);\n  border: 0;\n}\n\n.markdown p,\n.markdown pre {\n  margin: 1em 0;\n  .ant-row-rtl & {\n    direction: rtl;\n    text-align: right;\n  }\n}\n\n.markdown ul > li {\n  margin-left: 20px;\n  padding-left: 4px;\n  list-style-type: circle;\n\n  .rtl & {\n    margin-right: 20px;\n    margin-left: 0;\n    padding-right: 4px;\n    padding-left: 0;\n  }\n  &:empty {\n    display: none;\n  }\n}\n\n.markdown ol > li {\n  margin-left: 20px;\n  padding-left: 4px;\n  list-style-type: decimal;\n\n  .ant-row-rtl & {\n    margin-right: 20px;\n    margin-left: 0;\n    padding-right: 4px;\n    padding-left: 0;\n  }\n}\n\n.markdown ul > li > p,\n.markdown ol > li > p {\n  margin: 0.2em 0;\n}\n\n.markdown code {\n  margin: 0 1px;\n  padding: 0.2em 0.4em;\n  font-size: 0.9em;\n  background: var(--site-markdown-code-bg);\n  border: 1px solid var(--site-border-color-split);\n  border-radius: 3px;\n}\n\n.markdown pre {\n  font-family: var(--code-family);\n  background: var(--site-markdown-code-bg);\n  border-radius: var(--border-radius-base);\n}\n\n.markdown pre code {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  color: var(--site-text-color);\n  font-size: var(--font-size-max);\n  direction: ltr;\n  text-align: left;\n  background: #f5f5f5;\n  border: none;\n}\n\n.markdown strong,\n.markdown b {\n  font-weight: 500;\n}\n\n.markdown > table {\n  width: 100%;\n  margin: 8px 0 16px;\n  direction: ltr;\n  empty-cells: show;\n  border: 1px solid var(--site-border-color-split);\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.markdown > table th {\n  color: #5c6b77;\n  font-weight: 500;\n  white-space: nowrap;\n  background: rgba(0, 0, 0, 0.02);\n}\n\n.markdown > table th,\n.markdown > table td {\n  padding: 16px 24px;\n  text-align: left;\n  border: 1px solid var(--site-border-color-split);\n}\n\n.markdown table td > a:not(:last-child) {\n  margin-right: 0 !important;\n  &::after {\n    position: relative !important;\n  }\n}\n\n.markdown blockquote {\n  margin: 1em 0;\n  padding-left: 0.8em;\n  color: var(--site-text-color-secondary);\n  font-size: 90%;\n  border-left: 4px solid var(--site-border-color-split);\n\n  .rtl & {\n    padding-right: 0.8em;\n    padding-left: 0;\n    border-right: 4px solid var(--site-border-color-split);\n    border-left: none;\n  }\n}\n\n.markdown blockquote p {\n  margin: 0;\n}\n\n.markdown .anchor {\n  margin-left: 8px;\n  opacity: 0;\n  transition: opacity 0.3s;\n\n  .rtl & {\n    margin-right: 8px;\n    margin-left: 0;\n  }\n}\n\n.markdown .waiting {\n  color: #ccc;\n  cursor: not-allowed;\n}\n\n.markdown a.edit-button {\n  display: inline-block;\n  margin-left: 8px;\n  text-decoration: none;\n\n  .rtl & {\n    margin-right: 8px;\n    margin-left: 0;\n    transform: rotateY(180deg);\n  }\n\n  .anticon {\n    display: block;\n    color: var(--site-text-color-secondary);\n    font-size: 16px;\n    transition: all 0.3s;\n\n    &:hover {\n      color: var(--site-text-color);\n    }\n  }\n}\n\n.markdown h1:hover .anchor,\n.markdown h2:hover .anchor,\n.markdown h3:hover .anchor,\n.markdown h4:hover .anchor,\n.markdown h5:hover .anchor,\n.markdown h6:hover .anchor {\n  display: inline-block;\n  opacity: 1;\n}\n\n.markdown > br,\n.markdown > p > br {\n  clear: both;\n}\n\n.markdown.api-container {\n  table {\n    display: block;\n    margin: 2em 0;\n    overflow-x: auto;\n    overflow-y: hidden;\n    font-size: var(--font-size-max);\n    font-family: var(--code-family);\n    line-height: var(--line-height-base);\n    border: 0;\n    -webkit-overflow-scrolling: touch;\n\n    th,\n    td {\n      padding: 12px;\n      border-color: var(--site-border-color-split);\n      border-width: 1px 0;\n\n      &:first-child {\n        border-left: 1px solid var(--site-border-color-split);\n      }\n\n      &:last-child {\n        border-right: 1px solid var(--site-border-color-split);\n      }\n    }\n\n    th {\n      padding-top: 14px;\n      border-width: 1px 0 2px 0;\n    }\n\n    tbody tr {\n      transition: all 0.3s;\n      &:hover {\n        background: rgba(60, 90, 100, 0.04);\n      }\n    }\n\n    td {\n      &:first-child {\n        width: 18%;\n        color: var(--gray-8);\n        font-weight: 600;\n        white-space: nowrap;\n      }\n      &:nth-child(2) {\n        width: 55%;\n      }\n      &:nth-child(3) {\n        width: 22%;\n        color: var(--magenta-7);\n        font-size: var(--font-size-max);\n      }\n      &:nth-child(4) {\n        width: 15%;\n        font-size: var(--font-size-max);\n      }\n      &:nth-child(5) {\n        width: 8%;\n        font-size: var(--font-size-max);\n      }\n      &:nth-last-child(3):first-child {\n        width: 38%;\n      }\n      &:nth-last-child(3):first-child ~ td:nth-last-child(2) {\n        width: 70%;\n      }\n    }\n  }\n\n  hr {\n    margin: 12px 0;\n  }\n}\n\n@demo-grid-color: #0092ff;\n\n.grid-demo,\n[id^='components-grid-demo-'] {\n  .demo-row,\n  .code-box-demo .demo-row {\n    margin-bottom: 8px;\n    overflow: hidden;\n    background-image: linear-gradient(\n      90deg,\n      #f5f5f5 4.16666667%,\n      transparent 4.16666667%,\n      transparent 8.33333333%,\n      #f5f5f5 8.33333333%,\n      #f5f5f5 12.5%,\n      transparent 12.5%,\n      transparent 16.66666667%,\n      #f5f5f5 16.66666667%,\n      #f5f5f5 20.83333333%,\n      transparent 20.83333333%,\n      transparent 25%,\n      #f5f5f5 25%,\n      #f5f5f5 29.16666667%,\n      transparent 29.16666667%,\n      transparent 33.33333333%,\n      #f5f5f5 33.33333333%,\n      #f5f5f5 37.5%,\n      transparent 37.5%,\n      transparent 41.66666667%,\n      #f5f5f5 41.66666667%,\n      #f5f5f5 45.83333333%,\n      transparent 45.83333333%,\n      transparent 50%,\n      #f5f5f5 50%,\n      #f5f5f5 54.16666667%,\n      transparent 54.16666667%,\n      transparent 58.33333333%,\n      #f5f5f5 58.33333333%,\n      #f5f5f5 62.5%,\n      transparent 62.5%,\n      transparent 66.66666667%,\n      #f5f5f5 66.66666667%,\n      #f5f5f5 70.83333333%,\n      transparent 70.83333333%,\n      transparent 75%,\n      #f5f5f5 75%,\n      #f5f5f5 79.16666667%,\n      transparent 79.16666667%,\n      transparent 83.33333333%,\n      #f5f5f5 83.33333333%,\n      #f5f5f5 87.5%,\n      transparent 87.5%,\n      transparent 91.66666667%,\n      #f5f5f5 91.66666667%,\n      #f5f5f5 95.83333333%,\n      transparent 95.83333333%\n    );\n  }\n  .ant-row > div,\n  .code-box-demo .ant-row > div {\n    min-height: 30px;\n    margin-top: 8px;\n    margin-bottom: 8px;\n    color: #fff;\n    text-align: center;\n    border-radius: 0;\n  }\n  .code-box-demo .ant-row > div:not(.gutter-row) {\n    padding: 16px 0;\n    background: var(--demo-grid-color);\n    &:nth-child(2n + 1) {\n      background: var(--demo-grid-color-75);\n    }\n  }\n  .ant-row .demo-col,\n  .code-box-demo .ant-row .demo-col {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding: 30px 0;\n    color: var(--white);\n    font-size: 18px;\n    text-align: center;\n    border: none;\n  }\n  .ant-row .demo-col-1 {\n    background: var(--demo-grid-color-75);\n  }\n  .ant-row .demo-col-2,\n  .code-box-demo .ant-row .demo-col-2 {\n    background: var(--demo-grid-color-75);\n  }\n  .ant-row .demo-col-3,\n  .code-box-demo .ant-row .demo-col-3 {\n    color: #999;\n    background: rgba(255, 255, 255, 0.2);\n  }\n  .ant-row .demo-col-4,\n  .code-box-demo .ant-row .demo-col-4 {\n    background: var(--demo-grid-color-60);\n  }\n  .ant-row .demo-col-5,\n  .code-box-demo .ant-row .demo-col-5 {\n    color: #999;\n    background: rgba(255, 255, 255, 0.2);\n  }\n  .code-box-demo .height-100 {\n    height: 100px;\n    line-height: 100px;\n  }\n  .code-box-demo .height-50 {\n    height: 50px;\n    line-height: 50px;\n  }\n  .code-box-demo .height-120 {\n    height: 120px;\n    line-height: 120px;\n  }\n  .code-box-demo .height-80 {\n    height: 80px;\n    line-height: 80px;\n  }\n}\n\n[id='components-grid-demo-playground'],\n[id='components-grid-demo-gutter'] {\n  > .code-box-demo .ant-row > div {\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n}\n\n// For Changelog\n.markdown ul.ant-timeline {\n  line-height: 2;\n  li.ant-timeline-item {\n    margin: 0;\n    padding: 0 0 30px;\n    list-style: none;\n    .ant-timeline-item-content {\n      position: relative;\n      top: -14px;\n      padding-left: 32px;\n      font-size: 14px;\n      > h2 {\n        margin-top: 0;\n        padding-top: 4px;\n        direction: ltr;\n        span {\n          .ant-row-rtl & {\n            float: right;\n          }\n        }\n      }\n    }\n  }\n  li.ant-timeline-item:first-child {\n    margin-top: 40px;\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/mock-browser.less",
    "content": "/* Browser mockup code\n * Contribute: https://gist.github.com/jarthod/8719db9fef8deb937f4f\n * Live example: https://updown.io\n */\n\n.browser-mockup {\n  position: relative;\n  border-top: 2em solid rgba(230, 230, 230, 0.7);\n  border-radius: 3px 3px 0 0;\n  box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.28);\n}\n\n.browser-mockup::before {\n  position: absolute;\n  top: -1.25em;\n  left: 1em;\n  display: block;\n  width: 0.5em;\n  height: 0.5em;\n  background-color: #f44;\n  border-radius: 50%;\n  box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5;\n  content: '';\n}\n\n.browser-mockup.with-tab::after {\n  position: absolute;\n  top: -2em;\n  left: 5.5em;\n  display: block;\n  width: 20%;\n  height: 0;\n  border-right: 0.8em solid transparent;\n  border-bottom: 2em solid white;\n  border-left: 0.8em solid transparent;\n  content: '';\n}\n\n.browser-mockup.with-url::after {\n  position: absolute;\n  top: -1.6em;\n  left: 5.5em;\n  display: block;\n  width: ~'calc(100% - 6em)';\n  height: 1.2em;\n  background-color: white;\n  border-radius: 2px;\n  content: '';\n}\n\n.browser-mockup > * {\n  display: block;\n}\n"
  },
  {
    "path": "site/src/theme/static/not-found.less",
    "content": "#page-404 {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 100;\n  width: 100%;\n  height: 100%;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n  background-attachment: fixed;\n\n  section {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    text-align: center;\n    transform: translate(-50%, -50%);\n  }\n\n  h1 {\n    color: var(--primary-color);\n    font-weight: 500;\n    font-size: 120px;\n  }\n\n  p {\n    color: var(--site-text-color);\n    font-size: 18px;\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/nprogress.less",
    "content": "#nprogress {\n  .bar {\n    background: var(--primary-color);\n  }\n\n  .peg {\n    box-shadow: 0 0 10px var(--primary-color), 0 0 5px var(--primary-color);\n  }\n\n  .spinner-icon {\n    border-top-color: var(--primary-color);\n    border-left-color: var(--primary-color);\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/page-nav.less",
    "content": ".prev-next-nav {\n  margin-right: 170px;\n  margin-left: 64px;\n  overflow: hidden;\n  font-size: 14px;\n  border-top: 1px solid var(--site-border-color-split);\n\n  > .prev-page,\n  > .next-page {\n    float: left;\n    width: 50%;\n    height: 72px;\n    line-height: 72px;\n    text-decoration: none;\n\n    .ant-row-rtl & {\n      float: right;\n\n      .footer-nav-icon-before,\n      .footer-nav-icon-after {\n        transform: rotate(180deg);\n      }\n    }\n  }\n\n  > a.prev-page {\n    .footer-nav-icon-before {\n      position: relative;\n      left: 0;\n      margin-right: 1em;\n      color: var(--site-text-color-secondary);\n      font-size: 12px;\n      transition: all 0.3s;\n\n      .ant-row-rtl & {\n        right: 0;\n        left: auto;\n        margin-right: 0;\n        margin-left: 1em;\n      }\n    }\n\n    .footer-nav-icon-after {\n      display: none;\n    }\n\n    &:hover .footer-nav-icon-before {\n      left: -3px;\n      color: var(--primary-color);\n\n      .ant-row-rtl & {\n        right: -3px;\n        left: auto;\n      }\n    }\n  }\n\n  > .next-page {\n    float: right;\n    text-align: right;\n\n    .ant-row-rtl & {\n      float: left;\n      text-align: left;\n    }\n\n    .footer-nav-icon-after {\n      position: relative;\n      right: 0;\n      margin-left: 1em;\n      color: var(--site-text-color-secondary);\n      font-size: 12px;\n      transition: all 0.3s;\n\n      .ant-row-rtl & {\n        right: auto;\n        left: 0;\n        margin-right: 1em;\n        margin-left: 0;\n      }\n    }\n\n    .footer-nav-icon-before {\n      display: none;\n    }\n\n    &:hover .footer-nav-icon-after {\n      right: -3px;\n      color: var(--primary-color);\n\n      .ant-row-rtl & {\n        right: auto;\n        left: -3px;\n      }\n    }\n  }\n\n  .chinese {\n    margin-left: 0.5em;\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/preview-img.less",
    "content": ".preview-image-boxes {\n  display: flex;\n  float: right;\n  clear: both;\n  width: 496px;\n  margin: 0 0 70px 64px;\n\n  &-with-carousel {\n    width: 420px;\n\n    .preview-image-box img {\n      padding: 0;\n    }\n  }\n\n  .ant-row-rtl & {\n    float: left;\n    margin: 0 64px 70px 0;\n  }\n}\n\n.preview-image-boxes + .preview-image-boxes {\n  margin-top: -35px;\n}\n\n.preview-image-box {\n  float: left;\n  width: 100%;\n}\n\n.preview-image-box + .preview-image-box {\n  margin-left: 24px;\n\n  .ant-row-rtl & {\n    margin-right: 24px;\n    margin-left: 0;\n  }\n}\n\n.preview-image-wrapper {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  padding: 16px;\n  text-align: center;\n  background: #f2f4f5;\n}\n\n.preview-image-wrapper.video {\n  display: block;\n  padding: 0;\n  background: 0;\n}\n\n.preview-image-wrapper video {\n  display: block;\n  width: 100%;\n  + svg {\n    position: absolute;\n    top: 0;\n    left: 0;\n  }\n}\n\n.preview-image-wrapper.good::after {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 3px;\n  background: var(--primary-color);\n  content: '';\n}\n\n.preview-image-wrapper.bad::after {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 3px;\n  background: var(--error-color);\n  content: '';\n}\n\n.preview-image-title {\n  margin-top: 20px;\n  color: var(--site-text-color);\n  font-size: 12px;\n}\n\n.preview-image-description {\n  margin-top: 2px;\n  color: var(--site-text-color-secondary);\n  font-size: 12px;\n  line-height: 1.5;\n}\n\n.preview-image-description hr {\n  margin: 2px 0;\n  background: none;\n  border: 0;\n}\n\n.preview-image-box img {\n  max-width: 100%;\n  padding: 12px;\n  background: var(--body-background);\n  border-radius: var(--border-radius-base);\n  cursor: pointer;\n  transition: all 0.3s;\n  &.no-padding {\n    padding: 0;\n    background: none;\n  }\n}\n\n.preview-image-boxes.preview-image-boxes-with-carousel img {\n  padding: 0;\n  box-shadow: 0 1px 0 0 #ddd, 0 3px 0 0 var(--body-background), 0 4px 0 0 #ddd,\n    0 6px 0 0 var(--body-background), 0 7px 0 0 #ddd;\n}\n\n.preview-image-box img:hover {\n  box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.3);\n}\n\n.image-modal {\n  text-align: center;\n\n  &-container {\n    position: relative;\n    text-align: center;\n  }\n\n  .ant-carousel {\n    .slick-slider {\n      padding-bottom: 24px;\n      img {\n        display: inline;\n        max-width: 100%;\n      }\n    }\n    .slick-dots {\n      bottom: 4px;\n      li button {\n        background: #888;\n      }\n    }\n  }\n\n  .image-modal-single.slick-slider {\n    padding-bottom: 0;\n  }\n\n  .image-modal-single .slick-dots {\n    display: none !important;\n  }\n}\n\n.transition-video-player,\n.motion-video-min {\n  float: right;\n  width: 600px;\n  padding: 0 0 70px 20px;\n\n  .preview-image-wrapper {\n    padding: 0;\n  }\n\n  .ant-row-rtl & {\n    float: left;\n  }\n}\n\n.motion-video-min {\n  width: 390px;\n}\n\n.motion-principle-wrapper {\n  width: 100%;\n  max-width: 900px;\n  margin: 48px 0 24px;\n}\n\n.principle-wrapper {\n  width: 100%;\n\n  .principle {\n    display: inline-block;\n    width: 100%;\n    min-height: 180px;\n    margin-right: 12.5%;\n    margin-bottom: 24px;\n    padding: 24px;\n    font-size: 24px;\n    text-align: center;\n    border: 1px solid #e8e8e8;\n    border-radius: 4px;\n    &:last-child {\n      margin-right: 0;\n    }\n\n    h4 {\n      margin: 16px 0 8px;\n    }\n\n    p {\n      font-size: 12px;\n      line-height: 24px;\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/reset.css",
    "content": "body,\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\npre,\ncode,\nform,\nfieldset,\nlegend,\ninput,\ntextarea,\np,\nblockquote,\nth,\ntd,\nhr,\nbutton,\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n  margin: 0;\n  padding: 0;\n}\nul,\nol {\n  list-style: none;\n}\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n"
  },
  {
    "path": "site/src/theme/static/resource.less",
    "content": ".resource-cards {\n  display: flex;\n  flex-flow: wrap;\n  width: 100%;\n}\n\n.resource-card {\n  display: flex;\n  max-width: 500px;\n  width: ~'calc(50% - 24px)';\n  min-width: 400px;\n  height: 130px;\n  border: 1px solid var(--border-color-base);\n  border-radius: var(--border-radius-base);\n  font-size: 12px;\n  color: #777;\n  margin: 24px 24px 0 0;\n  vertical-align: middle;\n  transition: all 0.3s ease;\n  position: relative;\n  overflow: hidden;\n}\n\n.resource-card:hover {\n  box-shadow: 0 3px 8px #d3ddeb;\n  border-color: transparent;\n}\n\n.resource-card:hover .resource-card-title {\n  color: var(--primary-color);\n}\n\n.resource-card.disabled {\n  opacity: 0.45;\n  pointer-events: none;\n}\n\n.resource-card-cover,\n.resource-card-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  width: 130px;\n}\n\n.resource-card-cover img {\n  width: 68px;\n}\n\n.resource-card-content {\n  display: flex;\n  flex-flow: column;\n  justify-content: center;\n}\n\n.resource-card-title {\n  display: block;\n  font-size: 16px;\n  color: var(--site-text-color);\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  line-height: 1.2;\n  margin-bottom: 6px;\n}\n\n.resource-card-hot-badge {\n  background: #f50;\n  border-radius: 2px;\n  padding: 0 3px;\n  color: #fff;\n  font-size: 12px;\n  line-height: 20px;\n  margin-left: 2px;\n  vertical-align: top;\n}\n\n.resource-card-description {\n  display: block;\n  color: #697b8c;\n  padding-right: 16px;\n}\n"
  },
  {
    "path": "site/src/theme/static/responsive.less",
    "content": ".nav-phone-icon {\n  position: absolute;\n  top: 50%;\n  right: 16px;\n  transform: translateY(-50%);\n  z-index: 1;\n  display: none;\n  cursor: pointer;\n  font-size: 18px;\n  color: var(--text-color);\n}\n\n@media only screen and (max-width: 992px) {\n  .toc-affix {\n    display: none;\n  }\n  .main-container {\n    padding-right: 48px;\n    padding-left: 48px;\n  }\n  .prev-next-nav {\n    margin-right: 48px;\n    margin-left: 48px;\n  }\n  .code-boxes-col-2-1,\n  .code-boxes-col-1-1 {\n    float: none;\n    width: 100%;\n  }\n}\n\n@media only screen and (max-width: 767.99px) {\n  .preview-image-boxes {\n    float: none;\n    width: 100%;\n    margin: 0 !important;\n  }\n  .preview-image-box {\n    width: 100%;\n    margin: 10px 0;\n    padding: 0;\n  }\n\n  .image-wrapper {\n    display: none;\n  }\n\n  div.version {\n    display: block;\n    margin: 29px auto 16px;\n  }\n\n  .toc {\n    display: none;\n  }\n\n  .nav-phone-icon {\n    display: block;\n  }\n\n  .main {\n    height: calc(100% - 86px);\n  }\n\n  .aside-container {\n    float: none;\n    width: auto;\n    padding-bottom: 30px;\n    border-right: 0;\n  }\n\n  .main-container,\n  .ant-row-rtl .main-container {\n    margin-right: 0;\n    margin-left: 0;\n    padding-right: 16px;\n    padding-left: 16px;\n    > .markdown > * {\n      width: 100% !important;\n    }\n  }\n\n  .main-wrapper {\n    width: 100%;\n    margin: 0;\n    border-radius: 0;\n  }\n\n  .prev-next-nav {\n    width: ~'calc(100% - 32px)';\n    margin-left: 16px;\n\n    .ant-row-rtl & {\n      margin-right: 16px;\n      margin-left: 64px;\n    }\n  }\n\n  .drawer {\n    .ant-menu-inline .ant-menu-item::after,\n    .ant-menu-vertical .ant-menu-item::after {\n      right: auto;\n      left: 0;\n    }\n  }\n\n  #_hj_feedback_container {\n    display: none;\n  }\n  /** home 区块 **/\n  .home-page-wrapper {\n    .page {\n      h2 {\n        margin: 80px auto 64px;\n      }\n    }\n    .parallax-bg {\n      display: none;\n    }\n  }\n  .banner {\n    display: block;\n    height: 632px;\n    &-bg-wrapper {\n      display: none;\n    }\n    .img-wrapper,\n    .text-wrapper {\n      display: inline-block;\n      width: 100%;\n      min-width: unset;\n      max-width: unset;\n      margin: auto;\n      text-align: center;\n    }\n    .img-wrapper {\n      position: initial;\n      margin-top: 20px;\n      text-align: center;\n      svg {\n        width: 100%;\n        max-width: 260px;\n        height: auto;\n        margin: 0 auto;\n      }\n    }\n    .text-wrapper {\n      min-height: 200px;\n      margin-top: 32px;\n      padding: 0;\n      h1 {\n        display: none;\n      }\n      p {\n        color: #314659;\n        font-size: 14px;\n        line-height: 28px;\n      }\n      .banner-btns {\n        display: block;\n        min-width: 100%;\n        white-space: nowrap;\n        text-align: center;\n\n        .banner-btn {\n          padding: 0 20px;\n          font-size: 14px;\n        }\n      }\n      .banner-promote {\n        min-width: 100%;\n        margin-top: 32px;\n        .ant-divider {\n          display: none;\n        }\n        a {\n          font-size: 14px;\n          white-space: nowrap;\n          img {\n            width: 20px;\n          }\n        }\n      }\n    }\n  }\n  .page1 {\n    min-height: 1300px;\n    .ant-row {\n      margin: 24px auto 64px;\n      > div {\n        margin-bottom: 48px;\n      }\n    }\n  }\n  .page2 {\n    min-height: 840px;\n    background: var(--body-background);\n    &-content {\n      box-shadow: none;\n    }\n    &-components {\n      display: none;\n    }\n    &-product {\n      min-height: auto;\n      padding: 0 16px;\n      .product-block {\n        margin-bottom: 34px;\n        padding-bottom: 35px;\n        border-bottom: 1px solid var(--site-border-color-split);\n        &:last-child {\n          margin-bottom: 32px;\n          border-bottom: none;\n          .block-text-wrapper {\n            height: auto;\n          }\n        }\n        .block-image-wrapper {\n          height: 88px;\n          img {\n            height: 100%;\n          }\n        }\n        .block-text-wrapper {\n          padding-bottom: 0;\n          border-bottom: none;\n          h4 {\n            margin-bottom: 4px;\n            font-size: 18px;\n            line-height: 24px;\n          }\n          p {\n            margin-bottom: 8px;\n            font-size: 12px;\n            line-height: 20px;\n          }\n          a {\n            line-height: 20px;\n          }\n          .components-button-wrapper {\n            margin-top: 16px;\n            font-size: 12px;\n            a {\n              display: block;\n            }\n          }\n          a.more-mobile-react,\n          a.more-mobile-angular {\n            margin-top: 0;\n            color: var(--link-color);\n          }\n          a.more-mobile-react:hover,\n          a.more-mobile-angular:hover {\n            color: #40a9ff;\n          }\n        }\n      }\n    }\n  }\n  .page3 {\n    min-height: 688px;\n    background: url('https://gw.alipayobjects.com/zos/rmsportal/qICoJIqqQRMeRGhPHBBS.svg') no-repeat;\n    background-size: cover;\n    .ant-row {\n      margin: 0 8px;\n    }\n    .page3-block {\n      margin-bottom: 32px;\n      padding: 24px;\n      background: var(--body-background);\n      border-radius: 4px;\n      box-shadow: 0 8px 16px rgba(174, 185, 193, 0.3);\n      &:nth-child(2) {\n        .page3-img-wrapper img {\n          display: block;\n          width: 70%;\n          margin: auto;\n        }\n      }\n      p {\n        font-size: 12px;\n      }\n      .page3-img-wrapper {\n        width: 20%;\n        img {\n          width: 100%;\n        }\n      }\n      .page3-text-wrapper {\n        width: 80%;\n        max-width: initial;\n        margin: 0;\n        padding-left: 16px;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/toc.less",
    "content": ".toc {\n  margin: 16px 0;\n  padding-left: 0;\n  font-size: 12px;\n  list-style: none;\n  border-left: 1px solid var(--site-border-color-split);\n\n  .ant-row-rtl & {\n    border-right: 1px solid var(--site-border-color-split);\n    border-left: none;\n  }\n}\n\nul.toc > li {\n  margin-left: 0;\n  padding-left: 0;\n  line-height: 1.5;\n  list-style: none;\n  &:not(:last-child) {\n    margin-bottom: 4px;\n  }\n\n  .ant-row-rtl & {\n    margin-right: 0;\n    padding-right: 0;\n  }\n\n  &.toc-debug a {\n    color: var(--purple-6);\n  }\n}\n\n.toc li > ul {\n  display: none;\n  font-size: 12px;\n  text-indent: 8px;\n}\n\n.toc a {\n  display: block;\n  width: 110px;\n  margin-left: -1px;\n  padding-left: 16px;\n  overflow: hidden;\n  color: var(--site-text-color);\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  border-left: 1px solid transparent;\n  transition: all 0.3s ease;\n\n  .ant-row-rtl & {\n    margin-right: -1px;\n    margin-left: 0;\n    padding-right: 16px;\n    padding-left: 0;\n    border-right: 1px solid transparent;\n    border-left: none;\n  }\n}\n\n.toc a:hover {\n  color: var(--primary-color);\n}\n\n.toc a.current {\n  color: var(--primary-color);\n  border-color: var(--primary-color);\n}\n\n.toc-affix {\n  position: absolute;\n  top: 118px;\n  right: 0px;\n  width: 160px;\n  padding: 8px 8px 8px 4px;\n  border-radius: 6px;\n  box-sizing: border-box;\n  z-index: 9;\n  .ant-anchor-wrapper {\n    max-height: ~'calc(100vh - 360px)' !important;\n    overflow-y: auto;\n  }\n  .ant-affix {\n    z-index: 9;\n    max-height: ~'calc(100vh - 200px)';\n    overflow-x: hidden;\n    overflow-y: auto;\n    background: #fff;\n  }\n  .ant-row-rtl & {\n    right: auto;\n    left: 20px;\n  }\n}\n\n.toc-affix-bottom {\n  position: absolute;\n  right: 20px;\n  bottom: 88px;\n  .ant-affix {\n    background: var(--body-background);\n  }\n  .ant-row-rtl & {\n    right: auto;\n    left: 20px;\n  }\n}\n"
  },
  {
    "path": "site/src/theme/static/var.less",
    "content": ":root {\n  --header-height: 64px;\n  --menu-item-border: 2px;\n  --mobile-max-width: 767.99px;\n\n  --primary-color: #1890ff;\n  --component-background: #fff;\n  --body-background: #fff;\n  --site-text-color: #000;\n  --demo-grid-color: #000;\n  --demo-grid-color-65: #000;\n  --demo-grid-color-75: #000;\n  --layout-body-background: #000;\n  --site-text-color-secondary: #000;\n  --site-border-color-split: #000;\n  --border-radius-base: #000;\n  --font-size-base: 12px;\n  --font-size-max: 12px;\n  //   --font-family: '';\n  //   --code-family: '';\n\n  //   --border-color-base: #fff;\n  //   --purple-3: ''\n  //   --purple-6: ''\n  //   --text-color: ''\n  //   --search-icon-color: ''\n  //   --ease-in-out-circ: ''\n  //   --shadow-2: ''\n  //   --link-color: ''\n  //   --error-color: ''\n  //   --white: #fff\n  //   --green-6: ''\n  //   --gray-8: ''\n  //   --magenta-7: ''\n  //   --line-height-base: 1.2;\n  //   --screen-md-min: 679px;\n  //   --screen-sm-min: 679px;\n  //   --screen-lg: 1400px;\n  //   --mobile-max-width: 679px;\n  //   --box-shadow-base: ''\n  //   --padding-space: ''\n  //   --animation-duration-base: .3s;\n  //   --ease-in-out: ''\n  //   --shadow-1-down: ''\n}\n"
  },
  {
    "path": "site/src/theme/template/IconDisplay/Category.jsx",
    "content": "import { message } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\nimport CopyableIcon from './CopyableIcon.vue';\n\nconst Category = defineComponent({\n  props: ['icons', 'title', 'newIcons', 'theme'],\n  data() {\n    return {\n      justCopied: null,\n    };\n  },\n  methods: {\n    onCopied(type, text) {\n      message.success(\n        <span>\n          <code class=\"copied-code\">{text}</code> copied 🎉\n        </span>,\n      );\n      this.justCopied = type;\n      setTimeout(() => {\n        this.justCopied = null;\n      }, 2000);\n    },\n  },\n  render() {\n    const { icons, title, theme, newIcons } = this.$props;\n    const items = icons.map(name => {\n      return (\n        <CopyableIcon\n          key={name}\n          name={name}\n          type={name}\n          theme={theme}\n          isNew={newIcons.indexOf(name) >= 0}\n          justCopied={this.justCopied}\n          onCopied={this.onCopied}\n        />\n      );\n    });\n    return (\n      <div>\n        <h3 style=\"margin: 1.6em 0 .6em;\">\n          {this.$t(`app.docs.components.icon.category.${title}`)}\n        </h3>\n        <ul class={'anticons-list'}>{items}</ul>\n      </div>\n    );\n  },\n});\n\nexport default Category;\n"
  },
  {
    "path": "site/src/theme/template/IconDisplay/CopyableIcon.vue",
    "content": "<template>\n  <li\n    v-clipboard:copy=\"text\"\n    v-clipboard:success=\"onCopied\"\n    :class=\"justCopied === type ? 'copied' : ''\"\n  >\n    <component :is=\"allIcons[name]\"></component>\n    <span class=\"anticon-class\">\n      <a-badge :dot=\"isNew\">\n        {{ kebabCasedType }}\n      </a-badge>\n    </span>\n  </li>\n</template>\n<script>\nimport * as AntdIcons from '@ant-design/icons-vue';\nimport { Badge } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nconst allIcons = AntdIcons;\n\nconst kebabCase = function kebabCase(str) {\n  return str\n    .split(/(?=[A-Z])/)\n    .map(s => s.replace(s[0], s[0].toUpperCase()))\n    .join('');\n};\n\nexport default defineComponent({\n  components: {\n    'a-badge': Badge,\n  },\n  props: ['name', 'type', 'isNew', 'theme', 'justCopied'],\n  data() {\n    const kebabCasedName = kebabCase(this.name);\n    const kebabCasedType = kebabCase(this.type);\n\n    this.allIcons = allIcons;\n\n    return {\n      text: `<${kebabCasedName} />`,\n      kebabCasedType,\n    };\n  },\n  methods: {\n    onCopied() {\n      this.$emit('copied', this.type, this.text);\n    },\n  },\n});\n</script>\n"
  },
  {
    "path": "site/src/theme/template/IconDisplay/fields.js",
    "content": "import * as AntdIcons from '@ant-design/icons-vue';\n\nconst all = Object.keys(AntdIcons)\n  .map(n => n.replace(/(Outlined|Filled|TwoTone)$/, ''))\n  .filter((n, i, arr) => arr.indexOf(n) === i);\n\nconst direction = [\n  'StepBackward',\n  'StepForward',\n  'FastBackward',\n  'FastForward',\n  'Shrink',\n  'ArrowsAlt',\n  'Down',\n  'Up',\n  'Left',\n  'Right',\n  'CaretUp',\n  'CaretDown',\n  'CaretLeft',\n  'CaretRight',\n  'UpCircle',\n  'DownCircle',\n  'LeftCircle',\n  'RightCircle',\n  'DoubleRight',\n  'DoubleLeft',\n  'VerticalLeft',\n  'VerticalRight',\n  'VerticalAlignTop',\n  'VerticalAlignMiddle',\n  'VerticalAlignBottom',\n  'Forward',\n  'Backward',\n  'Rollback',\n  'Enter',\n  'Retweet',\n  'Swap',\n  'SwapLeft',\n  'SwapRight',\n  'ArrowUp',\n  'ArrowDown',\n  'ArrowLeft',\n  'ArrowRight',\n  'PlayCircle',\n  'UpSquare',\n  'DownSquare',\n  'LeftSquare',\n  'RightSquare',\n  'Login',\n  'Logout',\n  'MenuFold',\n  'MenuUnfold',\n  'BorderBottom',\n  'BorderHorizontal',\n  'BorderInner',\n  'BorderOuter',\n  'BorderLeft',\n  'BorderRight',\n  'BorderTop',\n  'BorderVerticle',\n  'PicCenter',\n  'PicLeft',\n  'PicRight',\n  'RadiusBottomleft',\n  'RadiusBottomright',\n  'RadiusUpleft',\n  'RadiusUpright',\n  'Fullscreen',\n  'FullscreenExit',\n];\n\nconst suggestion = [\n  'Question',\n  'QuestionCircle',\n  'Plus',\n  'PlusCircle',\n  'Pause',\n  'PauseCircle',\n  'Minus',\n  'MinusCircle',\n  'PlusSquare',\n  'MinusSquare',\n  'Info',\n  'InfoCircle',\n  'Exclamation',\n  'ExclamationCircle',\n  'Close',\n  'CloseCircle',\n  'CloseSquare',\n  'Check',\n  'CheckCircle',\n  'CheckSquare',\n  'ClockCircle',\n  'Warning',\n  'IssuesClose',\n  'Stop',\n];\n\nconst editor = [\n  'Edit',\n  'Form',\n  'Copy',\n  'Scissor',\n  'Delete',\n  'Snippets',\n  'Diff',\n  'Highlight',\n  'AlignCenter',\n  'AlignLeft',\n  'AlignRight',\n  'BgColors',\n  'Bold',\n  'Italic',\n  'Underline',\n  'Strikethrough',\n  'Redo',\n  'Undo',\n  'ZoomIn',\n  'ZoomOut',\n  'FontColors',\n  'FontSize',\n  'LineHeight',\n  'Dash',\n  'SmallDash',\n  'SortAscending',\n  'SortDescending',\n  'Drag',\n  'OrderedList',\n  'UnorderedList',\n  'RadiusSetting',\n  'ColumnWidth',\n  'ColumnHeight',\n];\n\nconst data = [\n  'AreaChart',\n  'PieChart',\n  'BarChart',\n  'DotChart',\n  'LineChart',\n  'RadarChart',\n  'HeatMap',\n  'Fall',\n  'Rise',\n  'Stock',\n  'BoxPlot',\n  'Fund',\n  'Sliders',\n];\n\nconst logo = [\n  'Android',\n  'Apple',\n  'Windows',\n  'Ie',\n  'Chrome',\n  'Github',\n  'Aliwangwang',\n  'Dingding',\n  'WeiboSquare',\n  'WeiboCircle',\n  'TaobaoCircle',\n  'Html5',\n  'Weibo',\n  'Twitter',\n  'Wechat',\n  'Youtube',\n  'AlipayCircle',\n  'Taobao',\n  'Skype',\n  'Qq',\n  'MediumWorkmark',\n  'Gitlab',\n  'Medium',\n  'Linkedin',\n  'GooglePlus',\n  'Dropbox',\n  'Facebook',\n  'Codepen',\n  'CodeSandbox',\n  'CodeSandboxCircle',\n  'Amazon',\n  'Google',\n  'CodepenCircle',\n  'Alipay',\n  'AntDesign',\n  'AntCloud',\n  'Aliyun',\n  'Zhihu',\n  'Slack',\n  'SlackSquare',\n  'Behance',\n  'BehanceSquare',\n  'Dribbble',\n  'DribbbleSquare',\n  'Instagram',\n  'Yuque',\n  'Alibaba',\n  'Yahoo',\n  'Reddit',\n  'Sketch',\n];\n\nconst datum = [...direction, ...suggestion, ...editor, ...data, ...logo];\n\nconst other = all.filter(n => !datum.includes(n));\n\nexport const categories = {\n  direction,\n  suggestion,\n  editor,\n  data,\n  logo,\n  other,\n};\n\nexport default categories;\n"
  },
  {
    "path": "site/src/theme/template/IconDisplay/index.jsx",
    "content": "import Icon, * as AntdIcons from '@ant-design/icons-vue';\nimport { categories } from './fields';\nimport { FilledIcon, OutlinedIcon, TwoToneIcon } from './themeIcons';\nimport Category from './Category';\nimport { Radio } from 'ant-design-vue';\nimport { defineComponent } from 'vue';\n\nconst ThemeType = {\n  Filled: 'Filled',\n  Outlined: 'Outlined',\n  TwoTone: 'TwoTone',\n};\n\nconst allIcons = AntdIcons;\n\nconst IconDisplay = defineComponent({\n  cagetories: categories,\n  components: {\n    ARadio: Radio,\n    ARadioGroup: Radio.Group,\n    ARadioButton: Radio.Button,\n  },\n  newIconNames: [],\n  data() {\n    return {\n      theme: ThemeType.Outlined,\n      searchVal: '',\n      searchBarAffixed: false,\n    };\n  },\n  methods: {\n    handleChangeTheme(e) {\n      this.theme = e.target.value;\n    },\n    handleAffixChange(affixed) {\n      this.searchBarAffixed = affixed;\n    },\n    renderCategories() {\n      const { theme } = this;\n\n      return Object.keys(categories)\n        .map(key => {\n          const iconList = categories[key];\n\n          return {\n            category: key,\n            icons: iconList\n              .map(iconName => iconName + theme)\n              .filter(iconName => {\n                if (iconName.toLowerCase().includes(this.searchVal.trim().toLowerCase()))\n                  return allIcons[iconName];\n              }),\n          };\n        })\n        .filter(({ icons }) => !!icons.length)\n        .map(({ category, icons }) => (\n          <Category\n            key={category}\n            title={category}\n            theme={theme}\n            icons={icons}\n            newIcons={IconDisplay.newIconNames}\n          />\n        ));\n    },\n  },\n\n  render() {\n    return (\n      <div>\n        <h3 style=\"margin: 1.6em 0 .6em;\">{this.$t('app.docs.components.icon.pick-theme')}</h3>\n        <a-affix offset-top={32} onChange={this.handleAffixChange}>\n          <div class={this.searchBarAffixed ? 'icons-affix icons-affixed' : 'icons-affix'}>\n            <a-radio-group value={this.theme} onChange={this.handleChangeTheme}>\n              <a-radio-button value={ThemeType.Outlined}>\n                <Icon component={OutlinedIcon} /> {this.$t('app.docs.components.icon.outlined')}\n              </a-radio-button>\n              <a-radio-button value={ThemeType.Filled}>\n                <Icon component={FilledIcon} /> {this.$t('app.docs.components.icon.filled')}\n              </a-radio-button>\n              <a-radio-button value={ThemeType.TwoTone}>\n                <Icon component={TwoToneIcon} /> {this.$t('app.docs.components.icon.two-tone')}\n              </a-radio-button>\n            </a-radio-group>\n            <a-input-search\n              style=\"flex: 1 1 0%; margin-inline-start: 16px;\"\n              placeholder={this.$t('app.docs.components.icon.search.placeholder')}\n              v-model:value={this.searchVal}\n            />\n          </div>\n        </a-affix>\n        {this.renderCategories().length === 0 ? (\n          <a-empty style=\"padding: 12px 0;\" />\n        ) : (\n          this.renderCategories()\n        )}\n      </div>\n    );\n  },\n});\n\nexport default IconDisplay;\n"
  },
  {
    "path": "site/src/theme/template/IconDisplay/themeIcons.jsx",
    "content": "export const FilledIcon = {\n  render() {\n    const path =\n      'M864 64H160C107 64 64 107 64 160v' +\n      '704c0 53 43 96 96 96h704c53 0 96-43 96-96V16' +\n      '0c0-53-43-96-96-96z';\n    return (\n      <svg viewBox=\"0 0 1024 1024\">\n        <path d={path} />\n      </svg>\n    );\n  },\n};\n\nexport const OutlinedIcon = {\n  render() {\n    const path =\n      'M864 64H160C107 64 64 107 64 160v7' +\n      '04c0 53 43 96 96 96h704c53 0 96-43 96-96V160c' +\n      '0-53-43-96-96-96z m-12 800H172c-6.6 0-12-5.4-' +\n      '12-12V172c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4' +\n      ' 12 12v680c0 6.6-5.4 12-12 12z';\n    return (\n      <svg viewBox=\"0 0 1024 1024\">\n        <path d={path} />\n      </svg>\n    );\n  },\n};\n\nexport const TwoToneIcon = {\n  render() {\n    const path =\n      'M16 512c0 273.932 222.066 496 496 49' +\n      '6s496-222.068 496-496S785.932 16 512 16 16 238.' +\n      '066 16 512z m496 368V144c203.41 0 368 164.622 3' +\n      '68 368 0 203.41-164.622 368-368 368z';\n    return (\n      <svg viewBox=\"0 0 1024 1024\">\n        <path d={path} />\n      </svg>\n    );\n  },\n};\n"
  },
  {
    "path": "site/src/theme/zh-CN.js",
    "content": "export default {\n  'app.theme.switch.default': '默认主题',\n  'app.theme.switch.dark': '暗黑主题',\n  'app.theme.switch.compact': '紧凑主题',\n  'app.header.search': '全文本搜索...',\n  'app.header.menu.documentation': '文档',\n  'app.header.menu.components': '组件',\n  'app.header.menu.spec': '设计',\n  'app.header.menu.resource': '资源',\n  'app.header.menu.more': '更多',\n  'app.header.menu.mobile': '移动版',\n  'app.header.menu.pro.v4': 'Ant Design Pro',\n  'app.header.menu.charts': 'Ant Design Charts',\n  'app.header.menu.ecosystem': '生态',\n  'app.header.menu.store': '商店',\n  'app.header.lang': 'English',\n  'app.content.edit-page': '在 GitHub 上编辑此页！',\n  'app.content.edit-demo': '在 GitHub 上编辑此示例！',\n  'app.content.contributors': '文档贡献者',\n  'app.component.examples': '代码演示',\n  'app.component.examples.expand': '展开全部代码',\n  'app.component.examples.collapse': '收起全部代码',\n  'app.component.examples.visible': '显示调试专用演示',\n  'app.component.examples.hide': '隐藏调试专用演示',\n  'app.demo.debug': '此演示仅供调试，线上不会展示',\n  'app.demo.type.js': '切换到 TypeScript',\n  'app.demo.type.ts': '切换到 JavaScript',\n  'app.demo.copy': '复制代码',\n  'app.demo.copied': '复制成功',\n  'app.demo.code.show': '显示代码',\n  'app.demo.code.hide': '收起代码',\n  'app.demo.codepen': '在 CodePen 中打开',\n  'app.demo.codesandbox': '在 CodeSandbox 中打开',\n  'app.demo.stackblitz': '在 Stackblitz 中打开',\n  'app.demo.riddle': '在 Riddle 中打开',\n  'app.home.introduce': '企业级产品设计体系，创造高效愉悦的工作体验',\n  'app.home.recommend': '精彩推荐',\n  'app.home.popularize': '推广',\n  'app.home.design-and-framework': '设计语言与研发框架',\n  'app.home.design-values': '设计价值观',\n  'app.home.design-values-description':\n    '这是 Ant Design 评价设计好坏的内在标准。基于「每个人都追求快乐工作」这一假定，我们在「确定性」和「自然」的基础上，新增「意义感」和「生长性」两个价值观，指引每个设计者做更好地判断和决策。',\n  'app.home.certainty': '确定性',\n  'app.home.meaningful': '意义感',\n  'app.home.growth': '生长性',\n  'app.home.natural': '自然',\n  'app.home.design-guide': '设计指引',\n  'app.home.components': '组件库',\n  'app.home.detail': '查看详情',\n  'app.home.global-style': '全局样式',\n  'app.home.design-patterns': '设计模式',\n  'app.home.more': '更多内容',\n  'app.home.play-video': '播放视频',\n  'app.home.qr': '4.0 正式版发布',\n  'app.home.qr.desc': '扫描上方二维码查看',\n  'app.home.getting-started': '开始使用',\n  'app.home.design-language': '设计语言',\n  'app.home.product-antv-slogan': '全新一代数据可视化解决方案',\n  'app.home.product-pro-slogan': '开箱即用的中台前端/设计解决方案',\n  'app.home.product-mobile-slogan': '基于 Preact / React / React Native 的 UI 组件库',\n  'app.home.product-hitu': '海兔',\n  'app.home.product-hitu-slogan': '全新一代图形化解决方案',\n  'app.home.product-kitchen-slogan': '一款为设计者提升工作效率的 Sketch 工具集',\n  'app.home.product-icons-slogan': '一整套优质的图标集',\n  'app.home.view-more': '查看全部',\n  'app.footer.repo': 'GitHub 仓库',\n  'app.footer.awesome': 'Awesome Ant Design',\n  'app.footer.course': 'Ant Design 实战教程',\n  'app.footer.chinamirror': '国内镜像站点 🇨🇳',\n  'app.footer.primary-color-changing': '正在修改主题色...',\n  'app.footer.primary-color-changed': '修改主题色成功！',\n  'app.footer.kitchen': 'Sketch 工具集',\n  'app.footer.landing': '首页模板集',\n  'app.footer.scaffold': '脚手架',\n  'app.footer.scaffolds': '脚手架市场',\n  'app.footer.dev-tools': '开发工具',\n  'app.footer.umi': 'React 应用开发框架',\n  'app.footer.dumi': '组件/文档研发工具',\n  'app.footer.remax': '全新的小程序开发体验',\n  'app.footer.hooks': 'React Hooks 库',\n  'app.footer.resources': '相关资源',\n  'app.footer.data-vis': '数据可视化',\n  'app.footer.eggjs': '企业级 Node 开发框架',\n  'app.footer.motion': '设计动效',\n  'app.footer.antd-library': 'Axure 部件库',\n  'app.footer.design-resources': '设计资源下载',\n  'app.footer.antux': '页面逻辑素材',\n  'app.footer.community': '社区',\n  'app.footer.help': '帮助',\n  'app.footer.change-log': '更新日志',\n  'app.footer.faq': '常见问题',\n  'app.footer.feedback': '反馈和建议',\n  'app.footer.stackoverflow': 'StackOverflow',\n  'app.footer.segmentfault': 'SegmentFault',\n  'app.footer.discussions': '讨论区',\n  'app.footer.bug-report': '报告 Bug',\n  'app.footer.issues': '讨论列表',\n  'app.footer.version': '文档版本：',\n  'app.footer.author': '蚂蚁金服体验技术部出品 @ XTech',\n  'app.footer.work_with_us': '加入我们',\n  'app.footer.more-product': '更多产品',\n  'app.footer.company': 'XTech',\n  'app.footer.ant-design': '蚂蚁 UI 体系',\n  'app.footer.yuque': '语雀',\n  'app.footer.yuque.slogan': '知识创作与分享工具',\n  'app.footer.fengdie': '云凤蝶',\n  'app.footer.fengdie.slogan': '移动建站平台',\n  'app.footer.antv.slogan': '数据可视化',\n  'app.footer.egg.slogan': '企业级 Node 开发框架',\n  'app.footer.zhihu': 'Ant Design 专栏',\n  'app.footer.zhihu.xtech': '体验科技专栏',\n  'app.footer.seeconf': '蚂蚁体验科技大会',\n  'app.footer.xtech': '蚂蚁体验科技',\n  'app.footer.xtech.slogan': '让用户体验美好',\n  'app.publish.title': 'antd@3.0.0 发布！🎉 🎉 🎉',\n  'app.publish.greeting': '你好，',\n  'app.publish.intro': ' 已正式发布，欢迎升级。',\n  'app.publish.old-version-guide': '如果您还需要使用旧版，请查阅 ',\n  'app.publish.old-version-tips': '，也可通过页面右上角的文档版本选择框进行切换。',\n  'app.docs.color.pick-primary': '选择你的主色',\n  'app.docs.color.pick-background': '选择你的背景色',\n  'app.docs.components.icon.search.placeholder': '在此搜索图标，点击图标可复制代码',\n  'app.docs.components.icon.pick-theme': '选择图标主题风格',\n  'app.docs.components.icon.outlined': '线框风格',\n  'app.docs.components.icon.filled': '实底风格',\n  'app.docs.components.icon.two-tone': '双色风格',\n  'app.docs.components.icon.category.direction': '方向性图标',\n  'app.docs.components.icon.category.suggestion': '提示建议性图标',\n  'app.docs.components.icon.category.editor': '编辑类图标',\n  'app.docs.components.icon.category.data': '数据类图标',\n  'app.docs.components.icon.category.other': '网站通用图标',\n  'app.docs.components.icon.category.logo': '品牌和标识',\n  'app.docs.components.icon.pic-searcher.intro': 'AI 截图搜索上线了，快来体验吧！🎉',\n  'app.docs.components.icon.pic-searcher.title': '上传图片搜索图标',\n  'app.docs.components.icon.pic-searcher.upload-text': '点击/拖拽/粘贴上传图片',\n  'app.docs.components.icon.pic-searcher.upload-hint':\n    '我们会通过上传的图片进行匹配，得到最相似的图标',\n  'app.docs.components.icon.pic-searcher.server-error': '识别服务暂不可用',\n  'app.docs.components.icon.pic-searcher.matching': '匹配中...',\n  'app.docs.components.icon.pic-searcher.modelloading': '神经网络模型加载中...',\n  'app.docs.components.icon.pic-searcher.result-tip': '为您匹配到以下图标：',\n  'app.docs.components.icon.pic-searcher.th-icon': '图标',\n  'app.docs.components.icon.pic-searcher.th-score': '匹配度',\n  'app.components.overview.search': '搜索组件',\n  'app.floatButton.theme-editor': '主题编辑器',\n  'app.floatButton.dark-theme': '暗黑主题',\n  'app.floatButton.compact-theme': '紧凑主题',\n};\n"
  },
  {
    "path": "site/src/type.ts",
    "content": "import type { Ref } from 'vue';\nexport interface GlobalConfig {\n  isMobile: Ref<boolean>;\n  lang: Ref<'zh-CN' | 'en-US'>;\n  isZhCN: Ref<boolean>;\n  responsive: Ref<null | 'narrow' | 'crowded'>;\n  blocked: Ref<boolean>;\n}\n"
  },
  {
    "path": "site/src/typings.d.ts",
    "content": "interface Window {\n  docsearch: any;\n  notBlockEnabled: any;\n}\n\ninterface Header {\n  level: number;\n  title: string;\n  slug: string;\n  content: string;\n}\ninterface PageData {\n  title: string;\n  description: string;\n  headers: Header[];\n  frontmatter: Record<string, any>;\n}\ndeclare module '*.md' {\n  import type { DefineComponent } from 'vue';\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  const component: DefineComponent<any, any, any> & { readonly pageDate?: PageData };\n  export default component;\n}\n\ndeclare module '*.svg';\n"
  },
  {
    "path": "site/src/utils/generateOnlineDemo.ts",
    "content": "import { getParameters } from 'codesandbox/lib/api/define';\nimport packageInfo from '../../../package.json';\n\nconst indexHtml = `<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Ant Design Vue Demo</title>\n    <style>\n      body {\n        padding: 20px;\n      }\n    </style>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n  </body>\n</html>\n`;\n\nconst appVue = `<template>\n<Demo />\n</template>\n\n<script>\nimport { defineComponent } from \"vue\";\nimport Demo from \"./demo.vue\";\n\nexport default defineComponent({\ncomponents: {\n  Demo,\n},\n});\n</script>`;\n\nconst mainJs = `import { createApp } from 'vue';\nimport Antd from 'ant-design-vue';\nimport App from './App';\nimport 'ant-design-vue/dist/reset.css';\n\nconst app = createApp(App);\n\napp.use(Antd).mount('#app');\n`;\n\nfunction getDeps(code: string) {\n  const deps = Object.assign({}, packageInfo.dependencies, packageInfo.devDependencies);\n  return (code.match(/from '([^']+)';\\n/g) || [])\n    .map(v => v.slice(6, v.length - 3))\n    .reduce((prevV, dep) => {\n      prevV[dep] = deps[dep] || 'latest';\n      return prevV;\n    }, {});\n}\n\ntype Meta = {\n  title: string;\n};\n\n// codeSandbox\nexport function getCodeSandboxParams(code: string, meta: Meta): string {\n  return getParameters({\n    files: {\n      'package.json': {\n        content: JSON.stringify(\n          {\n            title: meta.title,\n            dependencies: {\n              ...getDeps(code),\n              vue: packageInfo.peerDependencies.vue,\n              'ant-design-vue': packageInfo.version,\n            },\n            devDependencies: {\n              '@vue/cli-plugin-babel': '~4.5.0',\n              typescript: '^4.0.5',\n            },\n            browserslist: ['> 0.2%', 'not dead'],\n          },\n          undefined,\n          2,\n        ),\n        isBinary: false,\n      },\n      'index.html': {\n        content: indexHtml,\n        isBinary: false,\n      },\n      'src/demo.vue': {\n        content: code,\n        isBinary: false,\n      },\n      'src/App.vue': {\n        content: appVue,\n        isBinary: false,\n      },\n      'src/main.js': {\n        content: mainJs,\n        isBinary: false,\n      },\n    },\n  });\n}\n"
  },
  {
    "path": "site/src/utils/request.js",
    "content": "/**\n * request 网络请求工具\n * 更详细的 api 文档\b: https://github.com/umijs/umi-request\n */\nimport { extend } from 'umi-request';\nimport { notification } from 'ant-design-vue';\nconst codeMessage = {\n  200: '服务器成功返回请求的数据。',\n  201: '新建或修改数据成功。',\n  202: '一个请求已经进入后台排队（异步任务）。',\n  204: '删除数据成功。',\n  400: '发出的请求有错误，服务器没有进行新建或修改数据的操作。',\n  401: '用户没有权限（令牌、用户名、密码错误）。',\n  403: '用户得到授权，但是访问是被禁止的。',\n  404: '发出的请求针对的是不存在的记录，服务器没有进行操作。',\n  406: '请求的格式不可得。',\n  410: '请求的资源被永久删除，且不会再得到的。',\n  422: '当创建一个对象时，发生一个验证错误。',\n  500: '服务器发生错误，请检查服务器。',\n  502: '网关错误。',\n  503: '服务不可用，服务器暂时过载或维护。',\n  504: '网关超时。',\n};\n/**\n * 异常处理程序\n */\n\nconst errorHandler = error => {\n  const { response } = error;\n\n  if (response && response.status) {\n    const errorText = codeMessage[response.status] || response.statusText;\n    const { status, url } = response;\n    notification.error({\n      message: `请求错误 ${status}: ${url}`,\n      description: errorText,\n    });\n  } else if (!response) {\n    notification.error({\n      description: '您的网络发生异常，无法连接服务器',\n      message: '网络异常',\n    });\n  }\n\n  return response;\n};\n/**\n * 配置request请求时的默认参数\n */\n\nconst request = extend({\n  errorHandler,\n  // 默认错误处理\n  credentials: 'include', // 默认请求是否带上cookie\n});\nexport default request;\n"
  },
  {
    "path": "site/src/utils/util.ts",
    "content": "export function isZhCN(name: string): boolean {\n  return /-cn\\/?$/.test(name);\n}\n\nexport function getLocalizedPathname(\n  path: string,\n  zhCN?: boolean,\n  query = {},\n  hash?: {\n    zhCN: string;\n    enUS: string;\n  },\n): {\n  path: string;\n  query: Record<string, any>;\n} {\n  const pathname = path.startsWith('/') ? path : `/${path}`;\n  let fullPath;\n  if (!zhCN) {\n    // to enUS\n    fullPath = /\\/?index-cn/.test(pathname) ? '/' : pathname.replace('-cn', '');\n  } else if (pathname === '/') {\n    fullPath = '/index-cn';\n  } else if (pathname.endsWith('/')) {\n    fullPath = pathname.replace(/\\/$/, '-cn/');\n  } else {\n    fullPath = `${pathname}-cn`;\n  }\n\n  if (hash) {\n    const localHash = hash[zhCN ? 'zhCN' : 'enUS'];\n    fullPath += `#${localHash}`;\n  }\n  return { path: fullPath, query };\n}\n"
  },
  {
    "path": "site/src/views/ComponentOverview.less",
    "content": ".components-overview {\n  padding: 0;\n\n  &-group-title {\n    margin-bottom: 24px !important;\n  }\n\n  &-title {\n    overflow: hidden;\n    color: var(--text-color);\n    text-overflow: ellipsis;\n  }\n  &-img {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 152px;\n  }\n  &-card {\n    cursor: pointer;\n    transition: all 0.5s ease 0s;\n    &:hover {\n      box-shadow: var(--shadow-2);\n    }\n  }\n\n  &-affix {\n    transition: all 0.25s;\n  }\n\n  &-affixed {\n    padding: 12px;\n    margin: -8px;\n    border-radius: 6px;\n    border: 1px solid var(--border-color-base);\n    background-color: var(--body-background);\n  }\n}\n\n.components-overview-search {\n  width: 100%;\n  padding: 0;\n  font-size: 20px;\n  border: 0;\n  box-shadow: none;\n\n  input {\n    font-size: 20px;\n  }\n\n  .anticon {\n    color: #bbb;\n  }\n}\n\n.components-overview-img img {\n  object-fit: cover;\n  max-height: 100%;\n  max-width: 100%;\n}\n"
  },
  {
    "path": "site/src/views/ComponentOverview.vue",
    "content": "<template>\n  <section class=\"markdown\">\n    <h1>{{ isZhCN ? '组件总览' : 'Overview' }}</h1>\n    <section class=\"markdown\">\n      <p>\n        <code>ant-design-vue</code>\n        {{\n          isZhCN\n            ? '为 Web 应用提供了丰富的基础 UI 组件，我们还将持续探索企业级应用的最佳 UI 实践。'\n            : 'provides plenty of UI components to enrich your web applications, and we will improve components experience consistently. '\n        }}\n      </p>\n    </section>\n    <a-divider></a-divider>\n    <a-affix :offset-top=\"32\" @change=\"handleAffixChange\">\n      <div\n        class=\"components-overview-affix\"\n        :class=\"{ 'components-overview-affixed': searchBarAffixed }\"\n      >\n        <a-input\n          ref=\"inputRef\"\n          v-model:value=\"search\"\n          :placeholder=\"$t('app.components.overview.search')\"\n          class=\"components-overview-search\"\n          auto-focus\n          :style=\"{ fontSize: searchBarAffixed ? '18px' : '' }\"\n        >\n          <template #suffix>\n            <SearchOutlined />\n          </template>\n        </a-input>\n      </div>\n    </a-affix>\n    <a-divider></a-divider>\n    <template v-for=\"group in menuItems\" :key=\"group.title\">\n      <div class=\"components-overview\">\n        <h2 class=\"ant-typography components-overview-group-title\">\n          <a-space align=\"center\">\n            {{ isZhCN ? group.title : group.enTitle }}\n            <a-tag style=\"display: block\">{{ group.children.length }}</a-tag>\n          </a-space>\n        </h2>\n        <a-row :gutter=\"[24, 24]\">\n          <template v-for=\"component in group.children\" :key=\"component.title\">\n            <a-col :xs=\"24\" :sm=\"12\" :lg=\"8\" :xl=\"6\">\n              <component\n                :is=\"component.target ? 'a' : 'router-link'\"\n                v-bind=\"\n                  component.target\n                    ? { href: component.path, target: component.target }\n                    : { to: getLocalizedPathname(component.path, isZhCN) }\n                \"\n              >\n                <a-card size=\"small\" class=\"components-overview-card\">\n                  <template #title>\n                    <div class=\"components-overview-title\">\n                      {{ component.title }}\n                      {{ isZhCN ? component.subtitle : '' }}\n                    </div>\n                  </template>\n                  <div class=\"components-overview-img\">\n                    <img\n                      :src=\"isDark && component.coverDark ? component.coverDark : component.cover\"\n                      :alt=\"component.title\"\n                    />\n                  </div>\n                </a-card>\n              </component>\n            </a-col>\n          </template>\n        </a-row>\n      </div>\n    </template>\n  </section>\n</template>\n<script lang=\"ts\">\nimport type { GlobalConfig } from '../type';\nimport { computed, defineComponent, inject, onMounted, ref } from 'vue';\nimport { SearchOutlined } from '@ant-design/icons-vue';\nimport { GLOBAL_CONFIG } from '../SymbolKey';\nimport useMenus from '../hooks/useMenus';\nimport { getLocalizedPathname } from '../utils/util';\nexport default defineComponent({\n  name: 'ComponentOverview',\n  components: {\n    SearchOutlined,\n  },\n  setup() {\n    const globalConfig = inject<GlobalConfig>(GLOBAL_CONFIG);\n    const themeMode = inject('themeMode');\n    const isDark = computed<boolean>(() => (themeMode as any).theme.value === 'dark');\n    const search = ref('');\n    const inputRef = ref();\n    const { dataSource } = useMenus();\n\n    const searchBarAffixed = ref(false);\n    function handleAffixChange(affixed?: boolean) {\n      searchBarAffixed.value = affixed;\n    }\n\n    const menuItems = computed(() => {\n      return [\n        {\n          children: [\n            {\n              category: 'Components',\n              cols: 1,\n              cover: 'https://gw.alipayobjects.com/zos/alicdn/f-SbcX2Lx/Table.svg',\n              coverDark: 'https://gw.alipayobjects.com/zos/alicdn/f-SbcX2Lx/Table.svg',\n              path: 'https://surelyvue.com/',\n              subtitle: '更强大的表格',\n              title: 'Surely Table',\n              type: 'Advanced And Powerful',\n              target: '_blank',\n            },\n          ],\n          enTitle: 'Advanced And Powerful',\n          title: '更强大',\n          order: 0,\n        },\n      ].concat(\n        dataSource.value\n          .filter(i => i.order > -1)\n          .map(group => {\n            const components = group.children.filter(\n              (component: any) =>\n                !search.value.trim() ||\n                component.title.toLowerCase().includes(search.value.trim().toLowerCase()) ||\n                (component.subtitle || '')\n                  .toLowerCase()\n                  .includes(search.value.trim().toLowerCase()),\n            );\n            return { ...group, children: components };\n          })\n          .filter(i => i.children.length),\n      );\n    });\n    onMounted(() => {\n      inputRef.value.focus();\n    });\n    return {\n      globalConfig,\n      search,\n      menuItems,\n      getLocalizedPathname,\n      inputRef,\n      isZhCN: globalConfig?.isZhCN,\n      isDark,\n      searchBarAffixed,\n      handleAffixChange,\n    };\n  },\n});\n</script>\n<style lang=\"less\" src=\"./ComponentOverview.less\"></style>\n"
  },
  {
    "path": "site/src/views/theme-editor/JSONEditor/index.vue",
    "content": "<template>\n  <div ref=\"editor\" class=\"svelte-jsoneditor-vue\"></div>\n</template>\n\n<script>\nimport { JSONEditor, Mode } from 'vanilla-jsoneditor';\n// JSONEditor properties as of version 0.3.60\nconst propNames = [\n  'content',\n  'mode',\n  'mainMenuBar',\n  'navigationBar',\n  'statusBar',\n  'readOnly',\n  'indentation',\n  'tabSize',\n  'escapeControlCharacters',\n  'escapeUnicodeCharacters',\n  'validator',\n  'onError',\n  'onChange',\n  'onChangeMode',\n  'onClassName',\n  'onRenderValue',\n  'onRenderMenu',\n  'queryLanguages',\n  'queryLanguageId',\n  'onChangeQueryLanguage',\n  'onFocus',\n  'onBlur',\n];\n\nfunction pickDefinedProps(object, propNames) {\n  const props = {};\n  for (const propName of propNames) {\n    if (object[propName] !== undefined) {\n      props[propName] = object[propName];\n    }\n  }\n  return props;\n}\n\nexport default {\n  name: 'VueJSONEditor',\n  props: propNames,\n  mounted() {\n    this.editor = new JSONEditor({\n      target: this.$refs['editor'],\n      props: {\n        ...pickDefinedProps(this, propNames),\n        mode: Mode.text,\n      },\n    });\n  },\n  updated() {\n    const props = pickDefinedProps(this, propNames);\n    this.editor.updateProps(props);\n  },\n  beforeUnmount() {\n    this.editor.destroy();\n    this.editor = null;\n  },\n};\n</script>\n\n<style scoped>\n.svelte-jsoneditor-vue {\n  display: flex;\n  flex: 1;\n}\n</style>\n"
  },
  {
    "path": "site/src/views/theme-editor/index.vue",
    "content": "<template>\n  <Header />\n  <div class=\"theme-editor\">\n    <a-config-provider :theme=\"{ inherit: false }\">\n      <div class=\"theme-editor-header\">\n        <a-typography-title :level=\"5\" :style=\"{ margin: 0 }\">\n          {{ locale.title }}\n        </a-typography-title>\n\n        <div>\n          <a-modal\n            v-model:open=\"editModelOpen\"\n            :title=\"locale.editModelTitle\"\n            :width=\"600\"\n            :ok-text=\"locale.save\"\n            @ok=\"editSave\"\n            @cancel=\"editModelClose\"\n          >\n            <Suspense>\n              <template #fallback>\n                <div :style=\"{ textAlign: 'center', width: '100%', padding: '24px 0' }\">\n                  <a-spin :tip=\"locale.initialEditor\" />\n                </div>\n              </template>\n              <template #default>\n                <JSONEditor\n                  :content=\"themeConfigContent\"\n                  :on-change=\"handleEditConfigChange\"\n                  :main-menu-bar=\"false\"\n                />\n              </template>\n            </Suspense>\n          </a-modal>\n          <a-button class=\"theme-editor-header-actions\" @click=\"handleExport\">\n            {{ locale.export }}\n          </a-button>\n          <a-button class=\"theme-editor-header-actions\" @click=\"handleEditConfig\">\n            {{ locale.edit }}\n          </a-button>\n          <a-button type=\"primary\" class=\"theme-editor-header-actions\" @click=\"handleSave\">\n            {{ locale.save }}\n          </a-button>\n        </div>\n      </div>\n      <ThemeEditor\n        :theme=\"{ name: 'Custom Theme', key: 'test', config: theme }\"\n        :style=\"{ height: 'calc(100vh - 64px - 56px)' }\"\n        :locale=\"lang === 'cn' ? zhCN : enUS\"\n        @themeChange=\"handleThemeChange\"\n      />\n    </a-config-provider>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, defineAsyncComponent, ref, watch, onMounted, nextTick } from 'vue';\nimport { message } from 'ant-design-vue';\nimport { useLocale } from '../../i18n';\nimport locales from './locales';\n\nimport Header from '../../layouts/header/index.vue';\n\n// antd换肤编辑器\nimport { enUS, ThemeEditor, zhCN } from '../../components/antdv-token-previewer';\n\nimport type { ThemeConfig } from '../../../../components/config-provider/context';\n\nconst ANT_DESIGN_VUE_V4_THEME_EDITOR_THEME = 'ant-design-vue-v4-theme-editor-theme';\n\nfunction isObject(target: any) {\n  return Object.prototype.toString.call(target) === '[object Object]';\n}\n\nexport default defineComponent({\n  name: 'CustomTheme',\n  components: {\n    Header,\n    ThemeEditor,\n    JSONEditor: defineAsyncComponent(() => import('./JSONEditor/index.vue')), // 异步组件加载json编辑器\n  },\n  setup() {\n    // 国际化\n    const [locale, lang] = useLocale(locales);\n\n    // 换肤\n    const theme = ref<ThemeConfig>({});\n\n    const editModelOpen = ref<boolean>(false);\n    const editThemeFormatRight = ref<boolean>(true);\n    const themeConfigContent = ref({\n      text: '{}',\n      json: undefined,\n    });\n\n    const getTheme = () => {\n      const storedConfig = localStorage.getItem(ANT_DESIGN_VUE_V4_THEME_EDITOR_THEME);\n      if (storedConfig) {\n        theme.value = JSON.parse(storedConfig);\n      }\n    };\n\n    const setTheme = theme => {\n      localStorage.setItem(ANT_DESIGN_VUE_V4_THEME_EDITOR_THEME, JSON.stringify(theme));\n    };\n\n    const editModelClose = () => {\n      editModelOpen.value = false;\n    };\n\n    const editSave = () => {\n      if (!editThemeFormatRight.value) {\n        message.error(locale.value.editJsonContentTypeError);\n        return;\n      }\n      const themeConfig = themeConfigContent.value.text\n        ? JSON.parse(themeConfigContent.value.text)\n        : themeConfigContent.value.json;\n\n      if (!isObject(themeConfig)) {\n        message.error(locale.value.editJsonContentTypeError);\n        return;\n      }\n      theme.value = themeConfig;\n      editModelClose();\n      message.success(locale.value.editSuccessfully);\n    };\n\n    const handleSave = () => {\n      setTheme(theme.value);\n      message.success(locale.value.saveSuccessfully);\n    };\n\n    const handleEditConfig = () => {\n      editModelOpen.value = true;\n    };\n\n    const handleEditConfigChange = (newcontent, _, status) => {\n      themeConfigContent.value = newcontent;\n      if (status.contentErrors && status.contentErrors.parseError) {\n        editThemeFormatRight.value = false;\n      } else {\n        editThemeFormatRight.value = true;\n      }\n    };\n\n    const handleExport = () => {\n      const file = new File([JSON.stringify(theme.value, null, 2)], `Ant Design Vue Theme.json`, {\n        type: 'text/json; charset=utf-8;',\n      });\n      const tmpLink = document.createElement('a');\n      const objectUrl = URL.createObjectURL(file);\n\n      tmpLink.href = objectUrl;\n      tmpLink.download = file.name;\n      document.body.appendChild(tmpLink);\n      tmpLink.click();\n\n      document.body.removeChild(tmpLink);\n      URL.revokeObjectURL(objectUrl);\n    };\n\n    const handleThemeChange = newTheme => {\n      theme.value = newTheme.config;\n    };\n\n    nextTick(() => {\n      getTheme();\n    });\n\n    watch(editModelOpen, val => {\n      if (!val) {\n        themeConfigContent.value = {\n          json: theme.value,\n          text: undefined,\n        } as any;\n      }\n    });\n\n    watch(theme, val => {\n      if (!editModelOpen.value) {\n        themeConfigContent.value = {\n          json: val,\n          text: undefined,\n        } as any;\n      }\n    });\n\n    onMounted(() => {\n      document.title = `${locale.value.title} - Ant Design Vue`;\n    });\n\n    return {\n      locale,\n      lang,\n\n      theme,\n      handleThemeChange,\n\n      editModelOpen,\n      editThemeFormatRight,\n      themeConfigContent,\n\n      editModelClose,\n      editSave,\n\n      handleSave,\n      handleEditConfig,\n      handleEditConfigChange,\n      handleExport,\n\n      // 皮肤编辑器的国际化\n      zhCN,\n      enUS,\n    };\n  },\n});\n</script>\n\n<style lang=\"less\">\n.theme-editor {\n  &-header {\n    display: flex;\n    height: 56px;\n    align-items: center;\n    padding: 0 24px;\n    justify-content: space-between;\n    border-bottom: 1px solid #f0f0f0;\n    box-sizing: border-box;\n    &-actions {\n      margin-right: 8px;\n      &:last-child {\n        margin-right: 0;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "site/src/views/theme-editor/locales.ts",
    "content": "export default {\n  cn: {\n    title: '主题编辑器',\n    save: '保存',\n    edit: '编辑',\n    export: '导出',\n    editModelTitle: '编辑主题配置',\n    editJsonContentTypeError: '主题 JSON 格式错误',\n    editSuccessfully: '编辑成功',\n    saveSuccessfully: '保存成功',\n    initialEditor: '正在初始化编辑器...',\n  },\n  en: {\n    title: 'Theme Editor',\n    save: 'Save',\n    edit: 'Edit',\n    export: 'Export',\n    editModelTitle: 'edit Theme Config',\n    editJsonContentTypeError: 'The theme of the JSON format is incorrect',\n    editSuccessfully: 'Edited successfully',\n    saveSuccessfully: 'Saved successfully',\n    initialEditor: 'Initializing Editor...',\n  },\n};\n"
  },
  {
    "path": "site/src/vueDocs/compatible-style.en-US.md",
    "content": "---\norder: 6.5\ntitle: CSS Compatible\n---\n\nAnt Design Vue supports the last 2 versions of modern browsers. If you need to be compatible with legacy browsers, please perform downgrade processing according to actual needs:\n\n### Compatible adjustment\n\nAnt Design Vue default using CSS-in-JS with `:where` Selector to reduce priority to avoid user additional adjust style cost when updating. If you want to support old browser (or some other CSS framework selector priority conflict like TailwindCSS), you can use `StyleProvider` to adjust this behavior :\n\n```html\n// Config `hashPriority` to `high` instead of default `low`, which will remove `:where` wrapper\n<template>\n  <a-style-provider hash-priority=\"high\">\n    <MyApp />\n  </a-style-provider>\n</template>\n```\n\nIt will turn `:where` to class selector:\n\n```diff\n--  :where(.css-bAMboO).ant-btn {\n++  .css-bAMboO.ant-btn {\n      color: #fff;\n    }\n```\n\nNote:\n\n1、After turning off the `:where` downgrade, you may need to manually adjust the priority of some styles.\n\n2、hashPriority not support change, you can reload for new value.\n\n### CSS Logical Properties\n\nTo unify LTR and RTL styles, Ant Design Vue uses CSS logical properties. For example, the original `margin-left` is replaced by `margin-inline-start`, so that it is the starting position spacing under both LTR and RTL. If you need to be compatible with older browsers, you can configure `transformers` through the `StyleProvider` of `@ant-design/cssinjs`:\n\n```html\n// `transformers` provides a way to transform CSS properties\n<template>\n  <a-style-provider :transformers=\"[legacyLogicalPropertiesTransformer]\">\n    <MyApp />\n  </a-style-provider>\n</template>\n\n<script lang=\"ts\" setup>\n  import { legacyLogicalPropertiesTransformer } from 'ant-design-vue';\n</script>\n```\n\nWhen toggled, styles will downgrade CSS logical properties:\n\n```diff\n.ant-modal-root {\n-- inset: 0;\n++ top: 0;\n++ right: 0;\n++ bottom: 0;\n++ left: 0;\n}\n```\n"
  },
  {
    "path": "site/src/vueDocs/compatible-style.zh-CN.md",
    "content": "---\norder: 6.5\ntitle: 样式兼容\n---\n\nAnt Design Vue 支持最近 2 个版本的现代浏览器。如果你需要兼容旧版浏览器，请根据实际需求进行降级处理：\n\n### `:where` 选择器\n\nAnt Design Vue 的 CSS-in-JS 默认通过 `:where` 选择器降低 CSS Selector 优先级，以减少用户升级时额外调整自定义样式成本。在某些场景下你如果需要支持的旧版浏览器（或者如 TailwindCSS 优先级冲突），你可以使用 `StyleProvider` 取消默认的降权操作 ：\n\n```html\n// `hashPriority` 默认为 `low`，配置为 `high` 后， // 会移除 `:where` 选择器封装\n<template>\n  <a-style-provider hash-priority=\"high\">\n    <MyApp />\n  </a-style-provider>\n</template>\n```\n\n切换后，样式将从 `:where` 切换为类选择器：\n\n```diff\n--  :where(.css-bAMboO).ant-btn {\n++  .css-bAMboO.ant-btn {\n      color: #fff;\n    }\n```\n\n注意：\n\n1、关闭 `:where` 降权后，你可能需要手动调整一些样式的优先级。\n\n2、hashPriority 不支持动态修改，修改后请刷新浏览器\n\n### CSS 逻辑属性\n\n为了统一 LTR 和 RTL 样式，Ant Design Vue 使用了 CSS 逻辑属性。例如原 `margin-left` 使用 `margin-inline-start` 代替，使其在 LTR 和 RTL 下都为起始位置间距。如果你需要兼容旧版浏览器（如 360 浏览器、QQ 浏览器 等等），可以通过 `ant-design-vue` 的 `StyleProvider` 配置 `transformers` 将其转换：\n\n```html\n// `transformers` 提供预处理功能将样式进行转换\n<template>\n  <a-style-provider :transformers=\"[legacyLogicalPropertiesTransformer]\">\n    <MyApp />\n  </a-style-provider>\n</template>\n\n<script lang=\"ts\" setup>\n  import { legacyLogicalPropertiesTransformer } from 'ant-design-vue';\n</script>\n```\n\n切换后，样式将降级 CSS 逻辑属性：\n\n```diff\n.ant-modal-root {\n-- inset: 0;\n++ top: 0;\n++ right: 0;\n++ bottom: 0;\n++ left: 0;\n}\n```\n"
  },
  {
    "path": "site/src/vueDocs/customize-theme.en-US.md",
    "content": "# Customize Theme\n\nAnt Design Vue allows you to customize our design tokens to satisfy UI diversity from business or brand requirements, including primary color, border radius, border color, etc.\n\nIn version 4.0, we provide a new way to customize themes. Different from the less and CSS variables of the 3.x version, with CSS-in-JS, the ability of theming has also been enhanced, including but not limited to:\n\n1. Switching theme dynamically；\n2. Multiple themes；\n3. Customizing theme variables for some component；\n4. ...\n\n## Customize theme with `ConfigProvider`\n\nIn version 4.0 we call the smallest element that affects the theme **Design Token**. By modifying the Design Token, we can present various themes or components.\n\n### Customize Design Token\n\nYou can pass `theme` to ConfigProvider to customize theme. After migrate to V4, theme of V4 will be applied by default. Here's a simple example:\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      token: {\n        colorPrimary: '#00b96b',\n      },\n    }\"\n  >\n    <a-button />\n  </a-config-provider>\n</template>\n```\n\nYou will get a theme with primary color <ColorChunk color=\"#00b96b\"></ColorChunk>. And we can see the change in Button:\n\n![themed button](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*CbF_RJfKEiwAAAAAAAAAAAAAARQnAQ)\n\n### Use Preset Algorithms\n\nThemes with different styles can be quickly generated by modifying `algorithm`. Ant Design Vue 4.0 provides three sets of preset algorithms by default, which are default algorithm `theme.defaultAlgorithm`, dark algorithm `theme.darkAlgorithm` and compact algorithm `theme.compactAlgorithm`. You can switch algorithms by modifying the `algorithm` property of `theme` in ConfigProvider.\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      algorithm: theme.darkAlgorithm,\n    }\"\n  >\n    <a-button />\n  </a-config-provider>\n</template>\n\n<script setup>\n  import { theme } from 'ant-design-vue';\n</script>\n```\n\n### Customize Component Token\n\nIn addition to Design Token, each component will also have its own Component Token to achieve style customization capabilities for components, and different components will not affect each other. Similarly, other Design Token of components can also be overridden in this way.\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      components: {\n        Radio: {\n          colorPrimary: '#00b96b',\n        },\n      },\n    }\"\n  >\n    <a-radio>Radio</a-radio>\n    <a-checkbox>Checkbox</a-checkbox>\n  </a-config-provider>\n</template>\n```\n\nIn this way, we changed the primary color of Radio to <ColorChunk color=\"#00b96b\"></ColorChunk>, and Checkbox is not affected.\n\n![component token](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*EMY0QrHFDjsAAAAAAAAAAAAAARQnAQ)\n\n> Notice: `ConfigProvider` will not take effect on static methods such as `message.xxx`, `Modal.xxx`, `notification.xxx`, because in these methods, ant-design-vue will dynamically create new ones through `render` Vue entities. Its context is not the same as the context of the current code, so context information cannot be obtained. When you need context information (such as the content configured by ConfigProvider), you can use the `Modal.useModal` method to return the modal entity and the contextHolder node. Just insert it where you need to get the context.\n\n## Other Ways to Use Dynamic Themes\n\n### Switch Themes Dynamically\n\nIn v4, dynamically switching themes is very simple for users, you can dynamically switch themes at any time through the `theme` property of `ConfigProvider` without any additional configuration.\n\n### Local Theme\n\nBy nesting `ConfigProvider` you can apply local theme to some parts of your page. Design Tokens that have not been changed in the child theme will inherit the parent theme.\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      token: {\n        colorPrimary: '#1677ff',\n      },\n    }\"\n  >\n    <a-button />\n    <a-config-provider\n      :theme=\"{\n        token: {\n          colorPrimary: '#1890ff',\n        },\n      }\"\n    >\n      <a-button />\n    </a-config-provider>\n  </a-config-provider>\n</template>\n```\n\n### Consume Design Token\n\nIf you want to consume the Design Token under the current theme, we provide `useToken` hook to get Design Token.\n\n```html\n<template>\n  <a-button :style=\"{ backgroundColor: token.colorPrimary }\">Button</a-button>\n</template>\n\n<script setup>\n  import { theme } from 'ant-design-vue';\n  const { useToken } = theme;\n  const { token } = useToken();\n</script>\n```\n\n### Static consume (e.g. less)\n\nWhen you need token out of Vue life cycle, you can use static function to get them:\n\n```jsx\nimport { theme } from 'ant-design-vue';\n\nconst { defaultAlgorithm, defaultSeed } = theme;\n\nconst mapToken = defaultAlgorithm(defaultSeed);\n```\n\nIf you want to use in preprocess style framework like less, use less-loader for injection:\n\n```jsx\n{\n  loader: \"less-loader\",\n  options: {\n    lessOptions: {\n      modifyVars: mapToken,\n    },\n  },\n}\n```\n\nCompatible package provide convert function to transform to v3 less variable. Read [this](/docs/vue/migration-v4) for detail.\n\n## Advanced\n\nIn Design Token, we provide a three-layer structure that is more suitable for the design, and disassemble the Design Token into three parts: Seed Token, Map Token and Alias Token. These three groups of Tokens are not simple groupings, but a three-layer derivation relationship. Map Tokens are derived from Seed Tokens, and Alias Tokens are derived from Map Tokens. In most cases, using Seed Tokens is sufficient for custom themes. But if you need a higher degree of theme customization, you need to understand the life cycle of Design Token in antd.\n\n### Life Cycle of Design Token\n\n![token](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*uF3kTrY4InUAAAAAAAAAAAAAARQnAQ)\n\n### Seed Token\n\nSeed Token means the origin of all design intent. For example, we can change the theme color by changing `colorPrimary`, and the algorithm inside antd will automatically calculate and apply a series of corresponding colors according to the Seed Token:\n\n```jsx\nconst theme = {\n  token: {\n    colorPrimary: '#1890ff',\n  },\n};\n```\n\n### Map Token\n\nMap Token is a gradient variable derived from Seed. It is recommended to implement custom Map Token through `theme.algorithm`, which can ensure the gradient relationship between Map Tokens. It can also be overridden by `theme.token` to modify the value of some map tokens individually.\n\n```jsx\nconst theme = {\n  token: {\n    colorPrimaryBg: '#e6f7ff',\n  },\n};\n```\n\n### Alias Token\n\nAlias Token is used to control the style of some common components in batches, which is basically a Map Token alias, or a specially processed Map Token.\n\n```jsx\nconst theme = {\n  token: {\n    colorLink: '#1890ff',\n  },\n};\n```\n\n### Algorithm\n\nThe basic algorithm is used to expand the Seed Token into a Map Token, such as calculating a gradient color palette from a basic color, or calculating rounded corners of various sizes from a basic rounded corner. Algorithms can be used alone or in any combination, for example, dark and compact algorithms can be combined to get a dark and compact theme.\n\n```jsx\nimport { theme } from 'ant-design-vue';\n\nconst { darkAlgorithm, compactAlgorithm } = theme;\n\nconst theme = {\n  algorithm: [darkAlgorithm, compactAlgorithm],\n};\n```\n\n### Legacy Browser Compatible\n\nPlease ref to [CSS Compatible](/docs/vue/compatible-style).\n\n## API\n\n### Theme\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| token | Modify Design Token | `AliasToken` | - |\n| inherit | Inherit theme configured in upper ConfigProvider | boolean | true |\n| algorithm | Modify the algorithms of theme | `(token: SeedToken) => MapToken` \\| `((token: SeedToken) => MapToken)[]` | `defaultAlgorithm` |\n| components | Modify Component Token and Alias Token applied to components | OverrideToken | - |\n\n### OverrideToken\n\n| Property | Description | Type | Default |\n| --- | --- | --- | --- |\n| `Component` (Can be any antd Component name like `Button`) | Modify Component Token or override Component used Alias Token | `ComponentToken & AliasToken` | - |\n\n### SeedToken\n\n<TokenTable type=\"seed\"></TokenTable>\n\n### MapToken\n\n> Inherit all SeedToken properties\n\n<TokenTable type=\"map\"></TokenTable>\n\n### AliasToken\n\n> Inherit all SeedToken and MapToken properties\n\n<TokenTable type=\"alias\"></TokenTable>\n\n## How to Debug your Theme\n\nWe provide tools to help users debug themes: [Theme Editor](/theme-editor)\n\nYou can use this tool to freely modify Design Token to meet your theme expectations.\n"
  },
  {
    "path": "site/src/vueDocs/customize-theme.zh-CN.md",
    "content": "# 定制主题\n\nAnt Design Vue 设计规范和技术上支持灵活的样式定制，以满足业务和品牌上多样化的视觉需求，包括但不限于全局样式（主色、圆角、边框）和指定组件的视觉定制。\n\n在 4.0 版本的 Ant Design Vue 中，我们提供了一套全新的定制主题方案。不同于 3.x 版本的 less 和 CSS 变量，有了 CSS-in-JS 的加持后，动态主题的能力也得到了加强，包括但不限于：\n\n1. 支持动态切换主题；\n2. 支持同时存在多个主题；\n3. 支持针对某个/某些组件修改主题变量；\n4. ...\n\n## 在 ConfigProvider 中配置主题\n\n在 4.0 版本中我们把影响主题的最小元素称为 **Design Token**。通过修改 Design Token，我们可以呈现出各种各样的主题或者组件。\n\n### 修改主题变量\n\n通过在 ConfigProvider 中传入 `theme`，可以配置主题。在升级 v4 后，将默认使用 v4 的主题，以下是将配置主题示例：\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      token: {\n        colorPrimary: '#00b96b',\n      },\n    }\"\n  >\n    <a-button />\n  </a-config-provider>\n</template>\n```\n\n这将会得到一个以 <ColorChunk color=\"#00b96b\"></ColorChunk> 为主色的主题，以 Button 组件为例可以看到相应的变化：\n\n![themed button](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*CbF_RJfKEiwAAAAAAAAAAAAAARQnAQ)\n\n### 使用预设算法\n\n通过修改算法可以快速生成风格迥异的主题，4.0 版本中默认提供三套预设算法，分别是默认算法 `theme.defaultAlgorithm`、暗色算法 `theme.darkAlgorithm` 和紧凑算法 `theme.compactAlgorithm`。你可以通过修改 ConfigProvider 中 `theme` 属性的 `algorithm` 属性来切换算法。\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      algorithm: theme.darkAlgorithm,\n    }\"\n  >\n    <a-button />\n  </a-config-provider>\n</template>\n\n<script setup>\n  import { theme } from 'ant-design-vue';\n</script>\n```\n\n### 修改组件变量 (Component Token)\n\n除了整体的 Design Token，各个组件也会开放自己的 Component Token 来实现针对组件的样式定制能力，不同的组件之间不会相互影响。同样地，也可以通过这种方式来覆盖组件的其他 Design Token。\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      components: {\n        Radio: {\n          colorPrimary: '#00b96b',\n        },\n      },\n    }\"\n  >\n    <a-radio>Radio</a-radio>\n    <a-checkbox>Checkbox</a-checkbox>\n  </a-config-provider>\n</template>\n```\n\n通过这种方式，我们可以仅将 Radio 组件的主色改为 <ColorChunk color=\"#00b96b\"></ColorChunk> 而不会影响其他组件。\n\n![component token](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*EMY0QrHFDjsAAAAAAAAAAAAAARQnAQ)\n\n> 注意：`ConfigProvider` 对 `message.xxx`、`Modal.xxx`、`notification.xxx` ant-design-vue 会通过 `render` 动态创建新的 vue 实体。其 context 与当前代码所在 context 并不相同，因而无法获取 context 信息。当你需要 context 信息（例如 ConfigProvider 配置的内容）时，可以通过 `Modal.useModal` 方法会返回 modal 实体以及 contextHolder 节点。将其插入到你需要获取 context 位置即可。\n\n## 动态主题的其他使用方式\n\n### 动态切换\n\n在 v4 中，动态切换主题对用户来说是非常简单的，你可以在任何时候通过 `ConfigProvider` 的 `theme` 属性来动态切换主题，而不需要任何额外配置。\n\n### 局部主题\n\n可以嵌套使用 `ConfigProvider` 来实现局部主题的更换。在子主题中未被改变的 Design Token 将会继承父主题。\n\n```html\n<template>\n  <a-config-provider\n    :theme=\"{\n      token: {\n        colorPrimary: '#1677ff',\n      },\n    }\"\n  >\n    <a-button />\n    <a-config-provider\n      :theme=\"{\n        token: {\n          colorPrimary: '#1890ff',\n        },\n      }\"\n    >\n      <a-button />\n    </a-config-provider>\n  </a-config-provider>\n</template>\n```\n\n### 使用 Design Token\n\n如果你希望使用当前主题下的 Design Token，我们提供了 `useToken` 这个 hook 来获取 Design Token。\n\n```html\n<template>\n  <a-button :style=\"{ backgroundColor: token.colorPrimary }\">Button</a-button>\n</template>\n\n<script setup>\n  import { theme } from 'ant-design-vue';\n  const { useToken } = theme;\n  const { token } = useToken();\n</script>\n```\n\n### 静态消费（如 less）\n\n当你需要非 Vue 生命周期消费 Token 变量时，可以通过静态方法将其导出：\n\n```jsx\nimport { theme } from 'ant-design-vue';\n\nconst { defaultAlgorithm, defaultSeed } = theme;\n\nconst mapToken = defaultAlgorithm(defaultSeed);\n```\n\n如果需要将其应用到静态样式编译框架，如 less 可以通过 less-loader 注入：\n\n```jsx\n{\n  loader: \"less-loader\",\n  options: {\n    lessOptions: {\n      modifyVars: mapToken,\n    },\n  },\n}\n```\n\n兼容包提供了变量转换方法用于转成 v3 的 less 变量，如需使用[点击此处](/docs/vue/migration-v4)查看详情。\n\n## 进阶使用\n\n在 Design Token 中我们提供了一套更加贴合设计的三层结构，将 Design Token 拆解为 Seed Token、Map Token 和 Alias Token 三部分。这三组 Token 并不是简单的分组，而是一个三层的派生关系，由 Seed Token 派生 Map Token，再由 Map Token 派生 Alias Token。在大部分情况下，使用 Seed Token 就可以满足定制主题的需要。但如果您需要更高程度的主题定制，您需要了解 antd 中 Design Token 的生命周期。\n\n### 演变过程\n\n![token](https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*uF3kTrY4InUAAAAAAAAAAAAAARQnAQ)\n\n### 基础变量（Seed Token）\n\nSeed Token 意味着所有设计意图的起源。比如我们可以通过改变 `colorPrimary` 来改变主题色，antd 内部的算法会自动的根据 Seed Token 计算出对应的一系列颜色并应用：\n\n```jsx\nconst theme = {\n  token: {\n    colorPrimary: '#1890ff',\n  },\n};\n```\n\n### 梯度变量（Map Token）\n\nMap Token 是基于 Seed 派生的梯度变量。定制 Map Token 推荐通过 `theme.algorithm` 来实现，这样可以保证 Map Token 之间的梯度关系。也可以通过 `theme.token` 覆盖，用于单独修改一些 map token 的值。\n\n```jsx\nconst theme = {\n  token: {\n    colorPrimaryBg: '#e6f7ff',\n  },\n};\n```\n\n### 别名变量（Alias Token）\n\nAlias Token 用于批量控制某些共性组件的样式，基本上是 Map Token 别名，或者特殊处理过的 Map Token。\n\n```jsx\nconst theme = {\n  token: {\n    colorLink: '#1890ff',\n  },\n};\n```\n\n### 基本算法（algorithm)\n\n基本算法用于将 Seed Token 展开为 Map Token，比如由一个基本色算出一个梯度色板，或者由一个基本的圆角算出各种大小的圆角。算法可以单独使用，也可以任意地组合使用，比如可以将暗色算法和紧凑算法组合使用，得到一个暗色和紧凑相结合的主题。\n\n```jsx\nimport { theme } from 'ant-design-vue';\n\nconst { darkAlgorithm, compactAlgorithm } = theme;\n\nconst theme = {\n  algorithm: [darkAlgorithm, compactAlgorithm],\n};\n```\n\n### 兼容旧版浏览器\n\n请参考文档 [样式兼容](/docs/vue/compatible-style-cn)。\n\n## API\n\n### Theme\n\n| 属性 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| token | 用于修改 Design Token | `AliasToken` | - |\n| inherit | 继承上层 ConfigProvider 中配置的主题。 | boolean | true |\n| algorithm | 用于修改 Seed Token 到 Map Token 的算法 | `(token: SeedToken) => MapToken` \\| `((token: SeedToken) => MapToken)[]` | `defaultAlgorithm` |\n| components | 用于修改各个组件的 Component Token 以及覆盖该组件消费的 Alias Token | OverrideToken | - |\n\n### OverrideToken\n\n| 属性 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| `Component` (可以是任意 antd 组件名，如 `Button`) | 用于修改 Component Token 以及覆盖该组件消费的 Alias Token | `ComponentToken & AliasToken` | - |\n\n### SeedToken\n\n<TokenTable type=\"seed\"></TokenTable>\n\n### MapToken\n\n> 继承所有 SeedToken 的属性\n\n<TokenTable type=\"map\"></TokenTable>\n\n### AliasToken\n\n> 继承所有 SeedToken 和 MapToken 的属性\n\n<TokenTable type=\"alias\"></TokenTable>\n\n## 调试主题\n\n我们提供了帮助用户调试主题的工具：[主题编辑器](/theme-editor-cn)\n\n你可以使用此工具自由地修改 Design Token，以达到您对主题的期望。\n"
  },
  {
    "path": "site/src/vueDocs/download.en-US.md",
    "content": "Please find below some of the design resources and tools about Ant Design Vue that we consider valuable. More of this is still being collected.\n\n> The following design resources are developed and maintained by the [Ant Design](https://ant.design).\n\n<div class=\"resource-cards\">\n  <a target=\"_blank\" href=\"https://github.com/ant-design/ant-design/releases/download/resource/Ant.Design.Components.3.12.0.sketch\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/pKfDZnzocrbAOSzDQOQq.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        RENEW Sketch Symbols\n      </span>\n      <span class=\"resource-card-description\">Sketch Symbols for Desktop</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://github.com/ant-design/ant-design/releases/download/resource/Ant.Design.Pro.sketch\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/ibCZMxKsTUzDbwTEdcTC.svg\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design Pro</span>\n      <span class=\"resource-card-description\">Common Templates and Pages</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://library.ant.design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"50\" src=\"https://gw.alipayobjects.com/zos/rmsportal/TXrKQUJBTuwSTGimGYYn.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design Library</span>\n      <span class=\"resource-card-description\">A powerful Axure library of Ant Design</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://kitchen.alipay.com\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/ATYZYtJhchhONKObIwXT.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        Kitchen\n        <span class=\"resource-card-hot-badge\">HOT</span>\n      </span>\n      <span class=\"resource-card-description\">A Sketch plugin with a collection of great tools</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://ux.ant.design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"64\" src=\"https://gw.alipayobjects.com/zos/rmsportal/yMULSUQQyhoEGrCXlovN.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant UX</span>\n      <span class=\"resource-card-description\">A series prototypes that help creating application structure and user flow</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://www.xiaopiu.com/topic/ant-design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"72\" src=\"https://img.xiaopiu.com/userImages/img753167822272f8.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design Prototype (xiaopiu)</span>\n      <span class=\"resource-card-description\">Online Ant Design library and interactive prototype</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://www.antforfigma.com\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://antforfigma.com/images/antforfigma-icon.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        UI Kit for Figma\n        <span class=\"resource-card-hot-badge\">NEW</span>\n      </span>\n      <span class=\"resource-card-description\">Large library of components and styles for Desktop</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://store.framer.com/package/bhaveshchow/ant-design-system\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://raw.githubusercontent.com/bhaveshc20/antdesign-framer/master/framerant-icon.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        UI Kit for Framer X\n        <span class=\"resource-card-hot-badge\">NEW</span>\n      </span>\n      <span class=\"resource-card-description\">Library of fully customizable components</span>\n    </div>\n  </a>\n</div>\n"
  },
  {
    "path": "site/src/vueDocs/download.zh-CN.md",
    "content": "这里提供 Ant Design Vue 相关设计资源和设计工具的下载，更多设计资源正在整理和完善中。\n\n> 以下设计资源由[Ant Design](https://ant.design)官方开发并维护\n\n<div class=\"resource-cards\">\n  <a target=\"_blank\" href=\"https://github.com/ant-design/ant-design/releases/download/resource/Ant.Design.Components.3.12.0.sketch\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/pKfDZnzocrbAOSzDQOQq.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        全新 Sketch 组件包\n      </span>\n      <span class=\"resource-card-description\">桌面组件 Sketch 模板包</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://github.com/ant-design/ant-design/releases/download/resource/Ant.Design.Pro.sketch\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/ibCZMxKsTUzDbwTEdcTC.svg\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design Pro</span>\n      <span class=\"resource-card-description\">典型页面 + 通用业务模板</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://library.ant.design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"50\" src=\"https://gw.alipayobjects.com/zos/rmsportal/TXrKQUJBTuwSTGimGYYn.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design Library @Axure</span>\n      <span class=\"resource-card-description\">一套强大的 Axure 部件库</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://kitchen.alipay.com\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://gw.alipayobjects.com/zos/rmsportal/ATYZYtJhchhONKObIwXT.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        Kitchen\n        <span class=\"resource-card-hot-badge\">HOT</span>\n      </span>\n      <span class=\"resource-card-description\">Sketch 工具集</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"http://ux.ant.design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"64\" src=\"https://gw.alipayobjects.com/zos/rmsportal/yMULSUQQyhoEGrCXlovN.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant UX</span>\n      <span class=\"resource-card-description\">一套页面逻辑原型库，帮你梳理页面逻辑</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://www.xiaopiu.com/topic/ant-design\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"72\" src=\"https://img.xiaopiu.com/userImages/img753167822272f8.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">Ant Design 原型（xiaopiu）</span>\n      <span class=\"resource-card-description\">可在线编辑的 Ant Design 组件库和交互原型</span>\n    </div>\n  </a>\n  <a target=\"_blank\" href=\"https://www.antforfigma.com\" class=\"resource-card\">\n    <div class=\"resource-card-icon\">\n      <img width=\"65\" src=\"https://antforfigma.com/images/antforfigma-icon.png\" />\n    </div>\n    <div class=\"resource-card-content\">\n      <span class=\"resource-card-title\">\n        Figma 组件包\n        <span class=\"resource-card-hot-badge\">NEW</span>\n      </span>\n      <span class=\"resource-card-description\">在 Figma 使用 Ant Design 进行设计</span>\n    </div>\n  </a>\n</div>\n"
  },
  {
    "path": "site/src/vueDocs/extract-ssr.en-US.md",
    "content": "# SSR Static style export\n\nWe are thinking about whether we can pre-bake the style of the component for front-end consumption like the v3 version, so we proposed [\\[RFC\\] Static Extract style](https://github.com/ant-design/ant-design/discussions/40985). Its idea is very simple that only need to render all the components once in advance to get the complete style from the cache, and then write it into the css file.\n\n```tsx\nconst cache = createCache();\n\n// HTML Content\nrenderToString(\n  <StyleProvider cache={cache}>\n    <Button />\n    <Switch />\n    <Input />\n    {/* Rest antd components */}\n  </StyleProvider>,\n);\n\n// Style Content\nconst styleText = extractStyle(cache);\n```\n\nOf course, this is a little cumbersome for developers. so we provide a method to fulfill this requirement:\n\n```tsx\nimport { extractStyle } from 'ant-design-vue/lib/_util/static-style-extract';\nimport fs from 'fs';\n\n// `extractStyle` containers all the antd component\n// excludes popup like component which is no need in ssr: Modal, message, notification, etc.\nconst css = extractStyle();\n\nfs.writeFile(...);\n```\n\nIf developers use a hybrid theme, they can also implement the hybrid requirements by themselves:\n\n```tsx\n// `node` is the components set we prepared\nconst css = extractStyle(node => (\n  <>\n    <ConfigProvider theme={theme1}>{node}</ConfigProvider>\n    <ConfigProvider theme={theme2}>{node}</ConfigProvider>\n    <ConfigProvider theme={theme3}>{node}</ConfigProvider>\n  </>\n));\n```\n"
  },
  {
    "path": "site/src/vueDocs/extract-ssr.zh-CN.md",
    "content": "# SSR 静态样式导出\n\n我们在思考是否可以如 v3 版本一样，预先烘焙组件的样式来使前端消费，所以提出了 [\\[RFC\\] Static Extract style](https://github.com/ant-design/ant-design/discussions/40985)。它的思路很简单，我们只需要提前将所有的组件进行一次渲染就可以从 cache 中获得完整的样式，然后将其写入到 css 文件中即可。\n\n```tsx\nconst cache = createCache();\n\n// HTML Content\nrenderToString(\n  <StyleProvider cache={cache}>\n    <Button />\n    <Switch />\n    <Input />\n    {/* Rest antd components */}\n  </StyleProvider>,\n);\n\n// Style Content\nconst styleText = extractStyle(cache);\n```\n\n当然，这对于开发者而言稍微有点麻烦。所以我们提供了一个方法来实现该需求：\n\n```tsx\nimport { extractStyle } from 'ant-design-vue/lib/_util/static-style-extract';\nimport fs from 'fs';\n\n// `extractStyle` containers all the antd component\n// excludes popup like component which is no need in ssr: Modal, message, notification, etc.\nconst css = extractStyle();\n\nfs.writeFile(...);\n```\n\n如果开发者使用了混合主题，也可以自行实现混合需求：\n\n```tsx\n// `node` is the components set we prepared\nconst css = extractStyle(node => (\n  <>\n    <ConfigProvider theme={theme1}>{node}</ConfigProvider>\n    <ConfigProvider theme={theme2}>{node}</ConfigProvider>\n    <ConfigProvider theme={theme3}>{node}</ConfigProvider>\n  </>\n));\n```\n"
  },
  {
    "path": "site/src/vueDocs/faq.en-US.md",
    "content": "# FAQ\n\nHere are the frequently asked questions about Ant Design Vue that you should look up before you ask in community or create new issue.\n\n### Are you going to provide Sass/Stylus(etc...) style file?\n\nNo, actually, you can convert Less to Sass/Stylus(etc...) with tools (which you can Google).\n\n### How to use DatePicker with dayjs\n\nWe also provide another implementation, which we provide with antd-dayjs-webpack-plugin, replacing dayjs with Day.js directly without changing a line of existing code. More info can be found at [antd-dayjs-webpack-plugin](https://github.com/ant-design/antd-dayjs-webpack-plugin).\n\n### Internationalization does not take effect?\n\nThe language pack provided by the component does not affect date formatting. You need to import the dayjs language pack and apply it. Refer to the `ConfigProvider` component.\n\n### `Select Dropdown DatePicker TimePicker Popover Popconfirm` disappear when I click another popup component inside it, How to resolve it?\n\nUse `<a-select :getPopupContainer=\"trigger => trigger.parentNode\">` to render component inside Popover. (Or other getXxxxContainer props)\n\n### `Select Dropdown DatePicker TimePicker Popover Popconfirm` scroll with the page?\n\nUse `<a-select :getPopupContainer=\"trigger => trigger.parentNode\">` to render component inside the scroll area. (Or other getXxxxContainer props).\n\n### How to modify the default theme of Ant Design Vue?\n\nSee [Customize Theme](/docs/vue/customize-theme/).\n\n### It doesn't work when I change `defaultValue`,`defaultOpenKeys`, `initialValue` dynamically.\n\nThe `defaultXxxx` (like `defaultValue`) of `Input`/`Select`(etc...) only works in first render. This feature is referenced from [React](https://facebook.github.io/react/docs/forms.html#controlled-components).\n\n### I set the `value` of `Input`/`Select`(etc...), and then, it cannot be changed by user's action.\n\nTry `defaultValue` or `change` or `v-model` to change `value`.\n\n### ant-design-vue override my global styles!\n\nYes, ant-design-vue is designed to develop a complete background application, we override some global styles for styling convenience, and it can't be removed now. More info trace https://github.com/ant-design/ant-design/issues/4331 .\n\nOr, follow the instructions in [How to avoid modifying global styles?](docs/react/customize-theme#How-to-avoid-modifying-global-styles-?)\n\n### `ant-design-vue` makes only poor user experience on mobile.\n\n`ant-design-vue` is not designed for mobile.\n\n### When I set `mode` to DatePicker/RangePicker, I cannot select year or month anymore?\n\nIn a real world development, you may need a YearPicker, MonthRangePicker or WeekRangePicker. You are trying to add `mode` to DatePicker/RangePicker expected to implement those pickers. However, the DatePicker/RangePicker cannot be selected and the panels won't close now.\n\nThat is because `<DatePicker mode=\"year\" />` do not equal to `YearPicker`, `<RangePicker mode=\"month\" />` do not equal to `MonthRangePicker` either. The `mode` property was added to support [showing time picker panel in DatePicker](https://github.com/ant-design/ant-design/issues/5190), which simply control the displayed panel and won't change the original date picking behavior of `DatePicker/RangePicker` (for instance you still need to click date cell to finish selection in a DatePicker, whatever the `mode` is).\n\n##### Solution\n\nThe following articles are the implementation articles of the react version, the ideas are the same. In [one article](https://juejin.im/post/5cf65c366fb9a07eca6968f9) or [another article](https://www.cnblogs.com/zyl-Tara/p/10197177.html) approach, using methods `mode` and `panelChange` to encapsulate a component such as `YearPicker`. We plan to add more date related components directly in ant-design-vue@2.0 to support these needs.\n"
  },
  {
    "path": "site/src/vueDocs/faq.zh-CN.md",
    "content": "# 常见问题\n\n以下整理了一些 Ant Design Vue 社区常见的问题和官方答复，在提问之前建议找找有没有类似的问题。\n\n### 你们会提供 Sass/Stylus 等格式的样式文件吗？\n\n不。事实上你可以使用工具（请自行 Google）将 Less 转换成 Sass/Stylus 等。\n\n### 国际化没有生效？\n\n组件提供的语言包并不对日期格式化起作用，你需要额外导入 dayjs 语言包，并应用，参考 `ConfigProvider` 组件。\n\n### 当我点击 `Select Dropdown DatePicker TimePicker Popover Popconfirm` 内的另一个 popup 组件时它会消失，如何解决？\n\n使用 `<a-select :getPopupContainer=\"trigger => trigger.parentNode\">` 来在 Popover 中渲染组件，或者使用其他的 getXxxxContainer 参数。\n\n### `Select Dropdown DatePicker TimePicker Popover Popconfirm` 会跟随滚动条上下移动？\n\n使用 `<a-select :getPopupContainer=\"trigger => trigger.parentNode\">` 来将组件渲染到滚动区域内，或者使用其他的 getXxxxContainer 参数。\n\n### 如何修改 Ant Design Vue 的默认主题？\n\n参考[主题定制](/docs/vue/customize-theme/)。\n\n### 当我动态改变 `defaultValue`,`defaultOpenKeys`, `initialValue`等`defaultXxxx`的时候它并没有生效。\n\n`Input`/`Select` 等的 `defaultXxxx`（例如 `defaultValue`）只有在组件第一次渲染的时候有效，此特性参考自[React](https://reactjs.org/docs/forms.html#controlled-components)。切记：第一次、第一次、第一次....\n\n### 当我设置了 `Input`/`Select` 等的 `value` 时它就无法修改了。\n\n尝试使用 `defaultValue` 或 `change` 或 `v-model` 来改变 `value`。\n\n### ant-design-vue 覆盖了我的全局样式！\n\n是的，ant-design-vue 在设计的时候就是用来开发一个完整的应用的，为了方便，我们覆盖了一些全局样式，现在还不能移除，想要了解更多请追踪这个 issue：https://github.com/ant-design/ant-design/issues/4331 ，或者参考这个教程 [How to avoid modifying global styles?](docs/react/customize-theme#How-to-avoid-modifying-global-styles-?)\n\n### `ant-design-vue` 在移动端体验不佳。\n\n`ant-design-vue` 并非针对移动端设计。\n\n### 当我指定了 DatePicker/RangePicker 的 `mode` 属性后，点击后无法选择年份/月份？\n\n在业务开发中，你可能有年份选择，月份范围选择，周范围选择等需求，此时你给现有组件增加了 `mode` 属性，却发现无法进行点击选择行为，面板也不会关闭。\n\n这是因为 `<DatePicker mode=\"year\" />` 不等于 `YearPicker`，`<RangePicker mode=\"month\" />` 不等于 `MonthRangePicker`。 `mode` 属性是在 antd 3.0 时，为了控制面板展现状态而添加的属性，以支持[展示时间面板](https://github.com/ant-design/ant-design/issues/5190)等需求而添加的。`mode` 只会简单的改变当前显示的面板，不会修改默认的交互行为（比如 DatePicker 依然是点击日才会完成选择并关闭面板）。\n\n##### 解决办法\n\n以下文章均是 react 版本的实现文章，思路一致。参照 [这篇文章](https://juejin.im/post/5cf65c366fb9a07eca6968f9) 或者 [这篇文章](https://www.cnblogs.com/zyl-Tara/p/10197177.html) 里的做法，利用 `mode` 和 `panelChange` 等方法去封装一个 `YearPicker` 等组件。我们计划在 ant-design-vue@2.0 中直接添加更多相关日期组件来支持这些需求。\n"
  },
  {
    "path": "site/src/vueDocs/getting-started.en-US.md",
    "content": "# Getting Started\n\nAnt Design Vue is dedicated to providing a **good development experience** for programmers. Make sure that you had installed [Node.js](https://nodejs.org/)(> v8.9) correctly.\n\n> Before delving into Ant Design Vue, a good knowledge base of [Vue](https://www.vuejs.org/) and [JavaScript ES2015](http://babeljs.io/docs/learn-es2015/) is needed.\n\n## Playground\n\nThe following CodeSandbox demo is the simplest use case, and it's also a good habit to fork this demo to provide a re-producible demo while reporting a bug.\n\n- [![Vue Antd Template](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/agitated-franklin-1w72v)\n\n## Import ant-design-vue\n\n### 1. Create a New Project\n\nIf you need to create a new project, you can use [Vite](https://github.com/vitejs/vite), [Rsbuild](https://github.com/web-infra-dev/rsbuild), or [Vue CLI](https://github.com/vuejs/vue-cli).\n\nPlease initialize the project using the command line:\n\n- Vite:\n\n```bash\n$ npm create vite@latest\n```\n\n- Rsbuild:\n\n```bash\n$ npm create rsbuild@latest\n```\n\n- Vue CLI:\n\n```bash\n$ npm install -g @vue/cli\n# OR\n$ yarn global add @vue/cli\n\n$ vue create antd-demo\n```\n\n> Vue CLI is no longer maintained, so it is not recommended to use.\n\n### 2. Use antd's Components\n\n#### Install\n\n```bash\n$ npm i --save ant-design-vue@4.x\n```\n\n#### Component Registration\n\nIf you use Vue's default template syntax, you need to register components before you can use them. There are three ways to register components:\n\n**Global Registration All Components**\n\n```jsx\nimport { createApp } from 'vue';\nimport Antd from 'ant-design-vue';\nimport App from './App';\nimport 'ant-design-vue/dist/reset.css';\n\nconst app = createApp(App);\n\napp.use(Antd).mount('#app');\n```\n\nThe above imports Antd entirely. Note that CSS file needs to be imported separately.\n\n**Global Registration Some Components**\n\n```jsx\nimport { createApp } from 'vue';\nimport { Button, message } from 'ant-design-vue';\nimport App from './App';\n\nconst app = createApp(App);\n\n/* Automatically register components under Button, such as Button.Group */\napp.use(Button).mount('#app');\n\napp.config.globalProperties.$message = message;\n```\n\n**Local Registration**\n\nIn this way, component sub-components, such as Button and ButtonGroup, need to be registered separately, and they are only valid in the current component after registration. Therefore, we recommend using the above two methods.\n\n```html\n<template>\n  <a-button>Add</a-button>\n</template>\n<script>\n  import { Button } from 'ant-design-vue';\n  const ButtonGroup = Button.Group;\n\n  export default {\n    components: {\n      AButton: Button,\n      AButtonGroup: ButtonGroup,\n    },\n  };\n</script>\n```\n\n### 3. Component list\n\n[Component list](https://github.com/vueComponent/ant-design-vue/blob/main/components/components.ts)\n\n## Import on Demand\n\n`ant-design-vue` supports tree shaking of ES modules, so using `import { Button } from 'ant-design-vue';` would drop js code you didn't use.\n\n## Customization\n\n- [Customize Theme](/docs/vue/customize-theme)\n"
  },
  {
    "path": "site/src/vueDocs/getting-started.zh-CN.md",
    "content": "# 快速上手\n\nAnt Design Vue 致力于提供给程序员**愉悦**的开发体验。\n\n> 在开始之前，推荐先学习 [Vue](https://www.vuejs.org/) 和 [ES2015](http://babeljs.io/docs/learn-es2015/)，并正确安装和配置了 [Node.js](https://nodejs.org/) v8.9 或以上。官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识，并且已经完全掌握了 Vue 的正确开发方式。如果你刚开始学习前端或者 Vue，将 UI 框架作为你的第一步可能不是最好的主意。\n\n## 在线演示\n\n最简单的使用方式参照以下 CodeSandbox 演示，也推荐 Fork 本例来进行 `Bug Report`。\n\n- [![Vue Antd Template](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/agitated-franklin-1w72v)\n\n## 引入 ant-design-vue\n\n### 1. 新建项目\n\n如果你需要新建一个项目，可以使用 [Vite](https://github.com/vitejs/vite)、[Rsbuild](https://github.com/web-infra-dev/rsbuild) 或 [Vue CLI](https://github.com/vuejs/vue-cli)。\n\n请使用命令行来初始化项目：\n\n- Vite:\n\n```bash\n$ npm create vite@latest\n```\n\n- Rsbuild:\n\n```bash\n$ npm create rsbuild@latest\n```\n\n- Vue CLI:\n\n```bash\n$ npm install -g @vue/cli\n# OR\n$ yarn global add @vue/cli\n\n$ vue create antd-demo\n```\n\n> Vue CLI 已经停止迭代，因此不推荐使用。\n\n若安装缓慢报错，可尝试用 `cnpm` 或别的镜像源自行安装：`rm -rf node_modules && cnpm install`。\n\n### 2. 使用组件\n\n#### 安装\n\n```bash\n$ npm i --save ant-design-vue@4.x\n```\n\n#### 注册\n\n如果使用 Vue 默认的模板语法，需要注册组件后方可使用，有如下三种方式注册组件：\n\n**全局完整注册**\n\n```jsx\nimport { createApp } from 'vue';\nimport Antd from 'ant-design-vue';\nimport App from './App';\nimport 'ant-design-vue/dist/reset.css';\n\nconst app = createApp(App);\n\napp.use(Antd).mount('#app');\n```\n\n以上代码便完成了 Antd 的全局注册。需要注意的是，样式文件需要单独引入。\n\n**全局部分注册**\n\n```jsx\nimport { createApp } from 'vue';\nimport { Button, message } from 'ant-design-vue';\nimport App from './App';\n\nconst app = createApp(App);\n\n/* 会自动注册 Button 下的子组件, 例如 Button.Group */\napp.use(Button).mount('#app');\n\napp.config.globalProperties.$message = message;\n```\n\n**局部注册组件**\n\n此种方式需要分别注册组件子组件，如 Button、ButtonGroup，并且注册后仅在当前组件中有效。所以我们推荐使用上述两种方式。\n\n```html\n<template>\n  <a-button>Add</a-button>\n</template>\n<script>\n  import { Button } from 'ant-design-vue';\n  const ButtonGroup = Button.Group;\n\n  export default {\n    components: {\n      AButton: Button,\n      AButtonGroup: ButtonGroup,\n    },\n  };\n</script>\n```\n\n## 按需加载\n\n`ant-design-vue` 默认支持基于 ES modules 的 tree shaking，直接引入 `import { Button } from 'ant-design-vue';` 就会有按需加载的效果。\n\n## 配置主题和字体\n\n- [改变主题](/docs/vue/customize-theme-cn)\n"
  },
  {
    "path": "site/src/vueDocs/i18n.en-US.md",
    "content": "# Internationalization\n\nThe default language is English as of yet. If you want to use other languages, you can follow the instructions below.\n\n## ConfigProvider\n\nant-design-vue provides a Vue Component [ConfigProvider](/components/config-provider) for configuring ant-design-vue locale text globally.\n\nConfigProvider does not include the internationalization of time components. You need to additionally import the internationalization files of the time library (dayjs, momentjs, date-fns, etc.). Below we have taken dayjs as an example.\n\n```html\n<template>\n  <a-config-provider :locale=\"locale\">\n    <App />\n  </a-config-provider>\n</template>\n\n<script>\n  import zhCN from 'ant-design-vue/es/locale/zh_CN';\n  import dayjs from 'dayjs';\n  import 'dayjs/locale/zh-cn';\n  dayjs.locale('zh-cn');\n\n  export default {\n    data() {\n      return {\n        locale: zhCN,\n      };\n    },\n  };\n</script>\n```\n\nNote: `fr_FR` is the filename, follow below.\n\nSupported languages:\n\n| Language                 | Filename |\n| ------------------------ | -------- |\n| Arabic                   | ar_EG    |\n| Azerbaijani              | az_AZ    |\n| Bulgarian                | bg_BG    |\n| Bangla (Bangladesh)      | bn_BD    |\n| Belarusian               | by_BY    |\n| Catalan                  | ca_ES    |\n| Czech                    | cs_CZ    |\n| Danish                   | da_DK    |\n| German                   | de_DE    |\n| Greek                    | el_GR    |\n| English (United Kingdom) | en_GB    |\n| English                  | en_US    |\n| Spanish                  | es_ES    |\n| Estonian                 | et_EE    |\n| Persian                  | fa_IR    |\n| Finnish                  | fi_FI    |\n| French (Belgium)         | fr_BE    |\n| French (Canada)          | fr_CA    |\n| French (France)          | fr_FR    |\n| Irish (Ireland)          | ga_IE    |\n| Galician (Spain)         | gl_ES    |\n| Hebrew                   | he_IL    |\n| Hindi                    | hi_IN    |\n| Croatian                 | hr_HR    |\n| Hungarian                | hu_HU    |\n| Armenian                 | hy_AM    |\n| Indonesian               | id_ID    |\n| Italian                  | it_IT    |\n| Icelandic                | is_IS    |\n| Japanese                 | ja_JP    |\n| Georgian                 | ka_GE    |\n| Kurdish (Kurmanji)       | kmr_IQ   |\n| Kannada                  | kn_IN    |\n| Kazakh                   | kk_KZ    |\n| Khmer                    | km_KH    |\n| Korean                   | ko_KR    |\n| Lithuanian               | lt_LT    |\n| Latvian                  | lv_LV    |\n| Macedonian               | mk_MK    |\n| Malayalam (India)        | ml_IN    |\n| Mongolian                | mn_MN    |\n| Malay (Malaysia)         | ms_MY    |\n| Norwegian                | nb_NO    |\n| Nepal                    | ne_NP    |\n| Dutch (Belgium)          | nl_BE    |\n| Dutch                    | nl_NL    |\n| Polish                   | pl_PL    |\n| Portuguese (Brazil)      | pt_BR    |\n| Portuguese               | pt_PT    |\n| Romanian                 | ro_RO    |\n| Russian                  | ru_RU    |\n| Slovak                   | sk_SK    |\n| Serbian                  | sr_RS    |\n| Slovenian                | sl_SI    |\n| Swedish                  | sv_SE    |\n| Tamil                    | ta_IN    |\n| Thai                     | th_TH    |\n| Turkish                  | tr_TR    |\n| Urdu (Pakistan)          | ur_PK    |\n| Ukrainian                | uk_UA    |\n| Vietnamese               | vi_VN    |\n| Chinese (Simplified)     | zh_CN    |\n| Chinese (Traditional)    | zh_HK    |\n| Chinese (Traditional)    | zh_TW    |\n\nSee usage at [ConfigProvider](/components/config-provider).\n"
  },
  {
    "path": "site/src/vueDocs/i18n.zh-CN.md",
    "content": "# 国际化\n\n`ant-design-vue` 目前的默认文案是英文，如果需要使用其他语言，可以参考下面的方案。\n\n##\n\n## ConfigProvider\n\nant-design-vue 提供了一个 Vue 组件 [ConfigProvider](/components/config-provider-cn) 用于全局配置国际化文案。 ConfigProvider 不包含时间类组件的国际化，你需要额外引入时间库(dayjs、momentjs、date-fns 等)的国际化文件，以下我们以 dayjs 为例。\n\n```html\n<template>\n  <a-config-provider :locale=\"locale\">\n    <App />\n  </a-config-provider>\n</template>\n\n<script>\n  import zhCN from 'ant-design-vue/es/locale/zh_CN';\n  import dayjs from 'dayjs';\n  import 'dayjs/locale/zh-cn';\n  dayjs.locale('zh-cn');\n\n  export default {\n    data() {\n      return {\n        locale: zhCN,\n      };\n    },\n  };\n</script>\n```\n\n注意：`zh_CN` 是文件名，以下表格也遵循同样的规则。\n\n目前支持以下语言：\n\n| 语言                 | 文件名 |\n| -------------------- | ------ |\n| 阿拉伯语             | ar_EG  |\n| 阿塞拜疆语           | az_AZ  |\n| 保加利亚语           | bg_BG  |\n| 孟加拉语（孟加拉国） | bn_BD  |\n| 白俄罗斯语           | by_BY  |\n| 加泰罗尼亚语         | ca_ES  |\n| 捷克语               | cs_CZ  |\n| 丹麦语               | da_DK  |\n| 德语                 | de_DE  |\n| 希腊语               | el_GR  |\n| 英语                 | en_GB  |\n| 英语（美式）         | en_US  |\n| 西班牙语             | es_ES  |\n| 爱沙尼亚语           | et_EE  |\n| 波斯语               | fa_IR  |\n| 芬兰语               | fi_FI  |\n| 法语（比利时）       | fr_BE  |\n| 法语（加拿大）       | fr_CA  |\n| 法语（法国）         | fr_FR  |\n| 爱尔兰语             | ga_IE  |\n| 加利西亚语（西班牙） | gl_ES  |\n| 希伯来语             | he_IL  |\n| 印地语               | hi_IN  |\n| 克罗地亚语           | hr_HR  |\n| 匈牙利语             | hu_HU  |\n| 亚美尼亚             | hy_AM  |\n| 印度尼西亚语         | id_ID  |\n| 意大利语             | it_IT  |\n| 冰岛语               | is_IS  |\n| 日语                 | ja_JP  |\n| 格鲁吉亚语           | ka_GE  |\n| 高棉语               | km_KH  |\n| 北库尔德语           | kmr_IQ |\n| 卡纳达语             | kn_IN  |\n| 哈萨克语             | kk_KZ  |\n| 韩语/朝鲜语          | ko_KR  |\n| 立陶宛语             | lt_LT  |\n| 拉脱维亚语           | lv_LV  |\n| 马其顿语             | mk_MK  |\n| 马拉雅拉姆语         | ml_IN  |\n| 蒙古语               | mn_MN  |\n| 马来语 (马来西亚)    | ms_MY  |\n| 挪威语               | nb_NO  |\n| 尼泊尔语             | ne_NP  |\n| 荷兰语（比利时）     | nl_BE  |\n| 荷兰语               | nl_NL  |\n| 波兰语               | pl_PL  |\n| 葡萄牙语(巴西)       | pt_BR  |\n| 葡萄牙语             | pt_PT  |\n| 罗马尼亚语           | ro_RO  |\n| 俄罗斯语             | ru_RU  |\n| 斯洛伐克语           | sk_SK  |\n| 塞尔维亚语           | sr_RS  |\n| 斯洛文尼亚语         | sl_SI  |\n| 瑞典语               | sv_SE  |\n| 泰米尔语             | ta_IN  |\n| 泰语                 | th_TH  |\n| 土耳其语             | tr_TR  |\n| 乌尔都语 (巴基斯坦)  | ur_PK  |\n| 乌克兰语             | uk_UA  |\n| 越南语               | vi_VN  |\n| 简体中文             | zh_CN  |\n| 繁体中文（中国香港） | zh_HK  |\n| 繁体中文（中国台湾） | zh_TW  |\n\n具体的使用方法请参考 [ConfigProvider 文档](/components/config-provider-cn)。\n"
  },
  {
    "path": "site/src/vueDocs/introduce.en-US.md",
    "content": "# Ant Design of Vue\n\nFollowing the Ant Design specification, we developed a Vue UI library `antd` that contains a set of high quality components and demos for building rich, interactive user interfaces.\n\n<div class=\"pic-plus\">\n  <img width=\"150\" src=\"https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg\" />\n  <span>+</span>\n  <img width=\"160\" src=\"https://www.antdv.com/vue.png\" />\n</div>\n\n<style>\n.pic-plus > * {\n  display: inline-block !important;\n  vertical-align: middle;\n}\n.pic-plus span {\n  font-size: 30px;\n  color: #aaa;\n  margin: 0 20px;\n}\n</style>\n\n## Features\n\n- An enterprise-class UI design language for web applications.\n- A set of high-quality Vue components out of the box.\n- Shared [Ant Design of React](https://ant.design/docs/spec/introduce) design resources.\n\n## Environment Support\n\n- Modern browsers. You can use [1.x](https://1x.antdv.com/) for IE9+.\n- Server-side Rendering\n- [Electron](https://electronjs.org/)\n\n| [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/> Edge | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Firefox | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Chrome | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Safari | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Opera | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/electron/electron_48x48.png\" alt=\"Electron\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Electron |\n| --- | --- | --- | --- | --- | --- |\n| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## Version\n\n- Stable: [![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue)\n\nYou can subscribe to this feed for new version notifications: <https://github.com/vueComponent/ant-design-vue/releases.atom>\n\n## Installation\n\n### Using npm or yarn\n\n**We recommend using npm or yarn to install**, it not only makes development easier, but also allow you to take advantage of the rich ecosystem of Javascript packages and tooling.\n\n```bash\n$ npm install ant-design-vue@4.x --save\n```\n\n```bash\n$ yarn add ant-design-vue@4.x\n```\n\nIf you are in a bad network environment, you can try other registries and tools like [cnpm](https://github.com/cnpm/cnpm).\n\n### Import in Browser\n\nAdd `script` and `link` tags in your browser and use the global variable `antd`.\n\nWe provide `antd.js` `antd.min.js` and `reset.css` under `ant-design-vue/dist` in antd's npm package. You can also download these files directly from [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) or [unpkg](https://unpkg.com/ant-design-vue/dist/).\n\n> **We strongly discourage loading the entire files** this will add bloat to your application and make it more difficult to receive bugfixes and updates. Antd is intended to be used in conjunction with a build tool, such as [webpack](https://webpack.github.io/), which will make it easy to import only the parts of antd that you are using.\n\n> Note: you should import `vue`, [dayjs](https://day.js.org/) and dayjs plugins before using `antd.js`.\n\nLike:\n\n```html\n<script src=\"https://unpkg.com/dayjs/dayjs.min.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/customParseFormat.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekday.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/localeData.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekOfYear.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekYear.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/advancedFormat.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/quarterOfYear.js\"></script>\n```\n\n## Usage\n\n```jsx\nimport { DatePicker } from 'ant-design-vue';\napp.use(DatePicker);\n```\n\nAnd import stylesheets manually:\n\n```jsx\nimport 'ant-design-vue/dist/reset.css';\n```\n\n### Use modularized ant-design-vue\n\n`ant-design-vue` supports ES modules tree shaking by default.\n\n### Automatically import components on demand\n\n#### [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components)\n\nIf you're using 'Vite', we recommend using 'unplugin-vue-components'\n\n```bash\n$ npm install unplugin-vue-components -D\n```\n\n```js\n// vite.config.js\nimport { defineConfig } from 'vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';\nexport default defineConfig({\n  plugins: [\n    // ...\n    Components({\n      resolvers: [\n        AntDesignVueResolver({\n          importStyle: false, // css in js\n        }),\n      ],\n    }),\n  ],\n});\n```\n\nYou can then import 'ant-design-vue' components directly in your code, and the plugin will automatically convert your code to 'import {Button} from 'ant-design-vue''.\n\n```jsx\nimport { Button } from 'ant-design-vue';\n```\n\n## Links\n\n- [Home Page](https://www.antdv.com/)\n- [Ant Design Of React](https://ant.design/)\n- [Components](https://www.antdv.com/components/overview)\n- [Change Log](/docs/vue/changelog)\n- [CodeSandbox template](https://codesandbox.io/s/agitated-franklin-1w72v) for bug reports\n- [Customize Theme](/docs/vue/customize-theme)\n- [FAQ](/docs/vue/faq)\n- [Support US](/docs/vue/sponsor)\n- [Awesome Ant Design](https://github.com/vueComponent/ant-design-vue-awesome)\n\n## Contributing\n\nIf you'd like to help us improve ant-design-vue, just create a [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls). Feel free to report bugs and issues [here](https://vuecomponent.github.io/issue-helper/).\n\n> If you're new to posting issues, we ask that you read [_How To Ask Questions The Smart Way_](http://www.catb.org/~esr/faqs/smart-questions.html) and [How to Ask a Question in Open Source Community](https://github.com/seajs/seajs/issues/545) and [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) prior to posting. Well written bug reports help us help you!\n\n## About ant-design-vue\n\nAs we all know, Ant Design, as a design language, has gone through many years of iteration and accumulation. Its UI design ideas have become a set of de facto standards and are sought after and loved by many front-end developers and enterprises, and it is also a magic weapon in the hands of React developers. I hope that ant-design-vue will allow Vue developers to enjoy the excellent design of Ant Design.\n\nThe ant-design-vue is the Vue implementation of Ant Design. The style of the component is kept in sync with Ant Design. The html structure and css style of the component are also consistent. The style 0 modification is really achieved, and the component API is kept as consistent as possible.\n\nAnt Design Vue is committed to providing programmers with a **pleasant** development experience.\n\n## THANK YOU\n\n[Ant Design Team](https://github.com/ant-design/ant-design/blob/master/AUTHORS.txt)\n"
  },
  {
    "path": "site/src/vueDocs/introduce.zh-CN.md",
    "content": "# Ant Design of Vue\n\n这里是 Ant Design 的 Vue 实现，开发和服务于企业级后台产品。\n\n<div class=\"pic-plus\">\n  <img width=\"150\" src=\"https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg\" />\n  <span>+</span>\n  <img width=\"160\" src=\"https://www.antdv.com/vue.png\" />\n</div>\n\n<style>\n.pic-plus > * {\n  display: inline-block !important;\n  vertical-align: middle;\n}\n.pic-plus span {\n  font-size: 30px;\n  color: #aaa;\n  margin: 0 20px;\n}\n</style>\n\n## 特性\n\n- 提炼自企业级中后台产品的交互语言和视觉风格。\n- 开箱即用的高质量 Vue 组件。\n- 共享[Ant Design of React](http://ant-design.gitee.io/docs/spec/introduce-cn)设计工具体系。\n\n## 支持环境\n\n- 现代浏览器, 如果需要支持 IE9，你可以选择使用 [1.x 版本](https://1x.antdv.com/)。\n- 支持服务端渲染。\n- [Electron](https://electronjs.org/)\n\n| [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>IE / Edge | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Firefox | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Chrome | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Safari | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Opera | [<img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/electron/electron_48x48.png\" alt=\"Electron\" width=\"24px\" height=\"24px\" />](http://godban.github.io/browsers-support-badges/)<br/>Electron |\n| --- | --- | --- | --- | --- | --- |\n| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## 版本\n\n- 稳定版：[![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue)\n\n你可以订阅：<https://github.com/vueComponent/ant-design-vue/releases.atom> 来获得稳定版发布的通知。\n\n## 安装\n\n### 使用 npm 或 yarn 安装\n\n**我们推荐使用 npm 或 yarn 的方式进行开发**，不仅可在开发环境轻松调试，也可放心地在生产环境打包部署使用，享受整个生态圈和工具链带来的诸多好处。\n\n```bash\n$ npm install ant-design-vue@4.x --save\n```\n\n```bash\n$ yarn add ant-design-vue@4.x\n```\n\n如果你的网络环境不佳，推荐使用 [cnpm](https://github.com/cnpm/cnpm)。\n\n### 浏览器引入\n\n在浏览器中使用 `script` 和 `link` 标签直接引入文件，并使用全局变量 `antd`。\n\n我们在 npm 发布包内的 `ant-design-vue/dist` 目录下提供了 `antd.js`、`antd.min.js` 和 `reset.css`。你也可以通过 [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) 或 [UNPKG](https://unpkg.com/ant-design-vue/dist/) 进行下载。\n\n> **强烈不推荐使用已构建文件**，这样无法按需加载，而且难以获得底层依赖模块的 bug 快速修复支持。\n\n> 注意：引入 `antd.js` 前你需要自行引入 `vue`、[`dayjs`](https://day.js.org/) 及其相关插件。\n\n如：\n\n```html\n<script src=\"https://unpkg.com/dayjs/dayjs.min.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/customParseFormat.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekday.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/localeData.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekOfYear.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/weekYear.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/advancedFormat.js\"></script>\n<script src=\"https://unpkg.com/dayjs/plugin/quarterOfYear.js\"></script>\n```\n\n## 示例\n\n```jsx\nimport { DatePicker } from 'ant-design-vue';\napp.use(DatePicker);\n```\n\n引入样式：\n\n```jsx\nimport 'ant-design-vue/dist/reset.css';\n```\n\n### 按需加载\n\n`ant-design-vue` 默认支持基于 ES modules 的 tree shaking。\n\n### 自动按需引入组件\n\n#### [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components)\n\n如果你使用的是 `Vite` ，我们推荐使用 `unplugin-vue-components`\n\n```bash\n$ npm install unplugin-vue-components -D\n```\n\n```js\n// vite.config.js\nimport { defineConfig } from 'vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';\nexport default defineConfig({\n  plugins: [\n    // ...\n    Components({\n      resolvers: [\n        AntDesignVueResolver({\n          importStyle: false, // css in js\n        }),\n      ],\n    }),\n  ],\n});\n```\n\n然后你可以在代码中直接引入 `ant-design-vue` 的组件，插件会自动将代码转化为 `import { Button } from 'ant-design-vue'` 的形式。\n\n```jsx\nimport { Button } from 'ant-design-vue';\n```\n\n## 链接\n\n- [首页](https://www.antdv.com/)\n- [Ant Design Of React](https://ant.design/)\n- [组件库](https://www.antdv.com/components/overview-cn)\n- [更新日志](/docs/vue/changelog-cn)\n- [CodeSandbox 模板](https://codesandbox.io/s/agitated-franklin-1w72v) for bug reports\n- [定制主题](/docs/vue/customize-theme-cn)\n- [常见问题](/docs/vue/faq-cn)\n- [支持我们](/docs/vue/sponsor-cn)\n- [Awesome Ant Design](https://github.com/vueComponent/ant-design-vue-awesome)\n\n## 如何贡献\n\n如果你希望参与贡献，欢迎 [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls)，或给我们 [报告 Bug](https://vuecomponent.github.io/issue-helper/)([国内镜像](http://ant-design-vue.gitee.io/issue-helper/))。\n\n> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393)，更好的问题更容易获得帮助。\n\n## 关于 ant-design-vue\n\n众所周知，Ant Design 作为一门设计语言面世，经历过多年的迭代和积累，它对 UI 的设计思想已经成为一套事实标准，受到众多前端开发者及企业的追捧和喜爱，也是 React 开发者手中的神兵利器。希望 ant-design-vue 能够让 Vue 开发者也享受到 Ant Design 的优秀设计。\n\nant-design-vue 是 Ant Design 的 Vue 实现，组件的风格与 Ant Design 保持同步，组件的 html 结构和 css 样式也保持一致，真正做到了样式 0 修改，组件 API 也尽量保持了一致。\n\nAnt Design Vue 致力于提供给程序员**愉悦**的开发体验。\n\n## 特别感谢\n\n[Ant Design Team](https://github.com/ant-design/ant-design/blob/master/AUTHORS.txt)\n"
  },
  {
    "path": "site/src/vueDocs/migration-v2.en-US.md",
    "content": "This document will help you upgrade from ant-design-vue `1.x` version to ant-design-vue `2.x` version.\n\n## Upgrade preparation\n\n1. Please upgrade to the latest version of 1.x first, and remove/modify related APIs according to the console warning message.\n2. Upgrade the project to Vue 3.0 and above.\n\n## 2.0 What are the incompatible changes\n\n### Design specification adjustment\n\n- Adjust the row height from `1.5`(`21px`) to `1.5715`(`22px`).\n- Basic round corner adjustment, changed from `4px` to `2px`.\n- The color brightness of the dividing line is reduced, from `#E8E8E8` to `#F0F0F0`.\n- The default background color of Table is changed from transparent to white.\n\n### Compatibility adjustment\n\n- The minimum supported version of Vue is Vue 3.0.\n\n#### Adjusted API\n\n- Removed LocaleProvider, please use `ConfigProvider` instead.\n- Removed the afterClose property of Tag.\n- Merged FormModel and Form, see the Form refactoring part below for details.\n- `tabIndex`, `maxLength`, `readOnly`, `autoComplete`, `autoFocus` are changed to all lowercase.\n- In order to use the slot more friendly in template syntax, all related to xxxRender, renderXxxx are changed to single parameter, involving `itemRender`, `renderItem`, `customRender`, `dropdownRender`, `dateCellRender`, `dateFullCellRender`, `monthCellRender`, `monthFullCellRender`, `renderTabBar`.\n- All the places where scopedSlots are configured are changed to slots.\n- `{ on, props, attrs, ... }` configuration is flattened, such as `{ props: {type:'xxx'}, on: {click: this.handleClick}}` changed to `{ type: 'xxx', onClick: this.handleClick }`, related fields: `okButtonProps`, `cancelButtonProps`.\n- Change xxx.sync to v-model:xxx\n- v-model is changed to v-model:xxx, which specifically involves components:\n\n  - The components changed from v-model to v-model:checked are: CheckableTag, Checkbox, Switch\n  - The components changed from v-model to v-model:value are: Radio, Mentions, CheckboxGroup, Rate, DatePicker、Select\n  - The components changed from v-model to v-model:visible are: Tag, Popconfirm, Popove, Tooltip, Moda, Dropdown\n  - The components changed from v-model to v-model:activeKey are: Collaps, Tabs\n  - The components changed from v-model to v-model:current are: Steps\n  - The components changed from v-model to v-model:selectedKeys are: Menu\n\n#### Icon Upgrade\n\nIn `ant-design-vue@1.2.0`, we introduced the svg icon ([Why use the svg icon?](https://github.com/ant-design/ant-design/issues/10353)). The icon API that uses string naming cannot be loaded on demand, so the svg icon file is fully introduced, which greatly increases the size of the packaged product. In 2.0, we adjusted the icon usage API to support tree shaking, reducing the default package size by approximately 150 KB (Gzipped).\n\nThe old way of using Icon will be obsolete:\n\n```html\n<a-icon type=\"smile\" />\n<a-button icon=\"smile\" />\n```\n\nIn 2.0, an on-demand introduction method will be adopted:\n\n```html\n<template>\n  <smile-outlined />\n  <a-button>\n    <template #icon><smile-outlined /></template>\n  </a-button>\n</template>\n<script>\n  import SmileOutlined from '@ant-design/icons-vue/SmileOutlined';\n  export default {\n    components: {\n      SmileOutlined,\n    },\n  };\n</script>\n```\n\n#### Component refactoring\n\nIn 1.x, we provide two form components, Form and FormModel. The original Form component uses v-decorator for data binding. In Vue2, we use context to force update components. However, in Vue3, due to the introduction of patchFlag, etc. Optimization method, forced refresh will destroy the performance advantage brought by patchFlag. So in version 2.0, we merged Form and FormModel, retained the use of FormModel, enriched related functions, and renamed it to Form.\n\nInvolving changes:\n\n- Added `scrollToFirstError`, `name`, `validateTrigger` properties for Form, added `finish`, `finishFailed` events, and added `scrollToField` method.\n- Form.Item adds `validateFirst`, `validateTrigger`, and discards the `prop` attribute, and replaces it with `name`.\n- The nested field path uses an array. In the past version, we used. To represent the nested path (such as user.name to represent {user: {name:''} }). However, in some back-end systems, the variable name will also carry .. This causes users to need additional codes for conversion. Therefore, in the new version, nested paths are represented by arrays to avoid wrong handling behaviors (such as ['user','name']).\n- validateFields no longer supports callback. validateFields will return a Promise object, so you can perform corresponding error handling through async/await or then/catch. It is no longer necessary to determine whether errors is empty:\n\n```js\n// v1\nvalidateFields((err, value) => {\n  if (!err) {\n    // Do something with value\n  }\n});\n```\n\nChange to\n\n```js\n// v2\nvalidateFields().then(values ​​=> {\n  // Do something with value\n});\n```\n\n## Encounter problems\n\nV2 has made a lot of detailed improvements and refactorings. We have collected all known incompatible changes and related effects as much as possible, but there may still be some scenarios that we have not considered. If you encounter problems during the upgrade process, please go to [GitHub issues](https://vuecomponent.github.io/issue-helper/) for feedback. We will respond as soon as possible and improve this document accordingly.\n"
  },
  {
    "path": "site/src/vueDocs/migration-v2.zh-CN.md",
    "content": "本文档将帮助你从 ant-design-vue `1.x` 版本升级到 ant-design-vue `2.x` 版本。\n\n## 升级准备\n\n1. 请先升级到 1.x 的最新版本，按照控制台 warning 信息移除/修改相关的 API。\n2. 升级项目 Vue 3.0 以上。\n\n## 2.0 有哪些不兼容的变化\n\n### 设计规范调整\n\n- 行高从 `1.5`(`21px`) 调整为 `1.5715`(`22px`)。\n- 基础圆角调整，由`4px` 改为 `2px`。\n- 分割线颜色明度降低，由 `#E8E8E8` 改为 `#F0F0F0`。\n- Table 默认背景颜色从透明修改为白色。\n\n### 兼容性调整\n\n- 浏览器不再兼容 IE 11 及以下版本。\n- Vue 最低支持版本为 Vue 3.0。\n\n#### 调整的 API\n\n- 移除了 LocaleProvider，请使用 `ConfigProvider` 替代。\n- 移除了 Tag 的 afterClose 属性。\n- 合并了 FormModel、Form，详见下方的 Form 重构部分。\n- `tabIndex`、`maxLength`、`readOnly`、`autoComplete`、`autoFocus` 更改为全小写。\n- 为了在 template 语法中更友好的使用插槽，所有涉及到 xxxRender, renderXxxx 的均改成单参数，涉及到 `itemRender`、`renderItem`、`customRender`、`dropdownRender`、`dateCellRender`、`dateFullCellRender`、`monthCellRender`、`monthFullCellRender`、`renderTabBar`。\n- 所有配置 scopedSlots 的地方统一改成 slots。\n- `{ on, props, attrs, ... }` 配置进行扁平化处理，如 `{ props: {type: 'xxx'}, on: {click: this.handleClick}}` 改成 `{ type: 'xxx', onClick: this.handleClick }`, 涉及相关字段：`okButtonProps`、`cancelButtonProps`。\n- xxx.sync 改成 v-model:xxx\n- v-model 更改成 v-model:xxx，具体涉及组件：\n\n  - v-model 改成 v-model:checked 的组件有: CheckableTag、Checkbox、Switch\n  - v-model 改成 v-model:value 的组件有: Radio、Mentions、CheckboxGroup、Rate、DatePicker、Select\n  - v-model 改成 v-model:visible 的组件有: Tag、Popconfirm、Popove、Tooltip、Moda、Dropdown\n  - v-model 改成 v-model:activeKey 的组件有: Collaps、Tabs\n  - v-model 改成 v-model:current 的组件有: Steps\n  - v-model 改成 v-model:selectedKeys 的组件有: Menu\n\n#### 图标升级\n\n在 `ant-design-vue@1.2.0` 中，我们引入了 svg 图标（[为何使用 svg 图标？](https://github.com/ant-design/ant-design/issues/10353)）。使用了字符串命名的图标 API 无法做到按需加载，因而全量引入了 svg 图标文件，这大大增加了打包产物的尺寸。在 2.0 中，我们调整了图标的使用 API 从而支持 tree shaking，减少默认包体积约 150 KB(Gzipped)。\n\n旧版 Icon 使用方式将被废弃：\n\n```html\n<a-icon type=\"smile\" />\n<a-button icon=\"smile\" />\n```\n\n2.0 中会采用按需引入的方式：\n\n```html\n<template>\n  <smile-outlined />\n  <a-button>\n    <template #icon><smile-outlined /></template>\n  </a-button>\n</template>\n<script>\n  import SmileOutlined from '@ant-design/icons-vue/SmileOutlined';\n  export default {\n    components: {\n      SmileOutlined,\n    },\n  };\n</script>\n```\n\n#### 组件重构\n\n在 1.x 中我们提供了 Form、FormModel 两个表单组件，原有的 Form 组件使用 v-decorator 进行数据绑定，在 Vue2 中我们通过上下文进行强制更新组件，但是在 Vue3 中，由于引入 patchFlag 等优化方式，强制刷新会破坏 patchFlag 带来的性能优势。所以在 2.0 版本中我们将 Form、FormModel 进行合并，保留了 FormModel 的使用方式，丰富了相关功能，并改名成 Form。\n\n涉及改动：\n\n- Form 新增 `scrollToFirstError`,`name`,`validateTrigger` 属性，新增 `finish`、`finishFailed` 事件，新增 `scrollToField` 方法。\n- Form.Item 新增 `validateFirst`, `validateTrigger`, 废弃 `prop` 属性，使用 `name` 替换。\n- 嵌套字段路径使用数组，过去版本我们通过 . 代表嵌套路径（诸如 user.name 来代表 { user: { name: '' } }）。然而在一些后台系统中，变量名中也会带上 .。这造成用户需要额外的代码进行转化，因而新版中，嵌套路径通过数组来表示以避免错误的处理行为（如 ['user', 'name']）。\n- validateFields 不再支持 callback。validateFields 会返回 Promise 对象，因而你可以通过 async/await 或者 then/catch 来执行对应的错误处理。不再需要判断 errors 是否为空：\n\n```js\n// v1\nvalidateFields((err, value) => {\n  if (!err) {\n    // Do something with value\n  }\n});\n```\n\n改成\n\n```js\n// v2\nvalidateFields().then(values => {\n  // Do something with value\n});\n```\n\n## 遇到问题\n\nv2 做了非常多的细节改进和重构，我们尽可能收集了已知的所有不兼容变化和相关影响，但是有可能还是有一些场景我们没有考虑到。如果你在升级过程中遇到了问题，请到 [GitHub issues](https://vuecomponent.github.io/issue-helper/) 进行反馈。我们会尽快响应和相应改进这篇文档。\n"
  },
  {
    "path": "site/src/vueDocs/migration-v3.en-US.md",
    "content": "This document will help you upgrade from ant-design-vue `2.x` version to ant-design-vue `3.x` version.\n\nThe 2.x version is a compatible version developed for compatibility with Vue 3. It does not bring many new features, and most of the API changes are only for better compatibility with Vue 3. The 3.x version has greatly improved performance, ease of use, and functions. After the 3.x version is stable, we will archive the 2.x version. It is recommended that you upgrade to the 3.x version as soon as possible. Although there are many changes, they are basically compatible. You can upgrade gradually according to the warnings given by the console.\n\n## Upgrade preparation\n\n1. Please upgrade to the latest version of 2.x first, and remove/modify related APIs according to the warning information on the console. It is recommended to check the historical ChangeLog of 2.x first, which will not be detailed here.\n2. Upgrade the project to Vue 3.2 and above.\n\n## 3.0 What are the incompatible changes\n\n### Design specification adjustment\n\n- The font color is changed from `rgba(0, 0, 0, 0.65)` to `rgba(0, 0, 0, 0.85)`.\n- The selected color of some components is uniformly changed to `@blue-1: #E6F7FF`, and the corresponding color of `hover` is changed to `@gray-2: #FAFAFA`.\n- Error color value adjustment, changed from `@red-5: #F5222D` to `@red-5: #FF4D4F`.\n- DatePicker interactive redo, the panel and the input box are separated, the range selection can now select the start and end time separately.\n\n#### Removed API\n\n- Removed the `lazy` attribute of Transfer, it does not have a real optimization effect.\n- Removed the `combobox` mode of Select, please use `AutoComplete` instead.\n- Deprecated Button.Group, please use `Space` instead.\n- `DatePicker` `TimePicker` `Calendar` remove momentjs, please use dayjs instead.\n- `Tree`, `TreeSelect`\n  - Deprecated the use of `a-tree-node` and `a-tree-select-node` to construct nodes, use the `treeData` property instead.\n  - Deprecated `scopedSlots` `slots` custom rendering node, use `v-slot:title` instead.\n  - Deprecated `replaceFields`, use `fieldNames` instead.\n- `Table`\n  - Removed the `rowSelection.hideDefaultSelections` property of Table, please use `SELECTION_ALL` and `SELECTION_INVERT` in `rowSelection.selections` instead, [custom options](/components/table/#components-table-demo- row-selection-custom).\n  - Removed Column slots and replaced them with `v-slot:headerCell` `v-slot:bodyCell` `v-slot:customFilterDropdown` `v-slot:customFilterIcon`.\n\n#### Component refactoring\n\nIn order to make the components have better performance and maintainability, we have used TS + Composition Api to refactor almost all components. There are still very few components that have not been refactored. Such components will be refactored gradually in the future, and the rest There will be no destructive updates to the components, so there is no need to worry about future upgrade costs.\n\nMajor updates after the 3.0 version refactoring include `Tree` `TreeSelect` `DatePicker` `TimePicker` `Calendar` `Form` `Table`, other components also have corresponding function updates, you can check ChangeLog for further details.\n\n- `Tree` `TreeSelect`\n\n  - Added virtual scrolling, discarded using `a-tree-node` `a-tree-select-node` to build nodes, using `treeData` property instead to improve component performance.\n  - Deprecated `scopedSlots` `slots` custom rendering node, and replace it with `v-slot:title` to improve ease of use, avoid slot configuration expansion, and also avoid slot conflicts.\n\n- `AutoComplete`\n\n  - no longer support `optionLabelProp`. Please set Option `value` directly.\n  - options definition align with Select. Please use `options` instead of `dataSource`.\n\n- `Table`\n\n  - Removed the `rowSelection.hideDefaultSelections` property of Table, please use `SELECTION_ALL` and `SELECTION_INVERT` in `rowSelection.selections` instead, [custom options](/components/table/#components-table-demo- row-selection-custom).\n  - Removed Column slots and replaced them with `v-slot:headerCell` `v-slot:bodyCell` `v-slot:customFilterDropdown` `v-slot:customFilterIcon` to improve ease of use , To avoid slot configuration expansion, but also to avoid the problem of slot conflicts.\n  - Added expandFixed to control whether the expanded icon is fixed.\n  - Added the showSorterTooltip header whether to display the tooltip for the next sort.\n  - Added sticky for setting sticky head and scroll bar.\n  - Added rowExpandable to set whether to allow row expansion.\n  - New slot headerCell is used to personalize the header cell.\n  - Added slot bodyCell for personalized cell.\n  - New slot customFilterDropdown is used to customize the filter menu, which needs to be used with `column.customFilterDropdown`.\n  - Added slot customFilterIcon for custom filter icons.\n  - New slot emptyText is used to customize the display content of empty data.\n  - Added slot summary for the summary column.\n\n- `DatePicker` `TimePicker` `Calendar`\n\n  - By default, a more lightweight dayjs is used to replace momentjs. If your project is too large and uses a lot of momentjs methods, you can refer to the document [Custom Time Library](/docs/vue/replace-date-cn), Replace with momentjs.\n  - UI interaction adjustment, align with antd 4.x interaction specifications.\n\n- `Form` The main goal of this update is to improve performance. If you don't have custom form controls, you can almost ignore this part\n\n  - Since version 3.0, Form.Item no longer hijacks child elements, but automatically checks through provider/inject dependency injection. This method can improve component performance, and there is no limit to the number of child elements. The same is true for child elements. It can be a high-level component that is further encapsulated.\n\n    You can reference [Customized Form Controls](#components-form-demo-customized-form-controls), but it also has some disadvantages:\n\n    1. If the custom component wants Form.Item to be verified and displayed, you need to inject `const {id, onFieldChange, onFieldBlur} = useInjectFormItemContext()` and call the corresponding method.\n\n    2. A Form.Item can only collect the data of one form item. If there are multiple form items, it will cause collection confusion. For example:\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-input name=\"b\"></a-input>\n    </a-form-item>\n    ```\n\n    As above Form.Item does not know whether to collect `name=\"a\"` or `name=\"b\"`, you can solve this kind of problem in the following two ways:\n\n    The first is to use multiple `a-form-item`:\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-form-item><a-input name=\"b\"></a-input></a-form-item>\n    </a-form-item>\n    ```\n\n    The second way is to wrap it with a custom component and call `useInjectFormItemContext` in the custom component, It is equivalent to merging multiple form items into one.\n\n    ```html\n    <script>\n      // custom component\n      import { Form } from 'ant-design-vue';\n      export default {\n        name: 'custom-name',\n        setup() {\n          const formItemContext = Form.useInjectFormItemContext();\n        },\n      };\n    </script>\n    ```\n\n    ```html\n    <a-form-item>\n      <custom-com>\n        <a-input name=\"a\"></a-input>\n        <a-input name=\"b\"></a-input>\n      </custom-com>\n    </a-form-item>\n    ```\n\n    Third, the component library provides an `a-form-item-rest` component, which will prevent data collection. You can put form items that do not need to be collected and verified into this component. It is the same as the first This method is very similar, but it does not generate additional dom nodes.\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-form-item-rest><a-input name=\"b\"></a-input></a-form-item-rest>\n    </a-form-item>\n    ```\n\n## Encounter problems\n\nV3 has made a lot of detailed improvements and refactorings. We have collected all known incompatible changes and related effects as much as possible, but there may still be some scenarios that we have not considered. If you encounter problems during the upgrade process, please go to [GitHub issues](https://vuecomponent.github.io/issue-helper/) for feedback. We will respond as soon as possible and improve this document accordingly.\n"
  },
  {
    "path": "site/src/vueDocs/migration-v3.zh-CN.md",
    "content": "本文档将帮助你从 ant-design-vue `2.x` 版本升级到 ant-design-vue `3.x` 版本。\n\n2.x 版本是为了兼容 Vue 3 开发的兼容版本，他并没有带来很多新的特性，大多数的 API 改变也只是为了更好的兼容 Vue 3。 3.x 版本在性能、易用性、功能上都有了很大的提升，3.x 版本稳定后，我们会归档 2.x 版本，建议您尽快升级 3.x 版本。虽然有很多改动，但基本都做了兼容，你可以按照控制台给出的警告逐步升级。\n\n## 升级准备\n\n1. 请先升级到 2.x 的最新版本，按照控制台 warning 信息移除/修改相关的 API，建议优先查看 2.x 的历史 ChangeLog，在这里就不再详述。\n2. 升级项目 Vue 3.2 以上。\n3. 您和 3.0 只有这份文档的距离，相信我，今日加的班，是为了明天摸更多的鱼。\n\n## 3.0 有哪些不兼容的变化\n\n### 设计规范调整\n\n- 字体颜色从 `rgba(0, 0, 0, 0.65)` 调深为 `rgba(0, 0, 0, 0.85)`。\n- 部分组件选中颜色统一改为 `@blue-1: #E6F7FF`，对应 `hover` 颜色改为 `@gray-2: #FAFAFA`。\n- 报错色色值调整，由 `@red-5: #F5222D` 改为 `@red-5: #FF4D4F`。\n- DatePicker 交互重做，面板和输入框分离，范围选择现可单独选择开始和结束时间。\n\n#### 移除的 API\n\n- 移除了 Transfer 的 `lazy` 属性，它并没有起到真正的优化效果。\n- 移除了 Select 的 `combobox` 模式，请使用 `AutoComplete` 替代。\n- 废弃 Button.Group，请使用 `Space` 代替。\n- `DatePicker` `TimePicker` `Calendar` 移除 momentjs，请使用 dayjs 替换。\n- `Tree`、`TreeSelect`\n  - 废弃使用 `a-tree-node` `a-tree-select-node` 构建节点，使用 `treeData` 属性替代。\n  - 废弃 `scopedSlots` `slots` 自定义渲染节点，使用 `v-slot:title` 替换。\n  - 废弃 `replaceFields` , 使用 `fieldNames` 替换。\n- `Table`\n  - 移除了 Table 的 `rowSelection.hideDefaultSelections` 属性，请在 `rowSelection.selections` 中使用 `SELECTION_ALL` 和 `SELECTION_INVERT` 替代，[自定义选择项](/components/table/#components-table-demo-row-selection-custom)。\n  - 移除了 Column slots，分别使用 `v-slot:headerCell` `v-slot:bodyCell` `v-slot:customFilterDropdown` `v-slot:customFilterIcon` 替换。\n\n#### 组件重构\n\n为了让组件拥有更好的性能和可维护性，我们几乎使用 TS + Composition Api 重构了所有组件，目前还有极个别的组件没有重构，这类组件会在接下来逐步重构，剩余的组件不会有破坏性更新，所以不用担心未来的升级成本。\n\n3.0 版本重构后较大的更新有 `Tree` `TreeSelect` `DatePicker` `TimePicker` `Calendar` `Form` `Table` `AutoComplete`，其它组件也有相应功能的更新，你可以查看 ChangeLog 进一步了解详情。\n\n- `Tree` `TreeSelect`\n\n  - 新增了虚拟滚动，废弃使用 `a-tree-node` `a-tree-select-node` 构建节点，使用 `treeData` 属性替代，提升组件性能。\n  - 废弃 `scopedSlots` `slots` 自定义渲染节点，使用 `v-slot:title` 替换，提升易用性，避免插槽配置膨胀，同时也避免了插槽冲突问题。\n\n- `AutoComplete`\n\n  - 不再支持 `optionLabelProp`，请直接设置 Option `value` 属性。\n  - 选项与 Select 对齐，请使用 `options` 代替 `dataSource`。\n\n- `Table`\n\n  - 移除了 Table 的 `rowSelection.hideDefaultSelections` 属性，请在 `rowSelection.selections` 中使用 `SELECTION_ALL` 和 `SELECTION_INVERT` 替代，[自定义选择项](/components/table/#components-table-demo-row-selection-custom)。\n  - 移除了 Column slots，分别使用 `v-slot:headerCell` `v-slot:bodyCell` `v-slot:customFilterDropdown` `v-slot:customFilterIcon` 替换，提升易用性，避免插槽配置膨胀，同时也避免了插槽冲突问题。\n  - 新增 expandFixed 控制展开图标是否固定。\n  - 新增 showSorterTooltip 表头是否显示下一次排序的 tooltip 提示。\n  - 新增 sticky 用于设置粘性头部和滚动条。\n  - 新增 rowExpandable 用于设置是否允许行展开。\n  - 新增插槽 headerCell 用于个性化头部单元格。\n  - 新增插槽 bodyCell 用于个性化单元格。\n  - 新增插槽 customFilterDropdown 用于自定义筛选菜单，需要配合 `column.customFilterDropdown` 使用。\n  - 新增插槽 customFilterIcon 用于自定义筛选图标。\n  - 新增插槽 emptyText 用于自定义空数据时的显示内容。\n  - 新增插槽 summary 用于总结栏。\n\n- `DatePicker` `TimePicker` `Calendar`\n\n  - 默认使用更加轻量级的 dayjs 替换 momentjs，如果你的项目过大，使用了大量的 momentjs 的方法，你可以参考文档[自定义时间库](/docs/vue/replace-date-cn)，替换成 momentjs。\n  - UI 交互调整，对齐 antd 4.x 交互规范。\n\n- `Form` 这次更新主要目标是提升性能，如果你没有自定义表单控件，几乎可以忽略该部分\n\n  - 自 3.0 版本以后，Form.Item 不再劫持子元素，而是通过 provider / inject 依赖注入的方式进行自动校验，这种方式可以提高组件性能，子元素也不会限制个数，同样子元素也可以是进一步封装的高级组件。你可以参考[自定义表单控件示例](#components-form-demo-customized-form-controls)，但它同样会有一些缺点：\n\n    1、自定义组件如果希望 Form.Item 进行校验展示，你需要 `const {id, onFieldChange, onFieldBlur} = useInjectFormItemContext()` 注入，并调用相应的方法。\n\n    2、一个 Form.Item 只能收集一个表单项的数据，如果有多个表单项，会导致收集错乱。例如：\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-input name=\"b\"></a-input>\n    </a-form-item>\n    ```\n\n    如上 Form.Item 并不知道需要收集 `name=\"a\"` 还是 `name=\"b\"`，你可以通过如下三种方式去解决此类问题：\n\n    第一种，使用多个 `a-form-item`:\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-form-item><a-input name=\"b\"></a-input></a-form-item>\n    </a-form-item>\n    ```\n\n    第二种，使用自定义组件包裹，并在自定义组件中调用 `useInjectFormItemContext`，相当于把多个表单项合并成了一个。\n\n    ```html\n    <script>\n      // 自定义组件\n      import { Form } from 'ant-design-vue';\n      export default {\n        setup() {\n          const formItemContext = Form.useInjectFormItemContext();\n        },\n      };\n    </script>\n    ```\n\n    ```html\n    <a-form-item>\n      <custom-com>\n        <a-input name=\"a\"></a-input>\n        <a-input name=\"b\"></a-input>\n      </custom-com>\n    </a-form-item>\n    ```\n\n    第三种，组件库提供了一个 `a-form-item-rest` 组件，它会阻止数据的收集，你可以将不需要收集校验的表单项放到这个组件中即可，它和第一种方式很类似，但它不会产生额外的 dom 节点。\n\n    ```html\n    <a-form-item>\n      <a-input name=\"a\"></a-input>\n      <a-form-item-rest><a-input name=\"b\"></a-input></a-form-item-rest>\n    </a-form-item>\n    ```\n\n## 遇到问题\n\nv3 做了非常多的细节改进和重构，我们尽可能收集了已知的所有不兼容变化和相关影响，但是有可能还是有一些场景我们没有考虑到。如果你在升级过程中遇到了问题，请到 [GitHub issues](https://vuecomponent.github.io/issue-helper/) 进行反馈。我们会尽快响应和相应改进这篇文档。\n"
  },
  {
    "path": "site/src/vueDocs/migration-v4.en-US.md",
    "content": "This document will help you upgrade from ant-design-vue `3.x` version to ant-design-vue `4.x` version. If you are using `2.x` or older version, please refer to the previous [upgrade document](/docs/vue/migration-v3) to 3.x.\n\n## Upgrade preparation\n\n1. Please upgrade to the latest version of 3.x first, and remove / modify related APIs according to the console warning message.\n\n## Incompatible changes in v4\n\n### Design specification\n\n- Basic rounded corner adjustment, changed from `2px` to four layers of radius, which are `2px` `4px` `6px` and `8px`. For example, radius of default Button is modified from `2px` to `6px`.\n- Primary color adjustment, changed from `#1890ff` to `#1677ff`.\n- Global shadow optimization, adjusted from three layers of shadows to two layers, which are used in common components (Card .e.g) and popup components (Dropdown .e.g).\n- Overall reduction in wireframe usage.\n\n### Technology adjustment\n\n- Remove less, adopt CSS-in-JS, for better support of dynamic themes.\n  - All less files are removed, and less variables are no longer exported.\n  - Css files are no longer included in package. Since CSS-in-JS supports importing on demand, the original `ant-design-vue/dist/antd.css` has also been abandoned. If you need to reset some basic styles, please import `ant-design-vue/dist/reset.css`.\n  - If you need to reset the style of the component, but you don't want to introduce `ant-design-vue/dist/reset.css` to pollute the global style, You can try using the [App](/components/app) in the outermost layer to solve the problem that native elements do not have antd specification style.\n- Remove css variables and dynamic theme built on top of them.\n- LocaleProvider has been deprecated in 3.x (use `<ConfigProvider locale />` instead), we removed the related folder `ant-design-vue/es/locale-provider` and `ant-design-vue/lib/locale-provider` in 4.x.\n- Replace built-in Moment.js with Dayjs. For more: [Use custom date library](/docs/vue/use-custom-date-library/).\n- `babel-plugin-import` is no longer supported. CSS-in-JS itself has the ability to import on demand, and plugin support is no longer required.\n\n### Compatibility\n\n- DO NOT support IE browser anymore.\n\n#### Component API adjustment\n\n- The classname API of the component popup box is unified to `popupClassName`, and `dropdownClassName` and other similar APIs will be replaced.\n\n  - AutoComplete\n  - Cascader\n  - Select\n  - TreeSelect\n  - TimePicker\n  - DatePicker\n  - Mentions\n\n```diff\n<template>\n  <a-select\n--  dropdownClassName=\"my-select-popup\"\n++  popupClassName=\"my-select-popup\"\n  />\n</template>\n```\n\n- The controlled visible API of the component popup is unified to `open`, and `visible` and other similar APIs will be replaced.\n\n  - Drawer `visible` changed to `open`.\n  - Modal `visible` changed to `open`.\n  - Dropdown `visible` changed to `open`.\n  - Tooltip `visible` changed to `open`.\n  - Tag `visible` is removed.\n  - Slider `tooltip` related API converged to `tooltip` property.\n  - Table `filterDropdownVisible` changed to `filterDropdownOpen`.\n\n```diff\n<template>\n-- <a-modal :visible=\"visible\">content</a-modal>\n++ <a-modal :open=\"visible\">content</a-modal>\n\n-- <a-tag :visible=\"visible\">tag</a-tag>\n++ <a-tag v-if=\"visible\">tag</a-tag>\n\n  <a-table\n    :data=\"[]\"\n    :columns=\"[\n      {\n        title: 'Name',\n        dataIndex: 'name',\n--      filterDropdownVisible: visible,\n++      filterDropdownOpen: visible,\n      },\n    ]\"\n  />\n\n-- <a-slider :tooltipVisible=\"visible\" />\n++ <a-slider :tooltip=\"{ open: visible }\" />\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nconst visible = ref(true);\n</script>\n```\n\n- `getPopupContainer`: All `getPopupContainer` are guaranteed to return a unique div.\n- Drawer `style` & `class` are migrated to Drawer panel node, the original properties are replaced by `rootClassName` and `rootStyle`.\n\n#### Component refactoring and removal\n\n- Remove `locale-provider` Directory. `LocaleProvider` was removed in v4, please use `ConfigProvider` instead.\n- Remove the `xxxl` breakpoint property from the grid layout. `xxxl` breakpoint has been removed in v4. You can customize breakpoint values using [theme customization](/docs/vue/customize-theme) with `screen[XS|SM|MD|LG|XL|XXL]` properties.\n- BackTop is deprecated in `4.0.0`, and is merged into FloatButton.\n\n## Start upgrading\n\nUse git to save your code and install latest version:\n\n```bash\nnpm install --save ant-design-vue@4\n```\n\n### less migration\n\nIf you using ant-design-vue less variables, you can use compatible package to covert it into v3 less variables and use less-loader to inject them:\n\n```js\nconst { theme } = require('ant-design-vue/lib');\nconst convertLegacyToken = require('ant-design-vue/lib/theme/convertLegacyToken');\n\nconst { defaultAlgorithm, defaultSeed } = theme;\n\nconst mapToken = defaultAlgorithm(defaultSeed);\nconst v3Token = convertLegacyToken(mapToken);\n\n// Webpack Config\nmodule.exports = {\n  // ... other config\n  loader: 'less-loader',\n  options: {\n    lessOptions: {\n      modifyVars: v3Token,\n    },\n  },\n};\n```\n\nAnt then remove ant-design-vue less reference in your less file:\n\n```diff\n// Your less file\n--  @import (reference) '~ant-design-vue/es/style/themes/index';\nor\n--  @import '~ant-design-vue/es/style/some-other-less-file-ref';\n```\n\n### Remove babel-plugin-import\n\nRemove `babel-plugin-import` from package.json and modify `.babelrc`:\n\n```diff\n\"plugins\": [\n-- [\"import\", { \"libraryName\": \"ant-design-vue\", \"libraryDirectory\": \"lib\"}, \"ant-design-vue\"],\n]\n```\n\n### Legacy browser support\n\nAnt Design Vue v4 using `:where` css selector to reduce CSS-in-JS hash priority. You can use `StyleProvider` to cancel this function. Please ref [Compatible adjustment](/docs/vue/compatible-style).\n\n## Encounter problems\n\nIf you encounter problems during the upgrade, please go to [GitHub issues](https://github.com/vueComponent/ant-design-vue/issues) for feedback. We will respond and improve this document as soon as possible.\n"
  },
  {
    "path": "site/src/vueDocs/migration-v4.zh-CN.md",
    "content": "本文档将帮助你从 ant-design-vue `3.x` 版本升级到 ant-design-vue `4.x` 版本，如果你是 `2.x` 或者更老的版本，请先参考之前的[升级文档](/docs/vue/migration-v3-cn)升级到 3.x。\n\n## 升级准备\n\n1. 请先升级到 3.x 的最新版本，按照控制台 warning 信息移除/修改相关的 API。\n\n## 4.0 有哪些不兼容的变化\n\n### 设计规范调整\n\n- 基础圆角调整，由统一的 `2px` 改为四级圆角，分别为 `2px` `4px` `6px` `8px`，分别应用于不同场景，比如默认尺寸的 Button 的圆角调整为了 `6px`。\n- 主色调整，由 `#1890ff` 改为 `#1677ff`。\n- 整体阴影调整，由原本的三级阴影调整为两级，分别用于常驻页面的组件（如 Card）和交互反馈（如 Dropdown）。\n- 部分组件内间距调整。\n- 整体去线框化。\n\n### 技术调整\n\n- 弃用 less，采用 CSS-in-JS，更好地支持动态主题。\n  - 所有 less 文件全部移除，less 变量不再支持透出。\n  - 产物中不再包含 css 文件。由于 CSS-in-JS 支持按需引入，原本的 `ant-design-vue/dist/antd.css` 也已经移除，如果需要重置一些基本样式请引入 `ant-design-vue/dist/reset.css`。\n  - 如果需要组件重置样式，又不想引入 `ant-design-vue/dist/reset.css` 从而导致污染全局样式的话，可以尝试在应用最外层使用[App 组件](/components/app-cn)，解决原生元素没有 ant-design-vue 规范样式的问题。\n- 移除 css variables 以及在此之上构筑的动态主题方案。\n- LocaleProvider 在 3.x 中已经废弃（使用 `<ConfigProvider locale />` 替代），我们在 4.x 里彻底移除了相关目录 `ant-design-vue/es/locale-provider`、`ant-design-vue/lib/locale-provider`。\n- 不再支持 `babel-plugin-import`，CSS-in-JS 本身具有按需加载的能力，不再需要插件支持。\n\n### 兼容性调整\n\n- 不再支持 IE 浏览器。\n\n#### 组件 API 调整\n\n- 组件弹框的 classname API 统一为 `popupClassName`，`dropdownClassName` 等类似 API 都会被替换。\n\n  - AutoComplete 组件\n  - Cascader 组件\n  - Select 组件\n  - TreeSelect 组件\n  - TimePicker 组件\n  - DatePicker 组件\n  - Mentions 组件\n\n```diff\n<template>\n  <a-select\n--  dropdownClassName=\"my-select-popup\"\n++  popupClassName=\"my-select-popup\"\n  />\n</template>\n```\n\n- 组件弹框的受控可见 API 统一为 `open`，`visible` 等类似 API 都会被替换。\n\n  - Drawer 组件 `visible` 变为 `open`。\n  - Modal 组件 `visible` 变为 `open`。\n  - Dropdown 组件 `visible` 变为 `open`。\n  - Tooltip 组件 `visible` 变为 `open`。\n  - Tag 组件 `visible` 已移除。\n  - Slider 组件 `tooltip` 相关 API 收敛到 `tooltip` 属性中。\n  - Table 组件 `filterDropdownVisible` 变为 `filterDropdownOpen`。\n\n```diff\n<template>\n-- <a-modal :visible=\"visible\">content</a-modal>\n++ <a-modal :open=\"visible\">content</a-modal>\n\n-- <a-tag :visible=\"visible\">tag</a-tag>\n++ <a-tag v-if=\"visible\">tag</a-tag>\n\n  <a-table\n    :data=\"[]\"\n    :columns=\"[\n      {\n        title: 'Name',\n        dataIndex: 'name',\n--      filterDropdownVisible: visible,\n++      filterDropdownOpen: visible,\n      },\n    ]\"\n  />\n\n-- <a-slider :tooltipVisible=\"visible\" />\n++ <a-slider :tooltip=\"{ open: visible }\" />\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nconst visible = ref(true);\n</script>\n```\n\n- `getPopupContainer`: 所有的 `getPopupContainer` 都需要保证返回的是唯一的 div。\n- Drawer `style` 和 `class` 迁移至 Drawer 弹层区域上，原属性替换为 `rootClassName` 和 `rootStyle`。\n\n#### 组件重构与移除\n\n- 移除 `locale-provider` 目录。`LocaleProvider` 在 v4 中已移除，请使用 `ConfigProvider` 替代。\n\n- 移除栅格布局中的`xxxl`断点属性。 `xxxl`属性已经在 v4 被移除，您可以使用 [主题定制](/docs/vue/customize-theme-cn) 修改 `screen[XS|SM|MD|LG|XL|XXL]` 来修改断点值实现。\n\n- BackTop 组件在 `4.0.0` 中废弃，移至 FloatButton 悬浮按钮中。如需使用，可以从 FloatButton 中引入。\n\n## 开始升级\n\n通过 git 保存你的代码，然后按照上述文档进行依赖安装：\n\n```bash\nnpm install --save ant-design-vue@4.x\n```\n\n### less 迁移\n\n如果你使用到了 ant-design-vue 的 less 变量，通过兼容包将 v4 变量转译成 v3 版本，并通过 less-loader 注入：\n\n```js\nconst { theme } = require('ant-design-vue/lib');\nconst convertLegacyToken = require('ant-design-vue/lib/theme/convertLegacyToken');\n\nconst { defaultAlgorithm, defaultSeed } = theme;\n\nconst mapToken = defaultAlgorithm(defaultSeed);\nconst v3Token = convertLegacyToken(mapToken);\n\n// Webpack Config\nmodule.exports = {\n  // ... other config\n  loader: 'less-loader',\n  options: {\n    lessOptions: {\n      modifyVars: v3Token,\n    },\n  },\n};\n```\n\n同时移除对 ant-design-vue less 文件的直接引用：\n\n```diff\n// Your less file\n--  @import (reference) '~ant-design-vue/es/style/themes/index';\nor\n--  @import '~ant-design-vue/es/style/some-other-less-file-ref';\n```\n\n### 移除 babel-plugin-import\n\n从 package.json 中移除 `babel-plugin-import`，并从 `.babelrc` 移除该插件：\n\n```diff\n\"plugins\": [\n-- [\"import\", { \"libraryName\": \"ant-design-vue\", \"libraryDirectory\": \"lib\"}, \"ant-design-vue\"],\n]\n```\n\n### 旧版浏览器兼容\n\nAnt Design Vue v4 使用 `:where` css selector 降低 CSS-in-JS hash 值优先级，如果你需要支持旧版本浏览器（如 IE 11、360 浏览器 等等）。可以通过 `StyleProvider` 去除降权操作。详情请参阅 [兼容性调整](/docs/vue/compatible-style-cn)。\n\n## 遇到问题\n\n如果您在升级过程中遇到了问题，请到 [GitHub issues](https://github.com/vueComponent/ant-design-vue/issues) 进行反馈。我们会尽快响应和相应改进这篇文档。\n"
  },
  {
    "path": "site/src/vueDocs/replace-date.en-US.md",
    "content": "# custom date library\n\nStarting from the V3 version, the momentjs library is replaced by dayjs by default. If you need to use the momentjs or date-fns date library, you can replace it as follows:\n\n### 替换 DatePicker\n\n```js\n// moment or date-fns\nimport DatePicker from 'ant-design-vue/es/date-picker/moment';\nimport TimePicker from 'ant-design-vue/es/time-picker/moment';\nimport Calendar from 'ant-design-vue/es/calendar/moment';\n// import DatePicker from 'ant-design-vue/es/date-picker/date-fns';\n// import TimePicker from 'ant-design-vue/es/time-picker/date-fns';\n// import Calendar from 'ant-design-vue/es/calendar/date-fns';\nimport { createApp } from 'vue';\nimport App from './App.vue';\nimport antd from 'ant-design-vue';\nconst app = createApp(App);\napp.use(DatePicker).use(TimePicker).use(Calendar).use(antd).mount('#app');\n```\n\n> Note: If you need to register the ant-design-vue component library globally, then `use(DatePicker)` `use(TimePicker)` `use(Calendar)` must be executed before `use(antd)`, otherwise the default cannot be overridden dayjs version.\n"
  },
  {
    "path": "site/src/vueDocs/replace-date.zh-CN.md",
    "content": "# 自定义时间库\n\n在 V3 版本开始，默认使用 dayjs 替换了 momentjs 库，如果你需要使用 momentjs 或者 date-fns 日期库，你可以通过如下方式替换：\n\n### 替换 DatePicker\n\n```js\n// moment 或者 date-fns\nimport DatePicker from 'ant-design-vue/es/date-picker/moment';\nimport TimePicker from 'ant-design-vue/es/time-picker/moment';\nimport Calendar from 'ant-design-vue/es/calendar/moment';\n// import DatePicker from 'ant-design-vue/es/date-picker/date-fns';\n// import TimePicker from 'ant-design-vue/es/time-picker/date-fns';\n// import Calendar from 'ant-design-vue/es/calendar/date-fns';\nimport { createApp } from 'vue';\nimport App from './App.vue';\nimport antd from 'ant-design-vue';\nconst app = createApp(App);\napp.use(DatePicker).use(TimePicker).use(Calendar).use(antd).mount('#app');\n```\n\n> 注意: 如果你需要全局注册 ant-design-vue 组件库，那么 `use(DatePicker)` `use(TimePicker)` `use(Calendar)` 必须在 `use(antd)` 之前执行，否则无法覆盖默认的 dayjs 版本。\n"
  },
  {
    "path": "site/src/vueDocs/sponsor.en-US.md",
    "content": "# Sponsor Ant Design Vue Development\n\nant-design-vue is an MIT licensed open source project and completely free to use. However, in order to continue the healthy and sustainable development of the project, we expect to receive corresponding financial support. You can support ant-design-vue development via the following methods:\n\n## One-time Donations\n\nWe accept donations through these channels:\n\n<div>\n<a href=\"https://www.paypal.me/tangjinzhou\" target=\"_blank\">PayPal</a>\n</div>\n\n## Recurring Pledges\n\nRecurring pledges come with exclusive perks, e.g. having your name listed in the Vue GitHub repository, or have your company logo placed on this website.\n\n<div>\n<a href=\"https://www.patreon.com/tangjinzhou\" target=\"_blank\">Patreon</a>\n<br/>\n<a href=\"https://opencollective.com/ant-design-vue\" target=\"_blank\">opencollective</a>\n</div>\n\n## Corporate sponsorship\n\nYou can consult me by email [antdv@foxmail.com](antdv@foxmail.com).\n\n## Current sponsors\n\n### Sponsors\n\nBecome a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/ant-design-vue#sponsor)]\n\n<div>\n<a href=\"http://www.jeecg.com/\" target=\"_blank\"><img src=\"https://www.antdv.com/jeecg-logo.png\" height=\"64\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/10/avatar.svg\"></a>\n</div>\n\n### Backers\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ant-design-vue#backer)]\n\n<div>\n<a href=\"https://github.com/limichange\" target=\"_blank\"><img width=\"64\" style=\"border-radius: 50%;\" src=\"https://avatars0.githubusercontent.com/u/1947344?s=400&v=4\" title=\"limichange donation total 24$ by qq from 2018.9\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/10/avatar.svg\"></a>\n</div>\n\nIf you run a business and are using Ant Design Vue in a revenue-generating product, it makes business sense to sponsor Ant Design Vue development: it ensures the project that your product relies on stays healthy and actively maintained. It can also help your exposure in the Vue community and makes it easier to attract Vue developers.\n\nIf you are an individual user and have enjoyed the productivity of using Ant Design Vue, consider donating as a sign of appreciation - like buying me coffee once in a while :)\n"
  },
  {
    "path": "site/src/vueDocs/sponsor.zh-CN.md",
    "content": "# 赞助 Ant Design Vue 的研发\n\nant-design-vue 是采用 MIT 许可的开源项目，使用完全免费。 但为了项目能够健康持续的发展下去，我们期望获得相应的资金支持。 你可以通过下列的方法来赞助我们的开发。\n\n## 一次性赞助\n\n你可以通过以下任意一种方式赞助:\n\n<div>\n<a href=\"https://www.paypal.me/tangjinzhou\" target=\"_blank\">PayPal</a>\n</div>\n\n## 购买贴纸\n\n你也可以通过 <a href=\"https://smallsticker.com/product/ant-design-vue/\" target=\"_blank\">购买我们官方授权的贴纸</a> 的方式来支持 Ant Design Vue - 每售出一张贴纸，我们将获得 2 元的捐赠。\n\n## 周期性赞助\n\n周期性赞助可以获得额外的回报，比如你的名字会出现在 Vue 的 GitHub 仓库中，再比如你的公司 logo 会出现在我们的官网上。\n\n<div>\n<a href=\"https://www.patreon.com/tangjinzhou\" target=\"_blank\">Patreon</a>\n<br/>\n<a href=\"https://opencollective.com/ant-design-vue\" target=\"_blank\">opencollective</a>\n</div>\n\n## 企业赞助\n\n您可以通过邮件咨询[antdv@foxmail.com](antdv@foxmail.com)。\n\n## 当前的赞助商\n\n### Sponsors\n\nBecome a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/ant-design-vue#sponsor)]\n\n<div>\n<a href=\"http://www.jeecg.com/\" target=\"_blank\"><img src=\"https://www.antdv.com/jeecg-logo.png\" height=\"64\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/sponsor/10/avatar.svg\"></a>\n</div>\n\n### Backers\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ant-design-vue#backer)]\n\n<div>\n<a href=\"https://github.com/limichange\" target=\"_blank\"><img width=\"64\" style=\"border-radius: 50%;\" src=\"https://avatars0.githubusercontent.com/u/1947344?s=400&v=4\" title=\"limichange donation total 24$ by qq from 2018.9\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/ant-design-vue/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/ant-design-vue/backer/10/avatar.svg\"></a>\n</div>\n\n如果你是企业经营者并且将 Ant Design Vue 用在商业产品中，那么赞助 Ant Design Vue 有商业上的益处：可以让你的产品所依赖的框架保持健康并得到积极的维护，也能帮助你在 Vue 社区里获得更高的曝光度，从而更容易地吸引到 Vue 开发者。\n\n如果你是个人开发者并且享受 Ant Design Vue 带来的高开发效率，可以用捐助来表示你的谢意 —— 就好像偶尔给我买杯咖啡 :)\n"
  },
  {
    "path": "site/src/vueDocs/use-with-vue-cli.en-US.md",
    "content": "# Use in vue-cli 3\n\n[vue-cli](https://github.com/vuejs/vue-cli) is one of the best Vue application development tools. We are going to use `antd` within it and modify the webpack config for some customized needs.\n\n## Install and Initialization\n\nWe need to install `vue-cli` first, you may need install [yarn](https://github.com/yarnpkg/yarn/) too.\n\n```bash\n$ npm install -g @vue/cli\n# OR\n$ yarn global add @vue/cli\n```\n\nCreate a new project named `antd-demo`.\n\n```bash\n$ vue create antd-demo\n```\n\nAnd, setup your vue project configuration.\n\nThe tool will create and initialize environment and dependencies automatically, please try config your proxy setting or use another npm registry if any network errors happen during it.\n\nThen we go inside `antd-demo` and start it.\n\n```bash\n$ cd antd-demo\n$ npm run serve\n```\n\nOpen the browser at http://localhost:8080/. It renders a header saying \"Welcome to Your Vue.js App\" on the page.\n\n## Import antd\n\nBelow is the default directory structure.\n\n```null\n├── README.md\n├── babel.config\n├── package.json\n├── public\n│   ├── favicon.ico\n│   └── index.html\n├── src\n│   ├── assets\n│   │   └── logo.png\n│   ├── components\n│   │   └── HelloWorld.vue\n│   ├── App.vue\n│   └── main.js\n└── yarn.lock\n```\n\nNow we install `ant-design-vue` from yarn or npm.\n\n```bash\n$ yarn add ant-design-vue\n```\n\nModify `src/main.js`, import Button component from `antd`.\n\n```jsx\nimport Vue from 'vue';\nimport Button from 'ant-design-vue/lib/button';\nimport 'ant-design-vue/dist/reset.css';\nimport App from './App';\n\nconst app = createApp(App);\n\n/* Automatically register components under Button, such as Button.Group */\napp.use(Button).mount('#app');\n```\n\nModify `src/App.vue`。\n\n```jsx\n<template>\n  <div id=\"app\">\n    <img src=\"./assets/logo.png\">\n    <a-button type=\"primary\">Button></a-button>\n    <router-view/>\n  </div>\n</template>\n...\n```\n\nOk, you should now see a blue primary button displayed on the page. Next you can choose any components of `antd` to develop your application. Visit other workflows of `vue-cli` at its [User Guide ](https://github.com/vuejs/vue-cli/blob/master/README.md).\n"
  },
  {
    "path": "site/src/vueDocs/use-with-vue-cli.zh-CN.md",
    "content": "# 在 vue-cli 3 中使用\n\n[vue-cli](https://github.com/vuejs/vue-cli) 是业界最优秀的 Vue 应用开发工具之一，本文会尝试在 vue-cli 创建的工程中使用 antd 组件，并自定义 webpack 的配置以满足各类工程化需求。\n\n## 安装和初始化\n\n我们需要在命令行中安装 vue-cli 工具，你可能还需要安装 [yarn](https://github.com/yarnpkg/yarn/)。\n\n```bash\n$ npm install -g @vue/cli\n# OR\n$ yarn global add @vue/cli\n```\n\n然后新建一个项目。\n\n```bash\n$ vue create antd-demo\n```\n\n并配置项目。\n\n工具会自动初始化一个脚手架并安装 Vue 项目的各种必要依赖，如果在过程中出现网络问题，请尝试配置代理或使用其他 npm registry。\n\n然后我们进入项目并启动。\n\n```bash\n$ cd antd-demo\n$ npm run serve\n```\n\n此时浏览器会访问 http://localhost:8080/ ，看到 `Welcome to Your Vue.js App` 的界面就算成功了。\n\n## 引入 antd\n\n这是 vue-cli 生成的默认目录结构。\n\n```null\n├── README.md\n├── babel.config\n├── package.json\n├── public\n│   ├── favicon.ico\n│   └── index.html\n├── src\n│   ├── assets\n│   │   └── logo.png\n│   ├── components\n│   │   └── HelloWorld.vue\n│   ├── App.vue\n│   └── main.js\n└── yarn.lock\n```\n\n现在从 yarn 或 npm 安装并引入 ant-design-vue。\n\n```bash\n$ yarn add ant-design-vue\n```\n\n修改 `src/main.js`，引入 antd 的按钮组件以及全部样式文件。\n\n```jsx\nimport Vue from 'vue';\nimport Button from 'ant-design-vue/lib/button';\nimport 'ant-design-vue/dist/antd.css';\nimport App from './App';\n\nconst app = createApp(App);\n\n/* 会自动注册 Button 下的子组件, 例如 Button.Group */\napp.use(Button).mount('#app');\n```\n\n修改 `src/App.vue`的 template 内容。\n\n```jsx\n<template>\n  <div id=\"app\">\n    <img src=\"./assets/logo.png\">\n    <a-button type=\"primary\">Button></a-button>\n  </div>\n</template>\n...\n```\n\n好了，现在你应该能看到页面上已经有了 antd 的蓝色按钮组件，接下来就可以继续选用其他组件开发应用了。其他开发流程你可以参考 vue-cli 的[官方文档](https://github.com/vuejs/vue-cli/blob/master/README.md)。\n"
  },
  {
    "path": "site/typings/shared.d.ts",
    "content": "// types shared between server and client\n\nexport interface LocaleConfig {\n  lang: string;\n  title?: string;\n  description?: string;\n  head?: HeadConfig[];\n  label?: string;\n  selectText?: string;\n}\n\nexport interface SiteData<ThemeConfig = any> {\n  base: string;\n  lang: string;\n  title: string;\n  description: string;\n  head: HeadConfig[];\n  themeConfig: ThemeConfig;\n  locales: Record<string, LocaleConfig>;\n}\n\nexport type HeadConfig =\n  | [string, Record<string, string>]\n  | [string, Record<string, string>, string];\n\nexport interface PageData {\n  relativePath: string;\n  title: string;\n  description: string;\n  headers: Header[];\n  frontmatter: Record<string, any>;\n  lastUpdated: number;\n  content?: string;\n  html?: string;\n}\n\nexport interface Header {\n  level: number;\n  title: string;\n  slug: string;\n  content: string;\n}\n"
  },
  {
    "path": "site/typings.d.ts",
    "content": "declare module '*.vue' {\n  import type { DefineComponent } from 'vue';\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  const component: DefineComponent<any, any, any>;\n  export default component;\n}\n\ndeclare module '*.svg';\n"
  },
  {
    "path": "site/vite.config.ts",
    "content": "import path from 'path';\nimport vue from '@vitejs/plugin-vue';\nimport md from '../plugin/md';\nimport docs from '../plugin/docs';\nimport vueJsx from '@vitejs/plugin-vue-jsx';\n/**\n * @type {import('vite').UserConfig}\n */\nexport default {\n  resolve: {\n    alias: {\n      vue:\n        process.env.NODE_ENV === 'production'\n          ? 'vue/dist/vue.runtime.esm-browser.prod.js'\n          : 'vue/dist/vue.esm-bundler.js',\n      'ant-design-vue/es': path.resolve(__dirname, '../components'),\n      'ant-design-vue': path.resolve(__dirname, '../components'),\n      '@': path.resolve(__dirname, './src'),\n    },\n  },\n  server: {\n    host: true,\n  },\n  plugins: [\n    vueJsx({\n      // options are passed on to @vue/babel-plugin-jsx\n      mergeProps: false,\n      enableObjectSlots: false,\n    }),\n    docs(),\n    md(),\n    vue({\n      include: [/\\.vue$/, /\\.md$/],\n    }),\n  ],\n  optimizeDeps: {\n    include: [\n      'fetch-jsonp',\n      '@ant-design/icons-vue',\n      'lodash-es',\n      'dayjs',\n      'vue',\n      'vue-router',\n      'vue-i18n',\n      'async-validator',\n    ],\n  },\n  css: {\n    preprocessorOptions: {\n      less: {\n        javascriptEnabled: true,\n        // includePaths: [\"node_modules/\"],\n      },\n    },\n  },\n};\n"
  },
  {
    "path": "test.html",
    "content": "<!DOCTYPE html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\" />\n  </head>\n  <body>\n    <noscript></noscript>\n    <div id=\"app\"></div>\n    <script src=\"https://unpkg.com/vue@3.2.47/dist/vue.global.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/dayjs.min.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/customParseFormat.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/weekday.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/localeData.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/weekOfYear.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/weekYear.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/advancedFormat.js\"></script>\n    <script src=\"https://unpkg.com/dayjs/plugin/quarterOfYear.js\"></script>\n    <script src=\"/Users/jinzhou/Work/ant-design-vue/dist/antd.min.js\"></script>\n    <!-- built files will be auto injected -->\n  </body>\n</html>\n"
  },
  {
    "path": "tests/__mocks__/copy-to-clipboard.js",
    "content": "function copy(str) {\n  copy.lastStr = str;\n}\n\nexport default copy;\n"
  },
  {
    "path": "tests/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`antd dist files exports modules correctly 1`] = `\nArray [\n  \"install: { name: install }\",\n  \"version\",\n  \"Affix: { name: AAffix }\",\n  \"Anchor: { name: AAnchor }\",\n  \"AnchorLink: { name: AAnchorLink }\",\n  \"AutoComplete: { name: AAutoComplete }\",\n  \"AutoCompleteOptGroup: { displayName: AAutoCompleteOptGroup }\",\n  \"AutoCompleteOption: { displayName: AAutoCompleteOption }\",\n  \"Alert: { name: AAlert }\",\n  \"Avatar: { name: AAvatar }\",\n  \"AvatarGroup: { name: AAvatarGroup }\",\n  \"BackTop: { name: ABackTop }\",\n  \"Badge: { name: ABadge }\",\n  \"BadgeRibbon: { name: ABadgeRibbon }\",\n  \"Breadcrumb: { name: ABreadcrumb }\",\n  \"BreadcrumbItem: { name: ABreadcrumbItem }\",\n  \"BreadcrumbSeparator: { name: ABreadcrumbSeparator }\",\n  \"Button: { name: AButton }\",\n  \"ButtonGroup: { name: AButtonGroup }\",\n  \"Calendar: { name: ACalendar }\",\n  \"Card: { name: ACard }\",\n  \"CardGrid: { name: ACardGrid }\",\n  \"CardMeta: { name: ACardMeta }\",\n  \"Collapse: { name: ACollapse }\",\n  \"CollapsePanel: { name: ACollapsePanel }\",\n  \"Carousel: { name: ACarousel }\",\n  \"Cascader: { name: ACascader }\",\n  \"Checkbox: { name: ACheckbox }\",\n  \"CheckboxGroup: { name: ACheckboxGroup }\",\n  \"Col: { name: ACol }\",\n  \"Comment: { name: AComment }\",\n  \"ConfigProvider: { name: AConfigProvider }\",\n  \"DatePicker: { name: ADatePicker }\",\n  \"MonthPicker: { name: AMonthPicker }\",\n  \"WeekPicker: { name: AWeekPicker }\",\n  \"RangePicker: { name: ARangePicker }\",\n  \"QuarterPicker: { name: AQuarterPicker }\",\n  \"Descriptions: { name: ADescriptions }\",\n  \"DescriptionsItem: { name: ADescriptionsItem }\",\n  \"Divider: { name: ADivider }\",\n  \"Dropdown: { name: ADropdown }\",\n  \"DropdownButton: { name: ADropdownButton }\",\n  \"Drawer: { name: ADrawer }\",\n  \"Empty: { displayName: AEmpty }\",\n  \"Form: { name: AForm }\",\n  \"FormItem: { name: AFormItem }\",\n  \"FormItemRest: { name: AFormItemRest }\",\n  \"Grid\",\n  \"Input: { name: AInput }\",\n  \"InputGroup: { name: AInputGroup }\",\n  \"InputPassword: { name: AInputPassword }\",\n  \"InputSearch: { name: AInputSearch }\",\n  \"Textarea: { name: ATextarea }\",\n  \"Image: { name: AImage }\",\n  \"ImagePreviewGroup: { name: AImagePreviewGroup }\",\n  \"InputNumber: { name: AInputNumber }\",\n  \"Layout: { name: ALayout }\",\n  \"LayoutHeader: { name: ALayoutHeader }\",\n  \"LayoutSider: { name: ALayoutSider }\",\n  \"LayoutFooter: { name: ALayoutFooter }\",\n  \"LayoutContent: { name: ALayoutContent }\",\n  \"List: { name: AList }\",\n  \"ListItem: { name: AListItem }\",\n  \"ListItemMeta: { displayName: AListItemMeta }\",\n  \"message\",\n  \"Menu: { name: AMenu }\",\n  \"MenuDivider: { name: AMenuDivider }\",\n  \"MenuItem: { name: AMenuItem }\",\n  \"MenuItemGroup: { name: AMenuItemGroup }\",\n  \"SubMenu: { name: ASubMenu }\",\n  \"Mentions: { name: AMentions }\",\n  \"MentionsOption: { name: AMentionsOption }\",\n  \"Modal: { name: AModal }\",\n  \"Statistic: { name: AStatistic }\",\n  \"StatisticCountdown: { name: AStatisticCountdown }\",\n  \"notification\",\n  \"PageHeader: { name: APageHeader }\",\n  \"Pagination: { name: APagination }\",\n  \"Popconfirm: { name: APopconfirm }\",\n  \"Popover: { name: APopover }\",\n  \"Progress: { name: AProgress }\",\n  \"Radio: { name: ARadio }\",\n  \"RadioButton: { name: ARadioButton }\",\n  \"RadioGroup: { name: ARadioGroup }\",\n  \"Rate: { name: ARate }\",\n  \"Result: { name: AResult }\",\n  \"Row: { name: ARow }\",\n  \"Select: { name: ASelect }\",\n  \"SelectOptGroup: { displayName: ASelectOptGroup }\",\n  \"SelectOption: { displayName: ASelectOption }\",\n  \"Skeleton: { name: ASkeleton }\",\n  \"SkeletonButton: { name: ASkeletonButton }\",\n  \"SkeletonAvatar: { name: ASkeletonAvatar }\",\n  \"SkeletonInput: { name: ASkeletonInput }\",\n  \"SkeletonImage: { name: ASkeletonImage }\",\n  \"SkeletonTitle: { name: SkeletonTitle }\",\n  \"Slider: { name: ASlider }\",\n  \"Space: { name: ASpace }\",\n  \"Spin: { name: ASpin }\",\n  \"Steps: { name: ASteps }\",\n  \"Step: { name: AStep }\",\n  \"Switch: { name: ASwitch }\",\n  \"Table: { name: ATable }\",\n  \"TableColumn: { name: ATableColumn }\",\n  \"TableColumnGroup: { name: ATableColumnGroup }\",\n  \"TableSummary: { name: ATableSummary }\",\n  \"TableSummaryRow: { name: ATableSummaryRow }\",\n  \"TableSummaryCell: { name: ATableSummaryCell }\",\n  \"Transfer: { name: ATransfer }\",\n  \"Tree: { name: ATree }\",\n  \"TreeNode: { name: ATreeNode }\",\n  \"DirectoryTree: { name: ADirectoryTree }\",\n  \"TreeSelect: { name: ATreeSelect }\",\n  \"TreeSelectNode: { displayName: ATreeSelectNode }\",\n  \"Tabs: { name: ATabs }\",\n  \"TabPane: { name: ATabPane }\",\n  \"Tag: { name: ATag }\",\n  \"CheckableTag: { name: ACheckableTag }\",\n  \"TimePicker: { name: ATimePicker }\",\n  \"TimeRangePicker: { name: ATimeRangePicker }\",\n  \"Timeline: { name: ATimeline }\",\n  \"TimelineItem: { name: ATimelineItem }\",\n  \"Tooltip: { name: ATooltip }\",\n  \"Typography: { name: ATypography }\",\n  \"TypographyLink: { displayName: ATypographyLink }\",\n  \"TypographyParagraph: { displayName: ATypographyParagraph }\",\n  \"TypographyText: { displayName: ATypographyText }\",\n  \"TypographyTitle: { displayName: ATypographyTitle }\",\n  \"Upload: { name: AUpload }\",\n  \"UploadDragger: { name: AUploadDragger }\",\n  \"LocaleProvider: { name: ALocaleProvider }\",\n  \"default\",\n]\n`;\n"
  },
  {
    "path": "tests/index.test.js",
    "content": "const OLD_NODE_ENV = process.env.NODE_ENV;\nprocess.env.NODE_ENV = 'development';\nconst antd = require('..');\n\ndescribe('antdv', () => {\n  afterAll(() => {\n    process.env.NODE_ENV = OLD_NODE_ENV;\n  });\n\n  it('exports modules correctly', () => {\n    expect(Object.keys(antd)).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "tests/setup.js",
    "content": "import { config } from '@vue/test-utils';\nconst util = require('util');\n\nconfig.global.stubs = {\n  transition: false,\n  'transition-group': false,\n};\n/* eslint-disable global-require */\nif (typeof window !== 'undefined') {\n  global.window.resizeTo = (width, height) => {\n    global.window.innerWidth = width || global.window.innerWidth;\n    global.window.innerHeight = height || global.window.innerHeight;\n    global.window.dispatchEvent(new Event('resize'));\n  };\n  global.window.scrollTo = () => {};\n  if (!window.matchMedia) {\n    Object.defineProperty(global.window, 'matchMedia', {\n      value: jest.fn(query => ({\n        matches: query.includes('max-width'),\n        addListener: jest.fn(),\n        removeListener: jest.fn(),\n      })),\n    });\n  }\n\n  // ref: https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom\n  // ref: https://github.com/jsdom/jsdom/issues/2524\n  Object.defineProperty(window, 'TextEncoder', {\n    writable: true,\n    value: util.TextEncoder,\n  });\n  Object.defineProperty(window, 'TextDecoder', {\n    writable: true,\n    value: util.TextDecoder,\n  });\n}\n\nglobal.ResizeObserver = require('resize-observer-polyfill');\n\n// The built-in requestAnimationFrame and cancelAnimationFrame not working with jest.runFakeTimes()\n// https://github.com/facebook/jest/issues/5147\nglobal.requestAnimationFrame = function (cb) {\n  return setTimeout(cb, 0);\n};\n\nglobal.cancelAnimationFrame = function (cb) {\n  return clearTimeout(cb, 0);\n};\n\nconst mockMath = Object.create(global.Math);\nmockMath.random = () => 0.5;\nglobal.Math = mockMath;\n"
  },
  {
    "path": "tests/setupAfterEnv.ts",
    "content": "import { defaultConfig } from '../components/theme/internal';\n\n// Not use dynamic hashed for test env since version will change hash dynamically.\ndefaultConfig.hashed = false;\n"
  },
  {
    "path": "tests/shared/demoTest.js",
    "content": "import glob from 'glob';\nimport { mount } from '@vue/test-utils';\nimport MockDate from 'mockdate';\nimport dayjs from 'dayjs';\nimport antd from '../../components';\n\nexport default function demoTest(component, options = {}) {\n  const suffix = options.suffix || 'vue';\n  const files = glob.sync(`./components/${component}/demo/*.${suffix}`);\n  files.forEach(file => {\n    if (file.includes('index.vue')) {\n      return;\n    }\n    let testMethod = options.skip === true ? test.skip : test;\n\n    if (Array.isArray(options.skip) && options.skip.some(c => file.includes(c))) {\n      testMethod = test.skip;\n    }\n    testMethod(`renders ${file} correctly`, () => {\n      MockDate.set(dayjs('2016-11-22').valueOf());\n      const demo = require(`../.${file}`).default || require(`../.${file}`);\n      document.body.innerHTML = '';\n      const wrapper = mount(demo, {\n        global: { plugins: [antd] },\n        attachTo: document.body,\n        // sync: false,\n      });\n      // await sleep();\n      // should get dom from element\n      // snap files copy from antd does not need to change\n      // or just change a little\n      const dom = options.getDomFromElement ? wrapper.element : wrapper.html();\n      expect(dom).toMatchSnapshot();\n      MockDate.reset();\n      // wrapper.unmount();\n      document.body.innerHTML = '';\n    });\n  });\n}\n"
  },
  {
    "path": "tests/shared/focusTest.js",
    "content": "import { mount } from '@vue/test-utils';\nimport { sleep } from '../utils';\n\nexport default function focusTest(Component) {\n  describe('focus and blur', () => {\n    let container;\n    beforeEach(() => {\n      container = document.createElement('div');\n      document.body.appendChild(container);\n    });\n\n    afterEach(() => {\n      document.body.removeChild(container);\n    });\n\n    it('focus() and onFocus', async () => {\n      const handleFocus = jest.fn();\n      const wrapper = mount(\n        {\n          render() {\n            return <Component ref=\"component\" onFocus={handleFocus} />;\n          },\n        },\n        { attachTo: container, sync: false },\n      );\n      await sleep();\n      wrapper.vm.$refs.component.focus();\n      await sleep();\n      expect(handleFocus).toBeCalled();\n    });\n\n    it('blur() and onBlur', async () => {\n      const handleBlur = jest.fn();\n      const handleFocus = jest.fn();\n      const wrapper = mount(\n        {\n          render() {\n            return <Component ref=\"component\" onFocus={handleFocus} onBlur={handleBlur} />;\n          },\n        },\n        { attachTo: container, sync: false },\n      );\n      wrapper.vm.$refs.component.focus();\n      wrapper.vm.$refs.component.blur();\n      await sleep(3000);\n      expect(handleBlur).toBeCalled();\n    });\n\n    it('autofocus', async () => {\n      const handleFocus = jest.fn();\n      const wrapper = mount(\n        {\n          render() {\n            return <Component autofocus onFocus={handleFocus} />;\n          },\n        },\n        { attachTo: container, sync: false },\n      );\n      await sleep();\n      const focusEle = wrapper.findAll('[autofocus]');\n      if (focusEle.length) {\n        focusEle[0].trigger('focus');\n      }\n      expect(handleFocus).toBeCalled();\n    });\n  });\n}\n"
  },
  {
    "path": "tests/shared/mountTest.js",
    "content": "import { mount } from '@vue/test-utils';\nexport default function mountTest(Component) {\n  describe(`mount and unmount`, () => {\n    // https://github.com/ant-design/ant-design/pull/18441\n    it(`component could be updated and unmounted without errors`, () => {\n      const wrapper = mount(\n        {\n          render() {\n            return (\n              <div>\n                <Component />\n              </div>\n            );\n          },\n        },\n        { sync: false, attachTo: 'body' },\n      );\n      expect(() => {\n        wrapper.vm.$forceUpdate();\n        wrapper.unmount();\n      }).not.toThrow();\n    });\n  });\n}\n"
  },
  {
    "path": "tests/utils.js",
    "content": "import dayjs from 'dayjs';\nimport MockDate from 'mockdate';\nimport { nextTick } from 'vue';\n\nexport function setMockDate(dateString = '2017-09-18T03:30:07.795') {\n  MockDate.set(dayjs(dateString));\n}\n\nexport function resetMockDate() {\n  MockDate.reset();\n}\n\nexport function asyncExpect(fn, timeout) {\n  return new Promise(resolve => {\n    if (typeof timeout === 'number') {\n      setTimeout(() => {\n        fn();\n        resolve();\n      }, timeout);\n    } else {\n      nextTick(() => {\n        fn();\n        resolve();\n      });\n    }\n  });\n}\nexport const sleep = (timeout = 0) => new Promise(resolve => setTimeout(resolve, timeout));\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"paths\": {\n      \"ant-design-vue\": [\"components/index.ts\"],\n      \"ant-design-vue/es/*\": [\"components/*\"],\n      \"ant-design-vue/lib/*\": [\"components/*\"],\n      \"ant-design-vue/locale/*\": [\"components/locale/*\"]\n    },\n    \"lib\": [\"DOM\", \"ESNext\"],\n    \"strictNullChecks\": false,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"experimentalDecorators\": true,\n    \"jsx\": \"preserve\",\n    \"jsxImportSource\": \"vue\",\n    \"noUnusedParameters\": true,\n    \"noUnusedLocals\": true,\n    \"noImplicitAny\": false,\n    \"target\": \"es6\",\n    \"module\": \"esnext\",\n    \"skipLibCheck\": true,\n    \"allowJs\": true,\n    \"importsNotUsedAsValues\": \"preserve\",\n    \"stripInternal\": true,\n    \"resolveJsonModule\": true\n  },\n  \"exclude\": [\n    \"node_modules\",\n    \"lib\",\n    \"es\",\n    \"dist\",\n    \"locale\",\n    \"scripts\",\n    \"**/__tests__/**/*\",\n    \"site/dist\"\n  ]\n}\n"
  },
  {
    "path": "typings/global.d.ts",
    "content": "/* eslint-disable @typescript-eslint/consistent-type-imports */\ndeclare module 'vue' {\n  export interface GlobalComponents {\n    AAffix: typeof import('ant-design-vue')['Affix'];\n\n    AAlert: typeof import('ant-design-vue')['Alert'];\n\n    AAnchor: typeof import('ant-design-vue')['Anchor'];\n\n    AAnchorLink: typeof import('ant-design-vue')['AnchorLink'];\n\n    AAutoComplete: typeof import('ant-design-vue')['AutoComplete'];\n\n    AAutoCompleteOptGroup: typeof import('ant-design-vue')['AutoCompleteOptGroup'];\n\n    AAutoCompleteOption: typeof import('ant-design-vue')['AutoCompleteOption'];\n\n    AAvatar: typeof import('ant-design-vue')['Avatar'];\n\n    AAvatarGroup: typeof import('ant-design-vue')['AvatarGroup'];\n\n    ABadge: typeof import('ant-design-vue')['Badge'];\n\n    ABadgeRibbon: typeof import('ant-design-vue')['BadgeRibbon'];\n\n    ABreadcrumb: typeof import('ant-design-vue')['Breadcrumb'];\n\n    ABreadcrumbItem: typeof import('ant-design-vue')['BreadcrumbItem'];\n\n    ABreadcrumbSeparator: typeof import('ant-design-vue')['BreadcrumbSeparator'];\n\n    AButton: typeof import('ant-design-vue')['Button'];\n\n    AButtonGroup: typeof import('ant-design-vue')['ButtonGroup'];\n\n    ACalendar: typeof import('ant-design-vue')['Calendar'];\n\n    ACard: typeof import('ant-design-vue')['Card'];\n\n    ACardGrid: typeof import('ant-design-vue')['CardGrid'];\n\n    ACardMeta: typeof import('ant-design-vue')['CardMeta'];\n\n    ACarousel: typeof import('ant-design-vue')['Carousel'];\n\n    ACascader: typeof import('ant-design-vue')['Cascader'];\n\n    ACheckableTag: typeof import('ant-design-vue')['CheckableTag'];\n\n    ACheckbox: typeof import('ant-design-vue')['Checkbox'];\n\n    ACheckboxGroup: typeof import('ant-design-vue')['CheckboxGroup'];\n\n    ACol: typeof import('ant-design-vue')['Col'];\n\n    ACollapse: typeof import('ant-design-vue')['Collapse'];\n\n    ACollapsePanel: typeof import('ant-design-vue')['CollapsePanel'];\n\n    AComment: typeof import('ant-design-vue')['Comment'];\n\n    AConfigProvider: typeof import('ant-design-vue')['ConfigProvider'];\n\n    AStyleProvider: typeof import('ant-design-vue')['StyleProvider'];\n\n    ADatePicker: typeof import('ant-design-vue')['DatePicker'];\n\n    ADescriptions: typeof import('ant-design-vue')['Descriptions'];\n\n    ADescriptionsItem: typeof import('ant-design-vue')['DescriptionsItem'];\n\n    ADirectoryTree: typeof import('ant-design-vue')['DirectoryTree'];\n\n    ADivider: typeof import('ant-design-vue')['Divider'];\n\n    ADrawer: typeof import('ant-design-vue')['Drawer'];\n\n    ADropdown: typeof import('ant-design-vue')['Dropdown'];\n\n    ADropdownButton: typeof import('ant-design-vue')['DropdownButton'];\n\n    AEmpty: typeof import('ant-design-vue')['Empty'];\n\n    AForm: typeof import('ant-design-vue')['Form'];\n\n    AFormItem: typeof import('ant-design-vue')['FormItem'];\n\n    AFormItemRest: typeof import('ant-design-vue')['FormItemRest'];\n\n    AImage: typeof import('ant-design-vue')['Image'];\n\n    AImagePreviewGroup: typeof import('ant-design-vue')['ImagePreviewGroup'];\n\n    AInput: typeof import('ant-design-vue')['Input'];\n\n    AInputGroup: typeof import('ant-design-vue')['InputGroup'];\n\n    AInputNumber: typeof import('ant-design-vue')['InputNumber'];\n\n    AInputPassword: typeof import('ant-design-vue')['InputPassword'];\n\n    AInputSearch: typeof import('ant-design-vue')['InputSearch'];\n\n    ALayout: typeof import('ant-design-vue')['Layout'];\n\n    ALayoutContent: typeof import('ant-design-vue')['LayoutContent'];\n\n    ALayoutFooter: typeof import('ant-design-vue')['LayoutFooter'];\n\n    ALayoutHeader: typeof import('ant-design-vue')['LayoutHeader'];\n\n    ALayoutSider: typeof import('ant-design-vue')['LayoutSider'];\n\n    AList: typeof import('ant-design-vue')['List'];\n\n    AListItem: typeof import('ant-design-vue')['ListItem'];\n\n    AListItemMeta: typeof import('ant-design-vue')['ListItemMeta'];\n\n    ALocaleProvider: typeof import('ant-design-vue')['LocaleProvider'];\n\n    AMentions: typeof import('ant-design-vue')['Mentions'];\n\n    AMentionsOption: typeof import('ant-design-vue')['MentionsOption'];\n\n    AMenu: typeof import('ant-design-vue')['Menu'];\n\n    AMenuDivider: typeof import('ant-design-vue')['MenuDivider'];\n\n    AMenuItem: typeof import('ant-design-vue')['MenuItem'];\n\n    AMenuItemGroup: typeof import('ant-design-vue')['MenuItemGroup'];\n\n    AModal: typeof import('ant-design-vue')['Modal'];\n\n    AMonthPicker: typeof import('ant-design-vue')['MonthPicker'];\n\n    APageHeader: typeof import('ant-design-vue')['PageHeader'];\n\n    APagination: typeof import('ant-design-vue')['Pagination'];\n\n    APopconfirm: typeof import('ant-design-vue')['Popconfirm'];\n\n    APopover: typeof import('ant-design-vue')['Popover'];\n\n    AProgress: typeof import('ant-design-vue')['Progress'];\n\n    AQuarterPicker: typeof import('ant-design-vue')['QuarterPicker'];\n\n    ARadio: typeof import('ant-design-vue')['Radio'];\n\n    ARadioButton: typeof import('ant-design-vue')['RadioButton'];\n\n    ARadioGroup: typeof import('ant-design-vue')['RadioGroup'];\n\n    ARangePicker: typeof import('ant-design-vue')['RangePicker'];\n\n    ARate: typeof import('ant-design-vue')['Rate'];\n\n    AResult: typeof import('ant-design-vue')['Result'];\n\n    ARow: typeof import('ant-design-vue')['Row'];\n\n    ASelect: typeof import('ant-design-vue')['Select'];\n\n    ASegmented: typeof import('ant-design-vue')['Segmented'];\n\n    ASelectOptGroup: typeof import('ant-design-vue')['SelectOptGroup'];\n\n    ASelectOption: typeof import('ant-design-vue')['SelectOption'];\n\n    ASkeleton: typeof import('ant-design-vue')['Skeleton'];\n\n    ASkeletonAvatar: typeof import('ant-design-vue')['SkeletonAvatar'];\n\n    ASkeletonButton: typeof import('ant-design-vue')['SkeletonButton'];\n\n    ASkeletonImage: typeof import('ant-design-vue')['SkeletonImage'];\n\n    ASkeletonInput: typeof import('ant-design-vue')['SkeletonInput'];\n\n    ASlider: typeof import('ant-design-vue')['Slider'];\n\n    ASpace: typeof import('ant-design-vue')['Space'];\n\n    ASpaceCompact: typeof import('ant-design-vue')['Compact'];\n\n    ASpin: typeof import('ant-design-vue')['Spin'];\n\n    AStatistic: typeof import('ant-design-vue')['Statistic'];\n\n    AStatisticCountdown: typeof import('ant-design-vue')['StatisticCountdown'];\n\n    AStep: typeof import('ant-design-vue')['Step'];\n\n    ASteps: typeof import('ant-design-vue')['Steps'];\n\n    ASubMenu: typeof import('ant-design-vue')['SubMenu'];\n\n    ASwitch: typeof import('ant-design-vue')['Switch'];\n\n    ATabPane: typeof import('ant-design-vue')['TabPane'];\n\n    ATable: typeof import('ant-design-vue')['Table'];\n\n    ATableColumn: typeof import('ant-design-vue')['TableColumn'];\n\n    ATableColumnGroup: typeof import('ant-design-vue')['TableColumnGroup'];\n\n    ATableSummary: typeof import('ant-design-vue')['TableSummary'];\n\n    ATableSummaryCell: typeof import('ant-design-vue')['TableSummaryCell'];\n\n    ATableSummaryRow: typeof import('ant-design-vue')['TableSummaryRow'];\n\n    ATabs: typeof import('ant-design-vue')['Tabs'];\n\n    ATag: typeof import('ant-design-vue')['Tag'];\n\n    ATextarea: typeof import('ant-design-vue')['Textarea'];\n\n    ATimePicker: typeof import('ant-design-vue')['TimePicker'];\n\n    ATimeRangePicker: typeof import('ant-design-vue')['TimeRangePicker'];\n\n    ATimeline: typeof import('ant-design-vue')['Timeline'];\n\n    ATimelineItem: typeof import('ant-design-vue')['TimelineItem'];\n\n    ATooltip: typeof import('ant-design-vue')['Tooltip'];\n\n    ATransfer: typeof import('ant-design-vue')['Transfer'];\n\n    ATree: typeof import('ant-design-vue')['Tree'];\n\n    ATreeNode: typeof import('ant-design-vue')['TreeNode'];\n\n    ATreeSelect: typeof import('ant-design-vue')['TreeSelect'];\n\n    ATreeSelectNode: typeof import('ant-design-vue')['TreeSelectNode'];\n\n    ATypography: typeof import('ant-design-vue')['Typography'];\n\n    ATypographyLink: typeof import('ant-design-vue')['TypographyLink'];\n\n    ATypographyParagraph: typeof import('ant-design-vue')['TypographyParagraph'];\n\n    ATypographyText: typeof import('ant-design-vue')['TypographyText'];\n\n    ATypographyTitle: typeof import('ant-design-vue')['TypographyTitle'];\n\n    AUpload: typeof import('ant-design-vue')['Upload'];\n\n    AUploadDragger: typeof import('ant-design-vue')['UploadDragger'];\n\n    AWeekPicker: typeof import('ant-design-vue')['WeekPicker'];\n\n    AQrCode: typeof import('ant-design-vue')['QRCode'];\n\n    ATour: typeof import('ant-design-vue')['Tour'];\n\n    AFloatButton: typeof import('ant-design-vue')['FloatButton'];\n\n    AFloatButtonGroup: typeof import('ant-design-vue')['FloatButtonGroup'];\n\n    ABackTop: typeof import('ant-design-vue')['BackTop'];\n\n    AWatermark: typeof import('ant-design-vue')['Watermark'];\n\n    AFlex: typeof import('ant-design-vue')['Flex'];\n  }\n}\nexport {};\n"
  },
  {
    "path": "webpack.build.conf.js",
    "content": "// This config is for building dist files\n// const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');\nconst { EsbuildPlugin } = require('esbuild-loader');\nconst DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin');\nconst getWebpackConfig = require('./antd-tools/getWebpackConfig');\n\nfunction addLocales(webpackConfig) {\n  let packageName = 'antd-with-locales';\n  if (webpackConfig.entry['antd.min']) {\n    packageName += '.min';\n  }\n  webpackConfig.entry[packageName] = './index-with-locales.js';\n  webpackConfig.output.filename = '[name].js';\n}\n\nfunction externalDayjs(config) {\n  config.externals.push({\n    dayjs: {\n      root: 'dayjs',\n      commonjs2: 'dayjs',\n      commonjs: 'dayjs',\n      amd: 'dayjs',\n      module: 'dayjs',\n    },\n  });\n  config.externals.push(function ({ _context, request }, callback) {\n    if (/^dayjs\\/plugin\\//.test(request)) {\n      const name = request.replace(/\\//g, '_');\n      return callback(null, {\n        root: name,\n        commonjs2: name,\n        commonjs: name,\n        amd: name,\n        module: name,\n      });\n    }\n    callback();\n  });\n}\n\nconst webpackConfig = getWebpackConfig(false);\nconst webpackESMConfig = getWebpackConfig(false, true);\n\nif (process.env.RUN_ENV === 'PRODUCTION') {\n  webpackConfig.forEach(config => {\n    addLocales(config);\n    externalDayjs(config);\n    // Reduce non-minified dist files size\n    config.optimization.usedExports = true;\n    // use esbuild\n    if (process.env.ESBUILD || process.env.CSB_REPO) {\n      config.optimization.minimizer[0] = new EsbuildPlugin({\n        target: 'es2015',\n        css: true,\n      });\n    }\n    // config.plugins.push(\n    //   new BundleAnalyzerPlugin({\n    //     analyzerMode: 'static',\n    //     openAnalyzer: false,\n    //     reportFilename: '../report.html',\n    //   }),\n    // );\n\n    if (!process.env.NO_DUP_CHECK) {\n      config.plugins.push(\n        new DuplicatePackageCheckerPlugin({\n          verbose: true,\n          emitError: true,\n        }),\n      );\n    }\n  });\n}\n\nmodule.exports = [...webpackConfig, ...webpackESMConfig];\n"
  },
  {
    "path": "wrangler.jsonc",
    "content": "{\n  \"name\": \"antdv-v4\",\n  \"compatibility_date\": \"2025-09-18\",\n  \"assets\": {\n    \"directory\": \"./site/dist\",\n    \"not_found_handling\": \"single-page-application\"\n  },\n  \"routes\": [\n    {\n      \"pattern\": \"antdv.com/*\",\n      \"zone_name\": \"antdv.com\"\n    },\n    {\n      \"pattern\": \"www.antdv.com/*\",\n      \"zone_name\": \"antdv.com\"\n    }\n  ]\n}\n"
  }
]